diff --git a/README.md b/README.md
index c19bf8a4..b1d34c50 100644
--- a/README.md
+++ b/README.md
@@ -93,6 +93,12 @@ Check this [file](https://github.com/rootstrap/rs-gpt-review/blob/main/.github/w
- [React Native Svg](https://github.com/software-mansion/react-native-svg)
- [React Error Boundaries](https://github.com/bvaughn/react-error-boundary)
- [Expo Image](https://docs.expo.dev/versions/unversioned/sdk/image/)
+- [React Native Keyboard Controller](https://github.com/kirillzyusko/react-native-keyboard-controller)
+- [Moti](https://moti.fyi/)
+- [React Native Safe Area Context](https://github.com/th3rdwave/react-native-safe-area-context)
+- [React Native Screens](https://github.com/software-mansion/react-native-screens)
+- [Tailwind Variants](https://www.tailwind-variants.org/)
+- [Zod](https://zod.dev/)
## Contributors
diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs
index 373477d9..fb8f9919 100644
--- a/docs/astro.config.mjs
+++ b/docs/astro.config.mjs
@@ -146,6 +146,17 @@ export default defineConfig({
},
],
},
+ {
+ label: 'Recipes',
+ items: [
+ // Each item here is one entry in the navigation menu.
+ {
+ label: 'Sentry Setup',
+ link: '/recipes/sentry-setup/',
+ badge: 'new',
+ },
+ ],
+ },
{
label: 'Testing',
items: [
@@ -186,6 +197,11 @@ export default defineConfig({
label: 'Libraries Recommendation',
link: '/libraries-recommendation',
},
+ {
+ label: 'FAQ',
+ link: '/faq',
+ badge: 'new',
+ },
{
label: 'CHANGELOG',
link: '/changelog',
@@ -194,6 +210,11 @@ export default defineConfig({
label: 'How to contribute ?',
link: '/how-to-contribute',
},
+ {
+ label: 'Reviews',
+ link: '/reviews',
+ badge: 'new',
+ },
{
label: 'Stay Updated',
link: '/stay-updated',
diff --git a/docs/package.json b/docs/package.json
index 25ffa9e1..2bdefed9 100644
--- a/docs/package.json
+++ b/docs/package.json
@@ -10,12 +10,12 @@
"astro": "astro"
},
"dependencies": {
- "@astrojs/starlight": "^0.21.1",
+ "@astrojs/starlight": "^0.27.1",
"@expressive-code/plugin-collapsible-sections": "^0.33.4",
"@expressive-code/plugin-line-numbers": "^0.33.4",
"@fontsource/ibm-plex-mono": "^5.0.8",
"@fontsource/ibm-plex-serif": "^5.0.8",
- "astro": "^4.4.9",
+ "astro": "^4.15.4",
"hast-util-to-html": "^9.0.0",
"sharp": "^0.32.3"
}
diff --git a/docs/pnpm-lock.yaml b/docs/pnpm-lock.yaml
index 6d4f2d81..6f85ffc0 100644
--- a/docs/pnpm-lock.yaml
+++ b/docs/pnpm-lock.yaml
@@ -9,8 +9,8 @@ importers:
.:
dependencies:
'@astrojs/starlight':
- specifier: ^0.21.1
- version: 0.21.1(astro@4.4.9)
+ specifier: ^0.27.1
+ version: 0.27.1(astro@4.16.16(rollup@4.28.0)(typescript@5.7.2))
'@expressive-code/plugin-collapsible-sections':
specifier: ^0.33.4
version: 0.33.4
@@ -24,8 +24,8 @@ importers:
specifier: ^5.0.8
version: 5.0.8
astro:
- specifier: ^4.4.9
- version: 4.4.9
+ specifier: ^4.15.4
+ version: 4.16.16(rollup@4.28.0)(typescript@5.7.2)
hast-util-to-html:
specifier: ^9.0.0
version: 9.0.0
@@ -39,113 +39,89 @@ packages:
resolution: {integrity: sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==}
engines: {node: '>=6.0.0'}
- '@astrojs/compiler@2.6.0':
- resolution: {integrity: sha512-c74k8iGHL3DzkosSJ0tGcHIEBEiIfBhr7eadSaPyvWlVKaieDVzVs8OW1tnRSQyBsfMc8DZQ4RcN2KAcESD8UQ==}
+ '@astrojs/compiler@2.10.3':
+ resolution: {integrity: sha512-bL/O7YBxsFt55YHU021oL+xz+B/9HvGNId3F9xURN16aeqDK9juHGktdkCSXz+U4nqFACq6ZFvWomOzhV+zfPw==}
- '@astrojs/internal-helpers@0.2.1':
- resolution: {integrity: sha512-06DD2ZnItMwUnH81LBLco3tWjcZ1lGU9rLCCBaeUCGYe9cI0wKyY2W3kDyoW1I6GmcWgt1fu+D1CTvz+FIKf8A==}
+ '@astrojs/internal-helpers@0.4.1':
+ resolution: {integrity: sha512-bMf9jFihO8YP940uD70SI/RDzIhUHJAolWVcO1v5PUivxGKvfLZTLTVVxEYzGYyPsA3ivdLNqMnL5VgmQySa+g==}
- '@astrojs/markdown-remark@4.2.1':
- resolution: {integrity: sha512-2RQBIwrq+2qPYtp99bH+eL5hfbK0BoxXla85lHsRpIX/IsGqFrPX6pXI2cbWPihBwGbKCdxS6uZNX2QerZWwpQ==}
+ '@astrojs/markdown-remark@5.3.0':
+ resolution: {integrity: sha512-r0Ikqr0e6ozPb5bvhup1qdWnSPUvQu6tub4ZLYaKyG50BXZ0ej6FhGz3GpChKpH7kglRFPObJd/bDyf2VM9pkg==}
- '@astrojs/mdx@2.1.1':
- resolution: {integrity: sha512-AgGFdE7HOGmoFooGvMSatkA9FiSKwyVW7ImHot/bXJ6uAbFfu6iG2ht18Cf1pT22Hda/6iSCGWusFvBv0/EnKQ==}
- engines: {node: '>=18.14.1'}
+ '@astrojs/mdx@3.1.9':
+ resolution: {integrity: sha512-3jPD4Bff6lIA20RQoonnZkRtZ9T3i0HFm6fcDF7BMsKIZ+xBP2KXzQWiuGu62lrVCmU612N+SQVGl5e0fI+zWg==}
+ engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0}
peerDependencies:
- astro: ^4.0.0
+ astro: ^4.8.0
- '@astrojs/prism@3.0.0':
- resolution: {integrity: sha512-g61lZupWq1bYbcBnYZqdjndShr/J3l/oFobBKPA3+qMat146zce3nz2kdO4giGbhYDt4gYdhmoBz0vZJ4sIurQ==}
- engines: {node: '>=18.14.1'}
+ '@astrojs/prism@3.1.0':
+ resolution: {integrity: sha512-Z9IYjuXSArkAUx3N6xj6+Bnvx8OdUSHA8YoOgyepp3+zJmtVYJIl/I18GozdJVW1p5u/CNpl3Km7/gwTJK85cw==}
+ engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0}
- '@astrojs/sitemap@3.1.1':
- resolution: {integrity: sha512-qPgdBIcDUaea98mTtLfi5z9oXZpzSjEn/kes70/Ex8FOZZ+DIHVKRYOLOtvy8p+FTXr/9oc7BjmIbTYmYLLJVg==}
+ '@astrojs/sitemap@3.2.1':
+ resolution: {integrity: sha512-uxMfO8f7pALq0ADL6Lk68UV6dNYjJ2xGUzyjjVj60JLBs5a6smtlkBYv3tQ0DzoqwS7c9n4FUx5lgv0yPo/fgA==}
- '@astrojs/starlight@0.21.1':
- resolution: {integrity: sha512-nQ5EwKnB3eI8jxQrbgzZJJcyxeIiL3GzsAhl//1fE541MlD+PKy53v1PsYPi/RILdjt1Pg39rf1fkJC/rhXRgw==}
+ '@astrojs/starlight@0.27.1':
+ resolution: {integrity: sha512-L2hEgN/Tk7tfBDeaqUOgOpey5NcUL78FuQa06iNxyZ6RjyYyuXSniOoFxZYIo5PpY9O1dLdK22PkZyCDpO729g==}
peerDependencies:
- astro: ^4.2.7
+ astro: ^4.8.6
- '@astrojs/telemetry@3.0.4':
- resolution: {integrity: sha512-A+0c7k/Xy293xx6odsYZuXiaHO0PL+bnDoXOc47sGDF5ffIKdKQGRPFl2NMlCF4L0NqN4Ynbgnaip+pPF0s7pQ==}
- engines: {node: '>=18.14.1'}
+ '@astrojs/telemetry@3.1.0':
+ resolution: {integrity: sha512-/ca/+D8MIKEC8/A9cSaPUqQNZm+Es/ZinRv0ZAzvu2ios7POQSsVD+VOj7/hypWNsNM3T7RpfgNq7H2TU1KEHA==}
+ engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0}
- '@babel/code-frame@7.23.5':
- resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==}
+ '@babel/code-frame@7.26.2':
+ resolution: {integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==}
engines: {node: '>=6.9.0'}
- '@babel/compat-data@7.23.5':
- resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==}
+ '@babel/compat-data@7.26.3':
+ resolution: {integrity: sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==}
engines: {node: '>=6.9.0'}
- '@babel/core@7.24.0':
- resolution: {integrity: sha512-fQfkg0Gjkza3nf0c7/w6Xf34BW4YvzNfACRLmmb7XRLa6XHdR+K9AlJlxneFfWYf6uhOzuzZVTjF/8KfndZANw==}
+ '@babel/core@7.26.0':
+ resolution: {integrity: sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==}
engines: {node: '>=6.9.0'}
- '@babel/generator@7.23.6':
- resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==}
+ '@babel/generator@7.26.3':
+ resolution: {integrity: sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==}
engines: {node: '>=6.9.0'}
- '@babel/helper-annotate-as-pure@7.22.5':
- resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==}
+ '@babel/helper-annotate-as-pure@7.25.9':
+ resolution: {integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==}
engines: {node: '>=6.9.0'}
- '@babel/helper-compilation-targets@7.23.6':
- resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==}
+ '@babel/helper-compilation-targets@7.25.9':
+ resolution: {integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==}
engines: {node: '>=6.9.0'}
- '@babel/helper-environment-visitor@7.22.20':
- resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==}
+ '@babel/helper-module-imports@7.25.9':
+ resolution: {integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==}
engines: {node: '>=6.9.0'}
- '@babel/helper-function-name@7.23.0':
- resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-hoist-variables@7.22.5':
- resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-imports@7.22.15':
- resolution: {integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-module-transforms@7.23.3':
- resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==}
+ '@babel/helper-module-transforms@7.26.0':
+ resolution: {integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0
- '@babel/helper-plugin-utils@7.22.5':
- resolution: {integrity: sha512-uLls06UVKgFG9QD4OeFYLEGteMIAa5kpTPcFL28yuCIIzsf6ZyKZMllKVOCZFhiZ5ptnwX4mtKdWCBE/uT4amg==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helper-simple-access@7.22.5':
- resolution: {integrity: sha512-n0H99E/K+Bika3++WNL17POvo4rKWZ7lZEp1Q+fStVbUi8nxPQEBOlTmCOxW/0JsS56SKKQ+ojAe2pHKJHN35w==}
+ '@babel/helper-plugin-utils@7.25.9':
+ resolution: {integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==}
engines: {node: '>=6.9.0'}
- '@babel/helper-split-export-declaration@7.22.6':
- resolution: {integrity: sha512-AsUnxuLhRYsisFiaJwvp1QF+I3KjD5FOxut14q/GzovUe6orHLesW2C7d754kRm53h5gqrz6sFl6sxc4BVtE/g==}
+ '@babel/helper-string-parser@7.25.9':
+ resolution: {integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==}
engines: {node: '>=6.9.0'}
- '@babel/helper-string-parser@7.23.4':
- resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==}
+ '@babel/helper-validator-identifier@7.25.9':
+ resolution: {integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==}
engines: {node: '>=6.9.0'}
- '@babel/helper-validator-identifier@7.22.20':
- resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==}
+ '@babel/helper-validator-option@7.25.9':
+ resolution: {integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==}
engines: {node: '>=6.9.0'}
- '@babel/helper-validator-option@7.23.5':
- resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==}
- engines: {node: '>=6.9.0'}
-
- '@babel/helpers@7.24.0':
- resolution: {integrity: sha512-ulDZdc0Aj5uLc5nETsa7EPx2L7rM0YJM8r7ck7U73AXi7qOV44IHHRAYZHY6iU1rr3C5N4NtTmMRUJP6kwCWeA==}
- engines: {node: '>=6.9.0'}
-
- '@babel/highlight@7.23.4':
- resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==}
+ '@babel/helpers@7.26.0':
+ resolution: {integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==}
engines: {node: '>=6.9.0'}
'@babel/parser@7.24.0':
@@ -153,168 +129,180 @@ packages:
engines: {node: '>=6.0.0'}
hasBin: true
- '@babel/plugin-syntax-jsx@7.22.5':
- resolution: {integrity: sha512-gvyP4hZrgrs/wWMaocvxZ44Hw0b3W8Pe+cMxc8V1ULQ07oh8VNbIRaoD1LRZVTvD+0nieDKjfgKg89sD7rrKrg==}
+ '@babel/parser@7.26.3':
+ resolution: {integrity: sha512-WJ/CvmY8Mea8iDXo6a7RK2wbmJITT5fN3BEkRuFlxVyNx8jOKIIhmC4fSkTcPcf8JyavbBwIe6OpiCOBXt/IcA==}
+ engines: {node: '>=6.0.0'}
+ hasBin: true
+
+ '@babel/plugin-syntax-jsx@7.25.9':
+ resolution: {integrity: sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/plugin-transform-react-jsx@7.22.15':
- resolution: {integrity: sha512-oKckg2eZFa8771O/5vi7XeTvmM6+O9cxZu+kanTU7tD4sin5nO/G8jGJhq8Hvt2Z0kUoEDRayuZLaUlYl8QuGA==}
+ '@babel/plugin-transform-react-jsx@7.25.9':
+ resolution: {integrity: sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==}
engines: {node: '>=6.9.0'}
peerDependencies:
'@babel/core': ^7.0.0-0
- '@babel/template@7.24.0':
- resolution: {integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==}
+ '@babel/template@7.25.9':
+ resolution: {integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==}
engines: {node: '>=6.9.0'}
- '@babel/traverse@7.24.0':
- resolution: {integrity: sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw==}
+ '@babel/traverse@7.26.3':
+ resolution: {integrity: sha512-yTmc8J+Sj8yLzwr4PD5Xb/WF3bOYu2C2OoSZPzbuqRm4n98XirsbzaX+GloeO376UnSYIYJ4NCanwV5/ugZkwA==}
engines: {node: '>=6.9.0'}
- '@babel/types@7.24.0':
- resolution: {integrity: sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==}
+ '@babel/types@7.26.3':
+ resolution: {integrity: sha512-vN5p+1kl59GVKMvTHt55NzzmYVxprfJD+ql7U9NFIfKCBkYE55LYtS+WtPlaYOyzydrKI8Nezd+aZextrd+FMA==}
engines: {node: '>=6.9.0'}
'@ctrl/tinycolor@3.6.1':
resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==}
engines: {node: '>=10'}
- '@esbuild/aix-ppc64@0.19.12':
- resolution: {integrity: sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA==}
+ '@ctrl/tinycolor@4.1.0':
+ resolution: {integrity: sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==}
+ engines: {node: '>=14'}
+
+ '@emnapi/runtime@1.3.1':
+ resolution: {integrity: sha512-kEBmG8KyqtxJZv+ygbEim+KCGtIq1fC22Ms3S4ziXmYKm8uyoLX0MHONVKwp+9opg390VaKRNt4a7A9NwmpNhw==}
+
+ '@esbuild/aix-ppc64@0.21.5':
+ resolution: {integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [aix]
- '@esbuild/android-arm64@0.19.12':
- resolution: {integrity: sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA==}
+ '@esbuild/android-arm64@0.21.5':
+ resolution: {integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
- '@esbuild/android-arm@0.19.12':
- resolution: {integrity: sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w==}
+ '@esbuild/android-arm@0.21.5':
+ resolution: {integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
- '@esbuild/android-x64@0.19.12':
- resolution: {integrity: sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew==}
+ '@esbuild/android-x64@0.21.5':
+ resolution: {integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
- '@esbuild/darwin-arm64@0.19.12':
- resolution: {integrity: sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g==}
+ '@esbuild/darwin-arm64@0.21.5':
+ resolution: {integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
- '@esbuild/darwin-x64@0.19.12':
- resolution: {integrity: sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A==}
+ '@esbuild/darwin-x64@0.21.5':
+ resolution: {integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
- '@esbuild/freebsd-arm64@0.19.12':
- resolution: {integrity: sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA==}
+ '@esbuild/freebsd-arm64@0.21.5':
+ resolution: {integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
- '@esbuild/freebsd-x64@0.19.12':
- resolution: {integrity: sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg==}
+ '@esbuild/freebsd-x64@0.21.5':
+ resolution: {integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
- '@esbuild/linux-arm64@0.19.12':
- resolution: {integrity: sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA==}
+ '@esbuild/linux-arm64@0.21.5':
+ resolution: {integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
- '@esbuild/linux-arm@0.19.12':
- resolution: {integrity: sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w==}
+ '@esbuild/linux-arm@0.21.5':
+ resolution: {integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
- '@esbuild/linux-ia32@0.19.12':
- resolution: {integrity: sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA==}
+ '@esbuild/linux-ia32@0.21.5':
+ resolution: {integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
- '@esbuild/linux-loong64@0.19.12':
- resolution: {integrity: sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA==}
+ '@esbuild/linux-loong64@0.21.5':
+ resolution: {integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
- '@esbuild/linux-mips64el@0.19.12':
- resolution: {integrity: sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w==}
+ '@esbuild/linux-mips64el@0.21.5':
+ resolution: {integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
- '@esbuild/linux-ppc64@0.19.12':
- resolution: {integrity: sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg==}
+ '@esbuild/linux-ppc64@0.21.5':
+ resolution: {integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
- '@esbuild/linux-riscv64@0.19.12':
- resolution: {integrity: sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg==}
+ '@esbuild/linux-riscv64@0.21.5':
+ resolution: {integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
- '@esbuild/linux-s390x@0.19.12':
- resolution: {integrity: sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg==}
+ '@esbuild/linux-s390x@0.21.5':
+ resolution: {integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
- '@esbuild/linux-x64@0.19.12':
- resolution: {integrity: sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg==}
+ '@esbuild/linux-x64@0.21.5':
+ resolution: {integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
- '@esbuild/netbsd-x64@0.19.12':
- resolution: {integrity: sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA==}
+ '@esbuild/netbsd-x64@0.21.5':
+ resolution: {integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
- '@esbuild/openbsd-x64@0.19.12':
- resolution: {integrity: sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw==}
+ '@esbuild/openbsd-x64@0.21.5':
+ resolution: {integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
- '@esbuild/sunos-x64@0.19.12':
- resolution: {integrity: sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA==}
+ '@esbuild/sunos-x64@0.21.5':
+ resolution: {integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
- '@esbuild/win32-arm64@0.19.12':
- resolution: {integrity: sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A==}
+ '@esbuild/win32-arm64@0.21.5':
+ resolution: {integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
- '@esbuild/win32-ia32@0.19.12':
- resolution: {integrity: sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ==}
+ '@esbuild/win32-ia32@0.21.5':
+ resolution: {integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
- '@esbuild/win32-x64@0.19.12':
- resolution: {integrity: sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA==}
+ '@esbuild/win32-x64@0.21.5':
+ resolution: {integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
@@ -322,20 +310,23 @@ packages:
'@expressive-code/core@0.33.4':
resolution: {integrity: sha512-IywACrwcR/7cIPBQ1qG/RsgvNp85/CAX6okxR0Niztrd7rh4IcEhAsz51jX/NPNnhU9yPynTT+mLdM1URqrnvw==}
+ '@expressive-code/core@0.35.6':
+ resolution: {integrity: sha512-xGqCkmfkgT7lr/rvmfnYdDSeTdCSp1otAHgoFS6wNEeO7wGDPpxdosVqYiIcQ8CfWUABh/pGqWG90q+MV3824A==}
+
'@expressive-code/plugin-collapsible-sections@0.33.4':
resolution: {integrity: sha512-seLBBFPunq84GsJ1wqwsUmyMwhZf+5Lwpmo5qq4QYDy2gGFqUQbmSxHEl+XJLVygwdMxkgIr25x0k8Dmgv375g==}
- '@expressive-code/plugin-frames@0.33.4':
- resolution: {integrity: sha512-6HE5f8dAPjzmhs7yZJHVyH+w/UwVpktjlTvrUumrytHo6hidGlkB5lptWJlSAd9JXzev5BQEb4xrqQ0xQqO5+A==}
+ '@expressive-code/plugin-frames@0.35.6':
+ resolution: {integrity: sha512-CqjSWjDJ3wabMJZfL9ZAzH5UAGKg7KWsf1TBzr4xvUbZvWoBtLA/TboBML0U1Ls8h/4TRCIvR4VEb8dv5+QG3w==}
'@expressive-code/plugin-line-numbers@0.33.4':
resolution: {integrity: sha512-+AIxeufcutV1+0sAtXsTEcma7uxKQK2F7qfQYWHYp0PW6QxLXkMYP7aGfuIFPsfovKEe+EmFKXKhEwYnraK7yQ==}
- '@expressive-code/plugin-shiki@0.33.4':
- resolution: {integrity: sha512-XnDchHqCGk046hgQnu83t9+SDrRjsvpvUEBiI0wl4RljVDr1E0yllx0y6C1yEuKfFfasib6BxX/PkItgQdi/0Q==}
+ '@expressive-code/plugin-shiki@0.35.6':
+ resolution: {integrity: sha512-xm+hzi9BsmhkDUGuyAWIydOAWer7Cs9cj8FM0t4HXaQ+qCubprT6wJZSKUxuvFJIUsIOqk1xXFaJzGJGnWtKMg==}
- '@expressive-code/plugin-text-markers@0.33.4':
- resolution: {integrity: sha512-hl3E+8iZJMYGDaKsN4bOPOEBb9QeFjg+zQkOJRtjJgsmIYmaZpoQTzTg/JMduE8PLNsD30nAMwG/AbjN/klwZQ==}
+ '@expressive-code/plugin-text-markers@0.35.6':
+ resolution: {integrity: sha512-/k9eWVZSCs+uEKHR++22Uu6eIbHWEciVHbIuD8frT8DlqTtHYaaiwHPncO6KFWnGDz5i/gL7oyl6XmOi/E6GVg==}
'@fontsource/ibm-plex-mono@5.0.8':
resolution: {integrity: sha512-AoR7K2YtlGKy3LApyLYjqjyz0o8XtkRvbB/juMsGSGNayBBAly140ykZls+VxcXjZSLQpp2RyxKo6lYOuHPmUw==}
@@ -343,10 +334,119 @@ packages:
'@fontsource/ibm-plex-serif@5.0.8':
resolution: {integrity: sha512-KUp1E9Wzf2Umhr2SbpcF9HwgFJmuxvKAARmpl7GDDkIG30R1PMFJWxfSfQ7oX/oVBtomGq5RUTaMMUeE0ngEgw==}
+ '@img/sharp-darwin-arm64@0.33.5':
+ resolution: {integrity: sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@img/sharp-darwin-x64@0.33.5':
+ resolution: {integrity: sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [darwin]
+
+ '@img/sharp-libvips-darwin-arm64@1.0.4':
+ resolution: {integrity: sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@img/sharp-libvips-darwin-x64@1.0.4':
+ resolution: {integrity: sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@img/sharp-libvips-linux-arm64@1.0.4':
+ resolution: {integrity: sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@img/sharp-libvips-linux-arm@1.0.5':
+ resolution: {integrity: sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==}
+ cpu: [arm]
+ os: [linux]
+
+ '@img/sharp-libvips-linux-s390x@1.0.4':
+ resolution: {integrity: sha512-u7Wz6ntiSSgGSGcjZ55im6uvTrOxSIS8/dgoVMoiGE9I6JAfU50yH5BoDlYA1tcuGS7g/QNtetJnxA6QEsCVTA==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@img/sharp-libvips-linux-x64@1.0.4':
+ resolution: {integrity: sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==}
+ cpu: [x64]
+ os: [linux]
+
+ '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
+ resolution: {integrity: sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@img/sharp-libvips-linuxmusl-x64@1.0.4':
+ resolution: {integrity: sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==}
+ cpu: [x64]
+ os: [linux]
+
+ '@img/sharp-linux-arm64@0.33.5':
+ resolution: {integrity: sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [linux]
+
+ '@img/sharp-linux-arm@0.33.5':
+ resolution: {integrity: sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm]
+ os: [linux]
+
+ '@img/sharp-linux-s390x@0.33.5':
+ resolution: {integrity: sha512-y/5PCd+mP4CA/sPDKl2961b+C9d+vPAveS33s6Z3zfASk2j5upL6fXVPZi7ztePZ5CuH+1kW8JtvxgbuXHRa4Q==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [s390x]
+ os: [linux]
+
+ '@img/sharp-linux-x64@0.33.5':
+ resolution: {integrity: sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [linux]
+
+ '@img/sharp-linuxmusl-arm64@0.33.5':
+ resolution: {integrity: sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [arm64]
+ os: [linux]
+
+ '@img/sharp-linuxmusl-x64@0.33.5':
+ resolution: {integrity: sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [linux]
+
+ '@img/sharp-wasm32@0.33.5':
+ resolution: {integrity: sha512-ykUW4LVGaMcU9lu9thv85CbRMAwfeadCJHRsg2GmeRa/cJxsVY9Rbd57JcMxBkKHag5U/x7TSBpScF4U8ElVzg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [wasm32]
+
+ '@img/sharp-win32-ia32@0.33.5':
+ resolution: {integrity: sha512-T36PblLaTwuVJ/zw/LaH0PdZkRz5rd3SmMHX8GSmR7vtNSP5Z6bQkExdSK7xGWyxLw4sUknBuugTelgw2faBbQ==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [ia32]
+ os: [win32]
+
+ '@img/sharp-win32-x64@0.33.5':
+ resolution: {integrity: sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
+ cpu: [x64]
+ os: [win32]
+
'@jridgewell/gen-mapping@0.3.3':
resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==}
engines: {node: '>=6.0.0'}
+ '@jridgewell/gen-mapping@0.3.5':
+ resolution: {integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==}
+ engines: {node: '>=6.0.0'}
+
'@jridgewell/resolve-uri@3.1.1':
resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==}
engines: {node: '>=6.0.0'}
@@ -355,17 +455,24 @@ packages:
resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==}
engines: {node: '>=6.0.0'}
+ '@jridgewell/set-array@1.2.1':
+ resolution: {integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==}
+ engines: {node: '>=6.0.0'}
+
'@jridgewell/sourcemap-codec@1.4.15':
resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==}
+ '@jridgewell/sourcemap-codec@1.5.0':
+ resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
+
'@jridgewell/trace-mapping@0.3.20':
resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==}
- '@mdx-js/mdx@3.0.1':
- resolution: {integrity: sha512-eIQ4QTrOWyL3LWEe/bu6Taqzq2HQvHcyTMaOrI95P2/LmJE7AsfPfgJGuFLPVqBUE1BC1rik3VIhU+s9u72arA==}
+ '@jridgewell/trace-mapping@0.3.25':
+ resolution: {integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==}
- '@medv/finder@3.1.0':
- resolution: {integrity: sha512-ojkXjR3K0Zz3jnCR80tqPL+0yvbZk/lEodb6RIVjLz7W8RVA2wrw8ym/CzCpXO9SYVUIKHFUpc7jvf8UKfIM3w==}
+ '@mdx-js/mdx@3.1.0':
+ resolution: {integrity: sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==}
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
@@ -379,6 +486,9 @@ packages:
resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==}
engines: {node: '>= 8'}
+ '@oslojs/encoding@1.1.0':
+ resolution: {integrity: sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==}
+
'@pagefind/darwin-arm64@1.0.3':
resolution: {integrity: sha512-vsHDtvao3W4iFCxVc4S0BVhpj3E2MAoIVM7RmuQfGp1Ng22nGLRaMP6FguLO8TMabRJdvp4SVr227hL4WGKOHA==}
cpu: [arm64]
@@ -407,74 +517,123 @@ packages:
cpu: [x64]
os: [win32]
- '@rollup/rollup-android-arm-eabi@4.12.0':
- resolution: {integrity: sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w==}
+ '@rollup/pluginutils@5.1.3':
+ resolution: {integrity: sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==}
+ engines: {node: '>=14.0.0'}
+ peerDependencies:
+ rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0
+ peerDependenciesMeta:
+ rollup:
+ optional: true
+
+ '@rollup/rollup-android-arm-eabi@4.28.0':
+ resolution: {integrity: sha512-wLJuPLT6grGZsy34g4N1yRfYeouklTgPhH1gWXCYspenKYD0s3cR99ZevOGw5BexMNywkbV3UkjADisozBmpPQ==}
cpu: [arm]
os: [android]
- '@rollup/rollup-android-arm64@4.12.0':
- resolution: {integrity: sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ==}
+ '@rollup/rollup-android-arm64@4.28.0':
+ resolution: {integrity: sha512-eiNkznlo0dLmVG/6wf+Ifi/v78G4d4QxRhuUl+s8EWZpDewgk7PX3ZyECUXU0Zq/Ca+8nU8cQpNC4Xgn2gFNDA==}
cpu: [arm64]
os: [android]
- '@rollup/rollup-darwin-arm64@4.12.0':
- resolution: {integrity: sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ==}
+ '@rollup/rollup-darwin-arm64@4.28.0':
+ resolution: {integrity: sha512-lmKx9yHsppblnLQZOGxdO66gT77bvdBtr/0P+TPOseowE7D9AJoBw8ZDULRasXRWf1Z86/gcOdpBrV6VDUY36Q==}
cpu: [arm64]
os: [darwin]
- '@rollup/rollup-darwin-x64@4.12.0':
- resolution: {integrity: sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg==}
+ '@rollup/rollup-darwin-x64@4.28.0':
+ resolution: {integrity: sha512-8hxgfReVs7k9Js1uAIhS6zq3I+wKQETInnWQtgzt8JfGx51R1N6DRVy3F4o0lQwumbErRz52YqwjfvuwRxGv1w==}
cpu: [x64]
os: [darwin]
- '@rollup/rollup-linux-arm-gnueabihf@4.12.0':
- resolution: {integrity: sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA==}
+ '@rollup/rollup-freebsd-arm64@4.28.0':
+ resolution: {integrity: sha512-lA1zZB3bFx5oxu9fYud4+g1mt+lYXCoch0M0V/xhqLoGatbzVse0wlSQ1UYOWKpuSu3gyN4qEc0Dxf/DII1bhQ==}
+ cpu: [arm64]
+ os: [freebsd]
+
+ '@rollup/rollup-freebsd-x64@4.28.0':
+ resolution: {integrity: sha512-aI2plavbUDjCQB/sRbeUZWX9qp12GfYkYSJOrdYTL/C5D53bsE2/nBPuoiJKoWp5SN78v2Vr8ZPnB+/VbQ2pFA==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@rollup/rollup-linux-arm-gnueabihf@4.28.0':
+ resolution: {integrity: sha512-WXveUPKtfqtaNvpf0iOb0M6xC64GzUX/OowbqfiCSXTdi/jLlOmH0Ba94/OkiY2yTGTwteo4/dsHRfh5bDCZ+w==}
+ cpu: [arm]
+ os: [linux]
+
+ '@rollup/rollup-linux-arm-musleabihf@4.28.0':
+ resolution: {integrity: sha512-yLc3O2NtOQR67lI79zsSc7lk31xjwcaocvdD1twL64PK1yNaIqCeWI9L5B4MFPAVGEVjH5k1oWSGuYX1Wutxpg==}
cpu: [arm]
os: [linux]
- '@rollup/rollup-linux-arm64-gnu@4.12.0':
- resolution: {integrity: sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA==}
+ '@rollup/rollup-linux-arm64-gnu@4.28.0':
+ resolution: {integrity: sha512-+P9G9hjEpHucHRXqesY+3X9hD2wh0iNnJXX/QhS/J5vTdG6VhNYMxJ2rJkQOxRUd17u5mbMLHM7yWGZdAASfcg==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-arm64-musl@4.12.0':
- resolution: {integrity: sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ==}
+ '@rollup/rollup-linux-arm64-musl@4.28.0':
+ resolution: {integrity: sha512-1xsm2rCKSTpKzi5/ypT5wfc+4bOGa/9yI/eaOLW0oMs7qpC542APWhl4A37AENGZ6St6GBMWhCCMM6tXgTIplw==}
cpu: [arm64]
os: [linux]
- '@rollup/rollup-linux-riscv64-gnu@4.12.0':
- resolution: {integrity: sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw==}
+ '@rollup/rollup-linux-powerpc64le-gnu@4.28.0':
+ resolution: {integrity: sha512-zgWxMq8neVQeXL+ouSf6S7DoNeo6EPgi1eeqHXVKQxqPy1B2NvTbaOUWPn/7CfMKL7xvhV0/+fq/Z/J69g1WAQ==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@rollup/rollup-linux-riscv64-gnu@4.28.0':
+ resolution: {integrity: sha512-VEdVYacLniRxbRJLNtzwGt5vwS0ycYshofI7cWAfj7Vg5asqj+pt+Q6x4n+AONSZW/kVm+5nklde0qs2EUwU2g==}
cpu: [riscv64]
os: [linux]
- '@rollup/rollup-linux-x64-gnu@4.12.0':
- resolution: {integrity: sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA==}
+ '@rollup/rollup-linux-s390x-gnu@4.28.0':
+ resolution: {integrity: sha512-LQlP5t2hcDJh8HV8RELD9/xlYtEzJkm/aWGsauvdO2ulfl3QYRjqrKW+mGAIWP5kdNCBheqqqYIGElSRCaXfpw==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@rollup/rollup-linux-x64-gnu@4.28.0':
+ resolution: {integrity: sha512-Nl4KIzteVEKE9BdAvYoTkW19pa7LR/RBrT6F1dJCV/3pbjwDcaOq+edkP0LXuJ9kflW/xOK414X78r+K84+msw==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-linux-x64-musl@4.12.0':
- resolution: {integrity: sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw==}
+ '@rollup/rollup-linux-x64-musl@4.28.0':
+ resolution: {integrity: sha512-eKpJr4vBDOi4goT75MvW+0dXcNUqisK4jvibY9vDdlgLx+yekxSm55StsHbxUsRxSTt3JEQvlr3cGDkzcSP8bw==}
cpu: [x64]
os: [linux]
- '@rollup/rollup-win32-arm64-msvc@4.12.0':
- resolution: {integrity: sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw==}
+ '@rollup/rollup-win32-arm64-msvc@4.28.0':
+ resolution: {integrity: sha512-Vi+WR62xWGsE/Oj+mD0FNAPY2MEox3cfyG0zLpotZdehPFXwz6lypkGs5y38Jd/NVSbOD02aVad6q6QYF7i8Bg==}
cpu: [arm64]
os: [win32]
- '@rollup/rollup-win32-ia32-msvc@4.12.0':
- resolution: {integrity: sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA==}
+ '@rollup/rollup-win32-ia32-msvc@4.28.0':
+ resolution: {integrity: sha512-kN/Vpip8emMLn/eOza+4JwqDZBL6MPNpkdaEsgUtW1NYN3DZvZqSQrbKzJcTL6hd8YNmFTn7XGWMwccOcJBL0A==}
cpu: [ia32]
os: [win32]
- '@rollup/rollup-win32-x64-msvc@4.12.0':
- resolution: {integrity: sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg==}
+ '@rollup/rollup-win32-x64-msvc@4.28.0':
+ resolution: {integrity: sha512-Bvno2/aZT6usSa7lRDL2+hMjVAGjuqaymF1ApZm31JXzniR/hvr14jpU+/z4X6Gt5BPlzosscyJZGUvguXIqeQ==}
cpu: [x64]
os: [win32]
'@shikijs/core@1.1.7':
resolution: {integrity: sha512-gTYLUIuD1UbZp/11qozD3fWpUTuMqPSf3svDMMrL0UmlGU7D9dPw/V1FonwAorCUJBltaaESxq90jrSjQyGixg==}
+ '@shikijs/core@1.24.0':
+ resolution: {integrity: sha512-6pvdH0KoahMzr6689yh0QJ3rCgF4j1XsXRHNEeEN6M4xJTfQ6QPWrmHzIddotg+xPJUPEPzYzYCKzpYyhTI6Gw==}
+
+ '@shikijs/engine-javascript@1.24.0':
+ resolution: {integrity: sha512-ZA6sCeSsF3Mnlxxr+4wGEJ9Tto4RHmfIS7ox8KIAbH0MTVUkw3roHPHZN+LlJMOHJJOVupe6tvuAzRpN8qK1vA==}
+
+ '@shikijs/engine-oniguruma@1.24.0':
+ resolution: {integrity: sha512-Eua0qNOL73Y82lGA4GF5P+G2+VXX9XnuUxkiUuwcxQPH4wom+tE39kZpBFXfUuwNYxHSkrSxpB1p4kyRW0moSg==}
+
+ '@shikijs/types@1.24.0':
+ resolution: {integrity: sha512-aptbEuq1Pk88DMlCe+FzXNnBZ17LCiLIGWAeCWhoFDzia5Q5Krx3DgnULLiouSdd6+LUM39XwXGppqYE0Ghtug==}
+
+ '@shikijs/vscode-textmate@9.3.0':
+ resolution: {integrity: sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==}
+
'@types/acorn@4.0.6':
resolution: {integrity: sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==}
@@ -490,6 +649,9 @@ packages:
'@types/babel__traverse@7.20.3':
resolution: {integrity: sha512-Lsh766rGEFbaxMIDH7Qa+Yha8cMVI3qAK6CHt3OR0YfxOIn5Z54iHiyDRycHrBqeIiqGa20Kpsv1cavfBKkRSw==}
+ '@types/cookie@0.6.0':
+ resolution: {integrity: sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==}
+
'@types/debug@4.1.8':
resolution: {integrity: sha512-/vPO1EPOs306Cvhwv7KfVfYvOJqA/S/AXjaHQiJboCZzcNDb+TIJFN9/2C9DZ//ijSKWioNyUxD792QmDJ+HKQ==}
@@ -499,6 +661,9 @@ packages:
'@types/estree@1.0.5':
resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==}
+ '@types/estree@1.0.6':
+ resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
+
'@types/hast@2.3.5':
resolution: {integrity: sha512-SvQi0L/lNpThgPoleH53cdjB3y9zpLlVjRbqB3rH8hx1jiRSBGAhyjV3H+URFjNVRqt2EdYNrbZE5IsGlNfpRg==}
@@ -514,14 +679,17 @@ packages:
'@types/mdast@4.0.3':
resolution: {integrity: sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==}
+ '@types/mdast@4.0.4':
+ resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
+
'@types/mdx@2.0.9':
resolution: {integrity: sha512-OKMdj17y8Cs+k1r0XFyp59ChSOwf8ODGtMQ4mnpfz5eFDk1aO41yN3pSKGuvVzmWAkFp37seubY1tzOVpwfWwg==}
'@types/ms@0.7.31':
resolution: {integrity: sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==}
- '@types/nlcst@1.0.1':
- resolution: {integrity: sha512-aVIyXt6pZiiMOtVByE4Y0gf+BLm1Cxc4ZLSK8VRHn1CgkO+kXbQwN/EBhQmhPdBMjFJCMBKtmNW2zWQuFywz8Q==}
+ '@types/nlcst@2.0.3':
+ resolution: {integrity: sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==}
'@types/node@17.0.45':
resolution: {integrity: sha512-w+tIMs3rq2afQdsPJlODhoUEKzFP1ayaoyl1CcnwtIlsVe7K7bA1NGm4s3PraqTLlXnbIN84zuBlxBWo1u9BLw==}
@@ -552,8 +720,8 @@ packages:
peerDependencies:
acorn: ^6.0.0 || ^7.0.0 || ^8.0.0
- acorn@8.11.3:
- resolution: {integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==}
+ acorn@8.14.0:
+ resolution: {integrity: sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==}
engines: {node: '>=0.4.0'}
hasBin: true
@@ -568,18 +736,10 @@ packages:
resolution: {integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==}
engines: {node: '>=12'}
- ansi-styles@3.2.1:
- resolution: {integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==}
- engines: {node: '>=4'}
-
ansi-styles@6.2.1:
resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==}
engines: {node: '>=12'}
- anymatch@3.1.3:
- resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
- engines: {node: '>= 8'}
-
arg@5.0.2:
resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==}
@@ -589,8 +749,9 @@ packages:
argparse@2.0.1:
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
- aria-query@5.3.0:
- resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==}
+ aria-query@5.3.2:
+ resolution: {integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==}
+ engines: {node: '>= 0.4'}
array-iterate@2.0.1:
resolution: {integrity: sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==}
@@ -599,18 +760,19 @@ packages:
resolution: {integrity: sha512-ISvCdHdlTDlH5IpxQJIex7BWBywFWgjJSVdwst+/iQCoEYnyOaQ95+X1JGshuBjGp6nxKUy1jMgE3zPqN7fQdg==}
hasBin: true
- astro-expressive-code@0.33.4:
- resolution: {integrity: sha512-PtXLjd89WBA1WsDYlt3V1LZs9Pa8FFoXilaGDSyfxtbYJ2OPHjWh2JJvCiXmfXmY3HkPJ2oW9Jjo6om5vUlVcg==}
+ astro-expressive-code@0.35.6:
+ resolution: {integrity: sha512-1U4KrvFuodaCV3z4I1bIR16SdhQlPkolGsYTtiANxPZUVv/KitGSCTjzksrkPonn1XuwVqvnwmUUVzTLWngnBA==}
peerDependencies:
- astro: ^3.3.0 || ^4.0.0-beta
+ astro: ^4.0.0-beta || ^3.3.0
- astro@4.4.9:
- resolution: {integrity: sha512-FTWhzKjao7rHHiF/CqPqPS18AFad+fmUcYUFhWWIsYETHcc9g0IIIiv6cHXUE7g6mEZf7ycAa+WdboeEHUhraQ==}
- engines: {node: '>=18.14.1', npm: '>=6.14.0'}
+ astro@4.16.16:
+ resolution: {integrity: sha512-H1CttrV6+JFrDBQx0Mcbq5i5AeLhCbztB786+9wEu3svWL/QPNeCGqF0dgNORAYmP+rODGCPu/y9qKSh87iLuA==}
+ engines: {node: ^18.17.1 || ^20.3.0 || >=21.0.0, npm: '>=9.6.5', pnpm: '>=7.1.0'}
hasBin: true
- axobject-query@4.0.0:
- resolution: {integrity: sha512-+60uv1hiVFhHZeO+Lz0RYzsVHy5Wr1ayX0mwda9KPDVLNJgZ1T9Ny7VmFbLDzxsH0D87I86vgj3gFrjTJUYznw==}
+ axobject-query@4.1.0:
+ resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
+ engines: {node: '>= 0.4'}
b4a@1.6.4:
resolution: {integrity: sha512-fpWrvyVHEKyeEvbKZTVOeZF3VSKKWtJxFIxX/jaVPf+cLbGUSitjb49pHLqPV2BUNNZ0LcoeEGfE/YCpyDYHIw==}
@@ -630,52 +792,38 @@ packages:
bcp-47@2.1.0:
resolution: {integrity: sha512-9IIS3UPrvIa1Ej+lVDdDwO7zLehjqsaByECw0bu2RRGP73jALm6FYbzI5gWbgHLvNdkvfXB5YrSbocZdOS0c0w==}
- binary-extensions@2.2.0:
- resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
- engines: {node: '>=8'}
-
bl@4.1.0:
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
- bl@5.1.0:
- resolution: {integrity: sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==}
-
boolbase@1.0.0:
resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==}
- boxen@7.1.1:
- resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==}
- engines: {node: '>=14.16'}
+ boxen@8.0.1:
+ resolution: {integrity: sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==}
+ engines: {node: '>=18'}
- braces@3.0.2:
- resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
+ braces@3.0.3:
+ resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==}
engines: {node: '>=8'}
- browserslist@4.23.0:
- resolution: {integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==}
+ browserslist@4.24.2:
+ resolution: {integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true
buffer@5.7.1:
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
- buffer@6.0.3:
- resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==}
-
- camelcase@7.0.1:
- resolution: {integrity: sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==}
- engines: {node: '>=14.16'}
+ camelcase@8.0.0:
+ resolution: {integrity: sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==}
+ engines: {node: '>=16'}
- caniuse-lite@1.0.30001591:
- resolution: {integrity: sha512-PCzRMei/vXjJyL5mJtzNiUCKP59dm8Apqc3PH8gJkMnMXZGox93RbE76jHsmLwmIo6/3nsYIpJtx0O7u5PqFuQ==}
+ caniuse-lite@1.0.30001686:
+ resolution: {integrity: sha512-Y7deg0Aergpa24M3qLC5xjNklnKnhsmSyR/V89dLZ1n0ucJIFNs7PgR2Yfa/Zf6W79SbBicgtGxZr2juHkEUIA==}
ccount@2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
- chalk@2.4.2:
- resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==}
- engines: {node: '>=4'}
-
chalk@5.3.0:
resolution: {integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==}
engines: {node: ^12.17.0 || ^14.13 || >=16.0.0}
@@ -692,50 +840,36 @@ packages:
character-reference-invalid@2.0.1:
resolution: {integrity: sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==}
- chokidar@3.5.3:
- resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
- engines: {node: '>= 8.10.0'}
-
chownr@1.1.4:
resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
- ci-info@3.9.0:
- resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==}
- engines: {node: '>=8'}
-
- ci-info@4.0.0:
- resolution: {integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==}
+ ci-info@4.1.0:
+ resolution: {integrity: sha512-HutrvTNsF48wnxkzERIXOe5/mlcfFcbfCmwcg6CJnizbSue78AbDt+1cgl26zwn61WFxhcPykPfZrbqjGmBb4A==}
engines: {node: '>=8'}
cli-boxes@3.0.0:
resolution: {integrity: sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==}
engines: {node: '>=10'}
- cli-cursor@4.0.0:
- resolution: {integrity: sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ cli-cursor@5.0.0:
+ resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==}
+ engines: {node: '>=18'}
- cli-spinners@2.9.1:
- resolution: {integrity: sha512-jHgecW0pxkonBJdrKsqxgRX9AcG+u/5k0Q7WPDfi8AogLAdwxEkyYYNWwZ5GvVFoFx2uiY1eNcSK00fh+1+FyQ==}
+ cli-spinners@2.9.2:
+ resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==}
engines: {node: '>=6'}
- clsx@2.0.0:
- resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==}
+ clsx@2.1.1:
+ resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==}
engines: {node: '>=6'}
collapse-white-space@2.1.0:
resolution: {integrity: sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==}
- color-convert@1.9.3:
- resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
-
color-convert@2.0.1:
resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==}
engines: {node: '>=7.0.0'}
- color-name@1.1.3:
- resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
-
color-name@1.1.4:
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
@@ -755,14 +889,10 @@ packages:
convert-source-map@2.0.0:
resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==}
- cookie@0.6.0:
- resolution: {integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==}
+ cookie@0.7.2:
+ resolution: {integrity: sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==}
engines: {node: '>= 0.6'}
- cross-spawn@7.0.3:
- resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==}
- engines: {node: '>= 8'}
-
css-selector-parser@1.4.1:
resolution: {integrity: sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==}
@@ -783,6 +913,15 @@ packages:
supports-color:
optional: true
+ debug@4.3.7:
+ resolution: {integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==}
+ engines: {node: '>=6.0'}
+ peerDependencies:
+ supports-color: '*'
+ peerDependenciesMeta:
+ supports-color:
+ optional: true
+
decode-named-character-reference@1.0.2:
resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==}
@@ -802,18 +941,22 @@ packages:
resolution: {integrity: sha512-UX6sGumvvqSaXgdKGUsgZWqcUyIXZ/vZTrlRT/iobiKhGL0zL4d3osHj3uqllWJK+i+sixDS/3COVEOFbupFyw==}
engines: {node: '>=8'}
+ detect-libc@2.0.3:
+ resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==}
+ engines: {node: '>=8'}
+
deterministic-object-hash@2.0.2:
resolution: {integrity: sha512-KxektNH63SrbfUyDiwXqRb1rLwKt33AmMv+5Nhsw1kqZ13SJBRTgZHtGbE+hH3a1mVW1cz+4pqSWVPAtLVXTzQ==}
engines: {node: '>=18'}
- devalue@4.3.2:
- resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==}
+ devalue@5.1.1:
+ resolution: {integrity: sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==}
devlop@1.1.0:
resolution: {integrity: sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==}
- diff@5.1.0:
- resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==}
+ diff@5.2.0:
+ resolution: {integrity: sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==}
engines: {node: '>=0.3.1'}
direction@2.0.1:
@@ -823,15 +966,15 @@ packages:
dlv@1.1.3:
resolution: {integrity: sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==}
- dset@3.1.3:
- resolution: {integrity: sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==}
+ dset@3.1.4:
+ resolution: {integrity: sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==}
engines: {node: '>=4'}
- eastasianwidth@0.2.0:
- resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==}
+ electron-to-chromium@1.5.68:
+ resolution: {integrity: sha512-FgMdJlma0OzUYlbrtZ4AeXjKxKPk6KT8WOP8BjcqxWtlg8qyJQjRzPJzUtUn5GBg1oQ26hFs7HOOHJMYiJRnvQ==}
- electron-to-chromium@1.4.686:
- resolution: {integrity: sha512-3avY1B+vUzNxEgkBDpKOP8WarvUAEwpRaiCL0He5OKWEFxzaOFiq4WoZEZe7qh0ReS7DiWoHMnYoQCKxNZNzSg==}
+ emoji-regex-xs@1.0.0:
+ resolution: {integrity: sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==}
emoji-regex@10.3.0:
resolution: {integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==}
@@ -839,9 +982,6 @@ packages:
emoji-regex@8.0.0:
resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==}
- emoji-regex@9.2.2:
- resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==}
-
end-of-stream@1.4.4:
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
@@ -849,22 +989,24 @@ packages:
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
engines: {node: '>=0.12'}
- es-module-lexer@1.4.1:
- resolution: {integrity: sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==}
+ es-module-lexer@1.5.4:
+ resolution: {integrity: sha512-MVNK56NiMrOwitFB7cqDwq0CQutbw+0BvLshJSse0MUNU+y1FC3bUS/AQg7oUng+/wKrrki7JfmwtVHkVfPLlw==}
+
+ esast-util-from-estree@2.0.0:
+ resolution: {integrity: sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==}
+
+ esast-util-from-js@2.0.1:
+ resolution: {integrity: sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==}
- esbuild@0.19.12:
- resolution: {integrity: sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg==}
+ esbuild@0.21.5:
+ resolution: {integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==}
engines: {node: '>=12'}
hasBin: true
- escalade@3.1.1:
- resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==}
+ escalade@3.2.0:
+ resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==}
engines: {node: '>=6'}
- escape-string-regexp@1.0.5:
- resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==}
- engines: {node: '>=0.8.0'}
-
escape-string-regexp@5.0.0:
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
engines: {node: '>=12'}
@@ -883,28 +1025,30 @@ packages:
estree-util-is-identifier-name@3.0.0:
resolution: {integrity: sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==}
+ estree-util-scope@1.0.0:
+ resolution: {integrity: sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==}
+
estree-util-to-js@2.0.0:
resolution: {integrity: sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==}
estree-util-visit@2.0.0:
resolution: {integrity: sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==}
+ estree-walker@2.0.2:
+ resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
+
estree-walker@3.0.3:
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
eventemitter3@5.0.1:
resolution: {integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==}
- execa@8.0.1:
- resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==}
- engines: {node: '>=16.17'}
-
expand-template@2.0.3:
resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
engines: {node: '>=6'}
- expressive-code@0.33.4:
- resolution: {integrity: sha512-vb6DLHjG+jbLJGTvOUhxagsru7oUiBrQEsL9+hcWJvlxIqQ5mRFqjamQS9kCIhXXbfYWiYI7/wfTGxQxuHxsZQ==}
+ expressive-code@0.35.6:
+ resolution: {integrity: sha512-+mx+TPTbMqgo0mL92Xh9QgjW0kSQIsEivMgEcOnaqKqL7qCw8Vkqc5Rg/di7ZYw4aMUSr74VTc+w8GQWu05j1g==}
extend-shallow@2.0.1:
resolution: {integrity: sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==}
@@ -923,23 +1067,23 @@ packages:
fastq@1.15.0:
resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==}
- fill-range@7.0.1:
- resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
+ fill-range@7.1.1:
+ resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==}
engines: {node: '>=8'}
+ find-up-simple@1.0.0:
+ resolution: {integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==}
+ engines: {node: '>=18'}
+
find-up@4.1.0:
resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==}
engines: {node: '>=8'}
- find-up@5.0.0:
- resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==}
- engines: {node: '>=10'}
-
find-yarn-workspace-root2@1.2.16:
resolution: {integrity: sha512-hr6hb1w8ePMpPVUK39S4RlwJzi+xPLuVuG8XlwXU3KD5Yn3qgBWVfy3AzNlDhWvE1EORCE65/Qm26rFQt3VLVA==}
- flattie@1.1.0:
- resolution: {integrity: sha512-xU99gDEnciIwJdGcBmNHnzTJ/w5AT+VFJOu6sTB6WM8diOYNA3Sa+K1DiEBQ7XH4QikQq3iFW1U+jRVcotQnBw==}
+ flattie@1.1.1:
+ resolution: {integrity: sha512-9UbaD6XdAL97+k/n+N7JwX46K/M6Zc6KcFYskrYL8wbBV/Uyk0CTAMY0VT+qiK5PM7AIc9aTWYtq65U7T+aCNQ==}
engines: {node: '>=8'}
fs-constants@1.0.0:
@@ -950,9 +1094,6 @@ packages:
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
- function-bind@1.1.2:
- resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
-
gensync@1.0.0-beta.2:
resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==}
engines: {node: '>=6.9.0'}
@@ -961,10 +1102,6 @@ packages:
resolution: {integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==}
engines: {node: '>=18'}
- get-stream@8.0.1:
- resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==}
- engines: {node: '>=16'}
-
github-from-package@0.0.0:
resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
@@ -986,17 +1123,18 @@ packages:
resolution: {integrity: sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==}
engines: {node: '>=6.0'}
- has-flag@3.0.0:
- resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==}
- engines: {node: '>=4'}
+ hast-util-embedded@3.0.0:
+ resolution: {integrity: sha512-naH8sld4Pe2ep03qqULEtvYr7EjrLK2QHY8KJR6RJkTUjPGObe1vnx585uzem2hGra+s1q08DZZpfgDVYRbaXA==}
- hasown@2.0.0:
- resolution: {integrity: sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==}
- engines: {node: '>= 0.4'}
+ hast-util-format@1.1.0:
+ resolution: {integrity: sha512-yY1UDz6bC9rDvCWHpx12aIBGRG7krurX0p0Fm6pT547LwDIZZiNr8a+IHDogorAdreULSEzP82Nlv5SZkHZcjA==}
hast-util-from-html@2.0.1:
resolution: {integrity: sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==}
+ hast-util-from-html@2.0.3:
+ resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==}
+
hast-util-from-parse5@7.1.2:
resolution: {integrity: sha512-Nz7FfPBuljzsN3tCQ4kCBKqdNhQE2l0Tn+X1ubgKBPRoiDIu1mL08Cfw4k7q71+Duyaw7DXDN+VTAp4Vh3oCOw==}
@@ -1009,12 +1147,24 @@ packages:
hast-util-has-property@3.0.0:
resolution: {integrity: sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==}
+ hast-util-is-body-ok-link@3.0.1:
+ resolution: {integrity: sha512-0qpnzOBLztXHbHQenVB8uNuxTnm/QBFUOmdOSsEn7GnBtyY07+ENTWVFBAnXd/zEgd9/SUG3lRY7hSIBWRgGpQ==}
+
+ hast-util-is-element@3.0.0:
+ resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
+
+ hast-util-minify-whitespace@1.0.1:
+ resolution: {integrity: sha512-L96fPOVpnclQE0xzdWb/D12VT5FabA7SnZOUMtL1DbXmYiHJMXZvFkIZfiMmTCNJHUeO2K9UYNXoVyfz+QHuOw==}
+
hast-util-parse-selector@3.1.1:
resolution: {integrity: sha512-jdlwBjEexy1oGz0aJ2f4GKMaVKkA9jwjr4MjAAI22E5fM/TXVZHuS5OpONtdeIkRKqAaryQ2E9xNQxijoThSZA==}
hast-util-parse-selector@4.0.0:
resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
+ hast-util-phrasing@3.0.1:
+ resolution: {integrity: sha512-6h60VfI3uBQUxHqTyMymMZnEbNl1XmEGtOxxKYL7stY2o601COo62AWAYBQR9lZbYXYSBoxag8UpPRXK+9fqSQ==}
+
hast-util-raw@7.2.3:
resolution: {integrity: sha512-RujVQfVsOrxzPOPSzZFiwofMArbQke6DJjnFfceiEbFh7S05CbPt0cYN+A5YeD3pso0JQk6O1aHBnx9+Pm2uqg==}
@@ -1036,6 +1186,9 @@ packages:
hast-util-to-html@9.0.0:
resolution: {integrity: sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==}
+ hast-util-to-html@9.0.3:
+ resolution: {integrity: sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==}
+
hast-util-to-jsx-runtime@2.3.0:
resolution: {integrity: sha512-H/y0+IWPdsLLS738P8tDnrQ8Z+dj12zQQ6WC11TIM21C8WFVoIxcqWXf2H3hiTVZjF1AWqoimGwrTWecWrnmRQ==}
@@ -1051,6 +1204,9 @@ packages:
hast-util-to-string@3.0.0:
resolution: {integrity: sha512-OGkAxX1Ua3cbcW6EJ5pT/tslVb90uViVkcJ4ZZIMW/R33DX/AkcJcRrPebPwJkHYwlDHXz4aIwvAAaAdtrACFA==}
+ hast-util-to-text@4.0.2:
+ resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==}
+
hast-util-whitespace@2.0.1:
resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==}
@@ -1063,6 +1219,9 @@ packages:
hastscript@8.0.0:
resolution: {integrity: sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==}
+ hastscript@9.0.0:
+ resolution: {integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==}
+
html-escaper@3.0.3:
resolution: {integrity: sha512-RuMffC89BOWQoY0WKGpIhn5gX3iI54O6nRA0yC124NYVtzjmFWBIiFd8M0x+ZdX0P9R4lADg1mgP8C7PxGOWuQ==}
@@ -1072,18 +1231,17 @@ packages:
html-void-elements@3.0.0:
resolution: {integrity: sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==}
+ html-whitespace-sensitive-tag-names@3.0.1:
+ resolution: {integrity: sha512-q+310vW8zmymYHALr1da4HyXUQ0zgiIwIicEfotYPWGN0OJVEN/58IJ3A4GBYcEq3LGAZqKb+ugvP0GNB9CEAA==}
+
http-cache-semantics@4.1.1:
resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
- human-signals@5.0.0:
- resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==}
- engines: {node: '>=16.17.0'}
-
ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
- import-meta-resolve@4.0.0:
- resolution: {integrity: sha512-okYUR7ZQPH+efeuMJGlq4f8ubUgO50kByRPyt/Cy1Io4PSRsPjxME+YlVaCOx+NIToW7hCsZNFJyTPFFKepRSA==}
+ import-meta-resolve@4.1.0:
+ resolution: {integrity: sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==}
inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
@@ -1106,17 +1264,10 @@ packages:
is-arrayish@0.3.2:
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
- is-binary-path@2.1.0:
- resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
- engines: {node: '>=8'}
-
is-buffer@2.0.5:
resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
engines: {node: '>=4'}
- is-core-module@2.13.1:
- resolution: {integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==}
-
is-decimal@2.0.1:
resolution: {integrity: sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==}
@@ -1161,24 +1312,18 @@ packages:
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
engines: {node: '>=12'}
- is-reference@3.0.2:
- resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
-
- is-stream@3.0.0:
- resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
is-unicode-supported@1.3.0:
resolution: {integrity: sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==}
engines: {node: '>=12'}
+ is-unicode-supported@2.1.0:
+ resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==}
+ engines: {node: '>=18'}
+
is-wsl@3.1.0:
resolution: {integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==}
engines: {node: '>=16'}
- isexe@2.0.0:
- resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
-
js-tokens@4.0.0:
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
@@ -1190,9 +1335,9 @@ packages:
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
hasBin: true
- jsesc@2.5.2:
- resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==}
- engines: {node: '>=4'}
+ jsesc@3.0.2:
+ resolution: {integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==}
+ engines: {node: '>=6'}
hasBin: true
json5@2.2.3:
@@ -1220,13 +1365,9 @@ packages:
resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==}
engines: {node: '>=8'}
- locate-path@6.0.0:
- resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==}
- engines: {node: '>=10'}
-
- log-symbols@5.1.0:
- resolution: {integrity: sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==}
- engines: {node: '>=12'}
+ log-symbols@6.0.0:
+ resolution: {integrity: sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==}
+ engines: {node: '>=18'}
longest-streak@3.1.0:
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
@@ -1238,9 +1379,11 @@ packages:
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
engines: {node: '>=10'}
- magic-string@0.30.5:
- resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==}
- engines: {node: '>=12'}
+ magic-string@0.30.14:
+ resolution: {integrity: sha512-5c99P1WKTed11ZC0HMJOj6CDIue6F8ySu+bJL+85q1zBEIY8IklrJ1eiKC2NDRh3Ct3FcvmJPyQHb9erXMTJNw==}
+
+ magicast@0.3.5:
+ resolution: {integrity: sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==}
markdown-extensions@2.0.0:
resolution: {integrity: sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==}
@@ -1303,9 +1446,6 @@ packages:
mdast-util-to-string@4.0.0:
resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
- merge-stream@2.0.0:
- resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
-
merge2@1.4.1:
resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==}
engines: {node: '>= 8'}
@@ -1418,22 +1558,13 @@ packages:
micromark@4.0.0:
resolution: {integrity: sha512-o/sd0nMof8kYff+TqcDx3VSrgBTcZpSvYcAHIfHhv5VAuNmisCxjhx6YmxS8PFEpb9z5WKWKPdzf0jM23ro3RQ==}
- micromatch@4.0.5:
- resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==}
+ micromatch@4.0.8:
+ resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
engines: {node: '>=8.6'}
- mime@3.0.0:
- resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
- engines: {node: '>=10.0.0'}
- hasBin: true
-
- mimic-fn@2.1.0:
- resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==}
- engines: {node: '>=6'}
-
- mimic-fn@4.0.0:
- resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==}
- engines: {node: '>=12'}
+ mimic-function@5.0.1:
+ resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==}
+ engines: {node: '>=18'}
mimic-response@3.1.0:
resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
@@ -1445,9 +1576,16 @@ packages:
mkdirp-classic@0.5.3:
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
+ mrmime@2.0.0:
+ resolution: {integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==}
+ engines: {node: '>=10'}
+
ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
+ ms@2.1.3:
+ resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
+
nanoid@3.3.7:
resolution: {integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -1456,8 +1594,12 @@ packages:
napi-build-utils@1.0.2:
resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==}
- nlcst-to-string@3.1.1:
- resolution: {integrity: sha512-63mVyqaqt0cmn2VcI2aH6kxe1rLAmSROqHMA0i4qqg1tidkfExgpb0FGMikMCn86mw5dFtBtEANfmSSK7TjNHw==}
+ neotraverse@0.6.18:
+ resolution: {integrity: sha512-Z4SmBUweYa09+o6pG+eASabEpP6QkQ70yHj351pQoEXIs8uHbaU2DWVmzBANKgflPa47A50PtB2+NgRpQvr7vA==}
+ engines: {node: '>= 10'}
+
+ nlcst-to-string@4.0.0:
+ resolution: {integrity: sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==}
node-abi@3.47.0:
resolution: {integrity: sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==}
@@ -1466,58 +1608,41 @@ packages:
node-addon-api@6.1.0:
resolution: {integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==}
- node-releases@2.0.14:
- resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==}
-
- normalize-path@3.0.0:
- resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
- engines: {node: '>=0.10.0'}
+ node-releases@2.0.18:
+ resolution: {integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==}
not@0.1.0:
resolution: {integrity: sha512-5PDmaAsVfnWUgTUbJ3ERwn7u79Z0dYxN9ErxCpVJJqe2RK0PJ3z+iFUxuqjwtlDDegXvtWoxD/3Fzxox7tFGWA==}
- npm-run-path@5.1.0:
- resolution: {integrity: sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
-
nth-check@2.1.1:
resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==}
once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
- onetime@5.1.2:
- resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==}
- engines: {node: '>=6'}
+ onetime@7.0.0:
+ resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==}
+ engines: {node: '>=18'}
- onetime@6.0.0:
- resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==}
- engines: {node: '>=12'}
+ oniguruma-to-es@0.7.0:
+ resolution: {integrity: sha512-HRaRh09cE0gRS3+wi2zxekB+I5L8C/gN60S+vb11eADHUaB/q4u8wGGOX3GvwvitG8ixaeycZfeoyruKQzUgNg==}
- ora@7.0.1:
- resolution: {integrity: sha512-0TUxTiFJWv+JnjWm4o9yvuskpEJLXTcng8MJuKd+SzAzp2o+OP3HWqNhB4OdJRt1Vsd9/mR0oyaEYlOnL7XIRw==}
- engines: {node: '>=16'}
+ ora@8.1.1:
+ resolution: {integrity: sha512-YWielGi1XzG1UTvOaCFaNgEnuhZVMSHYkW/FQ7UX8O26PtlpdM84c0f7wLPlkvx2RfiQmnzd61d/MGxmpQeJPw==}
+ engines: {node: '>=18'}
p-limit@2.3.0:
resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==}
engines: {node: '>=6'}
- p-limit@3.1.0:
- resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==}
- engines: {node: '>=10'}
-
- p-limit@5.0.0:
- resolution: {integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==}
+ p-limit@6.1.0:
+ resolution: {integrity: sha512-H0jc0q1vOzlEk0TqAKXKZxdl7kX3OFUzCnNVUnq5Pc3DGo0kpeaMuPqxQn235HibwBEb0/pm9dgKTjXy66fBkg==}
engines: {node: '>=18'}
p-locate@4.1.0:
resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==}
engines: {node: '>=8'}
- p-locate@5.0.0:
- resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==}
- engines: {node: '>=10'}
-
p-queue@8.0.1:
resolution: {integrity: sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==}
engines: {node: '>=18'}
@@ -1537,8 +1662,8 @@ packages:
parse-entities@4.0.1:
resolution: {integrity: sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==}
- parse-latin@5.0.1:
- resolution: {integrity: sha512-b/K8ExXaWC9t34kKeDV8kGXBkXZ1HCSAZRYE7HR14eA1GlXX5L8iWhs8USJNhQU9q5ci413jCKF0gOyovvyRBg==}
+ parse-latin@7.0.0:
+ resolution: {integrity: sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==}
parse5@6.0.1:
resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
@@ -1550,30 +1675,20 @@ packages:
resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==}
engines: {node: '>=8'}
- path-key@3.1.1:
- resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==}
- engines: {node: '>=8'}
-
- path-key@4.0.0:
- resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==}
- engines: {node: '>=12'}
-
- path-parse@1.0.7:
- resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==}
-
- path-to-regexp@6.2.1:
- resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==}
-
- periscopic@3.1.0:
- resolution: {integrity: sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==}
-
picocolors@1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
+ picocolors@1.1.1:
+ resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
+
picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
+ picomatch@4.0.2:
+ resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
+ engines: {node: '>=12'}
+
pify@4.0.1:
resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==}
engines: {node: '>=6'}
@@ -1596,14 +1711,18 @@ packages:
resolution: {integrity: sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA==}
engines: {node: ^10 || ^12 || >=14}
+ postcss@8.4.49:
+ resolution: {integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==}
+ engines: {node: ^10 || ^12 || >=14}
+
prebuild-install@7.1.1:
resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==}
engines: {node: '>=10'}
hasBin: true
- preferred-pm@3.1.2:
- resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==}
- engines: {node: '>=10'}
+ preferred-pm@4.0.0:
+ resolution: {integrity: sha512-gYBeFTZLu055D8Vv3cSPox/0iTPtkzxpLroSYYA7WXgRi31WCJ51Uyl8ZiPeUUjyvs2MBzK+S8v9JVUgHU/Sqw==}
+ engines: {node: '>=18.12'}
prismjs@1.29.0:
resolution: {integrity: sha512-Kx/1w86q/epKcmte75LNrEoT+lX8pBpavuAbvJWRXar7Hz8jrtF+e3vY751p0R8H9HdArwaCTNDDzHg/ScJK1Q==}
@@ -1636,9 +1755,32 @@ packages:
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
engines: {node: '>= 6'}
- readdirp@3.6.0:
- resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
- engines: {node: '>=8.10.0'}
+ recma-build-jsx@1.0.0:
+ resolution: {integrity: sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==}
+
+ recma-jsx@1.0.0:
+ resolution: {integrity: sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==}
+
+ recma-parse@1.0.0:
+ resolution: {integrity: sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==}
+
+ recma-stringify@1.0.0:
+ resolution: {integrity: sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==}
+
+ regex-recursion@4.3.0:
+ resolution: {integrity: sha512-5LcLnizwjcQ2ALfOj95MjcatxyqF5RPySx9yT+PaXu3Gox2vyAtLDjHB8NTJLtMGkvyau6nI3CfpwFCjPUIs/A==}
+
+ regex-utilities@2.3.0:
+ resolution: {integrity: sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==}
+
+ regex@5.0.2:
+ resolution: {integrity: sha512-/pczGbKIQgfTMRV0XjABvc5RzLqQmwqxLHdQao2RTXPk+pmTXB2P0IaUHYdYyk412YLwUIkaeMd5T+RzVgTqnQ==}
+
+ rehype-expressive-code@0.35.6:
+ resolution: {integrity: sha512-pPdE+pRcRw01kxMOwHQjuRxgwlblZt5+wAc3w2aPGgmcnn57wYjn07iKO7zaznDxYVxMYVvYlnL+R3vWFQS4Gw==}
+
+ rehype-format@5.0.1:
+ resolution: {integrity: sha512-zvmVru9uB0josBVpr946OR8ui7nJEdzZobwLOOqHb/OOD88W0Vk2SqLwoVOj0fM6IPCCO6TaV9CvQvJMWwukFQ==}
rehype-parse@9.0.0:
resolution: {integrity: sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==}
@@ -1646,18 +1788,24 @@ packages:
rehype-raw@7.0.0:
resolution: {integrity: sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==}
+ rehype-recma@1.0.0:
+ resolution: {integrity: sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==}
+
rehype-stringify@10.0.0:
resolution: {integrity: sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==}
+ rehype-stringify@10.0.1:
+ resolution: {integrity: sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==}
+
rehype@13.0.1:
resolution: {integrity: sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==}
+ rehype@13.0.2:
+ resolution: {integrity: sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==}
+
remark-directive@3.0.0:
resolution: {integrity: sha512-l1UyWJ6Eg1VPU7Hm/9tt0zKtReJQNOA4+iDMAxTyZNWnJnFlbS/7zhiel/rogTLQ2vMYwDzSJa4BiVNqGlqIMA==}
- remark-expressive-code@0.33.4:
- resolution: {integrity: sha512-ucGzDknAY6LJKkcNSaYh9N0SEr1LDA0shageM1xa+4fu/o+7g6R1/ApF7d2c+cj1ERLvaF4OaUa87n5baY+MDA==}
-
remark-gfm@4.0.0:
resolution: {integrity: sha512-U92vJgBPkbw4Zfu/IiW2oTZLSL3Zpv+uI7My2eq8JxKgqraFdU8YUGicEJCEgSbeaG+QDFqIcwwfMTOEelPxuA==}
@@ -1670,39 +1818,38 @@ packages:
remark-rehype@11.1.0:
resolution: {integrity: sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==}
- remark-smartypants@2.0.0:
- resolution: {integrity: sha512-Rc0VDmr/yhnMQIz8n2ACYXlfw/P/XZev884QU1I5u+5DgJls32o97Vc1RbK3pfumLsJomS2yy8eT4Fxj/2MDVA==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ remark-rehype@11.1.1:
+ resolution: {integrity: sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==}
+
+ remark-smartypants@3.0.2:
+ resolution: {integrity: sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==}
+ engines: {node: '>=16.0.0'}
remark-stringify@11.0.0:
resolution: {integrity: sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==}
- resolve@1.22.8:
- resolution: {integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==}
- hasBin: true
-
- restore-cursor@4.0.0:
- resolution: {integrity: sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ restore-cursor@5.1.0:
+ resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==}
+ engines: {node: '>=18'}
- retext-latin@3.1.0:
- resolution: {integrity: sha512-5MrD1tuebzO8ppsja5eEu+ZbBeUNCjoEarn70tkXOS7Bdsdf6tNahsv2bY0Z8VooFF6cw7/6S+d3yI/TMlMVVQ==}
+ retext-latin@4.0.0:
+ resolution: {integrity: sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==}
- retext-smartypants@5.2.0:
- resolution: {integrity: sha512-Do8oM+SsjrbzT2UNIKgheP0hgUQTDDQYyZaIY3kfq0pdFzoPk+ZClYJ+OERNXveog4xf1pZL4PfRxNoVL7a/jw==}
+ retext-smartypants@6.2.0:
+ resolution: {integrity: sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==}
- retext-stringify@3.1.0:
- resolution: {integrity: sha512-767TLOaoXFXyOnjx/EggXlb37ZD2u4P1n0GJqVdpipqACsQP+20W+BNpMYrlJkq7hxffnFk+jc6mAK9qrbuB8w==}
+ retext-stringify@4.0.0:
+ resolution: {integrity: sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==}
- retext@8.1.0:
- resolution: {integrity: sha512-N9/Kq7YTn6ZpzfiGW45WfEGJqFf1IM1q8OsRa1CGzIebCJBNCANDRmOrholiDRGKo/We7ofKR4SEvcGAWEMD3Q==}
+ retext@9.0.0:
+ resolution: {integrity: sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==}
reusify@1.0.4:
resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==}
engines: {iojs: '>=1.0.0', node: '>=0.10.0'}
- rollup@4.12.0:
- resolution: {integrity: sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q==}
+ rollup@4.28.0:
+ resolution: {integrity: sha512-G9GOrmgWHBma4YfCcX8PjH0qhXSdH8B4HDE2o4/jaxj93S4DPCIDoLcXz99eWMji4hB29UFCEd7B2gwGJDR9cQ==}
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
hasBin: true
@@ -1728,33 +1875,24 @@ packages:
engines: {node: '>=10'}
hasBin: true
+ semver@7.6.3:
+ resolution: {integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==}
+ engines: {node: '>=10'}
+ hasBin: true
+
sharp@0.32.3:
resolution: {integrity: sha512-i1gFPiNqyqxC4ouVvCKj5G8WfPIMeeSxpKcMrjic6NY4e8zktW7bIdqHPc3FCG+pNKU/XCEabKA57hhvZi8UmQ==}
engines: {node: '>=14.15.0'}
- sharp@0.32.6:
- resolution: {integrity: sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==}
- engines: {node: '>=14.15.0'}
-
- shebang-command@2.0.0:
- resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==}
- engines: {node: '>=8'}
-
- shebang-regex@3.0.0:
- resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==}
- engines: {node: '>=8'}
+ sharp@0.33.5:
+ resolution: {integrity: sha512-haPVm1EkS9pgvHrQ/F3Xy+hgcuMV0Wm9vfIBSiwZ05k+xgb0PkBQpGsAA/oWdDobNaZTH5ppvHtzCFbnSEwHVw==}
+ engines: {node: ^18.17.0 || ^20.3.0 || >=21.0.0}
shiki@1.1.7:
resolution: {integrity: sha512-9kUTMjZtcPH3i7vHunA6EraTPpPOITYTdA5uMrvsJRexktqP0s7P3s9HVK80b4pP42FRVe03D7fT3NmJv2yYhw==}
- shikiji-core@0.9.19:
- resolution: {integrity: sha512-AFJu/vcNT21t0e6YrfadZ+9q86gvPum6iywRyt1OtIPjPFe25RQnYJyxHQPMLKCCWA992TPxmEmbNcOZCAJclw==}
-
- shikiji@0.9.19:
- resolution: {integrity: sha512-Kw2NHWktdcdypCj1GkKpXH4o6Vxz8B8TykPlPuLHOGSV8VkhoCLcFOH4k19K4LXAQYRQmxg+0X/eM+m2sLhAkg==}
-
- signal-exit@3.0.7:
- resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==}
+ shiki@1.24.0:
+ resolution: {integrity: sha512-qIneep7QRwxRd5oiHb8jaRzH15V/S8F3saCXOdjwRLgozZJr5x2yeBhQtqkO3FSzQDwYEFAYuifg4oHjpDghrg==}
signal-exit@4.1.0:
resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==}
@@ -1772,15 +1910,19 @@ packages:
sisteransi@1.0.5:
resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==}
- sitemap@7.1.1:
- resolution: {integrity: sha512-mK3aFtjz4VdJN0igpIJrinf3EO8U8mxOPsTBzSsy06UtjZQJ3YY3o3Xa7zSc5nMqcMrRwlChHZ18Kxg0caiPBg==}
- engines: {node: '>=12.0.0', npm: '>=5.6.0'}
+ sitemap@8.0.0:
+ resolution: {integrity: sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==}
+ engines: {node: '>=14.0.0', npm: '>=6.0.0'}
hasBin: true
source-map-js@1.0.2:
resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==}
engines: {node: '>=0.10.0'}
+ source-map-js@1.2.1:
+ resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
+ engines: {node: '>=0.10.0'}
+
source-map@0.7.4:
resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
engines: {node: '>= 8'}
@@ -1791,9 +1933,12 @@ packages:
sprintf-js@1.0.3:
resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==}
- stdin-discarder@0.1.0:
- resolution: {integrity: sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==}
- engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0}
+ stdin-discarder@0.2.2:
+ resolution: {integrity: sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==}
+ engines: {node: '>=18'}
+
+ stream-replace-string@2.0.0:
+ resolution: {integrity: sha512-TlnjJ1C0QrmxRNrON00JvaFFlNh5TTG00APw23j74ET7gkQpTASi6/L2fuiav8pzK715HXtUeClpBTw2NPSn6w==}
streamx@2.15.1:
resolution: {integrity: sha512-fQMzy2O/Q47rgwErk/eGeLu/roaFWV0jVsogDmrszM9uIw8L5OA+t+V93MgYlufNptfjmYR1tOMWhei/Eh7TQA==}
@@ -1802,17 +1947,9 @@ packages:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'}
- string-width@5.1.2:
- resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==}
- engines: {node: '>=12'}
-
- string-width@6.1.0:
- resolution: {integrity: sha512-k01swCJAgQmuADB0YIc+7TuatfNvTBVOoaUWJjTB9R4VJzR5vNWzf5t42ESVZFPS8xTySF7CAdV4t/aaIm3UnQ==}
- engines: {node: '>=16'}
-
- string-width@7.1.0:
- resolution: {integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==}
- engines: {node: '>=18'}
+ string-width@7.2.0:
+ resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==}
+ engines: {node: '>=18'}
string_decoder@1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
@@ -1836,10 +1973,6 @@ packages:
resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==}
engines: {node: '>=4'}
- strip-final-newline@3.0.0:
- resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==}
- engines: {node: '>=12'}
-
strip-json-comments@2.0.1:
resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
engines: {node: '>=0.10.0'}
@@ -1850,14 +1983,6 @@ packages:
style-to-object@1.0.5:
resolution: {integrity: sha512-rDRwHtoDD3UMMrmZ6BzOW0naTjMsVZLIjsGleSKS/0Oz+cgCfAPRspaqJuE8rDzpKha/nEvnM0IF4seEAZUTKQ==}
- supports-color@5.5.0:
- resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==}
- engines: {node: '>=4'}
-
- supports-preserve-symlinks-flag@1.0.0:
- resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==}
- engines: {node: '>= 0.4'}
-
tar-fs@2.1.1:
resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==}
@@ -1871,9 +1996,8 @@ packages:
tar-stream@3.1.6:
resolution: {integrity: sha512-B/UyjYwPpMBv+PaFSWAmtYjwdrlEaZQEhMIBFNC5oEG8lpiW8XjcSdmEaClj28ArfKScKHs2nshz3k2le6crsg==}
- to-fast-properties@2.0.0:
- resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==}
- engines: {node: '>=4'}
+ tinyexec@0.3.1:
+ resolution: {integrity: sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==}
to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
@@ -1885,8 +2009,8 @@ packages:
trough@2.1.0:
resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==}
- tsconfck@3.0.0:
- resolution: {integrity: sha512-w3wnsIrJNi7avf4Zb0VjOoodoO0woEqGgZGQm+LHH9przdUI+XDKsWAXwxHA1DaRTjeuZNcregSzr7RaA8zG9A==}
+ tsconfck@3.1.4:
+ resolution: {integrity: sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==}
engines: {node: ^18 || >=20}
hasBin: true
peerDependencies:
@@ -1895,30 +2019,38 @@ packages:
typescript:
optional: true
+ tslib@2.8.1:
+ resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
+
tunnel-agent@0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
- type-fest@2.19.0:
- resolution: {integrity: sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==}
- engines: {node: '>=12.20'}
-
- unherit@3.0.1:
- resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==}
+ type-fest@4.30.0:
+ resolution: {integrity: sha512-G6zXWS1dLj6eagy6sVhOMQiLtJdxQBHIA9Z6HFUNLOlr6MFOgzV8wvmidtPONfPtEUv0uZsy77XJNzTAfwPDaA==}
+ engines: {node: '>=16'}
- unified@10.1.2:
- resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
+ typescript@5.7.2:
+ resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==}
+ engines: {node: '>=14.17'}
+ hasBin: true
unified@11.0.4:
resolution: {integrity: sha512-apMPnyLjAX+ty4OrNap7yumyVAMlKx5IWU2wlzzUdYJO9A8f1p9m/gywF/GM2ZDFcjQPrx59Mc90KwmxsoklxQ==}
+ unified@11.0.5:
+ resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
+
+ unist-util-find-after@5.0.0:
+ resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==}
+
unist-util-is@5.2.1:
resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==}
unist-util-is@6.0.0:
resolution: {integrity: sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==}
- unist-util-modify-children@3.1.1:
- resolution: {integrity: sha512-yXi4Lm+TG5VG+qvokP6tpnk+r1EPwyYL04JWDxLvgvPV40jANh7nm3udk65OOWquvbMDe+PL9+LmkxDpTv/7BA==}
+ unist-util-modify-children@4.0.0:
+ resolution: {integrity: sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==}
unist-util-position-from-estree@2.0.0:
resolution: {integrity: sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==}
@@ -1932,17 +2064,14 @@ packages:
unist-util-remove-position@5.0.0:
resolution: {integrity: sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==}
- unist-util-remove@4.0.0:
- resolution: {integrity: sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==}
-
unist-util-stringify-position@3.0.3:
resolution: {integrity: sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==}
unist-util-stringify-position@4.0.0:
resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
- unist-util-visit-children@2.0.2:
- resolution: {integrity: sha512-+LWpMFqyUwLGpsQxpumsQ9o9DG2VGLFrpz+rpVXYIEdPy57GSy5HioC0g3bg/8WP9oCLlapQtklOzQ8uLS496Q==}
+ unist-util-visit-children@3.0.0:
+ resolution: {integrity: sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==}
unist-util-visit-parents@5.1.3:
resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==}
@@ -1956,8 +2085,8 @@ packages:
unist-util-visit@5.0.0:
resolution: {integrity: sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==}
- update-browserslist-db@1.0.13:
- resolution: {integrity: sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==}
+ update-browserslist-db@1.1.1:
+ resolution: {integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==}
hasBin: true
peerDependencies:
browserslist: '>= 4.21.0'
@@ -1983,8 +2112,11 @@ packages:
vfile@6.0.1:
resolution: {integrity: sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==}
- vite@5.1.4:
- resolution: {integrity: sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg==}
+ vfile@6.0.3:
+ resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
+
+ vite@5.4.11:
+ resolution: {integrity: sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==}
engines: {node: ^18.0.0 || >=20.0.0}
hasBin: true
peerDependencies:
@@ -1992,6 +2124,7 @@ packages:
less: '*'
lightningcss: ^1.21.0
sass: '*'
+ sass-embedded: '*'
stylus: '*'
sugarss: '*'
terser: ^5.4.0
@@ -2004,6 +2137,8 @@ packages:
optional: true
sass:
optional: true
+ sass-embedded:
+ optional: true
stylus:
optional: true
sugarss:
@@ -2011,10 +2146,10 @@ packages:
terser:
optional: true
- vitefu@0.2.5:
- resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==}
+ vitefu@1.0.4:
+ resolution: {integrity: sha512-y6zEE3PQf6uu/Mt6DTJ9ih+kyJLr4XcSgHR2zUkM8SWDhuixEJxfJ6CZGMHh1Ec3vPLoEA0IHU5oWzVqw8ulow==}
peerDependencies:
- vite: ^3.0.0 || ^4.0.0 || ^5.0.0
+ vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0
peerDependenciesMeta:
vite:
optional: true
@@ -2026,30 +2161,24 @@ packages:
resolution: {integrity: sha512-n1brCuqClxfFfq/Rb0ICg9giSZqCS+pLtccdag6C2HyufBrh3fBOiy9nb6ggRMvWOVH5GrdJskj5iGTZNxd7SA==}
engines: {node: '>=4'}
- which-pm@2.0.0:
- resolution: {integrity: sha512-Lhs9Pmyph0p5n5Z3mVnN0yWcbQYUAD7rbQUiMsQxOJ3T57k7RFe35SUwWMf7dsbDZks1uOmw4AecB/JMDj3v/w==}
- engines: {node: '>=8.15'}
-
- which-pm@2.1.1:
- resolution: {integrity: sha512-xzzxNw2wMaoCWXiGE8IJ9wuPMU+EYhFksjHxrRT8kMT5SnocBPRg69YAMtyV4D12fP582RA+k3P8H9J5EMdIxQ==}
- engines: {node: '>=8.15'}
-
- which@2.0.2:
- resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==}
- engines: {node: '>= 8'}
- hasBin: true
+ which-pm@3.0.0:
+ resolution: {integrity: sha512-ysVYmw6+ZBhx3+ZkcPwRuJi38ZOTLJJ33PSHaitLxSKUMsh0LkKd0nC69zZCwt5D+AYUcMK2hhw4yWny20vSGg==}
+ engines: {node: '>=18.12'}
- widest-line@4.0.1:
- resolution: {integrity: sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==}
- engines: {node: '>=12'}
+ widest-line@5.0.0:
+ resolution: {integrity: sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==}
+ engines: {node: '>=18'}
- wrap-ansi@8.1.0:
- resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==}
- engines: {node: '>=12'}
+ wrap-ansi@9.0.0:
+ resolution: {integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==}
+ engines: {node: '>=18'}
wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
+ xxhash-wasm@1.1.0:
+ resolution: {integrity: sha512-147y/6YNh+tlp6nd/2pWq38i9h6mz/EuQ6njIrmW8D1BS5nCqs0P6DG+m6zTGnNz5I+uhZ0SHxBs9BsPrwcKDA==}
+
yallist@3.1.1:
resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==}
@@ -2060,16 +2189,23 @@ packages:
resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==}
engines: {node: '>=12'}
- yocto-queue@0.1.0:
- resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==}
- engines: {node: '>=10'}
-
- yocto-queue@1.0.0:
- resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==}
+ yocto-queue@1.1.1:
+ resolution: {integrity: sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==}
engines: {node: '>=12.20'}
- zod@3.22.4:
- resolution: {integrity: sha512-iC+8Io04lddc+mVqQ9AZ7OQ2MrUKGN+oIQyq1vemgt46jwCwLfhq7/pwnBnNXXXZb8VTVLKwp9EDkx+ryxIWmg==}
+ zod-to-json-schema@3.23.5:
+ resolution: {integrity: sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA==}
+ peerDependencies:
+ zod: ^3.23.3
+
+ zod-to-ts@1.2.0:
+ resolution: {integrity: sha512-x30XE43V+InwGpvTySRNz9kB7qFU8DlyEy7BsSTCHPH1R0QasMmHWZDCzYm6bVXtj/9NNJAZF3jW8rzFvH5OFA==}
+ peerDependencies:
+ typescript: ^4.9.4 || ^5.0.2
+ zod: ^3
+
+ zod@3.23.8:
+ resolution: {integrity: sha512-XBx9AXhXktjUqnepgTiE5flcKIYWi/rme0Eaj+5Y0lftuGBq+jyRu/md4WnuxqgP1ubdpNCsYEYPxrzVHD8d6g==}
zwitch@2.0.4:
resolution: {integrity: sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==}
@@ -2081,311 +2217,302 @@ snapshots:
'@jridgewell/gen-mapping': 0.3.3
'@jridgewell/trace-mapping': 0.3.20
- '@astrojs/compiler@2.6.0': {}
+ '@astrojs/compiler@2.10.3': {}
- '@astrojs/internal-helpers@0.2.1': {}
+ '@astrojs/internal-helpers@0.4.1': {}
- '@astrojs/markdown-remark@4.2.1':
+ '@astrojs/markdown-remark@5.3.0':
dependencies:
- '@astrojs/prism': 3.0.0
+ '@astrojs/prism': 3.1.0
github-slugger: 2.0.0
- import-meta-resolve: 4.0.0
+ hast-util-from-html: 2.0.3
+ hast-util-to-text: 4.0.2
+ import-meta-resolve: 4.1.0
mdast-util-definitions: 6.0.0
rehype-raw: 7.0.0
- rehype-stringify: 10.0.0
+ rehype-stringify: 10.0.1
remark-gfm: 4.0.0
remark-parse: 11.0.0
- remark-rehype: 11.1.0
- remark-smartypants: 2.0.0
- shikiji: 0.9.19
- unified: 11.0.4
+ remark-rehype: 11.1.1
+ remark-smartypants: 3.0.2
+ shiki: 1.24.0
+ unified: 11.0.5
+ unist-util-remove-position: 5.0.0
unist-util-visit: 5.0.0
- vfile: 6.0.1
+ unist-util-visit-parents: 6.0.1
+ vfile: 6.0.3
transitivePeerDependencies:
- supports-color
- '@astrojs/mdx@2.1.1(astro@4.4.9)':
+ '@astrojs/mdx@3.1.9(astro@4.16.16(rollup@4.28.0)(typescript@5.7.2))':
dependencies:
- '@astrojs/markdown-remark': 4.2.1
- '@mdx-js/mdx': 3.0.1
- acorn: 8.11.3
- astro: 4.4.9
- es-module-lexer: 1.4.1
+ '@astrojs/markdown-remark': 5.3.0
+ '@mdx-js/mdx': 3.1.0(acorn@8.14.0)
+ acorn: 8.14.0
+ astro: 4.16.16(rollup@4.28.0)(typescript@5.7.2)
+ es-module-lexer: 1.5.4
estree-util-visit: 2.0.0
- github-slugger: 2.0.0
gray-matter: 4.0.3
- hast-util-to-html: 9.0.0
+ hast-util-to-html: 9.0.3
kleur: 4.1.5
rehype-raw: 7.0.0
remark-gfm: 4.0.0
- remark-smartypants: 2.0.0
+ remark-smartypants: 3.0.2
source-map: 0.7.4
unist-util-visit: 5.0.0
- vfile: 6.0.1
+ vfile: 6.0.3
transitivePeerDependencies:
- supports-color
- '@astrojs/prism@3.0.0':
+ '@astrojs/prism@3.1.0':
dependencies:
prismjs: 1.29.0
- '@astrojs/sitemap@3.1.1':
+ '@astrojs/sitemap@3.2.1':
dependencies:
- sitemap: 7.1.1
- zod: 3.22.4
+ sitemap: 8.0.0
+ stream-replace-string: 2.0.0
+ zod: 3.23.8
- '@astrojs/starlight@0.21.1(astro@4.4.9)':
+ '@astrojs/starlight@0.27.1(astro@4.16.16(rollup@4.28.0)(typescript@5.7.2))':
dependencies:
- '@astrojs/mdx': 2.1.1(astro@4.4.9)
- '@astrojs/sitemap': 3.1.1
+ '@astrojs/mdx': 3.1.9(astro@4.16.16(rollup@4.28.0)(typescript@5.7.2))
+ '@astrojs/sitemap': 3.2.1
'@pagefind/default-ui': 1.0.3
'@types/hast': 3.0.4
- '@types/mdast': 4.0.3
- astro: 4.4.9
- astro-expressive-code: 0.33.4(astro@4.4.9)
+ '@types/mdast': 4.0.4
+ astro: 4.16.16(rollup@4.28.0)(typescript@5.7.2)
+ astro-expressive-code: 0.35.6(astro@4.16.16(rollup@4.28.0)(typescript@5.7.2))
bcp-47: 2.1.0
hast-util-from-html: 2.0.1
hast-util-select: 6.0.2
hast-util-to-string: 3.0.0
- hastscript: 8.0.0
+ hastscript: 9.0.0
mdast-util-directive: 3.0.0
mdast-util-to-markdown: 2.1.0
+ mdast-util-to-string: 4.0.0
pagefind: 1.0.3
rehype: 13.0.1
+ rehype-format: 5.0.1
remark-directive: 3.0.0
- unified: 11.0.4
- unist-util-remove: 4.0.0
+ unified: 11.0.5
unist-util-visit: 5.0.0
- vfile: 6.0.1
+ vfile: 6.0.3
transitivePeerDependencies:
- supports-color
- '@astrojs/telemetry@3.0.4':
+ '@astrojs/telemetry@3.1.0':
dependencies:
- ci-info: 3.9.0
- debug: 4.3.4
+ ci-info: 4.1.0
+ debug: 4.3.7
dlv: 1.1.3
- dset: 3.1.3
+ dset: 3.1.4
is-docker: 3.0.0
is-wsl: 3.1.0
which-pm-runs: 1.1.0
transitivePeerDependencies:
- supports-color
- '@babel/code-frame@7.23.5':
+ '@babel/code-frame@7.26.2':
dependencies:
- '@babel/highlight': 7.23.4
- chalk: 2.4.2
+ '@babel/helper-validator-identifier': 7.25.9
+ js-tokens: 4.0.0
+ picocolors: 1.0.0
- '@babel/compat-data@7.23.5': {}
+ '@babel/compat-data@7.26.3': {}
- '@babel/core@7.24.0':
+ '@babel/core@7.26.0':
dependencies:
'@ampproject/remapping': 2.2.1
- '@babel/code-frame': 7.23.5
- '@babel/generator': 7.23.6
- '@babel/helper-compilation-targets': 7.23.6
- '@babel/helper-module-transforms': 7.23.3(@babel/core@7.24.0)
- '@babel/helpers': 7.24.0
- '@babel/parser': 7.24.0
- '@babel/template': 7.24.0
- '@babel/traverse': 7.24.0
- '@babel/types': 7.24.0
+ '@babel/code-frame': 7.26.2
+ '@babel/generator': 7.26.3
+ '@babel/helper-compilation-targets': 7.25.9
+ '@babel/helper-module-transforms': 7.26.0(@babel/core@7.26.0)
+ '@babel/helpers': 7.26.0
+ '@babel/parser': 7.26.3
+ '@babel/template': 7.25.9
+ '@babel/traverse': 7.26.3
+ '@babel/types': 7.26.3
convert-source-map: 2.0.0
- debug: 4.3.4
+ debug: 4.3.7
gensync: 1.0.0-beta.2
json5: 2.2.3
semver: 6.3.1
transitivePeerDependencies:
- supports-color
- '@babel/generator@7.23.6':
+ '@babel/generator@7.26.3':
dependencies:
- '@babel/types': 7.24.0
- '@jridgewell/gen-mapping': 0.3.3
- '@jridgewell/trace-mapping': 0.3.20
- jsesc: 2.5.2
+ '@babel/parser': 7.26.3
+ '@babel/types': 7.26.3
+ '@jridgewell/gen-mapping': 0.3.5
+ '@jridgewell/trace-mapping': 0.3.25
+ jsesc: 3.0.2
- '@babel/helper-annotate-as-pure@7.22.5':
+ '@babel/helper-annotate-as-pure@7.25.9':
dependencies:
- '@babel/types': 7.24.0
+ '@babel/types': 7.26.3
- '@babel/helper-compilation-targets@7.23.6':
+ '@babel/helper-compilation-targets@7.25.9':
dependencies:
- '@babel/compat-data': 7.23.5
- '@babel/helper-validator-option': 7.23.5
- browserslist: 4.23.0
+ '@babel/compat-data': 7.26.3
+ '@babel/helper-validator-option': 7.25.9
+ browserslist: 4.24.2
lru-cache: 5.1.1
semver: 6.3.1
- '@babel/helper-environment-visitor@7.22.20': {}
-
- '@babel/helper-function-name@7.23.0':
- dependencies:
- '@babel/template': 7.24.0
- '@babel/types': 7.24.0
-
- '@babel/helper-hoist-variables@7.22.5':
- dependencies:
- '@babel/types': 7.24.0
-
- '@babel/helper-module-imports@7.22.15':
- dependencies:
- '@babel/types': 7.24.0
-
- '@babel/helper-module-transforms@7.23.3(@babel/core@7.24.0)':
+ '@babel/helper-module-imports@7.25.9':
dependencies:
- '@babel/core': 7.24.0
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-module-imports': 7.22.15
- '@babel/helper-simple-access': 7.22.5
- '@babel/helper-split-export-declaration': 7.22.6
- '@babel/helper-validator-identifier': 7.22.20
-
- '@babel/helper-plugin-utils@7.22.5': {}
+ '@babel/traverse': 7.26.3
+ '@babel/types': 7.26.3
+ transitivePeerDependencies:
+ - supports-color
- '@babel/helper-simple-access@7.22.5':
+ '@babel/helper-module-transforms@7.26.0(@babel/core@7.26.0)':
dependencies:
- '@babel/types': 7.24.0
+ '@babel/core': 7.26.0
+ '@babel/helper-module-imports': 7.25.9
+ '@babel/helper-validator-identifier': 7.25.9
+ '@babel/traverse': 7.26.3
+ transitivePeerDependencies:
+ - supports-color
- '@babel/helper-split-export-declaration@7.22.6':
- dependencies:
- '@babel/types': 7.24.0
+ '@babel/helper-plugin-utils@7.25.9': {}
- '@babel/helper-string-parser@7.23.4': {}
+ '@babel/helper-string-parser@7.25.9': {}
- '@babel/helper-validator-identifier@7.22.20': {}
+ '@babel/helper-validator-identifier@7.25.9': {}
- '@babel/helper-validator-option@7.23.5': {}
+ '@babel/helper-validator-option@7.25.9': {}
- '@babel/helpers@7.24.0':
+ '@babel/helpers@7.26.0':
dependencies:
- '@babel/template': 7.24.0
- '@babel/traverse': 7.24.0
- '@babel/types': 7.24.0
- transitivePeerDependencies:
- - supports-color
+ '@babel/template': 7.25.9
+ '@babel/types': 7.26.3
- '@babel/highlight@7.23.4':
+ '@babel/parser@7.24.0':
dependencies:
- '@babel/helper-validator-identifier': 7.22.20
- chalk: 2.4.2
- js-tokens: 4.0.0
+ '@babel/types': 7.26.3
- '@babel/parser@7.24.0':
+ '@babel/parser@7.26.3':
dependencies:
- '@babel/types': 7.24.0
+ '@babel/types': 7.26.3
- '@babel/plugin-syntax-jsx@7.22.5(@babel/core@7.24.0)':
+ '@babel/plugin-syntax-jsx@7.25.9(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.24.0
- '@babel/helper-plugin-utils': 7.22.5
+ '@babel/core': 7.26.0
+ '@babel/helper-plugin-utils': 7.25.9
- '@babel/plugin-transform-react-jsx@7.22.15(@babel/core@7.24.0)':
+ '@babel/plugin-transform-react-jsx@7.25.9(@babel/core@7.26.0)':
dependencies:
- '@babel/core': 7.24.0
- '@babel/helper-annotate-as-pure': 7.22.5
- '@babel/helper-module-imports': 7.22.15
- '@babel/helper-plugin-utils': 7.22.5
- '@babel/plugin-syntax-jsx': 7.22.5(@babel/core@7.24.0)
- '@babel/types': 7.24.0
+ '@babel/core': 7.26.0
+ '@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/core@7.26.0)
+ '@babel/types': 7.26.3
+ transitivePeerDependencies:
+ - supports-color
- '@babel/template@7.24.0':
+ '@babel/template@7.25.9':
dependencies:
- '@babel/code-frame': 7.23.5
- '@babel/parser': 7.24.0
- '@babel/types': 7.24.0
+ '@babel/code-frame': 7.26.2
+ '@babel/parser': 7.26.3
+ '@babel/types': 7.26.3
- '@babel/traverse@7.24.0':
+ '@babel/traverse@7.26.3':
dependencies:
- '@babel/code-frame': 7.23.5
- '@babel/generator': 7.23.6
- '@babel/helper-environment-visitor': 7.22.20
- '@babel/helper-function-name': 7.23.0
- '@babel/helper-hoist-variables': 7.22.5
- '@babel/helper-split-export-declaration': 7.22.6
- '@babel/parser': 7.24.0
- '@babel/types': 7.24.0
- debug: 4.3.4
+ '@babel/code-frame': 7.26.2
+ '@babel/generator': 7.26.3
+ '@babel/parser': 7.26.3
+ '@babel/template': 7.25.9
+ '@babel/types': 7.26.3
+ debug: 4.3.7
globals: 11.12.0
transitivePeerDependencies:
- supports-color
- '@babel/types@7.24.0':
+ '@babel/types@7.26.3':
dependencies:
- '@babel/helper-string-parser': 7.23.4
- '@babel/helper-validator-identifier': 7.22.20
- to-fast-properties: 2.0.0
+ '@babel/helper-string-parser': 7.25.9
+ '@babel/helper-validator-identifier': 7.25.9
'@ctrl/tinycolor@3.6.1': {}
- '@esbuild/aix-ppc64@0.19.12':
+ '@ctrl/tinycolor@4.1.0': {}
+
+ '@emnapi/runtime@1.3.1':
+ dependencies:
+ tslib: 2.8.1
optional: true
- '@esbuild/android-arm64@0.19.12':
+ '@esbuild/aix-ppc64@0.21.5':
optional: true
- '@esbuild/android-arm@0.19.12':
+ '@esbuild/android-arm64@0.21.5':
optional: true
- '@esbuild/android-x64@0.19.12':
+ '@esbuild/android-arm@0.21.5':
optional: true
- '@esbuild/darwin-arm64@0.19.12':
+ '@esbuild/android-x64@0.21.5':
optional: true
- '@esbuild/darwin-x64@0.19.12':
+ '@esbuild/darwin-arm64@0.21.5':
optional: true
- '@esbuild/freebsd-arm64@0.19.12':
+ '@esbuild/darwin-x64@0.21.5':
optional: true
- '@esbuild/freebsd-x64@0.19.12':
+ '@esbuild/freebsd-arm64@0.21.5':
optional: true
- '@esbuild/linux-arm64@0.19.12':
+ '@esbuild/freebsd-x64@0.21.5':
optional: true
- '@esbuild/linux-arm@0.19.12':
+ '@esbuild/linux-arm64@0.21.5':
optional: true
- '@esbuild/linux-ia32@0.19.12':
+ '@esbuild/linux-arm@0.21.5':
optional: true
- '@esbuild/linux-loong64@0.19.12':
+ '@esbuild/linux-ia32@0.21.5':
optional: true
- '@esbuild/linux-mips64el@0.19.12':
+ '@esbuild/linux-loong64@0.21.5':
optional: true
- '@esbuild/linux-ppc64@0.19.12':
+ '@esbuild/linux-mips64el@0.21.5':
optional: true
- '@esbuild/linux-riscv64@0.19.12':
+ '@esbuild/linux-ppc64@0.21.5':
optional: true
- '@esbuild/linux-s390x@0.19.12':
+ '@esbuild/linux-riscv64@0.21.5':
optional: true
- '@esbuild/linux-x64@0.19.12':
+ '@esbuild/linux-s390x@0.21.5':
optional: true
- '@esbuild/netbsd-x64@0.19.12':
+ '@esbuild/linux-x64@0.21.5':
optional: true
- '@esbuild/openbsd-x64@0.19.12':
+ '@esbuild/netbsd-x64@0.21.5':
optional: true
- '@esbuild/sunos-x64@0.19.12':
+ '@esbuild/openbsd-x64@0.21.5':
optional: true
- '@esbuild/win32-arm64@0.19.12':
+ '@esbuild/sunos-x64@0.21.5':
optional: true
- '@esbuild/win32-ia32@0.19.12':
+ '@esbuild/win32-arm64@0.21.5':
optional: true
- '@esbuild/win32-x64@0.19.12':
+ '@esbuild/win32-ia32@0.21.5':
+ optional: true
+
+ '@esbuild/win32-x64@0.21.5':
optional: true
'@expressive-code/core@0.33.4':
@@ -2396,55 +2523,154 @@ snapshots:
postcss: 8.4.35
postcss-nested: 6.0.1(postcss@8.4.35)
+ '@expressive-code/core@0.35.6':
+ dependencies:
+ '@ctrl/tinycolor': 4.1.0
+ hast-util-select: 6.0.2
+ hast-util-to-html: 9.0.3
+ hast-util-to-text: 4.0.2
+ hastscript: 9.0.0
+ postcss: 8.4.49
+ postcss-nested: 6.0.1(postcss@8.4.49)
+ unist-util-visit: 5.0.0
+ unist-util-visit-parents: 6.0.1
+
'@expressive-code/plugin-collapsible-sections@0.33.4':
dependencies:
'@expressive-code/core': 0.33.4
hast-util-select: 5.0.5
hastscript: 7.2.0
- '@expressive-code/plugin-frames@0.33.4':
+ '@expressive-code/plugin-frames@0.35.6':
dependencies:
- '@expressive-code/core': 0.33.4
- hastscript: 7.2.0
+ '@expressive-code/core': 0.35.6
'@expressive-code/plugin-line-numbers@0.33.4':
dependencies:
'@expressive-code/core': 0.33.4
hastscript: 7.2.0
- '@expressive-code/plugin-shiki@0.33.4':
+ '@expressive-code/plugin-shiki@0.35.6':
dependencies:
- '@expressive-code/core': 0.33.4
+ '@expressive-code/core': 0.35.6
shiki: 1.1.7
- '@expressive-code/plugin-text-markers@0.33.4':
+ '@expressive-code/plugin-text-markers@0.35.6':
dependencies:
- '@expressive-code/core': 0.33.4
- hastscript: 7.2.0
- unist-util-visit-parents: 5.1.3
+ '@expressive-code/core': 0.35.6
'@fontsource/ibm-plex-mono@5.0.8': {}
'@fontsource/ibm-plex-serif@5.0.8': {}
+ '@img/sharp-darwin-arm64@0.33.5':
+ optionalDependencies:
+ '@img/sharp-libvips-darwin-arm64': 1.0.4
+ optional: true
+
+ '@img/sharp-darwin-x64@0.33.5':
+ optionalDependencies:
+ '@img/sharp-libvips-darwin-x64': 1.0.4
+ optional: true
+
+ '@img/sharp-libvips-darwin-arm64@1.0.4':
+ optional: true
+
+ '@img/sharp-libvips-darwin-x64@1.0.4':
+ optional: true
+
+ '@img/sharp-libvips-linux-arm64@1.0.4':
+ optional: true
+
+ '@img/sharp-libvips-linux-arm@1.0.5':
+ optional: true
+
+ '@img/sharp-libvips-linux-s390x@1.0.4':
+ optional: true
+
+ '@img/sharp-libvips-linux-x64@1.0.4':
+ optional: true
+
+ '@img/sharp-libvips-linuxmusl-arm64@1.0.4':
+ optional: true
+
+ '@img/sharp-libvips-linuxmusl-x64@1.0.4':
+ optional: true
+
+ '@img/sharp-linux-arm64@0.33.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-arm64': 1.0.4
+ optional: true
+
+ '@img/sharp-linux-arm@0.33.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-arm': 1.0.5
+ optional: true
+
+ '@img/sharp-linux-s390x@0.33.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-s390x': 1.0.4
+ optional: true
+
+ '@img/sharp-linux-x64@0.33.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linux-x64': 1.0.4
+ optional: true
+
+ '@img/sharp-linuxmusl-arm64@0.33.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
+ optional: true
+
+ '@img/sharp-linuxmusl-x64@0.33.5':
+ optionalDependencies:
+ '@img/sharp-libvips-linuxmusl-x64': 1.0.4
+ optional: true
+
+ '@img/sharp-wasm32@0.33.5':
+ dependencies:
+ '@emnapi/runtime': 1.3.1
+ optional: true
+
+ '@img/sharp-win32-ia32@0.33.5':
+ optional: true
+
+ '@img/sharp-win32-x64@0.33.5':
+ optional: true
+
'@jridgewell/gen-mapping@0.3.3':
dependencies:
'@jridgewell/set-array': 1.1.2
'@jridgewell/sourcemap-codec': 1.4.15
'@jridgewell/trace-mapping': 0.3.20
+ '@jridgewell/gen-mapping@0.3.5':
+ dependencies:
+ '@jridgewell/set-array': 1.2.1
+ '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/trace-mapping': 0.3.25
+
'@jridgewell/resolve-uri@3.1.1': {}
'@jridgewell/set-array@1.1.2': {}
+ '@jridgewell/set-array@1.2.1': {}
+
'@jridgewell/sourcemap-codec@1.4.15': {}
+ '@jridgewell/sourcemap-codec@1.5.0': {}
+
'@jridgewell/trace-mapping@0.3.20':
dependencies:
'@jridgewell/resolve-uri': 3.1.1
'@jridgewell/sourcemap-codec': 1.4.15
- '@mdx-js/mdx@3.0.1':
+ '@jridgewell/trace-mapping@0.3.25':
+ dependencies:
+ '@jridgewell/resolve-uri': 3.1.1
+ '@jridgewell/sourcemap-codec': 1.4.15
+
+ '@mdx-js/mdx@3.1.0(acorn@8.14.0)':
dependencies:
'@types/estree': 1.0.5
'@types/estree-jsx': 1.0.2
@@ -2452,28 +2678,28 @@ snapshots:
'@types/mdx': 2.0.9
collapse-white-space: 2.1.0
devlop: 1.1.0
- estree-util-build-jsx: 3.0.1
estree-util-is-identifier-name: 3.0.0
- estree-util-to-js: 2.0.0
+ estree-util-scope: 1.0.0
estree-walker: 3.0.3
- hast-util-to-estree: 3.1.0
hast-util-to-jsx-runtime: 2.3.0
markdown-extensions: 2.0.0
- periscopic: 3.1.0
+ recma-build-jsx: 1.0.0
+ recma-jsx: 1.0.0(acorn@8.14.0)
+ recma-stringify: 1.0.0
+ rehype-recma: 1.0.0
remark-mdx: 3.0.1
remark-parse: 11.0.0
remark-rehype: 11.1.0
source-map: 0.7.4
- unified: 11.0.4
+ unified: 11.0.5
unist-util-position-from-estree: 2.0.0
unist-util-stringify-position: 4.0.0
unist-util-visit: 5.0.0
- vfile: 6.0.1
+ vfile: 6.0.3
transitivePeerDependencies:
+ - acorn
- supports-color
- '@medv/finder@3.1.0': {}
-
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -2486,6 +2712,8 @@ snapshots:
'@nodelib/fs.scandir': 2.1.5
fastq: 1.15.0
+ '@oslojs/encoding@1.1.0': {}
+
'@pagefind/darwin-arm64@1.0.3':
optional: true
@@ -2503,47 +2731,97 @@ snapshots:
'@pagefind/windows-x64@1.0.3':
optional: true
- '@rollup/rollup-android-arm-eabi@4.12.0':
+ '@rollup/pluginutils@5.1.3(rollup@4.28.0)':
+ dependencies:
+ '@types/estree': 1.0.5
+ estree-walker: 2.0.2
+ picomatch: 4.0.2
+ optionalDependencies:
+ rollup: 4.28.0
+
+ '@rollup/rollup-android-arm-eabi@4.28.0':
optional: true
- '@rollup/rollup-android-arm64@4.12.0':
+ '@rollup/rollup-android-arm64@4.28.0':
optional: true
- '@rollup/rollup-darwin-arm64@4.12.0':
+ '@rollup/rollup-darwin-arm64@4.28.0':
optional: true
- '@rollup/rollup-darwin-x64@4.12.0':
+ '@rollup/rollup-darwin-x64@4.28.0':
optional: true
- '@rollup/rollup-linux-arm-gnueabihf@4.12.0':
+ '@rollup/rollup-freebsd-arm64@4.28.0':
optional: true
- '@rollup/rollup-linux-arm64-gnu@4.12.0':
+ '@rollup/rollup-freebsd-x64@4.28.0':
optional: true
- '@rollup/rollup-linux-arm64-musl@4.12.0':
+ '@rollup/rollup-linux-arm-gnueabihf@4.28.0':
optional: true
- '@rollup/rollup-linux-riscv64-gnu@4.12.0':
+ '@rollup/rollup-linux-arm-musleabihf@4.28.0':
optional: true
- '@rollup/rollup-linux-x64-gnu@4.12.0':
+ '@rollup/rollup-linux-arm64-gnu@4.28.0':
optional: true
- '@rollup/rollup-linux-x64-musl@4.12.0':
+ '@rollup/rollup-linux-arm64-musl@4.28.0':
optional: true
- '@rollup/rollup-win32-arm64-msvc@4.12.0':
+ '@rollup/rollup-linux-powerpc64le-gnu@4.28.0':
optional: true
- '@rollup/rollup-win32-ia32-msvc@4.12.0':
+ '@rollup/rollup-linux-riscv64-gnu@4.28.0':
optional: true
- '@rollup/rollup-win32-x64-msvc@4.12.0':
+ '@rollup/rollup-linux-s390x-gnu@4.28.0':
+ optional: true
+
+ '@rollup/rollup-linux-x64-gnu@4.28.0':
+ optional: true
+
+ '@rollup/rollup-linux-x64-musl@4.28.0':
+ optional: true
+
+ '@rollup/rollup-win32-arm64-msvc@4.28.0':
+ optional: true
+
+ '@rollup/rollup-win32-ia32-msvc@4.28.0':
+ optional: true
+
+ '@rollup/rollup-win32-x64-msvc@4.28.0':
optional: true
'@shikijs/core@1.1.7': {}
+ '@shikijs/core@1.24.0':
+ dependencies:
+ '@shikijs/engine-javascript': 1.24.0
+ '@shikijs/engine-oniguruma': 1.24.0
+ '@shikijs/types': 1.24.0
+ '@shikijs/vscode-textmate': 9.3.0
+ '@types/hast': 3.0.4
+ hast-util-to-html: 9.0.3
+
+ '@shikijs/engine-javascript@1.24.0':
+ dependencies:
+ '@shikijs/types': 1.24.0
+ '@shikijs/vscode-textmate': 9.3.0
+ oniguruma-to-es: 0.7.0
+
+ '@shikijs/engine-oniguruma@1.24.0':
+ dependencies:
+ '@shikijs/types': 1.24.0
+ '@shikijs/vscode-textmate': 9.3.0
+
+ '@shikijs/types@1.24.0':
+ dependencies:
+ '@shikijs/vscode-textmate': 9.3.0
+ '@types/hast': 3.0.4
+
+ '@shikijs/vscode-textmate@9.3.0': {}
+
'@types/acorn@4.0.6':
dependencies:
'@types/estree': 1.0.5
@@ -2551,23 +2829,25 @@ snapshots:
'@types/babel__core@7.20.5':
dependencies:
'@babel/parser': 7.24.0
- '@babel/types': 7.24.0
+ '@babel/types': 7.26.3
'@types/babel__generator': 7.6.6
'@types/babel__template': 7.4.3
'@types/babel__traverse': 7.20.3
'@types/babel__generator@7.6.6':
dependencies:
- '@babel/types': 7.24.0
+ '@babel/types': 7.26.3
'@types/babel__template@7.4.3':
dependencies:
'@babel/parser': 7.24.0
- '@babel/types': 7.24.0
+ '@babel/types': 7.26.3
'@types/babel__traverse@7.20.3':
dependencies:
- '@babel/types': 7.24.0
+ '@babel/types': 7.26.3
+
+ '@types/cookie@0.6.0': {}
'@types/debug@4.1.8':
dependencies:
@@ -2579,6 +2859,8 @@ snapshots:
'@types/estree@1.0.5': {}
+ '@types/estree@1.0.6': {}
+
'@types/hast@2.3.5':
dependencies:
'@types/unist': 2.0.7
@@ -2599,13 +2881,17 @@ snapshots:
dependencies:
'@types/unist': 3.0.1
+ '@types/mdast@4.0.4':
+ dependencies:
+ '@types/unist': 3.0.1
+
'@types/mdx@2.0.9': {}
'@types/ms@0.7.31': {}
- '@types/nlcst@1.0.1':
+ '@types/nlcst@2.0.3':
dependencies:
- '@types/unist': 2.0.9
+ '@types/unist': 3.0.1
'@types/node@17.0.45': {}
@@ -2625,11 +2911,11 @@ snapshots:
'@ungap/structured-clone@1.2.0': {}
- acorn-jsx@5.3.2(acorn@8.11.3):
+ acorn-jsx@5.3.2(acorn@8.14.0):
dependencies:
- acorn: 8.11.3
+ acorn: 8.14.0
- acorn@8.11.3: {}
+ acorn@8.14.0: {}
ansi-align@3.0.1:
dependencies:
@@ -2639,17 +2925,8 @@ snapshots:
ansi-regex@6.0.1: {}
- ansi-styles@3.2.1:
- dependencies:
- color-convert: 1.9.3
-
ansi-styles@6.2.1: {}
- anymatch@3.1.3:
- dependencies:
- normalize-path: 3.0.0
- picomatch: 2.3.1
-
arg@5.0.2: {}
argparse@1.0.10:
@@ -2658,102 +2935,97 @@ snapshots:
argparse@2.0.1: {}
- aria-query@5.3.0:
- dependencies:
- dequal: 2.0.3
+ aria-query@5.3.2: {}
array-iterate@2.0.1: {}
astring@1.8.6: {}
- astro-expressive-code@0.33.4(astro@4.4.9):
+ astro-expressive-code@0.35.6(astro@4.16.16(rollup@4.28.0)(typescript@5.7.2)):
dependencies:
- astro: 4.4.9
- hast-util-to-html: 8.0.4
- remark-expressive-code: 0.33.4
+ astro: 4.16.16(rollup@4.28.0)(typescript@5.7.2)
+ rehype-expressive-code: 0.35.6
- astro@4.4.9:
+ astro@4.16.16(rollup@4.28.0)(typescript@5.7.2):
dependencies:
- '@astrojs/compiler': 2.6.0
- '@astrojs/internal-helpers': 0.2.1
- '@astrojs/markdown-remark': 4.2.1
- '@astrojs/telemetry': 3.0.4
- '@babel/core': 7.24.0
- '@babel/generator': 7.23.6
- '@babel/parser': 7.24.0
- '@babel/plugin-transform-react-jsx': 7.22.15(@babel/core@7.24.0)
- '@babel/traverse': 7.24.0
- '@babel/types': 7.24.0
- '@medv/finder': 3.1.0
+ '@astrojs/compiler': 2.10.3
+ '@astrojs/internal-helpers': 0.4.1
+ '@astrojs/markdown-remark': 5.3.0
+ '@astrojs/telemetry': 3.1.0
+ '@babel/core': 7.26.0
+ '@babel/plugin-transform-react-jsx': 7.25.9(@babel/core@7.26.0)
+ '@babel/types': 7.26.3
+ '@oslojs/encoding': 1.1.0
+ '@rollup/pluginutils': 5.1.3(rollup@4.28.0)
'@types/babel__core': 7.20.5
- acorn: 8.11.3
- aria-query: 5.3.0
- axobject-query: 4.0.0
- boxen: 7.1.1
- chokidar: 3.5.3
- ci-info: 4.0.0
- clsx: 2.0.0
+ '@types/cookie': 0.6.0
+ acorn: 8.14.0
+ aria-query: 5.3.2
+ axobject-query: 4.1.0
+ boxen: 8.0.1
+ ci-info: 4.1.0
+ clsx: 2.1.1
common-ancestor-path: 1.0.1
- cookie: 0.6.0
+ cookie: 0.7.2
cssesc: 3.0.0
- debug: 4.3.4
+ debug: 4.3.7
deterministic-object-hash: 2.0.2
- devalue: 4.3.2
- diff: 5.1.0
+ devalue: 5.1.1
+ diff: 5.2.0
dlv: 1.1.3
- dset: 3.1.3
- es-module-lexer: 1.4.1
- esbuild: 0.19.12
+ dset: 3.1.4
+ es-module-lexer: 1.5.4
+ esbuild: 0.21.5
estree-walker: 3.0.3
- execa: 8.0.1
fast-glob: 3.3.2
- flattie: 1.1.0
+ flattie: 1.1.1
github-slugger: 2.0.0
gray-matter: 4.0.3
html-escaper: 3.0.3
http-cache-semantics: 4.1.1
js-yaml: 4.1.0
kleur: 4.1.5
- magic-string: 0.30.5
- mdast-util-to-hast: 13.0.2
- mime: 3.0.0
- ora: 7.0.1
- p-limit: 5.0.0
+ magic-string: 0.30.14
+ magicast: 0.3.5
+ micromatch: 4.0.8
+ mrmime: 2.0.0
+ neotraverse: 0.6.18
+ ora: 8.1.1
+ p-limit: 6.1.0
p-queue: 8.0.1
- path-to-regexp: 6.2.1
- preferred-pm: 3.1.2
+ preferred-pm: 4.0.0
prompts: 2.4.2
- rehype: 13.0.1
- resolve: 1.22.8
- semver: 7.5.4
- shikiji: 0.9.19
- shikiji-core: 0.9.19
- string-width: 7.1.0
- strip-ansi: 7.1.0
- tsconfck: 3.0.0
+ rehype: 13.0.2
+ semver: 7.6.3
+ shiki: 1.24.0
+ tinyexec: 0.3.1
+ tsconfck: 3.1.4(typescript@5.7.2)
unist-util-visit: 5.0.0
- vfile: 6.0.1
- vite: 5.1.4
- vitefu: 0.2.5(vite@5.1.4)
- which-pm: 2.1.1
+ vfile: 6.0.3
+ vite: 5.4.11
+ vitefu: 1.0.4(vite@5.4.11)
+ which-pm: 3.0.0
+ xxhash-wasm: 1.1.0
yargs-parser: 21.1.1
- zod: 3.22.4
+ zod: 3.23.8
+ zod-to-json-schema: 3.23.5(zod@3.23.8)
+ zod-to-ts: 1.2.0(typescript@5.7.2)(zod@3.23.8)
optionalDependencies:
- sharp: 0.32.6
+ sharp: 0.33.5
transitivePeerDependencies:
- '@types/node'
- less
- lightningcss
+ - rollup
- sass
+ - sass-embedded
- stylus
- sugarss
- supports-color
- terser
- typescript
- axobject-query@4.0.0:
- dependencies:
- dequal: 2.0.3
+ axobject-query@4.1.0: {}
b4a@1.6.4: {}
@@ -2771,66 +3043,47 @@ snapshots:
is-alphanumerical: 2.0.1
is-decimal: 2.0.1
- binary-extensions@2.2.0: {}
-
bl@4.1.0:
dependencies:
buffer: 5.7.1
inherits: 2.0.4
readable-stream: 3.6.2
- bl@5.1.0:
- dependencies:
- buffer: 6.0.3
- inherits: 2.0.4
- readable-stream: 3.6.2
-
boolbase@1.0.0: {}
- boxen@7.1.1:
+ boxen@8.0.1:
dependencies:
ansi-align: 3.0.1
- camelcase: 7.0.1
+ camelcase: 8.0.0
chalk: 5.3.0
cli-boxes: 3.0.0
- string-width: 5.1.2
- type-fest: 2.19.0
- widest-line: 4.0.1
- wrap-ansi: 8.1.0
+ string-width: 7.2.0
+ type-fest: 4.30.0
+ widest-line: 5.0.0
+ wrap-ansi: 9.0.0
- braces@3.0.2:
+ braces@3.0.3:
dependencies:
- fill-range: 7.0.1
+ fill-range: 7.1.1
- browserslist@4.23.0:
+ browserslist@4.24.2:
dependencies:
- caniuse-lite: 1.0.30001591
- electron-to-chromium: 1.4.686
- node-releases: 2.0.14
- update-browserslist-db: 1.0.13(browserslist@4.23.0)
+ caniuse-lite: 1.0.30001686
+ electron-to-chromium: 1.5.68
+ node-releases: 2.0.18
+ update-browserslist-db: 1.1.1(browserslist@4.24.2)
buffer@5.7.1:
dependencies:
base64-js: 1.5.1
ieee754: 1.2.1
- buffer@6.0.3:
- dependencies:
- base64-js: 1.5.1
- ieee754: 1.2.1
-
- camelcase@7.0.1: {}
+ camelcase@8.0.0: {}
- caniuse-lite@1.0.30001591: {}
+ caniuse-lite@1.0.30001686: {}
ccount@2.0.1: {}
- chalk@2.4.2:
- dependencies:
- ansi-styles: 3.2.1
- escape-string-regexp: 1.0.5
- supports-color: 5.5.0
-
chalk@5.3.0: {}
character-entities-html4@2.1.0: {}
@@ -2841,46 +3094,26 @@ snapshots:
character-reference-invalid@2.0.1: {}
- chokidar@3.5.3:
- dependencies:
- anymatch: 3.1.3
- braces: 3.0.2
- glob-parent: 5.1.2
- is-binary-path: 2.1.0
- is-glob: 4.0.3
- normalize-path: 3.0.0
- readdirp: 3.6.0
- optionalDependencies:
- fsevents: 2.3.3
-
chownr@1.1.4: {}
- ci-info@3.9.0: {}
-
- ci-info@4.0.0: {}
+ ci-info@4.1.0: {}
cli-boxes@3.0.0: {}
- cli-cursor@4.0.0:
+ cli-cursor@5.0.0:
dependencies:
- restore-cursor: 4.0.0
+ restore-cursor: 5.1.0
- cli-spinners@2.9.1: {}
+ cli-spinners@2.9.2: {}
- clsx@2.0.0: {}
+ clsx@2.1.1: {}
collapse-white-space@2.1.0: {}
- color-convert@1.9.3:
- dependencies:
- color-name: 1.1.3
-
color-convert@2.0.1:
dependencies:
color-name: 1.1.4
- color-name@1.1.3: {}
-
color-name@1.1.4: {}
color-string@1.9.1:
@@ -2899,13 +3132,7 @@ snapshots:
convert-source-map@2.0.0: {}
- cookie@0.6.0: {}
-
- cross-spawn@7.0.3:
- dependencies:
- path-key: 3.1.1
- shebang-command: 2.0.0
- which: 2.0.2
+ cookie@0.7.2: {}
css-selector-parser@1.4.1: {}
@@ -2917,6 +3144,10 @@ snapshots:
dependencies:
ms: 2.1.2
+ debug@4.3.7:
+ dependencies:
+ ms: 2.1.3
+
decode-named-character-reference@1.0.2:
dependencies:
character-entities: 2.0.2
@@ -2931,71 +3162,84 @@ snapshots:
detect-libc@2.0.2: {}
+ detect-libc@2.0.3:
+ optional: true
+
deterministic-object-hash@2.0.2:
dependencies:
base-64: 1.0.0
- devalue@4.3.2: {}
+ devalue@5.1.1: {}
devlop@1.1.0:
dependencies:
dequal: 2.0.3
- diff@5.1.0: {}
+ diff@5.2.0: {}
direction@2.0.1: {}
dlv@1.1.3: {}
- dset@3.1.3: {}
+ dset@3.1.4: {}
- eastasianwidth@0.2.0: {}
+ electron-to-chromium@1.5.68: {}
- electron-to-chromium@1.4.686: {}
+ emoji-regex-xs@1.0.0: {}
emoji-regex@10.3.0: {}
emoji-regex@8.0.0: {}
- emoji-regex@9.2.2: {}
-
end-of-stream@1.4.4:
dependencies:
once: 1.4.0
entities@4.5.0: {}
- es-module-lexer@1.4.1: {}
+ es-module-lexer@1.5.4: {}
+
+ esast-util-from-estree@2.0.0:
+ dependencies:
+ '@types/estree-jsx': 1.0.2
+ devlop: 1.1.0
+ estree-util-visit: 2.0.0
+ unist-util-position-from-estree: 2.0.0
+
+ esast-util-from-js@2.0.1:
+ dependencies:
+ '@types/estree-jsx': 1.0.2
+ acorn: 8.14.0
+ esast-util-from-estree: 2.0.0
+ vfile-message: 4.0.2
- esbuild@0.19.12:
+ esbuild@0.21.5:
optionalDependencies:
- '@esbuild/aix-ppc64': 0.19.12
- '@esbuild/android-arm': 0.19.12
- '@esbuild/android-arm64': 0.19.12
- '@esbuild/android-x64': 0.19.12
- '@esbuild/darwin-arm64': 0.19.12
- '@esbuild/darwin-x64': 0.19.12
- '@esbuild/freebsd-arm64': 0.19.12
- '@esbuild/freebsd-x64': 0.19.12
- '@esbuild/linux-arm': 0.19.12
- '@esbuild/linux-arm64': 0.19.12
- '@esbuild/linux-ia32': 0.19.12
- '@esbuild/linux-loong64': 0.19.12
- '@esbuild/linux-mips64el': 0.19.12
- '@esbuild/linux-ppc64': 0.19.12
- '@esbuild/linux-riscv64': 0.19.12
- '@esbuild/linux-s390x': 0.19.12
- '@esbuild/linux-x64': 0.19.12
- '@esbuild/netbsd-x64': 0.19.12
- '@esbuild/openbsd-x64': 0.19.12
- '@esbuild/sunos-x64': 0.19.12
- '@esbuild/win32-arm64': 0.19.12
- '@esbuild/win32-ia32': 0.19.12
- '@esbuild/win32-x64': 0.19.12
-
- escalade@3.1.1: {}
-
- escape-string-regexp@1.0.5: {}
+ '@esbuild/aix-ppc64': 0.21.5
+ '@esbuild/android-arm': 0.21.5
+ '@esbuild/android-arm64': 0.21.5
+ '@esbuild/android-x64': 0.21.5
+ '@esbuild/darwin-arm64': 0.21.5
+ '@esbuild/darwin-x64': 0.21.5
+ '@esbuild/freebsd-arm64': 0.21.5
+ '@esbuild/freebsd-x64': 0.21.5
+ '@esbuild/linux-arm': 0.21.5
+ '@esbuild/linux-arm64': 0.21.5
+ '@esbuild/linux-ia32': 0.21.5
+ '@esbuild/linux-loong64': 0.21.5
+ '@esbuild/linux-mips64el': 0.21.5
+ '@esbuild/linux-ppc64': 0.21.5
+ '@esbuild/linux-riscv64': 0.21.5
+ '@esbuild/linux-s390x': 0.21.5
+ '@esbuild/linux-x64': 0.21.5
+ '@esbuild/netbsd-x64': 0.21.5
+ '@esbuild/openbsd-x64': 0.21.5
+ '@esbuild/sunos-x64': 0.21.5
+ '@esbuild/win32-arm64': 0.21.5
+ '@esbuild/win32-ia32': 0.21.5
+ '@esbuild/win32-x64': 0.21.5
+
+ escalade@3.2.0: {}
escape-string-regexp@5.0.0: {}
@@ -3014,6 +3258,11 @@ snapshots:
estree-util-is-identifier-name@3.0.0: {}
+ estree-util-scope@1.0.0:
+ dependencies:
+ '@types/estree': 1.0.5
+ devlop: 1.1.0
+
estree-util-to-js@2.0.0:
dependencies:
'@types/estree-jsx': 1.0.2
@@ -3025,32 +3274,22 @@ snapshots:
'@types/estree-jsx': 1.0.2
'@types/unist': 3.0.1
+ estree-walker@2.0.2: {}
+
estree-walker@3.0.3:
dependencies:
'@types/estree': 1.0.5
eventemitter3@5.0.1: {}
- execa@8.0.1:
- dependencies:
- cross-spawn: 7.0.3
- get-stream: 8.0.1
- human-signals: 5.0.0
- is-stream: 3.0.0
- merge-stream: 2.0.0
- npm-run-path: 5.1.0
- onetime: 6.0.0
- signal-exit: 4.1.0
- strip-final-newline: 3.0.0
-
expand-template@2.0.3: {}
- expressive-code@0.33.4:
+ expressive-code@0.35.6:
dependencies:
- '@expressive-code/core': 0.33.4
- '@expressive-code/plugin-frames': 0.33.4
- '@expressive-code/plugin-shiki': 0.33.4
- '@expressive-code/plugin-text-markers': 0.33.4
+ '@expressive-code/core': 0.35.6
+ '@expressive-code/plugin-frames': 0.35.6
+ '@expressive-code/plugin-shiki': 0.35.6
+ '@expressive-code/plugin-text-markers': 0.35.6
extend-shallow@2.0.1:
dependencies:
@@ -3066,46 +3305,39 @@ snapshots:
'@nodelib/fs.walk': 1.2.8
glob-parent: 5.1.2
merge2: 1.4.1
- micromatch: 4.0.5
+ micromatch: 4.0.8
fastq@1.15.0:
dependencies:
reusify: 1.0.4
- fill-range@7.0.1:
+ fill-range@7.1.1:
dependencies:
to-regex-range: 5.0.1
+ find-up-simple@1.0.0: {}
+
find-up@4.1.0:
dependencies:
locate-path: 5.0.0
path-exists: 4.0.0
- find-up@5.0.0:
- dependencies:
- locate-path: 6.0.0
- path-exists: 4.0.0
-
find-yarn-workspace-root2@1.2.16:
dependencies:
- micromatch: 4.0.5
+ micromatch: 4.0.8
pkg-dir: 4.2.0
- flattie@1.1.0: {}
+ flattie@1.1.1: {}
fs-constants@1.0.0: {}
fsevents@2.3.3:
optional: true
- function-bind@1.1.2: {}
-
gensync@1.0.0-beta.2: {}
get-east-asian-width@1.2.0: {}
- get-stream@8.0.1: {}
-
github-from-package@0.0.0: {}
github-slugger@2.0.0: {}
@@ -3125,11 +3357,20 @@ snapshots:
section-matter: 1.0.0
strip-bom-string: 1.0.0
- has-flag@3.0.0: {}
+ hast-util-embedded@3.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+ hast-util-is-element: 3.0.0
- hasown@2.0.0:
+ hast-util-format@1.1.0:
dependencies:
- function-bind: 1.1.2
+ '@types/hast': 3.0.4
+ hast-util-embedded: 3.0.0
+ hast-util-minify-whitespace: 1.0.1
+ hast-util-phrasing: 3.0.1
+ hast-util-whitespace: 3.0.0
+ html-whitespace-sensitive-tag-names: 3.0.1
+ unist-util-visit-parents: 6.0.1
hast-util-from-html@2.0.1:
dependencies:
@@ -3137,7 +3378,16 @@ snapshots:
devlop: 1.1.0
hast-util-from-parse5: 8.0.1
parse5: 7.1.2
- vfile: 6.0.1
+ vfile: 6.0.3
+ vfile-message: 4.0.2
+
+ hast-util-from-html@2.0.3:
+ dependencies:
+ '@types/hast': 3.0.4
+ devlop: 1.1.0
+ hast-util-from-parse5: 8.0.1
+ parse5: 7.1.2
+ vfile: 6.0.3
vfile-message: 4.0.2
hast-util-from-parse5@7.1.2:
@@ -3167,6 +3417,22 @@ snapshots:
dependencies:
'@types/hast': 3.0.4
+ hast-util-is-body-ok-link@3.0.1:
+ dependencies:
+ '@types/hast': 3.0.4
+
+ hast-util-is-element@3.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+
+ hast-util-minify-whitespace@1.0.1:
+ dependencies:
+ '@types/hast': 3.0.4
+ hast-util-embedded: 3.0.0
+ hast-util-is-element: 3.0.0
+ hast-util-whitespace: 3.0.0
+ unist-util-is: 6.0.0
+
hast-util-parse-selector@3.1.1:
dependencies:
'@types/hast': 2.3.5
@@ -3175,6 +3441,14 @@ snapshots:
dependencies:
'@types/hast': 3.0.0
+ hast-util-phrasing@3.0.1:
+ dependencies:
+ '@types/hast': 3.0.4
+ hast-util-embedded: 3.0.0
+ hast-util-has-property: 3.0.0
+ hast-util-is-body-ok-link: 3.0.1
+ hast-util-is-element: 3.0.0
+
hast-util-raw@7.2.3:
dependencies:
'@types/hast': 2.3.5
@@ -3292,6 +3566,20 @@ snapshots:
stringify-entities: 4.0.3
zwitch: 2.0.4
+ hast-util-to-html@9.0.3:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/unist': 3.0.1
+ ccount: 2.0.1
+ comma-separated-tokens: 2.0.3
+ hast-util-whitespace: 3.0.0
+ html-void-elements: 3.0.0
+ mdast-util-to-hast: 13.0.2
+ property-information: 6.3.0
+ space-separated-tokens: 2.0.2
+ stringify-entities: 4.0.3
+ zwitch: 2.0.4
+
hast-util-to-jsx-runtime@2.3.0:
dependencies:
'@types/estree': 1.0.5
@@ -3339,6 +3627,13 @@ snapshots:
dependencies:
'@types/hast': 3.0.4
+ hast-util-to-text@4.0.2:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/unist': 3.0.1
+ hast-util-is-element: 3.0.0
+ unist-util-find-after: 5.0.0
+
hast-util-whitespace@2.0.1: {}
hast-util-whitespace@3.0.0:
@@ -3361,19 +3656,27 @@ snapshots:
property-information: 6.2.0
space-separated-tokens: 2.0.2
+ hastscript@9.0.0:
+ dependencies:
+ '@types/hast': 3.0.4
+ comma-separated-tokens: 2.0.3
+ hast-util-parse-selector: 4.0.0
+ property-information: 6.3.0
+ space-separated-tokens: 2.0.2
+
html-escaper@3.0.3: {}
html-void-elements@2.0.1: {}
html-void-elements@3.0.0: {}
- http-cache-semantics@4.1.1: {}
+ html-whitespace-sensitive-tag-names@3.0.1: {}
- human-signals@5.0.0: {}
+ http-cache-semantics@4.1.1: {}
ieee754@1.2.1: {}
- import-meta-resolve@4.0.0: {}
+ import-meta-resolve@4.1.0: {}
inherits@2.0.4: {}
@@ -3392,16 +3695,8 @@ snapshots:
is-arrayish@0.3.2: {}
- is-binary-path@2.1.0:
- dependencies:
- binary-extensions: 2.2.0
-
is-buffer@2.0.5: {}
- is-core-module@2.13.1:
- dependencies:
- hasown: 2.0.0
-
is-decimal@2.0.1: {}
is-docker@3.0.0: {}
@@ -3428,20 +3723,14 @@ snapshots:
is-plain-obj@4.1.0: {}
- is-reference@3.0.2:
- dependencies:
- '@types/estree': 1.0.5
-
- is-stream@3.0.0: {}
-
is-unicode-supported@1.3.0: {}
+ is-unicode-supported@2.1.0: {}
+
is-wsl@3.1.0:
dependencies:
is-inside-container: 1.0.0
- isexe@2.0.0: {}
-
js-tokens@4.0.0: {}
js-yaml@3.14.1:
@@ -3453,7 +3742,7 @@ snapshots:
dependencies:
argparse: 2.0.1
- jsesc@2.5.2: {}
+ jsesc@3.0.2: {}
json5@2.2.3: {}
@@ -3474,11 +3763,7 @@ snapshots:
dependencies:
p-locate: 4.1.0
- locate-path@6.0.0:
- dependencies:
- p-locate: 5.0.0
-
- log-symbols@5.1.0:
+ log-symbols@6.0.0:
dependencies:
chalk: 5.3.0
is-unicode-supported: 1.3.0
@@ -3493,9 +3778,15 @@ snapshots:
dependencies:
yallist: 4.0.0
- magic-string@0.30.5:
+ magic-string@0.30.14:
dependencies:
- '@jridgewell/sourcemap-codec': 1.4.15
+ '@jridgewell/sourcemap-codec': 1.5.0
+
+ magicast@0.3.5:
+ dependencies:
+ '@babel/parser': 7.26.3
+ '@babel/types': 7.26.3
+ source-map-js: 1.2.1
markdown-extensions@2.0.0: {}
@@ -3509,7 +3800,7 @@ snapshots:
mdast-util-directive@3.0.0:
dependencies:
- '@types/mdast': 4.0.3
+ '@types/mdast': 4.0.4
'@types/unist': 3.0.1
devlop: 1.1.0
mdast-util-from-markdown: 2.0.0
@@ -3522,14 +3813,14 @@ snapshots:
mdast-util-find-and-replace@3.0.1:
dependencies:
- '@types/mdast': 4.0.3
+ '@types/mdast': 4.0.4
escape-string-regexp: 5.0.0
unist-util-is: 6.0.0
unist-util-visit-parents: 6.0.1
mdast-util-from-markdown@2.0.0:
dependencies:
- '@types/mdast': 4.0.3
+ '@types/mdast': 4.0.4
'@types/unist': 3.0.1
decode-named-character-reference: 1.0.2
devlop: 1.1.0
@@ -3546,7 +3837,7 @@ snapshots:
mdast-util-gfm-autolink-literal@2.0.0:
dependencies:
- '@types/mdast': 4.0.3
+ '@types/mdast': 4.0.4
ccount: 2.0.1
devlop: 1.1.0
mdast-util-find-and-replace: 3.0.1
@@ -3554,7 +3845,7 @@ snapshots:
mdast-util-gfm-footnote@2.0.0:
dependencies:
- '@types/mdast': 4.0.3
+ '@types/mdast': 4.0.4
devlop: 1.1.0
mdast-util-from-markdown: 2.0.0
mdast-util-to-markdown: 2.1.0
@@ -3564,7 +3855,7 @@ snapshots:
mdast-util-gfm-strikethrough@2.0.0:
dependencies:
- '@types/mdast': 4.0.3
+ '@types/mdast': 4.0.4
mdast-util-from-markdown: 2.0.0
mdast-util-to-markdown: 2.1.0
transitivePeerDependencies:
@@ -3572,7 +3863,7 @@ snapshots:
mdast-util-gfm-table@2.0.0:
dependencies:
- '@types/mdast': 4.0.3
+ '@types/mdast': 4.0.4
devlop: 1.1.0
markdown-table: 3.0.3
mdast-util-from-markdown: 2.0.0
@@ -3582,7 +3873,7 @@ snapshots:
mdast-util-gfm-task-list-item@2.0.0:
dependencies:
- '@types/mdast': 4.0.3
+ '@types/mdast': 4.0.4
devlop: 1.1.0
mdast-util-from-markdown: 2.0.0
mdast-util-to-markdown: 2.1.0
@@ -3605,7 +3896,7 @@ snapshots:
dependencies:
'@types/estree-jsx': 1.0.2
'@types/hast': 3.0.4
- '@types/mdast': 4.0.3
+ '@types/mdast': 4.0.4
devlop: 1.1.0
mdast-util-from-markdown: 2.0.0
mdast-util-to-markdown: 2.1.0
@@ -3616,7 +3907,7 @@ snapshots:
dependencies:
'@types/estree-jsx': 1.0.2
'@types/hast': 3.0.4
- '@types/mdast': 4.0.3
+ '@types/mdast': 4.0.4
'@types/unist': 3.0.1
ccount: 2.0.1
devlop: 1.1.0
@@ -3644,7 +3935,7 @@ snapshots:
dependencies:
'@types/estree-jsx': 1.0.2
'@types/hast': 3.0.4
- '@types/mdast': 4.0.3
+ '@types/mdast': 4.0.4
devlop: 1.1.0
mdast-util-from-markdown: 2.0.0
mdast-util-to-markdown: 2.1.0
@@ -3653,7 +3944,7 @@ snapshots:
mdast-util-phrasing@4.1.0:
dependencies:
- '@types/mdast': 4.0.3
+ '@types/mdast': 4.0.4
unist-util-is: 6.0.0
mdast-util-to-hast@13.0.2:
@@ -3669,7 +3960,7 @@ snapshots:
mdast-util-to-markdown@2.1.0:
dependencies:
- '@types/mdast': 4.0.3
+ '@types/mdast': 4.0.4
'@types/unist': 3.0.1
longest-streak: 3.1.0
mdast-util-phrasing: 4.1.0
@@ -3680,9 +3971,7 @@ snapshots:
mdast-util-to-string@4.0.0:
dependencies:
- '@types/mdast': 4.0.3
-
- merge-stream@2.0.0: {}
+ '@types/mdast': 4.0.4
merge2@1.4.1: {}
@@ -3815,8 +4104,8 @@ snapshots:
micromark-extension-mdxjs@3.0.0:
dependencies:
- acorn: 8.11.3
- acorn-jsx: 5.3.2(acorn@8.11.3)
+ acorn: 8.14.0
+ acorn-jsx: 5.3.2(acorn@8.14.0)
micromark-extension-mdx-expression: 3.0.0
micromark-extension-mdx-jsx: 3.0.0
micromark-extension-mdx-md: 2.0.0
@@ -3960,16 +4249,12 @@ snapshots:
transitivePeerDependencies:
- supports-color
- micromatch@4.0.5:
+ micromatch@4.0.8:
dependencies:
- braces: 3.0.2
+ braces: 3.0.3
picomatch: 2.3.1
- mime@3.0.0: {}
-
- mimic-fn@2.1.0: {}
-
- mimic-fn@4.0.0: {}
+ mimic-function@5.0.1: {}
mimic-response@3.1.0: {}
@@ -3977,15 +4262,21 @@ snapshots:
mkdirp-classic@0.5.3: {}
+ mrmime@2.0.0: {}
+
ms@2.1.2: {}
+ ms@2.1.3: {}
+
nanoid@3.3.7: {}
napi-build-utils@1.0.2: {}
- nlcst-to-string@3.1.1:
+ neotraverse@0.6.18: {}
+
+ nlcst-to-string@4.0.0:
dependencies:
- '@types/nlcst': 1.0.1
+ '@types/nlcst': 2.0.3
node-abi@3.47.0:
dependencies:
@@ -3993,16 +4284,10 @@ snapshots:
node-addon-api@6.1.0: {}
- node-releases@2.0.14: {}
-
- normalize-path@3.0.0: {}
+ node-releases@2.0.18: {}
not@0.1.0: {}
- npm-run-path@5.1.0:
- dependencies:
- path-key: 4.0.0
-
nth-check@2.1.1:
dependencies:
boolbase: 1.0.0
@@ -4011,46 +4296,40 @@ snapshots:
dependencies:
wrappy: 1.0.2
- onetime@5.1.2:
+ onetime@7.0.0:
dependencies:
- mimic-fn: 2.1.0
+ mimic-function: 5.0.1
- onetime@6.0.0:
+ oniguruma-to-es@0.7.0:
dependencies:
- mimic-fn: 4.0.0
+ emoji-regex-xs: 1.0.0
+ regex: 5.0.2
+ regex-recursion: 4.3.0
- ora@7.0.1:
+ ora@8.1.1:
dependencies:
chalk: 5.3.0
- cli-cursor: 4.0.0
- cli-spinners: 2.9.1
+ cli-cursor: 5.0.0
+ cli-spinners: 2.9.2
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
+ is-unicode-supported: 2.1.0
+ log-symbols: 6.0.0
+ stdin-discarder: 0.2.2
+ string-width: 7.2.0
strip-ansi: 7.1.0
p-limit@2.3.0:
dependencies:
p-try: 2.2.0
- p-limit@3.1.0:
- dependencies:
- yocto-queue: 0.1.0
-
- p-limit@5.0.0:
+ p-limit@6.1.0:
dependencies:
- yocto-queue: 1.0.0
+ yocto-queue: 1.1.1
p-locate@4.1.0:
dependencies:
p-limit: 2.3.0
- p-locate@5.0.0:
- dependencies:
- p-limit: 3.1.0
-
p-queue@8.0.1:
dependencies:
eventemitter3: 5.0.1
@@ -4079,11 +4358,14 @@ snapshots:
is-decimal: 2.0.1
is-hexadecimal: 2.0.1
- parse-latin@5.0.1:
+ parse-latin@7.0.0:
dependencies:
- nlcst-to-string: 3.1.1
- unist-util-modify-children: 3.1.1
- unist-util-visit-children: 2.0.2
+ '@types/nlcst': 2.0.3
+ '@types/unist': 3.0.1
+ nlcst-to-string: 4.0.0
+ unist-util-modify-children: 4.0.0
+ unist-util-visit-children: 3.0.0
+ vfile: 6.0.3
parse5@6.0.1: {}
@@ -4093,24 +4375,14 @@ snapshots:
path-exists@4.0.0: {}
- path-key@3.1.1: {}
-
- path-key@4.0.0: {}
-
- path-parse@1.0.7: {}
-
- path-to-regexp@6.2.1: {}
-
- periscopic@3.1.0:
- dependencies:
- '@types/estree': 1.0.5
- estree-walker: 3.0.3
- is-reference: 3.0.2
-
picocolors@1.0.0: {}
+ picocolors@1.1.1: {}
+
picomatch@2.3.1: {}
+ picomatch@4.0.2: {}
+
pify@4.0.1: {}
pkg-dir@4.2.0:
@@ -4122,6 +4394,11 @@ snapshots:
postcss: 8.4.35
postcss-selector-parser: 6.0.13
+ postcss-nested@6.0.1(postcss@8.4.49):
+ dependencies:
+ postcss: 8.4.49
+ postcss-selector-parser: 6.0.13
+
postcss-selector-parser@6.0.13:
dependencies:
cssesc: 3.0.0
@@ -4133,6 +4410,12 @@ snapshots:
picocolors: 1.0.0
source-map-js: 1.0.2
+ postcss@8.4.49:
+ dependencies:
+ nanoid: 3.3.7
+ picocolors: 1.1.1
+ source-map-js: 1.2.1
+
prebuild-install@7.1.1:
dependencies:
detect-libc: 2.0.2
@@ -4148,12 +4431,11 @@ snapshots:
tar-fs: 2.1.1
tunnel-agent: 0.6.0
- preferred-pm@3.1.2:
+ preferred-pm@4.0.0:
dependencies:
- find-up: 5.0.0
+ find-up-simple: 1.0.0
find-yarn-workspace-root2: 1.2.16
- path-exists: 4.0.0
- which-pm: 2.0.0
+ which-pm: 3.0.0
prismjs@1.29.0: {}
@@ -4188,29 +4470,95 @@ snapshots:
string_decoder: 1.3.0
util-deprecate: 1.0.2
- readdirp@3.6.0:
+ recma-build-jsx@1.0.0:
dependencies:
- picomatch: 2.3.1
+ '@types/estree': 1.0.5
+ estree-util-build-jsx: 3.0.1
+ vfile: 6.0.3
+
+ recma-jsx@1.0.0(acorn@8.14.0):
+ dependencies:
+ acorn-jsx: 5.3.2(acorn@8.14.0)
+ estree-util-to-js: 2.0.0
+ recma-parse: 1.0.0
+ recma-stringify: 1.0.0
+ unified: 11.0.5
+ transitivePeerDependencies:
+ - acorn
+
+ recma-parse@1.0.0:
+ dependencies:
+ '@types/estree': 1.0.5
+ esast-util-from-js: 2.0.1
+ unified: 11.0.5
+ vfile: 6.0.3
+
+ recma-stringify@1.0.0:
+ dependencies:
+ '@types/estree': 1.0.5
+ estree-util-to-js: 2.0.0
+ unified: 11.0.5
+ vfile: 6.0.3
+
+ regex-recursion@4.3.0:
+ dependencies:
+ regex-utilities: 2.3.0
+
+ regex-utilities@2.3.0: {}
+
+ regex@5.0.2:
+ dependencies:
+ regex-utilities: 2.3.0
+
+ rehype-expressive-code@0.35.6:
+ dependencies:
+ expressive-code: 0.35.6
+
+ rehype-format@5.0.1:
+ dependencies:
+ '@types/hast': 3.0.4
+ hast-util-format: 1.1.0
rehype-parse@9.0.0:
dependencies:
'@types/hast': 3.0.4
hast-util-from-html: 2.0.1
- unified: 11.0.4
+ unified: 11.0.5
rehype-raw@7.0.0:
dependencies:
'@types/hast': 3.0.4
hast-util-raw: 9.0.1
- vfile: 6.0.1
+ vfile: 6.0.3
+
+ rehype-recma@1.0.0:
+ dependencies:
+ '@types/estree': 1.0.5
+ '@types/hast': 3.0.4
+ hast-util-to-estree: 3.1.0
+ transitivePeerDependencies:
+ - supports-color
rehype-stringify@10.0.0:
dependencies:
'@types/hast': 3.0.4
hast-util-to-html: 9.0.0
- unified: 11.0.4
+ unified: 11.0.5
+
+ rehype-stringify@10.0.1:
+ dependencies:
+ '@types/hast': 3.0.4
+ hast-util-to-html: 9.0.0
+ unified: 11.0.5
rehype@13.0.1:
+ dependencies:
+ '@types/hast': 3.0.4
+ rehype-parse: 9.0.0
+ rehype-stringify: 10.0.0
+ unified: 11.0.5
+
+ rehype@13.0.2:
dependencies:
'@types/hast': 3.0.4
rehype-parse: 9.0.0
@@ -4219,27 +4567,21 @@ snapshots:
remark-directive@3.0.0:
dependencies:
- '@types/mdast': 4.0.3
+ '@types/mdast': 4.0.4
mdast-util-directive: 3.0.0
micromark-extension-directive: 3.0.0
- unified: 11.0.4
+ unified: 11.0.5
transitivePeerDependencies:
- supports-color
- remark-expressive-code@0.33.4:
- dependencies:
- expressive-code: 0.33.4
- hast-util-to-html: 8.0.4
- unist-util-visit: 4.1.2
-
remark-gfm@4.0.0:
dependencies:
- '@types/mdast': 4.0.3
+ '@types/mdast': 4.0.4
mdast-util-gfm: 3.0.0
micromark-extension-gfm: 3.0.0
remark-parse: 11.0.0
remark-stringify: 11.0.0
- unified: 11.0.4
+ unified: 11.0.5
transitivePeerDependencies:
- supports-color
@@ -4255,87 +4597,93 @@ snapshots:
'@types/mdast': 4.0.3
mdast-util-from-markdown: 2.0.0
micromark-util-types: 2.0.0
- unified: 11.0.4
+ unified: 11.0.5
transitivePeerDependencies:
- supports-color
remark-rehype@11.1.0:
+ dependencies:
+ '@types/hast': 3.0.4
+ '@types/mdast': 4.0.4
+ mdast-util-to-hast: 13.0.2
+ unified: 11.0.5
+ vfile: 6.0.3
+
+ remark-rehype@11.1.1:
dependencies:
'@types/hast': 3.0.4
'@types/mdast': 4.0.3
mdast-util-to-hast: 13.0.2
- unified: 11.0.4
- vfile: 6.0.1
+ unified: 11.0.5
+ vfile: 6.0.3
- remark-smartypants@2.0.0:
+ remark-smartypants@3.0.2:
dependencies:
- retext: 8.1.0
- retext-smartypants: 5.2.0
- unist-util-visit: 4.1.2
+ retext: 9.0.0
+ retext-smartypants: 6.2.0
+ unified: 11.0.5
+ unist-util-visit: 5.0.0
remark-stringify@11.0.0:
dependencies:
- '@types/mdast': 4.0.3
+ '@types/mdast': 4.0.4
mdast-util-to-markdown: 2.1.0
- unified: 11.0.4
-
- resolve@1.22.8:
- dependencies:
- is-core-module: 2.13.1
- path-parse: 1.0.7
- supports-preserve-symlinks-flag: 1.0.0
+ unified: 11.0.5
- restore-cursor@4.0.0:
+ restore-cursor@5.1.0:
dependencies:
- onetime: 5.1.2
- signal-exit: 3.0.7
+ onetime: 7.0.0
+ signal-exit: 4.1.0
- retext-latin@3.1.0:
+ retext-latin@4.0.0:
dependencies:
- '@types/nlcst': 1.0.1
- parse-latin: 5.0.1
- unherit: 3.0.1
- unified: 10.1.2
+ '@types/nlcst': 2.0.3
+ parse-latin: 7.0.0
+ unified: 11.0.5
- retext-smartypants@5.2.0:
+ retext-smartypants@6.2.0:
dependencies:
- '@types/nlcst': 1.0.1
- nlcst-to-string: 3.1.1
- unified: 10.1.2
- unist-util-visit: 4.1.2
+ '@types/nlcst': 2.0.3
+ nlcst-to-string: 4.0.0
+ unist-util-visit: 5.0.0
- retext-stringify@3.1.0:
+ retext-stringify@4.0.0:
dependencies:
- '@types/nlcst': 1.0.1
- nlcst-to-string: 3.1.1
- unified: 10.1.2
+ '@types/nlcst': 2.0.3
+ nlcst-to-string: 4.0.0
+ unified: 11.0.5
- retext@8.1.0:
+ retext@9.0.0:
dependencies:
- '@types/nlcst': 1.0.1
- retext-latin: 3.1.0
- retext-stringify: 3.1.0
- unified: 10.1.2
+ '@types/nlcst': 2.0.3
+ retext-latin: 4.0.0
+ retext-stringify: 4.0.0
+ unified: 11.0.5
reusify@1.0.4: {}
- rollup@4.12.0:
+ rollup@4.28.0:
dependencies:
- '@types/estree': 1.0.5
+ '@types/estree': 1.0.6
optionalDependencies:
- '@rollup/rollup-android-arm-eabi': 4.12.0
- '@rollup/rollup-android-arm64': 4.12.0
- '@rollup/rollup-darwin-arm64': 4.12.0
- '@rollup/rollup-darwin-x64': 4.12.0
- '@rollup/rollup-linux-arm-gnueabihf': 4.12.0
- '@rollup/rollup-linux-arm64-gnu': 4.12.0
- '@rollup/rollup-linux-arm64-musl': 4.12.0
- '@rollup/rollup-linux-riscv64-gnu': 4.12.0
- '@rollup/rollup-linux-x64-gnu': 4.12.0
- '@rollup/rollup-linux-x64-musl': 4.12.0
- '@rollup/rollup-win32-arm64-msvc': 4.12.0
- '@rollup/rollup-win32-ia32-msvc': 4.12.0
- '@rollup/rollup-win32-x64-msvc': 4.12.0
+ '@rollup/rollup-android-arm-eabi': 4.28.0
+ '@rollup/rollup-android-arm64': 4.28.0
+ '@rollup/rollup-darwin-arm64': 4.28.0
+ '@rollup/rollup-darwin-x64': 4.28.0
+ '@rollup/rollup-freebsd-arm64': 4.28.0
+ '@rollup/rollup-freebsd-x64': 4.28.0
+ '@rollup/rollup-linux-arm-gnueabihf': 4.28.0
+ '@rollup/rollup-linux-arm-musleabihf': 4.28.0
+ '@rollup/rollup-linux-arm64-gnu': 4.28.0
+ '@rollup/rollup-linux-arm64-musl': 4.28.0
+ '@rollup/rollup-linux-powerpc64le-gnu': 4.28.0
+ '@rollup/rollup-linux-riscv64-gnu': 4.28.0
+ '@rollup/rollup-linux-s390x-gnu': 4.28.0
+ '@rollup/rollup-linux-x64-gnu': 4.28.0
+ '@rollup/rollup-linux-x64-musl': 4.28.0
+ '@rollup/rollup-win32-arm64-msvc': 4.28.0
+ '@rollup/rollup-win32-ia32-msvc': 4.28.0
+ '@rollup/rollup-win32-x64-msvc': 4.28.0
fsevents: 2.3.3
run-parallel@1.2.0:
@@ -4357,6 +4705,8 @@ snapshots:
dependencies:
lru-cache: 6.0.0
+ semver@7.6.3: {}
+
sharp@0.32.3:
dependencies:
color: 4.2.3
@@ -4368,35 +4718,45 @@ snapshots:
tar-fs: 3.0.4
tunnel-agent: 0.6.0
- sharp@0.32.6:
+ sharp@0.33.5:
dependencies:
color: 4.2.3
- detect-libc: 2.0.2
- node-addon-api: 6.1.0
- prebuild-install: 7.1.1
- semver: 7.5.4
- simple-get: 4.0.1
- tar-fs: 3.0.4
- tunnel-agent: 0.6.0
+ detect-libc: 2.0.3
+ semver: 7.6.3
+ optionalDependencies:
+ '@img/sharp-darwin-arm64': 0.33.5
+ '@img/sharp-darwin-x64': 0.33.5
+ '@img/sharp-libvips-darwin-arm64': 1.0.4
+ '@img/sharp-libvips-darwin-x64': 1.0.4
+ '@img/sharp-libvips-linux-arm': 1.0.5
+ '@img/sharp-libvips-linux-arm64': 1.0.4
+ '@img/sharp-libvips-linux-s390x': 1.0.4
+ '@img/sharp-libvips-linux-x64': 1.0.4
+ '@img/sharp-libvips-linuxmusl-arm64': 1.0.4
+ '@img/sharp-libvips-linuxmusl-x64': 1.0.4
+ '@img/sharp-linux-arm': 0.33.5
+ '@img/sharp-linux-arm64': 0.33.5
+ '@img/sharp-linux-s390x': 0.33.5
+ '@img/sharp-linux-x64': 0.33.5
+ '@img/sharp-linuxmusl-arm64': 0.33.5
+ '@img/sharp-linuxmusl-x64': 0.33.5
+ '@img/sharp-wasm32': 0.33.5
+ '@img/sharp-win32-ia32': 0.33.5
+ '@img/sharp-win32-x64': 0.33.5
optional: true
- shebang-command@2.0.0:
- dependencies:
- shebang-regex: 3.0.0
-
- shebang-regex@3.0.0: {}
-
shiki@1.1.7:
dependencies:
'@shikijs/core': 1.1.7
- shikiji-core@0.9.19: {}
-
- shikiji@0.9.19:
+ shiki@1.24.0:
dependencies:
- shikiji-core: 0.9.19
-
- signal-exit@3.0.7: {}
+ '@shikijs/core': 1.24.0
+ '@shikijs/engine-javascript': 1.24.0
+ '@shikijs/engine-oniguruma': 1.24.0
+ '@shikijs/types': 1.24.0
+ '@shikijs/vscode-textmate': 9.3.0
+ '@types/hast': 3.0.4
signal-exit@4.1.0: {}
@@ -4414,7 +4774,7 @@ snapshots:
sisteransi@1.0.5: {}
- sitemap@7.1.1:
+ sitemap@8.0.0:
dependencies:
'@types/node': 17.0.45
'@types/sax': 1.2.6
@@ -4423,15 +4783,17 @@ snapshots:
source-map-js@1.0.2: {}
+ source-map-js@1.2.1: {}
+
source-map@0.7.4: {}
space-separated-tokens@2.0.2: {}
sprintf-js@1.0.3: {}
- stdin-discarder@0.1.0:
- dependencies:
- bl: 5.1.0
+ stdin-discarder@0.2.2: {}
+
+ stream-replace-string@2.0.0: {}
streamx@2.15.1:
dependencies:
@@ -4444,19 +4806,7 @@ snapshots:
is-fullwidth-code-point: 3.0.0
strip-ansi: 6.0.1
- string-width@5.1.2:
- dependencies:
- eastasianwidth: 0.2.0
- emoji-regex: 9.2.2
- strip-ansi: 7.1.0
-
- string-width@6.1.0:
- dependencies:
- eastasianwidth: 0.2.0
- emoji-regex: 10.3.0
- strip-ansi: 7.1.0
-
- string-width@7.1.0:
+ string-width@7.2.0:
dependencies:
emoji-regex: 10.3.0
get-east-asian-width: 1.2.0
@@ -4483,8 +4833,6 @@ snapshots:
strip-bom@3.0.0: {}
- strip-final-newline@3.0.0: {}
-
strip-json-comments@2.0.1: {}
style-to-object@0.4.4:
@@ -4495,12 +4843,6 @@ snapshots:
dependencies:
inline-style-parser: 0.2.2
- supports-color@5.5.0:
- dependencies:
- has-flag: 3.0.0
-
- supports-preserve-symlinks-flag@1.0.0: {}
-
tar-fs@2.1.1:
dependencies:
chownr: 1.1.4
@@ -4528,7 +4870,7 @@ snapshots:
fast-fifo: 1.3.2
streamx: 2.15.1
- to-fast-properties@2.0.0: {}
+ tinyexec@0.3.1: {}
to-regex-range@5.0.1:
dependencies:
@@ -4538,27 +4880,32 @@ snapshots:
trough@2.1.0: {}
- tsconfck@3.0.0: {}
+ tsconfck@3.1.4(typescript@5.7.2):
+ optionalDependencies:
+ typescript: 5.7.2
+
+ tslib@2.8.1:
+ optional: true
tunnel-agent@0.6.0:
dependencies:
safe-buffer: 5.2.1
- type-fest@2.19.0: {}
+ type-fest@4.30.0: {}
- unherit@3.0.1: {}
+ typescript@5.7.2: {}
- unified@10.1.2:
+ unified@11.0.4:
dependencies:
- '@types/unist': 2.0.9
+ '@types/unist': 3.0.1
bail: 2.0.2
+ devlop: 1.1.0
extend: 3.0.2
- is-buffer: 2.0.5
is-plain-obj: 4.1.0
trough: 2.1.0
- vfile: 5.3.7
+ vfile: 6.0.3
- unified@11.0.4:
+ unified@11.0.5:
dependencies:
'@types/unist': 3.0.1
bail: 2.0.2
@@ -4566,7 +4913,12 @@ snapshots:
extend: 3.0.2
is-plain-obj: 4.1.0
trough: 2.1.0
- vfile: 6.0.1
+ vfile: 6.0.3
+
+ unist-util-find-after@5.0.0:
+ dependencies:
+ '@types/unist': 3.0.1
+ unist-util-is: 6.0.0
unist-util-is@5.2.1:
dependencies:
@@ -4576,9 +4928,9 @@ snapshots:
dependencies:
'@types/unist': 3.0.0
- unist-util-modify-children@3.1.1:
+ unist-util-modify-children@4.0.0:
dependencies:
- '@types/unist': 2.0.9
+ '@types/unist': 3.0.1
array-iterate: 2.0.1
unist-util-position-from-estree@2.0.0:
@@ -4598,12 +4950,6 @@ snapshots:
'@types/unist': 3.0.1
unist-util-visit: 5.0.0
- unist-util-remove@4.0.0:
- dependencies:
- '@types/unist': 3.0.1
- unist-util-is: 6.0.0
- unist-util-visit-parents: 6.0.1
-
unist-util-stringify-position@3.0.3:
dependencies:
'@types/unist': 2.0.7
@@ -4612,9 +4958,9 @@ snapshots:
dependencies:
'@types/unist': 3.0.0
- unist-util-visit-children@2.0.2:
+ unist-util-visit-children@3.0.0:
dependencies:
- '@types/unist': 2.0.9
+ '@types/unist': 3.0.1
unist-util-visit-parents@5.1.3:
dependencies:
@@ -4638,11 +4984,11 @@ snapshots:
unist-util-is: 6.0.0
unist-util-visit-parents: 6.0.1
- update-browserslist-db@1.0.13(browserslist@4.23.0):
+ update-browserslist-db@1.1.1(browserslist@4.24.2):
dependencies:
- browserslist: 4.23.0
- escalade: 3.1.1
- picocolors: 1.0.0
+ browserslist: 4.24.2
+ escalade: 3.2.0
+ picocolors: 1.1.1
util-deprecate@1.0.2: {}
@@ -4679,58 +5025,62 @@ snapshots:
unist-util-stringify-position: 4.0.0
vfile-message: 4.0.2
- vite@5.1.4:
+ vfile@6.0.3:
dependencies:
- esbuild: 0.19.12
- postcss: 8.4.35
- rollup: 4.12.0
+ '@types/unist': 3.0.1
+ vfile-message: 4.0.2
+
+ vite@5.4.11:
+ dependencies:
+ esbuild: 0.21.5
+ postcss: 8.4.49
+ rollup: 4.28.0
optionalDependencies:
fsevents: 2.3.3
- vitefu@0.2.5(vite@5.1.4):
- dependencies:
- vite: 5.1.4
+ vitefu@1.0.4(vite@5.4.11):
+ optionalDependencies:
+ vite: 5.4.11
web-namespaces@2.0.1: {}
which-pm-runs@1.1.0: {}
- which-pm@2.0.0:
- dependencies:
- load-yaml-file: 0.2.0
- path-exists: 4.0.0
-
- which-pm@2.1.1:
+ which-pm@3.0.0:
dependencies:
load-yaml-file: 0.2.0
- path-exists: 4.0.0
-
- which@2.0.2:
- dependencies:
- isexe: 2.0.0
- widest-line@4.0.1:
+ widest-line@5.0.0:
dependencies:
- string-width: 5.1.2
+ string-width: 7.2.0
- wrap-ansi@8.1.0:
+ wrap-ansi@9.0.0:
dependencies:
ansi-styles: 6.2.1
- string-width: 5.1.2
+ string-width: 7.2.0
strip-ansi: 7.1.0
wrappy@1.0.2: {}
+ xxhash-wasm@1.1.0: {}
+
yallist@3.1.1: {}
yallist@4.0.0: {}
yargs-parser@21.1.1: {}
- yocto-queue@0.1.0: {}
+ yocto-queue@1.1.1: {}
+
+ zod-to-json-schema@3.23.5(zod@3.23.8):
+ dependencies:
+ zod: 3.23.8
- yocto-queue@1.0.0: {}
+ zod-to-ts@1.2.0(typescript@5.7.2)(zod@3.23.8):
+ dependencies:
+ typescript: 5.7.2
+ zod: 3.23.8
- zod@3.22.4: {}
+ zod@3.23.8: {}
zwitch@2.0.4: {}
diff --git a/docs/src/components/GithubStar.astro b/docs/src/components/GithubStar.astro
index 40d5a95f..03aee84d 100644
--- a/docs/src/components/GithubStar.astro
+++ b/docs/src/components/GithubStar.astro
@@ -37,7 +37,7 @@ import { Icon } from '@astrojs/starlight/components';
}
.container{
position: absolute;
- top: 80px;
+ top: 140px;
left: 50%;
transform: translate(-50%, 0%);
background-color: transparent;
diff --git a/docs/src/content/docs/faq.md b/docs/src/content/docs/faq.md
new file mode 100644
index 00000000..295b646f
--- /dev/null
+++ b/docs/src/content/docs/faq.md
@@ -0,0 +1,51 @@
+---
+title: Frequently asked questions
+description: Frequently asked questions about the React Native / Expo Starter.
+head:
+ - tag: title
+ content: FAQ | React Native / Expo Starter
+---
+
+This page is a collection of frequently asked questions about the React Native / Expo Starter.
+
+### Is this starter for me?
+
+Yes ๐
+
+This starter kit is designed to benefit a wide range of React Native developers, from beginners to experienced professionals. Here's why it might be a good fit for you:
+
+1. **For beginners:** It provides a solid foundation with best practices and common solutions, helping you learn industry-standard approaches to React Native development.
+
+2. **For experienced developers:** It offers a well-structured, production-ready setup that can save you time and effort in project initialization and configuration.
+
+3. **For teams:** It ensures consistency across projects and team members, making it easier to onboard new developers and maintain code quality.
+
+4. **For explorers:** Even if you prefer not to use starter kits, this project can serve as a valuable reference. You can explore the codebase, documentation, and architectural decisions to gain insights and potentially adopt specific solutions for your own projects.
+
+5. **For learners:** The starter kit incorporates up-to-date libraries and patterns, offering an opportunity to familiarize yourself with current best practices in the React Native ecosystem.
+
+6. **For AI-assisted development:** This starter kit works well with AI coding tools. It provides a solid structure and best practices that can guide AI-generated code. This helps ensure that AI assistance leads to high-quality, maintainable code that fits well within your project.
+
+Remember, you don't have to use the entire starter kit as-is. Feel free to cherry-pick ideas, configurations, or code snippets that align with your project needs. Whether you're building a new app from scratch or looking to improve your existing development process, this starter kit can provide valuable insights and practical solutions.
+
+### Why Expo and not React Native CLI?
+
+We have been using Expo as our main framework since the introduction of [Continuous Native Generation (CNG)](https://docs.expo.dev/workflow/continuous-native-generation/) concept and we are happy with the experience.
+
+I think this question is not valid anymore specially after the last React conference when the core react native team recommended using Expo for new projects.
+
+> "As of today, the only recommended community framework for React Native is Expo. Folks at Expo have been investing in the React Native ecosystem since the early days of React Native and as of today, we believe the developer experience offered by Expo is best in class." React native core team
+
+Still hesitating? Check out this [article](https://reactnative.dev/blog/2024/06/25/use-a-framework-to-build-react-native-apps) or this [video](https://www.youtube.com/watch?v=lifGTznLBcw), maybe this one [video](https://www.youtube.com/watch?v=ek_IdGC0G80) too.
+
+### How is behind the starter kit?
+
+This starter kit is maintained by the [Obytes mobile tribe team](https://www.obytes.com/team) since 2021. At Rootstrap we've started using it during 2024. We actively use it for our projects and make slight modifications to better adjust to our workflow, experience and projects. The template is open-source, released under the MIT license, ensuring flexibility for users. Our commitment to this template is ongoing; we will continue to sync it with the Obytes starter kit, maintain it and improve it as long as it remains a core part of our internal development process.
+
+### Can you include X feature or library?
+
+We aim to keep the starter as simple and straightforward as possible. Based on our experience, we believe the current setup provides a solid foundation for most projects.
+
+The starter is opinionated, reflecting our best practices. If you disagree with some of our choices, that's perfectly fine. The starter is designed to be easily customizable to suit your specific needs.
+
+We often receive requests to provide multiple choices for libraries and tools through a CLI. While this may seem appealing, it would significantly increase complexity and maintenance overhead, which we are trying to avoid.
diff --git a/docs/src/content/docs/getting-started/environment-vars-config.mdx b/docs/src/content/docs/getting-started/environment-vars-config.mdx
index 562f2e62..b00b7160 100644
--- a/docs/src/content/docs/getting-started/environment-vars-config.mdx
+++ b/docs/src/content/docs/getting-started/environment-vars-config.mdx
@@ -104,7 +104,7 @@ As mentioned earlier, `zod` is used to validate environment variables at runtime
```bash
โ Invalid environment variables: { TEST: [ 'Required' ] }
โ Missing variables in .env.development file, Make sure all required variables are defined in the .env.development file.
-๐ก Tip: If you recently updated the .env.development file and the error still persists, try restarting the server with the -cc flag to clear the cache.
+๐ก Tip: If you recently updated the .env.development file and the error still persists, try restarting the server with the -c flag to clear the cache.
```
:::note[Important]
diff --git a/docs/src/content/docs/guides/upgrading-deps.mdx b/docs/src/content/docs/guides/upgrading-deps.mdx
index 05c48f52..b146c196 100644
--- a/docs/src/content/docs/guides/upgrading-deps.mdx
+++ b/docs/src/content/docs/guides/upgrading-deps.mdx
@@ -31,10 +31,10 @@ pnpm run doctor ## check for any issues with the dependencies you added to your
pnpm lint ## linting
pnpm type-check ## type checking
pnpm test ## tests
-pnpm prebuild -clean ## clean ios and android build folders and regenerate them
+pnpm prebuild --clean ## clean ios and android build folders and regenerate them
pnpm ios ## run ios build
pnpm android ## run android build
-pnpm start --cc ## start the server
+pnpm start -c ## start the server
```
:::info
@@ -50,7 +50,7 @@ Visit the npm package registry [here](https://www.npmjs.com/package/expo) to ens
Once you have confirmed that you have the latest version, open your terminal and enter the following command:
```bash
-pnpm add expo@lastVersion
+pnpm add expo@latest
## pnpm add expo@48.0.5 for example
```
@@ -78,10 +78,10 @@ pnpm install ## install new dependencies
pnpm lint ## linting
pnpm type-check ## type checking
pnpm test ## tests
-pnpm prebuild -clean ## clean ios and android build folders and regenerate them
+pnpm prebuild --clean ## clean ios and android build folders and regenerate them
pnpm ios ## run ios build
pnpm android ## run android build
-pnpm start --cc ## start the server
+pnpm start -c ## start the server
```
Unfortunately, there is no magic trick here in case you have any issues while running your checks, Fixing those errors may require some manual effort. You can start by reading the error message and identifying any relevant packages that may be causing the issue. Check the changelog of those packages to see if there have been any recent updates that might have introduced breaking changes. This will help you to pinpoint the root cause of the issue and take the necessary steps to resolve it.
@@ -144,10 +144,10 @@ pnpm install ## install new dependencies
pnpm lint ## linting
pnpm type-check ## type checking
pnpm test ## tests
-pnpm prebuild -clean ## clean ios and Android build folders and regenerate them
+pnpm prebuild --clean ## clean ios and Android build folders and regenerate them
pnpm ios ## run ios build
pnpm android ## run android build
-pnpm start --cc ## start the server
+pnpm start -c ## start the server
```
If you are lucky enough and everything works as expected without any issues, you can now update the rest of the dependencies.
diff --git a/docs/src/content/docs/overview.md b/docs/src/content/docs/overview.md
index c68b66fb..bfdf3d85 100644
--- a/docs/src/content/docs/overview.md
+++ b/docs/src/content/docs/overview.md
@@ -6,11 +6,7 @@ head:
content: Overview | React Native / Expo Starter
---
-As a team of experienced developers at Obytes Mobile Tribe, we have spent years refining our approach to building high-quality React Native applications. Our starter kit is based on the best practices and tools that we have found to be most effective in our own projects.
-
-This starter kit has been thoroughly tested and proven successful in multiple projects over the past four years. It is regularly used by our team on a daily basis and has helped us deliver great results for our clients.
-
-While our starter kit is heavily influenced by our own opinions and experiences, we have carefully selected the included solutions to address common challenges and meet the needs of the majority of use cases. We believe it offers a streamlined and efficient approach to building React Native apps, and we are confident that it can help others achieve their project goals as well.
+Welcome to the Rootstrap's Expo / React Native Template!
## ๐ Motivation
@@ -31,39 +27,52 @@ When creating this starter kit, we had several guiding principles in mind::
## โญ Key Features
-- โ
The latest version of Expo SDK, Along with the Custom Dev client, you can leverage the best of the Expo ecosystem and maintain full control over your app.
-- ๐ [TypeScript](https://www.typescriptlang.org/) for type checking, to help you catch bugs and improve code quality.
-- ๐
A minimal UI kit built with [TailwindCSS](https://www.nativewind.dev/), With the most common components you should have in your app.
-- โ๏ธ Support for multiple environments builds, including Production, Staging, and Development, using Expo configuration.
-- ๐ฆ Husky for Git Hooks, to automate your git hooks and enforce code standards.
-- ๐ก A clean project structure with Absolute Imports, to make it easier to navigate and manage your code.
-- ๐ซ Lint-staged for running Eslint and TypeScript checks on Git staged files, to ensure that your code is always up to standards.
-- ๐ VSCode recommended extensions, settings, and snippets to enhance the developer experience.
-- โ๏ธ Pre-installed [Expo Router](https://docs.expo.dev/router/introduction/) with examples, to provide a comprehensive navigation solution for your app.
-- ๐ซ An auth flow with [Zustand](https://github.com/pmndrs/zustand) and [react-native-mmkv](https://github.com/mrousavy/react-native-mmkv) as a storage solution to save sensitive data.
-- ๐ +10 workflows for building, releasing, testing and distributing your app using [Github action](https://github.com/features/actions).
-- ๐ฅ [React Query](https://react-query.tanstack.com/) and [axios](https://github.com/axios/axios) for fetching data, to help you build efficient and performant apps.
-- ๐งต A good approach for handling forms with [react-hook-form](https://react-hook-form.com/) and [zod](https://github.com/colinhacks/zod) for validation + keyboard handling.
-- ๐ฏ Localization with [i18next](https://www.i18next.com/), along with Eslint for validation.
-- Unit testing with [Jest](https://jestjs.io/) and [React Testing Library](https://testing-library.com/docs/react-testing-library/intro/) setup to help you write tests for your app.
+- โ
Latest Expo SDK with Custom Dev Client: Leverage the best of the Expo ecosystem while maintaining full control over your app.
+- ๐ [TypeScript](https://www.typescriptlang.org/) for enhanced code quality and bug prevention through static type checking.
+- ๐
Minimal UI kit built with [TailwindCSS](https://www.nativewind.dev/), featuring common components essential for your app.
+- โ๏ธ Multi-environment build support (Production, Staging, Development) using Expo configuration.
+- ๐ฆ Husky for Git Hooks: Automate your git hooks and enforce code standards.
+- ๐ก Clean project structure with Absolute Imports for easier code navigation and management.
+- ๐ซ Lint-staged: Run Eslint and TypeScript checks on Git staged files to maintain code quality.
+- ๐ VSCode recommended extensions, settings, and snippets for an enhanced developer experience.
+- โ๏ธ Pre-installed [Expo Router](https://docs.expo.dev/router/introduction/) with examples for comprehensive app navigation.
+- ๐ซ Auth flow implementation using [Zustand](https://github.com/pmndrs/zustand) for state management and [react-native-mmkv](https://github.com/mrousavy/react-native-mmkv) for secure data storage.
+- ๐ 10+ [Github Actions](https://github.com/features/actions) workflows for building, releasing, testing, and distributing your app.
+- ๐ฅ [React Query](https://react-query.tanstack.com/) and [axios](https://github.com/axios/axios) for efficient data fetching and state management.
+- ๐งต Robust form handling with [react-hook-form](https://react-hook-form.com/) and [zod](https://github.com/colinhacks/zod) for validation, plus keyboard handling.
+- ๐ฏ Localization support with [i18next](https://www.i18next.com/), including Eslint for validation.
+- ๐งช Unit testing setup with [Jest](https://jestjs.io/) and [React Testing Library](https://testing-library.com/docs/react-testing-library/intro/).
+- ๐ E2E testing capabilities with [Maestro](https://maestro.mobile.dev/) for comprehensive app testing.
+
+## ๐ค Is this starter for me?
+
+Yes ๐
+
+This starter kit is designed to benefit a wide range of React Native developers, from beginners to experienced professionals. Here's why it might be a good fit for you:
+
+1. **For beginners:** It provides a solid foundation with best practices and common solutions, helping you learn industry-standard approaches to React Native development.
+
+2. **For experienced developers:** It offers a well-structured, production-ready setup that can save you time and effort in project initialization and configuration.
+
+3. **For teams:** It ensures consistency across projects and team members, making it easier to onboard new developers and maintain code quality.
-## ๐ Why Expo?
+4. **For explorers:** Even if you prefer not to use starter kits, this project can serve as a valuable reference. You can explore the codebase, documentation, and architectural decisions to gain insights and potentially adopt specific solutions for your own projects.
-Expo is a powerful tool for building React Native apps, offering a range of features and benefits that can help developers create high-quality apps more efficiently. One question we often receive from the community is why we choose to use Expo instead of the React Native CLI.
+5. **For learners:** The starter kit incorporates up-to-date libraries and patterns, offering an opportunity to familiarize yourself with current best practices in the React Native ecosystem.
-In the past, our team used the React Native CLI for our starter kit. However, we found that using Expo presented several advantages. In particular, the introduction of the Custom dev client feature allowed us to take advantage of the Expo ecosystem and utilize native libraries without the need for ejecting the app. This has greatly simplified our development process and enabled us to focus on the business logic of our projects.
+6. **For AI-assisted development:** This starter kit works well with AI coding tools. It provides a solid structure and best practices that can guide AI-generated code. This helps ensure that AI assistance leads to high-quality, maintainable code that fits well within your project.
-Additionally, we have found that using Expo has made it easier to upgrade our apps to new versions, eliminating the issues we previously encountered when using the React Native CLI.
+Remember, you don't have to use the entire starter kit as-is. Feel free to cherry-pick ideas, configurations, or code snippets that align with your project needs. Whether you're building a new app from scratch or looking to improve your existing development process, this starter kit can provide valuable insights and practical solutions.
-Overall, we believe that Expo offers numerous benefits for building React Native apps and is a valuable tool for any developer. The real question may be, **why not use Expo?**
+## ๐ Why Expo and not React Native CLI?
-## ๐ค Is this starter for you?
+We have been using Expo as our main framework since the introduction of [Continuous Native Generation (CNG)](https://docs.expo.dev/workflow/continuous-native-generation/) concept and we are happy with the experience.
-If you are planning to build a React Native app and are looking for a strong foundation, well-designed architecture, and a positive developer experience, then this starter kit is an excellent resource to consider. It offers a comprehensive set of best practices and tools that have been tested and proven effective in multiple projects.
+I think this question is not valid anymore specially after the last React conference when the core react native team recommended using Expo for new projects.
-Even if you are not sure that using a starter kit is the right choice for your project, you can still benefit from this resource. You can explore the starter kit and draw inspiration from the solutions it provides for common challenges faced by React Native developers. This can be a helpful way to discover good practices and find effective solutions for your own app development process.
+> "As of today, the only recommended community framework for React Native is Expo. Folks at Expo have been investing in the React Native ecosystem since the early days of React Native and as of today, we believe the developer experience offered by Expo is best in class." React native core team
-Overall, whether you choose to use this starter kit as is or simply take some ideas from it, we believe it offers valuable insights and resources for anyone looking to build a high-quality React Native app.
+Still hesitating? Check out this [article](https://reactnative.dev/blog/2024/06/25/use-a-framework-to-build-react-native-apps) or this [video](https://www.youtube.com/watch?v=lifGTznLBcw), maybe this one [video](https://www.youtube.com/watch?v=ek_IdGC0G80) too.
## ๐งโ๐ป Stay up to date
@@ -90,8 +99,14 @@ We value the feedback and contributions of our users, and we encourage you to le
- [React Native Gesture Handler](https://docs.swmansion.com/react-native-gesture-handler/docs/)
- [React Native Reanimated](https://docs.swmansion.com/react-native-reanimated/docs/)
- [React Native Svg](https://github.com/software-mansion/react-native-svg)
-- [ React Error Boundaries](https://github.com/bvaughn/react-error-boundary)
+- [React Error Boundaries](https://github.com/bvaughn/react-error-boundary)
- [Expo Image](https://docs.expo.dev/versions/unversioned/sdk/image/)
+- [React Native Keyboard Controller](https://github.com/kirillzyusko/react-native-keyboard-controller)
+- [Moti](https://moti.fyi/)
+- [React Native Safe Area Context](https://github.com/th3rdwave/react-native-safe-area-context)
+- [React Native Screens](https://github.com/software-mansion/react-native-screens)
+- [Tailwind Variants](https://www.tailwind-variants.org/)
+- [Zod](https://zod.dev/)
## Contributors
diff --git a/docs/src/content/docs/recipes/sentry-setup.mdx b/docs/src/content/docs/recipes/sentry-setup.mdx
new file mode 100644
index 00000000..55332899
--- /dev/null
+++ b/docs/src/content/docs/recipes/sentry-setup.mdx
@@ -0,0 +1,303 @@
+---
+title: Sentry Setup
+description: How to setup Sentry in your app.
+head:
+ - tag: title
+ content: Sentry Setup | React Native / Expo Starter
+---
+
+import CodeBlock from '../../../components/code.astro';
+import { Steps } from '@astrojs/starlight/components';
+
+Sentry is one of the most popular solution for error reporting in the javascript ecosystem and has a great integration with Expo, we have been using it for a while and it has been working very well.
+
+The starter kit did not come with Sentry pre-configured, but it's very easy to setup and this guide will walk you through the process.
+
+## Install and configure Sentry
+
+
+1. Create a new [Sentry account](https://sentry.io/signup/) if you don't have one already. Once logged in, create a new project for your React Native app.
+
+2. During project creation, pay close attention to and note down the following important details:
+
+ - Organization slug
+ - Project name
+ - DSN
+
+ we will use those details next to configure the Sentry SDK in your app.
+
+3. Now you need also to generate a new Auth Token so you can use it to upload source maps to Sentry. To generate a new Auth Token you need to go to Developer [Settings > Auth Tokens](https://sentry.io/settings/auth-tokens/) and create a new token.
+
+ - Copy and securely store the generated token. You'll need this for configuring source map uploads.
+
+4. At this point, you should have the following environment variables that need to be added to your `.env` files:
+
+ ```bash
+ SENTRY_ORG=your_sentry_organization_slug
+ SENTRY_PROJECT=your_sentry_project_name
+ SENTRY_DSN=your_sentry_dsn
+ ```
+
+ :::note
+ You can use the same Sentry configuration for all app variants (development, staging, production) as Sentry allows you to filter errors by app ID or package name in the dashboard. This simplifies setup and management while still providing the ability to distinguish between different environments.
+ :::
+
+ It's crucial to add these variables to `env.js` for validation. `SENTRY_ORG` and `SENTRY_PROJECT` should be added as build-time variables, while `SENTRY_DSN` should be added as a client variable.
+
+ Update your `env.js` file as follows:
+
+ ```js title='env.js'
+ // ... existing imports and configurations
+
+ const client = z.object({
+ // ... other client env vars
+ SENTRY_DSN: z.string().min(1, 'SENTRY_DSN is required'),
+ });
+
+ const buildTime = z.object({
+ // ... other build-time env vars
+ SENTRY_ORG: z.string().min(1, 'SENTRY_ORG is required'),
+ SENTRY_PROJECT: z.string().min(1, 'SENTRY_PROJECT is required'),
+ });
+
+ const _clientEnv = {
+ // ... other client env vars
+ SENTRY_DSN: process.env.SENTRY_DSN,
+ };
+
+ const _buildTimeEnv = {
+ // ... other build-time env vars
+ SENTRY_ORG: process.env.SENTRY_ORG,
+ SENTRY_PROJECT: process.env.SENTRY_PROJECT,
+ };
+
+ // ... rest of the file
+ ```
+
+ :::note
+ The `SENTRY_AUTH_TOKEN` should not be added to the `.env` file as it's sensitive information that shouldn't be exposed or pushed to version control. Instead, add it as an EAS secret using the [Expo dashboard](https://expo.dev/accounts/[account]/projects/[project]/secrets) or the EAS CLI:
+
+ ```bash
+ eas secret:create --scope your-project-name --name SENTRY_AUTH_TOKEN --value your-token-value --type string
+ ```
+
+ This ensures that your Sentry authentication token remains secure while still being accessible during the build process.
+ :::
+
+5. Now you can install the Sentry SDK in your project.
+
+ ```bash
+ npm install @sentry/react-native
+ ```
+
+6. Add Sentry plugin config to your `app.config.ts` file.
+
+ ```tsx title='app.config.ts'
+ // rest of the file
+
+ import { ClientEnv, Env } from './env';
+
+ export default ({ config }: ConfigContext): ExpoConfig => ({
+ ...config,
+ // rest of the config
+
+ plugins: [
+ // rest of the plugins
+ [
+ '@sentry/react-native/expo',
+ {
+ url: 'https://sentry.io/',
+ organization: Env.SENTRY_ORG,
+ project: Env.SENTRY_PROJECT,
+ note: 'Ensure you set the SENTRY_AUTH_TOKEN as an environment variable to authenticate with Sentry. Do not add it to the .env file. Instead, add it as an EAS secret or as an environment variable in your CI/CD pipeline for security.',
+ // If you are using a self-hosted instance, update the value of the url property
+ // to point towards your self-hosted instance. For example, https://self-hosted.example.com/.
+ },
+ ],
+ ],
+ });
+ ```
+
+7. Update your metro config to inject debug ID intro your source maps
+
+ ```js title='metro.config.js'
+ /* eslint-env node */
+ // this replaces `const { getDefaultConfig } = require('expo/metro-config');`
+ const { getSentryExpoConfig } = require('@sentry/react-native/metro');
+ const { withNativeWind } = require('nativewind/metro');
+
+ const config = getSentryExpoConfig(__dirname);
+
+ module.exports = withNativeWind(config, { input: './global.css' });
+ ```
+
+8. Now you are ready to initialize Sentry in your app.
+ Create a new file `src/core/sentry.ts` and add the following code:
+
+ ```tsx title='src/core/sentry.ts'
+ import { useNavigationContainerRef } from 'expo-router';
+ import { useEffect } from 'react';
+ import * as Sentry from '@sentry/react-native';
+ import { Env } from '@env';
+
+ const routingInstrumentation = new Sentry.ReactNavigationInstrumentation();
+
+ export const initSentry = () => {
+ Sentry.init({
+ dsn: Env.SENTRY_DSN,
+ // debug: Env.APP_ENV === 'development',
+ integrations: [
+ new Sentry.ReactNativeTracing({
+ routingInstrumentation,
+ enableNativeFramesTracking: true,
+ // ...
+ }),
+ ],
+ });
+ };
+
+ export const useSentryNavigationConfig = () => {
+ const navigationRef = useNavigationContainerRef();
+
+ useEffect(() => {
+ if (navigationRef) {
+ routingInstrumentation.registerNavigationContainer(navigationRef);
+ }
+ }, [navigationRef]);
+ };
+ ```
+
+ Then, initialize Sentry and configure it with navigation in your `src/app/_layout.tsx` file:
+
+ ```tsx title='src/app/_layout.tsx'
+ import { initSentry, useSentryNavigationConfig } from '@/core/sentry';
+ import * as Sentry from '@sentry/react-native';
+
+ initSentry();
+
+ function RootLayout() {
+ useSentryNavigationConfig();
+
+ return (
+
+
+
+
+ ...
+
+
+ );
+ }
+
+ // Wrap your app with Sentry
+ export default Sentry.wrap(RootLayout);
+ ```
+
+ This setup will enable Sentry error tracking and performance monitoring in your app.
+
+9. One last thing is to add Apple privacy manifest to prevent any issues with Apple.
+ Create a new file `apple-privacy-manifest.json` and add the following code:
+
+ ```json title='apple-privacy-manifest.json'
+ {
+ "NSPrivacyCollectedDataTypes": [
+ {
+ "NSPrivacyCollectedDataType": "NSPrivacyCollectedDataTypeCrashData",
+ "NSPrivacyCollectedDataTypeLinked": false,
+ "NSPrivacyCollectedDataTypeTracking": false,
+ "NSPrivacyCollectedDataTypePurposes": [
+ "NSPrivacyCollectedDataTypePurposeAppFunctionality"
+ ]
+ },
+ {
+ "NSPrivacyCollectedDataType": "NSPrivacyCollectedDataTypePerformanceData",
+ "NSPrivacyCollectedDataTypeLinked": false,
+ "NSPrivacyCollectedDataTypeTracking": false,
+ "NSPrivacyCollectedDataTypePurposes": [
+ "NSPrivacyCollectedDataTypePurposeAppFunctionality"
+ ]
+ },
+ {
+ "NSPrivacyCollectedDataType": "NSPrivacyCollectedDataTypeOtherDiagnosticData",
+ "NSPrivacyCollectedDataTypeLinked": false,
+ "NSPrivacyCollectedDataTypeTracking": false,
+ "NSPrivacyCollectedDataTypePurposes": [
+ "NSPrivacyCollectedDataTypePurposeAppFunctionality"
+ ]
+ }
+ ],
+ "NSPrivacyAccessedAPITypes": [
+ {
+ "NSPrivacyAccessedAPIType": "NSPrivacyAccessedAPICategoryUserDefaults",
+ "NSPrivacyAccessedAPITypeReasons": ["CA92.1"]
+ },
+ {
+ "NSPrivacyAccessedAPIType": "NSPrivacyAccessedAPICategorySystemBootTime",
+ "NSPrivacyAccessedAPITypeReasons": ["35F9.1"]
+ },
+ {
+ "NSPrivacyAccessedAPIType": "NSPrivacyAccessedAPICategoryFileTimestamp",
+ "NSPrivacyAccessedAPITypeReasons": ["C617.1"]
+ }
+ ]
+ }
+ ```
+
+ Then add it to your `app.config.ts`
+
+ ```ts title='app.config.ts'
+ import applePrivacyManifest from './apple-privacy-manifest.json';
+ export default ({ config }: ConfigContext): ExpoConfig => ({
+ ...config,
+ // rest of the config
+ ios: {
+ // rest of ios config
+ privacyManifests: applePrivacyManifest,
+ },
+ });
+ ```
+
+ Read more about [Apple Privacy Manifest and sentry](https://docs.sentry.io/platforms/react-native/data-management/apple-privacy-manifest/)
+
+10. Now you are ready to test Sentry integration. Follow these steps to ensure errors are being reported correctly:
+
+ 1. Run the prebuild command for your project.
+ 2. Launch the app in a simulator or on a physical device.
+ 3. Use the following code snippet to add error-triggering buttons to your app:
+
+ ```tsx
+ import React from 'react';
+ import { View, Button } from 'react-native';
+ import * as Sentry from '@sentry/react-native';
+
+ const SentryTestComponent = () => {
+ const throwJSError = () => {
+ throw new Error('Test JavaScript Error for Sentry');
+ };
+
+ const triggerNativeError = () => {
+ Sentry.nativeCrash();
+ };
+
+ return (
+
+
+
+
+ );
+ };
+
+ export default SentryTestComponent;
+ ```
+
+ 4. Implement this component in your app and interact with the buttons.
+ 5. Check your Sentry dashboard to verify that the errors are being reported correctly (make sure to wait a little bit for the errors to appear).
+
+ Remember to remove or disable these test buttons before releasing your app to production.
+
+
+
+## More Resources
+
+- [Expo Sentry](https://docs.expo.dev/guides/using-sentry/)
+- [Sentry Documentation](https://docs.sentry.io/platforms/react-native/manual-setup/expo/)
diff --git a/docs/src/content/docs/testing/unit-testing.mdx b/docs/src/content/docs/testing/unit-testing.mdx
index d17f4b7d..d11aa722 100644
--- a/docs/src/content/docs/testing/unit-testing.mdx
+++ b/docs/src/content/docs/testing/unit-testing.mdx
@@ -47,6 +47,8 @@ As you may notice from the code, we are importing a bunch of things from the `@/
You can update this file to add any other providers you need to wrap your components with as well as any other utility functions you need to use in your tests.
+
+use `setup` function in case you need to test interactions with the component. It returns a user (userEvent) object that you can use to interact with the component.
:::
Now that we have our test file ready, let's run it and see what happens. To run the test, run the following command:
@@ -73,3 +75,5 @@ Aiming for 100% test coverage is not always a good idea and doesn't always make
For more complex logic and components, we recommend taking a look at this amazing project which provides a lot of examples and best practices for testing React Native apps using React Native Testing Library and Jest:
[โก๏ธ React Native Testing](https://github.com/vanGalilea/react-native-testing/)
+
+[React Native Testing Library Cookbook](https://callstack.github.io/react-native-testing-library/cookbook/index)
diff --git a/package.json b/package.json
index 3da134bc..f4baf33a 100644
--- a/package.json
+++ b/package.json
@@ -114,7 +114,7 @@
"@dev-plugins/react-query": "^0.0.7",
"@expo/config": "~9.0.2",
"@testing-library/jest-dom": "^6.5.0",
- "@testing-library/react-native": "^12.6.0",
+ "@testing-library/react-native": "^12.7.2",
"@types/i18n-js": "^3.8.9",
"@types/jest": "^29.5.12",
"@types/lodash.memoize": "^4.1.9",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 0723fe50..9ba613f4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -157,8 +157,8 @@ importers:
specifier: ^6.5.0
version: 6.5.0
'@testing-library/react-native':
- specifier: ^12.6.0
- version: 12.6.0(jest@29.7.0(@types/node@22.5.0)(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.3.3)))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(@types/react@18.2.79)(react@18.2.0))(react-test-renderer@18.3.1(react@18.2.0))(react@18.2.0)
+ specifier: ^12.7.2
+ version: 12.9.0(jest@29.7.0(@types/node@22.5.0)(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.3.3)))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(@types/react@18.2.79)(react@18.2.0))(react-test-renderer@18.3.1(react@18.2.0))(react@18.2.0)
'@types/i18n-js':
specifier: ^3.8.9
version: 3.8.9
@@ -1891,8 +1891,8 @@ packages:
resolution: {integrity: sha512-xGGHpBXYSHUUr6XsKBfs85TWlYKpTc37cSBBVrXcib2MkHLboWlkClhWF37JKlDb9KEq3dHs+f2xR7XJEWGBxA==}
engines: {node: '>=14', npm: '>=6', yarn: '>=1'}
- '@testing-library/react-native@12.6.0':
- resolution: {integrity: sha512-godF8rqf4tuolaiGwy7jZXleYfObCwb3b8LW9592DinMrno6idFsLVCovuMrhl8+YbTA3b4yMBn4BbSKY4lDjQ==}
+ '@testing-library/react-native@12.9.0':
+ resolution: {integrity: sha512-wIn/lB1FjV2N4Q7i9PWVRck3Ehwq5pkhAef5X5/bmQ78J/NoOsGbVY2/DG5Y9Lxw+RfE+GvSEh/fe5Tz6sKSvw==}
peerDependencies:
jest: '>=28.0.0'
react: '>=16.8.0'
@@ -10205,7 +10205,7 @@ snapshots:
lodash: 4.17.21
redent: 3.0.0
- '@testing-library/react-native@12.6.0(jest@29.7.0(@types/node@22.5.0)(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.3.3)))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(@types/react@18.2.79)(react@18.2.0))(react-test-renderer@18.3.1(react@18.2.0))(react@18.2.0)':
+ '@testing-library/react-native@12.9.0(jest@29.7.0(@types/node@22.5.0)(ts-node@10.9.2(@types/node@22.5.0)(typescript@5.3.3)))(react-native@0.74.5(@babel/core@7.25.2)(@babel/preset-env@7.25.4(@babel/core@7.25.2))(@types/react@18.2.79)(react@18.2.0))(react-test-renderer@18.3.1(react@18.2.0))(react@18.2.0)':
dependencies:
jest-matcher-utils: 29.7.0
pretty-format: 29.7.0
diff --git a/src/components/login-form.test.tsx b/src/components/login-form.test.tsx
index 385a0666..112c0cec 100644
--- a/src/components/login-form.test.tsx
+++ b/src/components/login-form.test.tsx
@@ -1,4 +1,4 @@
-import { cleanup, fireEvent, render, screen, waitFor } from '@/core/test-utils';
+import { cleanup, screen, setup, waitFor } from '@/core/test-utils';
import type { LoginFormProps } from './login-form';
import { LoginForm } from './login-form';
@@ -10,55 +10,55 @@ const onSubmitMock: jest.Mock = jest.fn();
describe('LoginForm Form ', () => {
const LOGIN_BUTTON = 'login-button';
it('renders correctly', async () => {
- render();
+ setup();
expect(await screen.findByText(/Sign in/i)).toBeOnTheScreen();
});
it('should display required error when values are empty', async () => {
- render();
+ const { user } = setup();
const button = screen.getByTestId(LOGIN_BUTTON);
expect(screen.queryByText(/Email is required/i)).not.toBeOnTheScreen();
- fireEvent.press(button);
+ await user.press(button);
expect(await screen.findByText(/Email is required/i)).toBeOnTheScreen();
expect(screen.getByText(/Password is required/i)).toBeOnTheScreen();
});
it('should display matching error when email is invalid', async () => {
- render();
+ const { user } = setup();
const button = screen.getByTestId(LOGIN_BUTTON);
const emailInput = screen.getByTestId('email-input');
const passwordInput = screen.getByTestId('password-input');
- fireEvent.changeText(emailInput, 'yyyyy');
- fireEvent.changeText(passwordInput, 'test');
- fireEvent.press(button);
+ await user.type(emailInput, 'yyyyy');
+ await user.type(passwordInput, 'test');
+ await user.press(button);
- expect(screen.queryByText(/Email is required/i)).not.toBeOnTheScreen();
expect(await screen.findByText(/Invalid Email Format/i)).toBeOnTheScreen();
+ expect(screen.queryByText(/Email is required/i)).not.toBeOnTheScreen();
});
it('Should call LoginForm with correct values when values are valid', async () => {
- render();
+ const { user } = setup();
const button = screen.getByTestId(LOGIN_BUTTON);
const emailInput = screen.getByTestId('email-input');
const passwordInput = screen.getByTestId('password-input');
- fireEvent.changeText(emailInput, 'youssef@gmail.com');
- fireEvent.changeText(passwordInput, 'password');
- fireEvent.press(button);
+ await user.type(emailInput, 'youssef@gmail.com');
+ await user.type(passwordInput, 'password');
+ await user.press(button);
await waitFor(() => {
expect(onSubmitMock).toHaveBeenCalledTimes(1);
});
- // undefined because we don't use second argument of the SubmitHandler
+ // expect.objectContaining({}) because we don't want to test the target event we are receiving from the onSubmit function
expect(onSubmitMock).toHaveBeenCalledWith(
{
email: 'youssef@gmail.com',
password: 'password',
},
- undefined
+ expect.objectContaining({}),
);
});
});
diff --git a/src/core/test-utils.tsx b/src/core/test-utils.tsx
index 0f133034..c3a7e13d 100644
--- a/src/core/test-utils.tsx
+++ b/src/core/test-utils.tsx
@@ -3,7 +3,7 @@ import '@shopify/flash-list/jestSetup';
import { BottomSheetModalProvider } from '@gorhom/bottom-sheet';
import { NavigationContainer } from '@react-navigation/native';
import type { RenderOptions } from '@testing-library/react-native';
-import { render } from '@testing-library/react-native';
+import { render, userEvent } from '@testing-library/react-native';
import type { ReactElement } from 'react';
import React from 'react';
const createAppWrapper = () => ({ children }: { children: React.ReactNode }) => (
@@ -14,11 +14,23 @@ const createAppWrapper = () => ({ children }: { children: React.ReactNode }) =>
const customRender = (
ui: ReactElement,
- options?: Omit
+ options?: Omit,
) => {
const Wrapper = createAppWrapper(); // make sure we have a new wrapper for each render
return render(ui, { wrapper: Wrapper, ...options });
};
+// use this if you want to test user events
+export const setup = (
+ ui: ReactElement,
+ options?: Omit,
+) => {
+ const Wrapper = createAppWrapper();
+ return {
+ user: userEvent.setup(),
+ ...render(ui, { wrapper: Wrapper, ...options }),
+ };
+};
+
export * from '@testing-library/react-native';
export { customRender as render };
diff --git a/src/ui/button.test.tsx b/src/ui/button.test.tsx
index 7f07f1ad..d12665fb 100644
--- a/src/ui/button.test.tsx
+++ b/src/ui/button.test.tsx
@@ -1,7 +1,7 @@
/* eslint-disable max-lines-per-function */
import { Text } from 'react-native';
-import { cleanup, fireEvent, render, screen } from '@/core/test-utils';
+import { cleanup, render, screen, setup } from '@/core/test-utils';
import { Button } from './button';
@@ -16,7 +16,7 @@ describe('Button component ', () => {
render(
+ ,
);
expect(screen.getByText('Custom child')).toBeOnTheScreen();
});
@@ -30,48 +30,48 @@ describe('Button component ', () => {
expect(screen.getByTestId('button')).toBeOnTheScreen();
expect(screen.getByTestId('button-activity-indicator')).toBeOnTheScreen();
});
- it('should call onClick handler when clicked', () => {
+ it('should call onClick handler when clicked', async () => {
const onClick = jest.fn();
- render(
-
+ const { user } = setup(
+ ,
);
expect(screen.getByTestId('button')).toBeOnTheScreen();
- fireEvent.press(screen.getByTestId('button'));
+ await user.press(screen.getByTestId('button'));
expect(onClick).toHaveBeenCalledTimes(1);
});
- it('should be disabled when loading', () => {
+ it('should be disabled when loading', async () => {
const onClick = jest.fn();
- render(
+ const { user } = setup(
+ />,
);
expect(screen.getByTestId('button')).toBeOnTheScreen();
expect(screen.getByTestId('button-activity-indicator')).toBeOnTheScreen();
expect(screen.getByTestId('button')).toBeDisabled();
- fireEvent.press(screen.getByTestId('button'));
+ await user.press(screen.getByTestId('button'));
expect(onClick).toHaveBeenCalledTimes(0);
});
it('should be disabled when disabled prop is true', () => {
render();
expect(screen.getByTestId('button')).toBeDisabled();
});
- it("shouldn't call onClick when disabled", () => {
+ it("shouldn't call onClick when disabled", async () => {
const onClick = jest.fn();
- render(
+ const { user } = setup(
+ />,
);
expect(screen.getByTestId('button')).toBeOnTheScreen();
- fireEvent.press(screen.getByTestId('button'));
+ await user.press(screen.getByTestId('button'));
expect(screen.getByTestId('button')).toBeDisabled();
diff --git a/src/ui/checkbox.test.tsx b/src/ui/checkbox.test.tsx
index 0a9628cc..53b99eb5 100644
--- a/src/ui/checkbox.test.tsx
+++ b/src/ui/checkbox.test.tsx
@@ -1,7 +1,7 @@
/* eslint-disable max-lines-per-function */
import 'react-native';
-import { cleanup, fireEvent, render, screen } from '@/core/test-utils';
+import { cleanup, fireEvent, render, screen, setup } from '@/core/test-utils';
import { Checkbox, Radio, Switch } from './checkbox';
@@ -9,19 +9,18 @@ afterEach(cleanup);
const AGREE_TERMS = 'I agree to terms and conditions';
-describe('Checkbox component ', () => {
+describe('Checkbox component', () => {
const CHECKBOX_LABEL = 'checkbox-label';
-
- it(' renders correctly and call on change on Press', () => {
+ it(' renders correctly and call on change on Press', async () => {
const mockOnChange = jest.fn((checked) => checked);
- render(
+ const { user } = setup(
+ />,
);
expect(screen.getByTestId('checkbox')).toBeOnTheScreen();
expect(screen.queryByTestId(CHECKBOX_LABEL)).not.toBeOnTheScreen();
@@ -29,66 +28,72 @@ describe('Checkbox component ', () => {
expect(screen.getByTestId('checkbox')).not.toBeChecked();
expect(screen.getByTestId('checkbox').props.accessibilityRole).toBe(
- 'checkbox'
+ 'checkbox',
);
expect(screen.getByTestId('checkbox').props.accessibilityLabel).toBe(
- 'agree'
+ 'agree',
);
- fireEvent.press(screen.getByTestId('checkbox'));
+ await user.press(screen.getByTestId('checkbox'));
expect(mockOnChange).toHaveBeenCalledTimes(1);
expect(mockOnChange).toHaveBeenCalledWith(true);
});
- it(" shouldn't change value while disabled", () => {
+ it(" shouldn't change value while disabled", async () => {
const mockOnChange = jest.fn((checked) => checked);
- render(
+ const { user } = setup(
+ />,
);
expect(screen.getByTestId('checkbox')).toBeOnTheScreen();
expect(screen.getByTestId('checkbox')).toBeDisabled();
- fireEvent.press(screen.getByTestId('checkbox'));
+ await user.press(screen.getByTestId('checkbox'));
expect(mockOnChange).toHaveBeenCalledTimes(0);
});
- it(' Should render the correct label', () => {
+ it(' Should render the correct label', async () => {
const mockOnChange = jest.fn((checked) => checked);
- render(
+ const { user } = setup(
+ label={AGREE_TERMS}
+ />,
);
expect(screen.getByTestId('checkbox')).toBeOnTheScreen();
expect(screen.getByTestId(CHECKBOX_LABEL)).toBeOnTheScreen();
expect(
- screen.getByTestId('checkbox').props.accessibilityState.checked
+ screen.getByTestId('checkbox').props.accessibilityState.checked,
).toBe(false);
expect(screen.getByTestId('checkbox').props.accessibilityRole).toBe(
- 'checkbox'
+ 'checkbox',
);
expect(screen.getByTestId('checkbox').props.accessibilityLabel).toBe(
- 'agree'
+ 'agree',
);
expect(screen.getByTestId(CHECKBOX_LABEL)).toHaveTextContent(AGREE_TERMS);
- fireEvent.press(screen.getByTestId('checkbox'));
+ await user.press(screen.getByTestId('checkbox'));
expect(mockOnChange).toHaveBeenCalledTimes(0);
});
it(' should not render label when empty or not provided', () => {
const mockOnChange = jest.fn((checked) => checked);
- render();
+ render(
+ ,
+ );
expect(screen.queryByTestId(CHECKBOX_LABEL)).not.toBeOnTheScreen();
});
@@ -101,7 +106,7 @@ describe('Checkbox component ', () => {
checked={true}
accessibilityLabel="agree"
accessibilityHint="toggle Agree"
- />
+ />,
);
expect(screen.getByTestId('checkbox')).toBeChecked();
fireEvent.press(screen.getByTestId('checkbox'));
@@ -112,15 +117,15 @@ describe('Checkbox component ', () => {
describe('Radio component ', () => {
const RADIO_LABEL = 'radio-label';
- it(' renders correctly and call on change on Press', () => {
+ it(' renders correctly and call on change on Press', async () => {
const mockOnChange = jest.fn((checked) => checked);
- render(
+ const { user } = setup(
+ />,
);
expect(screen.getByTestId('radio')).toBeOnTheScreen();
expect(screen.queryByTestId(RADIO_LABEL)).not.toBeOnTheScreen();
@@ -128,147 +133,130 @@ describe('Radio component ', () => {
expect(screen.getByTestId('radio')).not.toBeChecked();
expect(screen.getByTestId('radio').props.accessibilityRole).toBe('radio');
expect(screen.getByTestId('radio').props.accessibilityLabel).toBe('agree');
- fireEvent.press(screen.getByTestId('radio'));
+ await user.press(screen.getByTestId('radio'));
expect(mockOnChange).toHaveBeenCalledTimes(1);
expect(mockOnChange).toHaveBeenCalledWith(true);
});
- it(' should render the correct label', () => {
+ it(' should render the correct label', async () => {
const mockOnChange = jest.fn((checked) => checked);
- render(
+ const { user } = setup(
+ />,
);
expect(screen.getByTestId('radio')).toBeOnTheScreen();
expect(screen.getByTestId(RADIO_LABEL)).toBeOnTheScreen();
expect(screen.getByTestId(RADIO_LABEL)).toHaveTextContent(AGREE_TERMS);
expect(screen.getByTestId('radio').props.accessibilityState.checked).toBe(
- false
+ false,
);
expect(screen.getByTestId('radio').props.accessibilityRole).toBe('radio');
expect(screen.getByTestId('radio').props.accessibilityLabel).toBe('agree');
- fireEvent.press(screen.getByTestId(RADIO_LABEL));
+ await user.press(screen.getByTestId(RADIO_LABEL));
expect(mockOnChange).toHaveBeenCalledTimes(1);
expect(mockOnChange).toHaveBeenCalledWith(true);
});
- it(" shouldn't change value while disabled", () => {
+ it(" shouldn't change value while disabled", async () => {
const mockOnChange = jest.fn((checked) => checked);
- render(
+ const { user } = setup(
+ />,
);
expect(screen.getByTestId('radio')).toBeOnTheScreen();
expect(screen.getByTestId('radio')).toBeDisabled();
- fireEvent.press(screen.getByTestId('radio'));
+ await user.press(screen.getByTestId('radio'));
expect(mockOnChange).toHaveBeenCalledTimes(0);
});
-
- it(' should not render label when empty or not provided', () => {
- const mockOnChange = jest.fn((checked) => checked);
- render();
- expect(screen.queryByTestId(RADIO_LABEL)).not.toBeOnTheScreen();
- });
-
- it(' renders as checked when checked prop is true', () => {
- const mockOnChange = jest.fn((checked) => checked);
- render(
-
- );
- expect(screen.getByTestId('radio')).toBeChecked();
- fireEvent.press(screen.getByTestId('radio'));
- expect(mockOnChange).toHaveBeenCalledWith(false); // Radio should toggle to unchecked
- });
-})
+});
describe('Switch component ', () => {
const SWITCH_LABEL = 'switch-label';
- it(' renders correctly and call on change on Press', () => {
+ it(' renders correctly and call on change on Press', async () => {
const mockOnChange = jest.fn((checked) => checked);
- render(
+ const { user } = setup(
+ />,
);
expect(screen.getByTestId('switch')).toBeOnTheScreen();
expect(screen.queryByTestId(SWITCH_LABEL)).not.toBeOnTheScreen();
expect(screen.getByTestId('switch')).toBeEnabled();
expect(screen.getByTestId('switch').props.accessibilityState.checked).toBe(
- false
+ false,
);
expect(screen.getByTestId('switch').props.accessibilityRole).toBe('switch');
expect(screen.getByTestId('switch').props.accessibilityLabel).toBe('agree');
- fireEvent.press(screen.getByTestId('switch'));
+ await user.press(screen.getByTestId('switch'));
expect(mockOnChange).toHaveBeenCalledTimes(1);
expect(mockOnChange).toHaveBeenCalledWith(true);
});
- it(' should render the correct label', () => {
+ it(' should render the correct label', async () => {
const mockOnChange = jest.fn((checked) => checked);
- render(
+ const { user } = setup(
+ />,
);
expect(screen.getByTestId('switch')).toBeOnTheScreen();
expect(screen.getByTestId(SWITCH_LABEL)).toBeOnTheScreen();
expect(screen.getByTestId(SWITCH_LABEL)).toHaveTextContent(AGREE_TERMS);
expect(screen.getByTestId('switch').props.accessibilityState.checked).toBe(
- false
+ false,
);
expect(screen.getByTestId('switch').props.accessibilityRole).toBe('switch');
expect(screen.getByTestId('switch').props.accessibilityLabel).toBe('agree');
- fireEvent.press(screen.getByTestId(SWITCH_LABEL));
+ await user.press(screen.getByTestId(SWITCH_LABEL));
expect(mockOnChange).toHaveBeenCalledTimes(1);
expect(mockOnChange).toHaveBeenCalledWith(true);
});
- it(" shouldn't change value while disabled", () => {
+ it(" shouldn't change value while disabled", async () => {
const mockOnChange = jest.fn((checked) => checked);
- render(
+ const { user } = setup(
+ />,
);
expect(screen.getByTestId('switch')).toBeOnTheScreen();
- fireEvent.press(screen.getByTestId('switch'));
+ await user.press(screen.getByTestId('switch'));
expect(mockOnChange).toHaveBeenCalledTimes(0);
});
-
+
it(' should not render label when empty or not provided', () => {
const mockOnChange = jest.fn((checked) => checked);
- render();
+ render(
+ ,
+ );
expect(screen.queryByTestId(SWITCH_LABEL)).not.toBeOnTheScreen();
});
@@ -281,10 +269,12 @@ describe('Switch component ', () => {
checked={true}
accessibilityLabel="agree"
accessibilityHint="toggle Agree"
- />
+ />,
+ );
+ expect(screen.getByTestId('switch').props.accessibilityState.checked).toBe(
+ true,
);
- expect(screen.getByTestId('switch').props.accessibilityState.checked).toBe(true);
fireEvent.press(screen.getByTestId('switch'));
expect(mockOnChange).toHaveBeenCalledWith(false); // Switch should toggle to unchecked
});
-})
\ No newline at end of file
+});
diff --git a/src/ui/input.test.tsx b/src/ui/input.test.tsx
index 29f3b7a8..f39c6e72 100644
--- a/src/ui/input.test.tsx
+++ b/src/ui/input.test.tsx
@@ -1,7 +1,7 @@
/* eslint-disable max-lines-per-function */
import { I18nManager } from 'react-native';
-import { cleanup, fireEvent, render, screen } from '@/core/test-utils';
+import { cleanup, render, screen, setup } from '@/core/test-utils';
import { Input } from './input';
@@ -33,7 +33,7 @@ describe('Input component ', () => {
render();
expect(screen.getByTestId('input')).toBeOnTheScreen();
expect(
- screen.getByPlaceholderText('Enter your username')
+ screen.getByPlaceholderText('Enter your username'),
).toBeOnTheScreen();
});
@@ -49,7 +49,7 @@ describe('Input component ', () => {
expect(screen.getByTestId('input')).toBeOnTheScreen();
expect(screen.getByTestId(INPUT_ERROR)).toHaveTextContent(
- 'This is an error message'
+ 'This is an error message',
);
});
it('should render the label, error message & placeholder correctly ', () => {
@@ -59,45 +59,48 @@ describe('Input component ', () => {
label="Username"
placeholder="Enter your username"
error="This is an error message"
- />
+ />,
);
expect(screen.getByTestId('input')).toBeOnTheScreen();
expect(screen.getByTestId('input-label')).toHaveTextContent('Username');
expect(screen.getByTestId(INPUT_ERROR)).toBeOnTheScreen();
expect(screen.getByTestId(INPUT_ERROR)).toHaveTextContent(
- 'This is an error message'
+ 'This is an error message',
);
expect(
- screen.getByPlaceholderText('Enter your username')
+ screen.getByPlaceholderText('Enter your username'),
).toBeOnTheScreen();
});
- it('should trigger onFocus event correctly ', () => {
+ it('should trigger onFocus event correctly ', async () => {
const onFocus = jest.fn();
- render();
+ const { user } = setup();
const input = screen.getByTestId('input');
- fireEvent(input, 'focus');
+ await user.type(input, 'test text');
expect(onFocus).toHaveBeenCalledTimes(1);
});
- it('should trigger onBlur event correctly ', () => {
+ it('should trigger onBlur event correctly ', async () => {
const onBlur = jest.fn();
- render();
+ const { user } = setup();
const input = screen.getByTestId('input');
- fireEvent(input, 'blur');
+ await user.type(input, 'test text');
expect(onBlur).toHaveBeenCalledTimes(1);
});
- it('should trigger onChangeText event correctly', () => {
+ it('should trigger onChangeText event correctly', async () => {
const onChangeText = jest.fn();
- render();
+ const { user } = setup(
+ ,
+ );
const input = screen.getByTestId('input');
- fireEvent.changeText(input, 'test text');
- expect(onChangeText).toHaveBeenCalledTimes(1);
- expect(onChangeText).toHaveBeenCalledWith('test text');
+ await user.type(input, '123456789');
+ const PRESSED_KEYS_COUNT = 9;
+ expect(onChangeText).toHaveBeenCalledTimes(PRESSED_KEYS_COUNT); // every character is a change event
+ expect(onChangeText).toHaveBeenCalledWith('123456789');
});
it('should be disabled when disabled prop is true', () => {
render();
diff --git a/src/ui/input.tsx b/src/ui/input.tsx
index 6039a13b..9ae512f2 100644
--- a/src/ui/input.tsx
+++ b/src/ui/input.tsx
@@ -83,7 +83,7 @@ export const Input = forwardRef((props, ref) => {
focused: isFocussed,
disabled: Boolean(props.disabled),
}),
- [error, isFocussed, props.disabled]
+ [error, isFocussed, props.disabled],
);
return (
@@ -124,7 +124,7 @@ export const Input = forwardRef((props, ref) => {
// only used with react-hook-form
export function ControlledInput(
- props: ControlledInputProps
+ props: ControlledInputProps,
) {
const { name, control, rules, ...inputProps } = props;
diff --git a/src/ui/modal.tsx b/src/ui/modal.tsx
index b2cec49c..f87c931e 100644
--- a/src/ui/modal.tsx
+++ b/src/ui/modal.tsx
@@ -78,7 +78,7 @@ export const Modal = forwardRef(
detached = false,
...props
}: ModalProps,
- ref: ModalRef
+ ref: ModalRef,
) => {
const detachedProps = useMemo(() => getDetachedProps(detached), [detached]);
const modal = useModal();
@@ -86,7 +86,7 @@ export const Modal = forwardRef(
useImperativeHandle(
ref,
- () => (modal.ref.current as BottomSheetModal) || null
+ () => (modal.ref.current as BottomSheetModal) || null,
);
const renderHandleComponent = useCallback(
@@ -96,7 +96,7 @@ export const Modal = forwardRef(
>
),
- [title, modal.dismiss]
+ [title, modal.dismiss],
);
return (
@@ -110,7 +110,7 @@ export const Modal = forwardRef(
handleComponent={renderHandleComponent}
/>
);
- }
+ },
);
/**
@@ -121,8 +121,8 @@ const AnimatedPressable = Animated.createAnimatedComponent(Pressable);
const CustomBackdrop = ({ style }: BottomSheetBackdropProps) => {
const { close } = useBottomSheet();
- const FADE_IN_DURATION = 50
- const FADE_OUT_DURATION = 20
+ const FADE_IN_DURATION = 50;
+ const FADE_OUT_DURATION = 20;
return (
close()}
@@ -162,38 +162,38 @@ const getDetachedProps = (detached: boolean) => {
*/
const ModalHeader = memo(({ title, dismiss }: ModalHeaderProps) => (
- <>
- {title && (
-
-
-
-
- {title}
-
-
+ <>
+ {title && (
+
+
+
+
+ {title}
+
- )}
-
- >
- ));
+
+ )}
+
+ >
+));
const CloseButton = ({ close }: { close: () => void }) => (
-
+
- );
+
+
+
+);
diff --git a/src/ui/select.test.tsx b/src/ui/select.test.tsx
index 51ca2939..4c397bde 100644
--- a/src/ui/select.test.tsx
+++ b/src/ui/select.test.tsx
@@ -1,6 +1,6 @@
/* eslint-disable max-lines-per-function */
-import { cleanup, fireEvent, render, screen } from '@/core/test-utils';
+import { cleanup, fireEvent, render, screen, setup } from '@/core/test-utils';
import type { OptionType } from '@/ui';
import { Select } from './select';
@@ -24,7 +24,7 @@ describe('Select component ', () => {
options={options}
onSelect={onSelect}
testID="select"
- />
+ />,
);
expect(screen.getByTestId(SELECT_TRIGGER)).toBeOnTheScreen();
expect(screen.getByTestId(SELECT_LABEL)).toBeOnTheScreen();
@@ -38,7 +38,7 @@ describe('Select component ', () => {
options={options}
onSelect={onSelect}
testID="select"
- />
+ />,
);
expect(screen.getByTestId(SELECT_TRIGGER)).toBeOnTheScreen();
expect(screen.getByTestId(SELECT_LABEL)).toBeOnTheScreen();
@@ -54,23 +54,23 @@ describe('Select component ', () => {
onSelect={onSelect}
testID="select"
error="Please select an option"
- />
+ />,
);
expect(screen.getByTestId(SELECT_TRIGGER)).toBeOnTheScreen();
expect(screen.getByTestId(SELECT_ERROR)).toBeOnTheScreen();
expect(screen.getByTestId(SELECT_ERROR)).toHaveTextContent(
- 'Please select an option'
+ 'Please select an option',
);
});
- it('should open options modal on press', () => {
- render(
+ it('should open options modal on press', async () => {
+ setup(
+ />,
);
const selectTrigger = screen.getByTestId(SELECT_TRIGGER);
@@ -81,16 +81,21 @@ describe('Select component ', () => {
expect(screen.getByTestId('select-item-vanilla')).toBeOnTheScreen();
});
- it('should call onSelect on selecting an option', () => {
+ it('should call onSelect on selecting an option', async () => {
const onSelect = jest.fn();
- render();
+ const { user } = setup(
+ ,
+ );
+
+ const selectTrigger = screen.getByTestId('select-trigger');
+ await user.press(selectTrigger);
const optionModal = screen.getByTestId('select-modal');
- fireEvent(optionModal, 'onPresent');
+ await user.press(optionModal);
const optionItem1 = screen.getByTestId('select-item-chocolate');
- fireEvent.press(optionItem1);
+ await user.press(optionItem1);
expect(onSelect).toHaveBeenCalledWith(options[0].value);
});
diff --git a/src/ui/select.tsx b/src/ui/select.tsx
index 238d9ff9..df4bb795 100644
--- a/src/ui/select.tsx
+++ b/src/ui/select.tsx
@@ -8,7 +8,7 @@ import { useColorScheme } from 'nativewind';
import { forwardRef, memo, useCallback, useMemo } from 'react';
import type { FieldValues } from 'react-hook-form';
import { useController } from 'react-hook-form';
-import { Platform, Pressable, type PressableProps,TouchableOpacity, View } from 'react-native';
+import { Platform, Pressable, type PressableProps, View } from 'react-native';
import type { SvgProps } from 'react-native-svg';
import Svg, { Path } from 'react-native-svg';
import { tv } from 'tailwind-variants';
@@ -71,8 +71,8 @@ function keyExtractor(item: OptionType) {
export const Options = forwardRef(
({ options, onSelect, value, testID }, ref) => {
- const HEIGHT_MARGIN = 100
- const OPTION_HEIGHT = 70
+ const HEIGHT_MARGIN = 100;
+ const OPTION_HEIGHT = 70;
const height = options.length * OPTION_HEIGHT + HEIGHT_MARGIN;
const snapPoints = useMemo(() => [height], [height]);
const { colorScheme } = useColorScheme();
@@ -88,7 +88,7 @@ export const Options = forwardRef(
testID={testID ? `${testID}-item-${item.value}` : undefined}
/>
),
- [onSelect, value, testID]
+ [onSelect, value, testID],
);
return (
@@ -109,7 +109,7 @@ export const Options = forwardRef(
/>
);
- }
+ },
);
const Option = memo(
@@ -121,14 +121,14 @@ const Option = memo(
selected?: boolean;
label: string;
}) => (
-
- {label}
- {selected && }
-
- )
+
+ {label}
+ {selected && }
+
+ ),
);
export interface SelectProps {
@@ -163,7 +163,7 @@ export const Select = (props: SelectProps) => {
onSelect?.(option.value);
modal.dismiss();
},
- [modal, onSelect]
+ [modal, onSelect],
);
const styles = useMemo(
@@ -172,15 +172,15 @@ export const Select = (props: SelectProps) => {
error: Boolean(error),
disabled,
}),
- [error, disabled]
+ [error, disabled],
);
const textValue = useMemo(
() =>
value !== undefined
- ? options?.filter((t) => t.value === value)?.[0]?.label ?? placeholder
+ ? (options?.filter((t) => t.value === value)?.[0]?.label ?? placeholder)
: placeholder,
- [value, options, placeholder]
+ [value, options, placeholder],
);
return (
@@ -194,7 +194,7 @@ export const Select = (props: SelectProps) => {
{label}
)}
- {
{textValue}
-
+
{error && (
{
// only used with react-hook-form
export function ControlledSelect(
- props: ControlledSelectProps
+ props: ControlledSelectProps,
) {
const { name, control, rules, onSelect: onNSelect, ...selectProps } = props;
@@ -236,7 +236,7 @@ export function ControlledSelect(
field.onChange(value);
onNSelect?.(value);
},
- [field, onNSelect]
+ [field, onNSelect],
);
return (