2021-05-11 16:10:34 -07:00
|
|
|
# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
|
|
|
|
|
# yarn lockfile v1
|
|
|
|
|
|
|
|
|
|
|
2024-03-25 15:00:34 -04:00
|
|
|
"@aashutoshrathi/word-wrap@^1.2.3":
|
|
|
|
|
version "1.2.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz"
|
2024-03-25 15:00:34 -04:00
|
|
|
integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
"@algolia/client-abtesting@5.23.4":
|
|
|
|
|
version "5.23.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@algolia/client-abtesting/-/client-abtesting-5.23.4.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-WIMT2Kxy+FFWXWQxIU8QgbTioL+SGE24zhpj0kipG4uQbzXwONaWt7ffaYLjfge3gcGSgJVv+1VlahVckafluQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@algolia/client-common" "5.23.4"
|
|
|
|
|
"@algolia/requester-browser-xhr" "5.23.4"
|
|
|
|
|
"@algolia/requester-fetch" "5.23.4"
|
|
|
|
|
"@algolia/requester-node-http" "5.23.4"
|
|
|
|
|
|
|
|
|
|
"@algolia/client-analytics@5.23.4":
|
|
|
|
|
version "5.23.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-5.23.4.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-4B9gChENsQA9kFmFlb+x3YhBz2Gx3vSsm81FHI1yJ3fn2zlxREHmfrjyqYoMunsU7BybT/o5Nb7ccCbm/vfseA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@algolia/client-common" "5.23.4"
|
|
|
|
|
"@algolia/requester-browser-xhr" "5.23.4"
|
|
|
|
|
"@algolia/requester-fetch" "5.23.4"
|
|
|
|
|
"@algolia/requester-node-http" "5.23.4"
|
|
|
|
|
|
|
|
|
|
"@algolia/client-common@5.23.4":
|
|
|
|
|
version "5.23.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@algolia/client-common/-/client-common-5.23.4.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-bsj0lwU2ytiWLtl7sPunr+oLe+0YJql9FozJln5BnIiqfKOaseSDdV42060vUy+D4373f2XBI009K/rm2IXYMA==
|
|
|
|
|
|
|
|
|
|
"@algolia/client-insights@5.23.4":
|
|
|
|
|
version "5.23.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@algolia/client-insights/-/client-insights-5.23.4.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-XSCtAYvJ/hnfDHfRVMbBH0dayR+2ofVZy3jf5qyifjguC6rwxDsSdQvXpT0QFVyG+h8UPGtDhMPoUIng4wIcZA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@algolia/client-common" "5.23.4"
|
|
|
|
|
"@algolia/requester-browser-xhr" "5.23.4"
|
|
|
|
|
"@algolia/requester-fetch" "5.23.4"
|
|
|
|
|
"@algolia/requester-node-http" "5.23.4"
|
|
|
|
|
|
|
|
|
|
"@algolia/client-personalization@5.23.4":
|
|
|
|
|
version "5.23.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-5.23.4.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-l/0QvqgRFFOf7BnKSJ3myd1WbDr86ftVaa3PQwlsNh7IpIHmvVcT83Bi5zlORozVGMwaKfyPZo6O48PZELsOeA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@algolia/client-common" "5.23.4"
|
|
|
|
|
"@algolia/requester-browser-xhr" "5.23.4"
|
|
|
|
|
"@algolia/requester-fetch" "5.23.4"
|
|
|
|
|
"@algolia/requester-node-http" "5.23.4"
|
|
|
|
|
|
|
|
|
|
"@algolia/client-query-suggestions@5.23.4":
|
|
|
|
|
version "5.23.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@algolia/client-query-suggestions/-/client-query-suggestions-5.23.4.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-TB0htrDgVacVGtPDyENoM6VIeYqR+pMsDovW94dfi2JoaRxfqu/tYmLpvgWcOknP6wLbr8bA+G7t/NiGksNAwQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@algolia/client-common" "5.23.4"
|
|
|
|
|
"@algolia/requester-browser-xhr" "5.23.4"
|
|
|
|
|
"@algolia/requester-fetch" "5.23.4"
|
|
|
|
|
"@algolia/requester-node-http" "5.23.4"
|
|
|
|
|
|
|
|
|
|
"@algolia/client-search@5.23.4":
|
|
|
|
|
version "5.23.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@algolia/client-search/-/client-search-5.23.4.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-uBGo6KwUP6z+u6HZWRui8UJClS7fgUIAiYd1prUqCbkzDiCngTOzxaJbEvrdkK0hGCQtnPDiuNhC5MhtVNN4Eg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@algolia/client-common" "5.23.4"
|
|
|
|
|
"@algolia/requester-browser-xhr" "5.23.4"
|
|
|
|
|
"@algolia/requester-fetch" "5.23.4"
|
|
|
|
|
"@algolia/requester-node-http" "5.23.4"
|
|
|
|
|
|
|
|
|
|
"@algolia/ingestion@1.23.4":
|
|
|
|
|
version "1.23.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@algolia/ingestion/-/ingestion-1.23.4.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-Si6rFuGnSeEUPU9QchYvbknvEIyCRK7nkeaPVQdZpABU7m4V/tsiWdHmjVodtx3h20VZivJdHeQO9XbHxBOcCw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@algolia/client-common" "5.23.4"
|
|
|
|
|
"@algolia/requester-browser-xhr" "5.23.4"
|
|
|
|
|
"@algolia/requester-fetch" "5.23.4"
|
|
|
|
|
"@algolia/requester-node-http" "5.23.4"
|
|
|
|
|
|
|
|
|
|
"@algolia/monitoring@1.23.4":
|
|
|
|
|
version "1.23.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@algolia/monitoring/-/monitoring-1.23.4.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-EXGoVVTshraqPJgr5cMd1fq7Jm71Ew6MpGCEaxI5PErBpJAmKdtjRIzs6JOGKHRaWLi+jdbJPYc2y8RN4qcx5Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@algolia/client-common" "5.23.4"
|
|
|
|
|
"@algolia/requester-browser-xhr" "5.23.4"
|
|
|
|
|
"@algolia/requester-fetch" "5.23.4"
|
|
|
|
|
"@algolia/requester-node-http" "5.23.4"
|
|
|
|
|
|
|
|
|
|
"@algolia/recommend@5.23.4":
|
|
|
|
|
version "5.23.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@algolia/recommend/-/recommend-5.23.4.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-1t6glwKVCkjvBNlng2itTf8fwaLSqkL4JaMENgR3WTGR8mmW2akocUy/ZYSQcG4TcR7qu4zW2UMGAwLoWoflgQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@algolia/client-common" "5.23.4"
|
|
|
|
|
"@algolia/requester-browser-xhr" "5.23.4"
|
|
|
|
|
"@algolia/requester-fetch" "5.23.4"
|
|
|
|
|
"@algolia/requester-node-http" "5.23.4"
|
|
|
|
|
|
|
|
|
|
"@algolia/requester-browser-xhr@5.23.4":
|
|
|
|
|
version "5.23.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-5.23.4.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-UUuizcgc5+VSY8hqzDFVdJ3Wcto03lpbFRGPgW12pHTlUQHUTADtIpIhkLLOZRCjXmCVhtr97Z+eR6LcRYXa3Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@algolia/client-common" "5.23.4"
|
|
|
|
|
|
|
|
|
|
"@algolia/requester-fetch@5.23.4":
|
|
|
|
|
version "5.23.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@algolia/requester-fetch/-/requester-fetch-5.23.4.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-UhDg6elsek6NnV5z4VG1qMwR6vbp+rTMBEnl/v4hUyXQazU+CNdYkl++cpdmLwGI/7nXc28xtZiL90Es3I7viQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@algolia/client-common" "5.23.4"
|
|
|
|
|
|
|
|
|
|
"@algolia/requester-node-http@5.23.4":
|
|
|
|
|
version "5.23.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-5.23.4.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-jXGzGBRUS0oywQwnaCA6mMDJO7LoC3dYSLsyNfIqxDR4SNGLhtg3je0Y31lc24OA4nYyKAYgVLtjfrpcpsWShg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@algolia/client-common" "5.23.4"
|
|
|
|
|
|
2024-04-23 12:28:41 +01:00
|
|
|
"@ampproject/remapping@^2.2.0":
|
|
|
|
|
version "2.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz"
|
2024-04-23 12:28:41 +01:00
|
|
|
integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jridgewell/gen-mapping" "^0.3.5"
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.24"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.26.0", "@babel/code-frame@^7.26.2":
|
|
|
|
|
version "7.26.2"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz"
|
|
|
|
|
integrity sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==
|
2023-03-31 12:32:45 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-validator-identifier" "^7.25.9"
|
|
|
|
|
js-tokens "^4.0.0"
|
|
|
|
|
picocolors "^1.0.0"
|
2023-03-31 12:32:45 -07:00
|
|
|
|
2023-07-21 09:19:17 -07:00
|
|
|
"@babel/code-frame@^7.22.5":
|
|
|
|
|
version "7.22.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.22.5.tgz"
|
2023-07-21 09:19:17 -07:00
|
|
|
integrity sha512-Xmwn266vad+6DAqEB2A6V/CcZVp62BbwVmcOJc2RPuwih1kw02TjQvWVWlcKGbBPd+8/0V5DEkOcizRGYsspYQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/highlight" "^7.22.5"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/code-frame@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be"
|
|
|
|
|
integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-validator-identifier" "^7.27.1"
|
|
|
|
|
js-tokens "^4.0.0"
|
|
|
|
|
picocolors "^1.1.1"
|
|
|
|
|
|
|
|
|
|
"@babel/code-frame@^7.5.5":
|
2024-09-27 15:15:15 -04:00
|
|
|
version "7.24.7"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==
|
2024-04-02 12:13:38 -04:00
|
|
|
dependencies:
|
2024-09-27 15:15:15 -04:00
|
|
|
"@babel/highlight" "^7.24.7"
|
2024-04-02 12:13:38 -04:00
|
|
|
picocolors "^1.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/compat-data@^7.22.6", "@babel/compat-data@^7.26.8":
|
2025-04-14 18:39:00 -04:00
|
|
|
version "7.26.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.8.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-oH5UPLMWR3L2wEFLnFJ1TZXqHufiTKAiLfqw5zkhS4dKXLJ10yVztfil/twG8EDTA4F/tvVNw9nOl4ZMslB8rQ==
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/compat-data@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.27.1.tgz#db7cf122745e0a332c44e847ddc4f5e5221a43f6"
|
|
|
|
|
integrity sha512-Q+E+rd/yBzNQhXkG+zQnF58e4zoZfBedaxwzPmicKsiK3nt8iJYrSrDbjwFFDGC4f+rPafqRaPH6TsDoSvMf7A==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/core@^7.0.0", "@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.19.1", "@babel/core@^7.24.4":
|
2024-10-29 21:51:41 -04:00
|
|
|
version "7.26.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz"
|
2024-10-29 21:51:41 -04:00
|
|
|
integrity sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==
|
2024-04-23 12:28:41 +01:00
|
|
|
dependencies:
|
|
|
|
|
"@ampproject/remapping" "^2.2.0"
|
2024-10-29 21:51:41 -04:00
|
|
|
"@babel/code-frame" "^7.26.0"
|
|
|
|
|
"@babel/generator" "^7.26.0"
|
|
|
|
|
"@babel/helper-compilation-targets" "^7.25.9"
|
|
|
|
|
"@babel/helper-module-transforms" "^7.26.0"
|
|
|
|
|
"@babel/helpers" "^7.26.0"
|
|
|
|
|
"@babel/parser" "^7.26.0"
|
|
|
|
|
"@babel/template" "^7.25.9"
|
|
|
|
|
"@babel/traverse" "^7.25.9"
|
|
|
|
|
"@babel/types" "^7.26.0"
|
2024-04-23 12:28:41 +01:00
|
|
|
convert-source-map "^2.0.0"
|
|
|
|
|
debug "^4.1.0"
|
|
|
|
|
gensync "^1.0.0-beta.2"
|
|
|
|
|
json5 "^2.2.3"
|
|
|
|
|
semver "^6.3.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/core@^7.2.0":
|
|
|
|
|
version "7.2.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/core/-/core-7.2.0.tgz"
|
|
|
|
|
integrity sha512-7pvAdC4B+iKjFFp9Ztj0QgBndJ++qaMeonT185wAqUnhipw8idm9Rv1UMyBuKtYjfl6ORNkgEgcsYLfHX/GpLw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/code-frame" "^7.0.0"
|
|
|
|
|
"@babel/generator" "^7.2.0"
|
|
|
|
|
"@babel/helpers" "^7.2.0"
|
|
|
|
|
"@babel/parser" "^7.2.0"
|
|
|
|
|
"@babel/template" "^7.1.2"
|
|
|
|
|
"@babel/traverse" "^7.1.6"
|
|
|
|
|
"@babel/types" "^7.2.0"
|
|
|
|
|
convert-source-map "^1.1.0"
|
|
|
|
|
debug "^4.1.0"
|
|
|
|
|
json5 "^2.1.0"
|
|
|
|
|
lodash "^4.17.10"
|
|
|
|
|
resolve "^1.3.2"
|
|
|
|
|
semver "^5.4.1"
|
|
|
|
|
source-map "^0.5.0"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/core@^7.23.9":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.27.1.tgz#89de51e86bd12246003e3524704c49541b16c3e6"
|
|
|
|
|
integrity sha512-IaaGWsQqfsQWVLqMn9OB92MNN7zukfVA4s7KKAI0KfrrDsZ0yhi5uV4baBuLuN7n3vsZpwP8asPPcVwApxvjBQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@ampproject/remapping" "^2.2.0"
|
|
|
|
|
"@babel/code-frame" "^7.27.1"
|
|
|
|
|
"@babel/generator" "^7.27.1"
|
|
|
|
|
"@babel/helper-compilation-targets" "^7.27.1"
|
|
|
|
|
"@babel/helper-module-transforms" "^7.27.1"
|
|
|
|
|
"@babel/helpers" "^7.27.1"
|
|
|
|
|
"@babel/parser" "^7.27.1"
|
|
|
|
|
"@babel/template" "^7.27.1"
|
|
|
|
|
"@babel/traverse" "^7.27.1"
|
|
|
|
|
"@babel/types" "^7.27.1"
|
|
|
|
|
convert-source-map "^2.0.0"
|
|
|
|
|
debug "^4.1.0"
|
|
|
|
|
gensync "^1.0.0-beta.2"
|
|
|
|
|
json5 "^2.2.3"
|
|
|
|
|
semver "^6.3.1"
|
|
|
|
|
|
|
|
|
|
"@babel/core@^7.26.0":
|
2025-04-14 18:39:00 -04:00
|
|
|
version "7.26.10"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/core/-/core-7.26.10.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-vMqyb7XCDMPvJFFOaT9kxtiRh42GwlZEg1/uIgtZshS5a/8OaduUfCi7kynKgc3Tw/6Uo2D+db9qBttghhmxwQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@ampproject/remapping" "^2.2.0"
|
|
|
|
|
"@babel/code-frame" "^7.26.2"
|
|
|
|
|
"@babel/generator" "^7.26.10"
|
|
|
|
|
"@babel/helper-compilation-targets" "^7.26.5"
|
|
|
|
|
"@babel/helper-module-transforms" "^7.26.0"
|
|
|
|
|
"@babel/helpers" "^7.26.10"
|
|
|
|
|
"@babel/parser" "^7.26.10"
|
|
|
|
|
"@babel/template" "^7.26.9"
|
|
|
|
|
"@babel/traverse" "^7.26.10"
|
|
|
|
|
"@babel/types" "^7.26.10"
|
|
|
|
|
convert-source-map "^2.0.0"
|
|
|
|
|
debug "^4.1.0"
|
|
|
|
|
gensync "^1.0.0-beta.2"
|
|
|
|
|
json5 "^2.2.3"
|
|
|
|
|
semver "^6.3.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/generator@7.2.0", "@babel/generator@^7.0.0":
|
2021-05-11 16:10:34 -07:00
|
|
|
version "7.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.2.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-BA75MVfRlFQG2EZgFYIwyT1r6xSkwfP2bdkY/kLZusEYWiJs4xCowab/alaEaT0wSvmVuXGqiefeBlP+7V1yKg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/types" "^7.2.0"
|
|
|
|
|
jsesc "^2.5.1"
|
|
|
|
|
lodash "^4.17.10"
|
|
|
|
|
source-map "^0.5.0"
|
|
|
|
|
trim-right "^1.0.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/generator@^7.2.0", "@babel/generator@^7.26.0", "@babel/generator@^7.26.10", "@babel/generator@^7.26.3", "@babel/generator@^7.27.0", "@babel/generator@^7.7.2", "@babel/generator@^7.7.4":
|
2025-04-14 18:39:00 -04:00
|
|
|
version "7.27.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/generator/-/generator-7.27.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-VybsKvpiN1gU1sdMZIp7FcqphVVKEwcuj02x73uvcHE0PTihx1nlBcowYWhDwjpoAXRv43+gDzyggGnn1XZhVw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/parser" "^7.27.0"
|
|
|
|
|
"@babel/types" "^7.27.0"
|
|
|
|
|
"@jridgewell/gen-mapping" "^0.3.5"
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.25"
|
|
|
|
|
jsesc "^3.0.2"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/generator@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.27.1.tgz#862d4fad858f7208edd487c28b58144036b76230"
|
|
|
|
|
integrity sha512-UnJfnIpc/+JO0/+KRVQNGU+y5taA5vCbwN8+azkX6beii/ZF+enZJSOKo11ZSzGJjlNfJHfQtmQT8H+9TXPG2w==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/parser" "^7.27.1"
|
|
|
|
|
"@babel/types" "^7.27.1"
|
|
|
|
|
"@jridgewell/gen-mapping" "^0.3.5"
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.25"
|
|
|
|
|
jsesc "^3.0.2"
|
|
|
|
|
|
2025-03-12 17:02:10 -04:00
|
|
|
"@babel/helper-annotate-as-pure@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz"
|
2025-03-12 17:02:10 -04:00
|
|
|
integrity sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/types" "^7.25.9"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/helper-annotate-as-pure@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.1.tgz#4345d81a9a46a6486e24d069469f13e60445c05d"
|
|
|
|
|
integrity sha512-WnuuDILl9oOBbKnb4L+DyODx7iC47XfzmNCpTttFsSp6hTG7XZxu60+4IO+2/hPfcGOoKbFiwoI/+zwARbNQow==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/types" "^7.27.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-compilation-targets@^7.22.6", "@babel/helper-compilation-targets@^7.25.9", "@babel/helper-compilation-targets@^7.26.5":
|
2025-04-14 18:39:00 -04:00
|
|
|
version "7.27.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-LVk7fbXml0H2xH34dFzKQ7TDZ2G4/rVTOrq9V+icbbadjbVxxeFeDsNHv2SrZeWoA+6ZiTyWYWtScEIW07EAcA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/compat-data" "^7.26.8"
|
|
|
|
|
"@babel/helper-validator-option" "^7.25.9"
|
|
|
|
|
browserslist "^4.24.0"
|
|
|
|
|
lru-cache "^5.1.1"
|
|
|
|
|
semver "^6.3.1"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/helper-compilation-targets@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.1.tgz#eac1096c7374f161e4f33fc8ae38f4ddf122087a"
|
|
|
|
|
integrity sha512-2YaDd/Rd9E598B5+WIc8wJPmWETiiJXFYVE60oX8FDohv7rAUU3CQj+A1MgeEmcsk2+dQuEjIe/GDvig0SqL4g==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/compat-data" "^7.27.1"
|
|
|
|
|
"@babel/helper-validator-option" "^7.27.1"
|
|
|
|
|
browserslist "^4.24.0"
|
|
|
|
|
lru-cache "^5.1.1"
|
|
|
|
|
semver "^6.3.1"
|
|
|
|
|
|
2025-10-03 09:13:55 -07:00
|
|
|
"@babel/helper-create-class-features-plugin@^7.25.9", "@babel/helper-create-class-features-plugin@^7.27.0":
|
2025-04-30 12:44:05 -07:00
|
|
|
version "7.27.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.0.tgz"
|
|
|
|
|
integrity sha512-vSGCvMecvFCd/BdpGlhpXYNhhC4ccxyvQWpbGL4CWbvfEoLFWUZuSuf7s9Aw70flgQF+6vptvgK2IfOnKlRmBg==
|
2025-03-12 17:02:10 -04:00
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-annotate-as-pure" "^7.25.9"
|
|
|
|
|
"@babel/helper-member-expression-to-functions" "^7.25.9"
|
|
|
|
|
"@babel/helper-optimise-call-expression" "^7.25.9"
|
|
|
|
|
"@babel/helper-replace-supers" "^7.26.5"
|
|
|
|
|
"@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/traverse" "^7.27.0"
|
2025-03-12 17:02:10 -04:00
|
|
|
semver "^6.3.1"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/helper-create-class-features-plugin@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281"
|
|
|
|
|
integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-annotate-as-pure" "^7.27.1"
|
|
|
|
|
"@babel/helper-member-expression-to-functions" "^7.27.1"
|
|
|
|
|
"@babel/helper-optimise-call-expression" "^7.27.1"
|
|
|
|
|
"@babel/helper-replace-supers" "^7.27.1"
|
|
|
|
|
"@babel/helper-skip-transparent-expression-wrappers" "^7.27.1"
|
|
|
|
|
"@babel/traverse" "^7.27.1"
|
|
|
|
|
semver "^6.3.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.25.9":
|
|
|
|
|
version "7.27.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.0.tgz"
|
|
|
|
|
integrity sha512-fO8l08T76v48BhpNRW/nQ0MxfnSdoSKUJBMjubOAYffsVuGG5qOfMq7N6Es7UJvi7Y8goXXo07EfcHZXDPuELQ==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-annotate-as-pure" "^7.25.9"
|
|
|
|
|
regexpu-core "^6.2.0"
|
|
|
|
|
semver "^6.3.1"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-define-polyfill-provider@^0.6.3", "@babel/helper-define-polyfill-provider@^0.6.4":
|
|
|
|
|
version "0.6.4"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.4.tgz"
|
|
|
|
|
integrity sha512-jljfR1rGnXXNWnmQg2K3+bvhkxB51Rl32QRaOTuwwjviGrHzIbSc8+x9CpraDtbT7mfyjXObULP4w/adunNwAw==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-compilation-targets" "^7.22.6"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.22.5"
|
2023-06-06 10:56:20 -04:00
|
|
|
debug "^4.1.1"
|
|
|
|
|
lodash.debounce "^4.0.8"
|
|
|
|
|
resolve "^1.14.2"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@babel/helper-environment-visitor@^7.18.9":
|
2025-04-30 12:44:05 -07:00
|
|
|
version "7.24.7"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9"
|
|
|
|
|
integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/types" "^7.24.7"
|
2024-12-03 11:46:08 -05:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-function-name@^7.7.4":
|
2024-09-27 15:15:15 -04:00
|
|
|
version "7.24.7"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.24.7.tgz#75f1e1725742f39ac6584ee0b16d94513da38dd2"
|
|
|
|
|
integrity sha512-FyoJTsj/PEUWu1/TYRiXTIHc8lbw+TDYkZuoE43opPS5TrI7MyONBE1oNvfguEXAD9yhQRrVBnXdXzSLQl9XnA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/template" "^7.24.7"
|
|
|
|
|
"@babel/types" "^7.24.7"
|
|
|
|
|
|
2025-03-12 17:02:10 -04:00
|
|
|
"@babel/helper-member-expression-to-functions@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.25.9.tgz"
|
2025-03-12 17:02:10 -04:00
|
|
|
integrity sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/traverse" "^7.25.9"
|
|
|
|
|
"@babel/types" "^7.25.9"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/helper-member-expression-to-functions@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44"
|
|
|
|
|
integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/traverse" "^7.27.1"
|
|
|
|
|
"@babel/types" "^7.27.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.25.9":
|
2024-10-29 21:51:41 -04:00
|
|
|
version "7.25.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz"
|
2024-10-29 21:51:41 -04:00
|
|
|
integrity sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==
|
2024-04-23 12:28:41 +01:00
|
|
|
dependencies:
|
2024-10-29 21:51:41 -04:00
|
|
|
"@babel/traverse" "^7.25.9"
|
|
|
|
|
"@babel/types" "^7.25.9"
|
2024-04-23 12:28:41 +01:00
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/helper-module-imports@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204"
|
|
|
|
|
integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/traverse" "^7.27.1"
|
|
|
|
|
"@babel/types" "^7.27.1"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
"@babel/helper-module-transforms@^7.21.2":
|
|
|
|
|
version "7.21.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.21.2.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-79yj2AR4U/Oqq/WOV7Lx6hUjau1Zfo4cI+JLAVYeMV5XIlbOhmjEk5ulbTc9fMpmlojzZHkUUxAiK+UKn+hNQQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-environment-visitor" "^7.18.9"
|
|
|
|
|
"@babel/helper-module-imports" "^7.18.6"
|
|
|
|
|
"@babel/helper-simple-access" "^7.20.2"
|
|
|
|
|
"@babel/helper-split-export-declaration" "^7.18.6"
|
|
|
|
|
"@babel/helper-validator-identifier" "^7.19.1"
|
|
|
|
|
"@babel/template" "^7.20.7"
|
|
|
|
|
"@babel/traverse" "^7.21.2"
|
|
|
|
|
"@babel/types" "^7.21.2"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-module-transforms@^7.25.9", "@babel/helper-module-transforms@^7.26.0":
|
2024-10-29 21:51:41 -04:00
|
|
|
version "7.26.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz"
|
2024-10-29 21:51:41 -04:00
|
|
|
integrity sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==
|
2024-04-23 12:28:41 +01:00
|
|
|
dependencies:
|
2024-10-29 21:51:41 -04:00
|
|
|
"@babel/helper-module-imports" "^7.25.9"
|
|
|
|
|
"@babel/helper-validator-identifier" "^7.25.9"
|
|
|
|
|
"@babel/traverse" "^7.25.9"
|
2024-04-23 12:28:41 +01:00
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/helper-module-transforms@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.1.tgz#e1663b8b71d2de948da5c4fb2a20ca4f3ec27a6f"
|
|
|
|
|
integrity sha512-9yHn519/8KvTU5BjTVEEeIM3w9/2yXNKoD82JifINImhpKkARMJKPP59kLo+BafpdN5zgNeIcS4jsGDmd3l58g==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-module-imports" "^7.27.1"
|
|
|
|
|
"@babel/helper-validator-identifier" "^7.27.1"
|
|
|
|
|
"@babel/traverse" "^7.27.1"
|
|
|
|
|
|
2025-03-12 17:02:10 -04:00
|
|
|
"@babel/helper-optimise-call-expression@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.25.9.tgz"
|
2025-03-12 17:02:10 -04:00
|
|
|
integrity sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/types" "^7.25.9"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/helper-optimise-call-expression@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200"
|
|
|
|
|
integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/types" "^7.27.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.22.5", "@babel/helper-plugin-utils@^7.25.9", "@babel/helper-plugin-utils@^7.26.5", "@babel/helper-plugin-utils@^7.8.0":
|
|
|
|
|
version "7.26.5"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.26.5.tgz"
|
|
|
|
|
integrity sha512-RS+jZcRdZdRFzMyr+wcsaqOmld1/EqTghfaBGQQd/WnRdzdlvSZ//kF7U8VQTxf1ynZ4cjUcYgjVGx13ewNPMg==
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
"@babel/helper-plugin-utils@^7.20.2":
|
|
|
|
|
version "7.20.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/helper-plugin-utils@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c"
|
|
|
|
|
integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-remap-async-to-generator@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.9.tgz"
|
|
|
|
|
integrity sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==
|
2023-07-27 10:52:28 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-annotate-as-pure" "^7.25.9"
|
|
|
|
|
"@babel/helper-wrap-function" "^7.25.9"
|
|
|
|
|
"@babel/traverse" "^7.25.9"
|
2023-07-27 10:52:28 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-replace-supers@^7.25.9", "@babel/helper-replace-supers@^7.26.5":
|
2025-03-12 17:02:10 -04:00
|
|
|
version "7.26.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.26.5.tgz"
|
2025-03-12 17:02:10 -04:00
|
|
|
integrity sha512-bJ6iIVdYX1YooY2X7w1q6VITt+LnUILtNk7zT78ykuwStx8BauCzxvFqFaHjOpW1bVnSUM1PN1f0p5P21wHxvg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-member-expression-to-functions" "^7.25.9"
|
|
|
|
|
"@babel/helper-optimise-call-expression" "^7.25.9"
|
|
|
|
|
"@babel/traverse" "^7.26.5"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/helper-replace-supers@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0"
|
|
|
|
|
integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-member-expression-to-functions" "^7.27.1"
|
|
|
|
|
"@babel/helper-optimise-call-expression" "^7.27.1"
|
|
|
|
|
"@babel/traverse" "^7.27.1"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
"@babel/helper-simple-access@^7.20.2":
|
|
|
|
|
version "7.20.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/types" "^7.20.2"
|
|
|
|
|
|
2025-03-12 17:02:10 -04:00
|
|
|
"@babel/helper-skip-transparent-expression-wrappers@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.25.9.tgz"
|
2025-03-12 17:02:10 -04:00
|
|
|
integrity sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/traverse" "^7.25.9"
|
|
|
|
|
"@babel/types" "^7.25.9"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/helper-skip-transparent-expression-wrappers@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56"
|
|
|
|
|
integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/traverse" "^7.27.1"
|
|
|
|
|
"@babel/types" "^7.27.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-split-export-declaration@^7.18.6", "@babel/helper-split-export-declaration@^7.7.4":
|
2024-09-27 15:15:15 -04:00
|
|
|
version "7.24.7"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.24.7.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==
|
2024-05-20 11:47:51 +01:00
|
|
|
dependencies:
|
2024-09-27 15:15:15 -04:00
|
|
|
"@babel/types" "^7.24.7"
|
2024-05-20 11:47:51 +01:00
|
|
|
|
2024-10-29 21:51:41 -04:00
|
|
|
"@babel/helper-string-parser@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz"
|
2024-10-29 21:51:41 -04:00
|
|
|
integrity sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-validator-identifier@^7.19.1", "@babel/helper-validator-identifier@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz"
|
|
|
|
|
integrity sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2023-07-21 09:19:17 -07:00
|
|
|
"@babel/helper-validator-identifier@^7.22.5":
|
|
|
|
|
version "7.22.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.5.tgz"
|
2023-07-21 09:19:17 -07:00
|
|
|
integrity sha512-aJXu+6lErq8ltp+JhkJUfk1MTGyuA4v7f3pA+BJ5HLfNC6nAQ0Cpi9uOquUj8Hehg0aUiHzWQbOVJGao6ztBAQ==
|
|
|
|
|
|
2024-07-15 17:44:14 -04:00
|
|
|
"@babel/helper-validator-identifier@^7.24.7":
|
|
|
|
|
version "7.24.7"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz"
|
2024-07-15 17:44:14 -04:00
|
|
|
integrity sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-validator-identifier@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8"
|
|
|
|
|
integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==
|
2023-06-05 13:35:39 -04:00
|
|
|
|
2023-07-28 16:12:17 -07:00
|
|
|
"@babel/helper-validator-option@^7.22.5":
|
|
|
|
|
version "7.22.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.22.5.tgz"
|
2023-07-28 16:12:17 -07:00
|
|
|
integrity sha512-R3oB6xlIVKUnxNUxbmgq7pKjxpru24zlimpE8WK47fACIlM0II/Hm1RS8IaOI7NgCr6LNS+jl5l75m20npAziw==
|
|
|
|
|
|
2024-10-29 21:51:41 -04:00
|
|
|
"@babel/helper-validator-option@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz"
|
2024-10-29 21:51:41 -04:00
|
|
|
integrity sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==
|
2024-04-23 12:28:41 +01:00
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/helper-validator-option@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f"
|
|
|
|
|
integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-wrap-function@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.9.tgz"
|
|
|
|
|
integrity sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/template" "^7.25.9"
|
|
|
|
|
"@babel/traverse" "^7.25.9"
|
|
|
|
|
"@babel/types" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@babel/helpers@^7.2.0":
|
2021-05-11 16:10:34 -07:00
|
|
|
version "7.19.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.19.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-DRBCKGwIEdqY3+rPJgG/dKfQy9+08rHIAJx8q2p+HSWP87s2HCrQmaAMMyMll2kIXKCW0cO1RdQskx15Xakftg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/template" "^7.18.10"
|
|
|
|
|
"@babel/traverse" "^7.19.0"
|
|
|
|
|
"@babel/types" "^7.19.0"
|
|
|
|
|
|
2024-10-29 21:51:41 -04:00
|
|
|
"@babel/helpers@^7.26.0":
|
|
|
|
|
version "7.26.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz"
|
2024-10-29 21:51:41 -04:00
|
|
|
integrity sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==
|
2024-04-23 12:28:41 +01:00
|
|
|
dependencies:
|
2024-10-29 21:51:41 -04:00
|
|
|
"@babel/template" "^7.25.9"
|
|
|
|
|
"@babel/types" "^7.26.0"
|
2024-04-23 12:28:41 +01:00
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
"@babel/helpers@^7.26.10":
|
|
|
|
|
version "7.27.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/template" "^7.27.0"
|
|
|
|
|
"@babel/types" "^7.27.0"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/helpers@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.1.tgz#ffc27013038607cdba3288e692c3611c06a18aa4"
|
|
|
|
|
integrity sha512-FCvFTm0sWV8Fxhpp2McP5/W53GPllQ9QeQ7SiqGWjMf/LVG07lFa5+pgK05IRhVwtvafT22KF+ZSnM9I545CvQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/template" "^7.27.1"
|
|
|
|
|
"@babel/types" "^7.27.1"
|
|
|
|
|
|
2023-07-21 09:19:17 -07:00
|
|
|
"@babel/highlight@^7.22.5":
|
|
|
|
|
version "7.22.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.22.5.tgz"
|
2023-07-21 09:19:17 -07:00
|
|
|
integrity sha512-BSKlD1hgnedS5XRnGOljZawtag7H1yPfQp0tdNJCHoH6AZ+Pcm9VvkrK59/Yy593Ypg0zMxH2BxD1VPYUQ7UIw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-validator-identifier" "^7.22.5"
|
|
|
|
|
chalk "^2.0.0"
|
|
|
|
|
js-tokens "^4.0.0"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
"@babel/highlight@^7.24.7":
|
|
|
|
|
version "7.24.7"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==
|
2024-04-02 12:13:38 -04:00
|
|
|
dependencies:
|
2024-09-27 15:15:15 -04:00
|
|
|
"@babel/helper-validator-identifier" "^7.24.7"
|
2024-04-02 12:13:38 -04:00
|
|
|
chalk "^2.4.2"
|
|
|
|
|
js-tokens "^4.0.0"
|
|
|
|
|
picocolors "^1.0.0"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.2.0", "@babel/parser@^7.20.15", "@babel/parser@^7.26", "@babel/parser@^7.26.0", "@babel/parser@^7.26.10", "@babel/parser@^7.26.3", "@babel/parser@^7.27.0":
|
2025-03-26 14:27:42 -04:00
|
|
|
version "7.27.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz"
|
2025-03-26 14:27:42 -04:00
|
|
|
integrity sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/types" "^7.27.0"
|
|
|
|
|
|
2023-03-24 14:22:14 -07:00
|
|
|
"@babel/parser@^7.20.7":
|
StoreLocal instruction
Adds a new `StoreLocal <kind> <place> = <value>` instruction which stores
<value> into <place>. With this change, Instruction.lvalue is _always_ a `const`
temporary, and never a named identifier (there's a new validation pass to assert
this). StoreLocal is the only way to declare or update a named identifier: the
instructionKind property says whether it's a const/let declaration or a
reassignment. Naturally a _lot_ of passes had to be updated to make this work,
but the existing Effect.Store variant that @gsathya added made this overall
straightforward.
Note that as of this PR several passes still have code to handle the possibility
of an instruction lvalue being something other than a temporary. When we clean
that up in a follow-up, there will be a lot less of the duplication that appears
here. For example, CodegenReactiveFunction has two places to handle variable
declarations in this PR. However, one of them is to handle lvalues, which should
now _always_ be temporaries and never emit a regular variable declaration.
Similarly, several passes have to build up a table of identifier -> identifier
(because of LoadLocal). Longer-term, we should update the Place abstraction so
that it directly specifies the instruction which created that temporary, so we
can look it up on demand instead of needing an extra mapping.
2023-03-02 14:19:17 -08:00
|
|
|
version "7.21.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.21.2.tgz"
|
StoreLocal instruction
Adds a new `StoreLocal <kind> <place> = <value>` instruction which stores
<value> into <place>. With this change, Instruction.lvalue is _always_ a `const`
temporary, and never a named identifier (there's a new validation pass to assert
this). StoreLocal is the only way to declare or update a named identifier: the
instructionKind property says whether it's a const/let declaration or a
reassignment. Naturally a _lot_ of passes had to be updated to make this work,
but the existing Effect.Store variant that @gsathya added made this overall
straightforward.
Note that as of this PR several passes still have code to handle the possibility
of an instruction lvalue being something other than a temporary. When we clean
that up in a follow-up, there will be a lot less of the duplication that appears
here. For example, CodegenReactiveFunction has two places to handle variable
declarations in this PR. However, one of them is to handle lvalues, which should
now _always_ be temporaries and never emit a regular variable declaration.
Similarly, several passes have to build up a table of identifier -> identifier
(because of LoadLocal). Longer-term, we should update the Place abstraction so
that it directly specifies the instruction which created that temporary, so we
can look it up on demand instead of needing an extra mapping.
2023-03-02 14:19:17 -08:00
|
|
|
integrity sha512-URpaIJQwEkEC2T9Kn+Ai6Xe/02iNaVCuT/PtoRz3GPVJVDpPd7mLo+VddTbhCRU9TXqW5mSrQfXZyi8kDKOVpQ==
|
[new-arch] Improve reference-kind analysis
This implements an alternative approach to reference kind inference in the new
architecture based on feedback. Here, we track an environment that maps
top-level identifiers (IdentifierId) to the "kind" of value stored: immutable,
mutable, frozen, or maybe-frozen. We then do a forward data flow analysis
updating this environment based on the semantics of each instruction combined
with the types of values present. For example a reference of a value in a
"mutable" position is inferred as readonly if the value is known to be frozen or
immutable. Similarly, a usage of a reference in a "freeze" position is inferred
as a freeze if the value is not yet definitively frozen, and inferred as
readonly if the value is already frozen.
When multiple control paths converge we merge the previous and new incoming
environments, and only reprocess the block if the environment changed relative
to the previous value. This has some noticeable benefits over the previous
version:
* We now infer precisely where `makeReadOnly()` calls need to be inserted, aka
points where a value needs to be frozen may not yet be frozen.
* We track immutable values and can infer their usage as readonly rather than
mutable.
* The system handles aliasing by representing values as distinct from variables,
so that we can handle situations such as:
```javascript
const a = []; // env: {a: value0; value0: mutable}
const b = a; // env: {a: value0, b: value0; value0: mutable}
freeze(a); // env: {a: value0, b: value0; value0: frozen}
mayMutate(b); // ordinarily inferred as a mutable reference, but we know its
readonly
```
2022-10-11 11:32:49 -07:00
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/parser@^7.23.9", "@babel/parser@^7.27.1":
|
2025-04-30 12:44:05 -07:00
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.27.1.tgz#c55d5bed74449d1223701f1869b9ee345cc94cc9"
|
|
|
|
|
integrity sha512-I0dZ3ZpCrJ1c04OqlNsQcKiZlsrXf/kkE4FXzID9rIOYICsAbA8mMDzhW/luRNAHdCNt7os/u8wenklZDlUVUQ==
|
2024-09-27 15:15:15 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/types" "^7.27.1"
|
2024-05-20 11:47:51 +01:00
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/parser@^7.24.4":
|
|
|
|
|
version "7.24.4"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.24.4.tgz"
|
|
|
|
|
integrity sha512-zTvEBcghmeBma9QIGunWevvBAp4/Qu9Bdq+2k0Ot4fVMD6v3dsC9WOcRSKk7tRRyBM/53yKMJko9xOatGQAwSg==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/parser@^7.7.4":
|
|
|
|
|
version "7.21.4"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/parser/-/parser-7.21.4.tgz"
|
|
|
|
|
integrity sha512-alVJj7k7zIxqBZ7BTRhz0IqJFxW1VJbm6N8JbcYhQ186df9ZBPbZBmWSqAMXwHGsCJdYks7z/voa3ibiS5bCIw==
|
|
|
|
|
|
|
|
|
|
"@babel/plugin-bugfix-firefox-class-in-computed-class-key@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-bugfix-firefox-class-in-computed-class-key/-/plugin-bugfix-firefox-class-in-computed-class-key-7.25.9.tgz"
|
|
|
|
|
integrity sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==
|
2024-10-29 21:51:41 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
"@babel/traverse" "^7.25.9"
|
2024-10-29 21:51:41 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-bugfix-safari-class-field-initializer-scope@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-bugfix-safari-class-field-initializer-scope/-/plugin-bugfix-safari-class-field-initializer-scope-7.25.9.tgz"
|
|
|
|
|
integrity sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==
|
2025-03-12 17:02:10 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2025-03-12 17:02:10 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
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.25.9.tgz"
|
|
|
|
|
integrity sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-03-24 14:22:14 -07:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.25.9.tgz"
|
|
|
|
|
integrity sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
"@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-optional-chaining" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.25.9.tgz"
|
|
|
|
|
integrity sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
"@babel/traverse" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2":
|
|
|
|
|
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==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@babel/plugin-syntax-async-generators@^7.8.4":
|
|
|
|
|
version "7.8.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.8.0"
|
|
|
|
|
|
|
|
|
|
"@babel/plugin-syntax-bigint@^7.8.3":
|
|
|
|
|
version "7.8.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.8.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-syntax-class-properties@^7.0.0", "@babel/plugin-syntax-class-properties@^7.8.3":
|
2021-05-11 16:10:34 -07:00
|
|
|
version "7.12.13"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.12.13"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-syntax-flow@^7.18.6", "@babel/plugin-syntax-flow@^7.7.4":
|
|
|
|
|
version "7.21.4"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.21.4.tgz"
|
|
|
|
|
integrity sha512-l9xd3N+XG4fZRxEP3vXdK6RW7vN1Uf5dxzRC/09wV86wqZ/YYQooBIGNsiRdfNR3/q2/5pPzV4B54J/9ctX5jw==
|
2023-04-04 14:32:21 -07:00
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.20.2"
|
|
|
|
|
|
[sprout] Add shared runtime, improve error reporting
---
I added ~20 more tests to Sprout to get more of a feel for what the test
framework would need to support all fixtures. I'm relatively confident that the
approach outlined in [the original workplace
post](https://fburl.com/workplace/ftu8woch) works to migrate almost all existing
fixture tests to sprout (TLDR: use shared functions when possible, otherwise
write helper functions in-file).
Add `shared-runtime` file to reduce the amount of overhead needed to set up a
fixture test.
- All generalizable functions and values should be added here (e.g.
`shallowCopy`, `deepCopy`, `sum`).
- Editor integration is set up through a custom tsconfig, so importing from
`shared-runtime` should just work (with hover annotations, click-to-definition,
etc).
<img width="682" alt="Screenshot 2023-08-17 at 11 09 47 AM"
src="https://github.com/facebook/react-forget/assets/34200447/78c3dff9-ba10-4057-b3f6-2fa842d19b1d">
---
Tested new test fixtures added to sprout by adding them to `testfilter.txt` and
running with `--verbose --filter`.
Note that there are no unexpected exceptions, and all logs + returned values
match.
```
feifei0@feifei0-mbp babel-plugin-react-forget % yarn sprout:build && yarn sprout
--verbose --filter
yarn run v1.22.19
$ yarn workspace sprout run build
$ rimraf dist && tsc --build
✨ Done in 2.07s.
yarn run v1.22.19
$ node ../sprout/dist/main.js --verbose --filter
PASS console-readonly
ok {"a":1,"b":2} [
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }"
]
PASS constant-propagate-global-phis-constant
ok <div>global string 0</div>
PASS constant-propagate-global-phis
ok <div>global string 1</div>
PASS dce-loop
ok 10
PASS destructure-capture-global
ok {"a":"value 1","someGlobal":{}}
PASS destructuring-mixed-scope-and-local-variables-with-default
ok {"media":null,"allUrls":["url1","url2","url3"],"onClick":"[[ function
params=1 ]]"}
PASS holey-array-expr
ok [null,"global string 0",{"a":1,"b":2}]
PASS infer-global-object
ok {"primitiveVal1":2,"primitiveVal2":null,"primitiveVal3":null}
PASS infer-phi-primitive
ok 1
PASS infer-types-through-type-cast.flow
ok 4
PASS issue933-disjoint-set-infinite-loop
ok [2]
PASS jsx-tag-evaluation-order-non-global
ok <div>StaticText1<div>StaticText2</div></div>
PASS jsx-tag-evaluation-order
ok <div>StaticText1string value 1<div>StaticText2</div></div>
PASS method-call
ok 4
PASS mutable-lifetime-loops
ok {"a":{"value":6},"b":{"value":5},"c":{"value":4},"d":{"value":6}}
PASS mutable-lifetime-with-aliasing
ok {"b":[{}],"value":[{"c":{},"value":"[[ cyclic ref *0 ]]"},null]}
PASS update-expression-in-sequence
ok [4,2,3,4]
PASS update-expression-on-function-parameter
ok [4,1,4,2,4,3,1,4,4]
PASS update-expression
ok {"x":1,"y":1,"z":2}
PASS useMemo-multiple-if-else
ok 2
20 Tests, 20 Passed, 0 Failed
✨ Done in 4.11s.
```
2023-08-17 13:28:08 -04:00
|
|
|
"@babel/plugin-syntax-flow@^7.22.5":
|
|
|
|
|
version "7.22.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.22.5.tgz"
|
[sprout] Add shared runtime, improve error reporting
---
I added ~20 more tests to Sprout to get more of a feel for what the test
framework would need to support all fixtures. I'm relatively confident that the
approach outlined in [the original workplace
post](https://fburl.com/workplace/ftu8woch) works to migrate almost all existing
fixture tests to sprout (TLDR: use shared functions when possible, otherwise
write helper functions in-file).
Add `shared-runtime` file to reduce the amount of overhead needed to set up a
fixture test.
- All generalizable functions and values should be added here (e.g.
`shallowCopy`, `deepCopy`, `sum`).
- Editor integration is set up through a custom tsconfig, so importing from
`shared-runtime` should just work (with hover annotations, click-to-definition,
etc).
<img width="682" alt="Screenshot 2023-08-17 at 11 09 47 AM"
src="https://github.com/facebook/react-forget/assets/34200447/78c3dff9-ba10-4057-b3f6-2fa842d19b1d">
---
Tested new test fixtures added to sprout by adding them to `testfilter.txt` and
running with `--verbose --filter`.
Note that there are no unexpected exceptions, and all logs + returned values
match.
```
feifei0@feifei0-mbp babel-plugin-react-forget % yarn sprout:build && yarn sprout
--verbose --filter
yarn run v1.22.19
$ yarn workspace sprout run build
$ rimraf dist && tsc --build
✨ Done in 2.07s.
yarn run v1.22.19
$ node ../sprout/dist/main.js --verbose --filter
PASS console-readonly
ok {"a":1,"b":2} [
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }"
]
PASS constant-propagate-global-phis-constant
ok <div>global string 0</div>
PASS constant-propagate-global-phis
ok <div>global string 1</div>
PASS dce-loop
ok 10
PASS destructure-capture-global
ok {"a":"value 1","someGlobal":{}}
PASS destructuring-mixed-scope-and-local-variables-with-default
ok {"media":null,"allUrls":["url1","url2","url3"],"onClick":"[[ function
params=1 ]]"}
PASS holey-array-expr
ok [null,"global string 0",{"a":1,"b":2}]
PASS infer-global-object
ok {"primitiveVal1":2,"primitiveVal2":null,"primitiveVal3":null}
PASS infer-phi-primitive
ok 1
PASS infer-types-through-type-cast.flow
ok 4
PASS issue933-disjoint-set-infinite-loop
ok [2]
PASS jsx-tag-evaluation-order-non-global
ok <div>StaticText1<div>StaticText2</div></div>
PASS jsx-tag-evaluation-order
ok <div>StaticText1string value 1<div>StaticText2</div></div>
PASS method-call
ok 4
PASS mutable-lifetime-loops
ok {"a":{"value":6},"b":{"value":5},"c":{"value":4},"d":{"value":6}}
PASS mutable-lifetime-with-aliasing
ok {"b":[{}],"value":[{"c":{},"value":"[[ cyclic ref *0 ]]"},null]}
PASS update-expression-in-sequence
ok [4,2,3,4]
PASS update-expression-on-function-parameter
ok [4,1,4,2,4,3,1,4,4]
PASS update-expression
ok {"x":1,"y":1,"z":2}
PASS useMemo-multiple-if-else
ok 2
20 Tests, 20 Passed, 0 Failed
✨ Done in 4.11s.
```
2023-08-17 13:28:08 -04:00
|
|
|
integrity sha512-9RdCl0i+q0QExayk2nOS7853w08yLucnnPML6EN9S8fgMPVtdLDCdx/cOQ/i44Lb9UeQX9A35yaqBBOMMZxPxQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.22.5"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-syntax-import-assertions@^7.26.0":
|
|
|
|
|
version "7.26.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.26.0.tgz"
|
|
|
|
|
integrity sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-syntax-import-attributes@^7.26.0":
|
|
|
|
|
version "7.26.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.26.0.tgz"
|
|
|
|
|
integrity sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-syntax-import-meta@^7.8.3":
|
2021-05-11 16:10:34 -07:00
|
|
|
version "7.10.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.10.4"
|
|
|
|
|
|
|
|
|
|
"@babel/plugin-syntax-json-strings@^7.8.3":
|
|
|
|
|
version "7.8.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.8.0"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
"@babel/plugin-syntax-jsx@^7.0.0":
|
|
|
|
|
version "7.21.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.21.4.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-5hewiLct5OKyh6PLKEYaFclcqtIgCb6bmELouxjF6up5q3Sov7rOayW4RwhbaBL0dit8rA80GNfY+UuDp2mBbQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.20.2"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-syntax-jsx@^7.18.6", "@babel/plugin-syntax-jsx@^7.25.9", "@babel/plugin-syntax-jsx@^7.7.2":
|
2025-03-12 17:02:10 -04:00
|
|
|
version "7.25.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz"
|
2025-03-12 17:02:10 -04:00
|
|
|
integrity sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/plugin-syntax-jsx@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.27.1.tgz#2f9beb5eff30fa507c5532d107daac7b888fa34c"
|
|
|
|
|
integrity sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.27.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-syntax-logical-assignment-operators@^7.8.3":
|
2021-05-11 16:10:34 -07:00
|
|
|
version "7.10.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.10.4"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
"@babel/plugin-syntax-nullish-coalescing-operator@^7.0.0", "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3":
|
2021-05-11 16:10:34 -07:00
|
|
|
version "7.8.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.8.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-syntax-numeric-separator@^7.2.0", "@babel/plugin-syntax-numeric-separator@^7.8.3":
|
2021-05-11 16:10:34 -07:00
|
|
|
version "7.10.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.10.4"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.2.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3":
|
2021-05-11 16:10:34 -07:00
|
|
|
version "7.8.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.8.0"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
"@babel/plugin-syntax-optional-catch-binding@^7.0.0", "@babel/plugin-syntax-optional-catch-binding@^7.8.3":
|
2021-05-11 16:10:34 -07:00
|
|
|
version "7.8.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.8.0"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
"@babel/plugin-syntax-optional-chaining@^7.0.0", "@babel/plugin-syntax-optional-chaining@^7.8.3":
|
2021-05-11 16:10:34 -07:00
|
|
|
version "7.8.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.8.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-syntax-top-level-await@^7.8.3":
|
2023-06-06 10:56:20 -04:00
|
|
|
version "7.14.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.14.5"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-syntax-typescript@^7.18.6", "@babel/plugin-syntax-typescript@^7.25.9", "@babel/plugin-syntax-typescript@^7.7.2":
|
2025-03-12 17:02:10 -04:00
|
|
|
version "7.25.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.9.tgz"
|
2025-03-12 17:02:10 -04:00
|
|
|
integrity sha512-hjMgRy5hb8uJJjUcdWunWVcoi9bGpJp8p5Ol1229PoN6aytsLwNMgmdftO23wnCLMfVmTwZDWMPNq/D1SY60JQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/plugin-syntax-typescript@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18"
|
|
|
|
|
integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.27.1"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
"@babel/plugin-syntax-unicode-sets-regex@^7.18.6":
|
|
|
|
|
version "7.18.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-syntax-unicode-sets-regex/-/plugin-syntax-unicode-sets-regex-7.18.6.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-create-regexp-features-plugin" "^7.18.6"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.18.6"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-arrow-functions@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.25.9.tgz"
|
|
|
|
|
integrity sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-async-generator-functions@^7.26.8":
|
|
|
|
|
version "7.26.8"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.26.8.tgz"
|
|
|
|
|
integrity sha512-He9Ej2X7tNf2zdKMAGOsmg2MrFc+hfoAhd3po4cWfo/NWjzEAKa0oQruj1ROVUdl0e6fb6/kE/G3SSxE0lRJOg==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.26.5"
|
|
|
|
|
"@babel/helper-remap-async-to-generator" "^7.25.9"
|
|
|
|
|
"@babel/traverse" "^7.26.8"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-async-to-generator@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.25.9.tgz"
|
|
|
|
|
integrity sha512-NT7Ejn7Z/LjUH0Gv5KsBCxh7BH3fbLTV0ptHvpeMvrt3cPThHfJfst9Wrb7S8EvJ7vRTFI7z+VAvFVEQn/m5zQ==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-module-imports" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
"@babel/helper-remap-async-to-generator" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-block-scoped-functions@^7.26.5":
|
|
|
|
|
version "7.26.5"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.26.5.tgz"
|
|
|
|
|
integrity sha512-chuTSY+hq09+/f5lMj8ZSYgCFpppV2CbYrhNFJ1BFoXpiWPnnAb7R0MqrafCpN8E1+YRrtM1MXZHJdIx8B6rMQ==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.26.5"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@babel/plugin-transform-block-scoping@^7.18.9":
|
|
|
|
|
version "7.18.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.18.9"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-block-scoping@^7.25.9":
|
|
|
|
|
version "7.27.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.27.0.tgz"
|
|
|
|
|
integrity sha512-u1jGphZ8uDI2Pj/HJj6YQ6XQLZCNjOlprjxB5SVz6rq2T6SwAR+CdrWK0CP7F+9rDVMXdB0+r6Am5G5aobOjAQ==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.26.5"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-class-properties@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.25.9.tgz"
|
|
|
|
|
integrity sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-create-class-features-plugin" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-class-static-block@^7.26.0":
|
|
|
|
|
version "7.26.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.26.0.tgz"
|
|
|
|
|
integrity sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-create-class-features-plugin" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-classes@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.9.tgz"
|
|
|
|
|
integrity sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-annotate-as-pure" "^7.25.9"
|
|
|
|
|
"@babel/helper-compilation-targets" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
"@babel/helper-replace-supers" "^7.25.9"
|
|
|
|
|
"@babel/traverse" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
globals "^11.1.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-computed-properties@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.25.9.tgz"
|
|
|
|
|
integrity sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
"@babel/template" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-destructuring@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.25.9.tgz"
|
|
|
|
|
integrity sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-dotall-regex@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.25.9.tgz"
|
|
|
|
|
integrity sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-create-regexp-features-plugin" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-duplicate-keys@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.25.9.tgz"
|
|
|
|
|
integrity sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-duplicate-named-capturing-groups-regex@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-duplicate-named-capturing-groups-regex/-/plugin-transform-duplicate-named-capturing-groups-regex-7.25.9.tgz"
|
|
|
|
|
integrity sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-create-regexp-features-plugin" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-dynamic-import@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.25.9.tgz"
|
|
|
|
|
integrity sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-exponentiation-operator@^7.26.3":
|
|
|
|
|
version "7.26.3"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.26.3.tgz"
|
|
|
|
|
integrity sha512-7CAHcQ58z2chuXPWblnn1K6rLDnDWieghSOEmqQsrBenH0P9InCUtOJYD89pvngljmZlJcz3fcmgYsXFNGa1ZQ==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
|
|
|
|
|
"@babel/plugin-transform-export-namespace-from@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.25.9.tgz"
|
|
|
|
|
integrity sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
"@babel/plugin-transform-flow-strip-types@^7.2.0":
|
|
|
|
|
version "7.21.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.21.0.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-FlFA2Mj87a6sDkW4gfGrQQqwY/dLlBAyJa2dJEZ+FHXUVHBflO2wyKvg+OOEzXfrKYIa4HWl0mgmbCzt0cMb7w==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.20.2"
|
|
|
|
|
"@babel/plugin-syntax-flow" "^7.18.6"
|
|
|
|
|
|
[sprout] Add shared runtime, improve error reporting
---
I added ~20 more tests to Sprout to get more of a feel for what the test
framework would need to support all fixtures. I'm relatively confident that the
approach outlined in [the original workplace
post](https://fburl.com/workplace/ftu8woch) works to migrate almost all existing
fixture tests to sprout (TLDR: use shared functions when possible, otherwise
write helper functions in-file).
Add `shared-runtime` file to reduce the amount of overhead needed to set up a
fixture test.
- All generalizable functions and values should be added here (e.g.
`shallowCopy`, `deepCopy`, `sum`).
- Editor integration is set up through a custom tsconfig, so importing from
`shared-runtime` should just work (with hover annotations, click-to-definition,
etc).
<img width="682" alt="Screenshot 2023-08-17 at 11 09 47 AM"
src="https://github.com/facebook/react-forget/assets/34200447/78c3dff9-ba10-4057-b3f6-2fa842d19b1d">
---
Tested new test fixtures added to sprout by adding them to `testfilter.txt` and
running with `--verbose --filter`.
Note that there are no unexpected exceptions, and all logs + returned values
match.
```
feifei0@feifei0-mbp babel-plugin-react-forget % yarn sprout:build && yarn sprout
--verbose --filter
yarn run v1.22.19
$ yarn workspace sprout run build
$ rimraf dist && tsc --build
✨ Done in 2.07s.
yarn run v1.22.19
$ node ../sprout/dist/main.js --verbose --filter
PASS console-readonly
ok {"a":1,"b":2} [
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }"
]
PASS constant-propagate-global-phis-constant
ok <div>global string 0</div>
PASS constant-propagate-global-phis
ok <div>global string 1</div>
PASS dce-loop
ok 10
PASS destructure-capture-global
ok {"a":"value 1","someGlobal":{}}
PASS destructuring-mixed-scope-and-local-variables-with-default
ok {"media":null,"allUrls":["url1","url2","url3"],"onClick":"[[ function
params=1 ]]"}
PASS holey-array-expr
ok [null,"global string 0",{"a":1,"b":2}]
PASS infer-global-object
ok {"primitiveVal1":2,"primitiveVal2":null,"primitiveVal3":null}
PASS infer-phi-primitive
ok 1
PASS infer-types-through-type-cast.flow
ok 4
PASS issue933-disjoint-set-infinite-loop
ok [2]
PASS jsx-tag-evaluation-order-non-global
ok <div>StaticText1<div>StaticText2</div></div>
PASS jsx-tag-evaluation-order
ok <div>StaticText1string value 1<div>StaticText2</div></div>
PASS method-call
ok 4
PASS mutable-lifetime-loops
ok {"a":{"value":6},"b":{"value":5},"c":{"value":4},"d":{"value":6}}
PASS mutable-lifetime-with-aliasing
ok {"b":[{}],"value":[{"c":{},"value":"[[ cyclic ref *0 ]]"},null]}
PASS update-expression-in-sequence
ok [4,2,3,4]
PASS update-expression-on-function-parameter
ok [4,1,4,2,4,3,1,4,4]
PASS update-expression
ok {"x":1,"y":1,"z":2}
PASS useMemo-multiple-if-else
ok 2
20 Tests, 20 Passed, 0 Failed
✨ Done in 4.11s.
```
2023-08-17 13:28:08 -04:00
|
|
|
"@babel/plugin-transform-flow-strip-types@^7.22.5":
|
|
|
|
|
version "7.22.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.22.5.tgz"
|
[sprout] Add shared runtime, improve error reporting
---
I added ~20 more tests to Sprout to get more of a feel for what the test
framework would need to support all fixtures. I'm relatively confident that the
approach outlined in [the original workplace
post](https://fburl.com/workplace/ftu8woch) works to migrate almost all existing
fixture tests to sprout (TLDR: use shared functions when possible, otherwise
write helper functions in-file).
Add `shared-runtime` file to reduce the amount of overhead needed to set up a
fixture test.
- All generalizable functions and values should be added here (e.g.
`shallowCopy`, `deepCopy`, `sum`).
- Editor integration is set up through a custom tsconfig, so importing from
`shared-runtime` should just work (with hover annotations, click-to-definition,
etc).
<img width="682" alt="Screenshot 2023-08-17 at 11 09 47 AM"
src="https://github.com/facebook/react-forget/assets/34200447/78c3dff9-ba10-4057-b3f6-2fa842d19b1d">
---
Tested new test fixtures added to sprout by adding them to `testfilter.txt` and
running with `--verbose --filter`.
Note that there are no unexpected exceptions, and all logs + returned values
match.
```
feifei0@feifei0-mbp babel-plugin-react-forget % yarn sprout:build && yarn sprout
--verbose --filter
yarn run v1.22.19
$ yarn workspace sprout run build
$ rimraf dist && tsc --build
✨ Done in 2.07s.
yarn run v1.22.19
$ node ../sprout/dist/main.js --verbose --filter
PASS console-readonly
ok {"a":1,"b":2} [
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }"
]
PASS constant-propagate-global-phis-constant
ok <div>global string 0</div>
PASS constant-propagate-global-phis
ok <div>global string 1</div>
PASS dce-loop
ok 10
PASS destructure-capture-global
ok {"a":"value 1","someGlobal":{}}
PASS destructuring-mixed-scope-and-local-variables-with-default
ok {"media":null,"allUrls":["url1","url2","url3"],"onClick":"[[ function
params=1 ]]"}
PASS holey-array-expr
ok [null,"global string 0",{"a":1,"b":2}]
PASS infer-global-object
ok {"primitiveVal1":2,"primitiveVal2":null,"primitiveVal3":null}
PASS infer-phi-primitive
ok 1
PASS infer-types-through-type-cast.flow
ok 4
PASS issue933-disjoint-set-infinite-loop
ok [2]
PASS jsx-tag-evaluation-order-non-global
ok <div>StaticText1<div>StaticText2</div></div>
PASS jsx-tag-evaluation-order
ok <div>StaticText1string value 1<div>StaticText2</div></div>
PASS method-call
ok 4
PASS mutable-lifetime-loops
ok {"a":{"value":6},"b":{"value":5},"c":{"value":4},"d":{"value":6}}
PASS mutable-lifetime-with-aliasing
ok {"b":[{}],"value":[{"c":{},"value":"[[ cyclic ref *0 ]]"},null]}
PASS update-expression-in-sequence
ok [4,2,3,4]
PASS update-expression-on-function-parameter
ok [4,1,4,2,4,3,1,4,4]
PASS update-expression
ok {"x":1,"y":1,"z":2}
PASS useMemo-multiple-if-else
ok 2
20 Tests, 20 Passed, 0 Failed
✨ Done in 4.11s.
```
2023-08-17 13:28:08 -04:00
|
|
|
integrity sha512-tujNbZdxdG0/54g/oua8ISToaXTFBf8EnSb5PgQSciIXWOWKX3S4+JR7ZE9ol8FZwf9kxitzkGQ+QWeov/mCiA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.22.5"
|
|
|
|
|
"@babel/plugin-syntax-flow" "^7.22.5"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-for-of@^7.26.9":
|
|
|
|
|
version "7.26.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.26.9.tgz"
|
|
|
|
|
integrity sha512-Hry8AusVm8LW5BVFgiyUReuoGzPUpdHQQqJY5bZnbbf+ngOHWuCuYFKw/BqaaWlvEUrF91HMhDtEaI1hZzNbLg==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.26.5"
|
|
|
|
|
"@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-function-name@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.9.tgz"
|
|
|
|
|
integrity sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-compilation-targets" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
"@babel/traverse" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-json-strings@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.25.9.tgz"
|
|
|
|
|
integrity sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-literals@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.9.tgz"
|
|
|
|
|
integrity sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-logical-assignment-operators@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.25.9.tgz"
|
|
|
|
|
integrity sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-member-expression-literals@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.25.9.tgz"
|
|
|
|
|
integrity sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-modules-amd@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.25.9.tgz"
|
|
|
|
|
integrity sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-module-transforms" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-modules-commonjs@^7.18.6", "@babel/plugin-transform-modules-commonjs@^7.25.9", "@babel/plugin-transform-modules-commonjs@^7.26.3":
|
2025-03-12 17:02:10 -04:00
|
|
|
version "7.26.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.26.3.tgz"
|
2025-03-12 17:02:10 -04:00
|
|
|
integrity sha512-MgR55l4q9KddUDITEzEFYn5ZsGDXMSsU9E+kh7fjRXTIC3RHqfCo8RPRbyReYJh44HQ/yomFkqbOFohXvDCiIQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-module-transforms" "^7.26.0"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/plugin-transform-modules-commonjs@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832"
|
|
|
|
|
integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-module-transforms" "^7.27.1"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.27.1"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
"@babel/plugin-transform-modules-commonjs@^7.8.3":
|
|
|
|
|
version "7.21.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.21.2.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-Cln+Yy04Gxua7iPdj6nOV96smLGjpElir5YwzF0LBPKoPlLDNJePNlrGGaybAJkd0zKRnOVXOgizSqPYMNYkzA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-module-transforms" "^7.21.2"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.20.2"
|
|
|
|
|
"@babel/helper-simple-access" "^7.20.2"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-modules-systemjs@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.25.9.tgz"
|
|
|
|
|
integrity sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-module-transforms" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
"@babel/helper-validator-identifier" "^7.25.9"
|
|
|
|
|
"@babel/traverse" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-modules-umd@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.25.9.tgz"
|
|
|
|
|
integrity sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-module-transforms" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-named-capturing-groups-regex@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.25.9.tgz"
|
|
|
|
|
integrity sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-create-regexp-features-plugin" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-new-target@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.25.9.tgz"
|
|
|
|
|
integrity sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-nullish-coalescing-operator@^7.26.6":
|
|
|
|
|
version "7.26.6"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.26.6.tgz"
|
|
|
|
|
integrity sha512-CKW8Vu+uUZneQCPtXmSBUC6NCAUdya26hWCElAWh5mVSlSRsmiCPUUDKb3Z0szng1hiAJa098Hkhg9o4SE35Qw==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.26.5"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-numeric-separator@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.25.9.tgz"
|
|
|
|
|
integrity sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-object-rest-spread@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.25.9.tgz"
|
|
|
|
|
integrity sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-compilation-targets" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-parameters" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-object-super@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.25.9.tgz"
|
|
|
|
|
integrity sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
"@babel/helper-replace-supers" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-optional-catch-binding@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.25.9.tgz"
|
|
|
|
|
integrity sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-optional-chaining@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.25.9.tgz"
|
|
|
|
|
integrity sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
"@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-parameters@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.25.9.tgz"
|
|
|
|
|
integrity sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-private-methods@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.25.9.tgz"
|
|
|
|
|
integrity sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-create-class-features-plugin" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-private-property-in-object@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.25.9.tgz"
|
|
|
|
|
integrity sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-annotate-as-pure" "^7.25.9"
|
|
|
|
|
"@babel/helper-create-class-features-plugin" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-property-literals@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.25.9.tgz"
|
|
|
|
|
integrity sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-react-display-name@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.25.9.tgz"
|
|
|
|
|
integrity sha512-KJfMlYIUxQB1CJfO3e0+h0ZHWOTLCPP115Awhaz8U0Zpq36Gl/cXlpoyMRnUWlhNUBAzldnCiAZNvCDj7CrKxQ==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-react-jsx-development@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.25.9.tgz"
|
|
|
|
|
integrity sha512-9mj6rm7XVYs4mdLIpbZnHOYdpW42uoiBCTVowg7sP1thUOiANgMb4UtpRivR0pp5iL+ocvUv7X4mZgFRpJEzGw==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-react-jsx" "^7.25.9"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-react-jsx@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz"
|
|
|
|
|
integrity sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-annotate-as-pure" "^7.25.9"
|
|
|
|
|
"@babel/helper-module-imports" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
"@babel/plugin-syntax-jsx" "^7.25.9"
|
|
|
|
|
"@babel/types" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-react-pure-annotations@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.25.9.tgz"
|
|
|
|
|
integrity sha512-KQ/Takk3T8Qzj5TppkS1be588lkbTp5uj7w6a0LeQaTMSckU/wK0oJ/pih+T690tkgI5jfmg2TqDJvd41Sj1Cg==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-annotate-as-pure" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
|
|
|
|
|
"@babel/plugin-transform-regenerator@^7.25.9":
|
|
|
|
|
version "7.27.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.27.0.tgz"
|
|
|
|
|
integrity sha512-LX/vCajUJQDqE7Aum/ELUMZAY19+cDpghxrnyt5I1tV6X5PyC86AOoWXWFYFeIvauyeSA6/ktn4tQVn/3ZifsA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.26.5"
|
|
|
|
|
regenerator-transform "^0.15.2"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-regexp-modifiers@^7.26.0":
|
|
|
|
|
version "7.26.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-regexp-modifiers/-/plugin-transform-regexp-modifiers-7.26.0.tgz"
|
|
|
|
|
integrity sha512-vN6saax7lrA2yA/Pak3sCxuD6F5InBjn9IcrIKQPjpsLvuHYLVroTxjdlVRHjjBWxKOqIwpTXDkOssYT4BFdRw==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-create-regexp-features-plugin" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-reserved-words@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.25.9.tgz"
|
|
|
|
|
integrity sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-shorthand-properties@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.25.9.tgz"
|
|
|
|
|
integrity sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-spread@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.25.9.tgz"
|
|
|
|
|
integrity sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
"@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-sticky-regex@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.25.9.tgz"
|
|
|
|
|
integrity sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-template-literals@^7.26.8":
|
|
|
|
|
version "7.26.8"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.26.8.tgz"
|
|
|
|
|
integrity sha512-OmGDL5/J0CJPJZTHZbi2XpO0tyT2Ia7fzpW5GURwdtp2X3fMmN8au/ej6peC/T33/+CRiIpA8Krse8hFGVmT5Q==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.26.5"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-typeof-symbol@^7.26.7":
|
|
|
|
|
version "7.27.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.0.tgz"
|
|
|
|
|
integrity sha512-+LLkxA9rKJpNoGsbLnAgOCdESl73vwYn+V6b+5wHbrE7OGKVDPHIQvbFSzqE6rwqaCw2RE+zdJrlLkcf8YOA0w==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.26.5"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-typescript@^7.25.9", "@babel/plugin-transform-typescript@^7.27.0":
|
|
|
|
|
version "7.27.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.0.tgz"
|
|
|
|
|
integrity sha512-fRGGjO2UEGPjvEcyAZXRXAS8AfdaQoq7HnxAbJoAoW10B9xOKesmmndJv+Sym2a+9FHWZ9KbyyLCe9s0Sn5jtg==
|
2025-03-12 17:02:10 -04:00
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-annotate-as-pure" "^7.25.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-create-class-features-plugin" "^7.27.0"
|
2025-03-12 17:02:10 -04:00
|
|
|
"@babel/helper-plugin-utils" "^7.26.5"
|
|
|
|
|
"@babel/helper-skip-transparent-expression-wrappers" "^7.25.9"
|
|
|
|
|
"@babel/plugin-syntax-typescript" "^7.25.9"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/plugin-transform-typescript@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.27.1.tgz#d3bb65598bece03f773111e88cc4e8e5070f1140"
|
|
|
|
|
integrity sha512-Q5sT5+O4QUebHdbwKedFBEwRLb02zJ7r4A5Gg2hUoLuU3FjdMcyqcywqUrLCaDsFCxzokf7u9kuy7qz51YUuAg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-annotate-as-pure" "^7.27.1"
|
|
|
|
|
"@babel/helper-create-class-features-plugin" "^7.27.1"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.27.1"
|
|
|
|
|
"@babel/helper-skip-transparent-expression-wrappers" "^7.27.1"
|
|
|
|
|
"@babel/plugin-syntax-typescript" "^7.27.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-unicode-escapes@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.25.9.tgz"
|
|
|
|
|
integrity sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-unicode-property-regex@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.25.9.tgz"
|
|
|
|
|
integrity sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-create-regexp-features-plugin" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-unicode-regex@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.25.9.tgz"
|
|
|
|
|
integrity sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-create-regexp-features-plugin" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-unicode-sets-regex@^7.25.9":
|
|
|
|
|
version "7.25.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.25.9.tgz"
|
|
|
|
|
integrity sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-create-regexp-features-plugin" "^7.25.9"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
|
|
|
|
|
"@babel/preset-env@^7.22.4", "@babel/preset-env@^7.26.9":
|
|
|
|
|
version "7.26.9"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.26.9.tgz"
|
|
|
|
|
integrity sha512-vX3qPGE8sEKEAZCWk05k3cpTAE3/nOYca++JA+Rd0z2NCNzabmYvEiSShKzm10zdquOIAVXsy2Ei/DTW34KlKQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/compat-data" "^7.26.8"
|
|
|
|
|
"@babel/helper-compilation-targets" "^7.26.5"
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.26.5"
|
|
|
|
|
"@babel/helper-validator-option" "^7.25.9"
|
|
|
|
|
"@babel/plugin-bugfix-firefox-class-in-computed-class-key" "^7.25.9"
|
|
|
|
|
"@babel/plugin-bugfix-safari-class-field-initializer-scope" "^7.25.9"
|
|
|
|
|
"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.25.9"
|
|
|
|
|
"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.25.9"
|
|
|
|
|
"@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly" "^7.25.9"
|
|
|
|
|
"@babel/plugin-proposal-private-property-in-object" "7.21.0-placeholder-for-preset-env.2"
|
|
|
|
|
"@babel/plugin-syntax-import-assertions" "^7.26.0"
|
|
|
|
|
"@babel/plugin-syntax-import-attributes" "^7.26.0"
|
2023-06-06 10:56:20 -04:00
|
|
|
"@babel/plugin-syntax-unicode-sets-regex" "^7.18.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/plugin-transform-arrow-functions" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-async-generator-functions" "^7.26.8"
|
|
|
|
|
"@babel/plugin-transform-async-to-generator" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-block-scoped-functions" "^7.26.5"
|
|
|
|
|
"@babel/plugin-transform-block-scoping" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-class-properties" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-class-static-block" "^7.26.0"
|
|
|
|
|
"@babel/plugin-transform-classes" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-computed-properties" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-destructuring" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-dotall-regex" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-duplicate-keys" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-duplicate-named-capturing-groups-regex" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-dynamic-import" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-exponentiation-operator" "^7.26.3"
|
|
|
|
|
"@babel/plugin-transform-export-namespace-from" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-for-of" "^7.26.9"
|
|
|
|
|
"@babel/plugin-transform-function-name" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-json-strings" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-literals" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-logical-assignment-operators" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-member-expression-literals" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-modules-amd" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-modules-commonjs" "^7.26.3"
|
|
|
|
|
"@babel/plugin-transform-modules-systemjs" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-modules-umd" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-named-capturing-groups-regex" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-new-target" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-nullish-coalescing-operator" "^7.26.6"
|
|
|
|
|
"@babel/plugin-transform-numeric-separator" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-object-rest-spread" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-object-super" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-optional-catch-binding" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-optional-chaining" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-parameters" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-private-methods" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-private-property-in-object" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-property-literals" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-regenerator" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-regexp-modifiers" "^7.26.0"
|
|
|
|
|
"@babel/plugin-transform-reserved-words" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-shorthand-properties" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-spread" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-sticky-regex" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-template-literals" "^7.26.8"
|
|
|
|
|
"@babel/plugin-transform-typeof-symbol" "^7.26.7"
|
|
|
|
|
"@babel/plugin-transform-unicode-escapes" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-unicode-property-regex" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-unicode-regex" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-unicode-sets-regex" "^7.25.9"
|
|
|
|
|
"@babel/preset-modules" "0.1.6-no-external-plugins"
|
|
|
|
|
babel-plugin-polyfill-corejs2 "^0.4.10"
|
|
|
|
|
babel-plugin-polyfill-corejs3 "^0.11.0"
|
|
|
|
|
babel-plugin-polyfill-regenerator "^0.6.1"
|
|
|
|
|
core-js-compat "^3.40.0"
|
|
|
|
|
semver "^6.3.1"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
[sprout] Add shared runtime, improve error reporting
---
I added ~20 more tests to Sprout to get more of a feel for what the test
framework would need to support all fixtures. I'm relatively confident that the
approach outlined in [the original workplace
post](https://fburl.com/workplace/ftu8woch) works to migrate almost all existing
fixture tests to sprout (TLDR: use shared functions when possible, otherwise
write helper functions in-file).
Add `shared-runtime` file to reduce the amount of overhead needed to set up a
fixture test.
- All generalizable functions and values should be added here (e.g.
`shallowCopy`, `deepCopy`, `sum`).
- Editor integration is set up through a custom tsconfig, so importing from
`shared-runtime` should just work (with hover annotations, click-to-definition,
etc).
<img width="682" alt="Screenshot 2023-08-17 at 11 09 47 AM"
src="https://github.com/facebook/react-forget/assets/34200447/78c3dff9-ba10-4057-b3f6-2fa842d19b1d">
---
Tested new test fixtures added to sprout by adding them to `testfilter.txt` and
running with `--verbose --filter`.
Note that there are no unexpected exceptions, and all logs + returned values
match.
```
feifei0@feifei0-mbp babel-plugin-react-forget % yarn sprout:build && yarn sprout
--verbose --filter
yarn run v1.22.19
$ yarn workspace sprout run build
$ rimraf dist && tsc --build
✨ Done in 2.07s.
yarn run v1.22.19
$ node ../sprout/dist/main.js --verbose --filter
PASS console-readonly
ok {"a":1,"b":2} [
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }"
]
PASS constant-propagate-global-phis-constant
ok <div>global string 0</div>
PASS constant-propagate-global-phis
ok <div>global string 1</div>
PASS dce-loop
ok 10
PASS destructure-capture-global
ok {"a":"value 1","someGlobal":{}}
PASS destructuring-mixed-scope-and-local-variables-with-default
ok {"media":null,"allUrls":["url1","url2","url3"],"onClick":"[[ function
params=1 ]]"}
PASS holey-array-expr
ok [null,"global string 0",{"a":1,"b":2}]
PASS infer-global-object
ok {"primitiveVal1":2,"primitiveVal2":null,"primitiveVal3":null}
PASS infer-phi-primitive
ok 1
PASS infer-types-through-type-cast.flow
ok 4
PASS issue933-disjoint-set-infinite-loop
ok [2]
PASS jsx-tag-evaluation-order-non-global
ok <div>StaticText1<div>StaticText2</div></div>
PASS jsx-tag-evaluation-order
ok <div>StaticText1string value 1<div>StaticText2</div></div>
PASS method-call
ok 4
PASS mutable-lifetime-loops
ok {"a":{"value":6},"b":{"value":5},"c":{"value":4},"d":{"value":6}}
PASS mutable-lifetime-with-aliasing
ok {"b":[{}],"value":[{"c":{},"value":"[[ cyclic ref *0 ]]"},null]}
PASS update-expression-in-sequence
ok [4,2,3,4]
PASS update-expression-on-function-parameter
ok [4,1,4,2,4,3,1,4,4]
PASS update-expression
ok {"x":1,"y":1,"z":2}
PASS useMemo-multiple-if-else
ok 2
20 Tests, 20 Passed, 0 Failed
✨ Done in 4.11s.
```
2023-08-17 13:28:08 -04:00
|
|
|
"@babel/preset-flow@^7.7.4":
|
|
|
|
|
version "7.22.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.22.5.tgz"
|
[sprout] Add shared runtime, improve error reporting
---
I added ~20 more tests to Sprout to get more of a feel for what the test
framework would need to support all fixtures. I'm relatively confident that the
approach outlined in [the original workplace
post](https://fburl.com/workplace/ftu8woch) works to migrate almost all existing
fixture tests to sprout (TLDR: use shared functions when possible, otherwise
write helper functions in-file).
Add `shared-runtime` file to reduce the amount of overhead needed to set up a
fixture test.
- All generalizable functions and values should be added here (e.g.
`shallowCopy`, `deepCopy`, `sum`).
- Editor integration is set up through a custom tsconfig, so importing from
`shared-runtime` should just work (with hover annotations, click-to-definition,
etc).
<img width="682" alt="Screenshot 2023-08-17 at 11 09 47 AM"
src="https://github.com/facebook/react-forget/assets/34200447/78c3dff9-ba10-4057-b3f6-2fa842d19b1d">
---
Tested new test fixtures added to sprout by adding them to `testfilter.txt` and
running with `--verbose --filter`.
Note that there are no unexpected exceptions, and all logs + returned values
match.
```
feifei0@feifei0-mbp babel-plugin-react-forget % yarn sprout:build && yarn sprout
--verbose --filter
yarn run v1.22.19
$ yarn workspace sprout run build
$ rimraf dist && tsc --build
✨ Done in 2.07s.
yarn run v1.22.19
$ node ../sprout/dist/main.js --verbose --filter
PASS console-readonly
ok {"a":1,"b":2} [
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }",
"{ a: 1, b: 2 }"
]
PASS constant-propagate-global-phis-constant
ok <div>global string 0</div>
PASS constant-propagate-global-phis
ok <div>global string 1</div>
PASS dce-loop
ok 10
PASS destructure-capture-global
ok {"a":"value 1","someGlobal":{}}
PASS destructuring-mixed-scope-and-local-variables-with-default
ok {"media":null,"allUrls":["url1","url2","url3"],"onClick":"[[ function
params=1 ]]"}
PASS holey-array-expr
ok [null,"global string 0",{"a":1,"b":2}]
PASS infer-global-object
ok {"primitiveVal1":2,"primitiveVal2":null,"primitiveVal3":null}
PASS infer-phi-primitive
ok 1
PASS infer-types-through-type-cast.flow
ok 4
PASS issue933-disjoint-set-infinite-loop
ok [2]
PASS jsx-tag-evaluation-order-non-global
ok <div>StaticText1<div>StaticText2</div></div>
PASS jsx-tag-evaluation-order
ok <div>StaticText1string value 1<div>StaticText2</div></div>
PASS method-call
ok 4
PASS mutable-lifetime-loops
ok {"a":{"value":6},"b":{"value":5},"c":{"value":4},"d":{"value":6}}
PASS mutable-lifetime-with-aliasing
ok {"b":[{}],"value":[{"c":{},"value":"[[ cyclic ref *0 ]]"},null]}
PASS update-expression-in-sequence
ok [4,2,3,4]
PASS update-expression-on-function-parameter
ok [4,1,4,2,4,3,1,4,4]
PASS update-expression
ok {"x":1,"y":1,"z":2}
PASS useMemo-multiple-if-else
ok 2
20 Tests, 20 Passed, 0 Failed
✨ Done in 4.11s.
```
2023-08-17 13:28:08 -04:00
|
|
|
integrity sha512-ta2qZ+LSiGCrP5pgcGt8xMnnkXQrq8Sa4Ulhy06BOlF5QbLw9q5hIx7bn5MrsvyTGAfh6kTOo07Q+Pfld/8Y5Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.22.5"
|
|
|
|
|
"@babel/helper-validator-option" "^7.22.5"
|
|
|
|
|
"@babel/plugin-transform-flow-strip-types" "^7.22.5"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/preset-modules@0.1.6-no-external-plugins":
|
|
|
|
|
version "0.1.6-no-external-plugins"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.6-no-external-plugins.tgz"
|
|
|
|
|
integrity sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.0.0"
|
|
|
|
|
"@babel/types" "^7.4.4"
|
|
|
|
|
esutils "^2.0.2"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/preset-react@^7.18.6":
|
2025-04-30 12:44:05 -07:00
|
|
|
version "7.26.3"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.26.3.tgz"
|
|
|
|
|
integrity sha512-Nl03d6T9ky516DGK2YMxrTqvnpUW63TnJMOMonj+Zae0JiPC5BC9xPMSL6L8fiSpA5vP88qfygavVQvnLp+6Cw==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
"@babel/helper-validator-option" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-react-display-name" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-react-jsx" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-react-jsx-development" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-react-pure-annotations" "^7.25.9"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/preset-typescript@^7.18.6":
|
2025-04-30 12:44:05 -07:00
|
|
|
version "7.27.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.27.0.tgz"
|
|
|
|
|
integrity sha512-vxaPFfJtHhgeOVXRKuHpHPAOgymmy8V8I65T1q53R7GCZlefKeCaTyDs3zOPHTTbmquvNlQYC5klEvWsBAtrBQ==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-plugin-utils" "^7.26.5"
|
|
|
|
|
"@babel/helper-validator-option" "^7.25.9"
|
|
|
|
|
"@babel/plugin-syntax-jsx" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-modules-commonjs" "^7.26.3"
|
|
|
|
|
"@babel/plugin-transform-typescript" "^7.27.0"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2025-03-12 17:02:10 -04:00
|
|
|
"@babel/preset-typescript@^7.26.0":
|
|
|
|
|
version "7.26.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.26.0.tgz"
|
2025-03-12 17:02:10 -04:00
|
|
|
integrity sha512-NMk1IGZ5I/oHhoXEElcm+xUnL/szL6xflkFZmoEU9xj1qSJXpiS7rsspYo92B4DRCDvZn2erT5LdsCeXAKNCkg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.25.9"
|
|
|
|
|
"@babel/helper-validator-option" "^7.25.9"
|
|
|
|
|
"@babel/plugin-syntax-jsx" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-modules-commonjs" "^7.25.9"
|
|
|
|
|
"@babel/plugin-transform-typescript" "^7.25.9"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/preset-typescript@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/preset-typescript/-/preset-typescript-7.27.1.tgz#190742a6428d282306648a55b0529b561484f912"
|
|
|
|
|
integrity sha512-l7WfQfX0WK4M0v2RudjuQK4u99BS6yLHYEmdtVPP7lKV013zr9DygFuWNlnbvQ9LR+LS0Egz/XAvGx5U9MX0fQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.27.1"
|
|
|
|
|
"@babel/helper-validator-option" "^7.27.1"
|
|
|
|
|
"@babel/plugin-syntax-jsx" "^7.27.1"
|
|
|
|
|
"@babel/plugin-transform-modules-commonjs" "^7.27.1"
|
|
|
|
|
"@babel/plugin-transform-typescript" "^7.27.1"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
"@babel/register@^7.0.0":
|
|
|
|
|
version "7.21.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/register/-/register-7.21.0.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-9nKsPmYDi5DidAqJaQooxIhsLJiNMkGr8ypQ8Uic7cIox7UCDsM7HuUGxdGT7mSDTYbqzIdsOWzfBton/YJrMw==
|
|
|
|
|
dependencies:
|
|
|
|
|
clone-deep "^4.0.1"
|
|
|
|
|
find-cache-dir "^2.0.0"
|
|
|
|
|
make-dir "^2.1.0"
|
|
|
|
|
pirates "^4.0.5"
|
|
|
|
|
source-map-support "^0.5.16"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/runtime@^7.12.5", "@babel/runtime@^7.8.4":
|
2021-05-11 16:10:34 -07:00
|
|
|
version "7.19.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==
|
|
|
|
|
dependencies:
|
|
|
|
|
regenerator-runtime "^0.13.4"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/runtime@^7.21.0":
|
2023-06-05 13:35:39 -04:00
|
|
|
version "7.22.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-XsDuspWKLUsxwCp6r7EhsExHtYfbe5oAGQ19kqngTdCPUoPQzOPdUbD/pB9PJiwb2ptYKQDjSJT3R6dC+EPqfQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
regenerator-runtime "^0.13.11"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/template@^7.1.2", "@babel/template@^7.18.10", "@babel/template@^7.25.9", "@babel/template@^7.26.9", "@babel/template@^7.27.0", "@babel/template@^7.3.3":
|
|
|
|
|
version "7.27.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz"
|
|
|
|
|
integrity sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/code-frame" "^7.26.2"
|
|
|
|
|
"@babel/parser" "^7.27.0"
|
|
|
|
|
"@babel/types" "^7.27.0"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
StoreLocal instruction
Adds a new `StoreLocal <kind> <place> = <value>` instruction which stores
<value> into <place>. With this change, Instruction.lvalue is _always_ a `const`
temporary, and never a named identifier (there's a new validation pass to assert
this). StoreLocal is the only way to declare or update a named identifier: the
instructionKind property says whether it's a const/let declaration or a
reassignment. Naturally a _lot_ of passes had to be updated to make this work,
but the existing Effect.Store variant that @gsathya added made this overall
straightforward.
Note that as of this PR several passes still have code to handle the possibility
of an instruction lvalue being something other than a temporary. When we clean
that up in a follow-up, there will be a lot less of the duplication that appears
here. For example, CodegenReactiveFunction has two places to handle variable
declarations in this PR. However, one of them is to handle lvalues, which should
now _always_ be temporaries and never emit a regular variable declaration.
Similarly, several passes have to build up a table of identifier -> identifier
(because of LoadLocal). Longer-term, we should update the Place abstraction so
that it directly specifies the instruction which created that temporary, so we
can look it up on demand instead of needing an extra mapping.
2023-03-02 14:19:17 -08:00
|
|
|
"@babel/template@^7.20.7":
|
|
|
|
|
version "7.20.7"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz"
|
StoreLocal instruction
Adds a new `StoreLocal <kind> <place> = <value>` instruction which stores
<value> into <place>. With this change, Instruction.lvalue is _always_ a `const`
temporary, and never a named identifier (there's a new validation pass to assert
this). StoreLocal is the only way to declare or update a named identifier: the
instructionKind property says whether it's a const/let declaration or a
reassignment. Naturally a _lot_ of passes had to be updated to make this work,
but the existing Effect.Store variant that @gsathya added made this overall
straightforward.
Note that as of this PR several passes still have code to handle the possibility
of an instruction lvalue being something other than a temporary. When we clean
that up in a follow-up, there will be a lot less of the duplication that appears
here. For example, CodegenReactiveFunction has two places to handle variable
declarations in this PR. However, one of them is to handle lvalues, which should
now _always_ be temporaries and never emit a regular variable declaration.
Similarly, several passes have to build up a table of identifier -> identifier
(because of LoadLocal). Longer-term, we should update the Place abstraction so
that it directly specifies the instruction which created that temporary, so we
can look it up on demand instead of needing an extra mapping.
2023-03-02 14:19:17 -08:00
|
|
|
integrity sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/code-frame" "^7.18.6"
|
|
|
|
|
"@babel/parser" "^7.20.7"
|
|
|
|
|
"@babel/types" "^7.20.7"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/template@^7.24.7", "@babel/template@^7.27.1":
|
2025-04-30 12:44:05 -07:00
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.1.tgz#b9e4f55c17a92312774dfbdde1b3c01c547bbae2"
|
|
|
|
|
integrity sha512-Fyo3ghWMqkHHpHQCoBs2VnYjR4iWFFjguTDEqA5WgZDOrFesVjMhMM2FSqTKSoUSDO1VQtavj8NFpdRBEvJTtg==
|
2024-09-27 15:15:15 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/code-frame" "^7.27.1"
|
|
|
|
|
"@babel/parser" "^7.27.1"
|
|
|
|
|
"@babel/types" "^7.27.1"
|
2023-08-09 14:47:56 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/traverse@^7.1.6", "@babel/traverse@^7.19.1", "@babel/traverse@^7.25.9", "@babel/traverse@^7.26.10", "@babel/traverse@^7.26.5", "@babel/traverse@^7.26.8", "@babel/traverse@^7.27.0":
|
2025-04-14 18:39:00 -04:00
|
|
|
version "7.27.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.27.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-19lYZFzYVQkkHkl4Cy4WrAVcqBkgvV2YM2TU3xG6DIwO7O3ecbDPfW3yM3bjAGcqcQHi+CCtjMR3dIEHxsd6bA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/code-frame" "^7.26.2"
|
|
|
|
|
"@babel/generator" "^7.27.0"
|
|
|
|
|
"@babel/parser" "^7.27.0"
|
|
|
|
|
"@babel/template" "^7.27.0"
|
|
|
|
|
"@babel/types" "^7.27.0"
|
|
|
|
|
debug "^4.3.1"
|
|
|
|
|
globals "^11.1.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/traverse@^7.19.0", "@babel/traverse@^7.21.2":
|
|
|
|
|
version "7.26.4"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz"
|
|
|
|
|
integrity sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==
|
2022-09-30 14:11:48 -07:00
|
|
|
dependencies:
|
2025-03-12 17:02:10 -04:00
|
|
|
"@babel/code-frame" "^7.26.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/generator" "^7.26.3"
|
|
|
|
|
"@babel/parser" "^7.26.3"
|
|
|
|
|
"@babel/template" "^7.25.9"
|
|
|
|
|
"@babel/types" "^7.26.3"
|
2025-03-12 17:02:10 -04:00
|
|
|
debug "^4.3.1"
|
|
|
|
|
globals "^11.1.0"
|
2024-07-15 17:44:14 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/traverse@^7.2.0", "@babel/traverse@^7.7.2":
|
|
|
|
|
version "7.7.4"
|
|
|
|
|
resolved "https://registry.npmjs.org/@babel/traverse/-/traverse-7.7.4.tgz"
|
|
|
|
|
integrity sha512-P1L58hQyupn8+ezVA2z5KBm4/Zr4lCC8dwKCMYzsa5jFMDMQAzaBNy9W5VjB+KAmBjb40U7a/H6ao+Xo+9saIw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/code-frame" "^7.5.5"
|
|
|
|
|
"@babel/generator" "^7.7.4"
|
|
|
|
|
"@babel/helper-function-name" "^7.7.4"
|
|
|
|
|
"@babel/helper-split-export-declaration" "^7.7.4"
|
|
|
|
|
"@babel/parser" "^7.7.4"
|
|
|
|
|
"@babel/types" "^7.7.4"
|
|
|
|
|
debug "^4.1.0"
|
|
|
|
|
globals "^11.1.0"
|
|
|
|
|
lodash "^4.17.13"
|
|
|
|
|
|
2025-05-02 13:56:01 -04:00
|
|
|
"@babel/traverse@^7.27.1":
|
|
|
|
|
version "7.27.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.27.1.tgz#4db772902b133bbddd1c4f7a7ee47761c1b9f291"
|
|
|
|
|
integrity sha512-ZCYtZciz1IWJB4U61UPu4KEaqyfj+r5T1Q5mqPo+IBpcG9kHv30Z0aD8LXPgC1trYa6rK0orRyAhqUgk4MjmEg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/code-frame" "^7.27.1"
|
|
|
|
|
"@babel/generator" "^7.27.1"
|
|
|
|
|
"@babel/parser" "^7.27.1"
|
|
|
|
|
"@babel/template" "^7.27.1"
|
|
|
|
|
"@babel/types" "^7.27.1"
|
|
|
|
|
debug "^4.3.1"
|
|
|
|
|
globals "^11.1.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
"@babel/types@7.26.3", "@babel/types@^7.0.0", "@babel/types@^7.19.0", "@babel/types@^7.2.0", "@babel/types@^7.2.2", "@babel/types@^7.20.2", "@babel/types@^7.20.7", "@babel/types@^7.21.2", "@babel/types@^7.24.7", "@babel/types@^7.25.9", "@babel/types@^7.26.0", "@babel/types@^7.26.10", "@babel/types@^7.26.3", "@babel/types@^7.27.0", "@babel/types@^7.27.1", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4", "@babel/types@^7.7.4":
|
2025-01-02 16:59:45 -05:00
|
|
|
version "7.26.3"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.26.3.tgz#37e79830f04c2b5687acc77db97fbc75fb81f3c0"
|
|
|
|
|
integrity sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==
|
2024-10-29 21:51:41 -04:00
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-string-parser" "^7.25.9"
|
|
|
|
|
"@babel/helper-validator-identifier" "^7.25.9"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@bcoe/v8-coverage@^0.2.3":
|
|
|
|
|
version "0.2.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
"@colors/colors@1.6.0", "@colors/colors@^1.6.0":
|
|
|
|
|
version "1.6.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@cspotcode/source-map-support@^0.8.0":
|
|
|
|
|
version "0.8.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jridgewell/trace-mapping" "0.3.9"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
"@dabh/diagnostics@^2.0.2":
|
|
|
|
|
version "2.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==
|
|
|
|
|
dependencies:
|
|
|
|
|
colorspace "1.1.x"
|
|
|
|
|
enabled "2.0.x"
|
|
|
|
|
kuler "^2.0.0"
|
|
|
|
|
|
2025-02-12 11:59:56 -05:00
|
|
|
"@esbuild/aix-ppc64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.0.tgz#499600c5e1757a524990d5d92601f0ac3ce87f64"
|
|
|
|
|
integrity sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==
|
|
|
|
|
|
|
|
|
|
"@esbuild/android-arm64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.0.tgz#b9b8231561a1dfb94eb31f4ee056b92a985c324f"
|
|
|
|
|
integrity sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==
|
|
|
|
|
|
|
|
|
|
"@esbuild/android-arm@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.0.tgz#ca6e7888942505f13e88ac9f5f7d2a72f9facd2b"
|
|
|
|
|
integrity sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==
|
|
|
|
|
|
|
|
|
|
"@esbuild/android-x64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.0.tgz#e765ea753bac442dfc9cb53652ce8bd39d33e163"
|
|
|
|
|
integrity sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==
|
|
|
|
|
|
|
|
|
|
"@esbuild/darwin-arm64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.0.tgz"
|
2025-02-12 11:59:56 -05:00
|
|
|
integrity sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==
|
|
|
|
|
|
|
|
|
|
"@esbuild/darwin-x64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.0.tgz#91979d98d30ba6e7d69b22c617cc82bdad60e47a"
|
|
|
|
|
integrity sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==
|
|
|
|
|
|
|
|
|
|
"@esbuild/freebsd-arm64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.0.tgz#b97e97073310736b430a07b099d837084b85e9ce"
|
|
|
|
|
integrity sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==
|
|
|
|
|
|
|
|
|
|
"@esbuild/freebsd-x64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.0.tgz#f3b694d0da61d9910ec7deff794d444cfbf3b6e7"
|
|
|
|
|
integrity sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==
|
|
|
|
|
|
|
|
|
|
"@esbuild/linux-arm64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.0.tgz#f921f699f162f332036d5657cad9036f7a993f73"
|
|
|
|
|
integrity sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==
|
|
|
|
|
|
|
|
|
|
"@esbuild/linux-arm@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.0.tgz#cc49305b3c6da317c900688995a4050e6cc91ca3"
|
|
|
|
|
integrity sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==
|
|
|
|
|
|
|
|
|
|
"@esbuild/linux-ia32@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.0.tgz#3e0736fcfab16cff042dec806247e2c76e109e19"
|
|
|
|
|
integrity sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==
|
|
|
|
|
|
|
|
|
|
"@esbuild/linux-loong64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.0.tgz#ea2bf730883cddb9dfb85124232b5a875b8020c7"
|
|
|
|
|
integrity sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==
|
|
|
|
|
|
|
|
|
|
"@esbuild/linux-mips64el@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.0.tgz#4cababb14eede09248980a2d2d8b966464294ff1"
|
|
|
|
|
integrity sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==
|
|
|
|
|
|
|
|
|
|
"@esbuild/linux-ppc64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.0.tgz#8860a4609914c065373a77242e985179658e1951"
|
|
|
|
|
integrity sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==
|
|
|
|
|
|
|
|
|
|
"@esbuild/linux-riscv64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.0.tgz#baf26e20bb2d38cfb86ee282dff840c04f4ed987"
|
|
|
|
|
integrity sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==
|
|
|
|
|
|
|
|
|
|
"@esbuild/linux-s390x@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.0.tgz#8323afc0d6cb1b6dc6e9fd21efd9e1542c3640a4"
|
|
|
|
|
integrity sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==
|
|
|
|
|
|
|
|
|
|
"@esbuild/linux-x64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.0.tgz#08fcf60cb400ed2382e9f8e0f5590bac8810469a"
|
|
|
|
|
integrity sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==
|
|
|
|
|
|
|
|
|
|
"@esbuild/netbsd-arm64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.0.tgz#935c6c74e20f7224918fbe2e6c6fe865b6c6ea5b"
|
|
|
|
|
integrity sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==
|
|
|
|
|
|
|
|
|
|
"@esbuild/netbsd-x64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.0.tgz#414677cef66d16c5a4d210751eb2881bb9c1b62b"
|
|
|
|
|
integrity sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==
|
|
|
|
|
|
|
|
|
|
"@esbuild/openbsd-arm64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.0.tgz#8fd55a4d08d25cdc572844f13c88d678c84d13f7"
|
|
|
|
|
integrity sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==
|
|
|
|
|
|
|
|
|
|
"@esbuild/openbsd-x64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.0.tgz#0c48ddb1494bbc2d6bcbaa1429a7f465fa1dedde"
|
|
|
|
|
integrity sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==
|
|
|
|
|
|
|
|
|
|
"@esbuild/sunos-x64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.0.tgz#86ff9075d77962b60dd26203d7352f92684c8c92"
|
|
|
|
|
integrity sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==
|
|
|
|
|
|
|
|
|
|
"@esbuild/win32-arm64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.0.tgz#849c62327c3229467f5b5cd681bf50588442e96c"
|
|
|
|
|
integrity sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==
|
|
|
|
|
|
|
|
|
|
"@esbuild/win32-ia32@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.0.tgz#f62eb480cd7cca088cb65bb46a6db25b725dc079"
|
|
|
|
|
integrity sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==
|
|
|
|
|
|
|
|
|
|
"@esbuild/win32-x64@0.25.0":
|
|
|
|
|
version "0.25.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.0.tgz#c8e119a30a7c8d60b9d2e22d2073722dde3b710b"
|
|
|
|
|
integrity sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==
|
2025-01-02 16:59:56 -05:00
|
|
|
|
2024-04-02 10:32:23 -04:00
|
|
|
"@eslint-community/eslint-utils@^4.2.0", "@eslint-community/eslint-utils@^4.4.0":
|
2023-06-05 13:35:39 -04:00
|
|
|
version "4.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==
|
|
|
|
|
dependencies:
|
|
|
|
|
eslint-visitor-keys "^3.3.0"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
"@eslint-community/regexpp@^4.10.0":
|
|
|
|
|
version "4.11.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==
|
2023-06-05 13:35:39 -04:00
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
"@eslint-community/regexpp@^4.12.1":
|
|
|
|
|
version "4.12.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==
|
|
|
|
|
|
2024-04-02 10:32:23 -04:00
|
|
|
"@eslint-community/regexpp@^4.5.1", "@eslint-community/regexpp@^4.6.1":
|
2024-03-25 15:00:34 -04:00
|
|
|
version "4.10.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz"
|
2024-03-25 15:00:34 -04:00
|
|
|
integrity sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
"@eslint/config-array@^0.19.0":
|
|
|
|
|
version "0.19.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.19.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-fo6Mtm5mWyKjA/Chy1BYTdn5mGJoDNjC7C64ug20ADsRDGrA85bN3uK3MaKbeRkRuuIEAR5N33Jr1pbm411/PA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@eslint/object-schema" "^2.1.5"
|
|
|
|
|
debug "^4.3.1"
|
|
|
|
|
minimatch "^3.1.2"
|
|
|
|
|
|
|
|
|
|
"@eslint/core@^0.9.0":
|
|
|
|
|
version "0.9.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@eslint/core/-/core-0.9.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-GuUdqkyyzQI5RMIWkHhvTWLCyLo1jNK3vzkSyaExH5kHPDHcuL2VOpHjmMY+y3+NC69qAKToBqldTBgYeLSr9Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/json-schema" "^7.0.15"
|
|
|
|
|
|
2024-03-25 15:00:34 -04:00
|
|
|
"@eslint/eslintrc@^2.1.4":
|
|
|
|
|
version "2.1.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz"
|
2024-03-25 15:00:34 -04:00
|
|
|
integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
ajv "^6.12.4"
|
|
|
|
|
debug "^4.3.2"
|
|
|
|
|
espree "^9.6.0"
|
|
|
|
|
globals "^13.19.0"
|
|
|
|
|
ignore "^5.2.0"
|
|
|
|
|
import-fresh "^3.2.1"
|
|
|
|
|
js-yaml "^4.1.0"
|
|
|
|
|
minimatch "^3.1.2"
|
|
|
|
|
strip-json-comments "^3.1.1"
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
"@eslint/eslintrc@^3.2.0":
|
|
|
|
|
version "3.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.2.0.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-grOjVNN8P3hjJn/eIETF1wwd12DdnwFDoyceUJLYYdkpbwq3nLi+4fqrTAONx7XDALqlL220wC/RHSC/QTI/0w==
|
|
|
|
|
dependencies:
|
|
|
|
|
ajv "^6.12.4"
|
|
|
|
|
debug "^4.3.2"
|
|
|
|
|
espree "^10.0.1"
|
|
|
|
|
globals "^14.0.0"
|
|
|
|
|
ignore "^5.2.0"
|
|
|
|
|
import-fresh "^3.2.1"
|
|
|
|
|
js-yaml "^4.1.0"
|
|
|
|
|
minimatch "^3.1.2"
|
|
|
|
|
strip-json-comments "^3.1.1"
|
|
|
|
|
|
2024-03-25 15:00:34 -04:00
|
|
|
"@eslint/js@8.57.0":
|
|
|
|
|
version "8.57.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz"
|
2024-03-25 15:00:34 -04:00
|
|
|
integrity sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
"@eslint/js@8.57.1":
|
|
|
|
|
version "8.57.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@eslint/js/-/js-8.57.1.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
"@eslint/js@9.17.0", "@eslint/js@^9.13.0":
|
|
|
|
|
version "9.17.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@eslint/js/-/js-9.17.0.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-Sxc4hqcs1kTu0iID3kcZDW3JHq2a77HO9P8CP6YEA/FpH3Ll8UXE2r/86Rz9YJLKme39S9vU5OWNjC6Xl0Cr3w==
|
|
|
|
|
|
|
|
|
|
"@eslint/object-schema@^2.1.5":
|
|
|
|
|
version "2.1.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.5.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-o0bhxnL89h5Bae5T318nFoFzGy+YE5i/gGkoPAgkmTVdRKTiv3p8JHevPiPaMwoloKfEiiaHlawCqaZMqRm+XQ==
|
|
|
|
|
|
|
|
|
|
"@eslint/plugin-kit@^0.2.3":
|
|
|
|
|
version "0.2.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.4.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-zSkKow6H5Kdm0ZUQUB2kV5JIXqoG0+uH5YADhaEHswm664N9Db8dXSi0nMJpacpMf+MyyglF1vnZohpEg5yUtg==
|
|
|
|
|
dependencies:
|
|
|
|
|
levn "^0.4.1"
|
|
|
|
|
|
2024-05-21 01:41:16 -04:00
|
|
|
"@hapi/hoek@^9.0.0", "@hapi/hoek@^9.3.0":
|
|
|
|
|
version "9.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz"
|
2024-05-21 01:41:16 -04:00
|
|
|
integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==
|
|
|
|
|
|
|
|
|
|
"@hapi/topo@^5.1.0":
|
|
|
|
|
version "5.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz"
|
2024-05-21 01:41:16 -04:00
|
|
|
integrity sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@hapi/hoek" "^9.0.0"
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
"@humanfs/core@^0.19.1":
|
|
|
|
|
version "0.19.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==
|
|
|
|
|
|
|
|
|
|
"@humanfs/node@^0.16.6":
|
|
|
|
|
version "0.16.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@humanfs/core" "^0.19.1"
|
|
|
|
|
"@humanwhocodes/retry" "^0.3.0"
|
|
|
|
|
|
2024-03-25 15:00:34 -04:00
|
|
|
"@humanwhocodes/config-array@^0.11.14":
|
|
|
|
|
version "0.11.14"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz"
|
2024-03-25 15:00:34 -04:00
|
|
|
integrity sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@humanwhocodes/object-schema" "^2.0.2"
|
|
|
|
|
debug "^4.3.1"
|
|
|
|
|
minimatch "^3.0.5"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
"@humanwhocodes/config-array@^0.13.0":
|
|
|
|
|
version "0.13.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==
|
2022-10-19 13:00:47 -07:00
|
|
|
dependencies:
|
2024-09-27 15:15:15 -04:00
|
|
|
"@humanwhocodes/object-schema" "^2.0.3"
|
|
|
|
|
debug "^4.3.1"
|
2023-02-09 11:58:06 -08:00
|
|
|
minimatch "^3.0.5"
|
2022-10-19 13:00:47 -07:00
|
|
|
|
|
|
|
|
"@humanwhocodes/module-importer@^1.0.1":
|
|
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==
|
|
|
|
|
|
2024-03-25 15:00:34 -04:00
|
|
|
"@humanwhocodes/object-schema@^2.0.2":
|
|
|
|
|
version "2.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.2.tgz"
|
2024-03-25 15:00:34 -04:00
|
|
|
integrity sha512-6EwiSjwWYP7pTckG6I5eyFANjPhmPjUX9JRLUSfNPC7FX7zK9gyZAfUEaECL6ALTpGX5AjnBq3C9XmVWPitNpw==
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
"@humanwhocodes/object-schema@^2.0.3":
|
|
|
|
|
version "2.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
"@humanwhocodes/retry@^0.3.0":
|
|
|
|
|
version "0.3.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==
|
|
|
|
|
|
|
|
|
|
"@humanwhocodes/retry@^0.4.1":
|
|
|
|
|
version "0.4.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-c7hNEllBlenFTHBky65mhq8WD2kbN9Q6gk0bTk8lSBvc554jpXSkST1iePudpt7+A/AQvuHs9EMqjHDXMY1lrA==
|
|
|
|
|
|
2024-03-11 13:55:24 -04:00
|
|
|
"@isaacs/cliui@^8.0.2":
|
|
|
|
|
version "8.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
|
|
|
|
|
dependencies:
|
|
|
|
|
string-width "^5.1.2"
|
|
|
|
|
string-width-cjs "npm:string-width@^4.2.0"
|
|
|
|
|
strip-ansi "^7.0.1"
|
|
|
|
|
strip-ansi-cjs "npm:strip-ansi@^6.0.1"
|
|
|
|
|
wrap-ansi "^8.1.0"
|
|
|
|
|
wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@istanbuljs/load-nyc-config@^1.0.0":
|
|
|
|
|
version "1.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
camelcase "^5.3.1"
|
|
|
|
|
find-up "^4.1.0"
|
|
|
|
|
get-package-type "^0.1.0"
|
|
|
|
|
js-yaml "^3.13.1"
|
|
|
|
|
resolve-from "^5.0.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
"@istanbuljs/schema@^0.1.2", "@istanbuljs/schema@^0.1.3":
|
2021-05-11 16:10:34 -07:00
|
|
|
version "0.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@jest/console@^28.1.3":
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
jest-message-util "^28.1.3"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@jest/console@^29.0.3":
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/console/-/console-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-cGg0r+klVHSYnfE977S9wmpuQ9L+iYuYgL+5bPXiUlUynLLYunRxswEmhBzvrSKGof5AKiHuTTmUKAqRcDY9dg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
jest-message-util "^29.0.3"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
"@jest/console@^29.5.0":
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/console/-/console-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-NEpkObxPwyw/XxZVLPmAGKE89IQRp4puc6IQRPru6JKd1M3fW9v1xM1AnzIJE65hbCkzQAdnL8P47e9hzhiYLQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
jest-message-util "^29.5.0"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/console@^29.7.0":
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/@jest/console/-/console-29.7.0.tgz#cd4822dbdb84529265c5a2bdb529a3c9cc950ffc"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
jest-message-util "^29.7.0"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@jest/core@^28.1.3":
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/console" "^28.1.3"
|
|
|
|
|
"@jest/reporters" "^28.1.3"
|
|
|
|
|
"@jest/test-result" "^28.1.3"
|
|
|
|
|
"@jest/transform" "^28.1.3"
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
ansi-escapes "^4.2.1"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
ci-info "^3.2.0"
|
|
|
|
|
exit "^0.1.2"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-changed-files "^28.1.3"
|
|
|
|
|
jest-config "^28.1.3"
|
|
|
|
|
jest-haste-map "^28.1.3"
|
|
|
|
|
jest-message-util "^28.1.3"
|
|
|
|
|
jest-regex-util "^28.0.2"
|
|
|
|
|
jest-resolve "^28.1.3"
|
|
|
|
|
jest-resolve-dependencies "^28.1.3"
|
|
|
|
|
jest-runner "^28.1.3"
|
|
|
|
|
jest-runtime "^28.1.3"
|
|
|
|
|
jest-snapshot "^28.1.3"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
jest-validate "^28.1.3"
|
|
|
|
|
jest-watcher "^28.1.3"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
pretty-format "^28.1.3"
|
|
|
|
|
rimraf "^3.0.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
strip-ansi "^6.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@jest/core@^29.0.3":
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/core/-/core-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-1d0hLbOrM1qQE3eP3DtakeMbKTcXiXP3afWxqz103xPyddS2NhnNghS7MaXx1dcDt4/6p4nlhmeILo2ofgi8cQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/console" "^29.0.3"
|
|
|
|
|
"@jest/reporters" "^29.0.3"
|
|
|
|
|
"@jest/test-result" "^29.0.3"
|
|
|
|
|
"@jest/transform" "^29.0.3"
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
ansi-escapes "^4.2.1"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
ci-info "^3.2.0"
|
|
|
|
|
exit "^0.1.2"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-changed-files "^29.0.0"
|
|
|
|
|
jest-config "^29.0.3"
|
|
|
|
|
jest-haste-map "^29.0.3"
|
|
|
|
|
jest-message-util "^29.0.3"
|
|
|
|
|
jest-regex-util "^29.0.0"
|
|
|
|
|
jest-resolve "^29.0.3"
|
|
|
|
|
jest-resolve-dependencies "^29.0.3"
|
|
|
|
|
jest-runner "^29.0.3"
|
|
|
|
|
jest-runtime "^29.0.3"
|
|
|
|
|
jest-snapshot "^29.0.3"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
jest-validate "^29.0.3"
|
|
|
|
|
jest-watcher "^29.0.3"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
pretty-format "^29.0.3"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
strip-ansi "^6.0.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
"@jest/core@^29.5.0":
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/core/-/core-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-28UzQc7ulUrOQw1IsN/kv1QES3q2kkbl/wGslyhAclqZ/8cMdB5M68BffkIdSJgKBUt50d3hbwJ92XESlE7LiQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/console" "^29.5.0"
|
|
|
|
|
"@jest/reporters" "^29.5.0"
|
|
|
|
|
"@jest/test-result" "^29.5.0"
|
|
|
|
|
"@jest/transform" "^29.5.0"
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
ansi-escapes "^4.2.1"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
ci-info "^3.2.0"
|
|
|
|
|
exit "^0.1.2"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-changed-files "^29.5.0"
|
|
|
|
|
jest-config "^29.5.0"
|
|
|
|
|
jest-haste-map "^29.5.0"
|
|
|
|
|
jest-message-util "^29.5.0"
|
|
|
|
|
jest-regex-util "^29.4.3"
|
|
|
|
|
jest-resolve "^29.5.0"
|
|
|
|
|
jest-resolve-dependencies "^29.5.0"
|
|
|
|
|
jest-runner "^29.5.0"
|
|
|
|
|
jest-runtime "^29.5.0"
|
|
|
|
|
jest-snapshot "^29.5.0"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
jest-validate "^29.5.0"
|
|
|
|
|
jest-watcher "^29.5.0"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
pretty-format "^29.5.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
strip-ansi "^6.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/core@^29.7.0":
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/@jest/core/-/core-29.7.0.tgz#b6cccc239f30ff36609658c5a5e2291757ce448f"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/console" "^29.7.0"
|
|
|
|
|
"@jest/reporters" "^29.7.0"
|
|
|
|
|
"@jest/test-result" "^29.7.0"
|
|
|
|
|
"@jest/transform" "^29.7.0"
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
ansi-escapes "^4.2.1"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
ci-info "^3.2.0"
|
|
|
|
|
exit "^0.1.2"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-changed-files "^29.7.0"
|
|
|
|
|
jest-config "^29.7.0"
|
|
|
|
|
jest-haste-map "^29.7.0"
|
|
|
|
|
jest-message-util "^29.7.0"
|
|
|
|
|
jest-regex-util "^29.6.3"
|
|
|
|
|
jest-resolve "^29.7.0"
|
|
|
|
|
jest-resolve-dependencies "^29.7.0"
|
|
|
|
|
jest-runner "^29.7.0"
|
|
|
|
|
jest-runtime "^29.7.0"
|
|
|
|
|
jest-snapshot "^29.7.0"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
jest-validate "^29.7.0"
|
|
|
|
|
jest-watcher "^29.7.0"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
pretty-format "^29.7.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
strip-ansi "^6.0.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
"@jest/diff-sequences@30.0.1":
|
|
|
|
|
version "30.0.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@jest/diff-sequences/-/diff-sequences-30.0.1.tgz#0ededeae4d071f5c8ffe3678d15f3a1be09156be"
|
|
|
|
|
integrity sha512-n5H8QLDJ47QqbCNn5SuFjCRDrOLEZ0h8vAHCK5RL9Ls7Xa8AQLa/YxAc9UjFqoEDM48muwtBGjtMY5cr0PLDCw==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@jest/environment@^28.1.3":
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/environment/-/environment-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/fake-timers" "^28.1.3"
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
jest-mock "^28.1.3"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/environment@^29.0.3", "@jest/environment@^29.7.0":
|
|
|
|
|
version "29.7.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz"
|
|
|
|
|
integrity sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/fake-timers" "^29.7.0"
|
|
|
|
|
"@jest/types" "^29.6.3"
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/node" "*"
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-mock "^29.7.0"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
"@jest/environment@^29.5.0":
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/environment/-/environment-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-5FXw2+wD29YU1d4I2htpRX7jYnAyTRjP2CsXQdo9SAM8g3ifxWPSV0HnClSn71xwctr0U3oZIIH+dtbfmnbXVQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/fake-timers" "^29.5.0"
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
jest-mock "^29.5.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
"@jest/expect-utils@30.0.5":
|
|
|
|
|
version "30.0.5"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-30.0.5.tgz#9d42e4b8bc80367db30abc6c42b2cb14073f66fc"
|
|
|
|
|
integrity sha512-F3lmTT7CXWYywoVUGTCmom0vXq3HTTkaZyTAzIy+bXSBizB7o5qzlC9VCtq0arOa8GqmNsbg/cE9C6HLn7Szew==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/get-type" "30.0.1"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@jest/expect-utils@^28.1.3":
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==
|
|
|
|
|
dependencies:
|
|
|
|
|
jest-get-type "^28.0.2"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@jest/expect-utils@^29.0.3":
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-i1xUkau7K/63MpdwiRqaxgZOjxYs4f0WMTGJnYwUKubsNRZSeQbLorS7+I4uXVF9KQ5r61BUPAUMZ7Lf66l64Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
jest-get-type "^29.0.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
"@jest/expect-utils@^29.5.0":
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-fmKzsidoXQT2KwnrwE0SQq3uj8Z763vzR8LnLBwC2qYWEFpjX8daRsk6rHUM1QvNlEW/UJXNXm59ztmJJWs2Mg==
|
|
|
|
|
dependencies:
|
|
|
|
|
jest-get-type "^29.4.3"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/expect-utils@^29.7.0":
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-29.7.0.tgz#023efe5d26a8a70f21677d0a1afc0f0a44e3a1c6"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==
|
|
|
|
|
dependencies:
|
|
|
|
|
jest-get-type "^29.6.3"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@jest/expect@^28.1.3":
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==
|
|
|
|
|
dependencies:
|
|
|
|
|
expect "^28.1.3"
|
|
|
|
|
jest-snapshot "^28.1.3"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@jest/expect@^29.0.3":
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-6W7K+fsI23FQ01H/BWccPyDZFrnU9QlzDcKOjrNVU5L8yUORFAJJIpmyxWPW70+X624KUNqzZwPThPMX28aXEQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
expect "^29.0.3"
|
|
|
|
|
jest-snapshot "^29.0.3"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
"@jest/expect@^29.5.0":
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/expect/-/expect-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-PueDR2HGihN3ciUNGr4uelropW7rqUfTiOn+8u0leg/42UhblPxHkfoh0Ruu3I9Y1962P3u2DY4+h7GVTSVU6g==
|
|
|
|
|
dependencies:
|
|
|
|
|
expect "^29.5.0"
|
|
|
|
|
jest-snapshot "^29.5.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/expect@^29.7.0":
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-29.7.0.tgz#76a3edb0cb753b70dfbfe23283510d3d45432bf2"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
expect "^29.7.0"
|
|
|
|
|
jest-snapshot "^29.7.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@jest/fake-timers@^28.1.3":
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
"@sinonjs/fake-timers" "^9.1.2"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
jest-message-util "^28.1.3"
|
|
|
|
|
jest-mock "^28.1.3"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/fake-timers@^29.0.3", "@jest/fake-timers@^29.7.0":
|
|
|
|
|
version "29.7.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz"
|
|
|
|
|
integrity sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
"@sinonjs/fake-timers" "^10.0.2"
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/node" "*"
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-message-util "^29.7.0"
|
|
|
|
|
jest-mock "^29.7.0"
|
|
|
|
|
jest-util "^29.7.0"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
"@jest/fake-timers@^29.5.0":
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-9ARvuAAQcBwDAqOnglWq2zwNIRUDtk/SCkp/ToGEhFv5r86K21l+VEs0qNTaXtyiY0lEePl3kylijSYJQqdbDg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@sinonjs/fake-timers" "^10.0.2"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
jest-message-util "^29.5.0"
|
|
|
|
|
jest-mock "^29.5.0"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
"@jest/get-type@30.0.1":
|
|
|
|
|
version "30.0.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@jest/get-type/-/get-type-30.0.1.tgz#0d32f1bbfba511948ad247ab01b9007724fc9f52"
|
|
|
|
|
integrity sha512-AyYdemXCptSRFirI5EPazNxyPwAL0jXt3zceFjaj8NFiKP9pOi0bfXonf6qkf82z2t3QWPeLCWWw4stPBzctLw==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@jest/globals@^28.1.3":
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^28.1.3"
|
|
|
|
|
"@jest/expect" "^28.1.3"
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@jest/globals@^29.0.3":
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-YqGHT65rFY2siPIHHFjuCGUsbzRjdqkwbat+Of6DmYRg5shIXXrLdZoVE/+TJ9O1dsKsFmYhU58JvIbZRU1Z9w==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^29.0.3"
|
|
|
|
|
"@jest/expect" "^29.0.3"
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
jest-mock "^29.0.3"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
"@jest/globals@^29.5.0":
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/globals/-/globals-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-S02y0qMWGihdzNbUiqSAiKSpSozSuHX5UYc7QbnHP+D9Lyw8DgGGCinrN9uSuHPeKgSSzvPom2q1nAtBvUsvPQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^29.5.0"
|
|
|
|
|
"@jest/expect" "^29.5.0"
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
jest-mock "^29.5.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/globals@^29.7.0":
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-29.7.0.tgz#8d9290f9ec47ff772607fa864ca1d5a2efae1d4d"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^29.7.0"
|
|
|
|
|
"@jest/expect" "^29.7.0"
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
jest-mock "^29.7.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
"@jest/pattern@30.0.1":
|
|
|
|
|
version "30.0.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@jest/pattern/-/pattern-30.0.1.tgz#d5304147f49a052900b4b853dedb111d080e199f"
|
|
|
|
|
integrity sha512-gWp7NfQW27LaBQz3TITS8L7ZCQ0TLvtmI//4OwlQRx4rnWxcPNIYjxZpDcN4+UlGxgm3jS5QPz8IPTCkb59wZA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
jest-regex-util "30.0.1"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@jest/reporters@^28.1.3":
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@bcoe/v8-coverage" "^0.2.3"
|
|
|
|
|
"@jest/console" "^28.1.3"
|
|
|
|
|
"@jest/test-result" "^28.1.3"
|
|
|
|
|
"@jest/transform" "^28.1.3"
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.13"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
collect-v8-coverage "^1.0.0"
|
|
|
|
|
exit "^0.1.2"
|
|
|
|
|
glob "^7.1.3"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
istanbul-lib-coverage "^3.0.0"
|
|
|
|
|
istanbul-lib-instrument "^5.1.0"
|
|
|
|
|
istanbul-lib-report "^3.0.0"
|
|
|
|
|
istanbul-lib-source-maps "^4.0.0"
|
|
|
|
|
istanbul-reports "^3.1.3"
|
|
|
|
|
jest-message-util "^28.1.3"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
jest-worker "^28.1.3"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
string-length "^4.0.1"
|
|
|
|
|
strip-ansi "^6.0.0"
|
|
|
|
|
terminal-link "^2.0.0"
|
|
|
|
|
v8-to-istanbul "^9.0.1"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@jest/reporters@^29.0.3":
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-3+QU3d4aiyOWfmk1obDerie4XNCaD5Xo1IlKNde2yGEi02WQD+ZQD0i5Hgqm1e73sMV7kw6pMlCnprtEwEVwxw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@bcoe/v8-coverage" "^0.2.3"
|
|
|
|
|
"@jest/console" "^29.0.3"
|
|
|
|
|
"@jest/test-result" "^29.0.3"
|
|
|
|
|
"@jest/transform" "^29.0.3"
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.15"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
collect-v8-coverage "^1.0.0"
|
|
|
|
|
exit "^0.1.2"
|
|
|
|
|
glob "^7.1.3"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
istanbul-lib-coverage "^3.0.0"
|
|
|
|
|
istanbul-lib-instrument "^5.1.0"
|
|
|
|
|
istanbul-lib-report "^3.0.0"
|
|
|
|
|
istanbul-lib-source-maps "^4.0.0"
|
|
|
|
|
istanbul-reports "^3.1.3"
|
|
|
|
|
jest-message-util "^29.0.3"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
jest-worker "^29.0.3"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
string-length "^4.0.1"
|
|
|
|
|
strip-ansi "^6.0.0"
|
|
|
|
|
terminal-link "^2.0.0"
|
|
|
|
|
v8-to-istanbul "^9.0.1"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
"@jest/reporters@^29.5.0":
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/reporters/-/reporters-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-D05STXqj/M8bP9hQNSICtPqz97u7ffGzZu+9XLucXhkOFBqKcXe04JLZOgIekOxdb73MAoBUFnqvf7MCpKk5OA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@bcoe/v8-coverage" "^0.2.3"
|
|
|
|
|
"@jest/console" "^29.5.0"
|
|
|
|
|
"@jest/test-result" "^29.5.0"
|
|
|
|
|
"@jest/transform" "^29.5.0"
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.15"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
collect-v8-coverage "^1.0.0"
|
|
|
|
|
exit "^0.1.2"
|
|
|
|
|
glob "^7.1.3"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
istanbul-lib-coverage "^3.0.0"
|
|
|
|
|
istanbul-lib-instrument "^5.1.0"
|
|
|
|
|
istanbul-lib-report "^3.0.0"
|
|
|
|
|
istanbul-lib-source-maps "^4.0.0"
|
|
|
|
|
istanbul-reports "^3.1.3"
|
|
|
|
|
jest-message-util "^29.5.0"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
jest-worker "^29.5.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
string-length "^4.0.1"
|
|
|
|
|
strip-ansi "^6.0.0"
|
|
|
|
|
v8-to-istanbul "^9.0.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/reporters@^29.7.0":
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-29.7.0.tgz#04b262ecb3b8faa83b0b3d321623972393e8f4c7"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@bcoe/v8-coverage" "^0.2.3"
|
|
|
|
|
"@jest/console" "^29.7.0"
|
|
|
|
|
"@jest/test-result" "^29.7.0"
|
|
|
|
|
"@jest/transform" "^29.7.0"
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.18"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
collect-v8-coverage "^1.0.0"
|
|
|
|
|
exit "^0.1.2"
|
|
|
|
|
glob "^7.1.3"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
istanbul-lib-coverage "^3.0.0"
|
|
|
|
|
istanbul-lib-instrument "^6.0.0"
|
|
|
|
|
istanbul-lib-report "^3.0.0"
|
|
|
|
|
istanbul-lib-source-maps "^4.0.0"
|
|
|
|
|
istanbul-reports "^3.1.3"
|
|
|
|
|
jest-message-util "^29.7.0"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
jest-worker "^29.7.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
string-length "^4.0.1"
|
|
|
|
|
strip-ansi "^6.0.0"
|
|
|
|
|
v8-to-istanbul "^9.0.1"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
"@jest/schemas@30.0.5":
|
|
|
|
|
version "30.0.5"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-30.0.5.tgz#7bdf69fc5a368a5abdb49fd91036c55225846473"
|
|
|
|
|
integrity sha512-DmdYgtezMkh3cpU8/1uyXakv3tJRcmcXxBOcO0tbaozPwpmh4YMsnWrQm9ZmZMfa5ocbxzbFk6O4bDPEc/iAnA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@sinclair/typebox" "^0.34.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@jest/schemas@^28.1.3":
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@sinclair/typebox" "^0.24.1"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@jest/schemas@^29.0.0":
|
|
|
|
|
version "29.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-3Ab5HgYIIAnS0HjqJHQYZS+zXc4tUmTmBH3z83ajI6afXp8X3ZtdLX+nXx+I7LNkJD7uN9LAVhgnjDgZa2z0kA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@sinclair/typebox" "^0.24.1"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@jest/schemas@^29.4.3":
|
|
|
|
|
version "29.4.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.4.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-VLYKXQmtmuEz6IxJsrZwzG9NvtkQsWNnWMsKxqWNu3+CnfzJQhp0WDDKWLVV9hLKr0l3SLLFRqcYHjhtyuDVxg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@sinclair/typebox" "^0.25.16"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/schemas@^29.6.3":
|
|
|
|
|
version "29.6.3"
|
|
|
|
|
resolved "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz"
|
|
|
|
|
integrity sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@sinclair/typebox" "^0.27.8"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@jest/source-map@^28.1.2":
|
|
|
|
|
version "28.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.13"
|
|
|
|
|
callsites "^3.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@jest/source-map@^29.0.0":
|
|
|
|
|
version "29.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-nOr+0EM8GiHf34mq2GcJyz/gYFyLQ2INDhAylrZJ9mMWoW21mLBfZa0BUVPPMxVYrLjeiRe2Z7kWXOGnS0TFhQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.15"
|
|
|
|
|
callsites "^3.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
"@jest/source-map@^29.4.3":
|
|
|
|
|
version "29.4.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/source-map/-/source-map-29.4.3.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-qyt/mb6rLyd9j1jUts4EQncvS6Yy3PM9HghnNv86QBlV+zdL2inCdK1tuVlL+J+lpiw2BI67qXOrX3UurBqQ1w==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.15"
|
|
|
|
|
callsites "^3.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/source-map@^29.6.3":
|
|
|
|
|
version "29.6.3"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-29.6.3.tgz#d90ba772095cf37a34a5eb9413f1b562a08554c4"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.18"
|
|
|
|
|
callsites "^3.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@jest/test-result@^28.1.3":
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/console" "^28.1.3"
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
"@types/istanbul-lib-coverage" "^2.0.0"
|
|
|
|
|
collect-v8-coverage "^1.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@jest/test-result@^29.0.3":
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-vViVnQjCgTmbhDKEonKJPtcFe9G/CJO4/Np4XwYJah+lF2oI7KKeRp8t1dFvv44wN2NdbDb/qC6pi++Vpp0Dlg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/console" "^29.0.3"
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
"@types/istanbul-lib-coverage" "^2.0.0"
|
|
|
|
|
collect-v8-coverage "^1.0.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
"@jest/test-result@^29.5.0":
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/test-result/-/test-result-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-fGl4rfitnbfLsrfx1uUpDEESS7zM8JdgZgOCQuxQvL1Sn/I6ijeAVQWGfXI9zb1i9Mzo495cIpVZhA0yr60PkQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/console" "^29.5.0"
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@types/istanbul-lib-coverage" "^2.0.0"
|
|
|
|
|
collect-v8-coverage "^1.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/test-result@^29.7.0":
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-29.7.0.tgz#8db9a80aa1a097bb2262572686734baed9b1657c"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/console" "^29.7.0"
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
"@types/istanbul-lib-coverage" "^2.0.0"
|
|
|
|
|
collect-v8-coverage "^1.0.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@jest/test-sequencer@^28.1.3":
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/test-result" "^28.1.3"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-haste-map "^28.1.3"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@jest/test-sequencer@^29.0.3":
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Hf4+xYSWZdxTNnhDykr8JBs0yBN/nxOXyUQWfotBUqqy0LF9vzcFB0jm/EDNZCx587znLWTIgxcokW7WeZMobQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/test-result" "^29.0.3"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-haste-map "^29.0.3"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
"@jest/test-sequencer@^29.5.0":
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-yPafQEcKjkSfDXyvtgiV4pevSeyuA6MQr6ZIdVkWJly9vkqjnFfcfhRQqpD5whjoU8EORki752xQmjaqoFjzMQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/test-result" "^29.5.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-haste-map "^29.5.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/test-sequencer@^29.7.0":
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz#6cef977ce1d39834a3aea887a1726628a6f072ce"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/test-result" "^29.7.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-haste-map "^29.7.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@jest/transform@^28.1.3":
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.11.6"
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.13"
|
|
|
|
|
babel-plugin-istanbul "^6.1.1"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
convert-source-map "^1.4.0"
|
|
|
|
|
fast-json-stable-stringify "^2.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-haste-map "^28.1.3"
|
|
|
|
|
jest-regex-util "^28.0.2"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
pirates "^4.0.4"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
write-file-atomic "^4.0.1"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@jest/transform@^29.0.3":
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-C5ihFTRYaGDbi/xbRQRdbo5ddGtI4VSpmL6AIcZxdhwLbXMa7PcXxxqyI91vGOFHnn5aVM3WYnYKCHEqmLVGzg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.11.6"
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.15"
|
|
|
|
|
babel-plugin-istanbul "^6.1.1"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
convert-source-map "^1.4.0"
|
|
|
|
|
fast-json-stable-stringify "^2.1.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-haste-map "^29.0.3"
|
|
|
|
|
jest-regex-util "^29.0.0"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
pirates "^4.0.4"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
write-file-atomic "^4.0.1"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
"@jest/transform@^29.5.0":
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/transform/-/transform-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-8vbeZWqLJOvHaDfeMuoHITGKSz5qWc9u04lnWrQE3VyuSw604PzQM824ZeX9XSjUCeDiE3GuxZe5UKa8J61NQw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.11.6"
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.15"
|
|
|
|
|
babel-plugin-istanbul "^6.1.1"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
convert-source-map "^2.0.0"
|
|
|
|
|
fast-json-stable-stringify "^2.1.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-haste-map "^29.5.0"
|
|
|
|
|
jest-regex-util "^29.4.3"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
pirates "^4.0.4"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
write-file-atomic "^4.0.2"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/transform@^29.7.0":
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-29.7.0.tgz#df2dd9c346c7d7768b8a06639994640c642e284c"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.11.6"
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.18"
|
|
|
|
|
babel-plugin-istanbul "^6.1.1"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
convert-source-map "^2.0.0"
|
|
|
|
|
fast-json-stable-stringify "^2.1.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-haste-map "^29.7.0"
|
|
|
|
|
jest-regex-util "^29.6.3"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
pirates "^4.0.4"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
write-file-atomic "^4.0.2"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
"@jest/types@30.0.5":
|
|
|
|
|
version "30.0.5"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@jest/types/-/types-30.0.5.tgz#29a33a4c036e3904f1cfd94f6fe77f89d2e1cc05"
|
|
|
|
|
integrity sha512-aREYa3aku9SSnea4aX6bhKn4bgv3AXkgijoQgbYV3yvbiGt6z+MQ85+6mIhx9DsKW2BuB/cLR/A+tcMThx+KLQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/pattern" "30.0.1"
|
|
|
|
|
"@jest/schemas" "30.0.5"
|
|
|
|
|
"@types/istanbul-lib-coverage" "^2.0.6"
|
|
|
|
|
"@types/istanbul-reports" "^3.0.4"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
"@types/yargs" "^17.0.33"
|
|
|
|
|
chalk "^4.1.2"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@jest/types@^24.9.0":
|
|
|
|
|
version "24.9.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/types/-/types-24.9.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-XKK7ze1apu5JWQ5eZjHITP66AX+QsLlbaJRBGYr8pNzwcAE2JVkwnf0yqjHTsDRcjR0mujy/NmZMXw5kl+kGBw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/istanbul-lib-coverage" "^2.0.0"
|
|
|
|
|
"@types/istanbul-reports" "^1.1.1"
|
|
|
|
|
"@types/yargs" "^13.0.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@jest/types@^28.1.3":
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/types/-/types-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/schemas" "^28.1.3"
|
|
|
|
|
"@types/istanbul-lib-coverage" "^2.0.0"
|
|
|
|
|
"@types/istanbul-reports" "^3.0.0"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
"@types/yargs" "^17.0.8"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/types@^29.0.3", "@jest/types@^29.6.3":
|
|
|
|
|
version "29.6.3"
|
|
|
|
|
resolved "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz"
|
|
|
|
|
integrity sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/schemas" "^29.6.3"
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/istanbul-lib-coverage" "^2.0.0"
|
|
|
|
|
"@types/istanbul-reports" "^3.0.0"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
"@types/yargs" "^17.0.8"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
"@jest/types@^29.5.0":
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jest/types/-/types-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-qbu7kN6czmVRc3xWFQcAN03RAUamgppVUdXrvl1Wr3jlNF93o9mJbGcDWrwGB6ht44u7efB1qCFgVQmca24Uog==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/schemas" "^29.4.3"
|
|
|
|
|
"@types/istanbul-lib-coverage" "^2.0.0"
|
|
|
|
|
"@types/istanbul-reports" "^3.0.0"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
"@types/yargs" "^17.0.8"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
"@jridgewell/gen-mapping@^0.3.2":
|
|
|
|
|
version "0.3.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jridgewell/set-array" "^1.2.1"
|
|
|
|
|
"@jridgewell/sourcemap-codec" "^1.4.10"
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.24"
|
|
|
|
|
|
2024-04-02 12:13:38 -04:00
|
|
|
"@jridgewell/gen-mapping@^0.3.5":
|
|
|
|
|
version "0.3.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz"
|
2024-04-02 12:13:38 -04:00
|
|
|
integrity sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jridgewell/set-array" "^1.2.1"
|
|
|
|
|
"@jridgewell/sourcemap-codec" "^1.4.10"
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.24"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jridgewell/resolve-uri@3.1.0", "@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0":
|
2021-05-11 16:10:34 -07:00
|
|
|
version "3.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==
|
|
|
|
|
|
2024-04-02 12:13:38 -04:00
|
|
|
"@jridgewell/set-array@^1.2.1":
|
|
|
|
|
version "1.2.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz"
|
2024-04-02 12:13:38 -04:00
|
|
|
integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jridgewell/sourcemap-codec@1.4.14", "@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14":
|
2021-05-11 16:10:34 -07:00
|
|
|
version "1.4.14"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==
|
|
|
|
|
|
|
|
|
|
"@jridgewell/trace-mapping@0.3.9":
|
|
|
|
|
version "0.3.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jridgewell/resolve-uri" "^3.0.3"
|
|
|
|
|
"@jridgewell/sourcemap-codec" "^1.4.10"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.15", "@jridgewell/trace-mapping@^0.3.18", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25":
|
|
|
|
|
version "0.3.25"
|
|
|
|
|
resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz"
|
|
|
|
|
integrity sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jridgewell/resolve-uri" "^3.1.0"
|
|
|
|
|
"@jridgewell/sourcemap-codec" "^1.4.14"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@jridgewell/trace-mapping@^0.3.13":
|
|
|
|
|
version "0.3.18"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jridgewell/resolve-uri" "3.1.0"
|
|
|
|
|
"@jridgewell/sourcemap-codec" "1.4.14"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
"@modelcontextprotocol/sdk@^1.9.0":
|
|
|
|
|
version "1.9.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@modelcontextprotocol/sdk/-/sdk-1.9.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-Jq2EUCQpe0iyO5FGpzVYDNFR6oR53AIrwph9yWl7uSc7IWUMsrmpmSaTGra5hQNunXpM+9oit85p924jWuHzUA==
|
|
|
|
|
dependencies:
|
|
|
|
|
content-type "^1.0.5"
|
|
|
|
|
cors "^2.8.5"
|
|
|
|
|
cross-spawn "^7.0.3"
|
|
|
|
|
eventsource "^3.0.2"
|
|
|
|
|
express "^5.0.1"
|
|
|
|
|
express-rate-limit "^7.5.0"
|
|
|
|
|
pkce-challenge "^5.0.0"
|
|
|
|
|
raw-body "^3.0.0"
|
|
|
|
|
zod "^3.23.8"
|
|
|
|
|
zod-to-json-schema "^3.24.1"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
"@nodelib/fs.scandir@2.1.5":
|
|
|
|
|
version "2.1.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@nodelib/fs.stat" "2.0.5"
|
|
|
|
|
run-parallel "^1.1.9"
|
|
|
|
|
|
|
|
|
|
"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
|
|
|
|
|
version "2.0.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
|
|
|
|
|
|
2023-02-09 11:58:06 -08:00
|
|
|
"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8":
|
2022-10-19 13:00:47 -07:00
|
|
|
version "1.2.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@nodelib/fs.scandir" "2.1.5"
|
|
|
|
|
fastq "^1.6.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@parcel/watcher@^2.1.0":
|
|
|
|
|
version "2.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.1.0.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-8s8yYjd19pDSsBpbkOHnT6Z2+UJSuLQx61pCFM0s5wSRvKCEMDjd/cHY3/GI1szHIWbpXpsJdg3V6ISGGx9xDw==
|
|
|
|
|
dependencies:
|
|
|
|
|
is-glob "^4.0.3"
|
|
|
|
|
micromatch "^4.0.5"
|
|
|
|
|
node-addon-api "^3.2.1"
|
|
|
|
|
node-gyp-build "^4.3.0"
|
|
|
|
|
|
2024-03-11 13:55:24 -04:00
|
|
|
"@pkgjs/parseargs@^0.11.0":
|
|
|
|
|
version "0.11.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@puppeteer/browsers@2.10.2":
|
|
|
|
|
version "2.10.2"
|
|
|
|
|
resolved "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.10.2.tgz"
|
|
|
|
|
integrity sha512-i4Ez+s9oRWQbNjtI/3+jxr7OH508mjAKvza0ekPJem0ZtmsYHP3B5dq62+IaBHKaGCOuqJxXzvFLUhJvQ6jtsQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
debug "^4.4.0"
|
|
|
|
|
extract-zip "^2.0.1"
|
|
|
|
|
progress "^2.0.3"
|
|
|
|
|
proxy-agent "^6.5.0"
|
|
|
|
|
semver "^7.7.1"
|
|
|
|
|
tar-fs "^3.0.8"
|
|
|
|
|
yargs "^17.7.2"
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
"@rollup/rollup-android-arm-eabi@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.34.9.tgz#661a45a4709c70e59e596ec78daa9cb8b8d27604"
|
|
|
|
|
integrity sha512-qZdlImWXur0CFakn2BJ2znJOdqYZKiedEPEVNTBrpfPjc/YuTGcaYZcdmNFTkUj3DU0ZM/AElcM8Ybww3xVLzA==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-android-arm64@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.34.9.tgz#128fe8dd510d880cf98b4cb6c7add326815a0c4b"
|
|
|
|
|
integrity sha512-4KW7P53h6HtJf5Y608T1ISKvNIYLWRKMvfnG0c44M6In4DQVU58HZFEVhWINDZKp7FZps98G3gxwC1sb0wXUUg==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-darwin-arm64@4.34.9":
|
|
|
|
|
version "4.34.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.34.9.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-0CY3/K54slrzLDjOA7TOjN1NuLKERBgk9nY5V34mhmuu673YNb+7ghaDUs6N0ujXR7fz5XaS5Aa6d2TNxZd0OQ==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-darwin-x64@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.34.9.tgz#c2fe3d85fffe47f0ed0f076b3563ada22c8af19c"
|
|
|
|
|
integrity sha512-eOojSEAi/acnsJVYRxnMkPFqcxSMFfrw7r2iD9Q32SGkb/Q9FpUY1UlAu1DH9T7j++gZ0lHjnm4OyH2vCI7l7Q==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-freebsd-arm64@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.34.9.tgz#d95bd8f6eaaf829781144fc8bd2d5d71d9f6a9f5"
|
|
|
|
|
integrity sha512-2lzjQPJbN5UnHm7bHIUKFMulGTQwdvOkouJDpPysJS+QFBGDJqcfh+CxxtG23Ik/9tEvnebQiylYoazFMAgrYw==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-freebsd-x64@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.34.9.tgz#c3576c6011656e4966ded29f051edec636b44564"
|
|
|
|
|
integrity sha512-SLl0hi2Ah2H7xQYd6Qaiu01kFPzQ+hqvdYSoOtHYg/zCIFs6t8sV95kaoqjzjFwuYQLtOI0RZre/Ke0nPaQV+g==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-linux-arm-gnueabihf@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.34.9.tgz#48c87d0dee4f8dc9591a416717f91b4a89d77e3d"
|
|
|
|
|
integrity sha512-88I+D3TeKItrw+Y/2ud4Tw0+3CxQ2kLgu3QvrogZ0OfkmX/DEppehus7L3TS2Q4lpB+hYyxhkQiYPJ6Mf5/dPg==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-linux-arm-musleabihf@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.34.9.tgz#f4c4e7c03a7767f2e5aa9d0c5cfbf5c0f59f2d41"
|
|
|
|
|
integrity sha512-3qyfWljSFHi9zH0KgtEPG4cBXHDFhwD8kwg6xLfHQ0IWuH9crp005GfoUUh/6w9/FWGBwEHg3lxK1iHRN1MFlA==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-linux-arm64-gnu@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.34.9.tgz#1015c9d07a99005025d13b8622b7600029d0b52f"
|
|
|
|
|
integrity sha512-6TZjPHjKZUQKmVKMUowF3ewHxctrRR09eYyvT5eFv8w/fXarEra83A2mHTVJLA5xU91aCNOUnM+DWFMSbQ0Nxw==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-linux-arm64-musl@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.34.9.tgz#8f895eb5577748fc75af21beae32439626e0a14c"
|
|
|
|
|
integrity sha512-LD2fytxZJZ6xzOKnMbIpgzFOuIKlxVOpiMAXawsAZ2mHBPEYOnLRK5TTEsID6z4eM23DuO88X0Tq1mErHMVq0A==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-linux-loongarch64-gnu@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.34.9.tgz#c9cd5dbbdc6b3ca4dbeeb0337498cf31949004a0"
|
|
|
|
|
integrity sha512-dRAgTfDsn0TE0HI6cmo13hemKpVHOEyeciGtvlBTkpx/F65kTvShtY/EVyZEIfxFkV5JJTuQ9tP5HGBS0hfxIg==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-linux-powerpc64le-gnu@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.34.9.tgz#7ebb5b4441faa17843a210f7d0583a20c93b40e4"
|
|
|
|
|
integrity sha512-PHcNOAEhkoMSQtMf+rJofwisZqaU8iQ8EaSps58f5HYll9EAY5BSErCZ8qBDMVbq88h4UxaNPlbrKqfWP8RfJA==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-linux-riscv64-gnu@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.34.9.tgz#10f5d7349fbd2fe78f9e36ecc90aab3154435c8d"
|
|
|
|
|
integrity sha512-Z2i0Uy5G96KBYKjeQFKbbsB54xFOL5/y1P5wNBsbXB8yE+At3oh0DVMjQVzCJRJSfReiB2tX8T6HUFZ2k8iaKg==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-linux-s390x-gnu@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.34.9.tgz#196347d2fa20593ab09d0b7e2589fb69bdf742c6"
|
|
|
|
|
integrity sha512-U+5SwTMoeYXoDzJX5dhDTxRltSrIax8KWwfaaYcynuJw8mT33W7oOgz0a+AaXtGuvhzTr2tVKh5UO8GVANTxyQ==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-linux-x64-gnu@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.34.9.tgz#7193cbd8d128212b8acda37e01b39d9e96259ef8"
|
|
|
|
|
integrity sha512-FwBHNSOjUTQLP4MG7y6rR6qbGw4MFeQnIBrMe161QGaQoBQLqSUEKlHIiVgF3g/mb3lxlxzJOpIBhaP+C+KP2A==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-linux-x64-musl@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.34.9.tgz#29a6867278ca0420b891574cfab98ecad70c59d1"
|
|
|
|
|
integrity sha512-cYRpV4650z2I3/s6+5/LONkjIz8MBeqrk+vPXV10ORBnshpn8S32bPqQ2Utv39jCiDcO2eJTuSlPXpnvmaIgRA==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-win32-arm64-msvc@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.34.9.tgz#89427dcac0c8e3a6d32b13a03a296a275d0de9a9"
|
|
|
|
|
integrity sha512-z4mQK9dAN6byRA/vsSgQiPeuO63wdiDxZ9yg9iyX2QTzKuQM7T4xlBoeUP/J8uiFkqxkcWndWi+W7bXdPbt27Q==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-win32-ia32-msvc@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.34.9.tgz#ecb9711ba2b6d2bf6ee51265abe057ab90913deb"
|
|
|
|
|
integrity sha512-KB48mPtaoHy1AwDNkAJfHXvHp24H0ryZog28spEs0V48l3H1fr4i37tiyHsgKZJnCmvxsbATdZGBpbmxTE3a9w==
|
|
|
|
|
|
|
|
|
|
"@rollup/rollup-win32-x64-msvc@4.34.9":
|
|
|
|
|
version "4.34.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.34.9.tgz#1973871850856ae72bc678aeb066ab952330e923"
|
|
|
|
|
integrity sha512-AyleYRPU7+rgkMWbEh71fQlrzRfeP6SyMnRf9XX4fCdDPAJumdSBqYEcWPMzVQ4ScAl7E4oFfK0GUVn77xSwbw==
|
|
|
|
|
|
2025-04-24 14:57:44 -04:00
|
|
|
"@selderee/plugin-htmlparser2@^0.11.0":
|
|
|
|
|
version "0.11.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@selderee/plugin-htmlparser2/-/plugin-htmlparser2-0.11.0.tgz"
|
2025-04-24 14:57:44 -04:00
|
|
|
integrity sha512-P33hHGdldxGabLFjPPpaTxVolMrzrcegejx+0GxjrIb9Zv48D8yAIA/QTDR2dFl7Uz7urX8aX6+5bCZslr+gWQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
domhandler "^5.0.3"
|
|
|
|
|
selderee "^0.11.0"
|
|
|
|
|
|
2024-05-21 01:41:16 -04:00
|
|
|
"@sideway/address@^4.1.5":
|
|
|
|
|
version "4.1.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@sideway/address/-/address-4.1.5.tgz"
|
2024-05-21 01:41:16 -04:00
|
|
|
integrity sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@hapi/hoek" "^9.0.0"
|
|
|
|
|
|
|
|
|
|
"@sideway/formula@^3.0.1":
|
|
|
|
|
version "3.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz"
|
2024-05-21 01:41:16 -04:00
|
|
|
integrity sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==
|
|
|
|
|
|
|
|
|
|
"@sideway/pinpoint@^2.0.0":
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz"
|
2024-05-21 01:41:16 -04:00
|
|
|
integrity sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@sinclair/typebox@^0.24.1":
|
|
|
|
|
version "0.24.42"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.24.42.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-d+2AtrHGyWek2u2ITF0lHRIv6Tt7X0dEHW+0rP+5aDCEjC3fiN2RBjrLD0yU0at52BcZbRGxLbAtXiR0hFCjYw==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@sinclair/typebox@^0.25.16":
|
|
|
|
|
version "0.25.24"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.25.24.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-XJfwUVUKDHF5ugKwIcxEgc9k8b7HbznCp6eUfWgu710hMPNIO4aw4/zB5RogDQz8nd6gyCDpU9O/m6qYEWY6yQ==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@sinclair/typebox@^0.27.8":
|
|
|
|
|
version "0.27.8"
|
|
|
|
|
resolved "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz"
|
|
|
|
|
integrity sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
"@sinclair/typebox@^0.34.0":
|
|
|
|
|
version "0.34.38"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.34.38.tgz#2365df7c23406a4d79413a766567bfbca708b49d"
|
|
|
|
|
integrity sha512-HpkxMmc2XmZKhvaKIZZThlHmx1L0I/V1hWK1NubtlFnr6ZqdiOpV72TKudZUNQjZNsyDBay72qFEhEvb+bcwcA==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@sinonjs/commons@^1.7.0":
|
|
|
|
|
version "1.8.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
type-detect "4.0.8"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
"@sinonjs/commons@^3.0.0":
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==
|
|
|
|
|
dependencies:
|
|
|
|
|
type-detect "4.0.8"
|
|
|
|
|
|
|
|
|
|
"@sinonjs/fake-timers@^10.0.2":
|
|
|
|
|
version "10.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.2.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-OPwQlEdg40HAj5KNF8WW6q2KG4Z+cBCZb3m4ninfTZKaBmbIJodviQsDBoYMPHkOyJJMHnOJo5j2+LKDOhOACg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@sinonjs/commons" "^3.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@sinonjs/fake-timers@^9.1.2":
|
|
|
|
|
version "9.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@sinonjs/commons" "^1.7.0"
|
|
|
|
|
|
|
|
|
|
"@testing-library/dom@^8.5.0":
|
|
|
|
|
version "8.18.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@testing-library/dom/-/dom-8.18.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-oEvsm2B/WtcHKE+IcEeeCqNU/ltFGaVyGbpcm4g/2ytuT49jrlH9x5qRKL/H3A6yfM4YAbSbC0ceT5+9CEXnLg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/code-frame" "^7.10.4"
|
|
|
|
|
"@babel/runtime" "^7.12.5"
|
|
|
|
|
"@types/aria-query" "^4.2.0"
|
|
|
|
|
aria-query "^5.0.0"
|
|
|
|
|
chalk "^4.1.0"
|
|
|
|
|
dom-accessibility-api "^0.5.9"
|
|
|
|
|
lz-string "^1.4.4"
|
|
|
|
|
pretty-format "^27.0.2"
|
|
|
|
|
|
|
|
|
|
"@testing-library/react@^13.4.0":
|
|
|
|
|
version "13.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/runtime" "^7.12.5"
|
|
|
|
|
"@testing-library/dom" "^8.5.0"
|
|
|
|
|
"@types/react-dom" "^18.0.0"
|
|
|
|
|
|
|
|
|
|
"@tootallnate/once@2":
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@tootallnate/quickjs-emscripten@^0.23.0":
|
|
|
|
|
version "0.23.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz"
|
|
|
|
|
integrity sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@tsconfig/node10@^1.0.7":
|
|
|
|
|
version "1.0.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==
|
|
|
|
|
|
|
|
|
|
"@tsconfig/node12@^1.0.7":
|
|
|
|
|
version "1.0.11"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==
|
|
|
|
|
|
|
|
|
|
"@tsconfig/node14@^1.0.0":
|
|
|
|
|
version "1.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==
|
|
|
|
|
|
|
|
|
|
"@tsconfig/node16@^1.0.2":
|
|
|
|
|
version "1.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==
|
|
|
|
|
|
2023-08-29 16:51:32 -07:00
|
|
|
"@tsconfig/node18-strictest@^1.0.0":
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@tsconfig/node18-strictest/-/node18-strictest-1.0.0.tgz"
|
2023-08-29 16:51:32 -07:00
|
|
|
integrity sha512-bOuNKwO4Fzbt+Su5wqI9zNHwx5C25gLnutwVQA1sBZk0cW8UjVPVcwzIUhJIIJDUx7zDEbAwdCD2HfvIsV8dYg==
|
|
|
|
|
|
2024-04-02 10:32:23 -04:00
|
|
|
"@tsconfig/strictest@^2.0.5":
|
|
|
|
|
version "2.0.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@tsconfig/strictest/-/strictest-2.0.5.tgz"
|
2024-04-02 10:32:23 -04:00
|
|
|
integrity sha512-ec4tjL2Rr0pkZ5hww65c+EEPYwxOi4Ryv+0MtjeaSQRJyq322Q27eOQiFbuNgw2hpL4hB1/W/HBGk3VKS43osg==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/aria-query@^4.2.0":
|
|
|
|
|
version "4.2.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/aria-query/-/aria-query-4.2.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-HnYpAE1Y6kRyKM/XkEuiRQhTHvkzMBurTHnpFLYLBGPIylZNPs9jJcuOOYWxPLJCSEtmZT0Y8rHDokKN7rRTig==
|
|
|
|
|
|
2024-02-15 18:42:21 -05:00
|
|
|
"@types/babel__code-frame@^7.0.6":
|
|
|
|
|
version "7.0.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/babel__code-frame/-/babel__code-frame-7.0.6.tgz"
|
2024-02-15 18:42:21 -05:00
|
|
|
integrity sha512-Anitqkl3+KrzcW2k77lRlg/GfLZLWXBuNgbEcIOU6M92yw42vsd3xV/Z/yAHEj8m+KUjL6bWOVOFqX8PFPJ4LA==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/babel__core@^7.1.14":
|
|
|
|
|
version "7.1.19"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/parser" "^7.1.0"
|
|
|
|
|
"@babel/types" "^7.0.0"
|
|
|
|
|
"@types/babel__generator" "*"
|
|
|
|
|
"@types/babel__template" "*"
|
|
|
|
|
"@types/babel__traverse" "*"
|
|
|
|
|
|
|
|
|
|
"@types/babel__generator@*":
|
|
|
|
|
version "7.6.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/types" "^7.0.0"
|
|
|
|
|
|
|
|
|
|
"@types/babel__template@*":
|
|
|
|
|
version "7.4.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/parser" "^7.1.0"
|
|
|
|
|
"@babel/types" "^7.0.0"
|
|
|
|
|
|
|
|
|
|
"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6":
|
|
|
|
|
version "7.18.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.18.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-FcFaxOr2V5KZCviw1TnutEMVUVsGt4D2hP1TAfXZAMKuHYW3xQhe3jTxNPWutgCJ3/X1c5yX8ZoGVEItxKbwBg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/types" "^7.3.0"
|
|
|
|
|
|
2025-02-12 11:59:56 -05:00
|
|
|
"@types/eslint@^8.56.12":
|
|
|
|
|
version "8.56.12"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.12.tgz"
|
2025-02-12 11:59:56 -05:00
|
|
|
integrity sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g==
|
2023-06-05 13:35:39 -04:00
|
|
|
dependencies:
|
|
|
|
|
"@types/estree" "*"
|
|
|
|
|
"@types/json-schema" "*"
|
|
|
|
|
|
2025-01-02 16:59:56 -05:00
|
|
|
"@types/estree@*":
|
2024-04-02 12:13:39 -04:00
|
|
|
version "1.0.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz"
|
2024-04-02 12:13:39 -04:00
|
|
|
integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
"@types/estree@1.0.6", "@types/estree@^1.0.6":
|
2025-02-25 12:08:46 -05:00
|
|
|
version "1.0.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==
|
|
|
|
|
|
2023-11-09 18:55:05 -05:00
|
|
|
"@types/fbt@^1.0.4":
|
|
|
|
|
version "1.0.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/fbt/-/fbt-1.0.4.tgz"
|
2023-11-09 18:55:05 -05:00
|
|
|
integrity sha512-KBaaLu4hEIBaCyQ3L2KP6JujD+tmMuPZ10YpgmGgqMaM8TESYR2TOJNvG+GYiWUhGkp38Y+62VZ1wJ97MPvt+A==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/react" "*"
|
|
|
|
|
|
2023-05-08 12:10:43 -07:00
|
|
|
"@types/glob@^8.1.0":
|
|
|
|
|
version "8.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/glob/-/glob-8.1.0.tgz"
|
2023-05-08 12:10:43 -07:00
|
|
|
integrity sha512-IO+MJPVhoqz+28h1qLAcBEH2+xHMK6MTyHJc7MTnnYb6wsoLR29POVGJ7LycmVXIqyy/4/2ShP5sUwTXuOwb/w==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/minimatch" "^5.1.2"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/graceful-fs@^4.1.3":
|
|
|
|
|
version "4.1.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
|
2025-04-24 14:57:44 -04:00
|
|
|
"@types/html-to-text@^9.0.4":
|
|
|
|
|
version "9.0.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/html-to-text/-/html-to-text-9.0.4.tgz"
|
2025-04-24 14:57:44 -04:00
|
|
|
integrity sha512-pUY3cKH/Nm2yYrEmDlPR1mR7yszjGx4DrwPjQ702C4/D5CwHuZTgZdIdwPkRbcuhs7BAh2L5rg3CL5cbRiGTCQ==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/invariant@^2.2.35":
|
|
|
|
|
version "2.2.35"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/invariant/-/invariant-2.2.35.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-DxX1V9P8zdJPYQat1gHyY0xj3efl8gnMVjiM9iCY6y27lj+PoQWkgjt8jDqmovPqULkKVpKRg8J36iQiA+EtEg==
|
|
|
|
|
|
|
|
|
|
"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1":
|
|
|
|
|
version "2.0.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.4.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-z/QT1XN4K4KYuslS23k62yDIDLwLFkzxOuMplDtObz0+y7VqJCaO2o+SPwHCvLFZh7xazvvoor2tA/hPz9ee7g==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
"@types/istanbul-lib-coverage@^2.0.6":
|
|
|
|
|
version "2.0.6"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7"
|
|
|
|
|
integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/istanbul-lib-report@*":
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/istanbul-lib-coverage" "*"
|
|
|
|
|
|
|
|
|
|
"@types/istanbul-reports@^1.1.1":
|
|
|
|
|
version "1.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-1.1.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-P/W9yOX/3oPZSpaYOCQzGqgCQRXn0FFO/V8bWrCQs+wLmvVVxk6CRBXALEvNs9OHIatlnlFokfhuDo2ug01ciw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/istanbul-lib-coverage" "*"
|
|
|
|
|
"@types/istanbul-lib-report" "*"
|
|
|
|
|
|
|
|
|
|
"@types/istanbul-reports@^3.0.0":
|
|
|
|
|
version "3.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-c3mAZEuK0lvBp8tmuL74XRKn1+y2dcwOUpH7x4WrF6gk1GIgiluDRgMYQtw2OFcBvAJWlt6ASU3tSqxp0Uu0Aw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/istanbul-lib-report" "*"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
"@types/istanbul-reports@^3.0.4":
|
|
|
|
|
version "3.0.4"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54"
|
|
|
|
|
integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/istanbul-lib-report" "*"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@types/jest@^28.1.6":
|
|
|
|
|
version "28.1.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/jest/-/jest-28.1.8.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-8TJkV++s7B6XqnDrzR1m/TT0A0h948Pnl/097veySPN67VRAgQ4gZ7n2KfJo2rVq6njQjdxU3GCCyDvAeuHoiw==
|
|
|
|
|
dependencies:
|
|
|
|
|
expect "^28.0.0"
|
|
|
|
|
pretty-format "^28.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/jest@^29.0.3":
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/jest/-/jest-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-F6ukyCTwbfsEX5F2YmVYmM5TcTHy1q9P5rWlRbrk56KyMh3v9xRGUO3aa8+SkvMi0SHXtASJv1283enXimC0Og==
|
|
|
|
|
dependencies:
|
|
|
|
|
expect "^29.0.0"
|
|
|
|
|
pretty-format "^29.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@types/jest@^29.5.14":
|
|
|
|
|
version "29.5.14"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-29.5.14.tgz#2b910912fa1d6856cadcd0c1f95af7df1d6049e5"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-ZN+4sdnLUbo8EVvVc2ao0GFW6oVrQRPn4K2lglySj7APvSrgzxHiNNK99us4WDMi57xxA2yggblIAMNhXOotLQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
expect "^29.0.0"
|
|
|
|
|
pretty-format "^29.0.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
"@types/jest@^30.0.0":
|
|
|
|
|
version "30.0.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@types/jest/-/jest-30.0.0.tgz#5e85ae568006712e4ad66f25433e9bdac8801f1d"
|
|
|
|
|
integrity sha512-XTYugzhuwqWjws0CVz8QpM36+T+Dz5mTEBKhNs/esGLnCIlGdRy+Dq78NRjd7ls7r8BC8ZRMOrKlkO1hU0JOwA==
|
|
|
|
|
dependencies:
|
|
|
|
|
expect "^30.0.0"
|
|
|
|
|
pretty-format "^30.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/jsdom@^20.0.0":
|
|
|
|
|
version "20.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/jsdom/-/jsdom-20.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-YfAchFs0yM1QPDrLm2VHe+WHGtqms3NXnXAMolrgrVP6fgBHHXy1ozAbo/dFtPNtZC/m66bPiCTWYmqp1F14gA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
"@types/tough-cookie" "*"
|
|
|
|
|
parse5 "^7.0.0"
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
"@types/json-schema@*", "@types/json-schema@^7.0.12", "@types/json-schema@^7.0.15":
|
2024-03-25 15:00:31 -04:00
|
|
|
version "7.0.15"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz"
|
2024-03-25 15:00:31 -04:00
|
|
|
integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==
|
2023-06-05 13:35:39 -04:00
|
|
|
|
2023-05-08 12:10:43 -07:00
|
|
|
"@types/minimatch@^5.1.2":
|
|
|
|
|
version "5.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/minimatch/-/minimatch-5.1.2.tgz"
|
2023-05-08 12:10:43 -07:00
|
|
|
integrity sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
"@types/mocha@^10.0.10", "@types/mocha@^10.0.2":
|
|
|
|
|
version "10.0.10"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/node@*", "@types/node@^18.7.18":
|
|
|
|
|
version "18.7.19"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/node/-/node-18.7.19.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Sq1itGUKUX1ap7GgZlrzdBydjbsJL/NSQt/4wkAxUJ7/OS5c2WkoN6WSpWc2Yc5wtKMZOUA0VCs/j2XJadN3HA==
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
"@types/node@^20":
|
|
|
|
|
version "20.17.10"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/node/-/node-20.17.10.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-/jrvh5h6NXhEauFFexRin69nA0uHJ5gwk4iDivp/DeoEua3uwCUto6PC86IpRITBOs4+6i2I56K5x5b6WYGXHA==
|
|
|
|
|
dependencies:
|
|
|
|
|
undici-types "~6.19.2"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
"@types/node@^20.2.5":
|
|
|
|
|
version "20.2.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/node/-/node-20.2.5.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-JJulVEQXmiY9Px5axXHeYGLSjhkZEnD+MDPDGbCbIAbMslkKwmygtZFy1X6s/075Yo94sf8GuSlFfPzysQrWZQ==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/prettier@^2.1.5":
|
|
|
|
|
version "2.7.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-RI1L7N4JnW5gQw2spvL7Sllfuf1SaHdrZpCHiBlCXjIlufi1SMNnbu2teze3/QE67Fg2tBlH7W+mi4hVNk4p0A==
|
|
|
|
|
|
|
|
|
|
"@types/prop-types@*":
|
|
|
|
|
version "15.7.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.5.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
|
|
|
|
|
|
|
|
|
|
"@types/react-dom@^18.0.0":
|
|
|
|
|
version "18.0.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/react" "*"
|
|
|
|
|
|
|
|
|
|
"@types/react@*":
|
|
|
|
|
version "18.0.21"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/react/-/react-18.0.21.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-7QUCOxvFgnD5Jk8ZKlUAhVcRj7GuJRjnjjiY/IUBWKgOlnvDvTMLD4RTF7NPyVmbRhNrbomZiOepg7M/2Kj1mA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/prop-types" "*"
|
|
|
|
|
"@types/scheduler" "*"
|
|
|
|
|
csstype "^3.0.2"
|
|
|
|
|
|
|
|
|
|
"@types/scheduler@*":
|
|
|
|
|
version "0.16.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==
|
|
|
|
|
|
2024-04-02 10:32:23 -04:00
|
|
|
"@types/semver@^7.5.0":
|
|
|
|
|
version "7.5.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz"
|
2024-04-02 10:32:23 -04:00
|
|
|
integrity sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==
|
2023-02-09 11:58:06 -08:00
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/stack-utils@^2.0.0":
|
|
|
|
|
version "2.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Hl219/BT5fLAaz6NDkSuhzasy49dwQS/DSdu4MdggFB8zcXv7vflBI3xp7FEmkmdDkBUI2bPUNeMttp2knYdxw==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
"@types/stack-utils@^2.0.3":
|
|
|
|
|
version "2.0.3"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8"
|
|
|
|
|
integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/tough-cookie@*":
|
|
|
|
|
version "4.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/tough-cookie/-/tough-cookie-4.0.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Q5vtl1W5ue16D+nIaW8JWebSSraJVlK+EthKn7e7UcD4KWsaSJ8BqGPXNaPghgtcn/fhvrN17Tv8ksUsQpiplw==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
"@types/triple-beam@^1.3.2":
|
|
|
|
|
version "1.3.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
"@types/vscode@^1.96.0":
|
|
|
|
|
version "1.96.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/vscode/-/vscode-1.96.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-qvZbSZo+K4ZYmmDuaodMbAa67Pl6VDQzLKFka6rq+3WUTY4Kro7Bwoi0CuZLO/wema0ygcmpwow7zZfPJTs5jg==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/yargs-parser@*":
|
|
|
|
|
version "21.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-iO9ZQHkZxHn4mSakYV0vFHAVDyEOIJQrV2uZ06HxEPcx+mt8swXoZHIbaaJ2crJYFfErySgktuTZ3BeLz+XmFA==
|
|
|
|
|
|
|
|
|
|
"@types/yargs@^13.0.0":
|
|
|
|
|
version "13.0.12"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/yargs/-/yargs-13.0.12.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-qCxJE1qgz2y0hA4pIxjBR+PelCH0U5CK1XJXFwCNqfmliatKp47UCXXE9Dyk1OXBDLvsCF57TqQEJaeLfDYEOQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/yargs-parser" "*"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
"@types/yargs@^17.0.33":
|
|
|
|
|
version "17.0.33"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d"
|
|
|
|
|
integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/yargs-parser" "*"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/yargs@^17.0.8":
|
|
|
|
|
version "17.0.13"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.13.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-9sWaruZk2JGxIQU+IhI1fhPYRcQ0UuTNuKuCW9bR5fp7qi2Llf7WDzNa17Cy7TKnh3cdxDOiyTu6gaLS0eDatg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/yargs-parser" "*"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
"@types/yauzl@^2.9.1":
|
|
|
|
|
version "2.10.3"
|
|
|
|
|
resolved "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz"
|
|
|
|
|
integrity sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
"@typescript-eslint/eslint-plugin@8.18.1":
|
|
|
|
|
version "8.18.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.18.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-Ncvsq5CT3Gvh+uJG0Lwlho6suwDfUXH0HztslDf5I+F2wAFAZMRwYLEorumpKLzmO2suAXZ/td1tBg4NZIi9CQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@eslint-community/regexpp" "^4.10.0"
|
|
|
|
|
"@typescript-eslint/scope-manager" "8.18.1"
|
|
|
|
|
"@typescript-eslint/type-utils" "8.18.1"
|
|
|
|
|
"@typescript-eslint/utils" "8.18.1"
|
|
|
|
|
"@typescript-eslint/visitor-keys" "8.18.1"
|
|
|
|
|
graphemer "^1.4.0"
|
|
|
|
|
ignore "^5.3.1"
|
|
|
|
|
natural-compare "^1.4.0"
|
|
|
|
|
ts-api-utils "^1.3.0"
|
|
|
|
|
|
2024-04-02 10:32:23 -04:00
|
|
|
"@typescript-eslint/eslint-plugin@^7.4.0":
|
|
|
|
|
version "7.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.4.0.tgz"
|
2024-04-02 10:32:23 -04:00
|
|
|
integrity sha512-yHMQ/oFaM7HZdVrVm/M2WHaNPgyuJH4WelkSVEWSSsir34kxW2kDJCxlXRhhGWEsMN0WAW/vLpKfKVcm8k+MPw==
|
2023-02-09 11:58:06 -08:00
|
|
|
dependencies:
|
2024-04-02 10:32:23 -04:00
|
|
|
"@eslint-community/regexpp" "^4.5.1"
|
|
|
|
|
"@typescript-eslint/scope-manager" "7.4.0"
|
|
|
|
|
"@typescript-eslint/type-utils" "7.4.0"
|
|
|
|
|
"@typescript-eslint/utils" "7.4.0"
|
|
|
|
|
"@typescript-eslint/visitor-keys" "7.4.0"
|
2023-02-09 11:58:06 -08:00
|
|
|
debug "^4.3.4"
|
2024-04-02 10:32:23 -04:00
|
|
|
graphemer "^1.4.0"
|
|
|
|
|
ignore "^5.2.4"
|
|
|
|
|
natural-compare "^1.4.0"
|
|
|
|
|
semver "^7.5.4"
|
|
|
|
|
ts-api-utils "^1.0.1"
|
2023-02-09 11:58:06 -08:00
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
"@typescript-eslint/eslint-plugin@^8.7.0":
|
|
|
|
|
version "8.7.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.7.0.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-RIHOoznhA3CCfSTFiB6kBGLQtB/sox+pJ6jeFu6FxJvqL8qRxq/FfGO/UhsGgQM9oGdXkV4xUgli+dt26biB6A==
|
2023-06-05 13:35:39 -04:00
|
|
|
dependencies:
|
2024-09-27 15:15:15 -04:00
|
|
|
"@eslint-community/regexpp" "^4.10.0"
|
|
|
|
|
"@typescript-eslint/scope-manager" "8.7.0"
|
|
|
|
|
"@typescript-eslint/type-utils" "8.7.0"
|
|
|
|
|
"@typescript-eslint/utils" "8.7.0"
|
|
|
|
|
"@typescript-eslint/visitor-keys" "8.7.0"
|
|
|
|
|
graphemer "^1.4.0"
|
|
|
|
|
ignore "^5.3.1"
|
|
|
|
|
natural-compare "^1.4.0"
|
|
|
|
|
ts-api-utils "^1.3.0"
|
2023-06-05 13:35:39 -04:00
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
"@typescript-eslint/parser@8.18.1":
|
|
|
|
|
version "8.18.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.18.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-rBnTWHCdbYM2lh7hjyXqxk70wvon3p2FyaniZuey5TrcGBpfhVp0OxOa6gxr9Q9YhZFKyfbEnxc24ZnVbbUkCA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@typescript-eslint/scope-manager" "8.18.1"
|
|
|
|
|
"@typescript-eslint/types" "8.18.1"
|
|
|
|
|
"@typescript-eslint/typescript-estree" "8.18.1"
|
|
|
|
|
"@typescript-eslint/visitor-keys" "8.18.1"
|
|
|
|
|
debug "^4.3.4"
|
|
|
|
|
|
2024-04-02 10:32:23 -04:00
|
|
|
"@typescript-eslint/parser@^7.4.0":
|
|
|
|
|
version "7.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.4.0.tgz"
|
2024-04-02 10:32:23 -04:00
|
|
|
integrity sha512-ZvKHxHLusweEUVwrGRXXUVzFgnWhigo4JurEj0dGF1tbcGh6buL+ejDdjxOQxv6ytcY1uhun1p2sm8iWStlgLQ==
|
2023-02-09 11:58:06 -08:00
|
|
|
dependencies:
|
2024-04-02 10:32:23 -04:00
|
|
|
"@typescript-eslint/scope-manager" "7.4.0"
|
|
|
|
|
"@typescript-eslint/types" "7.4.0"
|
|
|
|
|
"@typescript-eslint/typescript-estree" "7.4.0"
|
|
|
|
|
"@typescript-eslint/visitor-keys" "7.4.0"
|
2023-02-09 11:58:06 -08:00
|
|
|
debug "^4.3.4"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
"@typescript-eslint/parser@^8.7.0":
|
|
|
|
|
version "8.7.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.7.0.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-lN0btVpj2unxHlNYLI//BQ7nzbMJYBVQX5+pbNXvGYazdlgYonMn4AhhHifQ+J4fGRYA/m1DjaQjx+fDetqBOQ==
|
2023-10-23 15:41:00 +01:00
|
|
|
dependencies:
|
2024-09-27 15:15:15 -04:00
|
|
|
"@typescript-eslint/scope-manager" "8.7.0"
|
|
|
|
|
"@typescript-eslint/types" "8.7.0"
|
|
|
|
|
"@typescript-eslint/typescript-estree" "8.7.0"
|
|
|
|
|
"@typescript-eslint/visitor-keys" "8.7.0"
|
|
|
|
|
debug "^4.3.4"
|
2023-10-23 15:41:00 +01:00
|
|
|
|
2024-04-02 10:32:23 -04:00
|
|
|
"@typescript-eslint/scope-manager@7.4.0":
|
|
|
|
|
version "7.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.4.0.tgz"
|
2024-04-02 10:32:23 -04:00
|
|
|
integrity sha512-68VqENG5HK27ypafqLVs8qO+RkNc7TezCduYrx8YJpXq2QGZ30vmNZGJJJC48+MVn4G2dCV8m5ZTVnzRexTVtw==
|
2023-02-09 11:58:06 -08:00
|
|
|
dependencies:
|
2024-04-02 10:32:23 -04:00
|
|
|
"@typescript-eslint/types" "7.4.0"
|
|
|
|
|
"@typescript-eslint/visitor-keys" "7.4.0"
|
2023-02-09 11:58:06 -08:00
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
"@typescript-eslint/scope-manager@8.18.1":
|
|
|
|
|
version "8.18.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.18.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-HxfHo2b090M5s2+/9Z3gkBhI6xBH8OJCFjH9MhQ+nnoZqxU3wNxkLT+VWXWSFWc3UF3Z+CfPAyqdCTdoXtDPCQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@typescript-eslint/types" "8.18.1"
|
|
|
|
|
"@typescript-eslint/visitor-keys" "8.18.1"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
"@typescript-eslint/scope-manager@8.7.0":
|
|
|
|
|
version "8.7.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.7.0.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-87rC0k3ZlDOuz82zzXRtQ7Akv3GKhHs0ti4YcbAJtaomllXoSO8hi7Ix3ccEvCd824dy9aIX+j3d2UMAfCtVpg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@typescript-eslint/types" "8.7.0"
|
|
|
|
|
"@typescript-eslint/visitor-keys" "8.7.0"
|
|
|
|
|
|
2024-04-02 10:32:23 -04:00
|
|
|
"@typescript-eslint/type-utils@7.4.0":
|
|
|
|
|
version "7.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.4.0.tgz"
|
2024-04-02 10:32:23 -04:00
|
|
|
integrity sha512-247ETeHgr9WTRMqHbbQdzwzhuyaJ8dPTuyuUEMANqzMRB1rj/9qFIuIXK7l0FX9i9FXbHeBQl/4uz6mYuCE7Aw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@typescript-eslint/typescript-estree" "7.4.0"
|
|
|
|
|
"@typescript-eslint/utils" "7.4.0"
|
|
|
|
|
debug "^4.3.4"
|
|
|
|
|
ts-api-utils "^1.0.1"
|
2023-02-09 11:58:06 -08:00
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
"@typescript-eslint/type-utils@8.18.1":
|
|
|
|
|
version "8.18.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.18.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-jAhTdK/Qx2NJPNOTxXpMwlOiSymtR2j283TtPqXkKBdH8OAMmhiUfP0kJjc/qSE51Xrq02Gj9NY7MwK+UxVwHQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@typescript-eslint/typescript-estree" "8.18.1"
|
|
|
|
|
"@typescript-eslint/utils" "8.18.1"
|
|
|
|
|
debug "^4.3.4"
|
|
|
|
|
ts-api-utils "^1.3.0"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
"@typescript-eslint/type-utils@8.7.0":
|
|
|
|
|
version "8.7.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.7.0.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-tl0N0Mj3hMSkEYhLkjREp54OSb/FI6qyCzfiiclvJvOqre6hsZTGSnHtmFLDU8TIM62G7ygEa1bI08lcuRwEnQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@typescript-eslint/typescript-estree" "8.7.0"
|
|
|
|
|
"@typescript-eslint/utils" "8.7.0"
|
|
|
|
|
debug "^4.3.4"
|
|
|
|
|
ts-api-utils "^1.3.0"
|
2023-10-23 15:41:00 +01:00
|
|
|
|
2024-04-02 10:32:23 -04:00
|
|
|
"@typescript-eslint/types@7.4.0":
|
|
|
|
|
version "7.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.4.0.tgz"
|
2024-04-02 10:32:23 -04:00
|
|
|
integrity sha512-mjQopsbffzJskos5B4HmbsadSJQWaRK0UxqQ7GuNA9Ga4bEKeiO6b2DnB6cM6bpc8lemaPseh0H9B/wyg+J7rw==
|
2023-02-09 11:58:06 -08:00
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
"@typescript-eslint/types@8.18.1":
|
|
|
|
|
version "8.18.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.18.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-7uoAUsCj66qdNQNpH2G8MyTFlgerum8ubf21s3TSM3XmKXuIn+H2Sifh/ES2nPOPiYSRJWAk0fDkW0APBWcpfw==
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
"@typescript-eslint/types@8.7.0":
|
|
|
|
|
version "8.7.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.7.0.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-LLt4BLHFwSfASHSF2K29SZ+ZCsbQOM+LuarPjRUuHm+Qd09hSe3GCeaQbcCr+Mik+0QFRmep/FyZBO6fJ64U3w==
|
2023-10-23 15:41:00 +01:00
|
|
|
|
2024-04-02 10:32:23 -04:00
|
|
|
"@typescript-eslint/typescript-estree@7.4.0":
|
|
|
|
|
version "7.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.4.0.tgz"
|
2024-04-02 10:32:23 -04:00
|
|
|
integrity sha512-A99j5AYoME/UBQ1ucEbbMEmGkN7SE0BvZFreSnTd1luq7yulcHdyGamZKizU7canpGDWGJ+Q6ZA9SyQobipePg==
|
2023-02-09 11:58:06 -08:00
|
|
|
dependencies:
|
2024-04-02 10:32:23 -04:00
|
|
|
"@typescript-eslint/types" "7.4.0"
|
|
|
|
|
"@typescript-eslint/visitor-keys" "7.4.0"
|
|
|
|
|
debug "^4.3.4"
|
|
|
|
|
globby "^11.1.0"
|
|
|
|
|
is-glob "^4.0.3"
|
|
|
|
|
minimatch "9.0.3"
|
|
|
|
|
semver "^7.5.4"
|
|
|
|
|
ts-api-utils "^1.0.1"
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
"@typescript-eslint/typescript-estree@8.18.1":
|
|
|
|
|
version "8.18.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.18.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-z8U21WI5txzl2XYOW7i9hJhxoKKNG1kcU4RzyNvKrdZDmbjkmLBo8bgeiOJmA06kizLI76/CCBAAGlTlEeUfyg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@typescript-eslint/types" "8.18.1"
|
|
|
|
|
"@typescript-eslint/visitor-keys" "8.18.1"
|
|
|
|
|
debug "^4.3.4"
|
|
|
|
|
fast-glob "^3.3.2"
|
|
|
|
|
is-glob "^4.0.3"
|
|
|
|
|
minimatch "^9.0.4"
|
|
|
|
|
semver "^7.6.0"
|
|
|
|
|
ts-api-utils "^1.3.0"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
"@typescript-eslint/typescript-estree@8.7.0":
|
|
|
|
|
version "8.7.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.7.0.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-MC8nmcGHsmfAKxwnluTQpNqceniT8SteVwd2voYlmiSWGOtjvGXdPl17dYu2797GVscK30Z04WRM28CrKS9WOg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@typescript-eslint/types" "8.7.0"
|
|
|
|
|
"@typescript-eslint/visitor-keys" "8.7.0"
|
|
|
|
|
debug "^4.3.4"
|
|
|
|
|
fast-glob "^3.3.2"
|
|
|
|
|
is-glob "^4.0.3"
|
|
|
|
|
minimatch "^9.0.4"
|
|
|
|
|
semver "^7.6.0"
|
|
|
|
|
ts-api-utils "^1.3.0"
|
|
|
|
|
|
2024-04-02 10:32:23 -04:00
|
|
|
"@typescript-eslint/utils@7.4.0":
|
|
|
|
|
version "7.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.4.0.tgz"
|
2024-04-02 10:32:23 -04:00
|
|
|
integrity sha512-NQt9QLM4Tt8qrlBVY9lkMYzfYtNz8/6qwZg8pI3cMGlPnj6mOpRxxAm7BMJN9K0AiY+1BwJ5lVC650YJqYOuNg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@eslint-community/eslint-utils" "^4.4.0"
|
|
|
|
|
"@types/json-schema" "^7.0.12"
|
|
|
|
|
"@types/semver" "^7.5.0"
|
|
|
|
|
"@typescript-eslint/scope-manager" "7.4.0"
|
|
|
|
|
"@typescript-eslint/types" "7.4.0"
|
|
|
|
|
"@typescript-eslint/typescript-estree" "7.4.0"
|
|
|
|
|
semver "^7.5.4"
|
2023-02-09 11:58:06 -08:00
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
"@typescript-eslint/utils@8.18.1":
|
|
|
|
|
version "8.18.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.18.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-8vikiIj2ebrC4WRdcAdDcmnu9Q/MXXwg+STf40BVfT8exDqBCUPdypvzcUPxEqRGKg9ALagZ0UWcYCtn+4W2iQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@eslint-community/eslint-utils" "^4.4.0"
|
|
|
|
|
"@typescript-eslint/scope-manager" "8.18.1"
|
|
|
|
|
"@typescript-eslint/types" "8.18.1"
|
|
|
|
|
"@typescript-eslint/typescript-estree" "8.18.1"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
"@typescript-eslint/utils@8.7.0":
|
|
|
|
|
version "8.7.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.7.0.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-ZbdUdwsl2X/s3CiyAu3gOlfQzpbuG3nTWKPoIvAu1pu5r8viiJvv2NPN2AqArL35NCYtw/lrPPfM4gxrMLNLPw==
|
2023-10-23 15:41:00 +01:00
|
|
|
dependencies:
|
2024-09-27 15:15:15 -04:00
|
|
|
"@eslint-community/eslint-utils" "^4.4.0"
|
|
|
|
|
"@typescript-eslint/scope-manager" "8.7.0"
|
|
|
|
|
"@typescript-eslint/types" "8.7.0"
|
|
|
|
|
"@typescript-eslint/typescript-estree" "8.7.0"
|
2023-10-23 15:41:00 +01:00
|
|
|
|
2024-04-02 10:32:23 -04:00
|
|
|
"@typescript-eslint/visitor-keys@7.4.0":
|
|
|
|
|
version "7.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.4.0.tgz"
|
2024-04-02 10:32:23 -04:00
|
|
|
integrity sha512-0zkC7YM0iX5Y41homUUeW1CHtZR01K3ybjM1l6QczoMuay0XKtrb93kv95AxUGwdjGr64nNqnOCwmEl616N8CA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@typescript-eslint/types" "7.4.0"
|
|
|
|
|
eslint-visitor-keys "^3.4.1"
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
"@typescript-eslint/visitor-keys@8.18.1":
|
|
|
|
|
version "8.18.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.18.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-Vj0WLm5/ZsD013YeUKn+K0y8p1M0jPpxOkKdbD1wB0ns53a5piVY02zjf072TblEweAbcYiFiPoSMF3kp+VhhQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@typescript-eslint/types" "8.18.1"
|
|
|
|
|
eslint-visitor-keys "^4.2.0"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
"@typescript-eslint/visitor-keys@8.7.0":
|
|
|
|
|
version "8.7.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.7.0.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-b1tx0orFCCh/THWPQa2ZwWzvOeyzzp36vkJYOpVg0u8UVOIsfVrnuC9FqAw9gRKn+rG2VmWQ/zDJZzkxUnj/XQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@typescript-eslint/types" "8.7.0"
|
|
|
|
|
eslint-visitor-keys "^3.4.3"
|
|
|
|
|
|
2024-03-25 15:00:34 -04:00
|
|
|
"@ungap/structured-clone@^1.2.0":
|
|
|
|
|
version "1.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz"
|
2024-03-25 15:00:34 -04:00
|
|
|
integrity sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
"@vscode/test-cli@^0.0.10":
|
|
|
|
|
version "0.0.10"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@vscode/test-cli/-/test-cli-0.0.10.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-B0mMH4ia+MOOtwNiLi79XhA+MLmUItIC8FckEuKrVAVriIuSWjt7vv4+bF8qVFiNFe4QRfzPaIZk39FZGWEwHA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/mocha" "^10.0.2"
|
|
|
|
|
c8 "^9.1.0"
|
|
|
|
|
chokidar "^3.5.3"
|
|
|
|
|
enhanced-resolve "^5.15.0"
|
|
|
|
|
glob "^10.3.10"
|
|
|
|
|
minimatch "^9.0.3"
|
|
|
|
|
mocha "^10.2.0"
|
|
|
|
|
supports-color "^9.4.0"
|
|
|
|
|
yargs "^17.7.2"
|
|
|
|
|
|
|
|
|
|
"@vscode/test-electron@^2.4.1":
|
|
|
|
|
version "2.4.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.4.1.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-Gc6EdaLANdktQ1t+zozoBVRynfIsMKMc94Svu1QreOBC8y76x4tvaK32TljrLi1LI2+PK58sDVbL7ALdqf3VRQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
http-proxy-agent "^7.0.2"
|
|
|
|
|
https-proxy-agent "^7.0.5"
|
|
|
|
|
jszip "^3.10.1"
|
|
|
|
|
ora "^7.0.1"
|
|
|
|
|
semver "^7.6.2"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
abab@^2.0.6:
|
|
|
|
|
version "2.0.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
accepts@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==
|
|
|
|
|
dependencies:
|
|
|
|
|
mime-types "^3.0.0"
|
|
|
|
|
negotiator "^1.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
acorn-globals@^6.0.0:
|
|
|
|
|
version "6.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==
|
|
|
|
|
dependencies:
|
|
|
|
|
acorn "^7.1.1"
|
|
|
|
|
acorn-walk "^7.1.1"
|
|
|
|
|
|
2024-03-25 15:00:31 -04:00
|
|
|
acorn-jsx@^5.3.2:
|
2022-10-19 13:00:47 -07:00
|
|
|
version "5.3.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
acorn-walk@^7.1.1:
|
|
|
|
|
version "7.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==
|
|
|
|
|
|
|
|
|
|
acorn-walk@^8.1.1:
|
|
|
|
|
version "8.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==
|
|
|
|
|
|
|
|
|
|
acorn@^7.1.1:
|
|
|
|
|
version "7.4.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
acorn@^8.14.0:
|
|
|
|
|
version "8.14.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
acorn@^8.4.1, acorn@^8.7.1:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "8.8.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==
|
|
|
|
|
|
2023-11-08 08:27:41 +00:00
|
|
|
acorn@^8.9.0:
|
|
|
|
|
version "8.11.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/acorn/-/acorn-8.11.2.tgz"
|
2023-11-08 08:27:41 +00:00
|
|
|
integrity sha512-nc0Axzp/0FILLEVsm4fNwLCwMttvhEI263QtVPQcbpfZZ3ts0hLsZGOpE6czNlid7CJ9MlyH8reXkpsf3YUY4w==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
agent-base@6:
|
|
|
|
|
version "6.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
debug "4"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
agent-base@^7.1.0, agent-base@^7.1.2:
|
|
|
|
|
version "7.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
ajv@^6.12.4:
|
2022-10-19 13:00:47 -07:00
|
|
|
version "6.12.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==
|
|
|
|
|
dependencies:
|
|
|
|
|
fast-deep-equal "^3.1.1"
|
|
|
|
|
fast-json-stable-stringify "^2.0.0"
|
|
|
|
|
json-schema-traverse "^0.4.1"
|
|
|
|
|
uri-js "^4.2.2"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
algoliasearch@^5.23.3:
|
|
|
|
|
version "5.23.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/algoliasearch/-/algoliasearch-5.23.4.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-QzAKFHl3fm53s44VHrTdEo0TkpL3XVUYQpnZy1r6/EHvMAyIg+O4hwprzlsNmcCHTNyVcF2S13DAUn7XhkC6qg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@algolia/client-abtesting" "5.23.4"
|
|
|
|
|
"@algolia/client-analytics" "5.23.4"
|
|
|
|
|
"@algolia/client-common" "5.23.4"
|
|
|
|
|
"@algolia/client-insights" "5.23.4"
|
|
|
|
|
"@algolia/client-personalization" "5.23.4"
|
|
|
|
|
"@algolia/client-query-suggestions" "5.23.4"
|
|
|
|
|
"@algolia/client-search" "5.23.4"
|
|
|
|
|
"@algolia/ingestion" "1.23.4"
|
|
|
|
|
"@algolia/monitoring" "1.23.4"
|
|
|
|
|
"@algolia/recommend" "5.23.4"
|
|
|
|
|
"@algolia/requester-browser-xhr" "5.23.4"
|
|
|
|
|
"@algolia/requester-fetch" "5.23.4"
|
|
|
|
|
"@algolia/requester-node-http" "5.23.4"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
ansi-colors@^4.1.3:
|
|
|
|
|
version "4.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
ansi-escapes@^4.2.1:
|
|
|
|
|
version "4.3.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
type-fest "^0.21.3"
|
|
|
|
|
|
2024-03-25 15:00:31 -04:00
|
|
|
ansi-regex@^4.0.0:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "4.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==
|
|
|
|
|
|
|
|
|
|
ansi-regex@^5.0.1:
|
|
|
|
|
version "5.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
|
|
|
|
|
|
2024-03-11 13:55:24 -04:00
|
|
|
ansi-regex@^6.0.1:
|
|
|
|
|
version "6.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
ansi-styles@^3.2.0, ansi-styles@^3.2.1:
|
|
|
|
|
version "3.2.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==
|
|
|
|
|
dependencies:
|
|
|
|
|
color-convert "^1.9.0"
|
|
|
|
|
|
|
|
|
|
ansi-styles@^4.0.0, ansi-styles@^4.1.0:
|
|
|
|
|
version "4.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
|
|
|
|
|
dependencies:
|
|
|
|
|
color-convert "^2.0.1"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
ansi-styles@^5.0.0, ansi-styles@^5.2.0:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "5.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==
|
|
|
|
|
|
2024-03-11 13:55:24 -04:00
|
|
|
ansi-styles@^6.1.0:
|
|
|
|
|
version "6.2.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
any-promise@^1.0.0:
|
|
|
|
|
version "1.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
anymatch@^3.0.3:
|
|
|
|
|
version "3.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==
|
|
|
|
|
dependencies:
|
|
|
|
|
normalize-path "^3.0.0"
|
|
|
|
|
picomatch "^2.0.4"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
anymatch@~3.1.2:
|
|
|
|
|
version "3.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==
|
|
|
|
|
dependencies:
|
|
|
|
|
normalize-path "^3.0.0"
|
|
|
|
|
picomatch "^2.0.4"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
arg@^4.1.0:
|
|
|
|
|
version "4.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==
|
|
|
|
|
|
|
|
|
|
argparse@^1.0.7:
|
|
|
|
|
version "1.0.10"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==
|
|
|
|
|
dependencies:
|
|
|
|
|
sprintf-js "~1.0.2"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
argparse@^2.0.1:
|
|
|
|
|
version "2.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
args@5.0.3:
|
|
|
|
|
version "5.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/args/-/args-5.0.3.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-h6k/zfFgusnv3i5TU08KQkVKuCPBtL/PWQbWkHUxvJrZ2nAyeaUupneemcrgn1xmqxPQsPIzwkUhOpoqPDRZuA==
|
|
|
|
|
dependencies:
|
|
|
|
|
camelcase "5.0.0"
|
|
|
|
|
chalk "2.4.2"
|
|
|
|
|
leven "2.1.0"
|
|
|
|
|
mri "1.1.4"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
aria-query@^5.0.0:
|
|
|
|
|
version "5.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/aria-query/-/aria-query-5.0.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-eigU3vhqSO+Z8BKDnVLN/ompjhf3pYzecKXz8+whRy+9gZu8n1TCGfwzQUUPnqdHl9ax1Hr9031orZ+UOEYr7Q==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2:
|
|
|
|
|
version "1.0.2"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b"
|
|
|
|
|
integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
is-array-buffer "^3.0.5"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
array-union@^2.1.0:
|
|
|
|
|
version "2.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
arraybuffer.prototype.slice@^1.0.4:
|
|
|
|
|
version "1.0.4"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#9d760d84dbdd06d0cbf92c8849615a1a7ab3183c"
|
|
|
|
|
integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
array-buffer-byte-length "^1.0.1"
|
|
|
|
|
call-bind "^1.0.8"
|
|
|
|
|
define-properties "^1.2.1"
|
|
|
|
|
es-abstract "^1.23.5"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
get-intrinsic "^1.2.6"
|
|
|
|
|
is-array-buffer "^3.0.4"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
ast-types@^0.13.4:
|
|
|
|
|
version "0.13.4"
|
|
|
|
|
resolved "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz"
|
|
|
|
|
integrity sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==
|
|
|
|
|
dependencies:
|
|
|
|
|
tslib "^2.0.1"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
async-function@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/async-function/-/async-function-1.0.0.tgz#509c9fca60eaf85034c6829838188e4e4c8ffb2b"
|
|
|
|
|
integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
async@^3.2.3:
|
|
|
|
|
version "3.2.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/async/-/async-3.2.6.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
asynckit@^0.4.0:
|
|
|
|
|
version "0.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
available-typed-arrays@^1.0.7:
|
|
|
|
|
version "1.0.7"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
|
|
|
|
|
integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
possible-typed-array-names "^1.0.0"
|
|
|
|
|
|
2024-05-21 01:41:16 -04:00
|
|
|
axios@^1.6.1:
|
2024-09-26 09:51:12 -04:00
|
|
|
version "1.7.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/axios/-/axios-1.7.4.tgz"
|
2024-09-26 09:51:12 -04:00
|
|
|
integrity sha512-DukmaFRnY6AzAALSH4J2M3k6PkaC+MfaAGdEERRWcC9q3/TWQwLpHR8ZRLKTdQ3aBDL64EdluRDjJqKw+BPZEw==
|
2024-05-21 01:41:16 -04:00
|
|
|
dependencies:
|
|
|
|
|
follow-redirects "^1.15.6"
|
|
|
|
|
form-data "^4.0.0"
|
|
|
|
|
proxy-from-env "^1.1.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
b4a@^1.6.4:
|
|
|
|
|
version "1.6.7"
|
|
|
|
|
resolved "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz"
|
|
|
|
|
integrity sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
babel-jest@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/transform" "^28.1.3"
|
|
|
|
|
"@types/babel__core" "^7.1.14"
|
|
|
|
|
babel-plugin-istanbul "^6.1.1"
|
|
|
|
|
babel-preset-jest "^28.1.3"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
babel-jest@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ApPyHSOhS/sVzwUOQIWJmdvDhBsMG01HX9z7ogtkp1TToHGGUWFlnXJUIzCgKPSfiYLn3ibipCYzsKSURHEwLg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/transform" "^29.0.3"
|
|
|
|
|
"@types/babel__core" "^7.1.14"
|
|
|
|
|
babel-plugin-istanbul "^6.1.1"
|
|
|
|
|
babel-preset-jest "^29.0.2"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
babel-jest@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/babel-jest/-/babel-jest-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-mA4eCDh5mSo2EcA9xQjVTpmbbNk32Zb3Q3QFQsNhaK56Q+yoXowzFodLux30HRgyOho5rsQ6B0P9QpMkvvnJ0Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/transform" "^29.5.0"
|
|
|
|
|
"@types/babel__core" "^7.1.14"
|
|
|
|
|
babel-plugin-istanbul "^6.1.1"
|
|
|
|
|
babel-preset-jest "^29.5.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
babel-jest@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-29.7.0.tgz#f4369919225b684c56085998ac63dbd05be020d5"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/transform" "^29.7.0"
|
|
|
|
|
"@types/babel__core" "^7.1.14"
|
|
|
|
|
babel-plugin-istanbul "^6.1.1"
|
|
|
|
|
babel-preset-jest "^29.6.3"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
slash "^3.0.0"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
babel-plugin-fbt-runtime@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/babel-plugin-fbt-runtime/-/babel-plugin-fbt-runtime-1.0.0.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-gML1rXqIfc+sDf1DWxu1WJjmotBYr6f9vjKwOoetuOukM1o3mTKNAeBFGEYu7iBACkuaXpIi++qW8/URgHnduQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.0.0"
|
|
|
|
|
invariant "^2.2.4"
|
|
|
|
|
|
|
|
|
|
babel-plugin-fbt@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/babel-plugin-fbt/-/babel-plugin-fbt-1.0.0.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-Tjpkrt4JJLgtS+x6HzkWdOguH+Pb+pzJmSkBmHIWrjf3x9Pf+xFcQUdAbpDKOtRPgu6QyI9DtDulw0sbgdfYdg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.0.0"
|
|
|
|
|
"@babel/generator" "^7.0.0"
|
|
|
|
|
"@babel/plugin-syntax-object-rest-spread" "^7.2.0"
|
|
|
|
|
"@babel/plugin-transform-flow-strip-types" "^7.2.0"
|
|
|
|
|
"@babel/plugin-transform-modules-commonjs" "^7.8.3"
|
|
|
|
|
"@babel/register" "^7.0.0"
|
|
|
|
|
"@babel/types" "^7.2.2"
|
|
|
|
|
fb-babel-plugin-utils "^0.13.0"
|
|
|
|
|
flow-enums-runtime "^0.0.4"
|
|
|
|
|
glob "^7.1.6"
|
|
|
|
|
invariant "^2.2.4"
|
|
|
|
|
jest-docblock "^26.0.0"
|
|
|
|
|
nullthrows "^1.1.1"
|
|
|
|
|
yargs "^15.3.1"
|
|
|
|
|
|
2024-07-23 15:46:56 -04:00
|
|
|
babel-plugin-idx@^3.0.3:
|
|
|
|
|
version "3.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/babel-plugin-idx/-/babel-plugin-idx-3.0.3.tgz"
|
2024-07-23 15:46:56 -04:00
|
|
|
integrity sha512-05baCoIGsvZJKemq6KQ4KVFlweEpY4aSY56wk3W781JxCNW3u0KfBElBt26/cPZbHkjF1mnwGIOlFY+9I/VOZA==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
babel-plugin-istanbul@^6.1.1:
|
|
|
|
|
version "6.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/helper-plugin-utils" "^7.0.0"
|
|
|
|
|
"@istanbuljs/load-nyc-config" "^1.0.0"
|
|
|
|
|
"@istanbuljs/schema" "^0.1.2"
|
|
|
|
|
istanbul-lib-instrument "^5.0.4"
|
|
|
|
|
test-exclude "^6.0.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
babel-plugin-jest-hoist@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/template" "^7.3.3"
|
|
|
|
|
"@babel/types" "^7.3.3"
|
|
|
|
|
"@types/babel__core" "^7.1.14"
|
|
|
|
|
"@types/babel__traverse" "^7.0.6"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
babel-plugin-jest-hoist@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.5.0.tgz"
|
|
|
|
|
integrity sha512-zSuuuAlTMT4mzLj2nPnUm6fsE6270vdOfnpbJ+RmruU75UhLFvL0N2NgI7xpeS7NaB6hGqmd5pVpGTDYvi4Q3w==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
|
|
|
|
"@babel/template" "^7.3.3"
|
|
|
|
|
"@babel/types" "^7.3.3"
|
|
|
|
|
"@types/babel__core" "^7.1.14"
|
|
|
|
|
"@types/babel__traverse" "^7.0.6"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
babel-plugin-jest-hoist@^29.6.3:
|
|
|
|
|
version "29.6.3"
|
|
|
|
|
resolved "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz"
|
|
|
|
|
integrity sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
|
|
|
|
"@babel/template" "^7.3.3"
|
|
|
|
|
"@babel/types" "^7.3.3"
|
|
|
|
|
"@types/babel__core" "^7.1.14"
|
|
|
|
|
"@types/babel__traverse" "^7.0.6"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
babel-plugin-polyfill-corejs2@^0.4.10:
|
|
|
|
|
version "0.4.13"
|
|
|
|
|
resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.13.tgz"
|
|
|
|
|
integrity sha512-3sX/eOms8kd3q2KZ6DAhKPc0dgm525Gqq5NtWKZ7QYYZEv57OQ54KtblzJzH1lQF/eQxO8KjWGIK9IPUJNus5g==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/compat-data" "^7.22.6"
|
|
|
|
|
"@babel/helper-define-polyfill-provider" "^0.6.4"
|
|
|
|
|
semver "^6.3.1"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
babel-plugin-polyfill-corejs3@^0.11.0:
|
|
|
|
|
version "0.11.1"
|
|
|
|
|
resolved "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.11.1.tgz"
|
|
|
|
|
integrity sha512-yGCqvBT4rwMczo28xkH/noxJ6MZ4nJfkVYdoDaC/utLtWrXxv27HVrzAeSbqR8SxDsp46n0YF47EbHoixy6rXQ==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-define-polyfill-provider" "^0.6.3"
|
|
|
|
|
core-js-compat "^3.40.0"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
babel-plugin-polyfill-regenerator@^0.6.1:
|
|
|
|
|
version "0.6.4"
|
|
|
|
|
resolved "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.4.tgz"
|
|
|
|
|
integrity sha512-7gD3pRadPrbjhjLyxebmx/WrFYcuSjZ0XbdUujQMZ/fcE9oeewk2U/7PCvez84UeuK3oSjmPZ0Ch0dlupQvGzw==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@babel/helper-define-polyfill-provider" "^0.6.4"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2024-11-19 10:52:48 -05:00
|
|
|
babel-plugin-syntax-hermes-parser@^0.25.1:
|
|
|
|
|
version "0.25.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/babel-plugin-syntax-hermes-parser/-/babel-plugin-syntax-hermes-parser-0.25.1.tgz"
|
2024-11-19 10:52:48 -05:00
|
|
|
integrity sha512-IVNpGzboFLfXZUAwkLFcI/bnqVbwky0jP3eBno4HKtqvQJAHBLdgxiG6lQ4to0+Q/YCN3PO0od5NZwIKyY4REQ==
|
2023-08-09 14:47:56 -04:00
|
|
|
dependencies:
|
2024-11-19 10:52:48 -05:00
|
|
|
hermes-parser "0.25.1"
|
2023-08-09 14:47:56 -04:00
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
babel-preset-current-node-syntax@^1.0.0:
|
|
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/plugin-syntax-async-generators" "^7.8.4"
|
|
|
|
|
"@babel/plugin-syntax-bigint" "^7.8.3"
|
|
|
|
|
"@babel/plugin-syntax-class-properties" "^7.8.3"
|
|
|
|
|
"@babel/plugin-syntax-import-meta" "^7.8.3"
|
|
|
|
|
"@babel/plugin-syntax-json-strings" "^7.8.3"
|
|
|
|
|
"@babel/plugin-syntax-logical-assignment-operators" "^7.8.3"
|
|
|
|
|
"@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3"
|
|
|
|
|
"@babel/plugin-syntax-numeric-separator" "^7.8.3"
|
|
|
|
|
"@babel/plugin-syntax-object-rest-spread" "^7.8.3"
|
|
|
|
|
"@babel/plugin-syntax-optional-catch-binding" "^7.8.3"
|
|
|
|
|
"@babel/plugin-syntax-optional-chaining" "^7.8.3"
|
|
|
|
|
"@babel/plugin-syntax-top-level-await" "^7.8.3"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
babel-preset-jest@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==
|
|
|
|
|
dependencies:
|
|
|
|
|
babel-plugin-jest-hoist "^28.1.3"
|
|
|
|
|
babel-preset-current-node-syntax "^1.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
babel-preset-jest@^29.0.2, babel-preset-jest@^29.6.3:
|
|
|
|
|
version "29.6.3"
|
|
|
|
|
resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz"
|
|
|
|
|
integrity sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
babel-plugin-jest-hoist "^29.6.3"
|
2021-05-11 16:10:34 -07:00
|
|
|
babel-preset-current-node-syntax "^1.0.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
babel-preset-jest@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-JOMloxOqdiBSxMAzjRaH023/vvcaSaec49zvg+2LmNsktC7ei39LTJGw02J+9uUtTZUq6xbLyJ4dxe9sSmIuAg==
|
|
|
|
|
dependencies:
|
|
|
|
|
babel-plugin-jest-hoist "^29.5.0"
|
|
|
|
|
babel-preset-current-node-syntax "^1.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
balanced-match@^1.0.0:
|
|
|
|
|
version "1.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
bare-events@^2.2.0, bare-events@^2.5.4:
|
|
|
|
|
version "2.5.4"
|
|
|
|
|
resolved "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz"
|
|
|
|
|
integrity sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==
|
|
|
|
|
|
|
|
|
|
bare-fs@^4.0.1:
|
|
|
|
|
version "4.1.3"
|
|
|
|
|
resolved "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.3.tgz"
|
|
|
|
|
integrity sha512-OeEZYIg+2qepaWLyphaOXHAHKo3xkM8y3BeGAvHdMN8GNWvEAU1Yw6rYpGzu/wDDbKxgEjVeVDpgGhDzaeMpjg==
|
|
|
|
|
dependencies:
|
|
|
|
|
bare-events "^2.5.4"
|
|
|
|
|
bare-path "^3.0.0"
|
|
|
|
|
bare-stream "^2.6.4"
|
|
|
|
|
|
|
|
|
|
bare-os@^3.0.1:
|
|
|
|
|
version "3.6.1"
|
|
|
|
|
resolved "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz"
|
|
|
|
|
integrity sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==
|
|
|
|
|
|
|
|
|
|
bare-path@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz"
|
|
|
|
|
integrity sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==
|
|
|
|
|
dependencies:
|
|
|
|
|
bare-os "^3.0.1"
|
|
|
|
|
|
|
|
|
|
bare-stream@^2.6.4:
|
|
|
|
|
version "2.6.5"
|
|
|
|
|
resolved "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz"
|
|
|
|
|
integrity sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==
|
|
|
|
|
dependencies:
|
|
|
|
|
streamx "^2.21.0"
|
|
|
|
|
|
2024-05-01 13:35:03 +01:00
|
|
|
base64-js@^1.3.1:
|
|
|
|
|
version "1.5.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz"
|
2024-05-01 13:35:03 +01:00
|
|
|
integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
basic-ftp@^5.0.2:
|
|
|
|
|
version "5.0.5"
|
|
|
|
|
resolved "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz"
|
|
|
|
|
integrity sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
binary-extensions@^2.0.0:
|
|
|
|
|
version "2.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==
|
|
|
|
|
|
2024-05-01 13:35:03 +01:00
|
|
|
bl@^4.1.0:
|
|
|
|
|
version "4.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz"
|
2024-05-01 13:35:03 +01:00
|
|
|
integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==
|
|
|
|
|
dependencies:
|
|
|
|
|
buffer "^5.5.0"
|
|
|
|
|
inherits "^2.0.4"
|
|
|
|
|
readable-stream "^3.4.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
bl@^5.0.0:
|
|
|
|
|
version "5.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
buffer "^6.0.3"
|
|
|
|
|
inherits "^2.0.4"
|
|
|
|
|
readable-stream "^3.4.0"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
body-parser@^2.2.0:
|
|
|
|
|
version "2.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==
|
|
|
|
|
dependencies:
|
|
|
|
|
bytes "^3.1.2"
|
|
|
|
|
content-type "^1.0.5"
|
|
|
|
|
debug "^4.4.0"
|
|
|
|
|
http-errors "^2.0.0"
|
|
|
|
|
iconv-lite "^0.6.3"
|
|
|
|
|
on-finished "^2.4.1"
|
|
|
|
|
qs "^6.14.0"
|
|
|
|
|
raw-body "^3.0.0"
|
|
|
|
|
type-is "^2.0.0"
|
|
|
|
|
|
|
|
|
|
boolbase@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
brace-expansion@^1.1.7:
|
|
|
|
|
version "1.1.11"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==
|
|
|
|
|
dependencies:
|
|
|
|
|
balanced-match "^1.0.0"
|
|
|
|
|
concat-map "0.0.1"
|
|
|
|
|
|
2023-09-05 12:08:00 -04:00
|
|
|
brace-expansion@^2.0.1:
|
|
|
|
|
version "2.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz"
|
2023-09-05 12:08:00 -04:00
|
|
|
integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==
|
|
|
|
|
dependencies:
|
|
|
|
|
balanced-match "^1.0.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
braces@^3.0.3, braces@~3.0.2:
|
2024-10-11 16:29:34 -04:00
|
|
|
version "3.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz"
|
2024-10-11 16:29:34 -04:00
|
|
|
integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2024-10-11 16:29:34 -04:00
|
|
|
fill-range "^7.1.1"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
|
|
|
|
browser-process-hrtime@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
browser-stdout@^1.3.1:
|
|
|
|
|
version "1.3.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
browserslist@^4.24.0, browserslist@^4.24.4:
|
|
|
|
|
version "4.24.4"
|
|
|
|
|
resolved "https://registry.npmjs.org/browserslist/-/browserslist-4.24.4.tgz"
|
|
|
|
|
integrity sha512-KDi1Ny1gSePi1vm0q4oxSF8b4DR44GF4BbmS2YdhPLOEqd8pDviZOGH/GsmRwoWJ2+5Lr085X7naowMwKHDG1A==
|
2024-04-23 12:28:41 +01:00
|
|
|
dependencies:
|
2025-01-02 16:59:45 -05:00
|
|
|
caniuse-lite "^1.0.30001688"
|
|
|
|
|
electron-to-chromium "^1.5.73"
|
|
|
|
|
node-releases "^2.0.19"
|
2024-10-29 21:51:41 -04:00
|
|
|
update-browserslist-db "^1.1.1"
|
2024-04-23 12:28:41 +01:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
bs-logger@0.x, bs-logger@^0.2.6:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "0.2.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==
|
|
|
|
|
dependencies:
|
|
|
|
|
fast-json-stable-stringify "2.x"
|
|
|
|
|
|
|
|
|
|
bser@2.1.1:
|
|
|
|
|
version "2.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
node-int64 "^0.4.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
buffer-crc32@~0.2.3:
|
|
|
|
|
version "0.2.13"
|
|
|
|
|
resolved "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz"
|
|
|
|
|
integrity sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
buffer-from@^1.0.0:
|
|
|
|
|
version "1.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==
|
|
|
|
|
|
2024-05-01 13:35:03 +01:00
|
|
|
buffer@^5.5.0:
|
|
|
|
|
version "5.7.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz"
|
2024-05-01 13:35:03 +01:00
|
|
|
integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
base64-js "^1.3.1"
|
|
|
|
|
ieee754 "^1.1.13"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
buffer@^6.0.3:
|
|
|
|
|
version "6.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==
|
|
|
|
|
dependencies:
|
|
|
|
|
base64-js "^1.3.1"
|
|
|
|
|
ieee754 "^1.2.1"
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
bundle-require@^5.1.0:
|
|
|
|
|
version "5.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/bundle-require/-/bundle-require-5.1.0.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-3WrrOuZiyaaZPWiEt4G3+IffISVC9HYlWueJEBWED4ZH4aIAC2PnkdnuRrR94M+w6yGWn4AglWtJtBI8YqvgoA==
|
|
|
|
|
dependencies:
|
|
|
|
|
load-tsconfig "^0.2.3"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
bytes@3.1.2, bytes@^3.1.2:
|
|
|
|
|
version "3.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
c8@^9.1.0:
|
|
|
|
|
version "9.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/c8/-/c8-9.1.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@bcoe/v8-coverage" "^0.2.3"
|
|
|
|
|
"@istanbuljs/schema" "^0.1.3"
|
|
|
|
|
find-up "^5.0.0"
|
|
|
|
|
foreground-child "^3.1.1"
|
|
|
|
|
istanbul-lib-coverage "^3.2.0"
|
|
|
|
|
istanbul-lib-report "^3.0.1"
|
|
|
|
|
istanbul-reports "^3.1.6"
|
|
|
|
|
test-exclude "^6.0.0"
|
|
|
|
|
v8-to-istanbul "^9.0.0"
|
|
|
|
|
yargs "^17.7.2"
|
|
|
|
|
yargs-parser "^21.1.1"
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
cac@^6.7.14:
|
|
|
|
|
version "6.7.14"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
|
2025-04-14 18:39:00 -04:00
|
|
|
version "1.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
function-bind "^1.1.2"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
call-bind@^1.0.7, call-bind@^1.0.8:
|
|
|
|
|
version "1.0.8"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
|
|
|
|
|
integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bind-apply-helpers "^1.0.0"
|
|
|
|
|
es-define-property "^1.0.0"
|
|
|
|
|
get-intrinsic "^1.2.4"
|
|
|
|
|
set-function-length "^1.2.2"
|
|
|
|
|
|
|
|
|
|
call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4:
|
2025-04-14 18:39:00 -04:00
|
|
|
version "1.0.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bind-apply-helpers "^1.0.2"
|
|
|
|
|
get-intrinsic "^1.3.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
callsites@^3.0.0:
|
|
|
|
|
version "3.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
camelcase@5.0.0:
|
|
|
|
|
version "5.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.0.0.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-faqwZqnWxbxn+F1d399ygeamQNy3lPp/H9H6rNrqYh4FSVCtcY+3cub1MxA8o9mDd55mM8Aghuu/kuyYA6VTsA==
|
|
|
|
|
|
2022-11-15 13:24:14 -05:00
|
|
|
camelcase@^5.0.0, camelcase@^5.3.1:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "5.3.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
camelcase@^6.0.0, camelcase@^6.2.0:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "6.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
caniuse-lite@^1.0.30001688:
|
2025-04-24 13:50:03 -04:00
|
|
|
version "1.0.30001715"
|
|
|
|
|
resolved "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001715.tgz"
|
|
|
|
|
integrity sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==
|
2024-04-23 12:28:41 +01:00
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
chalk@2.4.2, chalk@^2.0.0, chalk@^2.4.2:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "2.4.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
ansi-styles "^3.2.1"
|
|
|
|
|
escape-string-regexp "^1.0.5"
|
|
|
|
|
supports-color "^5.3.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
chalk@4, chalk@^4.0.0, chalk@^4.0.2, chalk@^4.1.0, chalk@^4.1.2:
|
2025-01-06 11:01:38 -05:00
|
|
|
version "4.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
|
|
|
|
|
dependencies:
|
|
|
|
|
ansi-styles "^4.1.0"
|
|
|
|
|
supports-color "^7.1.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
chalk@^5.0.0, chalk@^5.3.0:
|
|
|
|
|
version "5.4.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
char-regex@^1.0.2:
|
|
|
|
|
version "1.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
cheerio-select@^2.1.0:
|
|
|
|
|
version "2.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==
|
|
|
|
|
dependencies:
|
|
|
|
|
boolbase "^1.0.0"
|
|
|
|
|
css-select "^5.1.0"
|
|
|
|
|
css-what "^6.1.0"
|
|
|
|
|
domelementtype "^2.3.0"
|
|
|
|
|
domhandler "^5.0.3"
|
|
|
|
|
domutils "^3.0.1"
|
|
|
|
|
|
|
|
|
|
cheerio@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-quS9HgjQpdaXOvsZz82Oz7uxtXiy6UIsIQcpBj7HRw2M63Skasm9qlDocAM7jNuaxdhpPU7c4kJN+gA5MCu4ww==
|
|
|
|
|
dependencies:
|
|
|
|
|
cheerio-select "^2.1.0"
|
|
|
|
|
dom-serializer "^2.0.0"
|
|
|
|
|
domhandler "^5.0.3"
|
|
|
|
|
domutils "^3.1.0"
|
|
|
|
|
encoding-sniffer "^0.2.0"
|
|
|
|
|
htmlparser2 "^9.1.0"
|
|
|
|
|
parse5 "^7.1.2"
|
|
|
|
|
parse5-htmlparser2-tree-adapter "^7.0.0"
|
|
|
|
|
parse5-parser-stream "^7.1.2"
|
|
|
|
|
undici "^6.19.5"
|
|
|
|
|
whatwg-mimetype "^4.0.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
chokidar@^3.5.3:
|
|
|
|
|
version "3.6.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==
|
|
|
|
|
dependencies:
|
|
|
|
|
anymatch "~3.1.2"
|
|
|
|
|
braces "~3.0.2"
|
|
|
|
|
glob-parent "~5.1.2"
|
|
|
|
|
is-binary-path "~2.1.0"
|
|
|
|
|
is-glob "~4.0.1"
|
|
|
|
|
normalize-path "~3.0.0"
|
|
|
|
|
readdirp "~3.6.0"
|
|
|
|
|
optionalDependencies:
|
|
|
|
|
fsevents "~2.3.2"
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
chokidar@^4.0.3:
|
|
|
|
|
version "4.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==
|
|
|
|
|
dependencies:
|
|
|
|
|
readdirp "^4.0.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
chromium-bidi@4.1.1:
|
|
|
|
|
version "4.1.1"
|
|
|
|
|
resolved "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-4.1.1.tgz"
|
|
|
|
|
integrity sha512-biR7t4vF3YluE6RlMSk9IWk+b9U+WWyzHp+N2pL9vRTk+UXHYRTVp7jTK58ZNzMLBgoLMHY4QyJMbeuw3eKxqg==
|
|
|
|
|
dependencies:
|
|
|
|
|
mitt "^3.0.1"
|
|
|
|
|
zod "^3.24.1"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
ci-info@^3.2.0:
|
|
|
|
|
version "3.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ci-info/-/ci-info-3.4.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-t5QdPT5jq3o262DOQ8zA6E1tlH2upmUc4Hlvrbx1pGYJuiiHl7O7rvVNI+l8HTVhd/q3Qc9vqimkNk5yiXsAug==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
ci-info@^4.2.0:
|
|
|
|
|
version "4.3.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-4.3.0.tgz#c39b1013f8fdbd28cd78e62318357d02da160cd7"
|
|
|
|
|
integrity sha512-l+2bNRMiQgcfILUi33labAZYIWlH1kWDp+ecNo5iisRKrbm0xcRyCww71/YU0Fkw0mAFpz9bJayXPjey6vkmaQ==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
cjs-module-lexer@^1.0.0:
|
|
|
|
|
version "1.2.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
cli-color@~0.1.6:
|
|
|
|
|
version "0.1.7"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cli-color/-/cli-color-0.1.7.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-xNaQxWYgI6DD4xIJLn8GY2zDZVbrN0vsU1fEbDNAHZRyceWhpj7A08mYcG1AY92q1Aw0geYkVfiAcEYIZtuTSg==
|
|
|
|
|
dependencies:
|
|
|
|
|
es5-ext "0.8.x"
|
|
|
|
|
|
2024-05-01 13:35:03 +01:00
|
|
|
cli-cursor@^3.1.0:
|
|
|
|
|
version "3.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz"
|
2024-05-01 13:35:03 +01:00
|
|
|
integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==
|
|
|
|
|
dependencies:
|
|
|
|
|
restore-cursor "^3.1.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
cli-cursor@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==
|
|
|
|
|
dependencies:
|
|
|
|
|
restore-cursor "^4.0.0"
|
|
|
|
|
|
|
|
|
|
cli-spinners@^2.5.0, cli-spinners@^2.9.0:
|
2024-05-01 13:35:03 +01:00
|
|
|
version "2.9.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz"
|
2024-05-01 13:35:03 +01:00
|
|
|
integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
cliui@^6.0.0:
|
|
|
|
|
version "6.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
string-width "^4.2.0"
|
|
|
|
|
strip-ansi "^6.0.0"
|
|
|
|
|
wrap-ansi "^6.2.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
cliui@^7.0.2:
|
|
|
|
|
version "7.0.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
string-width "^4.2.0"
|
|
|
|
|
strip-ansi "^6.0.0"
|
|
|
|
|
wrap-ansi "^7.0.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
cliui@^8.0.1:
|
|
|
|
|
version "8.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
string-width "^4.2.0"
|
|
|
|
|
strip-ansi "^6.0.1"
|
|
|
|
|
wrap-ansi "^7.0.0"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
clone-deep@^4.0.1:
|
|
|
|
|
version "4.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
is-plain-object "^2.0.4"
|
|
|
|
|
kind-of "^6.0.2"
|
|
|
|
|
shallow-clone "^3.0.0"
|
|
|
|
|
|
2024-05-01 13:35:03 +01:00
|
|
|
clone@^1.0.2:
|
|
|
|
|
version "1.0.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz"
|
2024-05-01 13:35:03 +01:00
|
|
|
integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
co@^4.6.0:
|
|
|
|
|
version "4.6.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/co/-/co-4.6.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==
|
|
|
|
|
|
|
|
|
|
collect-v8-coverage@^1.0.0:
|
|
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
color-convert@^1.9.0, color-convert@^1.9.3:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "1.9.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==
|
|
|
|
|
dependencies:
|
|
|
|
|
color-name "1.1.3"
|
|
|
|
|
|
|
|
|
|
color-convert@^2.0.1:
|
|
|
|
|
version "2.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
color-name "~1.1.4"
|
|
|
|
|
|
|
|
|
|
color-name@1.1.3:
|
|
|
|
|
version "1.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
color-name@^1.0.0, color-name@~1.1.4:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "1.1.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
color-string@^1.6.0:
|
|
|
|
|
version "1.9.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==
|
|
|
|
|
dependencies:
|
|
|
|
|
color-name "^1.0.0"
|
|
|
|
|
simple-swizzle "^0.2.2"
|
|
|
|
|
|
|
|
|
|
color@^3.1.3:
|
|
|
|
|
version "3.2.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/color/-/color-3.2.1.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==
|
|
|
|
|
dependencies:
|
|
|
|
|
color-convert "^1.9.3"
|
|
|
|
|
color-string "^1.6.0"
|
|
|
|
|
|
|
|
|
|
colorspace@1.1.x:
|
|
|
|
|
version "1.1.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==
|
|
|
|
|
dependencies:
|
|
|
|
|
color "^3.1.3"
|
|
|
|
|
text-hex "1.0.x"
|
|
|
|
|
|
2024-03-25 15:00:31 -04:00
|
|
|
combined-stream@^1.0.8:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "1.0.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
|
|
|
|
|
dependencies:
|
|
|
|
|
delayed-stream "~1.0.0"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
commander@^2.9.0:
|
|
|
|
|
version "2.20.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
commander@^4.0.0:
|
|
|
|
|
version "4.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
commondir@^1.0.1:
|
|
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
concat-map@0.0.1:
|
|
|
|
|
version "0.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==
|
|
|
|
|
|
|
|
|
|
concurrently@^7.4.0:
|
2023-06-05 13:35:39 -04:00
|
|
|
version "7.6.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/concurrently/-/concurrently-7.6.0.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-BKtRgvcJGeZ4XttiDiNcFiRlxoAeZOseqUvyYRUp/Vtd+9p1ULmeoSqGsDA+2ivdeDFpqrJvGvmI+StKfKl5hw==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
|
|
|
|
chalk "^4.1.0"
|
|
|
|
|
date-fns "^2.29.1"
|
|
|
|
|
lodash "^4.17.21"
|
|
|
|
|
rxjs "^7.0.0"
|
|
|
|
|
shell-quote "^1.7.3"
|
|
|
|
|
spawn-command "^0.0.2-1"
|
|
|
|
|
supports-color "^8.1.0"
|
|
|
|
|
tree-kill "^1.2.2"
|
|
|
|
|
yargs "^17.3.1"
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
consola@^3.4.0:
|
|
|
|
|
version "3.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/consola/-/consola-3.4.0.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-EiPU8G6dQG0GFHNR8ljnZFki/8a+cQwEQ+7wpxdChl02Q8HXlwEZWD5lqAF8vC2sEC3Tehr8hy7vErz88LHyUA==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
content-disposition@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==
|
|
|
|
|
dependencies:
|
|
|
|
|
safe-buffer "5.2.1"
|
|
|
|
|
|
|
|
|
|
content-type@^1.0.5:
|
|
|
|
|
version "1.0.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
convert-source-map@^1.1.0, convert-source-map@^1.4.0, convert-source-map@^1.6.0:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "1.8.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==
|
|
|
|
|
dependencies:
|
|
|
|
|
safe-buffer "~5.1.1"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
convert-source-map@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
cookie-signature@^1.2.1:
|
|
|
|
|
version "1.2.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==
|
|
|
|
|
|
|
|
|
|
cookie@^0.7.1:
|
|
|
|
|
version "0.7.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
core-js-compat@^3.40.0:
|
|
|
|
|
version "3.41.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.41.0.tgz"
|
|
|
|
|
integrity sha512-RFsU9LySVue9RTwdDVX/T0e2Y6jRYWXERKElIjpuEOEnxaXffI0X7RUwVzfYLfzuLXSNJDYoRYUAmRUcyln20A==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
browserslist "^4.24.4"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
core-util-is@~1.0.0:
|
|
|
|
|
version "1.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
cors@^2.8.5:
|
|
|
|
|
version "2.8.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
|
|
|
|
|
dependencies:
|
|
|
|
|
object-assign "^4"
|
|
|
|
|
vary "^1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
cosmiconfig@^9.0.0:
|
|
|
|
|
version "9.0.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz"
|
|
|
|
|
integrity sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==
|
|
|
|
|
dependencies:
|
|
|
|
|
env-paths "^2.2.1"
|
|
|
|
|
import-fresh "^3.3.0"
|
|
|
|
|
js-yaml "^4.1.0"
|
|
|
|
|
parse-json "^5.2.0"
|
|
|
|
|
|
|
|
|
|
create-jest@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/create-jest/-/create-jest-29.7.0.tgz#a355c5b3cb1e1af02ba177fe7afd7feee49a5320"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
exit "^0.1.2"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-config "^29.7.0"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
prompts "^2.0.1"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
create-require@^1.1.0:
|
|
|
|
|
version "1.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==
|
|
|
|
|
|
2024-03-11 13:55:24 -04:00
|
|
|
cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "7.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==
|
|
|
|
|
dependencies:
|
|
|
|
|
path-key "^3.1.0"
|
|
|
|
|
shebang-command "^2.0.0"
|
|
|
|
|
which "^2.0.1"
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
cross-spawn@^7.0.6:
|
|
|
|
|
version "7.0.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
|
|
|
|
|
dependencies:
|
|
|
|
|
path-key "^3.1.0"
|
|
|
|
|
shebang-command "^2.0.0"
|
|
|
|
|
which "^2.0.1"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
css-select@^5.1.0:
|
|
|
|
|
version "5.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==
|
|
|
|
|
dependencies:
|
|
|
|
|
boolbase "^1.0.0"
|
|
|
|
|
css-what "^6.1.0"
|
|
|
|
|
domhandler "^5.0.2"
|
|
|
|
|
domutils "^3.0.1"
|
|
|
|
|
nth-check "^2.0.1"
|
|
|
|
|
|
|
|
|
|
css-what@^6.1.0:
|
|
|
|
|
version "6.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
cssom@^0.5.0:
|
|
|
|
|
version "0.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cssom/-/cssom-0.5.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==
|
|
|
|
|
|
|
|
|
|
cssom@~0.3.6:
|
|
|
|
|
version "0.3.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==
|
|
|
|
|
|
|
|
|
|
cssstyle@^2.3.0:
|
|
|
|
|
version "2.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==
|
|
|
|
|
dependencies:
|
|
|
|
|
cssom "~0.3.6"
|
|
|
|
|
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
cssstyle@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/cssstyle/-/cssstyle-3.0.0.tgz"
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
integrity sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==
|
|
|
|
|
dependencies:
|
|
|
|
|
rrweb-cssom "^0.6.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
csstype@^3.0.2:
|
|
|
|
|
version "3.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/csstype/-/csstype-3.1.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-DJR/VvkAvSZW9bTouZue2sSxDwdTN92uHjqeKVm+0dAqdfNykRzQ95tay8aXMBAAPpUiq4Qcug2L7neoRh2Egw==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
data-uri-to-buffer@^6.0.2:
|
|
|
|
|
version "6.0.2"
|
|
|
|
|
resolved "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz"
|
|
|
|
|
integrity sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
data-urls@^3.0.2:
|
|
|
|
|
version "3.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/data-urls/-/data-urls-3.0.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
abab "^2.0.6"
|
|
|
|
|
whatwg-mimetype "^3.0.0"
|
|
|
|
|
whatwg-url "^11.0.0"
|
|
|
|
|
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
data-urls@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/data-urls/-/data-urls-4.0.0.tgz"
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
integrity sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==
|
|
|
|
|
dependencies:
|
|
|
|
|
abab "^2.0.6"
|
|
|
|
|
whatwg-mimetype "^3.0.0"
|
|
|
|
|
whatwg-url "^12.0.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
data-view-buffer@^1.0.2:
|
|
|
|
|
version "1.0.2"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570"
|
|
|
|
|
integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
is-data-view "^1.0.2"
|
|
|
|
|
|
|
|
|
|
data-view-byte-length@^1.0.2:
|
|
|
|
|
version "1.0.2"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735"
|
|
|
|
|
integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
is-data-view "^1.0.2"
|
|
|
|
|
|
|
|
|
|
data-view-byte-offset@^1.0.1:
|
|
|
|
|
version "1.0.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191"
|
|
|
|
|
integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.2"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
is-data-view "^1.0.1"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
date-fns@^2.29.1:
|
2023-06-05 13:35:39 -04:00
|
|
|
version "2.30.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/runtime" "^7.21.0"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4, debug@^4.3.5, debug@^4.4.0:
|
2025-02-25 12:19:11 -05:00
|
|
|
version "4.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==
|
|
|
|
|
dependencies:
|
|
|
|
|
ms "^2.1.3"
|
|
|
|
|
|
2022-11-15 13:24:14 -05:00
|
|
|
decamelize@^1.2.0:
|
|
|
|
|
version "1.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz"
|
2022-11-15 13:24:14 -05:00
|
|
|
integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
decamelize@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
decimal.js@^10.3.1:
|
|
|
|
|
version "10.4.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-F29o+vci4DodHYT9UrR5IEbfBw9pE5eSapIJdTqXK5+6hq+t8VRxwQyKlW2i+KDKFkkJQRvFyI/QXD83h8LyQw==
|
|
|
|
|
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
decimal.js@^10.4.3:
|
|
|
|
|
version "10.4.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/decimal.js/-/decimal.js-10.4.3.tgz"
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
integrity sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
dedent@^0.7.0:
|
|
|
|
|
version "0.7.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
dedent@^1.0.0:
|
2025-05-02 13:56:01 -04:00
|
|
|
version "1.6.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/dedent/-/dedent-1.6.0.tgz#79d52d6389b1ffa67d2bcef59ba51847a9d503b2"
|
|
|
|
|
integrity sha512-F1Z+5UCFpmQUzJa11agbyPVMbpgT/qA3/SKyJ1jyBgm7dUcUEa8v9JwDkerSQXfakBwFljIxhOJqGkjUwZ9FSA==
|
2025-04-30 12:44:05 -07:00
|
|
|
|
|
|
|
|
deep-is@^0.1.3:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "0.1.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==
|
|
|
|
|
|
|
|
|
|
deepmerge@^4.2.2:
|
|
|
|
|
version "4.2.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==
|
|
|
|
|
|
2025-04-24 14:57:44 -04:00
|
|
|
deepmerge@^4.3.1:
|
|
|
|
|
version "4.3.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz"
|
2025-04-24 14:57:44 -04:00
|
|
|
integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==
|
|
|
|
|
|
2024-05-01 13:35:03 +01:00
|
|
|
defaults@^1.0.3:
|
|
|
|
|
version "1.0.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz"
|
2024-05-01 13:35:03 +01:00
|
|
|
integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==
|
|
|
|
|
dependencies:
|
|
|
|
|
clone "^1.0.2"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
define-data-property@^1.0.1, define-data-property@^1.1.4:
|
|
|
|
|
version "1.1.4"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
|
|
|
|
|
integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
|
|
|
|
|
dependencies:
|
|
|
|
|
es-define-property "^1.0.0"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
gopd "^1.0.1"
|
|
|
|
|
|
|
|
|
|
define-properties@^1.2.1:
|
|
|
|
|
version "1.2.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
|
|
|
|
|
integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
|
|
|
|
|
dependencies:
|
|
|
|
|
define-data-property "^1.0.1"
|
|
|
|
|
has-property-descriptors "^1.0.0"
|
|
|
|
|
object-keys "^1.1.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
degenerator@^5.0.0:
|
|
|
|
|
version "5.0.1"
|
|
|
|
|
resolved "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz"
|
|
|
|
|
integrity sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
ast-types "^0.13.4"
|
|
|
|
|
escodegen "^2.1.0"
|
|
|
|
|
esprima "^4.0.1"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
|
|
|
|
delayed-stream@~1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
depd@2.0.0, depd@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
detect-file@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/detect-file/-/detect-file-1.0.0.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
detect-newline@^3.0.0:
|
|
|
|
|
version "3.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
devtools-protocol@0.0.1425554:
|
|
|
|
|
version "0.0.1425554"
|
|
|
|
|
resolved "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1425554.tgz"
|
|
|
|
|
integrity sha512-uRfxR6Nlzdzt0ihVIkV+sLztKgs7rgquY/Mhcv1YNCWDh5IZgl5mnn2aeEnW5stYTE0wwiF4RYVz8eMEpV1SEw==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
diff-sequences@^28.1.1:
|
|
|
|
|
version "28.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
diff-sequences@^29.0.0:
|
|
|
|
|
version "29.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-7Qe/zd1wxSDL4D/X/FPjOMB+ZMDt71W94KYaq05I2l0oQqgXgs7s4ftYYmV38gBSrPz2vcygxfs1xn0FT+rKNA==
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
diff-sequences@^29.4.3:
|
|
|
|
|
version "29.4.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.4.3.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-ofrBgwpPhCD85kMKtE9RYFFq6OC1A89oW2vvgWZNCwxrUpRUILopY7lsYyMDSjc8g6U6aiO0Qubg6r4Wgt5ZnA==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
diff-sequences@^29.6.3:
|
|
|
|
|
version "29.6.3"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-29.6.3.tgz#4deaf894d11407c51efc8418012f9e70b84ea921"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
diff@^4.0.1:
|
|
|
|
|
version "4.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
diff@^5.2.0:
|
|
|
|
|
version "5.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
difflib@~0.2.1:
|
|
|
|
|
version "0.2.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/difflib/-/difflib-0.2.4.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-9YVwmMb0wQHQNr5J9m6BSj6fk4pfGITGQOOs+D9Fl+INODWFOfvhIU1hNv6GgR1RBoC/9NJcwu77zShxV0kT7w==
|
|
|
|
|
dependencies:
|
|
|
|
|
heap ">= 0.2.0"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
dir-glob@^3.0.1:
|
|
|
|
|
version "3.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==
|
|
|
|
|
dependencies:
|
|
|
|
|
path-type "^4.0.0"
|
|
|
|
|
|
|
|
|
|
doctrine@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==
|
|
|
|
|
dependencies:
|
|
|
|
|
esutils "^2.0.2"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
dom-accessibility-api@^0.5.9:
|
|
|
|
|
version "0.5.14"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.14.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-NMt+m9zFMPZe0JcY9gN224Qvk6qLIdqex29clBvc/y75ZBX9YA9wNK3frsYvu2DI1xcCIwxwnX+TlsJ2DSOADg==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
dom-serializer@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==
|
|
|
|
|
dependencies:
|
|
|
|
|
domelementtype "^2.3.0"
|
|
|
|
|
domhandler "^5.0.2"
|
|
|
|
|
entities "^4.2.0"
|
|
|
|
|
|
|
|
|
|
domelementtype@^2.3.0:
|
|
|
|
|
version "2.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
domexception@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/domexception/-/domexception-4.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==
|
|
|
|
|
dependencies:
|
|
|
|
|
webidl-conversions "^7.0.0"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
domhandler@^5.0.2, domhandler@^5.0.3:
|
|
|
|
|
version "5.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==
|
|
|
|
|
dependencies:
|
|
|
|
|
domelementtype "^2.3.0"
|
|
|
|
|
|
|
|
|
|
domutils@^3.0.1, domutils@^3.1.0:
|
|
|
|
|
version "3.2.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/domutils/-/domutils-3.2.2.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-6kZKyUajlDuqlHKVX1w7gyslj9MPIXzIFiz/rGu35uC1wMi+kMhQwGhl4lt9unC9Vb9INnY9Z3/ZA3+FhASLaw==
|
|
|
|
|
dependencies:
|
|
|
|
|
dom-serializer "^2.0.0"
|
|
|
|
|
domelementtype "^2.3.0"
|
|
|
|
|
domhandler "^5.0.3"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
dreamopt@~0.6.0:
|
|
|
|
|
version "0.6.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/dreamopt/-/dreamopt-0.6.0.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-KRJa47iBEK0y6ZtgCgy2ykuvMT8c9gj3ua9Dv7vCkclFJJeH2FjhGY2xO5qBoWGahsjCGMlk4Cq9wJYeWxuYhQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
wordwrap ">=0.0.2"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
dunder-proto@^1.0.0, dunder-proto@^1.0.1:
|
2025-04-14 18:39:00 -04:00
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bind-apply-helpers "^1.0.1"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
gopd "^1.2.0"
|
|
|
|
|
|
2024-03-11 13:55:24 -04:00
|
|
|
eastasianwidth@^0.2.0:
|
|
|
|
|
version "0.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
ee-first@1.1.1:
|
|
|
|
|
version "1.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
ejs@^3.1.10:
|
|
|
|
|
version "3.1.10"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/ejs/-/ejs-3.1.10.tgz#69ab8358b14e896f80cc39e62087b88500c3ac3b"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==
|
|
|
|
|
dependencies:
|
|
|
|
|
jake "^10.8.5"
|
2023-06-05 13:35:39 -04:00
|
|
|
|
2025-01-02 16:59:45 -05:00
|
|
|
electron-to-chromium@^1.5.73:
|
2025-04-30 12:44:05 -07:00
|
|
|
version "1.5.143"
|
|
|
|
|
resolved "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.143.tgz"
|
|
|
|
|
integrity sha512-QqklJMOFBMqe46k8iIOwA9l2hz57V2OKMmP5eSWcUvwx+mASAsbU+wkF1pHjn9ZVSBPrsYWr4/W/95y5SwYg2g==
|
2024-04-23 12:28:41 +01:00
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
emittery@^0.10.2:
|
|
|
|
|
version "0.10.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
emittery@^0.13.1:
|
|
|
|
|
version "0.13.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
emoji-regex@^10.2.1:
|
|
|
|
|
version "10.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
emoji-regex@^8.0.0:
|
|
|
|
|
version "8.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
emoji-regex@^9.2.2:
|
|
|
|
|
version "9.2.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
enabled@2.0.x:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
encodeurl@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==
|
|
|
|
|
|
|
|
|
|
encoding-sniffer@^0.2.0:
|
|
|
|
|
version "0.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/encoding-sniffer/-/encoding-sniffer-0.2.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-ju7Wq1kg04I3HtiYIOrUrdfdDvkyO9s5XM8QAj/bN61Yo/Vb4vgJxy5vi4Yxk01gWHbrofpPtpxM8bKger9jhg==
|
|
|
|
|
dependencies:
|
|
|
|
|
iconv-lite "^0.6.3"
|
|
|
|
|
whatwg-encoding "^3.1.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
end-of-stream@^1.1.0:
|
|
|
|
|
version "1.4.4"
|
|
|
|
|
resolved "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz"
|
|
|
|
|
integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
once "^1.4.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
enhanced-resolve@^5.15.0:
|
|
|
|
|
version "5.18.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-0/r0MySGYG8YqlayBZ6MuCfECmHFdJ5qyPh8s8wa5Hnm6SaFLSK1VYCbj+NKp090Nm1caZhD+QTnmxO7esYGyQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
graceful-fs "^4.2.4"
|
|
|
|
|
tapable "^2.2.0"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
entities@^4.2.0, entities@^4.5.0:
|
|
|
|
|
version "4.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
entities@^4.4.0:
|
|
|
|
|
version "4.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
env-paths@^2.2.1:
|
|
|
|
|
version "2.2.1"
|
|
|
|
|
resolved "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz"
|
|
|
|
|
integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
error-ex@^1.3.1:
|
|
|
|
|
version "1.3.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==
|
|
|
|
|
dependencies:
|
|
|
|
|
is-arrayish "^0.2.1"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
es-abstract@^1.23.3, es-abstract@^1.23.5, es-abstract@^1.23.9:
|
|
|
|
|
version "1.24.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328"
|
|
|
|
|
integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==
|
|
|
|
|
dependencies:
|
|
|
|
|
array-buffer-byte-length "^1.0.2"
|
|
|
|
|
arraybuffer.prototype.slice "^1.0.4"
|
|
|
|
|
available-typed-arrays "^1.0.7"
|
|
|
|
|
call-bind "^1.0.8"
|
|
|
|
|
call-bound "^1.0.4"
|
|
|
|
|
data-view-buffer "^1.0.2"
|
|
|
|
|
data-view-byte-length "^1.0.2"
|
|
|
|
|
data-view-byte-offset "^1.0.1"
|
|
|
|
|
es-define-property "^1.0.1"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
es-object-atoms "^1.1.1"
|
|
|
|
|
es-set-tostringtag "^2.1.0"
|
|
|
|
|
es-to-primitive "^1.3.0"
|
|
|
|
|
function.prototype.name "^1.1.8"
|
|
|
|
|
get-intrinsic "^1.3.0"
|
|
|
|
|
get-proto "^1.0.1"
|
|
|
|
|
get-symbol-description "^1.1.0"
|
|
|
|
|
globalthis "^1.0.4"
|
|
|
|
|
gopd "^1.2.0"
|
|
|
|
|
has-property-descriptors "^1.0.2"
|
|
|
|
|
has-proto "^1.2.0"
|
|
|
|
|
has-symbols "^1.1.0"
|
|
|
|
|
hasown "^2.0.2"
|
|
|
|
|
internal-slot "^1.1.0"
|
|
|
|
|
is-array-buffer "^3.0.5"
|
|
|
|
|
is-callable "^1.2.7"
|
|
|
|
|
is-data-view "^1.0.2"
|
|
|
|
|
is-negative-zero "^2.0.3"
|
|
|
|
|
is-regex "^1.2.1"
|
|
|
|
|
is-set "^2.0.3"
|
|
|
|
|
is-shared-array-buffer "^1.0.4"
|
|
|
|
|
is-string "^1.1.1"
|
|
|
|
|
is-typed-array "^1.1.15"
|
|
|
|
|
is-weakref "^1.1.1"
|
|
|
|
|
math-intrinsics "^1.1.0"
|
|
|
|
|
object-inspect "^1.13.4"
|
|
|
|
|
object-keys "^1.1.1"
|
|
|
|
|
object.assign "^4.1.7"
|
|
|
|
|
own-keys "^1.0.1"
|
|
|
|
|
regexp.prototype.flags "^1.5.4"
|
|
|
|
|
safe-array-concat "^1.1.3"
|
|
|
|
|
safe-push-apply "^1.0.0"
|
|
|
|
|
safe-regex-test "^1.1.0"
|
|
|
|
|
set-proto "^1.0.0"
|
|
|
|
|
stop-iteration-iterator "^1.1.0"
|
|
|
|
|
string.prototype.trim "^1.2.10"
|
|
|
|
|
string.prototype.trimend "^1.0.9"
|
|
|
|
|
string.prototype.trimstart "^1.0.8"
|
|
|
|
|
typed-array-buffer "^1.0.3"
|
|
|
|
|
typed-array-byte-length "^1.0.3"
|
|
|
|
|
typed-array-byte-offset "^1.0.4"
|
|
|
|
|
typed-array-length "^1.0.7"
|
|
|
|
|
unbox-primitive "^1.1.0"
|
|
|
|
|
which-typed-array "^1.1.19"
|
|
|
|
|
|
|
|
|
|
es-define-property@^1.0.0, es-define-property@^1.0.1:
|
2025-04-14 18:39:00 -04:00
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
|
|
|
|
|
|
|
|
|
|
es-errors@^1.3.0:
|
|
|
|
|
version "1.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
|
|
|
|
|
|
|
|
|
|
es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
|
|
|
|
|
version "1.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
|
|
|
|
|
dependencies:
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
es-set-tostringtag@^2.1.0:
|
|
|
|
|
version "2.1.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d"
|
|
|
|
|
integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==
|
|
|
|
|
dependencies:
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
get-intrinsic "^1.2.6"
|
|
|
|
|
has-tostringtag "^1.0.2"
|
|
|
|
|
hasown "^2.0.2"
|
|
|
|
|
|
|
|
|
|
es-to-primitive@^1.3.0:
|
|
|
|
|
version "1.3.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18"
|
|
|
|
|
integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==
|
|
|
|
|
dependencies:
|
|
|
|
|
is-callable "^1.2.7"
|
|
|
|
|
is-date-object "^1.0.5"
|
|
|
|
|
is-symbol "^1.0.4"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
es5-ext@0.8.x:
|
|
|
|
|
version "0.8.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/es5-ext/-/es5-ext-0.8.2.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-H19ompyhnKiBdjHR1DPHvf5RHgHPmJaY9JNzFGbMbPgdsUkvnUCN1Ke8J4Y0IMyTwFM2M9l4h2GoHwzwpSmXbA==
|
|
|
|
|
|
2025-02-12 11:59:56 -05:00
|
|
|
esbuild@^0.25.0:
|
|
|
|
|
version "0.25.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/esbuild/-/esbuild-0.25.0.tgz"
|
2025-02-12 11:59:56 -05:00
|
|
|
integrity sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==
|
2025-01-02 16:59:56 -05:00
|
|
|
optionalDependencies:
|
2025-02-12 11:59:56 -05:00
|
|
|
"@esbuild/aix-ppc64" "0.25.0"
|
|
|
|
|
"@esbuild/android-arm" "0.25.0"
|
|
|
|
|
"@esbuild/android-arm64" "0.25.0"
|
|
|
|
|
"@esbuild/android-x64" "0.25.0"
|
|
|
|
|
"@esbuild/darwin-arm64" "0.25.0"
|
|
|
|
|
"@esbuild/darwin-x64" "0.25.0"
|
|
|
|
|
"@esbuild/freebsd-arm64" "0.25.0"
|
|
|
|
|
"@esbuild/freebsd-x64" "0.25.0"
|
|
|
|
|
"@esbuild/linux-arm" "0.25.0"
|
|
|
|
|
"@esbuild/linux-arm64" "0.25.0"
|
|
|
|
|
"@esbuild/linux-ia32" "0.25.0"
|
|
|
|
|
"@esbuild/linux-loong64" "0.25.0"
|
|
|
|
|
"@esbuild/linux-mips64el" "0.25.0"
|
|
|
|
|
"@esbuild/linux-ppc64" "0.25.0"
|
|
|
|
|
"@esbuild/linux-riscv64" "0.25.0"
|
|
|
|
|
"@esbuild/linux-s390x" "0.25.0"
|
|
|
|
|
"@esbuild/linux-x64" "0.25.0"
|
|
|
|
|
"@esbuild/netbsd-arm64" "0.25.0"
|
|
|
|
|
"@esbuild/netbsd-x64" "0.25.0"
|
|
|
|
|
"@esbuild/openbsd-arm64" "0.25.0"
|
|
|
|
|
"@esbuild/openbsd-x64" "0.25.0"
|
|
|
|
|
"@esbuild/sunos-x64" "0.25.0"
|
|
|
|
|
"@esbuild/win32-arm64" "0.25.0"
|
|
|
|
|
"@esbuild/win32-ia32" "0.25.0"
|
|
|
|
|
"@esbuild/win32-x64" "0.25.0"
|
2025-01-02 16:59:56 -05:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
escalade@^3.1.1, escalade@^3.2.0:
|
2024-09-27 15:15:15 -04:00
|
|
|
version "3.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==
|
2024-05-20 11:47:51 +01:00
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
escape-html@^1.0.3:
|
|
|
|
|
version "1.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
|
|
|
|
|
|
2024-03-25 15:00:31 -04:00
|
|
|
escape-string-regexp@^1.0.5:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "1.0.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
|
|
|
|
|
|
|
|
|
|
escape-string-regexp@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
escape-string-regexp@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
escodegen@^2.0.0, escodegen@^2.1.0:
|
|
|
|
|
version "2.1.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz"
|
|
|
|
|
integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
|
|
|
|
esprima "^4.0.1"
|
|
|
|
|
estraverse "^5.2.0"
|
|
|
|
|
esutils "^2.0.2"
|
|
|
|
|
optionalDependencies:
|
|
|
|
|
source-map "~0.6.1"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
eslint-scope@^7.2.2:
|
2023-11-08 08:27:41 +00:00
|
|
|
version "7.2.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz"
|
2023-11-08 08:27:41 +00:00
|
|
|
integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==
|
2022-10-19 13:00:47 -07:00
|
|
|
dependencies:
|
|
|
|
|
esrecurse "^4.3.0"
|
|
|
|
|
estraverse "^5.2.0"
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
eslint-scope@^8.2.0:
|
|
|
|
|
version "8.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.2.0.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==
|
|
|
|
|
dependencies:
|
|
|
|
|
esrecurse "^4.3.0"
|
|
|
|
|
estraverse "^5.2.0"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
eslint-visitor-keys@^3.3.0:
|
|
|
|
|
version "3.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
eslint-visitor-keys@^3.4.1:
|
|
|
|
|
version "3.4.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.1.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-pZnmmLwYzf+kWaM/Qgrvpen51upAktaaiI01nsJD/Yr3lMOdNtq0cxkrrg16w64VtisN6okbs7Q8AfGqj4c9fA==
|
|
|
|
|
|
2024-03-25 15:00:34 -04:00
|
|
|
eslint-visitor-keys@^3.4.3:
|
|
|
|
|
version "3.4.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz"
|
2024-03-25 15:00:34 -04:00
|
|
|
integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
eslint-visitor-keys@^4.2.0:
|
|
|
|
|
version "4.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==
|
|
|
|
|
|
2024-03-25 15:00:34 -04:00
|
|
|
eslint@8.57.0:
|
|
|
|
|
version "8.57.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz"
|
2024-03-25 15:00:34 -04:00
|
|
|
integrity sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@eslint-community/eslint-utils" "^4.2.0"
|
|
|
|
|
"@eslint-community/regexpp" "^4.6.1"
|
|
|
|
|
"@eslint/eslintrc" "^2.1.4"
|
|
|
|
|
"@eslint/js" "8.57.0"
|
|
|
|
|
"@humanwhocodes/config-array" "^0.11.14"
|
|
|
|
|
"@humanwhocodes/module-importer" "^1.0.1"
|
|
|
|
|
"@nodelib/fs.walk" "^1.2.8"
|
|
|
|
|
"@ungap/structured-clone" "^1.2.0"
|
|
|
|
|
ajv "^6.12.4"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
cross-spawn "^7.0.2"
|
|
|
|
|
debug "^4.3.2"
|
|
|
|
|
doctrine "^3.0.0"
|
|
|
|
|
escape-string-regexp "^4.0.0"
|
|
|
|
|
eslint-scope "^7.2.2"
|
|
|
|
|
eslint-visitor-keys "^3.4.3"
|
|
|
|
|
espree "^9.6.1"
|
|
|
|
|
esquery "^1.4.2"
|
|
|
|
|
esutils "^2.0.2"
|
|
|
|
|
fast-deep-equal "^3.1.3"
|
|
|
|
|
file-entry-cache "^6.0.1"
|
|
|
|
|
find-up "^5.0.0"
|
|
|
|
|
glob-parent "^6.0.2"
|
|
|
|
|
globals "^13.19.0"
|
|
|
|
|
graphemer "^1.4.0"
|
|
|
|
|
ignore "^5.2.0"
|
|
|
|
|
imurmurhash "^0.1.4"
|
|
|
|
|
is-glob "^4.0.0"
|
|
|
|
|
is-path-inside "^3.0.3"
|
|
|
|
|
js-yaml "^4.1.0"
|
|
|
|
|
json-stable-stringify-without-jsonify "^1.0.1"
|
|
|
|
|
levn "^0.4.1"
|
|
|
|
|
lodash.merge "^4.6.2"
|
|
|
|
|
minimatch "^3.1.2"
|
|
|
|
|
natural-compare "^1.4.0"
|
|
|
|
|
optionator "^0.9.3"
|
|
|
|
|
strip-ansi "^6.0.1"
|
|
|
|
|
text-table "^0.2.0"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
eslint@^8.57.1:
|
|
|
|
|
version "8.57.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/eslint/-/eslint-8.57.1.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==
|
2023-06-05 13:35:39 -04:00
|
|
|
dependencies:
|
|
|
|
|
"@eslint-community/eslint-utils" "^4.2.0"
|
2024-09-27 15:15:15 -04:00
|
|
|
"@eslint-community/regexpp" "^4.6.1"
|
|
|
|
|
"@eslint/eslintrc" "^2.1.4"
|
|
|
|
|
"@eslint/js" "8.57.1"
|
|
|
|
|
"@humanwhocodes/config-array" "^0.13.0"
|
2023-06-05 13:35:39 -04:00
|
|
|
"@humanwhocodes/module-importer" "^1.0.1"
|
|
|
|
|
"@nodelib/fs.walk" "^1.2.8"
|
2024-09-27 15:15:15 -04:00
|
|
|
"@ungap/structured-clone" "^1.2.0"
|
|
|
|
|
ajv "^6.12.4"
|
2023-06-05 13:35:39 -04:00
|
|
|
chalk "^4.0.0"
|
|
|
|
|
cross-spawn "^7.0.2"
|
|
|
|
|
debug "^4.3.2"
|
|
|
|
|
doctrine "^3.0.0"
|
|
|
|
|
escape-string-regexp "^4.0.0"
|
2024-09-27 15:15:15 -04:00
|
|
|
eslint-scope "^7.2.2"
|
|
|
|
|
eslint-visitor-keys "^3.4.3"
|
|
|
|
|
espree "^9.6.1"
|
2023-06-05 13:35:39 -04:00
|
|
|
esquery "^1.4.2"
|
|
|
|
|
esutils "^2.0.2"
|
|
|
|
|
fast-deep-equal "^3.1.3"
|
|
|
|
|
file-entry-cache "^6.0.1"
|
|
|
|
|
find-up "^5.0.0"
|
|
|
|
|
glob-parent "^6.0.2"
|
|
|
|
|
globals "^13.19.0"
|
|
|
|
|
graphemer "^1.4.0"
|
|
|
|
|
ignore "^5.2.0"
|
|
|
|
|
imurmurhash "^0.1.4"
|
|
|
|
|
is-glob "^4.0.0"
|
|
|
|
|
is-path-inside "^3.0.3"
|
|
|
|
|
js-yaml "^4.1.0"
|
|
|
|
|
json-stable-stringify-without-jsonify "^1.0.1"
|
|
|
|
|
levn "^0.4.1"
|
|
|
|
|
lodash.merge "^4.6.2"
|
|
|
|
|
minimatch "^3.1.2"
|
|
|
|
|
natural-compare "^1.4.0"
|
2024-09-27 15:15:15 -04:00
|
|
|
optionator "^0.9.3"
|
2023-06-05 13:35:39 -04:00
|
|
|
strip-ansi "^6.0.1"
|
|
|
|
|
text-table "^0.2.0"
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
eslint@^9.13.0:
|
|
|
|
|
version "9.17.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/eslint/-/eslint-9.17.0.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-evtlNcpJg+cZLcnVKwsai8fExnqjGPicK7gnUtlNuzu+Fv9bI0aLpND5T44VLQtoMEnI57LoXO9XAkIXwohKrA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@eslint-community/eslint-utils" "^4.2.0"
|
|
|
|
|
"@eslint-community/regexpp" "^4.12.1"
|
|
|
|
|
"@eslint/config-array" "^0.19.0"
|
|
|
|
|
"@eslint/core" "^0.9.0"
|
|
|
|
|
"@eslint/eslintrc" "^3.2.0"
|
|
|
|
|
"@eslint/js" "9.17.0"
|
|
|
|
|
"@eslint/plugin-kit" "^0.2.3"
|
|
|
|
|
"@humanfs/node" "^0.16.6"
|
|
|
|
|
"@humanwhocodes/module-importer" "^1.0.1"
|
|
|
|
|
"@humanwhocodes/retry" "^0.4.1"
|
|
|
|
|
"@types/estree" "^1.0.6"
|
|
|
|
|
"@types/json-schema" "^7.0.15"
|
|
|
|
|
ajv "^6.12.4"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
cross-spawn "^7.0.6"
|
|
|
|
|
debug "^4.3.2"
|
|
|
|
|
escape-string-regexp "^4.0.0"
|
|
|
|
|
eslint-scope "^8.2.0"
|
|
|
|
|
eslint-visitor-keys "^4.2.0"
|
|
|
|
|
espree "^10.3.0"
|
|
|
|
|
esquery "^1.5.0"
|
|
|
|
|
esutils "^2.0.2"
|
|
|
|
|
fast-deep-equal "^3.1.3"
|
|
|
|
|
file-entry-cache "^8.0.0"
|
|
|
|
|
find-up "^5.0.0"
|
|
|
|
|
glob-parent "^6.0.2"
|
|
|
|
|
ignore "^5.2.0"
|
|
|
|
|
imurmurhash "^0.1.4"
|
|
|
|
|
is-glob "^4.0.0"
|
|
|
|
|
json-stable-stringify-without-jsonify "^1.0.1"
|
|
|
|
|
lodash.merge "^4.6.2"
|
|
|
|
|
minimatch "^3.1.2"
|
|
|
|
|
natural-compare "^1.4.0"
|
|
|
|
|
optionator "^0.9.3"
|
|
|
|
|
|
|
|
|
|
espree@^10.0.1, espree@^10.3.0:
|
|
|
|
|
version "10.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/espree/-/espree-10.3.0.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-0QYC8b24HWY8zjRnDTL6RiHfDbAWn63qb4LMj1Z4b076A4une81+z03Kg7l7mn/48PUTqoLptSXez8oknU8Clg==
|
|
|
|
|
dependencies:
|
|
|
|
|
acorn "^8.14.0"
|
|
|
|
|
acorn-jsx "^5.3.2"
|
|
|
|
|
eslint-visitor-keys "^4.2.0"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
espree@^9.6.0, espree@^9.6.1:
|
2023-11-08 08:27:41 +00:00
|
|
|
version "9.6.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz"
|
2023-11-08 08:27:41 +00:00
|
|
|
integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==
|
2022-10-19 13:00:47 -07:00
|
|
|
dependencies:
|
2023-11-08 08:27:41 +00:00
|
|
|
acorn "^8.9.0"
|
2022-10-19 13:00:47 -07:00
|
|
|
acorn-jsx "^5.3.2"
|
2023-11-08 08:27:41 +00:00
|
|
|
eslint-visitor-keys "^3.4.1"
|
2022-10-19 13:00:47 -07:00
|
|
|
|
2024-01-12 12:26:30 -08:00
|
|
|
esprima@^4.0.0, esprima@^4.0.1:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "4.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
esquery@^1.4.2:
|
2023-07-21 09:19:17 -07:00
|
|
|
version "1.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz"
|
2023-07-21 09:19:17 -07:00
|
|
|
integrity sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==
|
|
|
|
|
dependencies:
|
|
|
|
|
estraverse "^5.1.0"
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
esquery@^1.5.0:
|
|
|
|
|
version "1.6.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==
|
|
|
|
|
dependencies:
|
|
|
|
|
estraverse "^5.1.0"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
esrecurse@^4.3.0:
|
|
|
|
|
version "4.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==
|
|
|
|
|
dependencies:
|
|
|
|
|
estraverse "^5.2.0"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
estraverse@^5.1.0, estraverse@^5.2.0:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "5.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==
|
|
|
|
|
|
|
|
|
|
esutils@^2.0.2:
|
|
|
|
|
version "2.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
etag@^1.8.1:
|
|
|
|
|
version "1.8.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
|
|
|
|
|
|
|
|
|
|
eventsource-parser@^3.0.1:
|
|
|
|
|
version "3.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/eventsource-parser/-/eventsource-parser-3.0.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-VARTJ9CYeuQYb0pZEPbzi740OWFgpHe7AYJ2WFZVnUDUQp5Dk2yJUgF36YsZ81cOyxT0QxmXD2EQpapAouzWVA==
|
|
|
|
|
|
|
|
|
|
eventsource@^3.0.2:
|
|
|
|
|
version "3.0.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/eventsource/-/eventsource-3.0.6.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-l19WpE2m9hSuyP06+FbuUUf1G+R0SFLrtQfbRb9PRr+oimOfxQhgGCbVaXg5IvZyyTThJsxh6L/srkMiCeBPDA==
|
|
|
|
|
dependencies:
|
|
|
|
|
eventsource-parser "^3.0.1"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
execa@^5.0.0:
|
|
|
|
|
version "5.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==
|
|
|
|
|
dependencies:
|
|
|
|
|
cross-spawn "^7.0.3"
|
|
|
|
|
get-stream "^6.0.0"
|
|
|
|
|
human-signals "^2.1.0"
|
|
|
|
|
is-stream "^2.0.0"
|
|
|
|
|
merge-stream "^2.0.0"
|
|
|
|
|
npm-run-path "^4.0.1"
|
|
|
|
|
onetime "^5.1.2"
|
|
|
|
|
signal-exit "^3.0.3"
|
|
|
|
|
strip-final-newline "^2.0.0"
|
|
|
|
|
|
|
|
|
|
exit@^0.1.2:
|
|
|
|
|
version "0.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
expand-tilde@^2.0.0, expand-tilde@^2.0.2:
|
|
|
|
|
version "2.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/expand-tilde/-/expand-tilde-2.0.2.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==
|
|
|
|
|
dependencies:
|
|
|
|
|
homedir-polyfill "^1.0.1"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
expect@^28.0.0, expect@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/expect-utils" "^28.1.3"
|
|
|
|
|
jest-get-type "^28.0.2"
|
|
|
|
|
jest-matcher-utils "^28.1.3"
|
|
|
|
|
jest-message-util "^28.1.3"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
expect@^29.0.0, expect@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/expect/-/expect-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-t8l5DTws3212VbmPL+tBFXhjRHLmctHB0oQbL8eUc6S7NzZtYUhycrFO9mkxA0ZUC6FAWdNi7JchJSkODtcu1Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/expect-utils" "^29.0.3"
|
|
|
|
|
jest-get-type "^29.0.0"
|
|
|
|
|
jest-matcher-utils "^29.0.3"
|
|
|
|
|
jest-message-util "^29.0.3"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
expect@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/expect/-/expect-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-yM7xqUrCO2JdpFo4XpM82t+PJBFybdqoQuJLDGeDX2ij8NZzqRHyu3Hp188/JX7SWqud+7t4MUdvcgGBICMHZg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/expect-utils" "^29.5.0"
|
|
|
|
|
jest-get-type "^29.4.3"
|
|
|
|
|
jest-matcher-utils "^29.5.0"
|
|
|
|
|
jest-message-util "^29.5.0"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
expect@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/expect/-/expect-29.7.0.tgz#578874590dcb3214514084c08115d8aee61e11bc"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/expect-utils" "^29.7.0"
|
|
|
|
|
jest-get-type "^29.6.3"
|
|
|
|
|
jest-matcher-utils "^29.7.0"
|
|
|
|
|
jest-message-util "^29.7.0"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
expect@^30.0.0:
|
|
|
|
|
version "30.0.5"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/expect/-/expect-30.0.5.tgz#c23bf193c5e422a742bfd2990ad990811de41a5a"
|
|
|
|
|
integrity sha512-P0te2pt+hHI5qLJkIR+iMvS+lYUZml8rKKsohVHAGY+uClp9XVbdyYNJOIjSRpHVp8s8YqxJCiHUkSYZGr8rtQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/expect-utils" "30.0.5"
|
|
|
|
|
"@jest/get-type" "30.0.1"
|
|
|
|
|
jest-matcher-utils "30.0.5"
|
|
|
|
|
jest-message-util "30.0.5"
|
|
|
|
|
jest-mock "30.0.5"
|
|
|
|
|
jest-util "30.0.5"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
express-rate-limit@^7.5.0:
|
|
|
|
|
version "7.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/express-rate-limit/-/express-rate-limit-7.5.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-eB5zbQh5h+VenMPM3fh+nw1YExi5nMr6HUCR62ELSP11huvxm/Uir1H1QEyTkk5QX6A58pX6NmaTMceKZ0Eodg==
|
|
|
|
|
|
|
|
|
|
express@^5.0.1:
|
|
|
|
|
version "5.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/express/-/express-5.1.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==
|
|
|
|
|
dependencies:
|
|
|
|
|
accepts "^2.0.0"
|
|
|
|
|
body-parser "^2.2.0"
|
|
|
|
|
content-disposition "^1.0.0"
|
|
|
|
|
content-type "^1.0.5"
|
|
|
|
|
cookie "^0.7.1"
|
|
|
|
|
cookie-signature "^1.2.1"
|
|
|
|
|
debug "^4.4.0"
|
|
|
|
|
encodeurl "^2.0.0"
|
|
|
|
|
escape-html "^1.0.3"
|
|
|
|
|
etag "^1.8.1"
|
|
|
|
|
finalhandler "^2.1.0"
|
|
|
|
|
fresh "^2.0.0"
|
|
|
|
|
http-errors "^2.0.0"
|
|
|
|
|
merge-descriptors "^2.0.0"
|
|
|
|
|
mime-types "^3.0.0"
|
|
|
|
|
on-finished "^2.4.1"
|
|
|
|
|
once "^1.4.0"
|
|
|
|
|
parseurl "^1.3.3"
|
|
|
|
|
proxy-addr "^2.0.7"
|
|
|
|
|
qs "^6.14.0"
|
|
|
|
|
range-parser "^1.2.1"
|
|
|
|
|
router "^2.2.0"
|
|
|
|
|
send "^1.1.0"
|
|
|
|
|
serve-static "^2.2.0"
|
|
|
|
|
statuses "^2.0.1"
|
|
|
|
|
type-is "^2.0.1"
|
|
|
|
|
vary "^1.1.2"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
extract-zip@^2.0.1:
|
|
|
|
|
version "2.0.1"
|
|
|
|
|
resolved "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz"
|
|
|
|
|
integrity sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==
|
|
|
|
|
dependencies:
|
|
|
|
|
debug "^4.1.1"
|
|
|
|
|
get-stream "^5.1.0"
|
|
|
|
|
yauzl "^2.10.0"
|
|
|
|
|
optionalDependencies:
|
|
|
|
|
"@types/yauzl" "^2.9.1"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3:
|
|
|
|
|
version "3.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
fast-fifo@^1.2.0, fast-fifo@^1.3.2:
|
|
|
|
|
version "1.3.2"
|
|
|
|
|
resolved "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz"
|
|
|
|
|
integrity sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
fast-glob@^3.2.9:
|
2022-10-19 13:00:47 -07:00
|
|
|
version "3.2.12"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@nodelib/fs.stat" "^2.0.2"
|
|
|
|
|
"@nodelib/fs.walk" "^1.2.3"
|
|
|
|
|
glob-parent "^5.1.2"
|
|
|
|
|
merge2 "^1.3.0"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
|
2024-04-23 12:28:41 +01:00
|
|
|
fast-glob@^3.3.2:
|
|
|
|
|
version "3.3.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz"
|
2024-04-23 12:28:41 +01:00
|
|
|
integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@nodelib/fs.stat" "^2.0.2"
|
|
|
|
|
"@nodelib/fs.walk" "^1.2.3"
|
|
|
|
|
glob-parent "^5.1.2"
|
|
|
|
|
merge2 "^1.3.0"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0, fast-json-stable-stringify@^2.1.0:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "2.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
fast-levenshtein@^2.0.6:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "2.0.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
fastq@^1.6.0:
|
|
|
|
|
version "1.13.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==
|
|
|
|
|
dependencies:
|
|
|
|
|
reusify "^1.0.4"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
fb-babel-plugin-utils@^0.13.0:
|
|
|
|
|
version "0.13.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fb-babel-plugin-utils/-/fb-babel-plugin-utils-0.13.1.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-AxAr7ut7v4fzHp5VETGxcDUPmRup5H7bkMNNfxaRunS3jzm2rOS5NLvCPCDnnQIiI6AB0x2GrOx/eIcAOVJAAA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.0.0"
|
|
|
|
|
"@babel/generator" "^7.0.0"
|
|
|
|
|
"@babel/parser" "^7.7.4"
|
|
|
|
|
"@babel/plugin-syntax-class-properties" "^7.0.0"
|
|
|
|
|
"@babel/plugin-syntax-flow" "^7.7.4"
|
|
|
|
|
"@babel/plugin-syntax-jsx" "^7.0.0"
|
|
|
|
|
"@babel/plugin-syntax-nullish-coalescing-operator" "^7.0.0"
|
|
|
|
|
"@babel/plugin-syntax-numeric-separator" "^7.2.0"
|
|
|
|
|
"@babel/plugin-syntax-object-rest-spread" "^7.0.0"
|
|
|
|
|
"@babel/plugin-syntax-optional-catch-binding" "^7.0.0"
|
|
|
|
|
"@babel/plugin-syntax-optional-chaining" "^7.0.0"
|
|
|
|
|
json-diff "^0.5.4"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
fb-watchman@^2.0.0:
|
|
|
|
|
version "2.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==
|
|
|
|
|
dependencies:
|
|
|
|
|
bser "2.1.1"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
fbt@^1.0.2:
|
|
|
|
|
version "1.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fbt/-/fbt-1.0.2.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-vWIasrcX34OW2EWohjrAQM0jpJBH2FjqxW9XrQd38xhtBVXWaks34ePWBSHO3QEShmirRx6kwJNZJrofsHjvlw==
|
2023-11-09 18:55:05 -05:00
|
|
|
dependencies:
|
|
|
|
|
invariant "^2.2.4"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
fd-slicer@~1.1.0:
|
|
|
|
|
version "1.1.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz"
|
|
|
|
|
integrity sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==
|
|
|
|
|
dependencies:
|
|
|
|
|
pend "~1.2.0"
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
fdir@^6.4.3:
|
|
|
|
|
version "6.4.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
fecha@^4.2.0:
|
|
|
|
|
version "4.2.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
file-entry-cache@^6.0.1:
|
|
|
|
|
version "6.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==
|
|
|
|
|
dependencies:
|
|
|
|
|
flat-cache "^3.0.4"
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
file-entry-cache@^8.0.0:
|
|
|
|
|
version "8.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
flat-cache "^4.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
filelist@^1.0.4:
|
|
|
|
|
version "1.0.4"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/filelist/-/filelist-1.0.4.tgz#f78978a1e944775ff9e62e744424f215e58352b5"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
minimatch "^5.0.1"
|
|
|
|
|
|
2024-10-11 16:29:34 -04:00
|
|
|
fill-range@^7.1.1:
|
|
|
|
|
version "7.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz"
|
2024-10-11 16:29:34 -04:00
|
|
|
integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
|
|
|
|
to-regex-range "^5.0.1"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
finalhandler@^2.1.0:
|
|
|
|
|
version "2.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
debug "^4.4.0"
|
|
|
|
|
encodeurl "^2.0.0"
|
|
|
|
|
escape-html "^1.0.3"
|
|
|
|
|
on-finished "^2.4.1"
|
|
|
|
|
parseurl "^1.3.3"
|
|
|
|
|
statuses "^2.0.1"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
find-cache-dir@^2.0.0:
|
|
|
|
|
version "2.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
commondir "^1.0.1"
|
|
|
|
|
make-dir "^2.0.0"
|
|
|
|
|
pkg-dir "^3.0.0"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
find-node-modules@2.1.3:
|
|
|
|
|
version "2.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/find-node-modules/-/find-node-modules-2.1.3.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-UC2I2+nx1ZuOBclWVNdcnbDR5dlrOdVb7xNjmT/lHE+LsgztWks3dG7boJ37yTS/venXw84B/mAW9uHVoC5QRg==
|
|
|
|
|
dependencies:
|
|
|
|
|
findup-sync "^4.0.0"
|
|
|
|
|
merge "^2.1.1"
|
|
|
|
|
|
2022-11-15 13:24:14 -05:00
|
|
|
find-up@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz"
|
2022-11-15 13:24:14 -05:00
|
|
|
integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==
|
|
|
|
|
dependencies:
|
|
|
|
|
locate-path "^3.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
find-up@^4.0.0, find-up@^4.1.0:
|
|
|
|
|
version "4.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==
|
|
|
|
|
dependencies:
|
|
|
|
|
locate-path "^5.0.0"
|
|
|
|
|
path-exists "^4.0.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
find-up@^5.0.0:
|
|
|
|
|
version "5.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==
|
|
|
|
|
dependencies:
|
|
|
|
|
locate-path "^6.0.0"
|
|
|
|
|
path-exists "^4.0.0"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
findup-sync@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/findup-sync/-/findup-sync-4.0.0.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-6jvvn/12IC4quLBL1KNokxC7wWTvYncaVUYSoxWw7YykPLuRrnv4qdHcSOywOI5RpkOVGeQRtWM8/q+G6W6qfQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
detect-file "^1.0.0"
|
|
|
|
|
is-glob "^4.0.0"
|
|
|
|
|
micromatch "^4.0.2"
|
|
|
|
|
resolve-dir "^1.0.1"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
flat-cache@^3.0.4:
|
|
|
|
|
version "3.0.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==
|
|
|
|
|
dependencies:
|
|
|
|
|
flatted "^3.1.0"
|
|
|
|
|
rimraf "^3.0.2"
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
flat-cache@^4.0.0:
|
|
|
|
|
version "4.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==
|
|
|
|
|
dependencies:
|
|
|
|
|
flatted "^3.2.9"
|
|
|
|
|
keyv "^4.5.4"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
flat@^5.0.2:
|
|
|
|
|
version "5.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
flatted@^3.1.0:
|
|
|
|
|
version "3.2.7"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
flatted@^3.2.9:
|
|
|
|
|
version "3.3.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/flatted/-/flatted-3.3.2.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-AiwGJM8YcNOaobumgtng+6NHuOqC3A7MixFeDafM3X9cIUM+xUXoS5Vfgf+OihAYe20fxqNM9yPBXJzRtZ/4eA==
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
flow-enums-runtime@^0.0.4:
|
|
|
|
|
version "0.0.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.4.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-kkJ/ABZb4rhyFw05yCWdcA1K2uW7ddYzz9zVNJp5kRX3BzsIynB4f0E4oLlf+zgDLErj9FwGda1qEAmhnRNXPQ==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
fn.name@1.x.x:
|
|
|
|
|
version "1.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==
|
|
|
|
|
|
2024-05-14 11:01:17 -04:00
|
|
|
folder-hash@^4.0.4:
|
|
|
|
|
version "4.0.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/folder-hash/-/folder-hash-4.0.4.tgz"
|
2024-05-14 11:01:17 -04:00
|
|
|
integrity sha512-zEyYH+UsHEfJJcCRSf9ai5I4CTZwZ8ObONRuEI5hcEmJY5pS0FUWKruX9mMnYJrgC7MlPFDYnGsK1R+WFYjLlQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
debug "^4.3.3"
|
|
|
|
|
minimatch "~5.1.2"
|
|
|
|
|
|
2024-05-21 01:41:16 -04:00
|
|
|
follow-redirects@^1.15.6:
|
|
|
|
|
version "1.15.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz"
|
2024-05-21 01:41:16 -04:00
|
|
|
integrity sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
for-each@^0.3.3, for-each@^0.3.5:
|
|
|
|
|
version "0.3.5"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47"
|
|
|
|
|
integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==
|
|
|
|
|
dependencies:
|
|
|
|
|
is-callable "^1.2.7"
|
|
|
|
|
|
2024-03-11 13:55:24 -04:00
|
|
|
foreground-child@^3.1.0:
|
|
|
|
|
version "3.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==
|
|
|
|
|
dependencies:
|
|
|
|
|
cross-spawn "^7.0.0"
|
|
|
|
|
signal-exit "^4.0.1"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
foreground-child@^3.1.1:
|
|
|
|
|
version "3.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==
|
|
|
|
|
dependencies:
|
|
|
|
|
cross-spawn "^7.0.0"
|
|
|
|
|
signal-exit "^4.0.1"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
form-data@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==
|
|
|
|
|
dependencies:
|
|
|
|
|
asynckit "^0.4.0"
|
|
|
|
|
combined-stream "^1.0.8"
|
|
|
|
|
mime-types "^2.1.12"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
forwarded@0.2.0:
|
|
|
|
|
version "0.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==
|
|
|
|
|
|
|
|
|
|
fresh@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==
|
|
|
|
|
|
2024-08-06 14:41:26 -04:00
|
|
|
fs-extra@^4.0.2:
|
|
|
|
|
version "4.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.3.tgz"
|
2024-08-06 14:41:26 -04:00
|
|
|
integrity sha512-q6rbdDd1o2mAnQreO7YADIxf/Whx4AHBiRf6d+/cVT8h44ss+lHgxf1FemcqDnQt9X3ct4McHr+JMGlYSsK7Cg==
|
|
|
|
|
dependencies:
|
|
|
|
|
graceful-fs "^4.1.2"
|
|
|
|
|
jsonfile "^4.0.0"
|
|
|
|
|
universalify "^0.1.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
fs.realpath@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==
|
|
|
|
|
|
2025-01-02 16:59:56 -05:00
|
|
|
fsevents@^2.3.2:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "2.3.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
fsevents@~2.3.2:
|
|
|
|
|
version "2.3.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
function-bind@^1.1.1:
|
|
|
|
|
version "1.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
function-bind@^1.1.2:
|
|
|
|
|
version "1.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
function.prototype.name@^1.1.6, function.prototype.name@^1.1.8:
|
|
|
|
|
version "1.1.8"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78"
|
|
|
|
|
integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bind "^1.0.8"
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
define-properties "^1.2.1"
|
|
|
|
|
functions-have-names "^1.2.3"
|
|
|
|
|
hasown "^2.0.2"
|
|
|
|
|
is-callable "^1.2.7"
|
|
|
|
|
|
|
|
|
|
functions-have-names@^1.2.3:
|
|
|
|
|
version "1.2.3"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
|
|
|
|
|
integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
|
|
|
|
|
|
2024-04-23 12:28:41 +01:00
|
|
|
gensync@^1.0.0-beta.2:
|
|
|
|
|
version "1.0.0-beta.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz"
|
2024-04-23 12:28:41 +01:00
|
|
|
integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==
|
|
|
|
|
|
2022-11-15 13:24:14 -05:00
|
|
|
get-caller-file@^2.0.1, get-caller-file@^2.0.5:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "2.0.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0:
|
2025-04-14 18:39:00 -04:00
|
|
|
version "1.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bind-apply-helpers "^1.0.2"
|
|
|
|
|
es-define-property "^1.0.1"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
es-object-atoms "^1.1.1"
|
|
|
|
|
function-bind "^1.1.2"
|
|
|
|
|
get-proto "^1.0.1"
|
|
|
|
|
gopd "^1.2.0"
|
|
|
|
|
has-symbols "^1.1.0"
|
|
|
|
|
hasown "^2.0.2"
|
|
|
|
|
math-intrinsics "^1.1.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
get-package-type@^0.1.0:
|
|
|
|
|
version "0.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
get-proto@^1.0.0, get-proto@^1.0.1:
|
2025-04-14 18:39:00 -04:00
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
|
|
|
|
|
dependencies:
|
|
|
|
|
dunder-proto "^1.0.1"
|
|
|
|
|
es-object-atoms "^1.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
get-stream@^5.1.0:
|
|
|
|
|
version "5.2.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz"
|
|
|
|
|
integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==
|
|
|
|
|
dependencies:
|
|
|
|
|
pump "^3.0.0"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
get-stream@^6.0.0:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "6.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
get-symbol-description@^1.1.0:
|
|
|
|
|
version "1.1.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee"
|
|
|
|
|
integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
get-intrinsic "^1.2.6"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
get-uri@^6.0.1:
|
|
|
|
|
version "6.0.4"
|
|
|
|
|
resolved "https://registry.npmjs.org/get-uri/-/get-uri-6.0.4.tgz"
|
|
|
|
|
integrity sha512-E1b1lFFLvLgak2whF2xDBcOy6NLVGZBqqjJjsIhvopKfWWEi64pLVTWWehV8KlLerZkfNTA95sTe2OdJKm1OzQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
basic-ftp "^5.0.2"
|
|
|
|
|
data-uri-to-buffer "^6.0.2"
|
|
|
|
|
debug "^4.3.4"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
glob-parent@^5.1.2, glob-parent@~5.1.2:
|
2022-10-19 13:00:47 -07:00
|
|
|
version "5.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
|
|
|
|
|
dependencies:
|
|
|
|
|
is-glob "^4.0.1"
|
|
|
|
|
|
2023-02-09 11:58:06 -08:00
|
|
|
glob-parent@^6.0.2:
|
2022-10-19 13:00:47 -07:00
|
|
|
version "6.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==
|
|
|
|
|
dependencies:
|
|
|
|
|
is-glob "^4.0.3"
|
|
|
|
|
|
2024-03-11 13:55:24 -04:00
|
|
|
glob@^10.3.10:
|
|
|
|
|
version "10.3.10"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==
|
|
|
|
|
dependencies:
|
|
|
|
|
foreground-child "^3.1.0"
|
|
|
|
|
jackspeak "^2.3.5"
|
|
|
|
|
minimatch "^9.0.1"
|
|
|
|
|
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
|
|
|
|
path-scurry "^1.10.1"
|
|
|
|
|
|
2025-04-14 15:15:14 -04:00
|
|
|
glob@^10.4.5:
|
2025-01-06 11:01:38 -05:00
|
|
|
version "10.4.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
|
|
|
|
|
dependencies:
|
|
|
|
|
foreground-child "^3.1.0"
|
|
|
|
|
jackspeak "^3.1.2"
|
|
|
|
|
minimatch "^9.0.4"
|
|
|
|
|
minipass "^7.1.2"
|
|
|
|
|
package-json-from-dist "^1.0.0"
|
|
|
|
|
path-scurry "^1.11.1"
|
|
|
|
|
|
2025-04-14 15:15:14 -04:00
|
|
|
glob@^11.0.0:
|
|
|
|
|
version "11.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/glob/-/glob-11.0.1.tgz"
|
2025-04-14 15:15:14 -04:00
|
|
|
integrity sha512-zrQDm8XPnYEKawJScsnM0QzobJxlT/kHOOlRTio8IH/GrmxRE5fjllkzdaHclIuNjUQTJYH2xHNIGfdpJkDJUw==
|
|
|
|
|
dependencies:
|
|
|
|
|
foreground-child "^3.1.0"
|
|
|
|
|
jackspeak "^4.0.1"
|
|
|
|
|
minimatch "^10.0.0"
|
|
|
|
|
minipass "^7.1.2"
|
|
|
|
|
package-json-from-dist "^1.0.0"
|
|
|
|
|
path-scurry "^2.0.0"
|
|
|
|
|
|
2024-04-02 12:13:41 -04:00
|
|
|
glob@^7.1.3, glob@^7.1.4, glob@^7.1.6:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "7.2.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
fs.realpath "^1.0.0"
|
|
|
|
|
inflight "^1.0.4"
|
|
|
|
|
inherits "2"
|
|
|
|
|
minimatch "^3.1.1"
|
|
|
|
|
once "^1.3.0"
|
|
|
|
|
path-is-absolute "^1.0.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
glob@^8.1.0:
|
|
|
|
|
version "8.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
fs.realpath "^1.0.0"
|
|
|
|
|
inflight "^1.0.4"
|
|
|
|
|
inherits "2"
|
|
|
|
|
minimatch "^5.0.1"
|
|
|
|
|
once "^1.3.0"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
global-modules@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==
|
|
|
|
|
dependencies:
|
|
|
|
|
global-prefix "^1.0.1"
|
|
|
|
|
is-windows "^1.0.1"
|
|
|
|
|
resolve-dir "^1.0.0"
|
|
|
|
|
|
|
|
|
|
global-prefix@^1.0.1:
|
|
|
|
|
version "1.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/global-prefix/-/global-prefix-1.0.2.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==
|
|
|
|
|
dependencies:
|
|
|
|
|
expand-tilde "^2.0.2"
|
|
|
|
|
homedir-polyfill "^1.0.1"
|
|
|
|
|
ini "^1.3.4"
|
|
|
|
|
is-windows "^1.0.1"
|
|
|
|
|
which "^1.2.14"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
globals@^11.1.0:
|
|
|
|
|
version "11.12.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==
|
|
|
|
|
|
2023-02-09 11:58:06 -08:00
|
|
|
globals@^13.19.0:
|
|
|
|
|
version "13.20.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/globals/-/globals-13.20.0.tgz"
|
2023-02-09 11:58:06 -08:00
|
|
|
integrity sha512-Qg5QtVkCy/kv3FUSlu4ukeZDVf9ee0iXLAUYX13gbR17bnejFTzr4iS9bY7kwCf1NztRNm1t91fjOiyx4CSwPQ==
|
2022-10-19 13:00:47 -07:00
|
|
|
dependencies:
|
|
|
|
|
type-fest "^0.20.2"
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
globals@^14.0.0:
|
|
|
|
|
version "14.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
globalthis@^1.0.4:
|
|
|
|
|
version "1.0.4"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236"
|
|
|
|
|
integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
define-properties "^1.2.1"
|
|
|
|
|
gopd "^1.0.1"
|
|
|
|
|
|
2024-03-25 15:00:31 -04:00
|
|
|
globby@^11.1.0:
|
2022-10-19 13:00:47 -07:00
|
|
|
version "11.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==
|
|
|
|
|
dependencies:
|
|
|
|
|
array-union "^2.1.0"
|
|
|
|
|
dir-glob "^3.0.1"
|
|
|
|
|
fast-glob "^3.2.9"
|
|
|
|
|
ignore "^5.2.0"
|
|
|
|
|
merge2 "^1.4.1"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
gopd@^1.0.1, gopd@^1.2.0:
|
2025-04-14 18:39:00 -04:00
|
|
|
version "1.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.11, graceful-fs@^4.2.4:
|
2023-06-05 13:35:39 -04:00
|
|
|
version "4.2.11"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
|
|
|
|
|
|
2024-01-12 12:26:30 -08:00
|
|
|
graceful-fs@^4.2.9:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "4.2.10"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
graphemer@^1.4.0:
|
|
|
|
|
version "1.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
has-bigints@^1.0.2:
|
|
|
|
|
version "1.1.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.1.0.tgz#28607e965ac967e03cd2a2c70a2636a1edad49fe"
|
|
|
|
|
integrity sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
has-flag@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==
|
|
|
|
|
|
|
|
|
|
has-flag@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
|
|
|
|
|
version "1.0.2"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
|
|
|
|
|
integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
|
|
|
|
|
dependencies:
|
|
|
|
|
es-define-property "^1.0.0"
|
|
|
|
|
|
|
|
|
|
has-proto@^1.2.0:
|
|
|
|
|
version "1.2.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5"
|
|
|
|
|
integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
dunder-proto "^1.0.0"
|
|
|
|
|
|
|
|
|
|
has-symbols@^1.0.3, has-symbols@^1.1.0:
|
2025-04-14 18:39:00 -04:00
|
|
|
version "1.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
has-tostringtag@^1.0.2:
|
|
|
|
|
version "1.0.2"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
|
|
|
|
|
integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
|
|
|
|
|
dependencies:
|
|
|
|
|
has-symbols "^1.0.3"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
has@^1.0.3:
|
|
|
|
|
version "1.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/has/-/has-1.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==
|
|
|
|
|
dependencies:
|
|
|
|
|
function-bind "^1.1.1"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
hasown@^2.0.2:
|
|
|
|
|
version "2.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
function-bind "^1.1.2"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
he@^1.2.0:
|
|
|
|
|
version "1.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/he/-/he-1.2.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
"heap@>= 0.2.0":
|
|
|
|
|
version "0.2.7"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/heap/-/heap-0.2.7.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-2bsegYkkHO+h/9MGbn6KWcE45cHZgPANo5LXF7EvWdT0yT2EguSVO1nDgU5c8+ZOPwp2vMNa7YFsJhVcDR9Sdg==
|
|
|
|
|
|
2024-11-19 10:52:48 -05:00
|
|
|
hermes-eslint@^0.25.1:
|
|
|
|
|
version "0.25.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/hermes-eslint/-/hermes-eslint-0.25.1.tgz"
|
2024-11-19 10:52:48 -05:00
|
|
|
integrity sha512-nPz9+oyejT1zsIwoJ2pWdUvLcN1i+tbaWCOD8PpNBYQtnHXaPXImZp/6zZHnm3bo/DoFcAgh8+SNcxLFxh7m/A==
|
2023-11-03 11:49:02 -04:00
|
|
|
dependencies:
|
|
|
|
|
esrecurse "^4.3.0"
|
2024-11-19 10:52:48 -05:00
|
|
|
hermes-estree "0.25.1"
|
|
|
|
|
hermes-parser "0.25.1"
|
2023-11-03 11:49:02 -04:00
|
|
|
|
2024-11-19 10:52:48 -05:00
|
|
|
hermes-estree@0.25.1:
|
|
|
|
|
version "0.25.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.25.1.tgz"
|
2024-11-19 10:52:48 -05:00
|
|
|
integrity sha512-0wUoCcLp+5Ev5pDW2OriHC2MJCbwLwuRx+gAqMTOkGKJJiBCLjtrvy4PWUGn6MIVefecRpzoOZ/UV6iGdOr+Cw==
|
2023-08-09 14:47:56 -04:00
|
|
|
|
2025-01-02 16:59:45 -05:00
|
|
|
hermes-estree@0.26.0:
|
|
|
|
|
version "0.26.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.26.0.tgz"
|
2025-01-02 16:59:45 -05:00
|
|
|
integrity sha512-If1T7lhfXnGlVLbnsmwerNB5cyJm2oIE8TN1UKEq6/OUX1nOGUhjXMpqAwZ1wkkn9Brda0VRyJEWOGT2GgVcAQ==
|
|
|
|
|
|
2024-11-19 10:52:48 -05:00
|
|
|
hermes-parser@0.25.1, hermes-parser@^0.25.1:
|
|
|
|
|
version "0.25.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.25.1.tgz"
|
2024-11-19 10:52:48 -05:00
|
|
|
integrity sha512-6pEjquH3rqaI6cYAXYPcz9MS4rY6R4ngRgrgfDshRptUZIc3lw0MCIJIGDj9++mfySOuPTHB4nrSW99BCvOPIA==
|
2024-03-22 18:59:44 -04:00
|
|
|
dependencies:
|
2024-11-19 10:52:48 -05:00
|
|
|
hermes-estree "0.25.1"
|
2024-03-22 18:59:44 -04:00
|
|
|
|
2025-01-02 16:59:45 -05:00
|
|
|
hermes-parser@0.26.0:
|
|
|
|
|
version "0.26.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.26.0.tgz"
|
2025-01-02 16:59:45 -05:00
|
|
|
integrity sha512-fWT40jJ/BtlzuyiiQS7lzNIlB5h6flVZoN8Jn8v5l987HL5dK9s+/4+py0FaBmeIEROC2zxt5qMLwXFTPLQ7BA==
|
|
|
|
|
dependencies:
|
|
|
|
|
hermes-estree "0.26.0"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
homedir-polyfill@^1.0.1:
|
|
|
|
|
version "1.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==
|
|
|
|
|
dependencies:
|
|
|
|
|
parse-passwd "^1.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
html-encoding-sniffer@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==
|
|
|
|
|
dependencies:
|
|
|
|
|
whatwg-encoding "^2.0.0"
|
|
|
|
|
|
|
|
|
|
html-escaper@^2.0.0:
|
|
|
|
|
version "2.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==
|
|
|
|
|
|
2025-04-24 14:57:44 -04:00
|
|
|
html-to-text@^9.0.5:
|
|
|
|
|
version "9.0.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/html-to-text/-/html-to-text-9.0.5.tgz"
|
2025-04-24 14:57:44 -04:00
|
|
|
integrity sha512-qY60FjREgVZL03vJU6IfMV4GDjGBIoOyvuFdpBDIX9yTlDw0TjxVBQp+P8NvpdIXNJvfWBTNul7fsAQJq2FNpg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@selderee/plugin-htmlparser2" "^0.11.0"
|
|
|
|
|
deepmerge "^4.3.1"
|
|
|
|
|
dom-serializer "^2.0.0"
|
|
|
|
|
htmlparser2 "^8.0.2"
|
|
|
|
|
selderee "^0.11.0"
|
|
|
|
|
|
|
|
|
|
htmlparser2@^8.0.2:
|
|
|
|
|
version "8.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz"
|
2025-04-24 14:57:44 -04:00
|
|
|
integrity sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==
|
|
|
|
|
dependencies:
|
|
|
|
|
domelementtype "^2.3.0"
|
|
|
|
|
domhandler "^5.0.3"
|
|
|
|
|
domutils "^3.0.1"
|
|
|
|
|
entities "^4.4.0"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
htmlparser2@^9.1.0:
|
|
|
|
|
version "9.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/htmlparser2/-/htmlparser2-9.1.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-5zfg6mHUoaer/97TxnGpxmbR7zJtPwIYFMZ/H5ucTlPZhKvtum05yiPK3Mgai3a0DyVxv7qYqoweaEd2nrYQzQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
domelementtype "^2.3.0"
|
|
|
|
|
domhandler "^5.0.3"
|
|
|
|
|
domutils "^3.1.0"
|
|
|
|
|
entities "^4.5.0"
|
|
|
|
|
|
|
|
|
|
http-errors@2.0.0, http-errors@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
depd "2.0.0"
|
|
|
|
|
inherits "2.0.4"
|
|
|
|
|
setprototypeof "1.2.0"
|
|
|
|
|
statuses "2.0.1"
|
|
|
|
|
toidentifier "1.0.1"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
http-proxy-agent@^5.0.0:
|
|
|
|
|
version "5.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@tootallnate/once" "2"
|
|
|
|
|
agent-base "6"
|
|
|
|
|
debug "4"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
http-proxy-agent@^7.0.0, http-proxy-agent@^7.0.1, http-proxy-agent@^7.0.2:
|
2025-02-25 12:19:11 -05:00
|
|
|
version "7.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==
|
|
|
|
|
dependencies:
|
|
|
|
|
agent-base "^7.1.0"
|
|
|
|
|
debug "^4.3.4"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
https-proxy-agent@^5.0.1:
|
|
|
|
|
version "5.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==
|
|
|
|
|
dependencies:
|
|
|
|
|
agent-base "6"
|
|
|
|
|
debug "4"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
https-proxy-agent@^7.0.5, https-proxy-agent@^7.0.6:
|
2025-02-25 12:19:11 -05:00
|
|
|
version "7.0.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==
|
|
|
|
|
dependencies:
|
|
|
|
|
agent-base "^7.1.2"
|
|
|
|
|
debug "4"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
human-signals@^2.1.0:
|
|
|
|
|
version "2.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
iconv-lite@0.6.3, iconv-lite@^0.6.3:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "0.6.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==
|
|
|
|
|
dependencies:
|
|
|
|
|
safer-buffer ">= 2.1.2 < 3.0.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
ieee754@^1.1.13, ieee754@^1.2.1:
|
2024-05-01 13:35:03 +01:00
|
|
|
version "1.2.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz"
|
2024-05-01 13:35:03 +01:00
|
|
|
integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
ignore@^5.2.0:
|
|
|
|
|
version "5.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==
|
|
|
|
|
|
2024-04-02 10:32:23 -04:00
|
|
|
ignore@^5.2.4:
|
|
|
|
|
version "5.3.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz"
|
2024-04-02 10:32:23 -04:00
|
|
|
integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
ignore@^5.3.1:
|
|
|
|
|
version "5.3.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
immediate@~3.0.5:
|
|
|
|
|
version "3.0.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
import-fresh@^3.2.1, import-fresh@^3.3.0:
|
2022-10-19 13:00:47 -07:00
|
|
|
version "3.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==
|
|
|
|
|
dependencies:
|
|
|
|
|
parent-module "^1.0.0"
|
|
|
|
|
resolve-from "^4.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
import-local@^3.0.2:
|
|
|
|
|
version "3.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==
|
|
|
|
|
dependencies:
|
|
|
|
|
pkg-dir "^4.2.0"
|
|
|
|
|
resolve-cwd "^3.0.0"
|
|
|
|
|
|
|
|
|
|
imurmurhash@^0.1.4:
|
|
|
|
|
version "0.1.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==
|
|
|
|
|
|
|
|
|
|
inflight@^1.0.4:
|
|
|
|
|
version "1.0.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==
|
|
|
|
|
dependencies:
|
|
|
|
|
once "^1.3.0"
|
|
|
|
|
wrappy "1"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
inherits@2, inherits@2.0.4, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "2.0.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
ini@^1.3.4:
|
|
|
|
|
version "1.3.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
internal-slot@^1.1.0:
|
|
|
|
|
version "1.1.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961"
|
|
|
|
|
integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==
|
|
|
|
|
dependencies:
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
hasown "^2.0.2"
|
|
|
|
|
side-channel "^1.1.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
invariant@^2.2.4:
|
|
|
|
|
version "2.2.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==
|
|
|
|
|
dependencies:
|
|
|
|
|
loose-envify "^1.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
ip-address@^9.0.5:
|
|
|
|
|
version "9.0.5"
|
|
|
|
|
resolved "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz"
|
|
|
|
|
integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==
|
|
|
|
|
dependencies:
|
|
|
|
|
jsbn "1.1.0"
|
|
|
|
|
sprintf-js "^1.1.3"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
ipaddr.js@1.9.1:
|
|
|
|
|
version "1.9.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
is-array-buffer@^3.0.4, is-array-buffer@^3.0.5:
|
|
|
|
|
version "3.0.5"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280"
|
|
|
|
|
integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bind "^1.0.8"
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
get-intrinsic "^1.2.6"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
is-arrayish@^0.2.1:
|
|
|
|
|
version "0.2.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
is-arrayish@^0.3.1:
|
|
|
|
|
version "0.3.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
is-async-function@^2.0.0:
|
|
|
|
|
version "2.1.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.1.1.tgz#3e69018c8e04e73b738793d020bfe884b9fd3523"
|
|
|
|
|
integrity sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
async-function "^1.0.0"
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
get-proto "^1.0.1"
|
|
|
|
|
has-tostringtag "^1.0.2"
|
|
|
|
|
safe-regex-test "^1.1.0"
|
|
|
|
|
|
|
|
|
|
is-bigint@^1.1.0:
|
|
|
|
|
version "1.1.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672"
|
|
|
|
|
integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
has-bigints "^1.0.2"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
is-binary-path@~2.1.0:
|
|
|
|
|
version "2.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==
|
|
|
|
|
dependencies:
|
|
|
|
|
binary-extensions "^2.0.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
is-boolean-object@^1.2.1:
|
|
|
|
|
version "1.2.2"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e"
|
|
|
|
|
integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
has-tostringtag "^1.0.2"
|
|
|
|
|
|
|
|
|
|
is-callable@^1.2.7:
|
|
|
|
|
version "1.2.7"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
|
|
|
|
|
integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
is-core-module@^2.9.0:
|
|
|
|
|
version "2.10.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==
|
|
|
|
|
dependencies:
|
|
|
|
|
has "^1.0.3"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
is-data-view@^1.0.1, is-data-view@^1.0.2:
|
|
|
|
|
version "1.0.2"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.2.tgz#bae0a41b9688986c2188dda6657e56b8f9e63b8e"
|
|
|
|
|
integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.2"
|
|
|
|
|
get-intrinsic "^1.2.6"
|
|
|
|
|
is-typed-array "^1.1.13"
|
|
|
|
|
|
|
|
|
|
is-date-object@^1.0.5, is-date-object@^1.1.0:
|
|
|
|
|
version "1.1.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7"
|
|
|
|
|
integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.2"
|
|
|
|
|
has-tostringtag "^1.0.2"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
is-extglob@^2.1.1:
|
|
|
|
|
version "2.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
is-finalizationregistry@^1.1.0:
|
|
|
|
|
version "1.1.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz#eefdcdc6c94ddd0674d9c85887bf93f944a97c90"
|
|
|
|
|
integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
is-fullwidth-code-point@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
|
|
|
|
|
|
|
|
|
|
is-generator-fn@^2.0.0:
|
|
|
|
|
version "2.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
is-generator-function@^1.0.10:
|
|
|
|
|
version "1.1.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca"
|
|
|
|
|
integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
get-proto "^1.0.0"
|
|
|
|
|
has-tostringtag "^1.0.2"
|
|
|
|
|
safe-regex-test "^1.1.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1:
|
2022-10-19 13:00:47 -07:00
|
|
|
version "4.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
|
|
|
|
|
dependencies:
|
|
|
|
|
is-extglob "^2.1.1"
|
|
|
|
|
|
2024-05-01 13:35:03 +01:00
|
|
|
is-interactive@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz"
|
2024-05-01 13:35:03 +01:00
|
|
|
integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
is-interactive@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
is-map@^2.0.3:
|
|
|
|
|
version "2.0.3"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e"
|
|
|
|
|
integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==
|
|
|
|
|
|
|
|
|
|
is-negative-zero@^2.0.3:
|
|
|
|
|
version "2.0.3"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747"
|
|
|
|
|
integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==
|
|
|
|
|
|
|
|
|
|
is-number-object@^1.1.1:
|
|
|
|
|
version "1.1.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541"
|
|
|
|
|
integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
has-tostringtag "^1.0.2"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
is-number@^7.0.0:
|
|
|
|
|
version "7.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
|
|
|
|
|
|
2023-02-09 11:58:06 -08:00
|
|
|
is-path-inside@^3.0.3:
|
|
|
|
|
version "3.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz"
|
2023-02-09 11:58:06 -08:00
|
|
|
integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
is-plain-obj@^2.1.0:
|
|
|
|
|
version "2.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
is-plain-object@^2.0.4:
|
|
|
|
|
version "2.0.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
|
|
|
|
|
dependencies:
|
|
|
|
|
isobject "^3.0.1"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
is-potential-custom-element-name@^1.0.1:
|
|
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
is-promise@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
is-regex@^1.2.1:
|
|
|
|
|
version "1.2.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22"
|
|
|
|
|
integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.2"
|
|
|
|
|
gopd "^1.2.0"
|
|
|
|
|
has-tostringtag "^1.0.2"
|
|
|
|
|
hasown "^2.0.2"
|
|
|
|
|
|
|
|
|
|
is-set@^2.0.3:
|
|
|
|
|
version "2.0.3"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d"
|
|
|
|
|
integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==
|
|
|
|
|
|
|
|
|
|
is-shared-array-buffer@^1.0.4:
|
|
|
|
|
version "1.0.4"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f"
|
|
|
|
|
integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
is-stream@^2.0.0:
|
|
|
|
|
version "2.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
is-string@^1.1.1:
|
|
|
|
|
version "1.1.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9"
|
|
|
|
|
integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
has-tostringtag "^1.0.2"
|
|
|
|
|
|
|
|
|
|
is-symbol@^1.0.4, is-symbol@^1.1.1:
|
|
|
|
|
version "1.1.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634"
|
|
|
|
|
integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.2"
|
|
|
|
|
has-symbols "^1.1.0"
|
|
|
|
|
safe-regex-test "^1.1.0"
|
|
|
|
|
|
|
|
|
|
is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15:
|
|
|
|
|
version "1.1.15"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b"
|
|
|
|
|
integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
which-typed-array "^1.1.16"
|
|
|
|
|
|
2024-05-01 13:35:03 +01:00
|
|
|
is-unicode-supported@^0.1.0:
|
|
|
|
|
version "0.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz"
|
2024-05-01 13:35:03 +01:00
|
|
|
integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
is-unicode-supported@^1.1.0, is-unicode-supported@^1.3.0:
|
|
|
|
|
version "1.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
is-weakmap@^2.0.2:
|
|
|
|
|
version "2.0.2"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd"
|
|
|
|
|
integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==
|
|
|
|
|
|
|
|
|
|
is-weakref@^1.0.2, is-weakref@^1.1.1:
|
|
|
|
|
version "1.1.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293"
|
|
|
|
|
integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
|
|
|
|
|
is-weakset@^2.0.3:
|
|
|
|
|
version "2.0.4"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.4.tgz#c9f5deb0bc1906c6d6f1027f284ddf459249daca"
|
|
|
|
|
integrity sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
get-intrinsic "^1.2.6"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
is-windows@^1.0.1:
|
|
|
|
|
version "1.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
isarray@^2.0.5:
|
|
|
|
|
version "2.0.5"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
|
|
|
|
|
integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
isarray@~1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
isexe@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
isobject@^3.0.1:
|
|
|
|
|
version "3.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0:
|
|
|
|
|
version "3.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==
|
|
|
|
|
|
|
|
|
|
istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0:
|
|
|
|
|
version "5.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.12.3"
|
|
|
|
|
"@babel/parser" "^7.14.7"
|
|
|
|
|
"@istanbuljs/schema" "^0.1.2"
|
|
|
|
|
istanbul-lib-coverage "^3.2.0"
|
|
|
|
|
semver "^6.3.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
istanbul-lib-instrument@^6.0.0:
|
|
|
|
|
version "6.0.3"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz#fa15401df6c15874bcb2105f773325d78c666765"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.23.9"
|
|
|
|
|
"@babel/parser" "^7.23.9"
|
|
|
|
|
"@istanbuljs/schema" "^0.1.3"
|
|
|
|
|
istanbul-lib-coverage "^3.2.0"
|
|
|
|
|
semver "^7.5.4"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
istanbul-lib-report@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==
|
|
|
|
|
dependencies:
|
|
|
|
|
istanbul-lib-coverage "^3.0.0"
|
|
|
|
|
make-dir "^3.0.0"
|
|
|
|
|
supports-color "^7.1.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
istanbul-lib-report@^3.0.1:
|
|
|
|
|
version "3.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==
|
|
|
|
|
dependencies:
|
|
|
|
|
istanbul-lib-coverage "^3.0.0"
|
|
|
|
|
make-dir "^4.0.0"
|
|
|
|
|
supports-color "^7.1.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
istanbul-lib-source-maps@^4.0.0:
|
|
|
|
|
version "4.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==
|
|
|
|
|
dependencies:
|
|
|
|
|
debug "^4.1.1"
|
|
|
|
|
istanbul-lib-coverage "^3.0.0"
|
|
|
|
|
source-map "^0.6.1"
|
|
|
|
|
|
|
|
|
|
istanbul-reports@^3.1.3:
|
|
|
|
|
version "3.1.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==
|
|
|
|
|
dependencies:
|
|
|
|
|
html-escaper "^2.0.0"
|
|
|
|
|
istanbul-lib-report "^3.0.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
istanbul-reports@^3.1.6:
|
|
|
|
|
version "3.1.7"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==
|
|
|
|
|
dependencies:
|
|
|
|
|
html-escaper "^2.0.0"
|
|
|
|
|
istanbul-lib-report "^3.0.0"
|
|
|
|
|
|
2024-03-11 13:55:24 -04:00
|
|
|
jackspeak@^2.3.5:
|
|
|
|
|
version "2.3.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@isaacs/cliui" "^8.0.2"
|
|
|
|
|
optionalDependencies:
|
|
|
|
|
"@pkgjs/parseargs" "^0.11.0"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
jackspeak@^3.1.2:
|
|
|
|
|
version "3.4.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@isaacs/cliui" "^8.0.2"
|
|
|
|
|
optionalDependencies:
|
|
|
|
|
"@pkgjs/parseargs" "^0.11.0"
|
|
|
|
|
|
2025-04-14 15:15:14 -04:00
|
|
|
jackspeak@^4.0.1:
|
|
|
|
|
version "4.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.0.tgz"
|
2025-04-14 15:15:14 -04:00
|
|
|
integrity sha512-9DDdhb5j6cpeitCbvLO7n7J4IxnbM6hoF6O1g4HQ5TfhvvKN8ywDM7668ZhMHRqVmxqhps/F6syWK2KcPxYlkw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@isaacs/cliui" "^8.0.2"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jake@^10.8.5:
|
|
|
|
|
version "10.9.2"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jake/-/jake-10.9.2.tgz#6ae487e6a69afec3a5e167628996b59f35ae2b7f"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-2P4SQ0HrLQ+fw6llpLnOaGAvN2Zu6778SJMrCUwns4fOoG9ayrTiZk3VV8sCPkVZF8ab0zksVpS8FDY5pRCNBA==
|
|
|
|
|
dependencies:
|
|
|
|
|
async "^3.2.3"
|
|
|
|
|
chalk "^4.0.2"
|
|
|
|
|
filelist "^1.0.4"
|
|
|
|
|
minimatch "^3.1.2"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-changed-files@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==
|
|
|
|
|
dependencies:
|
|
|
|
|
execa "^5.0.0"
|
|
|
|
|
p-limit "^3.1.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-changed-files@^29.0.0:
|
|
|
|
|
version "29.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-28/iDMDrUpGoCitTURuDqUzWQoWmOmOKOFST1mi2lwh62X4BFf6khgH3uSuo1e49X/UDjuApAj3w0wLOex4VPQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
execa "^5.0.0"
|
|
|
|
|
p-limit "^3.1.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-changed-files@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-IFG34IUMUaNBIxjQXF/iu7g6EcdMrGRRxaUSw92I/2g2YC6vCdTltl4nHvt7Ci5nSJwXIkCu8Ka1DKF+X7Z1Ag==
|
|
|
|
|
dependencies:
|
|
|
|
|
execa "^5.0.0"
|
|
|
|
|
p-limit "^3.1.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-changed-files@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-29.7.0.tgz#1c06d07e77c78e1585d020424dedc10d6e17ac3a"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==
|
|
|
|
|
dependencies:
|
|
|
|
|
execa "^5.0.0"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
p-limit "^3.1.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-circus@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^28.1.3"
|
|
|
|
|
"@jest/expect" "^28.1.3"
|
|
|
|
|
"@jest/test-result" "^28.1.3"
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
co "^4.6.0"
|
|
|
|
|
dedent "^0.7.0"
|
|
|
|
|
is-generator-fn "^2.0.0"
|
|
|
|
|
jest-each "^28.1.3"
|
|
|
|
|
jest-matcher-utils "^28.1.3"
|
|
|
|
|
jest-message-util "^28.1.3"
|
|
|
|
|
jest-runtime "^28.1.3"
|
|
|
|
|
jest-snapshot "^28.1.3"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
p-limit "^3.1.0"
|
|
|
|
|
pretty-format "^28.1.3"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
stack-utils "^2.0.3"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-circus@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-QeGzagC6Hw5pP+df1+aoF8+FBSgkPmraC1UdkeunWh0jmrp7wC0Hr6umdUAOELBQmxtKAOMNC3KAdjmCds92Zg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^29.0.3"
|
|
|
|
|
"@jest/expect" "^29.0.3"
|
|
|
|
|
"@jest/test-result" "^29.0.3"
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
co "^4.6.0"
|
|
|
|
|
dedent "^0.7.0"
|
|
|
|
|
is-generator-fn "^2.0.0"
|
|
|
|
|
jest-each "^29.0.3"
|
|
|
|
|
jest-matcher-utils "^29.0.3"
|
|
|
|
|
jest-message-util "^29.0.3"
|
|
|
|
|
jest-runtime "^29.0.3"
|
|
|
|
|
jest-snapshot "^29.0.3"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
p-limit "^3.1.0"
|
|
|
|
|
pretty-format "^29.0.3"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
stack-utils "^2.0.3"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-circus@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-circus/-/jest-circus-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-gq/ongqeQKAplVxqJmbeUOJJKkW3dDNPY8PjhJ5G0lBRvu0e3EWGxGy5cI4LAGA7gV2UHCtWBI4EMXK8c9nQKA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^29.5.0"
|
|
|
|
|
"@jest/expect" "^29.5.0"
|
|
|
|
|
"@jest/test-result" "^29.5.0"
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
co "^4.6.0"
|
|
|
|
|
dedent "^0.7.0"
|
|
|
|
|
is-generator-fn "^2.0.0"
|
|
|
|
|
jest-each "^29.5.0"
|
|
|
|
|
jest-matcher-utils "^29.5.0"
|
|
|
|
|
jest-message-util "^29.5.0"
|
|
|
|
|
jest-runtime "^29.5.0"
|
|
|
|
|
jest-snapshot "^29.5.0"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
p-limit "^3.1.0"
|
|
|
|
|
pretty-format "^29.5.0"
|
|
|
|
|
pure-rand "^6.0.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
stack-utils "^2.0.3"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-circus@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-29.7.0.tgz#b6817a45fcc835d8b16d5962d0c026473ee3668a"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^29.7.0"
|
|
|
|
|
"@jest/expect" "^29.7.0"
|
|
|
|
|
"@jest/test-result" "^29.7.0"
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
co "^4.6.0"
|
|
|
|
|
dedent "^1.0.0"
|
|
|
|
|
is-generator-fn "^2.0.0"
|
|
|
|
|
jest-each "^29.7.0"
|
|
|
|
|
jest-matcher-utils "^29.7.0"
|
|
|
|
|
jest-message-util "^29.7.0"
|
|
|
|
|
jest-runtime "^29.7.0"
|
|
|
|
|
jest-snapshot "^29.7.0"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
p-limit "^3.1.0"
|
|
|
|
|
pretty-format "^29.7.0"
|
|
|
|
|
pure-rand "^6.0.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
stack-utils "^2.0.3"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-cli@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/core" "^28.1.3"
|
|
|
|
|
"@jest/test-result" "^28.1.3"
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
exit "^0.1.2"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
import-local "^3.0.2"
|
|
|
|
|
jest-config "^28.1.3"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
jest-validate "^28.1.3"
|
|
|
|
|
prompts "^2.0.1"
|
|
|
|
|
yargs "^17.3.1"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-cli@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-aUy9Gd/Kut1z80eBzG10jAn6BgS3BoBbXyv+uXEqBJ8wnnuZ5RpNfARoskSrTIy1GY4a8f32YGuCMwibtkl9CQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/core" "^29.0.3"
|
|
|
|
|
"@jest/test-result" "^29.0.3"
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
exit "^0.1.2"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
import-local "^3.0.2"
|
|
|
|
|
jest-config "^29.0.3"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
jest-validate "^29.0.3"
|
|
|
|
|
prompts "^2.0.1"
|
|
|
|
|
yargs "^17.3.1"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-cli@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-cli/-/jest-cli-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-L1KcP1l4HtfwdxXNFCL5bmUbLQiKrakMUriBEcc1Vfz6gx31ORKdreuWvmQVBit+1ss9NNR3yxjwfwzZNdQXJw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/core" "^29.5.0"
|
|
|
|
|
"@jest/test-result" "^29.5.0"
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
exit "^0.1.2"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
import-local "^3.0.2"
|
|
|
|
|
jest-config "^29.5.0"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
jest-validate "^29.5.0"
|
|
|
|
|
prompts "^2.0.1"
|
|
|
|
|
yargs "^17.3.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-cli@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-29.7.0.tgz#5592c940798e0cae677eec169264f2d839a37995"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/core" "^29.7.0"
|
|
|
|
|
"@jest/test-result" "^29.7.0"
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
create-jest "^29.7.0"
|
|
|
|
|
exit "^0.1.2"
|
|
|
|
|
import-local "^3.0.2"
|
|
|
|
|
jest-config "^29.7.0"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
jest-validate "^29.7.0"
|
|
|
|
|
yargs "^17.3.1"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-config@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.11.6"
|
|
|
|
|
"@jest/test-sequencer" "^28.1.3"
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
babel-jest "^28.1.3"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
ci-info "^3.2.0"
|
|
|
|
|
deepmerge "^4.2.2"
|
|
|
|
|
glob "^7.1.3"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-circus "^28.1.3"
|
|
|
|
|
jest-environment-node "^28.1.3"
|
|
|
|
|
jest-get-type "^28.0.2"
|
|
|
|
|
jest-regex-util "^28.0.2"
|
|
|
|
|
jest-resolve "^28.1.3"
|
|
|
|
|
jest-runner "^28.1.3"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
jest-validate "^28.1.3"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
parse-json "^5.2.0"
|
|
|
|
|
pretty-format "^28.1.3"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
strip-json-comments "^3.1.1"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-config@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-U5qkc82HHVYe3fNu2CRXLN4g761Na26rWKf7CjM8LlZB3In1jadEkZdMwsE37rd9RSPV0NfYaCjHdk/gu3v+Ew==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.11.6"
|
|
|
|
|
"@jest/test-sequencer" "^29.0.3"
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
babel-jest "^29.0.3"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
ci-info "^3.2.0"
|
|
|
|
|
deepmerge "^4.2.2"
|
|
|
|
|
glob "^7.1.3"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-circus "^29.0.3"
|
|
|
|
|
jest-environment-node "^29.0.3"
|
|
|
|
|
jest-get-type "^29.0.0"
|
|
|
|
|
jest-regex-util "^29.0.0"
|
|
|
|
|
jest-resolve "^29.0.3"
|
|
|
|
|
jest-runner "^29.0.3"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
jest-validate "^29.0.3"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
parse-json "^5.2.0"
|
|
|
|
|
pretty-format "^29.0.3"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
strip-json-comments "^3.1.1"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-config@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-config/-/jest-config-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-kvDUKBnNJPNBmFFOhDbm59iu1Fii1Q6SxyhXfvylq3UTHbg6o7j/g8k2dZyXWLvfdKB1vAPxNZnMgtKJcmu3kA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.11.6"
|
|
|
|
|
"@jest/test-sequencer" "^29.5.0"
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
babel-jest "^29.5.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
ci-info "^3.2.0"
|
|
|
|
|
deepmerge "^4.2.2"
|
|
|
|
|
glob "^7.1.3"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-circus "^29.5.0"
|
|
|
|
|
jest-environment-node "^29.5.0"
|
|
|
|
|
jest-get-type "^29.4.3"
|
|
|
|
|
jest-regex-util "^29.4.3"
|
|
|
|
|
jest-resolve "^29.5.0"
|
|
|
|
|
jest-runner "^29.5.0"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
jest-validate "^29.5.0"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
parse-json "^5.2.0"
|
|
|
|
|
pretty-format "^29.5.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
strip-json-comments "^3.1.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-config@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-29.7.0.tgz#bcbda8806dbcc01b1e316a46bb74085a84b0245f"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.11.6"
|
|
|
|
|
"@jest/test-sequencer" "^29.7.0"
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
babel-jest "^29.7.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
ci-info "^3.2.0"
|
|
|
|
|
deepmerge "^4.2.2"
|
|
|
|
|
glob "^7.1.3"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-circus "^29.7.0"
|
|
|
|
|
jest-environment-node "^29.7.0"
|
|
|
|
|
jest-get-type "^29.6.3"
|
|
|
|
|
jest-regex-util "^29.6.3"
|
|
|
|
|
jest-resolve "^29.7.0"
|
|
|
|
|
jest-runner "^29.7.0"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
jest-validate "^29.7.0"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
parse-json "^5.2.0"
|
|
|
|
|
pretty-format "^29.7.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
strip-json-comments "^3.1.1"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
jest-diff@30.0.5:
|
|
|
|
|
version "30.0.5"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-30.0.5.tgz#b40f81e0c0d13e5b81c4d62b0d0dfa6a524ee0fd"
|
|
|
|
|
integrity sha512-1UIqE9PoEKaHcIKvq2vbibrCog4Y8G0zmOxgQUVEiTqwR5hJVMCoDsN1vFvI5JvwD37hjueZ1C4l2FyGnfpE0A==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/diff-sequences" "30.0.1"
|
|
|
|
|
"@jest/get-type" "30.0.1"
|
|
|
|
|
chalk "^4.1.2"
|
|
|
|
|
pretty-format "30.0.5"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-diff@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==
|
|
|
|
|
dependencies:
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
diff-sequences "^28.1.1"
|
|
|
|
|
jest-get-type "^28.0.2"
|
|
|
|
|
pretty-format "^28.1.3"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-diff@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-+X/AIF5G/vX9fWK+Db9bi9BQas7M9oBME7egU7psbn4jlszLFCu0dW63UgeE6cs/GANq4fLaT+8sGHQQ0eCUfg==
|
|
|
|
|
dependencies:
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
diff-sequences "^29.0.0"
|
|
|
|
|
jest-get-type "^29.0.0"
|
|
|
|
|
pretty-format "^29.0.3"
|
|
|
|
|
|
2024-01-25 10:29:32 -05:00
|
|
|
jest-diff@^29.5.0:
|
2023-06-06 10:56:20 -04:00
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-diff/-/jest-diff-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-LtxijLLZBduXnHSniy0WMdaHjmQnt3g5sa16W4p0HqukYTTsyTW3GD1q41TyGl5YFXj/5B2U6dlh5FM1LIMgxw==
|
|
|
|
|
dependencies:
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
diff-sequences "^29.4.3"
|
|
|
|
|
jest-get-type "^29.4.3"
|
|
|
|
|
pretty-format "^29.5.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-diff@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-29.7.0.tgz#017934a66ebb7ecf6f205e84699be10afd70458a"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==
|
|
|
|
|
dependencies:
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
diff-sequences "^29.6.3"
|
|
|
|
|
jest-get-type "^29.6.3"
|
|
|
|
|
pretty-format "^29.7.0"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
jest-docblock@^26.0.0:
|
|
|
|
|
version "26.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==
|
|
|
|
|
dependencies:
|
|
|
|
|
detect-newline "^3.0.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-docblock@^28.1.1:
|
|
|
|
|
version "28.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==
|
|
|
|
|
dependencies:
|
|
|
|
|
detect-newline "^3.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-docblock@^29.0.0:
|
|
|
|
|
version "29.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-s5Kpra/kLzbqu9dEjov30kj1n4tfu3e7Pl8v+f8jOkeWNqM6Ds8jRaJfZow3ducoQUrf2Z4rs2N5S3zXnb83gw==
|
|
|
|
|
dependencies:
|
|
|
|
|
detect-newline "^3.0.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-docblock@^29.4.3:
|
|
|
|
|
version "29.4.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.4.3.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-fzdTftThczeSD9nZ3fzA/4KkHtnmllawWrXO69vtI+L9WjEIuXWs4AmyME7lN5hU7dB0sHhuPfcKofRsUb/2Fg==
|
|
|
|
|
dependencies:
|
|
|
|
|
detect-newline "^3.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-docblock@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-29.7.0.tgz#8fddb6adc3cdc955c93e2a87f61cfd350d5d119a"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==
|
|
|
|
|
dependencies:
|
|
|
|
|
detect-newline "^3.0.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-each@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
jest-get-type "^28.0.2"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
pretty-format "^28.1.3"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-each@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-wILhZfESURHHBNvPMJ0lZlYZrvOQJxAo3wNHi+ycr90V7M+uGR9Gh4+4a/BmaZF0XTyZsk4OiYEf3GJN7Ltqzg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
jest-get-type "^29.0.0"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
pretty-format "^29.0.3"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-each@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-each/-/jest-each-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-HM5kIJ1BTnVt+DQZ2ALp3rzXEl+g726csObrW/jpEGl+CDSSQpOJJX2KE/vEg8cxcMXdyEPu6U4QX5eruQv5hA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
jest-get-type "^29.4.3"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
pretty-format "^29.5.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-each@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-29.7.0.tgz#162a9b3f2328bdd991beaabffbb74745e56577d1"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
jest-get-type "^29.6.3"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
pretty-format "^29.7.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-environment-jsdom@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-KIGvpm12c71hoYTjL4wC2c8K6KfhOHJqJtaHc1IApu5rG047YWZoEP13BlbucWfzGISBrmli8KFqdhdQEa8Wnw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^29.0.3"
|
|
|
|
|
"@jest/fake-timers" "^29.0.3"
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
"@types/jsdom" "^20.0.0"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
jest-mock "^29.0.3"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
jsdom "^20.0.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-environment-node@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^28.1.3"
|
|
|
|
|
"@jest/fake-timers" "^28.1.3"
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
jest-mock "^28.1.3"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-environment-node@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-cdZqRCnmIlTXC+9vtvmfiY/40Cj6s2T0czXuq1whvQdmpzAnj4sbqVYuZ4zFHk766xTTJ+Ij3uUqkk8KCfXoyg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^29.0.3"
|
|
|
|
|
"@jest/fake-timers" "^29.0.3"
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
jest-mock "^29.0.3"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-environment-node@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-ExxuIK/+yQ+6PRGaHkKewYtg6hto2uGCgvKdb2nfJfKXgZ17DfXjvbZ+jA1Qt9A8EQSfPnt5FKIfnOO3u1h9qw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^29.5.0"
|
|
|
|
|
"@jest/fake-timers" "^29.5.0"
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
jest-mock "^29.5.0"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-environment-node@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-29.7.0.tgz#0b93e111dda8ec120bc8300e6d1fb9576e164376"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^29.7.0"
|
|
|
|
|
"@jest/fake-timers" "^29.7.0"
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
jest-mock "^29.7.0"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-get-type@^28.0.2:
|
|
|
|
|
version "28.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-get-type@^29.0.0:
|
|
|
|
|
version "29.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-83X19z/HuLKYXYHskZlBAShO7UfLFXu/vWajw9ZNJASN32li8yHMaVGAQqxFW1RCFOkB7cubaL6FaJVQqqJLSw==
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-get-type@^29.4.3:
|
|
|
|
|
version "29.4.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.4.3.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-J5Xez4nRRMjk8emnTpWrlkyb9pfRQQanDrvWHhsR1+VUfbwxi30eVcZFlcdGInRibU4G5LwHXpI7IRHU0CY+gg==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-get-type@^29.6.3:
|
|
|
|
|
version "29.6.3"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-29.6.3.tgz#36f499fdcea197c1045a127319c0481723908fd1"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-haste-map@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
"@types/graceful-fs" "^4.1.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
anymatch "^3.0.3"
|
|
|
|
|
fb-watchman "^2.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-regex-util "^28.0.2"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
jest-worker "^28.1.3"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
walker "^1.0.8"
|
|
|
|
|
optionalDependencies:
|
|
|
|
|
fsevents "^2.3.2"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-haste-map@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-uMqR99+GuBHo0RjRhOE4iA6LmsxEwRdgiIAQgMU/wdT2XebsLDz5obIwLZm/Psj+GwSEQhw9AfAVKGYbh2G55A==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
"@types/graceful-fs" "^4.1.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
anymatch "^3.0.3"
|
|
|
|
|
fb-watchman "^2.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-regex-util "^29.0.0"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
jest-worker "^29.0.3"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
walker "^1.0.8"
|
|
|
|
|
optionalDependencies:
|
|
|
|
|
fsevents "^2.3.2"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-haste-map@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-IspOPnnBro8YfVYSw6yDRKh/TiCdRngjxeacCps1cQ9cgVN6+10JUcuJ1EabrgYLOATsIAigxA0rLR9x/YlrSA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@types/graceful-fs" "^4.1.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
anymatch "^3.0.3"
|
|
|
|
|
fb-watchman "^2.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-regex-util "^29.4.3"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
jest-worker "^29.5.0"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
walker "^1.0.8"
|
|
|
|
|
optionalDependencies:
|
|
|
|
|
fsevents "^2.3.2"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-haste-map@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-29.7.0.tgz#3c2396524482f5a0506376e6c858c3bbcc17b104"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
"@types/graceful-fs" "^4.1.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
anymatch "^3.0.3"
|
|
|
|
|
fb-watchman "^2.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-regex-util "^29.6.3"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
jest-worker "^29.7.0"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
walker "^1.0.8"
|
|
|
|
|
optionalDependencies:
|
|
|
|
|
fsevents "^2.3.2"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-leak-detector@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==
|
|
|
|
|
dependencies:
|
|
|
|
|
jest-get-type "^28.0.2"
|
|
|
|
|
pretty-format "^28.1.3"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-leak-detector@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-YfW/G63dAuiuQ3QmQlh8hnqLDe25WFY3eQhuc/Ev1AGmkw5zREblTh7TCSKLoheyggu6G9gxO2hY8p9o6xbaRQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
jest-get-type "^29.0.0"
|
|
|
|
|
pretty-format "^29.0.3"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-leak-detector@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-u9YdeeVnghBUtpN5mVxjID7KbkKE1QU4f6uUwuxiY0vYRi9BUCLKlPEZfDGR67ofdFmDz9oPAy2G92Ujrntmow==
|
|
|
|
|
dependencies:
|
|
|
|
|
jest-get-type "^29.4.3"
|
|
|
|
|
pretty-format "^29.5.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-leak-detector@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz#5b7ec0dadfdfec0ca383dc9aa016d36b5ea4c728"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==
|
|
|
|
|
dependencies:
|
|
|
|
|
jest-get-type "^29.6.3"
|
|
|
|
|
pretty-format "^29.7.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
jest-matcher-utils@30.0.5:
|
|
|
|
|
version "30.0.5"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-30.0.5.tgz#dff3334be58faea4a5e1becc228656fbbfc2467d"
|
|
|
|
|
integrity sha512-uQgGWt7GOrRLP1P7IwNWwK1WAQbq+m//ZY0yXygyfWp0rJlksMSLQAA4wYQC3b6wl3zfnchyTx+k3HZ5aPtCbQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/get-type" "30.0.1"
|
|
|
|
|
chalk "^4.1.2"
|
|
|
|
|
jest-diff "30.0.5"
|
|
|
|
|
pretty-format "30.0.5"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-matcher-utils@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==
|
|
|
|
|
dependencies:
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
jest-diff "^28.1.3"
|
|
|
|
|
jest-get-type "^28.0.2"
|
|
|
|
|
pretty-format "^28.1.3"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-matcher-utils@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-RsR1+cZ6p1hDV4GSCQTg+9qjeotQCgkaleIKLK7dm+U4V/H2bWedU3RAtLm8+mANzZ7eDV33dMar4pejd7047w==
|
|
|
|
|
dependencies:
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
jest-diff "^29.0.3"
|
|
|
|
|
jest-get-type "^29.0.0"
|
|
|
|
|
pretty-format "^29.0.3"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-matcher-utils@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-lecRtgm/rjIK0CQ7LPQwzCs2VwW6WAahA55YBuI+xqmhm7LAaxokSB8C97yJeYyT+HvQkH741StzpU41wohhWw==
|
|
|
|
|
dependencies:
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
jest-diff "^29.5.0"
|
|
|
|
|
jest-get-type "^29.4.3"
|
|
|
|
|
pretty-format "^29.5.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-matcher-utils@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz#ae8fec79ff249fd592ce80e3ee474e83a6c44f12"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==
|
|
|
|
|
dependencies:
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
jest-diff "^29.7.0"
|
|
|
|
|
jest-get-type "^29.6.3"
|
|
|
|
|
pretty-format "^29.7.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
jest-message-util@30.0.5:
|
|
|
|
|
version "30.0.5"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-30.0.5.tgz#dd12ffec91dd3fa6a59cbd538a513d8e239e070c"
|
|
|
|
|
integrity sha512-NAiDOhsK3V7RU0Aa/HnrQo+E4JlbarbmI3q6Pi4KcxicdtjV82gcIUrejOtczChtVQR4kddu1E1EJlW6EN9IyA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/code-frame" "^7.27.1"
|
|
|
|
|
"@jest/types" "30.0.5"
|
|
|
|
|
"@types/stack-utils" "^2.0.3"
|
|
|
|
|
chalk "^4.1.2"
|
|
|
|
|
graceful-fs "^4.2.11"
|
|
|
|
|
micromatch "^4.0.8"
|
|
|
|
|
pretty-format "30.0.5"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
stack-utils "^2.0.6"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-message-util@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/code-frame" "^7.12.13"
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
"@types/stack-utils" "^2.0.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
pretty-format "^28.1.3"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
stack-utils "^2.0.3"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-message-util@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-7T8JiUTtDfppojosORAflABfLsLKMLkBHSWkjNQrjIltGoDzNGn7wEPOSfjqYAGTYME65esQzMJxGDjuLBKdOg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/code-frame" "^7.12.13"
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
"@types/stack-utils" "^2.0.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
pretty-format "^29.0.3"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
stack-utils "^2.0.3"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-message-util@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-Kijeg9Dag6CKtIDA7O21zNTACqD5MD/8HfIV8pdD94vFyFuer52SigdC3IQMhab3vACxXMiFk+yMHNdbqtyTGA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/code-frame" "^7.12.13"
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@types/stack-utils" "^2.0.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
pretty-format "^29.5.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
stack-utils "^2.0.3"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-message-util@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz"
|
|
|
|
|
integrity sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/code-frame" "^7.12.13"
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
"@types/stack-utils" "^2.0.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
micromatch "^4.0.4"
|
|
|
|
|
pretty-format "^29.7.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
stack-utils "^2.0.3"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
jest-mock@30.0.5:
|
|
|
|
|
version "30.0.5"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-30.0.5.tgz#ef437e89212560dd395198115550085038570bdd"
|
|
|
|
|
integrity sha512-Od7TyasAAQX/6S+QCbN6vZoWOMwlTtzzGuxJku1GhGanAjz9y+QsQkpScDmETvdc9aSXyJ/Op4rhpMYBWW91wQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "30.0.5"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
jest-util "30.0.5"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-mock@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-mock@^29.0.3, jest-mock@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz"
|
|
|
|
|
integrity sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/types" "^29.6.3"
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/node" "*"
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-util "^29.7.0"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-mock@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-mock/-/jest-mock-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-GqOzvdWDE4fAV2bWQLQCkujxYWL7RxjCnj71b5VhDAGOevB3qj3Ovg26A5NI84ZpODxyzaozXLOh2NCgkbvyaw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-pnp-resolver@^1.2.2:
|
|
|
|
|
version "1.2.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
jest-regex-util@30.0.1:
|
|
|
|
|
version "30.0.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-30.0.1.tgz#f17c1de3958b67dfe485354f5a10093298f2a49b"
|
|
|
|
|
integrity sha512-jHEQgBXAgc+Gh4g0p3bCevgRCVRkB4VB70zhoAE48gxeSr1hfUOsM/C2WoJgVL7Eyg//hudYENbm3Ne+/dRVVA==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-regex-util@^28.0.2:
|
|
|
|
|
version "28.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-regex-util@^29.0.0:
|
|
|
|
|
version "29.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-BV7VW7Sy0fInHWN93MMPtlClweYv2qrSCwfeFWmpribGZtQPWNvRSq9XOVgOEjU1iBGRKXUZil0o2AH7Iy9Lug==
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-regex-util@^29.4.3:
|
|
|
|
|
version "29.4.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.4.3.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-O4FglZaMmWXbGHSQInfXewIsd1LMn9p3ZXB/6r4FOkyhX2/iP/soMG98jGvk/A3HAN78+5VWcBGO0BJAPRh4kg==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-regex-util@^29.6.3:
|
|
|
|
|
version "29.6.3"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-29.6.3.tgz#4a556d9c776af68e1c5f48194f4d0327d24e8a52"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-resolve-dependencies@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==
|
|
|
|
|
dependencies:
|
|
|
|
|
jest-regex-util "^28.0.2"
|
|
|
|
|
jest-snapshot "^28.1.3"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-resolve-dependencies@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-KzuBnXqNvbuCdoJpv8EanbIGObk7vUBNt/PwQPPx2aMhlv/jaXpUJsqWYRpP/0a50faMBY7WFFP8S3/CCzwfDw==
|
|
|
|
|
dependencies:
|
|
|
|
|
jest-regex-util "^29.0.0"
|
|
|
|
|
jest-snapshot "^29.0.3"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-resolve-dependencies@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-sjV3GFr0hDJMBpYeUuGduP+YeCRbd7S/ck6IvL3kQ9cpySYKqcqhdLLC2rFwrcL7tz5vYibomBrsFYWkIGGjOg==
|
|
|
|
|
dependencies:
|
|
|
|
|
jest-regex-util "^29.4.3"
|
|
|
|
|
jest-snapshot "^29.5.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-resolve-dependencies@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz#1b04f2c095f37fc776ff40803dc92921b1e88428"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==
|
|
|
|
|
dependencies:
|
|
|
|
|
jest-regex-util "^29.6.3"
|
|
|
|
|
jest-snapshot "^29.7.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-resolve@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-haste-map "^28.1.3"
|
|
|
|
|
jest-pnp-resolver "^1.2.2"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
jest-validate "^28.1.3"
|
|
|
|
|
resolve "^1.20.0"
|
|
|
|
|
resolve.exports "^1.1.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-resolve@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-toVkia85Y/BPAjJasTC9zIPY6MmVXQPtrCk8SmiheC4MwVFE/CMFlOtMN6jrwPMC6TtNh8+sTMllasFeu1wMPg==
|
|
|
|
|
dependencies:
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-haste-map "^29.0.3"
|
|
|
|
|
jest-pnp-resolver "^1.2.2"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
jest-validate "^29.0.3"
|
|
|
|
|
resolve "^1.20.0"
|
|
|
|
|
resolve.exports "^1.1.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-resolve@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-1TzxJ37FQq7J10jPtQjcc+MkCkE3GBpBecsSUWJ0qZNJpmg6m0D9/7II03yJulm3H/fvVjgqLh/k2eYg+ui52w==
|
|
|
|
|
dependencies:
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-haste-map "^29.5.0"
|
|
|
|
|
jest-pnp-resolver "^1.2.2"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
jest-validate "^29.5.0"
|
|
|
|
|
resolve "^1.20.0"
|
|
|
|
|
resolve.exports "^2.0.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-resolve@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-29.7.0.tgz#64d6a8992dd26f635ab0c01e5eef4399c6bcbc30"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==
|
|
|
|
|
dependencies:
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-haste-map "^29.7.0"
|
|
|
|
|
jest-pnp-resolver "^1.2.2"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
jest-validate "^29.7.0"
|
|
|
|
|
resolve "^1.20.0"
|
|
|
|
|
resolve.exports "^2.0.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-runner@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/console" "^28.1.3"
|
|
|
|
|
"@jest/environment" "^28.1.3"
|
|
|
|
|
"@jest/test-result" "^28.1.3"
|
|
|
|
|
"@jest/transform" "^28.1.3"
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
emittery "^0.10.2"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-docblock "^28.1.1"
|
|
|
|
|
jest-environment-node "^28.1.3"
|
|
|
|
|
jest-haste-map "^28.1.3"
|
|
|
|
|
jest-leak-detector "^28.1.3"
|
|
|
|
|
jest-message-util "^28.1.3"
|
|
|
|
|
jest-resolve "^28.1.3"
|
|
|
|
|
jest-runtime "^28.1.3"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
jest-watcher "^28.1.3"
|
|
|
|
|
jest-worker "^28.1.3"
|
|
|
|
|
p-limit "^3.1.0"
|
|
|
|
|
source-map-support "0.5.13"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-runner@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Usu6VlTOZlCZoNuh3b2Tv/yzDpKqtiNAetG9t3kJuHfUyVMNW7ipCCJOUojzKkjPoaN7Bl1f7Buu6PE0sGpQxw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/console" "^29.0.3"
|
|
|
|
|
"@jest/environment" "^29.0.3"
|
|
|
|
|
"@jest/test-result" "^29.0.3"
|
|
|
|
|
"@jest/transform" "^29.0.3"
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
emittery "^0.10.2"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-docblock "^29.0.0"
|
|
|
|
|
jest-environment-node "^29.0.3"
|
|
|
|
|
jest-haste-map "^29.0.3"
|
|
|
|
|
jest-leak-detector "^29.0.3"
|
|
|
|
|
jest-message-util "^29.0.3"
|
|
|
|
|
jest-resolve "^29.0.3"
|
|
|
|
|
jest-runtime "^29.0.3"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
jest-watcher "^29.0.3"
|
|
|
|
|
jest-worker "^29.0.3"
|
|
|
|
|
p-limit "^3.1.0"
|
|
|
|
|
source-map-support "0.5.13"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-runner@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-runner/-/jest-runner-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-m7b6ypERhFghJsslMLhydaXBiLf7+jXy8FwGRHO3BGV1mcQpPbwiqiKUR2zU2NJuNeMenJmlFZCsIqzJCTeGLQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/console" "^29.5.0"
|
|
|
|
|
"@jest/environment" "^29.5.0"
|
|
|
|
|
"@jest/test-result" "^29.5.0"
|
|
|
|
|
"@jest/transform" "^29.5.0"
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
emittery "^0.13.1"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-docblock "^29.4.3"
|
|
|
|
|
jest-environment-node "^29.5.0"
|
|
|
|
|
jest-haste-map "^29.5.0"
|
|
|
|
|
jest-leak-detector "^29.5.0"
|
|
|
|
|
jest-message-util "^29.5.0"
|
|
|
|
|
jest-resolve "^29.5.0"
|
|
|
|
|
jest-runtime "^29.5.0"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
jest-watcher "^29.5.0"
|
|
|
|
|
jest-worker "^29.5.0"
|
|
|
|
|
p-limit "^3.1.0"
|
|
|
|
|
source-map-support "0.5.13"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-runner@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-29.7.0.tgz#809af072d408a53dcfd2e849a4c976d3132f718e"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/console" "^29.7.0"
|
|
|
|
|
"@jest/environment" "^29.7.0"
|
|
|
|
|
"@jest/test-result" "^29.7.0"
|
|
|
|
|
"@jest/transform" "^29.7.0"
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
emittery "^0.13.1"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-docblock "^29.7.0"
|
|
|
|
|
jest-environment-node "^29.7.0"
|
|
|
|
|
jest-haste-map "^29.7.0"
|
|
|
|
|
jest-leak-detector "^29.7.0"
|
|
|
|
|
jest-message-util "^29.7.0"
|
|
|
|
|
jest-resolve "^29.7.0"
|
|
|
|
|
jest-runtime "^29.7.0"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
jest-watcher "^29.7.0"
|
|
|
|
|
jest-worker "^29.7.0"
|
|
|
|
|
p-limit "^3.1.0"
|
|
|
|
|
source-map-support "0.5.13"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-runtime@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^28.1.3"
|
|
|
|
|
"@jest/fake-timers" "^28.1.3"
|
|
|
|
|
"@jest/globals" "^28.1.3"
|
|
|
|
|
"@jest/source-map" "^28.1.2"
|
|
|
|
|
"@jest/test-result" "^28.1.3"
|
|
|
|
|
"@jest/transform" "^28.1.3"
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
cjs-module-lexer "^1.0.0"
|
|
|
|
|
collect-v8-coverage "^1.0.0"
|
|
|
|
|
execa "^5.0.0"
|
|
|
|
|
glob "^7.1.3"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-haste-map "^28.1.3"
|
|
|
|
|
jest-message-util "^28.1.3"
|
|
|
|
|
jest-mock "^28.1.3"
|
|
|
|
|
jest-regex-util "^28.0.2"
|
|
|
|
|
jest-resolve "^28.1.3"
|
|
|
|
|
jest-snapshot "^28.1.3"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
strip-bom "^4.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-runtime@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-12gZXRQ7ozEeEHKTY45a+YLqzNDR/x4c//X6AqwKwKJPpWM8FY4vwn4VQJOcLRS3Nd1fWwgP7LU4SoynhuUMHQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^29.0.3"
|
|
|
|
|
"@jest/fake-timers" "^29.0.3"
|
|
|
|
|
"@jest/globals" "^29.0.3"
|
|
|
|
|
"@jest/source-map" "^29.0.0"
|
|
|
|
|
"@jest/test-result" "^29.0.3"
|
|
|
|
|
"@jest/transform" "^29.0.3"
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
cjs-module-lexer "^1.0.0"
|
|
|
|
|
collect-v8-coverage "^1.0.0"
|
|
|
|
|
glob "^7.1.3"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-haste-map "^29.0.3"
|
|
|
|
|
jest-message-util "^29.0.3"
|
|
|
|
|
jest-mock "^29.0.3"
|
|
|
|
|
jest-regex-util "^29.0.0"
|
|
|
|
|
jest-resolve "^29.0.3"
|
|
|
|
|
jest-snapshot "^29.0.3"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
strip-bom "^4.0.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-runtime@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-1Hr6Hh7bAgXQP+pln3homOiEZtCDZFqwmle7Ew2j8OlbkIu6uE3Y/etJQG8MLQs3Zy90xrp2C0BRrtPHG4zryw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^29.5.0"
|
|
|
|
|
"@jest/fake-timers" "^29.5.0"
|
|
|
|
|
"@jest/globals" "^29.5.0"
|
|
|
|
|
"@jest/source-map" "^29.4.3"
|
|
|
|
|
"@jest/test-result" "^29.5.0"
|
|
|
|
|
"@jest/transform" "^29.5.0"
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
cjs-module-lexer "^1.0.0"
|
|
|
|
|
collect-v8-coverage "^1.0.0"
|
|
|
|
|
glob "^7.1.3"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-haste-map "^29.5.0"
|
|
|
|
|
jest-message-util "^29.5.0"
|
|
|
|
|
jest-mock "^29.5.0"
|
|
|
|
|
jest-regex-util "^29.4.3"
|
|
|
|
|
jest-resolve "^29.5.0"
|
|
|
|
|
jest-snapshot "^29.5.0"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
strip-bom "^4.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-runtime@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-29.7.0.tgz#efecb3141cf7d3767a3a0cc8f7c9990587d3d817"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/environment" "^29.7.0"
|
|
|
|
|
"@jest/fake-timers" "^29.7.0"
|
|
|
|
|
"@jest/globals" "^29.7.0"
|
|
|
|
|
"@jest/source-map" "^29.6.3"
|
|
|
|
|
"@jest/test-result" "^29.7.0"
|
|
|
|
|
"@jest/transform" "^29.7.0"
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
cjs-module-lexer "^1.0.0"
|
|
|
|
|
collect-v8-coverage "^1.0.0"
|
|
|
|
|
glob "^7.1.3"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-haste-map "^29.7.0"
|
|
|
|
|
jest-message-util "^29.7.0"
|
|
|
|
|
jest-mock "^29.7.0"
|
|
|
|
|
jest-regex-util "^29.6.3"
|
|
|
|
|
jest-resolve "^29.7.0"
|
|
|
|
|
jest-snapshot "^29.7.0"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
slash "^3.0.0"
|
|
|
|
|
strip-bom "^4.0.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-snapshot@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.11.6"
|
|
|
|
|
"@babel/generator" "^7.7.2"
|
|
|
|
|
"@babel/plugin-syntax-typescript" "^7.7.2"
|
|
|
|
|
"@babel/traverse" "^7.7.2"
|
|
|
|
|
"@babel/types" "^7.3.3"
|
|
|
|
|
"@jest/expect-utils" "^28.1.3"
|
|
|
|
|
"@jest/transform" "^28.1.3"
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
"@types/babel__traverse" "^7.0.6"
|
|
|
|
|
"@types/prettier" "^2.1.5"
|
|
|
|
|
babel-preset-current-node-syntax "^1.0.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
expect "^28.1.3"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-diff "^28.1.3"
|
|
|
|
|
jest-get-type "^28.0.2"
|
|
|
|
|
jest-haste-map "^28.1.3"
|
|
|
|
|
jest-matcher-utils "^28.1.3"
|
|
|
|
|
jest-message-util "^28.1.3"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
natural-compare "^1.4.0"
|
|
|
|
|
pretty-format "^28.1.3"
|
|
|
|
|
semver "^7.3.5"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-snapshot@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-52q6JChm04U3deq+mkQ7R/7uy7YyfVIrebMi6ZkBoDJ85yEjm/sJwdr1P0LOIEHmpyLlXrxy3QP0Zf5J2kj0ew==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.11.6"
|
|
|
|
|
"@babel/generator" "^7.7.2"
|
|
|
|
|
"@babel/plugin-syntax-jsx" "^7.7.2"
|
|
|
|
|
"@babel/plugin-syntax-typescript" "^7.7.2"
|
|
|
|
|
"@babel/traverse" "^7.7.2"
|
|
|
|
|
"@babel/types" "^7.3.3"
|
|
|
|
|
"@jest/expect-utils" "^29.0.3"
|
|
|
|
|
"@jest/transform" "^29.0.3"
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
"@types/babel__traverse" "^7.0.6"
|
|
|
|
|
"@types/prettier" "^2.1.5"
|
|
|
|
|
babel-preset-current-node-syntax "^1.0.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
expect "^29.0.3"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-diff "^29.0.3"
|
|
|
|
|
jest-get-type "^29.0.0"
|
|
|
|
|
jest-haste-map "^29.0.3"
|
|
|
|
|
jest-matcher-utils "^29.0.3"
|
|
|
|
|
jest-message-util "^29.0.3"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
natural-compare "^1.4.0"
|
|
|
|
|
pretty-format "^29.0.3"
|
|
|
|
|
semver "^7.3.5"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-snapshot@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-x7Wolra5V0tt3wRs3/ts3S6ciSQVypgGQlJpz2rsdQYoUKxMxPNaoHMGJN6qAuPJqS+2iQ1ZUn5kl7HCyls84g==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.11.6"
|
|
|
|
|
"@babel/generator" "^7.7.2"
|
|
|
|
|
"@babel/plugin-syntax-jsx" "^7.7.2"
|
|
|
|
|
"@babel/plugin-syntax-typescript" "^7.7.2"
|
|
|
|
|
"@babel/traverse" "^7.7.2"
|
|
|
|
|
"@babel/types" "^7.3.3"
|
|
|
|
|
"@jest/expect-utils" "^29.5.0"
|
|
|
|
|
"@jest/transform" "^29.5.0"
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@types/babel__traverse" "^7.0.6"
|
|
|
|
|
"@types/prettier" "^2.1.5"
|
|
|
|
|
babel-preset-current-node-syntax "^1.0.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
expect "^29.5.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-diff "^29.5.0"
|
|
|
|
|
jest-get-type "^29.4.3"
|
|
|
|
|
jest-matcher-utils "^29.5.0"
|
|
|
|
|
jest-message-util "^29.5.0"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
natural-compare "^1.4.0"
|
|
|
|
|
pretty-format "^29.5.0"
|
|
|
|
|
semver "^7.3.5"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-snapshot@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-29.7.0.tgz#c2c574c3f51865da1bb329036778a69bf88a6be5"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/core" "^7.11.6"
|
|
|
|
|
"@babel/generator" "^7.7.2"
|
|
|
|
|
"@babel/plugin-syntax-jsx" "^7.7.2"
|
|
|
|
|
"@babel/plugin-syntax-typescript" "^7.7.2"
|
|
|
|
|
"@babel/types" "^7.3.3"
|
|
|
|
|
"@jest/expect-utils" "^29.7.0"
|
|
|
|
|
"@jest/transform" "^29.7.0"
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
babel-preset-current-node-syntax "^1.0.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
expect "^29.7.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
jest-diff "^29.7.0"
|
|
|
|
|
jest-get-type "^29.6.3"
|
|
|
|
|
jest-matcher-utils "^29.7.0"
|
|
|
|
|
jest-message-util "^29.7.0"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
natural-compare "^1.4.0"
|
|
|
|
|
pretty-format "^29.7.0"
|
|
|
|
|
semver "^7.5.3"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
jest-util@30.0.5:
|
|
|
|
|
version "30.0.5"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-30.0.5.tgz#035d380c660ad5f1748dff71c4105338e05f8669"
|
|
|
|
|
integrity sha512-pvyPWssDZR0FlfMxCBoc0tvM8iUEskaRFALUtGQYzVEAqisAztmy+R8LnU14KT4XA0H/a5HMVTXat1jLne010g==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "30.0.5"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.1.2"
|
|
|
|
|
ci-info "^4.2.0"
|
|
|
|
|
graceful-fs "^4.2.11"
|
|
|
|
|
picomatch "^4.0.2"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-util@^28.0.0, jest-util@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-util/-/jest-util-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
ci-info "^3.2.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
picomatch "^2.2.3"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-util@^29.0.0, jest-util@^29.0.3, jest-util@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz"
|
|
|
|
|
integrity sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
"@jest/types" "^29.6.3"
|
2021-05-11 16:10:34 -07:00
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
ci-info "^3.2.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
picomatch "^2.2.3"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-util@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-util/-/jest-util-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-RYMgG/MTadOr5t8KdhejfvUU82MxsCu5MF6KuDUHl+NuwzUt+Sm6jJWxTJVrDR1j5M/gJVCPKQEpWXY+yIQ6lQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
ci-info "^3.2.0"
|
|
|
|
|
graceful-fs "^4.2.9"
|
|
|
|
|
picomatch "^2.2.3"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-validate@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
camelcase "^6.2.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
jest-get-type "^28.0.2"
|
|
|
|
|
leven "^3.1.0"
|
|
|
|
|
pretty-format "^28.1.3"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-validate@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-OebiqqT6lK8cbMPtrSoS3aZP4juID762lZvpf1u+smZnwTEBCBInan0GAIIhv36MxGaJvmq5uJm7dl5gVt+Zrw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
camelcase "^6.2.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
jest-get-type "^29.0.0"
|
|
|
|
|
leven "^3.1.0"
|
|
|
|
|
pretty-format "^29.0.3"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-validate@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-validate/-/jest-validate-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-pC26etNIi+y3HV8A+tUGr/lph9B18GnzSRAkPaaZJIE1eFdiYm6/CewuiJQ8/RlfHd1u/8Ioi8/sJ+CmbA+zAQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
camelcase "^6.2.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
jest-get-type "^29.4.3"
|
|
|
|
|
leven "^3.1.0"
|
|
|
|
|
pretty-format "^29.5.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-validate@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-29.7.0.tgz#7bf705511c64da591d46b15fce41400d52147d9c"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
camelcase "^6.2.0"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
jest-get-type "^29.6.3"
|
|
|
|
|
leven "^3.1.0"
|
|
|
|
|
pretty-format "^29.7.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-watcher@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/test-result" "^28.1.3"
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
ansi-escapes "^4.2.1"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
emittery "^0.10.2"
|
|
|
|
|
jest-util "^28.1.3"
|
|
|
|
|
string-length "^4.0.1"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-watcher@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-tQX9lU91A+9tyUQKUMp0Ns8xAcdhC9fo73eqA3LFxP2bSgiF49TNcc+vf3qgGYYK9qRjFpXW9+4RgF/mbxyOOw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/test-result" "^29.0.3"
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
ansi-escapes "^4.2.1"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
emittery "^0.10.2"
|
|
|
|
|
jest-util "^29.0.3"
|
|
|
|
|
string-length "^4.0.1"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-watcher@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-KmTojKcapuqYrKDpRwfqcQ3zjMlwu27SYext9pt4GlF5FUgB+7XE1mcCnSm6a4uUpFyQIkb6ZhzZvHl+jiBCiA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/test-result" "^29.5.0"
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
ansi-escapes "^4.2.1"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
emittery "^0.13.1"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
string-length "^4.0.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-watcher@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-29.7.0.tgz#7810d30d619c3a62093223ce6bb359ca1b28a2f2"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/test-result" "^29.7.0"
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
ansi-escapes "^4.2.1"
|
|
|
|
|
chalk "^4.0.0"
|
|
|
|
|
emittery "^0.13.1"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
string-length "^4.0.1"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest-worker@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
merge-stream "^2.0.0"
|
|
|
|
|
supports-color "^8.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest-worker@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Tl/YWUugQOjoTYwjKdfJWkSOfhufJHO5LhXTSZC3TRoQKO+fuXnZAdoXXBlpLXKGODBL3OvdUasfDD4PcMe6ng==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
merge-stream "^2.0.0"
|
|
|
|
|
supports-color "^8.0.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest-worker@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest-worker/-/jest-worker-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-NcrQnevGoSp4b5kg+akIpthoAFHxPBcb5P6mYPY0fUNT+sSvmtu6jlkEle3anczUKIKEbMxFimk9oTP/tpIPgA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
jest-util "^29.5.0"
|
|
|
|
|
merge-stream "^2.0.0"
|
|
|
|
|
supports-color "^8.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest-worker@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-29.7.0.tgz#acad073acbbaeb7262bd5389e1bcf43e10058d4a"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/node" "*"
|
|
|
|
|
jest-util "^29.7.0"
|
|
|
|
|
merge-stream "^2.0.0"
|
|
|
|
|
supports-color "^8.0.0"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
jest@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/core" "^28.1.3"
|
|
|
|
|
"@jest/types" "^28.1.3"
|
|
|
|
|
import-local "^3.0.2"
|
|
|
|
|
jest-cli "^28.1.3"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jest@^29.0.3:
|
|
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest/-/jest-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ElgUtJBLgXM1E8L6K1RW1T96R897YY/3lRYqq9uVcPWtP2AAl/nQ16IYDh/FzQOOQ12VEuLdcPU83mbhG2C3PQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/core" "^29.0.3"
|
|
|
|
|
"@jest/types" "^29.0.3"
|
|
|
|
|
import-local "^3.0.2"
|
|
|
|
|
jest-cli "^29.0.3"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
jest@^29.5.0:
|
|
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jest/-/jest-29.5.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-juMg3he2uru1QoXX078zTa7pO85QyB9xajZc6bU+d9yEGwrKX6+vGmJQ3UdVZsvTEUARIdObzH68QItim6OSSQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/core" "^29.5.0"
|
|
|
|
|
"@jest/types" "^29.5.0"
|
|
|
|
|
import-local "^3.0.2"
|
|
|
|
|
jest-cli "^29.5.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jest@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/jest/-/jest-29.7.0.tgz#994676fc24177f088f1c5e3737f5697204ff2613"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/core" "^29.7.0"
|
|
|
|
|
"@jest/types" "^29.6.3"
|
|
|
|
|
import-local "^3.0.2"
|
|
|
|
|
jest-cli "^29.7.0"
|
|
|
|
|
|
2024-05-21 01:41:16 -04:00
|
|
|
joi@^17.11.0:
|
|
|
|
|
version "17.13.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/joi/-/joi-17.13.1.tgz"
|
2024-05-21 01:41:16 -04:00
|
|
|
integrity sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@hapi/hoek" "^9.3.0"
|
|
|
|
|
"@hapi/topo" "^5.1.0"
|
|
|
|
|
"@sideway/address" "^4.1.5"
|
|
|
|
|
"@sideway/formula" "^3.0.1"
|
|
|
|
|
"@sideway/pinpoint" "^2.0.0"
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
joycon@^3.1.1:
|
|
|
|
|
version "3.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
"js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==
|
|
|
|
|
|
2024-01-12 12:26:30 -08:00
|
|
|
js-yaml@^3.13.1:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "3.14.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
|
|
|
|
|
dependencies:
|
|
|
|
|
argparse "^1.0.7"
|
|
|
|
|
esprima "^4.0.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
js-yaml@^4.1.0:
|
|
|
|
|
version "4.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==
|
|
|
|
|
dependencies:
|
|
|
|
|
argparse "^2.0.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jsbn@1.1.0:
|
|
|
|
|
version "1.1.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz"
|
|
|
|
|
integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jsdom@^20.0.0:
|
|
|
|
|
version "20.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jsdom/-/jsdom-20.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-x4a6CKCgx00uCmP+QakBDFXwjAJ69IkkIWHmtmjd3wvXPcdOS44hfX2vqkOQrVrq8l9DhNNADZRXaCEWvgXtVA==
|
|
|
|
|
dependencies:
|
|
|
|
|
abab "^2.0.6"
|
|
|
|
|
acorn "^8.7.1"
|
|
|
|
|
acorn-globals "^6.0.0"
|
|
|
|
|
cssom "^0.5.0"
|
|
|
|
|
cssstyle "^2.3.0"
|
|
|
|
|
data-urls "^3.0.2"
|
|
|
|
|
decimal.js "^10.3.1"
|
|
|
|
|
domexception "^4.0.0"
|
|
|
|
|
escodegen "^2.0.0"
|
|
|
|
|
form-data "^4.0.0"
|
|
|
|
|
html-encoding-sniffer "^3.0.0"
|
|
|
|
|
http-proxy-agent "^5.0.0"
|
|
|
|
|
https-proxy-agent "^5.0.1"
|
|
|
|
|
is-potential-custom-element-name "^1.0.1"
|
|
|
|
|
nwsapi "^2.2.0"
|
|
|
|
|
parse5 "^7.0.0"
|
|
|
|
|
saxes "^6.0.0"
|
|
|
|
|
symbol-tree "^3.2.4"
|
|
|
|
|
tough-cookie "^4.0.0"
|
|
|
|
|
w3c-hr-time "^1.0.2"
|
|
|
|
|
w3c-xmlserializer "^3.0.0"
|
|
|
|
|
webidl-conversions "^7.0.0"
|
|
|
|
|
whatwg-encoding "^2.0.0"
|
|
|
|
|
whatwg-mimetype "^3.0.0"
|
|
|
|
|
whatwg-url "^11.0.0"
|
|
|
|
|
ws "^8.8.0"
|
|
|
|
|
xml-name-validator "^4.0.0"
|
|
|
|
|
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
jsdom@^22.1.0:
|
|
|
|
|
version "22.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jsdom/-/jsdom-22.1.0.tgz"
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
integrity sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==
|
|
|
|
|
dependencies:
|
|
|
|
|
abab "^2.0.6"
|
|
|
|
|
cssstyle "^3.0.0"
|
|
|
|
|
data-urls "^4.0.0"
|
|
|
|
|
decimal.js "^10.4.3"
|
|
|
|
|
domexception "^4.0.0"
|
|
|
|
|
form-data "^4.0.0"
|
|
|
|
|
html-encoding-sniffer "^3.0.0"
|
|
|
|
|
http-proxy-agent "^5.0.0"
|
|
|
|
|
https-proxy-agent "^5.0.1"
|
|
|
|
|
is-potential-custom-element-name "^1.0.1"
|
|
|
|
|
nwsapi "^2.2.4"
|
|
|
|
|
parse5 "^7.1.2"
|
|
|
|
|
rrweb-cssom "^0.6.0"
|
|
|
|
|
saxes "^6.0.0"
|
|
|
|
|
symbol-tree "^3.2.4"
|
|
|
|
|
tough-cookie "^4.1.2"
|
|
|
|
|
w3c-xmlserializer "^4.0.0"
|
|
|
|
|
webidl-conversions "^7.0.0"
|
|
|
|
|
whatwg-encoding "^2.0.0"
|
|
|
|
|
whatwg-mimetype "^3.0.0"
|
|
|
|
|
whatwg-url "^12.0.1"
|
|
|
|
|
ws "^8.13.0"
|
|
|
|
|
xml-name-validator "^4.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
jsesc@^2.5.1:
|
|
|
|
|
version "2.5.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==
|
|
|
|
|
|
2024-10-29 21:51:41 -04:00
|
|
|
jsesc@^3.0.2:
|
2025-01-02 16:59:45 -05:00
|
|
|
version "3.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz"
|
2025-01-02 16:59:45 -05:00
|
|
|
integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==
|
2024-10-29 21:51:41 -04:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
jsesc@~3.0.2:
|
|
|
|
|
version "3.0.2"
|
|
|
|
|
resolved "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz"
|
|
|
|
|
integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
json-buffer@3.0.1:
|
|
|
|
|
version "3.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
json-diff@^0.5.4:
|
|
|
|
|
version "0.5.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/json-diff/-/json-diff-0.5.5.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-B2RSfPv8Y5iqm6/9aKC3cOhXPzjYupKDpGuqT5py9NRulL8J0UoB/zKXUo70xBsuxPcIFgtsGgEdXLrNp0GL7w==
|
|
|
|
|
dependencies:
|
|
|
|
|
cli-color "~0.1.6"
|
|
|
|
|
difflib "~0.2.1"
|
|
|
|
|
dreamopt "~0.6.0"
|
|
|
|
|
|
2024-03-25 15:00:31 -04:00
|
|
|
json-parse-even-better-errors@^2.3.0:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "2.3.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
json-schema-traverse@^0.4.1:
|
|
|
|
|
version "0.4.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==
|
|
|
|
|
|
|
|
|
|
json-stable-stringify-without-jsonify@^1.0.1:
|
|
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==
|
|
|
|
|
|
2024-10-11 16:29:18 -04:00
|
|
|
json5@^2.1.0, json5@^2.2.1, json5@^2.2.3:
|
2023-06-05 13:35:39 -04:00
|
|
|
version "2.2.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==
|
|
|
|
|
|
2024-08-06 14:41:26 -04:00
|
|
|
jsonfile@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz"
|
2024-08-06 14:41:26 -04:00
|
|
|
integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==
|
|
|
|
|
optionalDependencies:
|
|
|
|
|
graceful-fs "^4.1.6"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
jszip@^3.10.1:
|
|
|
|
|
version "3.10.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==
|
|
|
|
|
dependencies:
|
|
|
|
|
lie "~3.3.0"
|
|
|
|
|
pako "~1.0.2"
|
|
|
|
|
readable-stream "~2.3.6"
|
|
|
|
|
setimmediate "^1.0.5"
|
|
|
|
|
|
2024-05-17 14:55:43 -07:00
|
|
|
keypress@~0.2.1:
|
|
|
|
|
version "0.2.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/keypress/-/keypress-0.2.1.tgz"
|
2024-05-17 14:55:43 -07:00
|
|
|
integrity sha512-HjorDJFNhnM4SicvaUXac0X77NiskggxJdesG72+O5zBKpSqKFCrqmndKVqpu3pFqkla0St6uGk8Ju0sCurrmg==
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
keyv@^4.5.4:
|
|
|
|
|
version "4.5.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==
|
|
|
|
|
dependencies:
|
|
|
|
|
json-buffer "3.0.1"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
kind-of@^6.0.2:
|
|
|
|
|
version "6.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
kleur@^3.0.3:
|
|
|
|
|
version "3.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
kuler@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==
|
|
|
|
|
|
2025-04-24 14:57:44 -04:00
|
|
|
leac@^0.6.0:
|
|
|
|
|
version "0.6.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/leac/-/leac-0.6.0.tgz"
|
2025-04-24 14:57:44 -04:00
|
|
|
integrity sha512-y+SqErxb8h7nE/fiEX07jsbuhrpO9lL8eca7/Y1nuWV2moNlXhyd59iDGcRf6moVyDMbmTNzL40SUyrFU/yDpg==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
leven@2.1.0:
|
|
|
|
|
version "2.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
leven@^3.1.0:
|
|
|
|
|
version "3.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
levn@^0.4.1:
|
|
|
|
|
version "0.4.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
prelude-ls "^1.2.1"
|
|
|
|
|
type-check "~0.4.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
lie@~3.3.0:
|
|
|
|
|
version "3.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
immediate "~3.0.5"
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
lilconfig@^3.1.1:
|
|
|
|
|
version "3.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
lines-and-columns@^1.1.6:
|
|
|
|
|
version "1.2.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
load-tsconfig@^0.2.3:
|
|
|
|
|
version "0.2.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==
|
|
|
|
|
|
2022-11-15 13:24:14 -05:00
|
|
|
locate-path@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz"
|
2022-11-15 13:24:14 -05:00
|
|
|
integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==
|
|
|
|
|
dependencies:
|
|
|
|
|
p-locate "^3.0.0"
|
|
|
|
|
path-exists "^3.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
locate-path@^5.0.0:
|
|
|
|
|
version "5.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==
|
|
|
|
|
dependencies:
|
|
|
|
|
p-locate "^4.1.0"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
locate-path@^6.0.0:
|
|
|
|
|
version "6.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==
|
|
|
|
|
dependencies:
|
|
|
|
|
p-locate "^5.0.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
lodash.debounce@^4.0.8:
|
|
|
|
|
version "4.0.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
lodash.memoize@4.x, lodash.memoize@^4.1.2:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "4.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
lodash.merge@^4.6.2:
|
|
|
|
|
version "4.6.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
lodash.sortby@^4.7.0:
|
|
|
|
|
version "4.7.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
lodash@^4.17.10, lodash@^4.17.13, lodash@^4.17.21:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "4.17.21"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
|
|
|
|
|
|
2024-05-01 13:35:03 +01:00
|
|
|
log-symbols@^4.1.0:
|
|
|
|
|
version "4.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz"
|
2024-05-01 13:35:03 +01:00
|
|
|
integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==
|
|
|
|
|
dependencies:
|
|
|
|
|
chalk "^4.1.0"
|
|
|
|
|
is-unicode-supported "^0.1.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
log-symbols@^5.1.0:
|
|
|
|
|
version "5.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==
|
|
|
|
|
dependencies:
|
|
|
|
|
chalk "^5.0.0"
|
|
|
|
|
is-unicode-supported "^1.1.0"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
logform@^2.6.0, logform@^2.7.0:
|
|
|
|
|
version "2.7.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@colors/colors" "1.6.0"
|
|
|
|
|
"@types/triple-beam" "^1.3.2"
|
|
|
|
|
fecha "^4.2.0"
|
|
|
|
|
ms "^2.1.1"
|
|
|
|
|
safe-stable-stringify "^2.3.1"
|
|
|
|
|
triple-beam "^1.3.0"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
loose-envify@^1.0.0:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "1.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
js-tokens "^3.0.0 || ^4.0.0"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
lru-cache@^10.2.0:
|
|
|
|
|
version "10.4.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
|
|
|
|
|
|
2025-04-14 15:15:14 -04:00
|
|
|
lru-cache@^11.0.0:
|
|
|
|
|
version "11.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz"
|
2025-04-14 15:15:14 -04:00
|
|
|
integrity sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
lru-cache@^5.1.1:
|
|
|
|
|
version "5.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==
|
|
|
|
|
dependencies:
|
|
|
|
|
yallist "^3.0.2"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
lru-cache@^6.0.0:
|
|
|
|
|
version "6.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==
|
|
|
|
|
dependencies:
|
|
|
|
|
yallist "^4.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
lru-cache@^7.14.1:
|
|
|
|
|
version "7.18.3"
|
|
|
|
|
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz"
|
|
|
|
|
integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==
|
|
|
|
|
|
2024-03-11 13:55:24 -04:00
|
|
|
"lru-cache@^9.1.1 || ^10.0.0":
|
|
|
|
|
version "10.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.0.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
lz-string@^1.4.4:
|
|
|
|
|
version "1.4.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/lz-string/-/lz-string-1.4.4.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-0ckx7ZHRPqb0oUm8zNr+90mtf9DQB60H1wMCjBtfi62Kl3a7JbHob6gA2bC+xRvZoOL+1hzUK8jeuEIQE8svEQ==
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
make-dir@^2.0.0, make-dir@^2.1.0:
|
|
|
|
|
version "2.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==
|
|
|
|
|
dependencies:
|
|
|
|
|
pify "^4.0.1"
|
|
|
|
|
semver "^5.6.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
make-dir@^3.0.0:
|
|
|
|
|
version "3.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==
|
|
|
|
|
dependencies:
|
|
|
|
|
semver "^6.0.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
make-dir@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==
|
|
|
|
|
dependencies:
|
|
|
|
|
semver "^7.5.3"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
make-error@1.x, make-error@^1.1.1, make-error@^1.3.6:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "1.3.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==
|
|
|
|
|
|
|
|
|
|
makeerror@1.0.12:
|
|
|
|
|
version "1.0.12"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==
|
|
|
|
|
dependencies:
|
|
|
|
|
tmpl "1.0.5"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
math-intrinsics@^1.1.0:
|
|
|
|
|
version "1.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
|
|
|
|
|
|
|
|
|
|
media-typer@^1.1.0:
|
|
|
|
|
version "1.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==
|
|
|
|
|
|
|
|
|
|
merge-descriptors@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
merge-stream@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
merge2@^1.3.0, merge2@^1.4.1:
|
|
|
|
|
version "1.4.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
merge@^2.1.1:
|
|
|
|
|
version "2.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.5, micromatch@^4.0.8:
|
2024-10-11 16:29:34 -04:00
|
|
|
version "4.0.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz"
|
2024-10-11 16:29:34 -04:00
|
|
|
integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2024-10-11 16:29:34 -04:00
|
|
|
braces "^3.0.3"
|
2021-05-11 16:10:34 -07:00
|
|
|
picomatch "^2.3.1"
|
|
|
|
|
|
|
|
|
|
mime-db@1.52.0:
|
|
|
|
|
version "1.52.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
mime-db@^1.54.0:
|
|
|
|
|
version "1.54.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==
|
|
|
|
|
|
2024-03-25 15:00:31 -04:00
|
|
|
mime-types@^2.1.12:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "2.1.35"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
|
|
|
|
|
dependencies:
|
|
|
|
|
mime-db "1.52.0"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
mime-types@^3.0.0, mime-types@^3.0.1:
|
|
|
|
|
version "3.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==
|
|
|
|
|
dependencies:
|
|
|
|
|
mime-db "^1.54.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
mimic-fn@^2.1.0:
|
|
|
|
|
version "2.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==
|
|
|
|
|
|
2024-04-02 10:32:23 -04:00
|
|
|
minimatch@9.0.3, minimatch@^9.0.1:
|
|
|
|
|
version "9.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz"
|
2024-04-02 10:32:23 -04:00
|
|
|
integrity sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==
|
|
|
|
|
dependencies:
|
|
|
|
|
brace-expansion "^2.0.1"
|
|
|
|
|
|
2025-04-14 15:15:14 -04:00
|
|
|
minimatch@^10.0.0:
|
|
|
|
|
version "10.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/minimatch/-/minimatch-10.0.1.tgz"
|
2025-04-14 15:15:14 -04:00
|
|
|
integrity sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
brace-expansion "^2.0.1"
|
|
|
|
|
|
2024-03-25 15:00:31 -04:00
|
|
|
minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "3.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==
|
|
|
|
|
dependencies:
|
|
|
|
|
brace-expansion "^1.1.7"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
minimatch@^5.0.1, minimatch@^5.1.6, minimatch@~5.1.2:
|
2025-01-02 11:24:26 -05:00
|
|
|
version "5.1.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz"
|
2025-01-02 11:24:26 -05:00
|
|
|
integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==
|
|
|
|
|
dependencies:
|
|
|
|
|
brace-expansion "^2.0.1"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
minimatch@^9.0.3, minimatch@^9.0.4:
|
|
|
|
|
version "9.0.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
|
|
|
|
|
dependencies:
|
|
|
|
|
brace-expansion "^2.0.1"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
minimist@^1.2.0, minimist@^1.2.8:
|
2023-06-05 13:35:39 -04:00
|
|
|
version "1.2.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
|
|
|
|
|
|
2024-03-11 13:55:24 -04:00
|
|
|
"minipass@^5.0.0 || ^6.0.2 || ^7.0.0":
|
|
|
|
|
version "7.0.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
minipass@^7.1.2:
|
|
|
|
|
version "7.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
mitt@^3.0.1:
|
|
|
|
|
version "3.0.1"
|
|
|
|
|
resolved "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz"
|
|
|
|
|
integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
mkdirp@3.0.1:
|
|
|
|
|
version "3.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
mocha@^10.2.0:
|
|
|
|
|
version "10.8.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==
|
|
|
|
|
dependencies:
|
|
|
|
|
ansi-colors "^4.1.3"
|
|
|
|
|
browser-stdout "^1.3.1"
|
|
|
|
|
chokidar "^3.5.3"
|
|
|
|
|
debug "^4.3.5"
|
|
|
|
|
diff "^5.2.0"
|
|
|
|
|
escape-string-regexp "^4.0.0"
|
|
|
|
|
find-up "^5.0.0"
|
|
|
|
|
glob "^8.1.0"
|
|
|
|
|
he "^1.2.0"
|
|
|
|
|
js-yaml "^4.1.0"
|
|
|
|
|
log-symbols "^4.1.0"
|
|
|
|
|
minimatch "^5.1.6"
|
|
|
|
|
ms "^2.1.3"
|
|
|
|
|
serialize-javascript "^6.0.2"
|
|
|
|
|
strip-json-comments "^3.1.1"
|
|
|
|
|
supports-color "^8.1.1"
|
|
|
|
|
workerpool "^6.5.1"
|
|
|
|
|
yargs "^16.2.0"
|
|
|
|
|
yargs-parser "^20.2.9"
|
|
|
|
|
yargs-unparser "^2.0.0"
|
|
|
|
|
|
|
|
|
|
mocha@^11.0.1:
|
|
|
|
|
version "11.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/mocha/-/mocha-11.0.1.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-+3GkODfsDG71KSCQhc4IekSW+ItCK/kiez1Z28ksWvYhKXV/syxMlerR/sC7whDp7IyreZ4YxceMLdTs5hQE8A==
|
|
|
|
|
dependencies:
|
|
|
|
|
ansi-colors "^4.1.3"
|
|
|
|
|
browser-stdout "^1.3.1"
|
|
|
|
|
chokidar "^3.5.3"
|
|
|
|
|
debug "^4.3.5"
|
|
|
|
|
diff "^5.2.0"
|
|
|
|
|
escape-string-regexp "^4.0.0"
|
|
|
|
|
find-up "^5.0.0"
|
|
|
|
|
glob "^10.4.5"
|
|
|
|
|
he "^1.2.0"
|
|
|
|
|
js-yaml "^4.1.0"
|
|
|
|
|
log-symbols "^4.1.0"
|
|
|
|
|
minimatch "^5.1.6"
|
|
|
|
|
ms "^2.1.3"
|
|
|
|
|
serialize-javascript "^6.0.2"
|
|
|
|
|
strip-json-comments "^3.1.1"
|
|
|
|
|
supports-color "^8.1.1"
|
|
|
|
|
workerpool "^6.5.1"
|
|
|
|
|
yargs "^16.2.0"
|
|
|
|
|
yargs-parser "^20.2.9"
|
|
|
|
|
yargs-unparser "^2.0.0"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
mri@1.1.4:
|
|
|
|
|
version "1.1.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/mri/-/mri-1.1.4.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-6y7IjGPm8AzlvoUrwAaw1tLnUBudaS3752vcd8JtrpGGQn+rXIe63LFVHm/YMwtqAuh+LJPCFdlLYPWM1nYn6w==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
ms@^2.1.1, ms@^2.1.3:
|
2025-01-06 11:01:38 -05:00
|
|
|
version "2.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
mz@^2.7.0:
|
|
|
|
|
version "2.7.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
any-promise "^1.0.0"
|
|
|
|
|
object-assign "^4.0.1"
|
|
|
|
|
thenify-all "^1.0.0"
|
|
|
|
|
|
2024-05-17 14:55:43 -07:00
|
|
|
native-or-another@~2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/native-or-another/-/native-or-another-2.0.0.tgz"
|
2024-05-17 14:55:43 -07:00
|
|
|
integrity sha512-rDE50rrX/PSk2StV5EnwpRk35TENl4I4ZsSGZsMJufLdAJ1P4YzNwVf5UOhjQodwz+RdTP9eZSG7FiqnoY25nA==
|
|
|
|
|
dependencies:
|
|
|
|
|
native-or-bluebird "^1.1.2"
|
|
|
|
|
|
|
|
|
|
native-or-bluebird@^1.1.2:
|
|
|
|
|
version "1.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/native-or-bluebird/-/native-or-bluebird-1.2.0.tgz"
|
2024-05-17 14:55:43 -07:00
|
|
|
integrity sha512-0SH8UubxDfe382eYiwmd12qxAbiWGzlGZv6CkMA+DPojWa/Y0oH4hE0lRtFfFgJmPQFyKXeB8XxPbZz6TvvKaQ==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
natural-compare@^1.4.0:
|
|
|
|
|
version "1.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
negotiator@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
netmask@^2.0.2:
|
|
|
|
|
version "2.0.2"
|
|
|
|
|
resolved "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz"
|
|
|
|
|
integrity sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
node-addon-api@^3.2.1:
|
|
|
|
|
version "3.2.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==
|
|
|
|
|
|
|
|
|
|
node-gyp-build@^4.3.0:
|
|
|
|
|
version "4.6.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.6.0.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-NTZVKn9IylLwUzaKjkas1e4u2DLNcV4rdYagA4PWdPwW87Bi7z+BznyKSRwS/761tV/lzCGXplWsiaMjLqP2zQ==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
node-int64@^0.4.0:
|
|
|
|
|
version "0.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==
|
|
|
|
|
|
2025-01-02 16:59:45 -05:00
|
|
|
node-releases@^2.0.19:
|
|
|
|
|
version "2.0.19"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz"
|
2025-01-02 16:59:45 -05:00
|
|
|
integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==
|
2024-04-23 12:28:41 +01:00
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
normalize-path@^3.0.0, normalize-path@~3.0.0:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
npm-dts@^1.3.13:
|
|
|
|
|
version "1.3.13"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/npm-dts/-/npm-dts-1.3.13.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-k1G0x0aIN8Wc0KyEZe2zAvBQqPi2NMBTg0fanEUhmBkynvb/KLy+J8F3ozyPGW1sAdnjaSHfCe1hd/X/IaD4Fw==
|
|
|
|
|
dependencies:
|
|
|
|
|
args "5.0.3"
|
|
|
|
|
find-node-modules "2.1.3"
|
|
|
|
|
mkdirp "3.0.1"
|
|
|
|
|
npm-run "5.0.1"
|
|
|
|
|
rimraf "6.0.1"
|
|
|
|
|
tmp "0.2.3"
|
|
|
|
|
winston "3.13.1"
|
|
|
|
|
|
|
|
|
|
npm-path@^2.0.2, npm-path@^2.0.4:
|
|
|
|
|
version "2.0.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/npm-path/-/npm-path-2.0.4.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-IFsj0R9C7ZdR5cP+ET342q77uSRdtWOlWpih5eC+lu29tIDbNEgDbzgVJ5UFvYHWhxDZ5TFkJafFioO0pPQjCw==
|
|
|
|
|
dependencies:
|
|
|
|
|
which "^1.2.10"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
npm-run-path@^4.0.1:
|
|
|
|
|
version "4.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==
|
|
|
|
|
dependencies:
|
|
|
|
|
path-key "^3.0.0"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
npm-run@5.0.1:
|
|
|
|
|
version "5.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/npm-run/-/npm-run-5.0.1.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-s7FyRpHUgaJfzkRgOnevX8rAWWsv1dofY1XS7hliWCF6LSQh+HtDfBvpigPS1krLvXw+Fi17CYMY8mUtblnyWw==
|
|
|
|
|
dependencies:
|
|
|
|
|
minimist "^1.2.0"
|
|
|
|
|
npm-path "^2.0.4"
|
|
|
|
|
npm-which "^3.0.1"
|
|
|
|
|
serializerr "^1.0.3"
|
|
|
|
|
|
|
|
|
|
npm-which@^3.0.1:
|
|
|
|
|
version "3.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/npm-which/-/npm-which-3.0.1.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-CM8vMpeFQ7MAPin0U3wzDhSGV0hMHNwHU0wjo402IVizPDrs45jSfSuoC+wThevY88LQti8VvaAnqYAeVy3I1A==
|
|
|
|
|
dependencies:
|
|
|
|
|
commander "^2.9.0"
|
|
|
|
|
npm-path "^2.0.2"
|
|
|
|
|
which "^1.2.10"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
nth-check@^2.0.1:
|
|
|
|
|
version "2.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
|
|
|
|
|
dependencies:
|
|
|
|
|
boolbase "^1.0.0"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
nullthrows@^1.1.1:
|
|
|
|
|
version "1.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
nwsapi@^2.2.0:
|
|
|
|
|
version "2.2.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==
|
|
|
|
|
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
nwsapi@^2.2.4:
|
|
|
|
|
version "2.2.7"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.7.tgz"
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
integrity sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
object-assign@^4, object-assign@^4.0.1, object-assign@^4.1.1:
|
2024-09-27 15:15:15 -04:00
|
|
|
version "4.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
|
2023-06-05 13:35:39 -04:00
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
object-inspect@^1.13.3, object-inspect@^1.13.4:
|
2025-04-14 18:39:00 -04:00
|
|
|
version "1.13.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
object-keys@^1.1.1:
|
|
|
|
|
version "1.1.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
|
|
|
|
|
integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
|
|
|
|
|
|
|
|
|
|
object.assign@^4.1.7:
|
|
|
|
|
version "4.1.7"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d"
|
|
|
|
|
integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bind "^1.0.8"
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
define-properties "^1.2.1"
|
|
|
|
|
es-object-atoms "^1.0.0"
|
|
|
|
|
has-symbols "^1.1.0"
|
|
|
|
|
object-keys "^1.1.1"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
on-finished@^2.4.1:
|
|
|
|
|
version "2.4.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==
|
|
|
|
|
dependencies:
|
|
|
|
|
ee-first "1.1.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
once@^1.3.0, once@^1.3.1, once@^1.4.0:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "1.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/once/-/once-1.4.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==
|
|
|
|
|
dependencies:
|
|
|
|
|
wrappy "1"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
one-time@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==
|
|
|
|
|
dependencies:
|
|
|
|
|
fn.name "1.x.x"
|
|
|
|
|
|
2024-05-01 13:35:03 +01:00
|
|
|
onetime@^5.1.0, onetime@^5.1.2:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "5.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==
|
|
|
|
|
dependencies:
|
|
|
|
|
mimic-fn "^2.1.0"
|
|
|
|
|
|
2024-03-25 15:00:34 -04:00
|
|
|
optionator@^0.9.3:
|
|
|
|
|
version "0.9.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz"
|
2024-03-25 15:00:34 -04:00
|
|
|
integrity sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@aashutoshrathi/word-wrap" "^1.2.3"
|
|
|
|
|
deep-is "^0.1.3"
|
|
|
|
|
fast-levenshtein "^2.0.6"
|
|
|
|
|
levn "^0.4.1"
|
|
|
|
|
prelude-ls "^1.2.1"
|
|
|
|
|
type-check "^0.4.0"
|
|
|
|
|
|
2024-05-01 13:35:03 +01:00
|
|
|
ora@5.4.1:
|
|
|
|
|
version "5.4.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz"
|
2024-05-01 13:35:03 +01:00
|
|
|
integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
bl "^4.1.0"
|
|
|
|
|
chalk "^4.1.0"
|
|
|
|
|
cli-cursor "^3.1.0"
|
|
|
|
|
cli-spinners "^2.5.0"
|
|
|
|
|
is-interactive "^1.0.0"
|
|
|
|
|
is-unicode-supported "^0.1.0"
|
|
|
|
|
log-symbols "^4.1.0"
|
|
|
|
|
strip-ansi "^6.0.0"
|
|
|
|
|
wcwidth "^1.0.1"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
ora@^7.0.1:
|
|
|
|
|
version "7.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ora/-/ora-7.0.1.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==
|
|
|
|
|
dependencies:
|
|
|
|
|
chalk "^5.3.0"
|
|
|
|
|
cli-cursor "^4.0.0"
|
|
|
|
|
cli-spinners "^2.9.0"
|
|
|
|
|
is-interactive "^2.0.0"
|
|
|
|
|
is-unicode-supported "^1.3.0"
|
|
|
|
|
log-symbols "^5.1.0"
|
|
|
|
|
stdin-discarder "^0.1.0"
|
|
|
|
|
string-width "^6.1.0"
|
|
|
|
|
strip-ansi "^7.1.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
own-keys@^1.0.1:
|
|
|
|
|
version "1.0.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358"
|
|
|
|
|
integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==
|
|
|
|
|
dependencies:
|
|
|
|
|
get-intrinsic "^1.2.6"
|
|
|
|
|
object-keys "^1.1.1"
|
|
|
|
|
safe-push-apply "^1.0.0"
|
|
|
|
|
|
2022-11-15 13:24:14 -05:00
|
|
|
p-limit@^2.0.0, p-limit@^2.2.0:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "2.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==
|
|
|
|
|
dependencies:
|
|
|
|
|
p-try "^2.0.0"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
p-limit@^3.0.2, p-limit@^3.1.0:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "3.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
yocto-queue "^0.1.0"
|
|
|
|
|
|
2022-11-15 13:24:14 -05:00
|
|
|
p-locate@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz"
|
2022-11-15 13:24:14 -05:00
|
|
|
integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
p-limit "^2.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
p-locate@^4.1.0:
|
|
|
|
|
version "4.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==
|
|
|
|
|
dependencies:
|
|
|
|
|
p-limit "^2.2.0"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
p-locate@^5.0.0:
|
|
|
|
|
version "5.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==
|
|
|
|
|
dependencies:
|
|
|
|
|
p-limit "^3.0.2"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
p-try@^2.0.0:
|
|
|
|
|
version "2.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
pac-proxy-agent@^7.1.0:
|
|
|
|
|
version "7.2.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.2.0.tgz"
|
|
|
|
|
integrity sha512-TEB8ESquiLMc0lV8vcd5Ql/JAKAoyzHFXaStwjkzpOpC5Yv+pIzLfHvjTSdf3vpa2bMiUQrg9i6276yn8666aA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@tootallnate/quickjs-emscripten" "^0.23.0"
|
|
|
|
|
agent-base "^7.1.2"
|
|
|
|
|
debug "^4.3.4"
|
|
|
|
|
get-uri "^6.0.1"
|
|
|
|
|
http-proxy-agent "^7.0.0"
|
|
|
|
|
https-proxy-agent "^7.0.6"
|
|
|
|
|
pac-resolver "^7.0.1"
|
|
|
|
|
socks-proxy-agent "^8.0.5"
|
|
|
|
|
|
|
|
|
|
pac-resolver@^7.0.1:
|
|
|
|
|
version "7.0.1"
|
|
|
|
|
resolved "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz"
|
|
|
|
|
integrity sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==
|
|
|
|
|
dependencies:
|
|
|
|
|
degenerator "^5.0.0"
|
|
|
|
|
netmask "^2.0.2"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
package-json-from-dist@^1.0.0:
|
|
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
pako@~1.0.2:
|
|
|
|
|
version "1.0.11"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
parent-module@^1.0.0:
|
|
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==
|
|
|
|
|
dependencies:
|
2023-06-05 13:35:39 -04:00
|
|
|
callsites "^3.0.0"
|
|
|
|
|
|
2024-01-25 10:29:32 -05:00
|
|
|
parse-json@^5.2.0:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "5.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@babel/code-frame" "^7.0.0"
|
|
|
|
|
error-ex "^1.3.1"
|
|
|
|
|
json-parse-even-better-errors "^2.3.0"
|
|
|
|
|
lines-and-columns "^1.1.6"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
parse-passwd@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/parse-passwd/-/parse-passwd-1.0.0.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
parse5-htmlparser2-tree-adapter@^7.0.0:
|
|
|
|
|
version "7.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.1.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-ruw5xyKs6lrpo9x9rCZqZZnIUntICjQAd0Wsmp396Ul9lN/h+ifgVV1x1gZHi8euej6wTfpqX8j+BFQxF0NS/g==
|
|
|
|
|
dependencies:
|
|
|
|
|
domhandler "^5.0.3"
|
|
|
|
|
parse5 "^7.0.0"
|
|
|
|
|
|
|
|
|
|
parse5-parser-stream@^7.1.2:
|
|
|
|
|
version "7.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/parse5-parser-stream/-/parse5-parser-stream-7.1.2.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-JyeQc9iwFLn5TbvvqACIF/VXG6abODeB3Fwmv/TGdLk2LfbWkaySGY72at4+Ty7EkPZj854u4CrICqNk2qIbow==
|
|
|
|
|
dependencies:
|
|
|
|
|
parse5 "^7.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
parse5@^7.0.0:
|
|
|
|
|
version "7.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-kwpuwzB+px5WUg9pyK0IcK/shltJN5/OVhQagxhCQNtT9Y9QRZqNY2e1cmbu/paRh5LMnz/oVTVLBpjFmMZhSg==
|
|
|
|
|
dependencies:
|
|
|
|
|
entities "^4.4.0"
|
|
|
|
|
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
parse5@^7.1.2:
|
|
|
|
|
version "7.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz"
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
integrity sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==
|
|
|
|
|
dependencies:
|
|
|
|
|
entities "^4.4.0"
|
|
|
|
|
|
2025-04-24 14:57:44 -04:00
|
|
|
parseley@^0.12.0:
|
|
|
|
|
version "0.12.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/parseley/-/parseley-0.12.1.tgz"
|
2025-04-24 14:57:44 -04:00
|
|
|
integrity sha512-e6qHKe3a9HWr0oMRVDTRhKce+bRO8VGQR3NyVwcjwrbhMmFCX9KszEV35+rn4AdilFAq9VPxP/Fe1wC9Qjd2lw==
|
|
|
|
|
dependencies:
|
|
|
|
|
leac "^0.6.0"
|
|
|
|
|
peberminta "^0.9.0"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
parseurl@^1.3.3:
|
|
|
|
|
version "1.3.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==
|
|
|
|
|
|
2022-11-15 13:24:14 -05:00
|
|
|
path-exists@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz"
|
2022-11-15 13:24:14 -05:00
|
|
|
integrity sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
path-exists@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==
|
|
|
|
|
|
|
|
|
|
path-is-absolute@^1.0.0:
|
|
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==
|
|
|
|
|
|
|
|
|
|
path-key@^3.0.0, path-key@^3.1.0:
|
|
|
|
|
version "3.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
|
|
|
|
|
|
|
|
|
|
path-parse@^1.0.7:
|
|
|
|
|
version "1.0.7"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==
|
|
|
|
|
|
2024-03-11 13:55:24 -04:00
|
|
|
path-scurry@^1.10.1:
|
|
|
|
|
version "1.10.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
lru-cache "^9.1.1 || ^10.0.0"
|
|
|
|
|
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
path-scurry@^1.11.1:
|
|
|
|
|
version "1.11.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==
|
|
|
|
|
dependencies:
|
|
|
|
|
lru-cache "^10.2.0"
|
|
|
|
|
minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
|
|
|
|
|
|
2025-04-14 15:15:14 -04:00
|
|
|
path-scurry@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz"
|
2025-04-14 15:15:14 -04:00
|
|
|
integrity sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==
|
|
|
|
|
dependencies:
|
|
|
|
|
lru-cache "^11.0.0"
|
|
|
|
|
minipass "^7.1.2"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
path-to-regexp@^8.0.0:
|
|
|
|
|
version "8.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
path-type@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==
|
|
|
|
|
|
2025-04-24 14:57:44 -04:00
|
|
|
peberminta@^0.9.0:
|
|
|
|
|
version "0.9.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/peberminta/-/peberminta-0.9.0.tgz"
|
2025-04-24 14:57:44 -04:00
|
|
|
integrity sha512-XIxfHpEuSJbITd1H3EeQwpcZbTLHc+VVr8ANI9t5sit565tsI4/xK3KWTUFE2e6QiangUkh3B0jihzmGnNrRsQ==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
pend@~1.2.0:
|
|
|
|
|
version "1.2.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz"
|
|
|
|
|
integrity sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
picocolors@^1.0.0, picocolors@^1.1.1:
|
2024-10-29 21:51:41 -04:00
|
|
|
version "1.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz"
|
2024-10-29 21:51:41 -04:00
|
|
|
integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
|
2024-05-20 11:47:51 +01:00
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "2.3.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
picomatch@^4.0.2:
|
|
|
|
|
version "4.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
pify@^4.0.1:
|
|
|
|
|
version "4.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
pirates@^4.0.1:
|
|
|
|
|
version "4.0.6"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
pirates@^4.0.4, pirates@^4.0.5:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "4.0.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
pkce-challenge@^5.0.0:
|
|
|
|
|
version "5.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/pkce-challenge/-/pkce-challenge-5.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-ueGLflrrnvwB3xuo/uGob5pd5FN7l0MsLf0Z87o/UQmRtwjvfylfc9MurIxRAWywCYTgrvpXBcqjV4OfCYGCIQ==
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
pkg-dir@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==
|
|
|
|
|
dependencies:
|
|
|
|
|
find-up "^3.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
pkg-dir@^4.2.0:
|
|
|
|
|
version "4.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
find-up "^4.0.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
possible-typed-array-names@^1.0.0:
|
|
|
|
|
version "1.1.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae"
|
|
|
|
|
integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
postcss-load-config@^6.0.1:
|
|
|
|
|
version "6.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-6.0.1.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-oPtTM4oerL+UXmx+93ytZVN82RrlY/wPUV8IeDxFrzIjXOLF1pN+EmKPLbubvKHT2HC20xXsCAH2Z+CKV6Oz/g==
|
|
|
|
|
dependencies:
|
|
|
|
|
lilconfig "^3.1.1"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
prelude-ls@^1.2.1:
|
|
|
|
|
version "1.2.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==
|
|
|
|
|
|
2025-01-02 16:59:45 -05:00
|
|
|
prettier-plugin-hermes-parser@0.26.0, prettier-plugin-hermes-parser@^0.26.0:
|
|
|
|
|
version "0.26.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/prettier-plugin-hermes-parser/-/prettier-plugin-hermes-parser-0.26.0.tgz"
|
2025-01-02 16:59:45 -05:00
|
|
|
integrity sha512-ajjlx/0OQ+lcZQEnKEUDU7Srr9vw1OoMO6qZDIYmck1u7j9STiCStqb3RG1vE7FripXYAhquuI+oYG8BCTNC4g==
|
2024-07-22 19:16:13 -04:00
|
|
|
dependencies:
|
2025-01-02 16:59:45 -05:00
|
|
|
hermes-estree "0.26.0"
|
|
|
|
|
hermes-parser "0.26.0"
|
|
|
|
|
prettier-plugin-hermes-parser "0.26.0"
|
2024-04-02 12:13:38 -04:00
|
|
|
|
2025-01-02 16:59:56 -05:00
|
|
|
prettier@^3.3.3:
|
2024-07-22 19:16:13 -04:00
|
|
|
version "3.3.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz"
|
2024-07-22 19:16:13 -04:00
|
|
|
integrity sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==
|
2023-11-02 07:00:05 -07:00
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
pretty-format@30.0.5, pretty-format@^30.0.0:
|
|
|
|
|
version "30.0.5"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-30.0.5.tgz#e001649d472800396c1209684483e18a4d250360"
|
|
|
|
|
integrity sha512-D1tKtYvByrBkFLe2wHJl2bwMJIiT8rW+XA+TiataH79/FszLQMrpGEvzUVkzPau7OCO0Qnrhpe87PqtOAIB8Yw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/schemas" "30.0.5"
|
|
|
|
|
ansi-styles "^5.2.0"
|
|
|
|
|
react-is "^18.3.1"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
pretty-format@^24:
|
|
|
|
|
version "24.9.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-24.9.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-00ZMZUiHaJrNfk33guavqgvfJS30sLYf0f8+Srklv0AMPodGGHcoHgksZ3OThYnIvOd+8yMCn0YiEOogjlgsnA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/types" "^24.9.0"
|
|
|
|
|
ansi-regex "^4.0.0"
|
|
|
|
|
ansi-styles "^3.2.0"
|
|
|
|
|
react-is "^16.8.4"
|
|
|
|
|
|
|
|
|
|
pretty-format@^27.0.2:
|
|
|
|
|
version "27.5.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
ansi-regex "^5.0.1"
|
|
|
|
|
ansi-styles "^5.0.0"
|
|
|
|
|
react-is "^17.0.1"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
pretty-format@^28.0.0, pretty-format@^28.1.3:
|
|
|
|
|
version "28.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/schemas" "^28.1.3"
|
|
|
|
|
ansi-regex "^5.0.1"
|
|
|
|
|
ansi-styles "^5.0.0"
|
|
|
|
|
react-is "^18.0.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
pretty-format@^29.0.0, pretty-format@^29.7.0:
|
|
|
|
|
version "29.7.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz"
|
|
|
|
|
integrity sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/schemas" "^29.6.3"
|
|
|
|
|
ansi-styles "^5.0.0"
|
|
|
|
|
react-is "^18.0.0"
|
|
|
|
|
|
|
|
|
|
pretty-format@^29.0.3:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "29.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-cHudsvQr1K5vNVLbvYF/nv3Qy/F/BcEKxGuIeMiVMRHxPOO1RxXooP8g/ZrwAp7Dx+KdMZoOc7NxLHhMrP2f9Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/schemas" "^29.0.0"
|
|
|
|
|
ansi-styles "^5.0.0"
|
|
|
|
|
react-is "^18.0.0"
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
pretty-format@^29.5.0:
|
2023-06-05 13:35:39 -04:00
|
|
|
version "29.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/pretty-format/-/pretty-format-29.5.0.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-V2mGkI31qdttvTFX7Mt4efOqHXqJWMu4/r66Xh3Z3BwZaPfPJgp6/gbwoujRpPUtfEF6AUUWx3Jim3GCw5g/Qw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jest/schemas" "^29.4.3"
|
|
|
|
|
ansi-styles "^5.0.0"
|
|
|
|
|
react-is "^18.0.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
process-nextick-args@~2.0.0:
|
|
|
|
|
version "2.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
progress@^2.0.3:
|
|
|
|
|
version "2.0.3"
|
|
|
|
|
resolved "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz"
|
|
|
|
|
integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==
|
|
|
|
|
|
2024-05-17 14:55:43 -07:00
|
|
|
prompt-promise@^1.0.3:
|
|
|
|
|
version "1.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/prompt-promise/-/prompt-promise-1.0.3.tgz"
|
2024-05-17 14:55:43 -07:00
|
|
|
integrity sha512-xIbGSzK59hFiwn9kmD0Cki4igpUqTVx7c6D8lqZoENAZyTwxhMhh/QleHWoRFVVusi7CTj/ByHP3N+2EmkhKIA==
|
|
|
|
|
dependencies:
|
|
|
|
|
keypress "~0.2.1"
|
|
|
|
|
native-or-another "~2.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
prompts@^2.0.1:
|
|
|
|
|
version "2.4.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
kleur "^3.0.3"
|
|
|
|
|
sisteransi "^1.0.5"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
protochain@^1.0.5:
|
|
|
|
|
version "1.0.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/protochain/-/protochain-1.0.5.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-4hDwFSX50C4NE6f/6zg8EPr/WLPTkFPUtG0ulWZu6bwzV2hmb50fpdQLr0HiKBAUehapaFpItzWoCLjraLJhUA==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
proxy-addr@^2.0.7:
|
|
|
|
|
version "2.0.7"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==
|
|
|
|
|
dependencies:
|
|
|
|
|
forwarded "0.2.0"
|
|
|
|
|
ipaddr.js "1.9.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
proxy-agent@^6.5.0:
|
|
|
|
|
version "6.5.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.5.0.tgz"
|
|
|
|
|
integrity sha512-TmatMXdr2KlRiA2CyDu8GqR8EjahTG3aY3nXjdzFyoZbmB8hrBsTyMezhULIXKnC0jpfjlmiZ3+EaCzoInSu/A==
|
|
|
|
|
dependencies:
|
|
|
|
|
agent-base "^7.1.2"
|
|
|
|
|
debug "^4.3.4"
|
|
|
|
|
http-proxy-agent "^7.0.1"
|
|
|
|
|
https-proxy-agent "^7.0.6"
|
|
|
|
|
lru-cache "^7.14.1"
|
|
|
|
|
pac-proxy-agent "^7.1.0"
|
|
|
|
|
proxy-from-env "^1.1.0"
|
|
|
|
|
socks-proxy-agent "^8.0.5"
|
|
|
|
|
|
2024-05-21 01:41:16 -04:00
|
|
|
proxy-from-env@^1.1.0:
|
|
|
|
|
version "1.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz"
|
2024-05-21 01:41:16 -04:00
|
|
|
integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
|
|
|
|
|
|
2024-03-25 15:00:31 -04:00
|
|
|
psl@^1.1.33:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "1.9.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
pump@^3.0.0:
|
|
|
|
|
version "3.0.2"
|
|
|
|
|
resolved "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz"
|
|
|
|
|
integrity sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==
|
|
|
|
|
dependencies:
|
|
|
|
|
end-of-stream "^1.1.0"
|
|
|
|
|
once "^1.3.1"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
punycode@^2.1.0, punycode@^2.1.1:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "2.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==
|
|
|
|
|
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
punycode@^2.3.0:
|
|
|
|
|
version "2.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz"
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
puppeteer-core@24.7.2:
|
|
|
|
|
version "24.7.2"
|
|
|
|
|
resolved "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-24.7.2.tgz"
|
|
|
|
|
integrity sha512-P9pZyTmJqKODFCnkZgemCpoFA4LbAa8+NumHVQKyP5X9IgdNS1ZnAnIh1sMAwhF8/xEUGf7jt+qmNLlKieFw1Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@puppeteer/browsers" "2.10.2"
|
|
|
|
|
chromium-bidi "4.1.1"
|
|
|
|
|
debug "^4.4.0"
|
|
|
|
|
devtools-protocol "0.0.1425554"
|
|
|
|
|
typed-query-selector "^2.12.0"
|
|
|
|
|
ws "^8.18.1"
|
|
|
|
|
|
|
|
|
|
puppeteer@^24.7.2:
|
|
|
|
|
version "24.7.2"
|
|
|
|
|
resolved "https://registry.npmjs.org/puppeteer/-/puppeteer-24.7.2.tgz"
|
|
|
|
|
integrity sha512-ifYqoY6wGs0yZeFuFPn8BE9FhuveXkarF+eO18I2e/axdoCh4Qh1AE+qXdJBhdaeoPt6eRNTY4Dih29Jbq8wow==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@puppeteer/browsers" "2.10.2"
|
|
|
|
|
chromium-bidi "4.1.1"
|
|
|
|
|
cosmiconfig "^9.0.0"
|
|
|
|
|
devtools-protocol "0.0.1425554"
|
|
|
|
|
puppeteer-core "24.7.2"
|
|
|
|
|
typed-query-selector "^2.12.0"
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
pure-rand@^6.0.0:
|
|
|
|
|
version "6.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.2.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-6Yg0ekpKICSjPswYOuC5sku/TSWaRYlA0qsXqJgM/d/4pLPHPuTxK7Nbf7jFKzAeedUhR8C7K9Uv63FBsSo8xQ==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
qs@^6.14.0:
|
|
|
|
|
version "6.14.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==
|
|
|
|
|
dependencies:
|
|
|
|
|
side-channel "^1.1.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
querystringify@^2.1.1:
|
|
|
|
|
version "2.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
queue-microtask@^1.2.2:
|
|
|
|
|
version "1.2.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
randombytes@^2.1.0:
|
|
|
|
|
version "2.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
safe-buffer "^5.1.0"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
range-parser@^1.2.1:
|
|
|
|
|
version "1.2.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==
|
|
|
|
|
|
|
|
|
|
raw-body@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==
|
|
|
|
|
dependencies:
|
|
|
|
|
bytes "3.1.2"
|
|
|
|
|
http-errors "2.0.0"
|
|
|
|
|
iconv-lite "0.6.3"
|
|
|
|
|
unpipe "1.0.0"
|
|
|
|
|
|
2024-11-19 10:52:38 -05:00
|
|
|
react-dom@0.0.0-experimental-4beb1fd8-20241118:
|
|
|
|
|
version "0.0.0-experimental-4beb1fd8-20241118"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/react-dom/-/react-dom-0.0.0-experimental-4beb1fd8-20241118.tgz"
|
2024-11-19 10:52:38 -05:00
|
|
|
integrity sha512-/Gs2N/6hiuwqf2uuJ3UN/PWxpIncbuY7XY/IynlB2oNpopeV+x1MMXfNdse8TiPkpgg9aw+VUfQUlLPC52bKiQ==
|
2023-08-02 17:30:55 -04:00
|
|
|
dependencies:
|
2024-11-19 10:52:38 -05:00
|
|
|
scheduler "0.0.0-experimental-4beb1fd8-20241118"
|
|
|
|
|
|
|
|
|
|
react-is@0.0.0-experimental-4beb1fd8-20241118:
|
|
|
|
|
version "0.0.0-experimental-4beb1fd8-20241118"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/react-is/-/react-is-0.0.0-experimental-4beb1fd8-20241118.tgz"
|
2024-11-19 10:52:38 -05:00
|
|
|
integrity sha512-7JE3PtW4zpMYdp1bTXKNmz2t0jzaqc3frMWbvbuZmhif5ndtYx5oCGhfnbm6S5ZeTNKe4GXsN5D73QtZClfepQ==
|
|
|
|
|
|
|
|
|
|
react-is@^16.8.4:
|
|
|
|
|
version "16.13.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz"
|
2024-11-19 10:52:38 -05:00
|
|
|
integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==
|
|
|
|
|
|
|
|
|
|
react-is@^17.0.1:
|
|
|
|
|
version "17.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz"
|
2024-11-19 10:52:38 -05:00
|
|
|
integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==
|
2021-05-11 16:10:34 -07:00
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
react-is@^18.0.0, react-is@^18.3.1:
|
2024-11-19 10:52:38 -05:00
|
|
|
version "18.3.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz"
|
2024-11-19 10:52:38 -05:00
|
|
|
integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2024-11-19 10:52:38 -05:00
|
|
|
react@0.0.0-experimental-4beb1fd8-20241118:
|
|
|
|
|
version "0.0.0-experimental-4beb1fd8-20241118"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/react/-/react-0.0.0-experimental-4beb1fd8-20241118.tgz"
|
2024-11-19 10:52:38 -05:00
|
|
|
integrity sha512-SojDx9IQZXRbze+BNoLRiBDblVTMRebpOZyU2QyRk4ptJob78QiROi58uuE7yxrFMDQN4kBl6tqYkSwQaIM2nQ==
|
2023-08-02 17:30:55 -04:00
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
readable-stream@^3.4.0, readable-stream@^3.6.2:
|
2024-05-01 13:35:03 +01:00
|
|
|
version "3.6.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz"
|
2024-05-01 13:35:03 +01:00
|
|
|
integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
|
|
|
|
|
dependencies:
|
|
|
|
|
inherits "^2.0.3"
|
|
|
|
|
string_decoder "^1.1.1"
|
|
|
|
|
util-deprecate "^1.0.1"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
readable-stream@~2.3.6:
|
|
|
|
|
version "2.3.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==
|
|
|
|
|
dependencies:
|
|
|
|
|
core-util-is "~1.0.0"
|
|
|
|
|
inherits "~2.0.3"
|
|
|
|
|
isarray "~1.0.0"
|
|
|
|
|
process-nextick-args "~2.0.0"
|
|
|
|
|
safe-buffer "~5.1.1"
|
|
|
|
|
string_decoder "~1.1.1"
|
|
|
|
|
util-deprecate "~1.0.1"
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
readdirp@^4.0.1:
|
|
|
|
|
version "4.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
readdirp@~3.6.0:
|
|
|
|
|
version "3.6.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==
|
|
|
|
|
dependencies:
|
|
|
|
|
picomatch "^2.2.1"
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
readline@^1.3.0:
|
|
|
|
|
version "1.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9:
|
|
|
|
|
version "1.0.10"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9"
|
|
|
|
|
integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bind "^1.0.8"
|
|
|
|
|
define-properties "^1.2.1"
|
|
|
|
|
es-abstract "^1.23.9"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
es-object-atoms "^1.0.0"
|
|
|
|
|
get-intrinsic "^1.2.7"
|
|
|
|
|
get-proto "^1.0.1"
|
|
|
|
|
which-builtin-type "^1.2.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
regenerate-unicode-properties@^10.2.0:
|
|
|
|
|
version "10.2.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz"
|
|
|
|
|
integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
|
|
|
|
regenerate "^1.4.2"
|
|
|
|
|
|
|
|
|
|
regenerate@^1.4.2:
|
|
|
|
|
version "1.4.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
regenerator-runtime@^0.13.11:
|
|
|
|
|
version "0.13.11"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
regenerator-runtime@^0.13.4:
|
|
|
|
|
version "0.13.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
regenerator-transform@^0.15.2:
|
|
|
|
|
version "0.15.2"
|
|
|
|
|
resolved "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz"
|
|
|
|
|
integrity sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
|
|
|
|
"@babel/runtime" "^7.8.4"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
regexp.escape@^2.0.1:
|
|
|
|
|
version "2.0.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/regexp.escape/-/regexp.escape-2.0.1.tgz#09e4beef9d202dbd739868f3818223f977cf91da"
|
|
|
|
|
integrity sha512-JItRb4rmyTzmERBkAf6J87LjDPy/RscIwmaJQ3gsFlAzrmZbZU8LwBw5IydFZXW9hqpgbPlGbMhtpqtuAhMgtg==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bind "^1.0.7"
|
|
|
|
|
define-properties "^1.2.1"
|
|
|
|
|
es-abstract "^1.23.3"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
for-each "^0.3.3"
|
|
|
|
|
safe-regex-test "^1.0.3"
|
|
|
|
|
|
|
|
|
|
regexp.prototype.flags@^1.5.4:
|
|
|
|
|
version "1.5.4"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19"
|
|
|
|
|
integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bind "^1.0.8"
|
|
|
|
|
define-properties "^1.2.1"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
get-proto "^1.0.1"
|
|
|
|
|
gopd "^1.2.0"
|
|
|
|
|
set-function-name "^2.0.2"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
regexpu-core@^6.2.0:
|
|
|
|
|
version "6.2.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/regexpu-core/-/regexpu-core-6.2.0.tgz"
|
|
|
|
|
integrity sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
|
|
|
|
regenerate "^1.4.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
regenerate-unicode-properties "^10.2.0"
|
|
|
|
|
regjsgen "^0.8.0"
|
|
|
|
|
regjsparser "^0.12.0"
|
2023-06-06 10:56:20 -04:00
|
|
|
unicode-match-property-ecmascript "^2.0.0"
|
|
|
|
|
unicode-match-property-value-ecmascript "^2.1.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
regjsgen@^0.8.0:
|
|
|
|
|
version "0.8.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/regjsgen/-/regjsgen-0.8.0.tgz"
|
|
|
|
|
integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==
|
|
|
|
|
|
|
|
|
|
regjsparser@^0.12.0:
|
|
|
|
|
version "0.12.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/regjsparser/-/regjsparser-0.12.0.tgz"
|
|
|
|
|
integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==
|
2023-06-06 10:56:20 -04:00
|
|
|
dependencies:
|
2025-04-30 12:44:05 -07:00
|
|
|
jsesc "~3.0.2"
|
2023-06-06 10:56:20 -04:00
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
require-directory@^2.1.1:
|
|
|
|
|
version "2.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==
|
|
|
|
|
|
2022-11-15 13:24:14 -05:00
|
|
|
require-main-filename@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz"
|
2022-11-15 13:24:14 -05:00
|
|
|
integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
requires-port@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==
|
|
|
|
|
|
|
|
|
|
resolve-cwd@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==
|
|
|
|
|
dependencies:
|
|
|
|
|
resolve-from "^5.0.0"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
resolve-dir@^1.0.0, resolve-dir@^1.0.1:
|
|
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/resolve-dir/-/resolve-dir-1.0.1.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==
|
|
|
|
|
dependencies:
|
|
|
|
|
expand-tilde "^2.0.0"
|
|
|
|
|
global-modules "^1.0.0"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
resolve-from@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
resolve-from@^5.0.0:
|
|
|
|
|
version "5.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==
|
|
|
|
|
|
|
|
|
|
resolve.exports@^1.1.0:
|
|
|
|
|
version "1.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
resolve.exports@^2.0.0:
|
|
|
|
|
version "2.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
resolve@^1.14.2, resolve@^1.20.0, resolve@^1.3.2:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "1.22.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==
|
|
|
|
|
dependencies:
|
|
|
|
|
is-core-module "^2.9.0"
|
|
|
|
|
path-parse "^1.0.7"
|
|
|
|
|
supports-preserve-symlinks-flag "^1.0.0"
|
|
|
|
|
|
2024-05-01 13:35:03 +01:00
|
|
|
restore-cursor@^3.1.0:
|
|
|
|
|
version "3.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz"
|
2024-05-01 13:35:03 +01:00
|
|
|
integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==
|
|
|
|
|
dependencies:
|
|
|
|
|
onetime "^5.1.0"
|
|
|
|
|
signal-exit "^3.0.2"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
restore-cursor@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==
|
|
|
|
|
dependencies:
|
|
|
|
|
onetime "^5.1.0"
|
|
|
|
|
signal-exit "^3.0.2"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
reusify@^1.0.4:
|
|
|
|
|
version "1.0.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==
|
|
|
|
|
|
2025-04-14 15:15:14 -04:00
|
|
|
rimraf@6.0.1, rimraf@^6.0.1:
|
|
|
|
|
version "6.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz"
|
2025-04-14 15:15:14 -04:00
|
|
|
integrity sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==
|
|
|
|
|
dependencies:
|
|
|
|
|
glob "^11.0.0"
|
|
|
|
|
package-json-from-dist "^1.0.0"
|
|
|
|
|
|
|
|
|
|
rimraf@^3.0.0, rimraf@^3.0.2:
|
|
|
|
|
version "3.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz"
|
2025-04-14 15:15:14 -04:00
|
|
|
integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==
|
2022-10-19 13:00:47 -07:00
|
|
|
dependencies:
|
2025-04-14 15:15:14 -04:00
|
|
|
glob "^7.1.3"
|
2022-10-19 13:00:47 -07:00
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
rollup@^4.34.8:
|
|
|
|
|
version "4.34.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/rollup/-/rollup-4.34.9.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-nF5XYqWWp9hx/LrpC8sZvvvmq0TeTjQgaZHYmAgwysT9nh8sWnZhBnM8ZyVbbJFIQBLwHDNoMqsBZBbUo4U8sQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@types/estree" "1.0.6"
|
|
|
|
|
optionalDependencies:
|
|
|
|
|
"@rollup/rollup-android-arm-eabi" "4.34.9"
|
|
|
|
|
"@rollup/rollup-android-arm64" "4.34.9"
|
|
|
|
|
"@rollup/rollup-darwin-arm64" "4.34.9"
|
|
|
|
|
"@rollup/rollup-darwin-x64" "4.34.9"
|
|
|
|
|
"@rollup/rollup-freebsd-arm64" "4.34.9"
|
|
|
|
|
"@rollup/rollup-freebsd-x64" "4.34.9"
|
|
|
|
|
"@rollup/rollup-linux-arm-gnueabihf" "4.34.9"
|
|
|
|
|
"@rollup/rollup-linux-arm-musleabihf" "4.34.9"
|
|
|
|
|
"@rollup/rollup-linux-arm64-gnu" "4.34.9"
|
|
|
|
|
"@rollup/rollup-linux-arm64-musl" "4.34.9"
|
|
|
|
|
"@rollup/rollup-linux-loongarch64-gnu" "4.34.9"
|
|
|
|
|
"@rollup/rollup-linux-powerpc64le-gnu" "4.34.9"
|
|
|
|
|
"@rollup/rollup-linux-riscv64-gnu" "4.34.9"
|
|
|
|
|
"@rollup/rollup-linux-s390x-gnu" "4.34.9"
|
|
|
|
|
"@rollup/rollup-linux-x64-gnu" "4.34.9"
|
|
|
|
|
"@rollup/rollup-linux-x64-musl" "4.34.9"
|
|
|
|
|
"@rollup/rollup-win32-arm64-msvc" "4.34.9"
|
|
|
|
|
"@rollup/rollup-win32-ia32-msvc" "4.34.9"
|
|
|
|
|
"@rollup/rollup-win32-x64-msvc" "4.34.9"
|
|
|
|
|
fsevents "~2.3.2"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
router@^2.2.0:
|
|
|
|
|
version "2.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/router/-/router-2.2.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
debug "^4.4.0"
|
|
|
|
|
depd "^2.0.0"
|
|
|
|
|
is-promise "^4.0.0"
|
|
|
|
|
parseurl "^1.3.3"
|
|
|
|
|
path-to-regexp "^8.0.0"
|
|
|
|
|
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
rrweb-cssom@^0.6.0:
|
|
|
|
|
version "0.6.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/rrweb-cssom/-/rrweb-cssom-0.6.0.tgz"
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
integrity sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
run-parallel@^1.1.9:
|
|
|
|
|
version "1.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
|
|
|
|
|
dependencies:
|
|
|
|
|
queue-microtask "^1.2.2"
|
|
|
|
|
|
2024-05-21 01:41:16 -04:00
|
|
|
rxjs@^7.0.0, rxjs@^7.8.1:
|
2023-06-05 13:35:39 -04:00
|
|
|
version "7.8.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
|
|
|
|
tslib "^2.1.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
safe-array-concat@^1.1.3:
|
|
|
|
|
version "1.1.3"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3"
|
|
|
|
|
integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bind "^1.0.8"
|
|
|
|
|
call-bound "^1.0.2"
|
|
|
|
|
get-intrinsic "^1.2.6"
|
|
|
|
|
has-symbols "^1.1.0"
|
|
|
|
|
isarray "^2.0.5"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
safe-buffer@5.2.1, safe-buffer@^5.1.0, safe-buffer@~5.2.0:
|
2025-01-02 16:59:56 -05:00
|
|
|
version "5.2.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz"
|
2025-01-02 16:59:56 -05:00
|
|
|
integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
safe-buffer@~5.1.0, safe-buffer@~5.1.1:
|
|
|
|
|
version "5.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
safe-push-apply@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5"
|
|
|
|
|
integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==
|
|
|
|
|
dependencies:
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
isarray "^2.0.5"
|
|
|
|
|
|
|
|
|
|
safe-regex-test@^1.0.3, safe-regex-test@^1.1.0:
|
|
|
|
|
version "1.1.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1"
|
|
|
|
|
integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.2"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
is-regex "^1.2.1"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
safe-stable-stringify@^2.3.1:
|
|
|
|
|
version "2.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==
|
|
|
|
|
|
2024-03-25 15:00:31 -04:00
|
|
|
"safer-buffer@>= 2.1.2 < 3.0.0":
|
2021-05-11 16:10:34 -07:00
|
|
|
version "2.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==
|
|
|
|
|
|
|
|
|
|
saxes@^6.0.0:
|
|
|
|
|
version "6.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/saxes/-/saxes-6.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==
|
|
|
|
|
dependencies:
|
|
|
|
|
xmlchars "^2.2.0"
|
|
|
|
|
|
2024-11-19 10:52:38 -05:00
|
|
|
scheduler@0.0.0-experimental-4beb1fd8-20241118:
|
|
|
|
|
version "0.0.0-experimental-4beb1fd8-20241118"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/scheduler/-/scheduler-0.0.0-experimental-4beb1fd8-20241118.tgz"
|
2024-11-19 10:52:38 -05:00
|
|
|
integrity sha512-b7GQktevD5BPcS+R5qY5se5oX4b8AHQyebWswGZBdLCmElIwR3Q+RO5EgsLOA4t5D3/TDjLm58CQG16uEB5rMA==
|
2023-08-02 17:30:55 -04:00
|
|
|
|
2025-04-24 14:57:44 -04:00
|
|
|
selderee@^0.11.0:
|
|
|
|
|
version "0.11.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/selderee/-/selderee-0.11.0.tgz"
|
2025-04-24 14:57:44 -04:00
|
|
|
integrity sha512-5TF+l7p4+OsnP8BCCvSyZiSPc4x4//p5uPwK8TCnVPJYRmU2aYKMpOXvw8zM5a5JvuuCGN1jmsMwuU2W02ukfA==
|
|
|
|
|
dependencies:
|
|
|
|
|
parseley "^0.12.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
semver@7.x, semver@^7.3.5:
|
|
|
|
|
version "7.3.7"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==
|
|
|
|
|
dependencies:
|
|
|
|
|
lru-cache "^6.0.0"
|
|
|
|
|
|
2024-03-25 15:00:31 -04:00
|
|
|
semver@^5.4.1, semver@^5.6.0:
|
2024-01-25 10:29:32 -05:00
|
|
|
version "5.7.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz"
|
2024-01-25 10:29:32 -05:00
|
|
|
integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
semver@^6.0.0, semver@^6.3.0, semver@^6.3.1:
|
2023-07-27 10:52:28 -04:00
|
|
|
version "6.3.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz"
|
2023-07-27 10:52:28 -04:00
|
|
|
integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==
|
|
|
|
|
|
2023-10-23 15:41:00 +01:00
|
|
|
semver@^7.5.3, semver@^7.5.4:
|
2023-07-26 12:11:53 +01:00
|
|
|
version "7.5.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz"
|
2023-07-26 12:11:53 +01:00
|
|
|
integrity sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==
|
|
|
|
|
dependencies:
|
|
|
|
|
lru-cache "^6.0.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
semver@^7.6.0, semver@^7.6.2:
|
2024-09-27 15:15:15 -04:00
|
|
|
version "7.6.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
semver@^7.7.1:
|
|
|
|
|
version "7.7.1"
|
|
|
|
|
resolved "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz"
|
|
|
|
|
integrity sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
send@^1.1.0, send@^1.2.0:
|
|
|
|
|
version "1.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/send/-/send-1.2.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==
|
|
|
|
|
dependencies:
|
|
|
|
|
debug "^4.3.5"
|
|
|
|
|
encodeurl "^2.0.0"
|
|
|
|
|
escape-html "^1.0.3"
|
|
|
|
|
etag "^1.8.1"
|
|
|
|
|
fresh "^2.0.0"
|
|
|
|
|
http-errors "^2.0.0"
|
|
|
|
|
mime-types "^3.0.1"
|
|
|
|
|
ms "^2.1.3"
|
|
|
|
|
on-finished "^2.4.1"
|
|
|
|
|
range-parser "^1.2.1"
|
|
|
|
|
statuses "^2.0.1"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
serialize-javascript@^6.0.2:
|
|
|
|
|
version "6.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==
|
|
|
|
|
dependencies:
|
|
|
|
|
randombytes "^2.1.0"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
serializerr@^1.0.3:
|
|
|
|
|
version "1.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/serializerr/-/serializerr-1.0.3.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-yXUlHj0fjbndhACj2XWtIH5eJv7b/uadyl7CJA8b9wL5mIKm+g0/sL7rDzEmjC+k5y8ggcaP8i049F4FxA0U9Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
protochain "^1.0.5"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
serve-static@^2.2.0:
|
|
|
|
|
version "2.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
encodeurl "^2.0.0"
|
|
|
|
|
escape-html "^1.0.3"
|
|
|
|
|
parseurl "^1.3.3"
|
|
|
|
|
send "^1.2.0"
|
|
|
|
|
|
2024-03-25 15:00:31 -04:00
|
|
|
set-blocking@^2.0.0:
|
2022-11-15 13:24:14 -05:00
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz"
|
2022-11-15 13:24:14 -05:00
|
|
|
integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
set-function-length@^1.2.2:
|
|
|
|
|
version "1.2.2"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
|
|
|
|
|
integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
|
|
|
|
|
dependencies:
|
|
|
|
|
define-data-property "^1.1.4"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
function-bind "^1.1.2"
|
|
|
|
|
get-intrinsic "^1.2.4"
|
|
|
|
|
gopd "^1.0.1"
|
|
|
|
|
has-property-descriptors "^1.0.2"
|
|
|
|
|
|
|
|
|
|
set-function-name@^2.0.2:
|
|
|
|
|
version "2.0.2"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985"
|
|
|
|
|
integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
define-data-property "^1.1.4"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
functions-have-names "^1.2.3"
|
|
|
|
|
has-property-descriptors "^1.0.2"
|
|
|
|
|
|
|
|
|
|
set-proto@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/set-proto/-/set-proto-1.0.0.tgz#0760dbcff30b2d7e801fd6e19983e56da337565e"
|
|
|
|
|
integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==
|
|
|
|
|
dependencies:
|
|
|
|
|
dunder-proto "^1.0.1"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
es-object-atoms "^1.0.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
setimmediate@^1.0.5:
|
|
|
|
|
version "1.0.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
setprototypeof@1.2.0:
|
|
|
|
|
version "1.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
shallow-clone@^3.0.0:
|
|
|
|
|
version "3.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==
|
|
|
|
|
dependencies:
|
|
|
|
|
kind-of "^6.0.2"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
shebang-command@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
|
|
|
|
|
dependencies:
|
|
|
|
|
shebang-regex "^3.0.0"
|
|
|
|
|
|
|
|
|
|
shebang-regex@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
|
|
|
|
|
|
2024-01-25 10:29:32 -05:00
|
|
|
shell-quote@^1.7.3:
|
2023-06-05 13:35:39 -04:00
|
|
|
version "1.8.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
side-channel-list@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==
|
|
|
|
|
dependencies:
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
object-inspect "^1.13.3"
|
|
|
|
|
|
|
|
|
|
side-channel-map@^1.0.1:
|
|
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.2"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
get-intrinsic "^1.2.5"
|
|
|
|
|
object-inspect "^1.13.3"
|
|
|
|
|
|
|
|
|
|
side-channel-weakmap@^1.0.2:
|
|
|
|
|
version "1.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.2"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
get-intrinsic "^1.2.5"
|
|
|
|
|
object-inspect "^1.13.3"
|
|
|
|
|
side-channel-map "^1.0.1"
|
|
|
|
|
|
|
|
|
|
side-channel@^1.1.0:
|
|
|
|
|
version "1.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==
|
|
|
|
|
dependencies:
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
object-inspect "^1.13.3"
|
|
|
|
|
side-channel-list "^1.0.0"
|
|
|
|
|
side-channel-map "^1.0.1"
|
|
|
|
|
side-channel-weakmap "^1.0.2"
|
|
|
|
|
|
2024-05-01 13:35:03 +01:00
|
|
|
signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "3.0.7"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==
|
|
|
|
|
|
2024-03-11 13:55:24 -04:00
|
|
|
signal-exit@^4.0.1:
|
|
|
|
|
version "4.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
simple-swizzle@^0.2.2:
|
|
|
|
|
version "0.2.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==
|
|
|
|
|
dependencies:
|
|
|
|
|
is-arrayish "^0.3.1"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
sisteransi@^1.0.5:
|
|
|
|
|
version "1.0.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==
|
|
|
|
|
|
|
|
|
|
slash@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
smart-buffer@^4.2.0:
|
|
|
|
|
version "4.2.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz"
|
|
|
|
|
integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==
|
|
|
|
|
|
|
|
|
|
socks-proxy-agent@^8.0.5:
|
|
|
|
|
version "8.0.5"
|
|
|
|
|
resolved "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz"
|
|
|
|
|
integrity sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==
|
|
|
|
|
dependencies:
|
|
|
|
|
agent-base "^7.1.2"
|
|
|
|
|
debug "^4.3.4"
|
|
|
|
|
socks "^2.8.3"
|
|
|
|
|
|
|
|
|
|
socks@^2.8.3:
|
|
|
|
|
version "2.8.4"
|
|
|
|
|
resolved "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz"
|
|
|
|
|
integrity sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
ip-address "^9.0.5"
|
|
|
|
|
smart-buffer "^4.2.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
source-map-support@0.5.13:
|
|
|
|
|
version "0.5.13"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==
|
|
|
|
|
dependencies:
|
|
|
|
|
buffer-from "^1.0.0"
|
|
|
|
|
source-map "^0.6.0"
|
|
|
|
|
|
2025-01-02 16:59:56 -05:00
|
|
|
source-map-support@^0.5.16:
|
2023-04-04 14:32:21 -07:00
|
|
|
version "0.5.21"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==
|
|
|
|
|
dependencies:
|
|
|
|
|
buffer-from "^1.0.0"
|
|
|
|
|
source-map "^0.6.0"
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
source-map@0.8.0-beta.0:
|
|
|
|
|
version "0.8.0-beta.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==
|
|
|
|
|
dependencies:
|
|
|
|
|
whatwg-url "^7.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
source-map@^0.5.0:
|
|
|
|
|
version "0.5.7"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
|
|
|
|
|
|
|
|
|
|
source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.1:
|
|
|
|
|
version "0.6.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
|
|
|
|
|
|
|
|
|
|
spawn-command@^0.0.2-1:
|
|
|
|
|
version "0.0.2-1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-n98l9E2RMSJ9ON1AKisHzz7V42VDiBQGY6PB1BwRglz99wpVsSuGzQ+jOi6lFXBGVTCrRpltvjm+/XA+tpeJrg==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
sprintf-js@^1.1.3:
|
|
|
|
|
version "1.1.3"
|
|
|
|
|
resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz"
|
|
|
|
|
integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
sprintf-js@~1.0.2:
|
|
|
|
|
version "1.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
stack-trace@0.0.x:
|
|
|
|
|
version "0.0.10"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
stack-utils@^2.0.3:
|
|
|
|
|
version "2.0.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.5.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-xrQcmYhOsn/1kX+Vraq+7j4oE2j/6BFscZ0etmYg81xuM8Gq0022Pxb8+IqgOFUIaxHs0KaSb7T1+OegiNrNFA==
|
|
|
|
|
dependencies:
|
|
|
|
|
escape-string-regexp "^2.0.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
stack-utils@^2.0.6:
|
|
|
|
|
version "2.0.6"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f"
|
|
|
|
|
integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
escape-string-regexp "^2.0.0"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
statuses@2.0.1, statuses@^2.0.1:
|
|
|
|
|
version "2.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
stdin-discarder@^0.1.0:
|
|
|
|
|
version "0.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
bl "^5.0.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
stop-iteration-iterator@^1.1.0:
|
|
|
|
|
version "1.1.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad"
|
|
|
|
|
integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
internal-slot "^1.1.0"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
streamx@^2.15.0, streamx@^2.21.0:
|
|
|
|
|
version "2.22.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz"
|
|
|
|
|
integrity sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==
|
|
|
|
|
dependencies:
|
|
|
|
|
fast-fifo "^1.3.2"
|
|
|
|
|
text-decoder "^1.1.0"
|
|
|
|
|
optionalDependencies:
|
|
|
|
|
bare-events "^2.2.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
string-length@^4.0.1:
|
|
|
|
|
version "4.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
char-regex "^1.0.2"
|
|
|
|
|
strip-ansi "^6.0.0"
|
|
|
|
|
|
2025-10-03 10:08:20 -07:00
|
|
|
"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3:
|
2024-03-11 13:55:24 -04:00
|
|
|
version "4.2.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
|
|
|
|
|
dependencies:
|
|
|
|
|
emoji-regex "^8.0.0"
|
|
|
|
|
is-fullwidth-code-point "^3.0.0"
|
|
|
|
|
strip-ansi "^6.0.1"
|
|
|
|
|
|
|
|
|
|
string-width@^5.0.1, string-width@^5.1.2:
|
|
|
|
|
version "5.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
|
|
|
|
|
dependencies:
|
|
|
|
|
eastasianwidth "^0.2.0"
|
|
|
|
|
emoji-regex "^9.2.2"
|
|
|
|
|
strip-ansi "^7.0.1"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
string-width@^6.1.0:
|
|
|
|
|
version "6.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/string-width/-/string-width-6.1.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
eastasianwidth "^0.2.0"
|
|
|
|
|
emoji-regex "^10.2.1"
|
|
|
|
|
strip-ansi "^7.0.1"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
string.prototype.trim@^1.2.10:
|
|
|
|
|
version "1.2.10"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81"
|
|
|
|
|
integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bind "^1.0.8"
|
|
|
|
|
call-bound "^1.0.2"
|
|
|
|
|
define-data-property "^1.1.4"
|
|
|
|
|
define-properties "^1.2.1"
|
|
|
|
|
es-abstract "^1.23.5"
|
|
|
|
|
es-object-atoms "^1.0.0"
|
|
|
|
|
has-property-descriptors "^1.0.2"
|
|
|
|
|
|
|
|
|
|
string.prototype.trimend@^1.0.9:
|
|
|
|
|
version "1.0.9"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942"
|
|
|
|
|
integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bind "^1.0.8"
|
|
|
|
|
call-bound "^1.0.2"
|
|
|
|
|
define-properties "^1.2.1"
|
|
|
|
|
es-object-atoms "^1.0.0"
|
|
|
|
|
|
|
|
|
|
string.prototype.trimstart@^1.0.8:
|
|
|
|
|
version "1.0.8"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde"
|
|
|
|
|
integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bind "^1.0.7"
|
|
|
|
|
define-properties "^1.2.1"
|
|
|
|
|
es-object-atoms "^1.0.0"
|
|
|
|
|
|
2024-05-01 13:35:03 +01:00
|
|
|
string_decoder@^1.1.1:
|
|
|
|
|
version "1.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz"
|
2024-05-01 13:35:03 +01:00
|
|
|
integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
|
|
|
|
|
dependencies:
|
|
|
|
|
safe-buffer "~5.2.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
string_decoder@~1.1.1:
|
|
|
|
|
version "1.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==
|
|
|
|
|
dependencies:
|
|
|
|
|
safe-buffer "~5.1.0"
|
|
|
|
|
|
2025-10-03 10:08:20 -07:00
|
|
|
"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1:
|
2024-03-11 13:55:24 -04:00
|
|
|
version "6.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
|
|
|
|
|
dependencies:
|
|
|
|
|
ansi-regex "^5.0.1"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
strip-ansi@^7.0.1, strip-ansi@^7.1.0:
|
2024-03-11 13:55:24 -04:00
|
|
|
version "7.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2024-03-11 13:55:24 -04:00
|
|
|
ansi-regex "^6.0.1"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
|
|
|
|
strip-bom@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==
|
|
|
|
|
|
|
|
|
|
strip-final-newline@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
strip-json-comments@^3.1.1:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "3.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
sucrase@^3.35.0:
|
|
|
|
|
version "3.35.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jridgewell/gen-mapping" "^0.3.2"
|
|
|
|
|
commander "^4.0.0"
|
|
|
|
|
glob "^10.3.10"
|
|
|
|
|
lines-and-columns "^1.1.6"
|
|
|
|
|
mz "^2.7.0"
|
|
|
|
|
pirates "^4.0.1"
|
|
|
|
|
ts-interface-checker "^0.1.9"
|
|
|
|
|
|
2024-03-25 15:00:31 -04:00
|
|
|
supports-color@^5.3.0:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "5.5.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==
|
|
|
|
|
dependencies:
|
|
|
|
|
has-flag "^3.0.0"
|
|
|
|
|
|
|
|
|
|
supports-color@^7.0.0, supports-color@^7.1.0:
|
|
|
|
|
version "7.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
|
|
|
|
|
dependencies:
|
|
|
|
|
has-flag "^4.0.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
supports-color@^8.0.0, supports-color@^8.1.0, supports-color@^8.1.1:
|
2023-06-06 10:56:20 -04:00
|
|
|
version "8.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
has-flag "^4.0.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
supports-color@^9.4.0:
|
|
|
|
|
version "9.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
supports-hyperlinks@^2.0.0:
|
|
|
|
|
version "2.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==
|
|
|
|
|
dependencies:
|
|
|
|
|
has-flag "^4.0.0"
|
|
|
|
|
supports-color "^7.0.0"
|
|
|
|
|
|
|
|
|
|
supports-preserve-symlinks-flag@^1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==
|
|
|
|
|
|
|
|
|
|
symbol-tree@^3.2.4:
|
|
|
|
|
version "3.2.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
tapable@^2.2.0:
|
|
|
|
|
version "2.2.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
tar-fs@^3.0.8:
|
|
|
|
|
version "3.0.8"
|
|
|
|
|
resolved "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz"
|
|
|
|
|
integrity sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==
|
|
|
|
|
dependencies:
|
|
|
|
|
pump "^3.0.0"
|
|
|
|
|
tar-stream "^3.1.5"
|
|
|
|
|
optionalDependencies:
|
|
|
|
|
bare-fs "^4.0.1"
|
|
|
|
|
bare-path "^3.0.0"
|
|
|
|
|
|
|
|
|
|
tar-stream@^3.1.5:
|
|
|
|
|
version "3.1.7"
|
|
|
|
|
resolved "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz"
|
|
|
|
|
integrity sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
b4a "^1.6.4"
|
|
|
|
|
fast-fifo "^1.2.0"
|
|
|
|
|
streamx "^2.15.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
terminal-link@^2.0.0:
|
|
|
|
|
version "2.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
ansi-escapes "^4.2.1"
|
|
|
|
|
supports-hyperlinks "^2.0.0"
|
|
|
|
|
|
|
|
|
|
test-exclude@^6.0.0:
|
|
|
|
|
version "6.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@istanbuljs/schema" "^0.1.2"
|
|
|
|
|
glob "^7.1.4"
|
|
|
|
|
minimatch "^3.0.4"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
text-decoder@^1.1.0:
|
|
|
|
|
version "1.2.3"
|
|
|
|
|
resolved "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz"
|
|
|
|
|
integrity sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==
|
|
|
|
|
dependencies:
|
|
|
|
|
b4a "^1.6.4"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
text-hex@1.0.x:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
text-table@^0.2.0:
|
|
|
|
|
version "0.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
thenify-all@^1.0.0:
|
|
|
|
|
version "1.6.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==
|
|
|
|
|
dependencies:
|
|
|
|
|
thenify ">= 3.1.0 < 4"
|
|
|
|
|
|
|
|
|
|
"thenify@>= 3.1.0 < 4":
|
|
|
|
|
version "3.3.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==
|
|
|
|
|
dependencies:
|
|
|
|
|
any-promise "^1.0.0"
|
|
|
|
|
|
|
|
|
|
tinyexec@^0.3.2:
|
|
|
|
|
version "0.3.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==
|
|
|
|
|
|
|
|
|
|
tinyglobby@^0.2.11:
|
|
|
|
|
version "0.2.12"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==
|
|
|
|
|
dependencies:
|
|
|
|
|
fdir "^6.4.3"
|
|
|
|
|
picomatch "^4.0.2"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
tmp@0.2.3:
|
|
|
|
|
version "0.2.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/tmp/-/tmp-0.2.3.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
tmpl@1.0.5:
|
|
|
|
|
version "1.0.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==
|
|
|
|
|
|
|
|
|
|
to-fast-properties@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==
|
|
|
|
|
|
|
|
|
|
to-regex-range@^5.0.1:
|
|
|
|
|
version "5.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
is-number "^7.0.0"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
toidentifier@1.0.1:
|
|
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==
|
|
|
|
|
|
2024-05-20 12:03:29 +01:00
|
|
|
tough-cookie@^4.0.0, tough-cookie@^4.1.2:
|
|
|
|
|
version "4.1.4"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.1.4.tgz"
|
2024-05-20 12:03:29 +01:00
|
|
|
integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
dependencies:
|
|
|
|
|
psl "^1.1.33"
|
|
|
|
|
punycode "^2.1.1"
|
|
|
|
|
universalify "^0.2.0"
|
|
|
|
|
url-parse "^1.5.3"
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
tr46@^1.0.1:
|
|
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==
|
|
|
|
|
dependencies:
|
|
|
|
|
punycode "^2.1.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
tr46@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==
|
|
|
|
|
dependencies:
|
|
|
|
|
punycode "^2.1.1"
|
|
|
|
|
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
tr46@^4.1.1:
|
|
|
|
|
version "4.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/tr46/-/tr46-4.1.1.tgz"
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
integrity sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==
|
|
|
|
|
dependencies:
|
|
|
|
|
punycode "^2.3.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
tree-kill@^1.2.2:
|
|
|
|
|
version "1.2.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==
|
|
|
|
|
|
|
|
|
|
trim-right@^1.0.1:
|
|
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
triple-beam@^1.3.0:
|
|
|
|
|
version "1.4.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==
|
|
|
|
|
|
2023-10-23 15:41:00 +01:00
|
|
|
ts-api-utils@^1.0.1:
|
|
|
|
|
version "1.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.3.tgz"
|
2023-10-23 15:41:00 +01:00
|
|
|
integrity sha512-wNMeqtMz5NtwpT/UZGY5alT+VoKdSsOOP/kqHFcUW1P/VRhH2wJ48+DN2WwUliNbQ976ETwDL0Ifd2VVvgonvg==
|
|
|
|
|
|
2024-09-27 15:15:15 -04:00
|
|
|
ts-api-utils@^1.3.0:
|
|
|
|
|
version "1.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz"
|
2024-09-27 15:15:15 -04:00
|
|
|
integrity sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==
|
2023-06-05 13:35:39 -04:00
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
ts-interface-checker@^0.1.9:
|
|
|
|
|
version "0.1.13"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
ts-jest@^28.0.7:
|
|
|
|
|
version "28.0.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.8.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-5FaG0lXmRPzApix8oFG8RKjAz4ehtm8yMKOTy5HX3fY6W8kmvOrmcY0hKDElW52FJov+clhUbrKAqofnj4mXTg==
|
|
|
|
|
dependencies:
|
|
|
|
|
bs-logger "0.x"
|
|
|
|
|
fast-json-stable-stringify "2.x"
|
|
|
|
|
jest-util "^28.0.0"
|
|
|
|
|
json5 "^2.2.1"
|
|
|
|
|
lodash.memoize "4.x"
|
|
|
|
|
make-error "1.x"
|
|
|
|
|
semver "7.x"
|
|
|
|
|
yargs-parser "^21.0.1"
|
|
|
|
|
|
2023-07-26 12:11:53 +01:00
|
|
|
ts-jest@^29.1.1:
|
|
|
|
|
version "29.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ts-jest/-/ts-jest-29.1.1.tgz"
|
2023-07-26 12:11:53 +01:00
|
|
|
integrity sha512-D6xjnnbP17cC85nliwGiL+tpoKN0StpgE0TeOjXQTU6MVCfsB4v7aW05CgQ/1OywGb0x/oy9hHFnN+sczTiRaA==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
|
|
|
|
bs-logger "0.x"
|
|
|
|
|
fast-json-stable-stringify "2.x"
|
|
|
|
|
jest-util "^29.0.0"
|
2023-07-26 12:11:53 +01:00
|
|
|
json5 "^2.2.3"
|
2021-05-11 16:10:34 -07:00
|
|
|
lodash.memoize "4.x"
|
|
|
|
|
make-error "1.x"
|
2023-07-26 12:11:53 +01:00
|
|
|
semver "^7.5.3"
|
2021-05-11 16:10:34 -07:00
|
|
|
yargs-parser "^21.0.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
ts-jest@^29.3.2:
|
|
|
|
|
version "29.3.2"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-29.3.2.tgz#0576cdf0a507f811fe73dcd16d135ce89f8156cb"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-bJJkrWc6PjFVz5g2DGCNUo8z7oFEYaz1xP1NpeDU7KNLMWPpEyV8Chbpkn8xjzgRDpQhnGMyvyldoL7h8JXyug==
|
|
|
|
|
dependencies:
|
|
|
|
|
bs-logger "^0.2.6"
|
|
|
|
|
ejs "^3.1.10"
|
|
|
|
|
fast-json-stable-stringify "^2.1.0"
|
|
|
|
|
jest-util "^29.0.0"
|
|
|
|
|
json5 "^2.2.3"
|
|
|
|
|
lodash.memoize "^4.1.2"
|
|
|
|
|
make-error "^1.3.6"
|
|
|
|
|
semver "^7.7.1"
|
|
|
|
|
type-fest "^4.39.1"
|
|
|
|
|
yargs-parser "^21.1.1"
|
|
|
|
|
|
2024-04-02 10:32:23 -04:00
|
|
|
ts-node@^10.9.2:
|
|
|
|
|
version "10.9.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz"
|
2024-04-02 10:32:23 -04:00
|
|
|
integrity sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
|
|
|
|
"@cspotcode/source-map-support" "^0.8.0"
|
|
|
|
|
"@tsconfig/node10" "^1.0.7"
|
|
|
|
|
"@tsconfig/node12" "^1.0.7"
|
|
|
|
|
"@tsconfig/node14" "^1.0.0"
|
|
|
|
|
"@tsconfig/node16" "^1.0.2"
|
|
|
|
|
acorn "^8.4.1"
|
|
|
|
|
acorn-walk "^8.1.1"
|
|
|
|
|
arg "^4.1.0"
|
|
|
|
|
create-require "^1.1.0"
|
|
|
|
|
diff "^4.0.1"
|
|
|
|
|
make-error "^1.1.1"
|
|
|
|
|
v8-compile-cache-lib "^3.0.1"
|
|
|
|
|
yn "3.1.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
tslib@^2.0.1, tslib@^2.1.0:
|
2023-06-05 13:35:39 -04:00
|
|
|
version "2.5.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/tslib/-/tslib-2.5.2.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-5svOrSA2w3iGFDs1HibEVBGbDrAY82bFQ3HZ3ixB+88nsbsWQoKqDRb5UBYAUPEzbBn6dAp5gRNXglySbx1MlA==
|
2021-05-11 16:10:34 -07:00
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
tsup@^8.4.0:
|
|
|
|
|
version "8.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/tsup/-/tsup-8.4.0.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-b+eZbPCjz10fRryaAA7C8xlIHnf8VnsaRqydheLIqwG/Mcpfk8Z5zp3HayX7GaTygkigHl5cBUs+IhcySiIexQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
bundle-require "^5.1.0"
|
|
|
|
|
cac "^6.7.14"
|
|
|
|
|
chokidar "^4.0.3"
|
|
|
|
|
consola "^3.4.0"
|
|
|
|
|
debug "^4.4.0"
|
|
|
|
|
esbuild "^0.25.0"
|
|
|
|
|
joycon "^3.1.1"
|
|
|
|
|
picocolors "^1.1.1"
|
|
|
|
|
postcss-load-config "^6.0.1"
|
|
|
|
|
resolve-from "^5.0.0"
|
|
|
|
|
rollup "^4.34.8"
|
|
|
|
|
source-map "0.8.0-beta.0"
|
|
|
|
|
sucrase "^3.35.0"
|
|
|
|
|
tinyexec "^0.3.2"
|
|
|
|
|
tinyglobby "^0.2.11"
|
|
|
|
|
tree-kill "^1.2.2"
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
type-check@^0.4.0, type-check@~0.4.0:
|
|
|
|
|
version "0.4.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==
|
|
|
|
|
dependencies:
|
|
|
|
|
prelude-ls "^1.2.1"
|
|
|
|
|
|
2024-03-25 15:00:31 -04:00
|
|
|
type-detect@4.0.8:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "4.0.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==
|
|
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
type-fest@^0.20.2:
|
|
|
|
|
version "0.20.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
type-fest@^0.21.3:
|
|
|
|
|
version "0.21.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
type-fest@^4.39.1:
|
|
|
|
|
version "4.40.1"
|
2025-05-02 13:56:01 -04:00
|
|
|
resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-4.40.1.tgz#d78a09f08dd1081a434dd377967650cfd565401d"
|
2025-04-30 12:44:05 -07:00
|
|
|
integrity sha512-9YvLNnORDpI+vghLU/Nf+zSv0kL47KbVJ1o3sKgoTefl6i+zebxbiDQWoe/oWWqPhIgQdRZRT1KA9sCPL810SA==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
type-is@^2.0.0, type-is@^2.0.1:
|
|
|
|
|
version "2.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==
|
|
|
|
|
dependencies:
|
|
|
|
|
content-type "^1.0.5"
|
|
|
|
|
media-typer "^1.1.0"
|
|
|
|
|
mime-types "^3.0.0"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
typed-array-buffer@^1.0.3:
|
|
|
|
|
version "1.0.3"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536"
|
|
|
|
|
integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
es-errors "^1.3.0"
|
|
|
|
|
is-typed-array "^1.1.14"
|
|
|
|
|
|
|
|
|
|
typed-array-byte-length@^1.0.3:
|
|
|
|
|
version "1.0.3"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce"
|
|
|
|
|
integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bind "^1.0.8"
|
|
|
|
|
for-each "^0.3.3"
|
|
|
|
|
gopd "^1.2.0"
|
|
|
|
|
has-proto "^1.2.0"
|
|
|
|
|
is-typed-array "^1.1.14"
|
|
|
|
|
|
|
|
|
|
typed-array-byte-offset@^1.0.4:
|
|
|
|
|
version "1.0.4"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355"
|
|
|
|
|
integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
available-typed-arrays "^1.0.7"
|
|
|
|
|
call-bind "^1.0.8"
|
|
|
|
|
for-each "^0.3.3"
|
|
|
|
|
gopd "^1.2.0"
|
|
|
|
|
has-proto "^1.2.0"
|
|
|
|
|
is-typed-array "^1.1.15"
|
|
|
|
|
reflect.getprototypeof "^1.0.9"
|
|
|
|
|
|
|
|
|
|
typed-array-length@^1.0.7:
|
|
|
|
|
version "1.0.7"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d"
|
|
|
|
|
integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bind "^1.0.7"
|
|
|
|
|
for-each "^0.3.3"
|
|
|
|
|
gopd "^1.0.1"
|
|
|
|
|
is-typed-array "^1.1.13"
|
|
|
|
|
possible-typed-array-names "^1.0.0"
|
|
|
|
|
reflect.getprototypeof "^1.0.6"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
typed-query-selector@^2.12.0:
|
|
|
|
|
version "2.12.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/typed-query-selector/-/typed-query-selector-2.12.0.tgz"
|
|
|
|
|
integrity sha512-SbklCd1F0EiZOyPiW192rrHZzZ5sBijB6xM+cpmrwDqObvdtunOHHIk9fCGsoK5JVIYXoyEp4iEdE3upFH3PAg==
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
typescript-eslint@^8.16.0:
|
|
|
|
|
version "8.18.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.18.1.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-Mlaw6yxuaDEPQvb/2Qwu3/TfgeBHy9iTJ3mTwe7OvpPmF6KPQjVOfGyEJpPv6Ez2C34OODChhXrzYw/9phI0MQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@typescript-eslint/eslint-plugin" "8.18.1"
|
|
|
|
|
"@typescript-eslint/parser" "8.18.1"
|
|
|
|
|
"@typescript-eslint/utils" "8.18.1"
|
|
|
|
|
|
2024-04-02 10:32:23 -04:00
|
|
|
typescript@^5.4.3:
|
|
|
|
|
version "5.4.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/typescript/-/typescript-5.4.3.tgz"
|
2024-04-02 10:32:23 -04:00
|
|
|
integrity sha512-KrPd3PKaCLr78MalgiwJnA25Nm8HAmdwN3mYUYZgG/wizIo9EainNVQI9/yDavtVFRN2h3k8uf3GLHuhDMgEHg==
|
2021-05-11 16:10:34 -07:00
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
unbox-primitive@^1.1.0:
|
|
|
|
|
version "1.1.0"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2"
|
|
|
|
|
integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.3"
|
|
|
|
|
has-bigints "^1.0.2"
|
|
|
|
|
has-symbols "^1.1.0"
|
|
|
|
|
which-boxed-primitive "^1.1.1"
|
|
|
|
|
|
2025-02-25 12:08:46 -05:00
|
|
|
undici-types@~6.19.2:
|
|
|
|
|
version "6.19.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz"
|
2025-02-25 12:08:46 -05:00
|
|
|
integrity sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
undici@^6.19.5:
|
|
|
|
|
version "6.21.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/undici/-/undici-6.21.2.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-uROZWze0R0itiAKVPsYhFov9LxrPMHLMEQFszeI2gCN6bnIIZ8twzBCJcN2LJrBBLfrP0t1FW0g+JmKVl8Vk1g==
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
unicode-canonical-property-names-ecmascript@^2.0.0:
|
2025-04-30 12:44:05 -07:00
|
|
|
version "2.0.1"
|
|
|
|
|
resolved "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz"
|
|
|
|
|
integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==
|
2023-06-06 10:56:20 -04:00
|
|
|
|
|
|
|
|
unicode-match-property-ecmascript@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
unicode-canonical-property-names-ecmascript "^2.0.0"
|
|
|
|
|
unicode-property-aliases-ecmascript "^2.0.0"
|
|
|
|
|
|
|
|
|
|
unicode-match-property-value-ecmascript@^2.1.0:
|
2025-04-30 12:44:05 -07:00
|
|
|
version "2.2.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz"
|
|
|
|
|
integrity sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg==
|
2023-06-06 10:56:20 -04:00
|
|
|
|
|
|
|
|
unicode-property-aliases-ecmascript@^2.0.0:
|
|
|
|
|
version "2.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz"
|
2023-06-06 10:56:20 -04:00
|
|
|
integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==
|
|
|
|
|
|
2024-08-06 14:41:26 -04:00
|
|
|
universalify@^0.1.0:
|
|
|
|
|
version "0.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz"
|
2024-08-06 14:41:26 -04:00
|
|
|
integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
universalify@^0.2.0:
|
|
|
|
|
version "0.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/universalify/-/universalify-0.2.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
unpipe@1.0.0:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==
|
|
|
|
|
|
2024-10-29 21:51:41 -04:00
|
|
|
update-browserslist-db@^1.1.1:
|
2025-04-30 12:44:05 -07:00
|
|
|
version "1.1.3"
|
|
|
|
|
resolved "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz"
|
|
|
|
|
integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==
|
2024-04-23 12:28:41 +01:00
|
|
|
dependencies:
|
2024-10-29 21:51:41 -04:00
|
|
|
escalade "^3.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
picocolors "^1.1.1"
|
2024-04-23 12:28:41 +01:00
|
|
|
|
2022-10-19 13:00:47 -07:00
|
|
|
uri-js@^4.2.2:
|
|
|
|
|
version "4.4.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz"
|
2022-10-19 13:00:47 -07:00
|
|
|
integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==
|
|
|
|
|
dependencies:
|
|
|
|
|
punycode "^2.1.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
url-parse@^1.5.3:
|
|
|
|
|
version "1.5.10"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
querystringify "^2.1.1"
|
|
|
|
|
requires-port "^1.0.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
util-deprecate@^1.0.1, util-deprecate@~1.0.1:
|
2022-11-15 13:24:14 -05:00
|
|
|
version "1.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz"
|
2022-11-15 13:24:14 -05:00
|
|
|
integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
v8-compile-cache-lib@^3.0.1:
|
|
|
|
|
version "3.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
v8-to-istanbul@^9.0.0:
|
|
|
|
|
version "9.3.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.12"
|
|
|
|
|
"@types/istanbul-lib-coverage" "^2.0.1"
|
|
|
|
|
convert-source-map "^2.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
v8-to-istanbul@^9.0.1:
|
|
|
|
|
version "9.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@jridgewell/trace-mapping" "^0.3.12"
|
|
|
|
|
"@types/istanbul-lib-coverage" "^2.0.1"
|
|
|
|
|
convert-source-map "^1.6.0"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
vary@^1, vary@^1.1.2:
|
|
|
|
|
version "1.1.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
w3c-hr-time@^1.0.2:
|
|
|
|
|
version "1.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
browser-process-hrtime "^1.0.0"
|
|
|
|
|
|
|
|
|
|
w3c-xmlserializer@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==
|
|
|
|
|
dependencies:
|
|
|
|
|
xml-name-validator "^4.0.0"
|
|
|
|
|
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
w3c-xmlserializer@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-4.0.0.tgz"
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
integrity sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==
|
|
|
|
|
dependencies:
|
|
|
|
|
xml-name-validator "^4.0.0"
|
|
|
|
|
|
2024-05-21 01:41:16 -04:00
|
|
|
wait-on@^7.2.0:
|
|
|
|
|
version "7.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/wait-on/-/wait-on-7.2.0.tgz"
|
2024-05-21 01:41:16 -04:00
|
|
|
integrity sha512-wCQcHkRazgjG5XoAq9jbTMLpNIjoSlZslrJ2+N9MxDsGEv1HnFoVjOCexL0ESva7Y9cu350j+DWADdk54s4AFQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
axios "^1.6.1"
|
|
|
|
|
joi "^17.11.0"
|
|
|
|
|
lodash "^4.17.21"
|
|
|
|
|
minimist "^1.2.8"
|
|
|
|
|
rxjs "^7.8.1"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
walker@^1.0.8:
|
|
|
|
|
version "1.0.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
makeerror "1.0.12"
|
|
|
|
|
|
2024-05-01 13:35:03 +01:00
|
|
|
wcwidth@^1.0.1:
|
|
|
|
|
version "1.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz"
|
2024-05-01 13:35:03 +01:00
|
|
|
integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==
|
|
|
|
|
dependencies:
|
|
|
|
|
defaults "^1.0.3"
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
webidl-conversions@^4.0.2:
|
|
|
|
|
version "4.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
webidl-conversions@^7.0.0:
|
|
|
|
|
version "7.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==
|
|
|
|
|
|
|
|
|
|
whatwg-encoding@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==
|
|
|
|
|
dependencies:
|
|
|
|
|
iconv-lite "0.6.3"
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
whatwg-encoding@^3.1.1:
|
|
|
|
|
version "3.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-3.1.1.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
iconv-lite "0.6.3"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
whatwg-mimetype@^3.0.0:
|
|
|
|
|
version "3.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==
|
|
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
whatwg-mimetype@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-4.0.0.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
whatwg-url@^11.0.0:
|
|
|
|
|
version "11.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
tr46 "^3.0.0"
|
|
|
|
|
webidl-conversions "^7.0.0"
|
|
|
|
|
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
whatwg-url@^12.0.0, whatwg-url@^12.0.1:
|
|
|
|
|
version "12.0.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-12.0.1.tgz"
|
[sprout] Initial draft of sprout 🌱 test runner
---
## Sprout 🌱 Overview
**(Overview copied from
[sprout/README.md](https://github.com/facebook/react-forget/blob/0468ddf8bbee54a9394317a667ea4ed96bb3bef3/forget/packages/sprout/README.md))**
React Forget test framework that executes compiler fixtures.
Currently, Sprout runs each fixture with a known set of inputs and annotations.
We hope to add fuzzing capabilities to Sprout, synthesizing sets of program
inputs based on type and/or effect annotations.
Sprout is currently WIP and only executes files listed in
`src/SproutOnlyFilterTodoRemove.ts`.
### Milestones:
- [✅] Render fixtures with React runtime / `testing-library/react`.
- [ ] Make Sprout CLI -runnable and report results in process exit code.
After this point:
- Sprout can be enabled by default and added to the Github Actions pipeline.
- `SproutOnlyFilterTodoRemove` can be renamed to `SproutSkipFilter`.
- All new tests should provide a `FIXTURE_ENTRYPOINT`.
- [ ] Annotate `FIXTURE_ENTRYPOINT` (fn entrypoint and params) for rest of
fixtures.
- [ ] Edit rest of fixtures to use shared functions or define their own helpers.
- [ ] *(optional)* Store Sprout output as snapshot files. i.e. each fixture
could have a `fixture.js`, `fixture.snap.md`, and `fixture.sprout.md`.
### Constraints
Each fixture test executed by Sprout needs to export a `FIXTURE_ENTRYPOINT`, a
single function and parameter set with the following type signature.
```js
type FIXTURE_ENTRYPOINT<T> = {
// function to be invoked
fn: ((...params: Array<T>) => any),
// params to pass to fn
params: Array<T>,
// true if fn should be rendered as a React Component
// i.e. returns jsx or primitives
isComponent?: boolean,
}
```
Example:
```js
// test.js
function MyComponent(props) {
return <div>{props.a + props.b}</div>;
}
export const FIXTURE_ENTRYPOINT = {
fn: MyComponent,
params: [{a: "hello ", b: "world"}],
isComponent: true,
};
```
---
## Implementation Details
- jest-worker test orchestrator (similar to Snap 🫰).
I chose to write a test runner instead of directly using Jest for flexibility
and speed.
- Sprout 🌱 currently runs much more code per fixture (2 babel transform
pipelines + 2 `exec(...)` than snap, so all scaling concerns apply.
- Sprout may need more customization in the future (e.g. fuzzing component
inputs, caching artifacts)
- We probably want to add snapshot files for Sprout, which is much easier with a
custom runner.
This is also one of the main reasons we wrote Snap. Jest consolidates all
external snapshots (i.e. non-inline snapshots) from a test into [a single
file](https://github.com/facebook/react-forget/blob/d0a006ffa9842ee9db6b23ada94622af901eb07f/forget/src/__tests__/__snapshots__/compiler-test.ts.snap).
This was painful mainly for rebasing changes, but also for small papercuts (e.g.
needing to run `yarn test -u` twice when deleting a fixture)
- Currently does not save output to snapshot file, but we can easily add this
later (i.e. each test would have a `.snap.md` and `.sprout.md` file)
- Supports filter mode (same testfilter.txt file as snap)
- Currently does not support watch mode. I expect that sprout's primary use will
be catching bugs in the PR / Github Actions phase. Can be changed if we need to
iterate on sprout output while developing.
- All tests are run with `react-test-renderer` to access the React Runtime,
which is needed for calls to `useMemoCache` (and other potential hooks).
- react-test-renderer required a mocked DOM, so I ~~used js-dom~~ did a terrible
js-dom hack to add document, window, and other browser globals to the
jest-worker globals, then exec the test code in the jest worker global.
I can clean this up later by bundling library code (e.g. react,
react-test-renderer) to not use `require(...)`, then calling `exec` on all "test
client code" in the js-dom mock global (instead of the real jest worker one)
- Tests marked `isComponent` need to return valid jsx or primitives. Values
returned by all other tests are converted to a string primitive via
JSON.stringify.
```sh
# install new dependencies to node_modules
$ yarn
$ cd forget/packages/babel-plugin-react-forget
$ yarn sprout:build && yarn sprout
PASS alias-nested-member-path
PASS assignment-variations-complex-lvalue
PASS assignment-variations
PASS chained-assignment-expressions
PASS computed-call-evaluation-order
PASS const-propagation-into-function-expression-primitive
PASS constant-propagation-for
PASS constant-propagation-while
PASS constant-propagation
...
✨ Done in 3.91s.
```
2023-08-14 19:26:02 -04:00
|
|
|
integrity sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
tr46 "^4.1.1"
|
|
|
|
|
webidl-conversions "^7.0.0"
|
|
|
|
|
|
2025-03-07 16:41:55 -05:00
|
|
|
whatwg-url@^7.0.0:
|
|
|
|
|
version "7.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz"
|
2025-03-07 16:41:55 -05:00
|
|
|
integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==
|
|
|
|
|
dependencies:
|
|
|
|
|
lodash.sortby "^4.7.0"
|
|
|
|
|
tr46 "^1.0.1"
|
|
|
|
|
webidl-conversions "^4.0.2"
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1:
|
|
|
|
|
version "1.1.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e"
|
|
|
|
|
integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==
|
|
|
|
|
dependencies:
|
|
|
|
|
is-bigint "^1.1.0"
|
|
|
|
|
is-boolean-object "^1.2.1"
|
|
|
|
|
is-number-object "^1.1.1"
|
|
|
|
|
is-string "^1.1.1"
|
|
|
|
|
is-symbol "^1.1.1"
|
|
|
|
|
|
|
|
|
|
which-builtin-type@^1.2.1:
|
|
|
|
|
version "1.2.1"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.2.1.tgz#89183da1b4907ab089a6b02029cc5d8d6574270e"
|
|
|
|
|
integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
call-bound "^1.0.2"
|
|
|
|
|
function.prototype.name "^1.1.6"
|
|
|
|
|
has-tostringtag "^1.0.2"
|
|
|
|
|
is-async-function "^2.0.0"
|
|
|
|
|
is-date-object "^1.1.0"
|
|
|
|
|
is-finalizationregistry "^1.1.0"
|
|
|
|
|
is-generator-function "^1.0.10"
|
|
|
|
|
is-regex "^1.2.1"
|
|
|
|
|
is-weakref "^1.0.2"
|
|
|
|
|
isarray "^2.0.5"
|
|
|
|
|
which-boxed-primitive "^1.1.0"
|
|
|
|
|
which-collection "^1.0.2"
|
|
|
|
|
which-typed-array "^1.1.16"
|
|
|
|
|
|
|
|
|
|
which-collection@^1.0.2:
|
|
|
|
|
version "1.0.2"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0"
|
|
|
|
|
integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==
|
|
|
|
|
dependencies:
|
|
|
|
|
is-map "^2.0.3"
|
|
|
|
|
is-set "^2.0.3"
|
|
|
|
|
is-weakmap "^2.0.2"
|
|
|
|
|
is-weakset "^2.0.3"
|
|
|
|
|
|
2022-11-15 13:24:14 -05:00
|
|
|
which-module@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz"
|
2022-11-15 13:24:14 -05:00
|
|
|
integrity sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==
|
|
|
|
|
|
[compiler] Aggregate error reporting, separate eslint rules (#34176)
NOTE: this is a merged version of @mofeiZ's original PR along with my
edits per offline discussion. The description is updated to reflect the
latest approach.
The key problem we're trying to solve with this PR is to allow
developers more control over the compiler's various validations. The
idea is to have a number of rules targeting a specific category of
issues, such as enforcing immutability of props/state/etc or disallowing
access to refs during render. We don't want to have to run the compiler
again for every single rule, though, so @mofeiZ added an LRU cache that
caches the full compilation output of N most recent files. The first
rule to run on a given file will cause it to get cached, and then
subsequent rules can pull from the cache, with each rule filtering down
to its specific category of errors.
For the categories, I went through and assigned a category roughly 1:1
to existing validations, and then used my judgement on some places that
felt distinct enough to warrant a separate error. Every error in the
compiler now has to supply both a severity (for legacy reasons) and a
category (for ESLint). Each category corresponds 1:1 to a ESLint rule
definition, so that the set of rules is automatically populated based on
the defined categories.
Categories include a flag for whether they should be in the recommended
set or not.
Note that as with the original version of this PR, only
eslint-plugin-react-compiler is changed. We still have to update the
main lint rule.
## Test Plan
* Created a sample project using ESLint v9 and verified that the plugin
can be configured correctly and detects errors
* Edited `fixtures/eslint-v9` and introduced errors, verified that the w
latest config changes in that fixture it correctly detects the errors
* In the sample project, confirmed that the LRU caching is correctly
caching compiler output, ie compiling files just once.
Co-authored-by: Mofei Zhang <feifei0@meta.com>
2025-08-21 14:53:34 -07:00
|
|
|
which-typed-array@^1.1.16, which-typed-array@^1.1.19:
|
|
|
|
|
version "1.1.19"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956"
|
|
|
|
|
integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==
|
|
|
|
|
dependencies:
|
|
|
|
|
available-typed-arrays "^1.0.7"
|
|
|
|
|
call-bind "^1.0.8"
|
|
|
|
|
call-bound "^1.0.4"
|
|
|
|
|
for-each "^0.3.5"
|
|
|
|
|
get-proto "^1.0.1"
|
|
|
|
|
gopd "^1.2.0"
|
|
|
|
|
has-tostringtag "^1.0.2"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
which@^1.2.10, which@^1.2.14:
|
|
|
|
|
version "1.3.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/which/-/which-1.3.1.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
isexe "^2.0.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
which@^2.0.1:
|
|
|
|
|
version "2.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/which/-/which-2.0.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
|
|
|
|
|
dependencies:
|
|
|
|
|
isexe "^2.0.0"
|
|
|
|
|
|
2025-01-06 11:01:38 -05:00
|
|
|
winston-transport@^4.7.0:
|
|
|
|
|
version "4.9.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==
|
|
|
|
|
dependencies:
|
|
|
|
|
logform "^2.7.0"
|
|
|
|
|
readable-stream "^3.6.2"
|
|
|
|
|
triple-beam "^1.3.0"
|
|
|
|
|
|
|
|
|
|
winston@3.13.1:
|
|
|
|
|
version "3.13.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/winston/-/winston-3.13.1.tgz"
|
2025-01-06 11:01:38 -05:00
|
|
|
integrity sha512-SvZit7VFNvXRzbqGHsv5KSmgbEYR5EiQfDAL9gxYkRqa934Hnk++zze0wANKtMHcy/gI4W/3xmSDwlhf865WGw==
|
|
|
|
|
dependencies:
|
|
|
|
|
"@colors/colors" "^1.6.0"
|
|
|
|
|
"@dabh/diagnostics" "^2.0.2"
|
|
|
|
|
async "^3.2.3"
|
|
|
|
|
is-stream "^2.0.0"
|
|
|
|
|
logform "^2.6.0"
|
|
|
|
|
one-time "^1.0.0"
|
|
|
|
|
readable-stream "^3.4.0"
|
|
|
|
|
safe-stable-stringify "^2.3.1"
|
|
|
|
|
stack-trace "0.0.x"
|
|
|
|
|
triple-beam "^1.3.0"
|
|
|
|
|
winston-transport "^4.7.0"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
wordwrap@>=0.0.2:
|
|
|
|
|
version "1.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
workerpool@^6.5.1:
|
|
|
|
|
version "6.5.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==
|
|
|
|
|
|
2025-10-03 10:08:20 -07:00
|
|
|
"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0:
|
2024-03-11 13:55:24 -04:00
|
|
|
version "7.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
|
|
|
|
|
dependencies:
|
|
|
|
|
ansi-styles "^4.0.0"
|
|
|
|
|
string-width "^4.1.0"
|
|
|
|
|
strip-ansi "^6.0.0"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
wrap-ansi@^6.2.0:
|
|
|
|
|
version "6.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==
|
|
|
|
|
dependencies:
|
|
|
|
|
ansi-styles "^4.0.0"
|
|
|
|
|
string-width "^4.1.0"
|
|
|
|
|
strip-ansi "^6.0.0"
|
|
|
|
|
|
2024-03-11 13:55:24 -04:00
|
|
|
wrap-ansi@^8.1.0:
|
|
|
|
|
version "8.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz"
|
2024-03-11 13:55:24 -04:00
|
|
|
integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
|
2021-05-11 16:10:34 -07:00
|
|
|
dependencies:
|
2024-03-11 13:55:24 -04:00
|
|
|
ansi-styles "^6.1.0"
|
|
|
|
|
string-width "^5.0.1"
|
|
|
|
|
strip-ansi "^7.0.1"
|
2021-05-11 16:10:34 -07:00
|
|
|
|
|
|
|
|
wrappy@1:
|
|
|
|
|
version "1.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==
|
|
|
|
|
|
2023-06-06 10:56:20 -04:00
|
|
|
write-file-atomic@^4.0.1, write-file-atomic@^4.0.2:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "4.0.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==
|
|
|
|
|
dependencies:
|
|
|
|
|
imurmurhash "^0.1.4"
|
|
|
|
|
signal-exit "^3.0.7"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
ws@^8.13.0, ws@^8.18.1, ws@^8.8.0:
|
|
|
|
|
version "8.18.1"
|
|
|
|
|
resolved "https://registry.npmjs.org/ws/-/ws-8.18.1.tgz"
|
|
|
|
|
integrity sha512-RKW2aJZMXeMxVpnZ6bck+RswznaxmzdULiBr6KY7XkTnW8uvt0iT9H5DkHUChXrc+uurzwa0rVI16n/Xzjdz1w==
|
2021-05-11 16:10:34 -07:00
|
|
|
|
|
|
|
|
xml-name-validator@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==
|
|
|
|
|
|
|
|
|
|
xmlchars@^2.2.0:
|
|
|
|
|
version "2.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==
|
|
|
|
|
|
2022-11-15 13:24:14 -05:00
|
|
|
y18n@^4.0.0:
|
|
|
|
|
version "4.0.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz"
|
2022-11-15 13:24:14 -05:00
|
|
|
integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
y18n@^5.0.5:
|
|
|
|
|
version "5.0.8"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==
|
|
|
|
|
|
2023-06-05 13:35:39 -04:00
|
|
|
yallist@^3.0.2:
|
|
|
|
|
version "3.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
yallist@^4.0.0:
|
|
|
|
|
version "4.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
yargs-parser@^18.1.2:
|
|
|
|
|
version "18.1.3"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==
|
|
|
|
|
dependencies:
|
|
|
|
|
camelcase "^5.0.0"
|
|
|
|
|
decamelize "^1.2.0"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
yargs-parser@^20.2.2, yargs-parser@^20.2.9:
|
|
|
|
|
version "20.2.9"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
yargs-parser@^21.0.1, yargs-parser@^21.1.1:
|
2021-05-11 16:10:34 -07:00
|
|
|
version "21.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
yargs-unparser@^2.0.0:
|
|
|
|
|
version "2.0.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==
|
|
|
|
|
dependencies:
|
|
|
|
|
camelcase "^6.0.0"
|
|
|
|
|
decamelize "^4.0.0"
|
|
|
|
|
flat "^5.0.2"
|
|
|
|
|
is-plain-obj "^2.1.0"
|
|
|
|
|
|
2023-04-04 14:32:21 -07:00
|
|
|
yargs@^15.3.1:
|
|
|
|
|
version "15.4.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz"
|
2023-04-04 14:32:21 -07:00
|
|
|
integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==
|
|
|
|
|
dependencies:
|
|
|
|
|
cliui "^6.0.0"
|
|
|
|
|
decamelize "^1.2.0"
|
|
|
|
|
find-up "^4.1.0"
|
|
|
|
|
get-caller-file "^2.0.1"
|
|
|
|
|
require-directory "^2.1.1"
|
|
|
|
|
require-main-filename "^2.0.0"
|
|
|
|
|
set-blocking "^2.0.0"
|
|
|
|
|
string-width "^4.2.0"
|
|
|
|
|
which-module "^2.0.0"
|
|
|
|
|
y18n "^4.0.0"
|
|
|
|
|
yargs-parser "^18.1.2"
|
|
|
|
|
|
2025-02-25 12:19:11 -05:00
|
|
|
yargs@^16.2.0:
|
|
|
|
|
version "16.2.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz"
|
2025-02-25 12:19:11 -05:00
|
|
|
integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==
|
|
|
|
|
dependencies:
|
|
|
|
|
cliui "^7.0.2"
|
|
|
|
|
escalade "^3.1.1"
|
|
|
|
|
get-caller-file "^2.0.5"
|
|
|
|
|
require-directory "^2.1.1"
|
|
|
|
|
string-width "^4.2.0"
|
|
|
|
|
y18n "^5.0.5"
|
|
|
|
|
yargs-parser "^20.2.2"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
yargs@^17.3.1, yargs@^17.7.1, yargs@^17.7.2:
|
2023-06-05 13:35:39 -04:00
|
|
|
version "17.7.2"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz"
|
2023-06-05 13:35:39 -04:00
|
|
|
integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==
|
|
|
|
|
dependencies:
|
|
|
|
|
cliui "^8.0.1"
|
|
|
|
|
escalade "^3.1.1"
|
|
|
|
|
get-caller-file "^2.0.5"
|
|
|
|
|
require-directory "^2.1.1"
|
|
|
|
|
string-width "^4.2.3"
|
|
|
|
|
y18n "^5.0.5"
|
|
|
|
|
yargs-parser "^21.1.1"
|
|
|
|
|
|
2025-04-30 12:44:05 -07:00
|
|
|
yauzl@^2.10.0:
|
|
|
|
|
version "2.10.0"
|
|
|
|
|
resolved "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz"
|
|
|
|
|
integrity sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==
|
|
|
|
|
dependencies:
|
|
|
|
|
buffer-crc32 "~0.2.3"
|
|
|
|
|
fd-slicer "~1.1.0"
|
|
|
|
|
|
2021-05-11 16:10:34 -07:00
|
|
|
yn@3.1.1:
|
|
|
|
|
version "3.1.1"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==
|
|
|
|
|
|
|
|
|
|
yocto-queue@^0.1.0:
|
|
|
|
|
version "0.1.0"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz"
|
2021-05-11 16:10:34 -07:00
|
|
|
integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==
|
2023-11-07 11:04:33 +00:00
|
|
|
|
2025-04-14 18:39:00 -04:00
|
|
|
zod-to-json-schema@^3.24.1:
|
|
|
|
|
version "3.24.5"
|
2025-04-30 12:44:05 -07:00
|
|
|
resolved "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.24.5.tgz"
|
2025-04-14 18:39:00 -04:00
|
|
|
integrity sha512-/AuWwMP+YqiPbsJx5D6TfgRTc4kTLjsh5SOcd4bLsfUg2RcEXrFMJl1DGgdHy2aCfsIA/cr/1JM0xcB2GZji8g==
|
|
|
|
|
|
2025-10-16 12:46:55 -04:00
|
|
|
"zod-validation-error@^3.5.0 || ^4.0.0":
|
2025-10-03 10:08:20 -07:00
|
|
|
version "4.0.2"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/zod-validation-error/-/zod-validation-error-4.0.2.tgz#bc605eba49ce0fcd598c127fee1c236be3f22918"
|
|
|
|
|
integrity sha512-Q6/nZLe6jxuU80qb/4uJ4t5v2VEZ44lzQjPDhYJNztRQ4wyWc6VF3D3Kb/fAuPetZQnhS3hnajCf9CsWesghLQ==
|
2023-11-07 11:04:33 +00:00
|
|
|
|
2025-10-03 10:08:20 -07:00
|
|
|
zod@^3.23.8, zod@^3.24.1:
|
2025-04-30 12:44:05 -07:00
|
|
|
version "3.24.3"
|
|
|
|
|
resolved "https://registry.npmjs.org/zod/-/zod-3.24.3.tgz"
|
|
|
|
|
integrity sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==
|
2025-10-16 12:46:55 -04:00
|
|
|
|
|
|
|
|
"zod@^3.25.0 || ^4.0.0":
|
|
|
|
|
version "4.1.12"
|
|
|
|
|
resolved "https://registry.yarnpkg.com/zod/-/zod-4.1.12.tgz#64f1ea53d00eab91853195653b5af9eee68970f0"
|
|
|
|
|
integrity sha512-JInaHOamG8pt5+Ey8kGmdcAcg3OL9reK8ltczgHTAwNhMys/6ThXHityHxVV2p3fkw/c+MAvBHFVYHFZDmjMCQ==
|