diff --git a/.changeset/complete-package-support-links.md b/.changeset/complete-package-support-links.md new file mode 100644 index 00000000..e0892f6f --- /dev/null +++ b/.changeset/complete-package-support-links.md @@ -0,0 +1,10 @@ +--- +"@santi020k/eslint-config-extensions": patch +"@santi020k/eslint-config-formats": patch +"@santi020k/eslint-config-integrations": patch +"@santi020k/eslint-config-libraries": patch +"@santi020k/eslint-config-testing": patch +"@santi020k/eslint-config-tools": patch +--- + +Add the shared GitHub issue tracker to package metadata. diff --git a/.changeset/improve-package-readmes.md b/.changeset/improve-package-readmes.md new file mode 100644 index 00000000..f540c424 --- /dev/null +++ b/.changeset/improve-package-readmes.md @@ -0,0 +1,34 @@ +--- +"@santi020k/eslint-config-angular": patch +"@santi020k/eslint-config-astro": patch +"@santi020k/eslint-config-basic": patch +"@santi020k/eslint-config-core": patch +"@santi020k/eslint-config-expo": patch +"@santi020k/eslint-config-extensions": patch +"@santi020k/eslint-config-formats": patch +"@santi020k/eslint-config-hono": patch +"@santi020k/eslint-config-integrations": patch +"@santi020k/eslint-config-libraries": patch +"@santi020k/eslint-config-lit": patch +"@santi020k/eslint-config-lite": patch +"@santi020k/eslint-config-nest": patch +"@santi020k/eslint-config-next": patch +"@santi020k/eslint-config-nuxt": patch +"@santi020k/eslint-config-preact": patch +"@santi020k/eslint-config-qwik": patch +"@santi020k/eslint-config-react": patch +"@santi020k/eslint-config-react-router": patch +"@santi020k/eslint-config-slidev": patch +"@santi020k/eslint-config-solid": patch +"@santi020k/eslint-config-svelte": patch +"@santi020k/eslint-config-tanstack-start": patch +"@santi020k/eslint-config-testing": patch +"@santi020k/eslint-config-tools": patch +"@santi020k/eslint-config-typescript": patch +"@santi020k/eslint-config-vite": patch +"@santi020k/eslint-config-vue": patch +--- + +Replace the minimal npm package READMEs with practical installation, +configuration, compatibility, and support guidance. The Basic package now +publishes the comprehensive root README instead of a short placeholder. diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6f0f4017..39df75a2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -109,7 +109,12 @@ jobs: run: pnpm run lint:changed && pnpm run check:internal-compatibility - name: Check package READMEs are in sync if: matrix.node-version == '22.x' - run: pnpm run docs:sync-readmes && git diff --exit-code -- 'packages/*/README.md' || (echo 'Package READMEs are stale. Run `pnpm run docs:sync-readmes` and commit the result.' && exit 1) + run: | + pnpm run docs:sync-readmes + if ! git diff --exit-code -- 'packages/*/README.md'; then + echo "Package READMEs are stale. Run 'pnpm run docs:sync-readmes' and commit the result." + exit 1 + fi - name: Package metrics if: matrix.node-version == '22.x' run: pnpm run check:package-metrics diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index c6555558..294b45ce 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -47,13 +47,9 @@ jobs: with: node-version: 22.x registry-url: "https://registry.npmjs.org" - install: false - name: Install OIDC-capable npm run: npm install --global npm@11.20.0 - - name: Install dependencies - run: pnpm install --frozen-lockfile - - name: Build and validate versioned packages run: | pnpm run release:build-versioned diff --git a/.husky/commit-msg b/.husky/commit-msg deleted file mode 100644 index 940d23e5..00000000 --- a/.husky/commit-msg +++ /dev/null @@ -1 +0,0 @@ -pnpm exec commitprompt validate --input "$1" diff --git a/.husky/pre-commit b/.husky/pre-commit deleted file mode 100755 index f1228afd..00000000 --- a/.husky/pre-commit +++ /dev/null @@ -1 +0,0 @@ -pnpm run pre-commit diff --git a/.husky/pre-push b/.husky/pre-push deleted file mode 100755 index 115dc0cf..00000000 --- a/.husky/pre-push +++ /dev/null @@ -1 +0,0 @@ -pnpm run pre-push diff --git a/README.md b/README.md index 7365c69c..92249377 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,12 @@ and opt-in framework packages. [npm](https://www.npmjs.com/package/@santi020k/eslint-config-basic) · [Migration to v3](https://eslint.santi020k.com/guide/migration-v2-to-v3/) +[![Build](https://github.com/santi020k/eslint-config-basic/actions/workflows/build.yml/badge.svg)](https://github.com/santi020k/eslint-config-basic/actions/workflows/build.yml) +[![CodeQL](https://github.com/santi020k/eslint-config-basic/actions/workflows/codeql.yml/badge.svg)](https://github.com/santi020k/eslint-config-basic/actions/workflows/codeql.yml) +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-basic.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-basic) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-basic.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-basic) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) + ## Quick start Install the lean package and ESLint: @@ -195,4 +201,6 @@ for package moves and copy-paste commands. The [planned v4 removals](https://eslint.santi020k.com/guide/v4-removals/) page tracks compatibility APIs that are deprecated during v3. -MIT © [santi020k](https://santi020k.com) +## License + +MIT © [santi020k](https://santi020k.com). See [LICENSE](LICENSE). diff --git a/apps/docs/.og-cache.json b/apps/docs/.og-cache.json new file mode 100644 index 00000000..787cec3a --- /dev/null +++ b/apps/docs/.og-cache.json @@ -0,0 +1,1063 @@ +{ + "cacheKey": "preset-v4", + "entries": { + "api.webp": { + "baseDirectory": "public/og", + "digest": "00182bd615d37a4141e5d21e637b97aaccfb00b48abca76dbcb138303d2df27b", + "fingerprint": "0edc336e7d3842afe6993c0e2f5be479336c56d4354ead713ad8e7691fccc63a", + "output": "api.webp" + }, + "api--reference--astro--src.webp": { + "baseDirectory": "public/og", + "digest": "3f136c01034357c6e4fe4026ce3c6ee8b55c96b6725dc61aa622a083bee0b194", + "fingerprint": "d5e52e34df605b91c13e69710e78ade5c72c7bcf47cef6ff1c79c8d5442ece10", + "output": "api--reference--astro--src.webp" + }, + "api--reference--basic--src.webp": { + "baseDirectory": "public/og", + "digest": "925d8e5a031e8ccc3c6ab1f3e238be45dac26a4c7add7342a9faaed31e90f1c4", + "fingerprint": "cc68358c59e729a60808cd56d7067d056d058ae192f0db52a02edf201db57d90", + "output": "api--reference--basic--src.webp" + }, + "api--reference--core--src.webp": { + "baseDirectory": "public/og", + "digest": "c250f301ad4b053f619f402466e40020dd1bf43ddb39b09bbe8d29d0c9983dad", + "fingerprint": "e916aa3e58e0e74cc7745eabdcab55a69a946c6636d085ef0d6143697055e09d", + "output": "api--reference--core--src.webp" + }, + "api--reference--expo--src.webp": { + "baseDirectory": "public/og", + "digest": "a0b263d65447dae77a85adaa66b72145cad819f3886b8de4c8e769f0c90580e8", + "fingerprint": "a38491c654b6b8e6c15202b2d878170a3207ce1f87d287602da00429f041c185", + "output": "api--reference--expo--src.webp" + }, + "api--reference.webp": { + "baseDirectory": "public/og", + "digest": "55fe3cd5b246438aef4d0d4c59a3f63cc4a0501c81aeb7fdc788c7770d79acbb", + "fingerprint": "9b437ef1737a35923f4ae1aed68332fb3588a0d414bd5d9f44a203fe0e69e97c", + "output": "api--reference.webp" + }, + "api--reference--integrations--src.webp": { + "baseDirectory": "public/og", + "digest": "11c787ac2de7103d4bfa84d263a9f7a779d73fd8980dce3fa0366ab0548bd786", + "fingerprint": "614d8924483e8c277bb04c563f28530c673bbe8cfbe5807e50cbcb3e8644540e", + "output": "api--reference--integrations--src.webp" + }, + "api--reference--nest--src.webp": { + "baseDirectory": "public/og", + "digest": "17394a032c96d06141efe39e831e693388a9bb6b2b017ec073ef4e6950b25769", + "fingerprint": "98a67f0a4518f0c22c6a71e4416553635b31a1c0cfe5fdb3b237fa923126ee7d", + "output": "api--reference--nest--src.webp" + }, + "api--reference--next--src.webp": { + "baseDirectory": "public/og", + "digest": "5629b4deccc06c484a96e16f7ba3eb8472476c6814c07805d258f19526b8026e", + "fingerprint": "0523c52504e46fceda53ea72be4922ecfd6074aa74e1c57c686c2c233e71d6bc", + "output": "api--reference--next--src.webp" + }, + "api--reference--react--src.webp": { + "baseDirectory": "public/og", + "digest": "1f1e76b4a50595abeb9a9ffbe842a2a619964092f376b30f03464dbc45c0fc13", + "fingerprint": "8bcadc826c6404ad8904780b5d01eb1bcc0d0d9dbfd7e35841935b168a8efbaf", + "output": "api--reference--react--src.webp" + }, + "api--reference--typescript--src.webp": { + "baseDirectory": "public/og", + "digest": "79b683ec23871d8a255efe64fbfc6989049f183aa174b624ada41cbaf38a042f", + "fingerprint": "6fd410b662aa1089021941146e7a7d92c7bebdb993c4ab175c77e78e5f2872ed", + "output": "api--reference--typescript--src.webp" + }, + "frameworks--angular.webp": { + "baseDirectory": "public/og", + "digest": "a23b33afdad356e2259f88c84be40ea82db9bff11a3094cee1c5cf3d9ec8850c", + "fingerprint": "f38238a016ca0e6246435e54273d6e58c5fc1eb84f49d994a99e4e3cd57cf3c6", + "output": "frameworks--angular.webp" + }, + "frameworks--astro.webp": { + "baseDirectory": "public/og", + "digest": "c77ee7a6ee1becd0fd62c28b6efb6deabffd752b4e2cd19b90976fd3d1c881e9", + "fingerprint": "4c50b24526c4d9ffbdc4f8b6b79aca387f80ade70e93f2a12e95f4f4c5e76982", + "output": "frameworks--astro.webp" + }, + "frameworks--expo.webp": { + "baseDirectory": "public/og", + "digest": "f7634f9c0051d6c5eac7ae38ac7292f10d058b1fe1377db052df651e42fad91f", + "fingerprint": "cec2d24c7fc64fc4780ceb1ae96a70017802fc569955a69653a2f4ff69d44c58", + "output": "frameworks--expo.webp" + }, + "frameworks--hono.webp": { + "baseDirectory": "public/og", + "digest": "7fed9e5338fcdad82289842c295556d094383b6d1d828094887aef27e22b2590", + "fingerprint": "a276a1ef99d8371a9153dc897b418c2f3f899c9fe4de30daebe3bb683a23138c", + "output": "frameworks--hono.webp" + }, + "frameworks--lit.webp": { + "baseDirectory": "public/og", + "digest": "4da47bbb1de1c8e354c328d91c7ae79a82965e35115d503c61c18f42387039b4", + "fingerprint": "cc8ac679e17719f7de15ffe4ca958e72499cf1afb108f7fd319ebe32680502aa", + "output": "frameworks--lit.webp" + }, + "frameworks--nest.webp": { + "baseDirectory": "public/og", + "digest": "1f447db07a16dd5aab087aa2ded573da27e8f828d4e6f06f41a99fe80f0d6610", + "fingerprint": "8408b149ba4de19e276346d23d4bff2c9c5305099a7885f69d207ba82bf72678", + "output": "frameworks--nest.webp" + }, + "frameworks--next.webp": { + "baseDirectory": "public/og", + "digest": "04b76b805b53a666d4f9b287a3e2ce599fbe90c40f089ad811608dfef56a6527", + "fingerprint": "4f51173c3651446e42be523de5656651850c02b7f2d8f34ab35f56c92ae0fce4", + "output": "frameworks--next.webp" + }, + "frameworks--nuxt.webp": { + "baseDirectory": "public/og", + "digest": "8b42978f4aea5394a9971febe5f4ee5df0cf0f16bf9f1ecea3c5ffe077e13763", + "fingerprint": "cb51de2179f90f3a7447f4c3faff7c6f4c394e0a3d115763cfc7e23bc23890b6", + "output": "frameworks--nuxt.webp" + }, + "frameworks--preact.webp": { + "baseDirectory": "public/og", + "digest": "f6e3e331869bdceb09bba2b614f0f526caa6293c9161c2ebeba92b87a714d786", + "fingerprint": "9efb00c969d1014df2e2abd15bd9e98e5cbc3d84bf66929884da564cbe94a7f6", + "output": "frameworks--preact.webp" + }, + "frameworks--qwik.webp": { + "baseDirectory": "public/og", + "digest": "e3c266ff0c4e17136abd0d23242f539bbbc6a6805202ee420fe277380cf088a7", + "fingerprint": "b38ff8aafb8511ba61fa1e1b1d9f6beb10a57494151ad29f55b379660554a5f3", + "output": "frameworks--qwik.webp" + }, + "frameworks--react-router.webp": { + "baseDirectory": "public/og", + "digest": "0de5184966d553b047cd1e44bd1959cc4cfb22738bfffcc2af5495b529150728", + "fingerprint": "6d1df71bd4f04d3840f1e5f06e8588ed4ded2c8c8aef5c8f2b6901d33ffe07b2", + "output": "frameworks--react-router.webp" + }, + "frameworks--react.webp": { + "baseDirectory": "public/og", + "digest": "4a8aec571ccd656a1a8c8d385c7aebb2b6f84339c4adb1ac09ea2d1ef39f807b", + "fingerprint": "1df93a3228a264ca3600caf7617d20004526d629af73fca0720f6ee23a4c518b", + "output": "frameworks--react.webp" + }, + "frameworks--remix.webp": { + "baseDirectory": "public/og", + "digest": "ce18b89b07cc5e27597b75f0e84c42bb37bd2b1e9e25501e3db544da2a6a8498", + "fingerprint": "f8383e724ccdbbbf8dab7bee4f4fa8e3781c3f75f27331d5cbd21a658fb89519", + "output": "frameworks--remix.webp" + }, + "frameworks--slidev.webp": { + "baseDirectory": "public/og", + "digest": "3dfd6a10be7a3193a09d5ecb3b75f5196ae50be180833607766bed23b4a63696", + "fingerprint": "87c351f5d6e1b226825578b48475bdf8a48f07ef5d7fed928104d4006ba5cc57", + "output": "frameworks--slidev.webp" + }, + "frameworks--solid.webp": { + "baseDirectory": "public/og", + "digest": "a7725c641100ad7514777c25ce94b5d8d7a49c57d4714e4add64d5fee5aed712", + "fingerprint": "bbaa383d490855cc298f7254ffdf0edd68111ec96cff255d87f111c2a884b741", + "output": "frameworks--solid.webp" + }, + "frameworks--svelte.webp": { + "baseDirectory": "public/og", + "digest": "27b098f2d435202b5c9dae2cdfb11f27acbf6ed2158d39212ad8e9c4c25a554c", + "fingerprint": "0140fc485397741cbc5be5c330385dbf50c0c9d46375df2c5e480e55f1db0dd3", + "output": "frameworks--svelte.webp" + }, + "frameworks--tanstack-start.webp": { + "baseDirectory": "public/og", + "digest": "52f19a5d4ec8a76542c7511e94c8b903f4078d7144c85cac5fb3c3bb25800d19", + "fingerprint": "eeda4ad3f30ab935b01c88bbdb813d3d4dae60951801848ec0dd84665b0ae02e", + "output": "frameworks--tanstack-start.webp" + }, + "frameworks--typescript.webp": { + "baseDirectory": "public/og", + "digest": "ac228720b1127c9bf1ae10c8abf0bb9d2f6dff610119ba295b8b243227b86371", + "fingerprint": "90921a725405bba2057a9c56462038b728aed1e84bde867eef0df326ac058351", + "output": "frameworks--typescript.webp" + }, + "frameworks--vite.webp": { + "baseDirectory": "public/og", + "digest": "bbd8e76a6042efab76a9d123aac39f9e1f569b78195aff047f85318c7cc24c25", + "fingerprint": "f8267951c3b2f59fcc4f208aa5e5d54fa191926c396e9859a2e924afa3acbd5d", + "output": "frameworks--vite.webp" + }, + "frameworks--vue.webp": { + "baseDirectory": "public/og", + "digest": "1ce80896450c6651ec03545720531d75e449fe8e5a7e4ab5df1f59855b0aba06", + "fingerprint": "ca28b80540562574f06dae31cf1b53b9d5bef812e1c21bd74a35b9c992df85f6", + "output": "frameworks--vue.webp" + }, + "guide--acknowledgements.webp": { + "baseDirectory": "public/og", + "digest": "7675536fa2abbff9f7cc3955cfeddf1a77da9aaab186a001d7c4f00ae9f535e2", + "fingerprint": "09e330c8798ffcbb2986394ab610320f0cb0d6a529cbe79e7946afa1978be3d5", + "output": "guide--acknowledgements.webp" + }, + "guide--ai-agents.webp": { + "baseDirectory": "public/og", + "digest": "f15e77aeb4e1bb0bbcb8e309b83a46478a86c31ddbcc92c6002a54108ed94baa", + "fingerprint": "7b0968751c094b43cdf443530010cd4f5cfb91df21b152f02a90933ae9bf6ef0", + "output": "guide--ai-agents.webp" + }, + "guide--architecture.webp": { + "baseDirectory": "public/og", + "digest": "ef0c5d330417af3e2700f1bdb08cccaeaf796e2c5a358785ed82643aa058410a", + "fingerprint": "14c01ef37c423122de85652aad62fa74fec2de93997fbca1576111cefdf7c0f4", + "output": "guide--architecture.webp" + }, + "guide--changelog.webp": { + "baseDirectory": "public/og", + "digest": "4e307153a1e15412f5f94d24e46ab7636f9866979ce798080975e190cf87c34a", + "fingerprint": "647685cfa323ac305fc534cf8ba4cd7200c75406705af3f7d7989b671dd06fa4", + "output": "guide--changelog.webp" + }, + "guide--cli.webp": { + "baseDirectory": "public/og", + "digest": "b0d1f43f58de8790399cf32c2715cae9617bbeb00ae9d36297d912102fdd08cf", + "fingerprint": "f71e7d09eabd0d21ef31b705f884bbba794d22ae045f321bf626f1f5c5b86138", + "output": "guide--cli.webp" + }, + "guide--config-builder.webp": { + "baseDirectory": "public/og", + "digest": "56b6fe4712aee4ff7a9d9c0a02bd2aec97a54e010621ceb59ca0e6968d4ef0b7", + "fingerprint": "1d55a6b0459c41deaaffb981012b36cef1564c5ad26a6446c7ed6d030dae0b2d", + "output": "guide--config-builder.webp" + }, + "guide--configuration.webp": { + "baseDirectory": "public/og", + "digest": "aca5ece6041d33791172b89649855bfad51d44460f4c8cbaed57502afa6bc575", + "fingerprint": "2e681025df15bba22312c18a6d8d627a0ea8b8dd293ac7d797609f48ae90d5ae", + "output": "guide--configuration.webp" + }, + "guide--development.webp": { + "baseDirectory": "public/og", + "digest": "588f90244287d39c2f05bbbc8f760207de195edada0ea1e7f7040b2b781b8471", + "fingerprint": "ca87956eb38f5e7b266feb21f8842b53e623b27be9cc361a558060981e5a5999", + "output": "guide--development.webp" + }, + "guide--doctor-report.webp": { + "baseDirectory": "public/og", + "digest": "88ead9b96c8cb0d2844ca944b4c94decd7d7b39b1b6e341e2228f9ff0d99b876", + "fingerprint": "838b484829c767095eadec83397ff429dae828813c017ef0360cdf433a7e5bf5", + "output": "guide--doctor-report.webp" + }, + "guide--getting-started.webp": { + "baseDirectory": "public/og", + "digest": "da66409f0b158344a53437c6c4f8d66e8feec32b6ad3305b061b543547e5c9df", + "fingerprint": "88e2e2f6d7a906b8187fe2cc6453ceda10b5ca843d4081bcab197302001c0952", + "output": "guide--getting-started.webp" + }, + "guide--inspector.webp": { + "baseDirectory": "public/og", + "digest": "5e5a2c7cd61bc5b154af1ca5022ae57d3264e1bc5d569f255f2590ccab7c56e6", + "fingerprint": "c1006f3067eebebf4e4bbd11c8ac07baf8c4308eb38939dcc51702a7645f62be", + "output": "guide--inspector.webp" + }, + "guide--installation.webp": { + "baseDirectory": "public/og", + "digest": "1be986020871eaf032040712d05ce3595aade4118f3e93046067938c92e4e20a", + "fingerprint": "6e0f354429c95c723bb6f085954641c6dcc529073c730ffaa60b5d19f0977e22", + "output": "guide--installation.webp" + }, + "guide--lite-migration.webp": { + "baseDirectory": "public/og", + "digest": "87bd8fdaa92aaba89dff675442054602aa9222a58d0855973658fe310ed7a657", + "fingerprint": "7ad5ffda04d4c607a3d8dc1bb1afbb67a4eaeeb32134c0e367d24e7a7868214a", + "output": "guide--lite-migration.webp" + }, + "guide--migration-v1-to-v2.webp": { + "baseDirectory": "public/og", + "digest": "722ab34decd27e9a345ddb50fdef0bd920c164207edf5d2f8547188c8aa24dc7", + "fingerprint": "5323aeb18baf284e1ed0030f8aeffd46385271103bb968610427397add7e7810", + "output": "guide--migration-v1-to-v2.webp" + }, + "guide--migration-v2-to-v3.webp": { + "baseDirectory": "public/og", + "digest": "800d6868c999daf261ca78fdb92a3ba0f7b10ccac464dbcefbf259a7b4e304e8", + "fingerprint": "52715fb3fbadf4b519e3d40dddaae9dfdb90fd32e519a413a712e1f518f5cbd2", + "output": "guide--migration-v2-to-v3.webp" + }, + "guide--monorepo.webp": { + "baseDirectory": "public/og", + "digest": "a5aab261edcdec3187c0166b950929d5aa3eadd252acad670893ebe86c048705", + "fingerprint": "7bf157f0cd7b062c8dd92e5ee53bdd84f9beeaa49be02a566ffa703e5167cd2b", + "output": "guide--monorepo.webp" + }, + "guide--playgrounds.webp": { + "baseDirectory": "public/og", + "digest": "83176959f838497d1e7c78f647845b7fabed66d42524b151c6835e8870544e96", + "fingerprint": "c9f6f9ec4f9144b9e12c60dc547651edf50c4ac6c35a51480866c03e1f2e515f", + "output": "guide--playgrounds.webp" + }, + "guide--presets.webp": { + "baseDirectory": "public/og", + "digest": "eb8eaee3ad41220c6ba958ec1c06f69de66c7e7738a20cdddf2a418238f79741", + "fingerprint": "391f66d103384037b1e39f2d91897c6e7ae7bc6b8c92c1349ae1e59fc907b43f", + "output": "guide--presets.webp" + }, + "guide--releases.webp": { + "baseDirectory": "public/og", + "digest": "6ace80465265cd9a3cbafd20355e32e75aee0b501cbf17c3002dd272f5b1941f", + "fingerprint": "381600e3ca35e5f1ea03262be02a4fc277a7c56873407f9a2a198ddbf30865cb", + "output": "guide--releases.webp" + }, + "guide--runtime.webp": { + "baseDirectory": "public/og", + "digest": "1cb074086f25eb33b18f9688bcd3ca480420c04cfe8681715bfd09e4358ea5d2", + "fingerprint": "2cfb16ddf87ae9dc3300a20d8884458c867e1e287a358347d8a03c749df7715b", + "output": "guide--runtime.webp" + }, + "guide--troubleshooting.webp": { + "baseDirectory": "public/og", + "digest": "948d4055175616c636b1a83a72b91562cf1b965f14203a8ee0e52bf091aa991b", + "fingerprint": "16e8acacbba75a75c04a3f68288bb0752f8ec1e10c82ed2980636b19c096a7d3", + "output": "guide--troubleshooting.webp" + }, + "guide--v4-removals.webp": { + "baseDirectory": "public/og", + "digest": "5b6e157b5ad450d7a048b7372b5b494f8e9ea6d9c5905a1e806d9cda9d8ea52b", + "fingerprint": "c6149e3c8b4a2e87125e02c33b37bd177efd9d6be6f516d4f9f7a6f22ac3574f", + "output": "guide--v4-removals.webp" + }, + "index.webp": { + "baseDirectory": "public/og", + "digest": "571a57cea3e28a5dbf2c30ee0abf3353ba17f65926c3bb3ebc2831a6735ff6a5", + "fingerprint": "4ff8ac8f6c8928fdf983d109423896b2c8168a9cca6263a49611e912f511d9c6", + "output": "index.webp" + }, + "packages--basic.webp": { + "baseDirectory": "public/og", + "digest": "870a42e6f55e251e69368b52d9a1078d815577696f97d650c2c18d8485903d9d", + "fingerprint": "0e3b76ed0384c22479c273970fef0afa87f3444ac3e544aed9252e317478dff3", + "output": "packages--basic.webp" + }, + "packages--core.webp": { + "baseDirectory": "public/og", + "digest": "448ed2f6447111672515147e87cc2e579e606e80b8d3c2dd7d36938155e6aa61", + "fingerprint": "4e64905e7b36f72b617eae126f735d361641fd9e47fea96994e0fd2fecdded35", + "output": "packages--core.webp" + }, + "packages--full.webp": { + "baseDirectory": "public/og", + "digest": "c9db254e944670119483693fa77f28c9b9dd9a518c13c4838996505374015b8c", + "fingerprint": "3301940326918d1ec0394aceef110fddf814bdab5ee69c93f23d393cf2ecc3df", + "output": "packages--full.webp" + }, + "packages--integrations.webp": { + "baseDirectory": "public/og", + "digest": "dea52c09f2e2caf13b6d00dc34163c1bc1e01cd70c7cd236420e536dec2db11a", + "fingerprint": "55439849747709558bf5892d8e03d33c845ead2faafff71c679b2f724920d669", + "output": "packages--integrations.webp" + }, + "packages--lite.webp": { + "baseDirectory": "public/og", + "digest": "e528bd236f102980f0df7a8ce7c767174fff157d14dfe32aed899ecfd00a04ec", + "fingerprint": "e7d04c7d8f43455d21cd4e8d2b3712183dc10e7e47a8645313475f985eb0c797", + "output": "packages--lite.webp" + }, + "packages--playground.webp": { + "baseDirectory": "public/og", + "digest": "86ad96ac968394f27c49f7637a086f01996c723bc562ec0e5e643593dde5b231", + "fingerprint": "b67576b88d9536e9e917db63d1f9f001ebf2d2bb22a936d7ada74645704f5046", + "output": "packages--playground.webp" + }, + "packages--tests.webp": { + "baseDirectory": "public/og", + "digest": "ed40b7b614d9bd6962be413e581c72cd229a759c561bdb670364ce762459ac59", + "fingerprint": "e0772e464c616e3e35520d0d58441de9afae6cd260f1a36ded4849066fc2a854", + "output": "packages--tests.webp" + }, + "tooling--extensions.webp": { + "baseDirectory": "public/og", + "digest": "ecf3e99e62f49c8d905b84dbab56624225ddd76e72bd1c1036fc2d77f6c32dea", + "fingerprint": "206f1af66e5cb5dd9aada9b2e1f3e876a580be3b4a6e238dde21f21d7d69642c", + "output": "tooling--extensions.webp" + }, + "tooling--formats.webp": { + "baseDirectory": "public/og", + "digest": "0eb6f1c845a22b9ba50fe58c404429223dbc26a77291b735388b7159173be5ad", + "fingerprint": "675af8253601b26f45589a91fdba1954d2f9292e0b0b91be7892bce9fbe25750", + "output": "tooling--formats.webp" + }, + "tooling--libraries.webp": { + "baseDirectory": "public/og", + "digest": "5414d01c4f18bc6c8e6e81b4f6abd7618375a4c6fc85ba0486456f021470c7e8", + "fingerprint": "ab28c745af99110e0c5ab51c92906fbf0a5842bf7cbdf8af1360d27b0b180365", + "output": "tooling--libraries.webp" + }, + "tooling--overview.webp": { + "baseDirectory": "public/og", + "digest": "48b109422cd22a7ffa60aa505c1efb636114614a264d5003f2653c52bcf2954b", + "fingerprint": "371e6d9936b2a04f19226deb3c578f3b7b5449bedd9ee4856446aa0d0f5ac2c0", + "output": "tooling--overview.webp" + }, + "tooling--testing.webp": { + "baseDirectory": "public/og", + "digest": "780064ee5300cdc7bdc58c791c3c365ed7f6cd4ce30343aa0797230c7885b665", + "fingerprint": "3d495d19a1eeca714050b01f05a33a04d6b40713b2e7aa8b6dd2afeb3604e205", + "output": "tooling--testing.webp" + }, + "tooling--tools.webp": { + "baseDirectory": "public/og", + "digest": "5992fb6b70f872167645cf9999b3902e4845872da823f04851bb46fa71dd07ab", + "fingerprint": "4e4df5db0bdd4c4f255e30d111d0d6c7e2cd4195565aac5562b7a7813d28058a", + "output": "tooling--tools.webp" + }, + "v1--changelog.webp": { + "baseDirectory": "public/og", + "digest": "7319be515bd635cf581f2e7ac505fefa93c2144226add724ef3b366929b711e4", + "fingerprint": "2853ba197476b047b0814ad54da8c98483692b9de66d1e356327aff81dde6b7f", + "output": "v1--changelog.webp" + }, + "v1--readme.webp": { + "baseDirectory": "public/og", + "digest": "2f54ab52defb9de98f4b435fec7086af54672f357265f302e75517434c613bed", + "fingerprint": "68f70e184580cc573f6d934414b7116dc2fb922b57606bd668d6f3b7d6ae1ce5", + "output": "v1--readme.webp" + }, + "v1--api.webp": { + "baseDirectory": "public/og", + "digest": "5b3fe73a83eb655447cd8059a087140a78b0dbae89f0a32cd024b6091b300f74", + "fingerprint": "bd51eea1ab2f6cd681296d8e7d485f4d4e80338de32b64d9e88690c97ede5e12", + "output": "v1--api.webp" + }, + "v1--api--reference--astro--src.webp": { + "baseDirectory": "public/og", + "digest": "e14f738927c829cb97b4f5d7b0c1293d933fdae08f57e5dbba7d3f902f036eb2", + "fingerprint": "bd91fce5f61c43c16bd1e6b16a336efb659db75fbbb87c9f9c1ececdc5e3f3fb", + "output": "v1--api--reference--astro--src.webp" + }, + "v1--api--reference--basic--src.webp": { + "baseDirectory": "public/og", + "digest": "d35a4781f906913e53a58952161fb4bfc30cfc237f7219149d2e67975aaa84b6", + "fingerprint": "6a7d86d29a91fcb43d3d4d0ef55c21990a14a38b45183aa37e95305c4ac05b3d", + "output": "v1--api--reference--basic--src.webp" + }, + "v1--api--reference--core--src.webp": { + "baseDirectory": "public/og", + "digest": "7d67a9445a6dd36d7ce6cf0ac9a1d9fbd3a17c7ecf6aa95361e13b6c6a61c742", + "fingerprint": "6390c8b3a976915f9be55b4c6438d9af8e76241c3aa0e07f7915b454b086370f", + "output": "v1--api--reference--core--src.webp" + }, + "v1--api--reference--expo--src.webp": { + "baseDirectory": "public/og", + "digest": "52b58b745e92dcb067c4bd06f3bb4fe420b05bd2b55c49d6908a337cb5641b6a", + "fingerprint": "c6cc53350f9a50712dfe508828125c5d3139e290b83580ea532ec4d0c0607bbf", + "output": "v1--api--reference--expo--src.webp" + }, + "v1--api--reference.webp": { + "baseDirectory": "public/og", + "digest": "d6a8a02b53c9927889a3e8b8202a775a6889ab8d6dd7423aad6fc2fd7d07a376", + "fingerprint": "ba0af3493928bfda00525bfebb48bb504f4fefef4d60298e8faa15f2c15b70d2", + "output": "v1--api--reference.webp" + }, + "v1--api--reference--nest--src.webp": { + "baseDirectory": "public/og", + "digest": "4cfa468489fde5b8e3a88f6b36209ee29defe8f74887c627ab6451e3bbe17d32", + "fingerprint": "87d1e775fab5bff0293d5132b7c798af20f87ecba3c6f2a2681276096e9e95f6", + "output": "v1--api--reference--nest--src.webp" + }, + "v1--api--reference--next--src.webp": { + "baseDirectory": "public/og", + "digest": "8890821da69cb1005d26e7ca179728172c6cb7c9579ef4ffc29361bbaec54755", + "fingerprint": "6fb3ddba490535a285e104d561a531ac68c3471eb65cc88c35b5349b516643fe", + "output": "v1--api--reference--next--src.webp" + }, + "v1--api--reference--optionals--src.webp": { + "baseDirectory": "public/og", + "digest": "17fe81c7b9689847aabc8a8d7a53134bafa4f1f1c7c6ca2bac7c887fca982830", + "fingerprint": "5cb63e46be3cc58e342ffe1406b9a0729785be60d7ae2538c25c2b54af8b0bec", + "output": "v1--api--reference--optionals--src.webp" + }, + "v1--api--reference--react--src.webp": { + "baseDirectory": "public/og", + "digest": "67c7b396f22c2f6532117d6d1a69eedc33d8d3de266a7f7edadf62a3afee58eb", + "fingerprint": "f1e5430e65adff514457acd4ed0f37cfc4d54c35cae7642cabf024f09f5c035b", + "output": "v1--api--reference--react--src.webp" + }, + "v1--api--reference--typescript--src.webp": { + "baseDirectory": "public/og", + "digest": "38d246f2bfe312eb2dcb2affd8f9a734b89f2cc0254cb9e0768649456b2bfad1", + "fingerprint": "b216c2bf3f2aec0ca399cb7f47baa812a4d51e7e70b94c06d8ec2a3f7559d212", + "output": "v1--api--reference--typescript--src.webp" + }, + "v1--frameworks--angular.webp": { + "baseDirectory": "public/og", + "digest": "1370c90b33722733978c3d8abec9470d972d86c3ad0b9a7d808b5a22366d6b22", + "fingerprint": "bcbf3b688e16e9c98284e3ac0b309aa7b00c19cb96bff91ad113fdc5637c3908", + "output": "v1--frameworks--angular.webp" + }, + "v1--frameworks--astro.webp": { + "baseDirectory": "public/og", + "digest": "98b7db9e976619a4939d41db52ea4ac6be3e68e55c960b7ec4a65127946e1f61", + "fingerprint": "a0e89ae8506dd53b85bbd0330e7d040566131c47a31da91d8144e3bda5e6feb1", + "output": "v1--frameworks--astro.webp" + }, + "v1--frameworks--expo.webp": { + "baseDirectory": "public/og", + "digest": "8c512a9e16dea5197e578956345f13349b8f648e42db01529b16f11c239ca414", + "fingerprint": "bcb491b4720ffa52f20a98ac322bfe8e210c2647f406aef2f97a502240e5433e", + "output": "v1--frameworks--expo.webp" + }, + "v1--frameworks--hono.webp": { + "baseDirectory": "public/og", + "digest": "236b57d2188c604c9622e7f57c426fe1bd48901d1e15fa1979157530302b96a3", + "fingerprint": "30db63388a448275bcc9b19f81b9f4457675bd4ce8ab9d9b385da3acb9192e6f", + "output": "v1--frameworks--hono.webp" + }, + "v1--frameworks--nest.webp": { + "baseDirectory": "public/og", + "digest": "0534a5baa9f870ded37ae6b37fdbcd0da10cef6d713087a4721d0cda3f965f76", + "fingerprint": "ce328af8eaf814d633091209094a9b418ffc43f6f6f903c0839b414a933d6747", + "output": "v1--frameworks--nest.webp" + }, + "v1--frameworks--next.webp": { + "baseDirectory": "public/og", + "digest": "a100dab2cca7a23d17c3ec83e319555748463c1dad90ee435bff8c888a3286ac", + "fingerprint": "2bd2415a54cdb8e8895d2e64c50192f9fb096170c55ba010bd506e599b459955", + "output": "v1--frameworks--next.webp" + }, + "v1--frameworks--qwik.webp": { + "baseDirectory": "public/og", + "digest": "87728d3d76bd41afe93d9e4d0d6374f71d04eca6ac3179ee6c1464d4facdf30b", + "fingerprint": "1c334009fa582d58508a5e4f9692978296af2156686c52130044e66366389f47", + "output": "v1--frameworks--qwik.webp" + }, + "v1--frameworks--react.webp": { + "baseDirectory": "public/og", + "digest": "476212d754f2f7156479f8866772cc7cd9621b6980ae164b307d3e84c341b8ba", + "fingerprint": "570f29bdf82e184d44e119c1ab62141e102647f6fb94186af0e2eb73d89c2f43", + "output": "v1--frameworks--react.webp" + }, + "v1--frameworks--remix.webp": { + "baseDirectory": "public/og", + "digest": "ac630d8b8cb0f854f5cce5a60e782d9e1f9d5021dddfaa8f9a15e632ac195f87", + "fingerprint": "2473d27fb0d2ee9a22aab602c01b2da088bfc711e49c1142f1d9b6bcaf12d0d9", + "output": "v1--frameworks--remix.webp" + }, + "v1--frameworks--solid.webp": { + "baseDirectory": "public/og", + "digest": "a9bf7f31cb56cc6f8f3935e8b426eef302de412a20d35011b61660116b5e99d4", + "fingerprint": "5934a90f9dad3da7c629f14bf7fddc3652fcb72f81574d29d30ff90bac492c6d", + "output": "v1--frameworks--solid.webp" + }, + "v1--frameworks--svelte.webp": { + "baseDirectory": "public/og", + "digest": "04529b81cf6255acb5b9900257df90a009e966e729c575e9b7b433c3bf6c4e21", + "fingerprint": "548dfa458cc44597276c1b53381b0a1717fb1d1160b8e928190c8b937efe2d4b", + "output": "v1--frameworks--svelte.webp" + }, + "v1--frameworks--typescript.webp": { + "baseDirectory": "public/og", + "digest": "6ebb9303cb71ef8b919a9088f94c725ec0bfec0e0a8e0c5ccdfb8a340a16a265", + "fingerprint": "184dffc7c3fd9f7394ad502489fddd39f263ce345110da458e9b70c46aa754c5", + "output": "v1--frameworks--typescript.webp" + }, + "v1--frameworks--vue.webp": { + "baseDirectory": "public/og", + "digest": "462875852ad28a8cd14dbf092e6e75d2d31932710215e4c86f3cfc28dcc2fd54", + "fingerprint": "a2bb5c369182820e41e53e5961fd6522bb6aa4cd820f142b83849e65d1fd95f8", + "output": "v1--frameworks--vue.webp" + }, + "v1--guide--changelog.webp": { + "baseDirectory": "public/og", + "digest": "f50fe3f868db91ecfc7b538a5ac630845bf9eeff057bb589524b6d78e91fb106", + "fingerprint": "e1f99741d7883be91d3302dbb0c536b710549411c20c94b72bb866cdb36584e8", + "output": "v1--guide--changelog.webp" + }, + "v1--guide--cli.webp": { + "baseDirectory": "public/og", + "digest": "57c85070721324cbeb0225a243e50f762bb119f9c0640149679f6c7146d5cfd3", + "fingerprint": "c1fb78c599d51f6a56e90c03f11e873d58d7f4cea0fcc3f0772a081ca54a705f", + "output": "v1--guide--cli.webp" + }, + "v1--guide--configuration.webp": { + "baseDirectory": "public/og", + "digest": "74383cef2bf657649814fa2c1cfd2bcebf3b0a0158bdf94122e6687e1328ef35", + "fingerprint": "9b67a678e1112ea200917cf4cf4fb3d90def0f4967e005801b23884ef645b691", + "output": "v1--guide--configuration.webp" + }, + "v1--guide--getting-started.webp": { + "baseDirectory": "public/og", + "digest": "2f1a06e57a217a9620fed33676d0b9f3ed5766c23bef5714fbc36a82229aa8c4", + "fingerprint": "ad4940cb7b5ce8325a04fcc6d21307a8df7ed84fd0b1d8c0b34da9e5959f2ca9", + "output": "v1--guide--getting-started.webp" + }, + "v1--guide--inspector.webp": { + "baseDirectory": "public/og", + "digest": "41cbe37fa82043c990e12e214b2bac57f7e8a016e70b0829f2a544342d7c8b4e", + "fingerprint": "e084992df1e12bff9517990cb445d8a570a95868b9e34e935fcebf2286c79b83", + "output": "v1--guide--inspector.webp" + }, + "v1--guide--installation.webp": { + "baseDirectory": "public/og", + "digest": "603562d69c043db75fd170749edf77d926e3890788e531d8c0488f7ec97b7908", + "fingerprint": "0c497d6d31d79768e4a2779aad93e8c2bbdb096dc2e9f5ae8ef3e8a6b084da72", + "output": "v1--guide--installation.webp" + }, + "v1--guide--playgrounds.webp": { + "baseDirectory": "public/og", + "digest": "a850e99f7213315e58d84f524876e8cf3f41cfff5941ce233eb0779a963d3d4a", + "fingerprint": "6812ad5053598d53a6874cb3dc22c928ac4fe3a1934b03b1d06e5172d60fad6b", + "output": "v1--guide--playgrounds.webp" + }, + "v1.webp": { + "baseDirectory": "public/og", + "digest": "ffcba63df76f3a790e78704f33eacd2e5592cfc1f0dd3c2255acf506ee406931", + "fingerprint": "2ae160c892414ad5d2bb7f1af58968e1d34117f1566b5201ddbd72e900545bfa", + "output": "v1.webp" + }, + "v1--packages--basic.webp": { + "baseDirectory": "public/og", + "digest": "16e7155fdf58b8589fb491abeda49d83946c83712d581f1e86cc7face00d716d", + "fingerprint": "8a8860ef5dabccca195926a786e23dcae170e40e571fc6466a3143a5273d65e4", + "output": "v1--packages--basic.webp" + }, + "v1--packages--core.webp": { + "baseDirectory": "public/og", + "digest": "0d6661c16d53bf8421d9613addd8ca8b9855f5a84fddce2f853d8641515c75b0", + "fingerprint": "9657d820d8f451bc60f156060056fc73a51372dfbcc6e99c5404dd8ff79a8767", + "output": "v1--packages--core.webp" + }, + "v1--packages--integrations.webp": { + "baseDirectory": "public/og", + "digest": "0eb81f16118e5bd264331495636b598670f8c7d3c92e961e2e64076b9f92b4eb", + "fingerprint": "1e6931280c07950a6e02ced16232e1ede4c81ba800b17944d7d01e0d427eba1d", + "output": "v1--packages--integrations.webp" + }, + "v1--packages--playground.webp": { + "baseDirectory": "public/og", + "digest": "21bf9adb9e2dd862775401cb247060a78aa34d81928b746780391483388d4544", + "fingerprint": "a52818a7cf0b8385da0a3e4789c647daa3d869069c7ef3d4bb5d9ab028214371", + "output": "v1--packages--playground.webp" + }, + "v1--packages--tests.webp": { + "baseDirectory": "public/og", + "digest": "7f762665404dc7fcfe0ba299de30fce15367eb68b77485e76fbdf7e7f824d8ba", + "fingerprint": "db9f3e24820eb4458f2d3151c573bdcc0c0aeb9559462ba855ff4e920e0cf694", + "output": "v1--packages--tests.webp" + }, + "v1--tooling--extensions.webp": { + "baseDirectory": "public/og", + "digest": "2dc637cae2c2216df16f35b05dd1fd90222c73418a4e2f924f129bfa2e50dcf1", + "fingerprint": "f31e5bddcd2b69a7eba43b61536787ee44e68a79664cfd0d3cfeb63e86e3ce1e", + "output": "v1--tooling--extensions.webp" + }, + "v1--tooling--formats.webp": { + "baseDirectory": "public/og", + "digest": "3f67d716cc300f837b3420746f977e86fb92a49104a6d78d021bb6d5cf98e82f", + "fingerprint": "9dd8e77779472870a8206d9744e05b524794eb17ecc6ceb9836fc88da478c151", + "output": "v1--tooling--formats.webp" + }, + "v1--tooling--libraries.webp": { + "baseDirectory": "public/og", + "digest": "1d3f8ee866bb568adcbf0e0fd645a8bb2963664af5f350ff813b638f34516ae4", + "fingerprint": "8a0cfbbbd0033e9e4e9419f611168c4caae20503d74ea024f92db3a29d5d17d0", + "output": "v1--tooling--libraries.webp" + }, + "v1--tooling--overview.webp": { + "baseDirectory": "public/og", + "digest": "3561b6d9240f3a7d41f425a240258867ed2ee1b363901575f0f85d743746f0b5", + "fingerprint": "0e82a6d034f6d25781cc1008c88f087f2035ab4acb3c828a92d6ddfd5e44420f", + "output": "v1--tooling--overview.webp" + }, + "v1--tooling--testing.webp": { + "baseDirectory": "public/og", + "digest": "ceb55f0a8d8c34980ff8d1691dc14362e3eca661bfe600bb3325896400700aac", + "fingerprint": "88c9c2ef9e6490dfafc8dc4c3997eac10056be79166b48a5ad40c665e8b57731", + "output": "v1--tooling--testing.webp" + }, + "v1--tooling--tools.webp": { + "baseDirectory": "public/og", + "digest": "7330c9e5ec96c56becf03c69169c225318206fde6001d555d704a8ed161b5725", + "fingerprint": "d1abc41e6d3f0ca2fefd1a914da5b2071a651a34a8797181179cd4386a2b9ae8", + "output": "v1--tooling--tools.webp" + }, + "v2--api.webp": { + "baseDirectory": "public/og", + "digest": "2178ddd9f4e86c360fb8a870f69a446729f81b39fdb425c64b80885a74251718", + "fingerprint": "9eb0086b6c7e80ba04882cbec5e63dd37588d63442ce99a6000a7450f9bfbb3c", + "output": "v2--api.webp" + }, + "v2--api--reference--astro--src.webp": { + "baseDirectory": "public/og", + "digest": "4b41bcea8d309a0abb9ace0eac37fbe5265e5221ddb221d751b6d60823a55a15", + "fingerprint": "e9796ee0fb16aba618b10ec195f33e53cd17fb4a66b2fe582d5b4d1fca25c911", + "output": "v2--api--reference--astro--src.webp" + }, + "v2--api--reference--basic--src.webp": { + "baseDirectory": "public/og", + "digest": "6e9328f467c4ba0bad651fe1b971d9c20a07361a05a5e88ad85840985d7dce64", + "fingerprint": "263d4fde056a11d1d978345f44456cccd7ce440e14156ea81c8a6c06e45f4b6e", + "output": "v2--api--reference--basic--src.webp" + }, + "v2--api--reference--core--src.webp": { + "baseDirectory": "public/og", + "digest": "d5682f787caa9cb56bf4bb722e9ff73b194162a98d2f36550791e90792f6d013", + "fingerprint": "24736f1392f8d76a232402d617428f4c94f35db56dd5b5c316c53ddb16031889", + "output": "v2--api--reference--core--src.webp" + }, + "v2--api--reference--expo--src.webp": { + "baseDirectory": "public/og", + "digest": "e96a65e3c236f84be2d17b36a4b8efac9705b5d7a608985538a743d847d2a2bb", + "fingerprint": "eaf940717e82c297cf058c06918f62e2d5b052e0597da72db2b31f70914547f7", + "output": "v2--api--reference--expo--src.webp" + }, + "v2--api--reference.webp": { + "baseDirectory": "public/og", + "digest": "4a2de6c7047fa7b82a299d7ed2384f74a9db978740b098cc8bdb32368a852eca", + "fingerprint": "67f2da0030109d2c9fa2e3c81c8139b7c8b5a0d79aaf271b41f4ec29be873622", + "output": "v2--api--reference.webp" + }, + "v2--api--reference--integrations--src.webp": { + "baseDirectory": "public/og", + "digest": "c4827df08739a0b36fe2afa77bf2ff7fd2e3a9554bdea079bd62255e45d8cabc", + "fingerprint": "34987ab3eb128d7eee0c5e752e2f329c7c3f8fcf1d426ba4f3b78e0d83f38634", + "output": "v2--api--reference--integrations--src.webp" + }, + "v2--api--reference--nest--src.webp": { + "baseDirectory": "public/og", + "digest": "8de78d9c071b9b230ab81cbbbbf3c4f3c8f03f7d05520a3be3bc0406b4164b1d", + "fingerprint": "50ec20ac4022a3a173d955a6ef7926be65f4b570cbfffee99c09b937489810e5", + "output": "v2--api--reference--nest--src.webp" + }, + "v2--api--reference--next--src.webp": { + "baseDirectory": "public/og", + "digest": "deb58c0b3db0ac278701cd59219b4aa4cb88737ef00a8c64239f71ee5e503ed0", + "fingerprint": "4db497c4fe629cde695be9ed059dfbd0a40bca465f1efd83a0da3c59d3efbac5", + "output": "v2--api--reference--next--src.webp" + }, + "v2--api--reference--react--src.webp": { + "baseDirectory": "public/og", + "digest": "f0a0df0305a9a2b63230e76955c476bdc8a4cdc7dfc24b877a9bce050d1c459c", + "fingerprint": "1323c7660cf614b80bb5b1c4ed61ac96d1babd9b239c10a26f94aa78c7613d93", + "output": "v2--api--reference--react--src.webp" + }, + "v2--api--reference--typescript--src.webp": { + "baseDirectory": "public/og", + "digest": "0b5a53b04f548c8c3340d91efc9ba53c06bd12bf2eabc440d6709ed032f14de2", + "fingerprint": "38dd5fa4a58841875ff757be519b91b62366f689deaeec6aab19e0437a234b74", + "output": "v2--api--reference--typescript--src.webp" + }, + "v2--frameworks--angular.webp": { + "baseDirectory": "public/og", + "digest": "1484ecc0c6b8f0b3df71df7c63b81313e1750ce276ebc98156a7886fe88c734b", + "fingerprint": "6d7dbe4efe3a7a337485be31d6795c5c5c8885e46d23e2cbd678fdbaa449c3a3", + "output": "v2--frameworks--angular.webp" + }, + "v2--frameworks--astro.webp": { + "baseDirectory": "public/og", + "digest": "2dc75685313146ed5dd35a6561f2454b65cbe7b5190d6af2daba5d6cae245685", + "fingerprint": "7d45d74a932a3398e4d38366bc9953ca4737987f8adbbbf1c7706be67e006b9b", + "output": "v2--frameworks--astro.webp" + }, + "v2--frameworks--expo.webp": { + "baseDirectory": "public/og", + "digest": "eda7ff31b7acff91ab7efeb59931a0d79e113b7641831d3232c20dae16340373", + "fingerprint": "90022c8dbc267482ba6a34dbbdd4b02539273c9d55cc65d4a9c5887594f92eb1", + "output": "v2--frameworks--expo.webp" + }, + "v2--frameworks--hono.webp": { + "baseDirectory": "public/og", + "digest": "d879d1e747169ac538d1d40141c9e7d27e65614540c4977dfb8140479b8f1cbe", + "fingerprint": "911d2a7fba64fbb6d1e13126b576df60cf84784c5f5e5159133ad2fb325c756e", + "output": "v2--frameworks--hono.webp" + }, + "v2--frameworks--lit.webp": { + "baseDirectory": "public/og", + "digest": "405b17b4bf39ef6285215148c4a8475867611bfdf788aa1f404fcaee17f41da6", + "fingerprint": "e33b4bbf440b181e14c2acbf62cae8fbaebebe4b726a47d2ebd4deace74aa7cd", + "output": "v2--frameworks--lit.webp" + }, + "v2--frameworks--nest.webp": { + "baseDirectory": "public/og", + "digest": "185d9e73f9e5758535348c38df746f54cb1573b4731d90f410201781f765d94a", + "fingerprint": "aec3c2e9b7439cca2f99efce40afce80408e44dcce0d57f8a72636735bbf37bd", + "output": "v2--frameworks--nest.webp" + }, + "v2--frameworks--next.webp": { + "baseDirectory": "public/og", + "digest": "553322db2b849f4a2a0b66f973a067cbdee33fd27f7054a060e09bde5edcc14d", + "fingerprint": "1082b0d6a850bd7a090aa22a4018dea0e22780f6b8511252e5a8733a6558b458", + "output": "v2--frameworks--next.webp" + }, + "v2--frameworks--nuxt.webp": { + "baseDirectory": "public/og", + "digest": "38b51140a967355d9a6c725df3813ed4623c876f30d79842c087e09a6f440320", + "fingerprint": "e31c96d8d9c67e6e7021a687b3a885dc85c12b5b08b7f1bd1d39c4a2b98bd5ec", + "output": "v2--frameworks--nuxt.webp" + }, + "v2--frameworks--preact.webp": { + "baseDirectory": "public/og", + "digest": "d5d5aa737305a2f07242686a4d2919fe3957e9886b1951c6e0f7eca19ab9a9ae", + "fingerprint": "8349dc36f358e73207b3364fc5f611083582f1434a6705db466aec9206278b9a", + "output": "v2--frameworks--preact.webp" + }, + "v2--frameworks--qwik.webp": { + "baseDirectory": "public/og", + "digest": "6cf44044188fa81d33a4a0018a54ee0274efc949a1c5d49a9ca4f5b08e1c83f5", + "fingerprint": "3fe8a7d627c2ef6b35f3d7096562dec5c0323ed6755430f215d4b8a7d1f69985", + "output": "v2--frameworks--qwik.webp" + }, + "v2--frameworks--react-router.webp": { + "baseDirectory": "public/og", + "digest": "5d8360b1eef6b998b73035a69db84cf473a8c6c9c3590fb12de3c4fa21c52bb9", + "fingerprint": "ee84bd42bf074f7c98517aead52e5a4300e835bdb94569a860e5189261aa7e87", + "output": "v2--frameworks--react-router.webp" + }, + "v2--frameworks--react.webp": { + "baseDirectory": "public/og", + "digest": "aa335f551fce4d2742af63f2ac6ea3c1e0ebc7008cbfa463720fcd750ca1c687", + "fingerprint": "1c844c2b656d963963bc9c8172ed672b3b72866f1aea17f9a4fd429c5bde7dd6", + "output": "v2--frameworks--react.webp" + }, + "v2--frameworks--remix.webp": { + "baseDirectory": "public/og", + "digest": "751e6c53d914d17e55292d6e515e74b21ed9617ba70b26136f0c92227ad41e52", + "fingerprint": "ed26ea67990de77b345d4a15106409967e47b9ab16091979a9ddc72837808e0d", + "output": "v2--frameworks--remix.webp" + }, + "v2--frameworks--slidev.webp": { + "baseDirectory": "public/og", + "digest": "196f81563f3aba1e1d8e05b14c0c88fd9731868f80f19f0d141c07818b1e785a", + "fingerprint": "c061f17a7a6ddd1de8f335555dd371455637eb4b2539a0c4f7cd10ba0a1c52de", + "output": "v2--frameworks--slidev.webp" + }, + "v2--frameworks--solid.webp": { + "baseDirectory": "public/og", + "digest": "4be70ae4e6b2108c29df68721222d9d9586255431d855f6ecb854a53c81854e0", + "fingerprint": "3473eb362d94ec9c62ab4db12c33d07b049485cd7a5df268d67d87da6edae9fc", + "output": "v2--frameworks--solid.webp" + }, + "v2--frameworks--svelte.webp": { + "baseDirectory": "public/og", + "digest": "6c9a2ca5ec4ae290a1f9d5992953fc550ee5642a0d7aeb44337931722a7c8ff9", + "fingerprint": "ad10b3779a9beb4fed77d46f2ca01eac55e5b64bc80446646637fea3b7c0dc3e", + "output": "v2--frameworks--svelte.webp" + }, + "v2--frameworks--tanstack-start.webp": { + "baseDirectory": "public/og", + "digest": "5d1a66d489af563dd0cf58c5403754900ac8515d7d01401a22046f225a6d7770", + "fingerprint": "2958a09c0e42032e0617b6a02dab34ae83a3282e9d60c8fda81aa9652ec7b5ec", + "output": "v2--frameworks--tanstack-start.webp" + }, + "v2--frameworks--typescript.webp": { + "baseDirectory": "public/og", + "digest": "e15ef3781dc961112792097dae9834c5e81256ea23031f83879674f50ea0e9fd", + "fingerprint": "c514503802a1b0d93b18acbfea4c244680efe3d3341c5ec7d5ec3511e0c7a56f", + "output": "v2--frameworks--typescript.webp" + }, + "v2--frameworks--vite.webp": { + "baseDirectory": "public/og", + "digest": "072ce9ee4d698661ee5c0e73d4d99d2cfe1d92a22acb97acb7c23b9cecf20c07", + "fingerprint": "f691d319cb798caabdf5bff667972772500144cd75e53f65200744dd90ec6ad2", + "output": "v2--frameworks--vite.webp" + }, + "v2--frameworks--vue.webp": { + "baseDirectory": "public/og", + "digest": "83d1ae7ff6c4c48e6f6af00d3d78f4451208af3f0b4befcfa62514ec51ea094f", + "fingerprint": "9be1e1963950f92191f99cce4edc4f44caf7a228ec8543182f286181ce8a90d3", + "output": "v2--frameworks--vue.webp" + }, + "v2--guide--acknowledgements.webp": { + "baseDirectory": "public/og", + "digest": "216a2594d73f084a0e89f01c86ea533f27998a1b27c22680edc79f5945d194a9", + "fingerprint": "e01ff4834909bc729ae92e3966025c4fff8ca94e48cd88a31da1489b1d6faf92", + "output": "v2--guide--acknowledgements.webp" + }, + "v2--guide--ai-agents.webp": { + "baseDirectory": "public/og", + "digest": "d1a854509e14a796b7f502e80262dedc3bfaa9c6ac20caeb25631b1979449651", + "fingerprint": "16caca1162e09231739feefb73f652dc663e0131745b28701fd62b11ad899ed0", + "output": "v2--guide--ai-agents.webp" + }, + "v2--guide--architecture.webp": { + "baseDirectory": "public/og", + "digest": "26ff3d063b412050f3176c2822ef9dc9e2ab71962b3d5ff9a829f1b5a0960f83", + "fingerprint": "f11bf0c02fb98089233eb24189435b834b04c6885c4066fe56ae371f378ae61c", + "output": "v2--guide--architecture.webp" + }, + "v2--guide--changelog.webp": { + "baseDirectory": "public/og", + "digest": "042e0e52184609d5664992bac57e457616fea3fd04525f85a3c9d19c90bb6b26", + "fingerprint": "c0d6faf9b646d46aefda53c491040954c219ee3edfc2bc08bee1b6326fe062bf", + "output": "v2--guide--changelog.webp" + }, + "v2--guide--cli.webp": { + "baseDirectory": "public/og", + "digest": "d74bfe9ca87ae66b54e9c802d92515ba0c9015c0f4048426fa53a324a082df26", + "fingerprint": "b6ef78eace8dd4a0feffdffc3301ee70e11f8e947999a8bc99e4df34ba7c015b", + "output": "v2--guide--cli.webp" + }, + "v2--guide--config-builder.webp": { + "baseDirectory": "public/og", + "digest": "19aea7043492ee358f9ef51853d29a4ac7da01f967219dd376d756a422b06b51", + "fingerprint": "8599f6cd963943b0493e1ce6f15e07e79aabce7b6a26917d69a6ab021f1ffeda", + "output": "v2--guide--config-builder.webp" + }, + "v2--guide--configuration.webp": { + "baseDirectory": "public/og", + "digest": "19f65c75f581a92608a30372e7d6da6da5e101861c2e0c9b7cfdc70d0d43e16d", + "fingerprint": "2cfa966ecbd739d3348a7d25ca7445b54b106fab7c792bf06f1543d7dafa8611", + "output": "v2--guide--configuration.webp" + }, + "v2--guide--development.webp": { + "baseDirectory": "public/og", + "digest": "436c7c2d78c08688e5ef54bedc5a917b0b97d4aed22ef4dfe79edda503ffa3a2", + "fingerprint": "141e046f500fd4d766aafd766adaf4a917b5310f71b1a34e6bacb8f54a6ba7e1", + "output": "v2--guide--development.webp" + }, + "v2--guide--doctor-report.webp": { + "baseDirectory": "public/og", + "digest": "d3ebaef1d800c4f2b672059025c30d0ce5766b2177f9fd63843b009f520318b9", + "fingerprint": "abddd29904624a05b5af696d60ce1d7b5d051b56ece46e4afda063cbd1ab550c", + "output": "v2--guide--doctor-report.webp" + }, + "v2--guide--getting-started.webp": { + "baseDirectory": "public/og", + "digest": "a1dfaf4606b9ca17f5be4fc62eddc274d88412366fb28d90188859333a4ba6e6", + "fingerprint": "c70f0a7a97eaf82cedec0cb94f0b1149b80473386c3ecbc6595a95ecb3cc9579", + "output": "v2--guide--getting-started.webp" + }, + "v2--guide--inspector.webp": { + "baseDirectory": "public/og", + "digest": "ec2f9ef7e0fd9eb446c4c396f47ab03bc7202ea6f81de67c493e9b6b48b19dde", + "fingerprint": "3c87f5c18fe7cd694bcc147d4b61e913fc9c98e43a2f9745090869865737ea06", + "output": "v2--guide--inspector.webp" + }, + "v2--guide--installation.webp": { + "baseDirectory": "public/og", + "digest": "2bdfe0088b885c38a55cbab00bd8963a8ddd98f004c9b4ffd8b18d22a9ffead9", + "fingerprint": "5291a89447e111ad9abb9bbc5a1000f3168ba582ab6c663d9f9be160c7a83f73", + "output": "v2--guide--installation.webp" + }, + "v2--guide--lite-migration.webp": { + "baseDirectory": "public/og", + "digest": "a34f5465c9c351b17633411707a4dc829ce24409a1ff5c0acfd9b9409457aa25", + "fingerprint": "a684f9dac4a244951cc7e961ba156e11af1f21236c171eeeedf8998e35e3d44d", + "output": "v2--guide--lite-migration.webp" + }, + "v2--guide--migration-v1-to-v2.webp": { + "baseDirectory": "public/og", + "digest": "143bd51ffd0d7aa7e17ad35ab9fdc35e6d91c70b5849d4f9156c4abc5e292893", + "fingerprint": "6dfd1a5738698b0f7cbfd7b4683e0b341e2afa4260ae0fb2de50b8fe130c4dcd", + "output": "v2--guide--migration-v1-to-v2.webp" + }, + "v2--guide--monorepo.webp": { + "baseDirectory": "public/og", + "digest": "c70168cedae4ef0a6fae65817a481886ae81219302fb4c6bc4474109cf801c19", + "fingerprint": "16665bd4cd948d768de5dcb643eb43439645db8b9df5de370a0a506eaf7bfb7f", + "output": "v2--guide--monorepo.webp" + }, + "v2--guide--playgrounds.webp": { + "baseDirectory": "public/og", + "digest": "7b798cb0e0c2f563f681f0a95be4e55c0c0911deeed9ab1c068e781990fe9350", + "fingerprint": "800c11faee0b4e1a4137abe2285288d578b638c4cd534f9f7ebca7c308254d09", + "output": "v2--guide--playgrounds.webp" + }, + "v2--guide--presets.webp": { + "baseDirectory": "public/og", + "digest": "492978a2945144ce1f45a1bbe4e684dc0748e561d9b50b05e2faf9a687ed8042", + "fingerprint": "395a836dabae922c18fd7b9a9e356356f65b390043fca5d891517b0a42edfc89", + "output": "v2--guide--presets.webp" + }, + "v2--guide--releases.webp": { + "baseDirectory": "public/og", + "digest": "a1bee65c02b85c608f209ea25905beda3e703468db902793f504bb247d64ee07", + "fingerprint": "80c1dcf4e29121faa726c5b0a617b75a6326aa1eb518bd568fc4d3b3087cd9dc", + "output": "v2--guide--releases.webp" + }, + "v2--guide--runtime.webp": { + "baseDirectory": "public/og", + "digest": "17a34e230f10eb9931f888744445a89efbb5470e3c760ff2d8b839b5733df6d1", + "fingerprint": "07d932885bfb2be062798f9a705540f52596d29c2eb5784623e8e8b0e151471e", + "output": "v2--guide--runtime.webp" + }, + "v2--guide--troubleshooting.webp": { + "baseDirectory": "public/og", + "digest": "494d707ac41236feb3f73ed7c82cfe5ec5d4d5827151ece19b6129a57b09d9e0", + "fingerprint": "00d854698521b4d61e07a2ba0676fa09383b4f11e887759ef1f31dde95d59a01", + "output": "v2--guide--troubleshooting.webp" + }, + "v2.webp": { + "baseDirectory": "public/og", + "digest": "3308e190d7aa500443ade1292eeef42ccccbb8f2c322893de2b47dbbb8f036bd", + "fingerprint": "3d63fda2be4af8448aba2dab8099bca62018671adbc6304964cd7d862f14e025", + "output": "v2.webp" + }, + "v2--packages--basic.webp": { + "baseDirectory": "public/og", + "digest": "9ed770427d2924d7c0886302d673838e10cf553cd7dc075ca046b5560d83bc21", + "fingerprint": "7ad927b55b6b5e33fec441c27400c9a02fa2f4f2c953982b1e0fd7f35701d56a", + "output": "v2--packages--basic.webp" + }, + "v2--packages--core.webp": { + "baseDirectory": "public/og", + "digest": "a76cba23e07b3c36e6f4a83598bed8446ae970788e72cb921df5efffd642672a", + "fingerprint": "6f52906939a8133685d9e37a3d5d912e55b981145a336794a7d10796371dacad", + "output": "v2--packages--core.webp" + }, + "v2--packages--integrations.webp": { + "baseDirectory": "public/og", + "digest": "8252a3c0264b815302741bfbd6f47687e82c7cd49b0c1ddba41142318b4efa81", + "fingerprint": "92d663efe74846bbb2cb82987f89285185e0b40217393942f8809cbef78cacdc", + "output": "v2--packages--integrations.webp" + }, + "v2--packages--lite.webp": { + "baseDirectory": "public/og", + "digest": "ecf07db5a0a42451a32bac44949fe41981b30c5c7d5a8f2f7a04b93361be57f8", + "fingerprint": "29ca2c45a9cbfac8a1c8805fab867eecda3347c8d355d7031c80e75f9d352382", + "output": "v2--packages--lite.webp" + }, + "v2--packages--playground.webp": { + "baseDirectory": "public/og", + "digest": "f1e5e79b0277db0e64d5a611a0c7227fe799ecae486c3d17a42a796821827711", + "fingerprint": "807e0906b4aadc65dc33cb2a540ac7c7e5367625555208729773eecf83e3d476", + "output": "v2--packages--playground.webp" + }, + "v2--packages--tests.webp": { + "baseDirectory": "public/og", + "digest": "d2d0641fcc31827bbea3eef9c8ff2d76801ace2fef0955f99182e2302761eb5a", + "fingerprint": "419a03d597d404752bca35f67ee8b592b4f469a66b81f42642c9ca6bcfc7d9ca", + "output": "v2--packages--tests.webp" + }, + "v2--tooling--extensions.webp": { + "baseDirectory": "public/og", + "digest": "4d4e72ba1064a073b44b9a086a19f0185e635e66a5cdea18c1f679e5c3864b6f", + "fingerprint": "3470ddd4f487c076cf6c4526f103052cf180caeb3d0156ad04438e52114a9d36", + "output": "v2--tooling--extensions.webp" + }, + "v2--tooling--formats.webp": { + "baseDirectory": "public/og", + "digest": "d56a0259266478e5712e401f7ac17e97d088e45a9b0ae969280b8c72eabb36c0", + "fingerprint": "15dca65e7222a8eb7365bc8b39e2190f3975be52f769ff17da68f7e7c35b5afc", + "output": "v2--tooling--formats.webp" + }, + "v2--tooling--libraries.webp": { + "baseDirectory": "public/og", + "digest": "a7b24cb00e3b05bb06aed462cb1f62cdc46fd8d3ded203a426f1ed9567c5434d", + "fingerprint": "7a8d9255ff998e1f0a4acc5a3cb49d0d2749ecc842969d5222dd5312459e8c67", + "output": "v2--tooling--libraries.webp" + }, + "v2--tooling--overview.webp": { + "baseDirectory": "public/og", + "digest": "08436d3c92ff11cef3ae686f963d11a1e40bde93a26fab1acd0b80d9f2031f85", + "fingerprint": "9bad4b3c0950661b7174b5de2cd50987cad85ce083d4dcb21fd1a4374e0ae82a", + "output": "v2--tooling--overview.webp" + }, + "v2--tooling--testing.webp": { + "baseDirectory": "public/og", + "digest": "f980a5e2d92294ff2fbebb34fbf184808079dac1823e75d4c9f219c839275582", + "fingerprint": "34a56bdca95c90618d470ca60043fa68eaf92368ea9aa03be6d26e5e2da7a820", + "output": "v2--tooling--testing.webp" + }, + "v2--tooling--tools.webp": { + "baseDirectory": "public/og", + "digest": "14eabc42107fa8bc14b94597b178389e0708cc9ad4c3a073f54abce1d51d0364", + "fingerprint": "b2a31e7a1f574ee66cee923d382cd13c4ad13d7937951565d54d2cfaabc0cf55", + "output": "v2--tooling--tools.webp" + } + }, + "generatorVersion": "1.1.1", + "version": 3 +} diff --git a/apps/docs/og.audit.config.mjs b/apps/docs/og.audit.config.mjs new file mode 100644 index 00000000..2f099307 --- /dev/null +++ b/apps/docs/og.audit.config.mjs @@ -0,0 +1,10 @@ +import { defineAuditConfig } from '@santi020k/og/audit/config' +import { standardAuditRules } from '@santi020k/og/audit/rules' + +export default defineAuditConfig({ + directory: 'dist', + manifest: 'public/og/manifest.json', + requireUniqueTitles: false, + siteUrl: 'https://eslint.santi020k.com', + ...standardAuditRules({ sitemap: { reportOrphans: true } }) +}) diff --git a/apps/docs/package.json b/apps/docs/package.json index 8acc5e58..1ce7a0df 100644 --- a/apps/docs/package.json +++ b/apps/docs/package.json @@ -9,10 +9,12 @@ "description": "Astro Starlight documentation site for the @santi020k/eslint-config-basic monorepo", "type": "module", "scripts": { - "docs:build": "node ../../scripts/prepare-starlight-docs.mjs && node scripts/generate-og-images.mjs && rm -rf .astro && astro build", - "docs:dev": "node ../../scripts/prepare-starlight-docs.mjs && node scripts/generate-og-images.mjs && rm -rf .astro && astro dev", - "generate:og": "node scripts/generate-og-images.mjs", - "generate:og:force": "FORCE_OG=1 node scripts/generate-og-images.mjs", + "docs:build": "node ../../scripts/prepare-starlight-docs.mjs && santi-og generate --config scripts/generate-og-images.mjs && rm -rf .astro && astro build && santi-og audit", + "docs:dev": "node ../../scripts/prepare-starlight-docs.mjs && santi-og generate --config scripts/generate-og-images.mjs && rm -rf .astro && astro dev", + "generate:og": "santi-og generate --config scripts/generate-og-images.mjs", + "generate:og:force": "santi-og generate --config scripts/generate-og-images.mjs --force", + "check:og": "santi-og check --config scripts/generate-og-images.mjs", + "audit:seo": "santi-og audit", "docs:preview": "astro preview", "docs:clean": "rm -rf dist .astro src/content/docs/api/reference", "build": "echo \"No direct build step required\"", @@ -33,6 +35,7 @@ "@axe-core/playwright": "catalog:", "@playwright/test": "catalog:", "@resvg/resvg-js": "catalog:", + "@santi020k/og": "1.1.1", "astro": "catalog:", "chrome-launcher": "catalog:", "lighthouse": "catalog:", diff --git a/apps/docs/public/og/api--reference--astro--src.webp b/apps/docs/public/og/api--reference--astro--src.webp index 3360b963..64c3fc23 100644 Binary files a/apps/docs/public/og/api--reference--astro--src.webp and b/apps/docs/public/og/api--reference--astro--src.webp differ diff --git a/apps/docs/public/og/api--reference--basic--src.webp b/apps/docs/public/og/api--reference--basic--src.webp index fd023903..36b71646 100644 Binary files a/apps/docs/public/og/api--reference--basic--src.webp and b/apps/docs/public/og/api--reference--basic--src.webp differ diff --git a/apps/docs/public/og/api--reference--core--src.webp b/apps/docs/public/og/api--reference--core--src.webp index 62934429..d8d0cdbf 100644 Binary files a/apps/docs/public/og/api--reference--core--src.webp and b/apps/docs/public/og/api--reference--core--src.webp differ diff --git a/apps/docs/public/og/api--reference--expo--src.webp b/apps/docs/public/og/api--reference--expo--src.webp index bf9ec00d..15a2ecdd 100644 Binary files a/apps/docs/public/og/api--reference--expo--src.webp and b/apps/docs/public/og/api--reference--expo--src.webp differ diff --git a/apps/docs/public/og/api--reference--integrations--src.webp b/apps/docs/public/og/api--reference--integrations--src.webp index 6d53fd68..26a5eff5 100644 Binary files a/apps/docs/public/og/api--reference--integrations--src.webp and b/apps/docs/public/og/api--reference--integrations--src.webp differ diff --git a/apps/docs/public/og/api--reference--nest--src.webp b/apps/docs/public/og/api--reference--nest--src.webp index a41e54d7..25a07282 100644 Binary files a/apps/docs/public/og/api--reference--nest--src.webp and b/apps/docs/public/og/api--reference--nest--src.webp differ diff --git a/apps/docs/public/og/api--reference--next--src.webp b/apps/docs/public/og/api--reference--next--src.webp index 14c070cf..064adab3 100644 Binary files a/apps/docs/public/og/api--reference--next--src.webp and b/apps/docs/public/og/api--reference--next--src.webp differ diff --git a/apps/docs/public/og/api--reference--react--src.webp b/apps/docs/public/og/api--reference--react--src.webp index 62c1e461..d86ce6f1 100644 Binary files a/apps/docs/public/og/api--reference--react--src.webp and b/apps/docs/public/og/api--reference--react--src.webp differ diff --git a/apps/docs/public/og/api--reference--typescript--src.webp b/apps/docs/public/og/api--reference--typescript--src.webp index e0ddbd28..12bd0d60 100644 Binary files a/apps/docs/public/og/api--reference--typescript--src.webp and b/apps/docs/public/og/api--reference--typescript--src.webp differ diff --git a/apps/docs/public/og/api--reference.webp b/apps/docs/public/og/api--reference.webp index e90dc3ae..3b7b86e5 100644 Binary files a/apps/docs/public/og/api--reference.webp and b/apps/docs/public/og/api--reference.webp differ diff --git a/apps/docs/public/og/api.webp b/apps/docs/public/og/api.webp index 58956942..23b9aa5e 100644 Binary files a/apps/docs/public/og/api.webp and b/apps/docs/public/og/api.webp differ diff --git a/apps/docs/public/og/frameworks--angular.webp b/apps/docs/public/og/frameworks--angular.webp index 899bc378..343f2974 100644 Binary files a/apps/docs/public/og/frameworks--angular.webp and b/apps/docs/public/og/frameworks--angular.webp differ diff --git a/apps/docs/public/og/frameworks--astro.webp b/apps/docs/public/og/frameworks--astro.webp index d5a17d8f..ba0a819d 100644 Binary files a/apps/docs/public/og/frameworks--astro.webp and b/apps/docs/public/og/frameworks--astro.webp differ diff --git a/apps/docs/public/og/frameworks--expo.webp b/apps/docs/public/og/frameworks--expo.webp index 7e3a59d3..bff4e1d1 100644 Binary files a/apps/docs/public/og/frameworks--expo.webp and b/apps/docs/public/og/frameworks--expo.webp differ diff --git a/apps/docs/public/og/frameworks--hono.webp b/apps/docs/public/og/frameworks--hono.webp index b6bcb290..d56dfb3b 100644 Binary files a/apps/docs/public/og/frameworks--hono.webp and b/apps/docs/public/og/frameworks--hono.webp differ diff --git a/apps/docs/public/og/frameworks--lit.webp b/apps/docs/public/og/frameworks--lit.webp index a81d1390..6f954344 100644 Binary files a/apps/docs/public/og/frameworks--lit.webp and b/apps/docs/public/og/frameworks--lit.webp differ diff --git a/apps/docs/public/og/frameworks--nest.webp b/apps/docs/public/og/frameworks--nest.webp index 8a7f9379..63a6e87a 100644 Binary files a/apps/docs/public/og/frameworks--nest.webp and b/apps/docs/public/og/frameworks--nest.webp differ diff --git a/apps/docs/public/og/frameworks--next.webp b/apps/docs/public/og/frameworks--next.webp index 81c082c4..726bbf31 100644 Binary files a/apps/docs/public/og/frameworks--next.webp and b/apps/docs/public/og/frameworks--next.webp differ diff --git a/apps/docs/public/og/frameworks--nuxt.webp b/apps/docs/public/og/frameworks--nuxt.webp index d86fe916..c7bb93a9 100644 Binary files a/apps/docs/public/og/frameworks--nuxt.webp and b/apps/docs/public/og/frameworks--nuxt.webp differ diff --git a/apps/docs/public/og/frameworks--preact.webp b/apps/docs/public/og/frameworks--preact.webp index e6498b20..acaa5da7 100644 Binary files a/apps/docs/public/og/frameworks--preact.webp and b/apps/docs/public/og/frameworks--preact.webp differ diff --git a/apps/docs/public/og/frameworks--qwik.webp b/apps/docs/public/og/frameworks--qwik.webp index bf17eba8..1e26d3bf 100644 Binary files a/apps/docs/public/og/frameworks--qwik.webp and b/apps/docs/public/og/frameworks--qwik.webp differ diff --git a/apps/docs/public/og/frameworks--react-router.webp b/apps/docs/public/og/frameworks--react-router.webp index cb43c0eb..8488b5e8 100644 Binary files a/apps/docs/public/og/frameworks--react-router.webp and b/apps/docs/public/og/frameworks--react-router.webp differ diff --git a/apps/docs/public/og/frameworks--react.webp b/apps/docs/public/og/frameworks--react.webp index 95cc49e5..0e94b467 100644 Binary files a/apps/docs/public/og/frameworks--react.webp and b/apps/docs/public/og/frameworks--react.webp differ diff --git a/apps/docs/public/og/frameworks--remix.webp b/apps/docs/public/og/frameworks--remix.webp index 64e56d08..1fc970d3 100644 Binary files a/apps/docs/public/og/frameworks--remix.webp and b/apps/docs/public/og/frameworks--remix.webp differ diff --git a/apps/docs/public/og/frameworks--slidev.webp b/apps/docs/public/og/frameworks--slidev.webp index 3871d6fe..0f69665f 100644 Binary files a/apps/docs/public/og/frameworks--slidev.webp and b/apps/docs/public/og/frameworks--slidev.webp differ diff --git a/apps/docs/public/og/frameworks--solid.webp b/apps/docs/public/og/frameworks--solid.webp index b0d97c10..91d877d5 100644 Binary files a/apps/docs/public/og/frameworks--solid.webp and b/apps/docs/public/og/frameworks--solid.webp differ diff --git a/apps/docs/public/og/frameworks--svelte.webp b/apps/docs/public/og/frameworks--svelte.webp index acad1f3a..6fcf78aa 100644 Binary files a/apps/docs/public/og/frameworks--svelte.webp and b/apps/docs/public/og/frameworks--svelte.webp differ diff --git a/apps/docs/public/og/frameworks--tanstack-start.webp b/apps/docs/public/og/frameworks--tanstack-start.webp index 205f4dd3..8554ca3e 100644 Binary files a/apps/docs/public/og/frameworks--tanstack-start.webp and b/apps/docs/public/og/frameworks--tanstack-start.webp differ diff --git a/apps/docs/public/og/frameworks--typescript.webp b/apps/docs/public/og/frameworks--typescript.webp index 6f257810..d6620335 100644 Binary files a/apps/docs/public/og/frameworks--typescript.webp and b/apps/docs/public/og/frameworks--typescript.webp differ diff --git a/apps/docs/public/og/frameworks--vite.webp b/apps/docs/public/og/frameworks--vite.webp index 95dc3339..7061ce1e 100644 Binary files a/apps/docs/public/og/frameworks--vite.webp and b/apps/docs/public/og/frameworks--vite.webp differ diff --git a/apps/docs/public/og/frameworks--vue.webp b/apps/docs/public/og/frameworks--vue.webp index 9bd59262..7070d589 100644 Binary files a/apps/docs/public/og/frameworks--vue.webp and b/apps/docs/public/og/frameworks--vue.webp differ diff --git a/apps/docs/public/og/guide--acknowledgements.webp b/apps/docs/public/og/guide--acknowledgements.webp index eab87928..9baff550 100644 Binary files a/apps/docs/public/og/guide--acknowledgements.webp and b/apps/docs/public/og/guide--acknowledgements.webp differ diff --git a/apps/docs/public/og/guide--ai-agents.webp b/apps/docs/public/og/guide--ai-agents.webp index e3e9e74a..74905188 100644 Binary files a/apps/docs/public/og/guide--ai-agents.webp and b/apps/docs/public/og/guide--ai-agents.webp differ diff --git a/apps/docs/public/og/guide--architecture.webp b/apps/docs/public/og/guide--architecture.webp index 032b35ec..02392b81 100644 Binary files a/apps/docs/public/og/guide--architecture.webp and b/apps/docs/public/og/guide--architecture.webp differ diff --git a/apps/docs/public/og/guide--changelog.webp b/apps/docs/public/og/guide--changelog.webp index 5d95454f..d4c85388 100644 Binary files a/apps/docs/public/og/guide--changelog.webp and b/apps/docs/public/og/guide--changelog.webp differ diff --git a/apps/docs/public/og/guide--cli.webp b/apps/docs/public/og/guide--cli.webp index ab5957ba..35e6bd59 100644 Binary files a/apps/docs/public/og/guide--cli.webp and b/apps/docs/public/og/guide--cli.webp differ diff --git a/apps/docs/public/og/guide--config-builder.webp b/apps/docs/public/og/guide--config-builder.webp index bcc1651d..354c8945 100644 Binary files a/apps/docs/public/og/guide--config-builder.webp and b/apps/docs/public/og/guide--config-builder.webp differ diff --git a/apps/docs/public/og/guide--configuration.webp b/apps/docs/public/og/guide--configuration.webp index ea5ae08e..3fbdddde 100644 Binary files a/apps/docs/public/og/guide--configuration.webp and b/apps/docs/public/og/guide--configuration.webp differ diff --git a/apps/docs/public/og/guide--development.webp b/apps/docs/public/og/guide--development.webp index 81d0d381..205d940d 100644 Binary files a/apps/docs/public/og/guide--development.webp and b/apps/docs/public/og/guide--development.webp differ diff --git a/apps/docs/public/og/guide--doctor-report.webp b/apps/docs/public/og/guide--doctor-report.webp index ad2ad177..9f0f7764 100644 Binary files a/apps/docs/public/og/guide--doctor-report.webp and b/apps/docs/public/og/guide--doctor-report.webp differ diff --git a/apps/docs/public/og/guide--getting-started.webp b/apps/docs/public/og/guide--getting-started.webp index e49c89ef..62d5dd2f 100644 Binary files a/apps/docs/public/og/guide--getting-started.webp and b/apps/docs/public/og/guide--getting-started.webp differ diff --git a/apps/docs/public/og/guide--inspector.webp b/apps/docs/public/og/guide--inspector.webp index 708b3766..4bbb87a4 100644 Binary files a/apps/docs/public/og/guide--inspector.webp and b/apps/docs/public/og/guide--inspector.webp differ diff --git a/apps/docs/public/og/guide--installation.webp b/apps/docs/public/og/guide--installation.webp index e21ad1ed..ea8db6c3 100644 Binary files a/apps/docs/public/og/guide--installation.webp and b/apps/docs/public/og/guide--installation.webp differ diff --git a/apps/docs/public/og/guide--lite-migration.webp b/apps/docs/public/og/guide--lite-migration.webp index 3514e854..7a68d8e2 100644 Binary files a/apps/docs/public/og/guide--lite-migration.webp and b/apps/docs/public/og/guide--lite-migration.webp differ diff --git a/apps/docs/public/og/guide--migration-v1-to-v2.webp b/apps/docs/public/og/guide--migration-v1-to-v2.webp index b37d01bc..bf002d0d 100644 Binary files a/apps/docs/public/og/guide--migration-v1-to-v2.webp and b/apps/docs/public/og/guide--migration-v1-to-v2.webp differ diff --git a/apps/docs/public/og/guide--migration-v2-to-v3.webp b/apps/docs/public/og/guide--migration-v2-to-v3.webp index abf89ebd..c490a467 100644 Binary files a/apps/docs/public/og/guide--migration-v2-to-v3.webp and b/apps/docs/public/og/guide--migration-v2-to-v3.webp differ diff --git a/apps/docs/public/og/guide--monorepo.webp b/apps/docs/public/og/guide--monorepo.webp index bb455c42..c8b12acd 100644 Binary files a/apps/docs/public/og/guide--monorepo.webp and b/apps/docs/public/og/guide--monorepo.webp differ diff --git a/apps/docs/public/og/guide--playgrounds.webp b/apps/docs/public/og/guide--playgrounds.webp index bd794f6b..73b48add 100644 Binary files a/apps/docs/public/og/guide--playgrounds.webp and b/apps/docs/public/og/guide--playgrounds.webp differ diff --git a/apps/docs/public/og/guide--presets.webp b/apps/docs/public/og/guide--presets.webp index 82676646..4e49a628 100644 Binary files a/apps/docs/public/og/guide--presets.webp and b/apps/docs/public/og/guide--presets.webp differ diff --git a/apps/docs/public/og/guide--releases.webp b/apps/docs/public/og/guide--releases.webp index f93b9dc9..f290d38b 100644 Binary files a/apps/docs/public/og/guide--releases.webp and b/apps/docs/public/og/guide--releases.webp differ diff --git a/apps/docs/public/og/guide--runtime.webp b/apps/docs/public/og/guide--runtime.webp index 20360b57..3bef67a8 100644 Binary files a/apps/docs/public/og/guide--runtime.webp and b/apps/docs/public/og/guide--runtime.webp differ diff --git a/apps/docs/public/og/guide--troubleshooting.webp b/apps/docs/public/og/guide--troubleshooting.webp index d322b581..87a16e51 100644 Binary files a/apps/docs/public/og/guide--troubleshooting.webp and b/apps/docs/public/og/guide--troubleshooting.webp differ diff --git a/apps/docs/public/og/guide--v4-removals.webp b/apps/docs/public/og/guide--v4-removals.webp index 310f294b..c2819d4a 100644 Binary files a/apps/docs/public/og/guide--v4-removals.webp and b/apps/docs/public/og/guide--v4-removals.webp differ diff --git a/apps/docs/public/og/index.webp b/apps/docs/public/og/index.webp index 58563dbd..550ed9dd 100644 Binary files a/apps/docs/public/og/index.webp and b/apps/docs/public/og/index.webp differ diff --git a/apps/docs/public/og/manifest.json b/apps/docs/public/og/manifest.json new file mode 100644 index 00000000..04e00394 --- /dev/null +++ b/apps/docs/public/og/manifest.json @@ -0,0 +1,2294 @@ +{ + "generatorVersion": "1.1.1", + "routes": { + "/api/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "api.webp", + "primary": true, + "url": "/og/api.webp", + "width": 1200 + } + ], + "pathname": "/api/" + }, + "/api/reference/astro/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "api--reference--astro--src.webp", + "primary": true, + "url": "/og/api--reference--astro--src.webp", + "width": 1200 + } + ], + "pathname": "/api/reference/astro/src/" + }, + "/api/reference/basic/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "api--reference--basic--src.webp", + "primary": true, + "url": "/og/api--reference--basic--src.webp", + "width": 1200 + } + ], + "pathname": "/api/reference/basic/src/" + }, + "/api/reference/core/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "api--reference--core--src.webp", + "primary": true, + "url": "/og/api--reference--core--src.webp", + "width": 1200 + } + ], + "pathname": "/api/reference/core/src/" + }, + "/api/reference/expo/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "api--reference--expo--src.webp", + "primary": true, + "url": "/og/api--reference--expo--src.webp", + "width": 1200 + } + ], + "pathname": "/api/reference/expo/src/" + }, + "/api/reference/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "api--reference.webp", + "primary": true, + "url": "/og/api--reference.webp", + "width": 1200 + } + ], + "pathname": "/api/reference/" + }, + "/api/reference/integrations/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "api--reference--integrations--src.webp", + "primary": true, + "url": "/og/api--reference--integrations--src.webp", + "width": 1200 + } + ], + "pathname": "/api/reference/integrations/src/" + }, + "/api/reference/nest/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "api--reference--nest--src.webp", + "primary": true, + "url": "/og/api--reference--nest--src.webp", + "width": 1200 + } + ], + "pathname": "/api/reference/nest/src/" + }, + "/api/reference/next/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "api--reference--next--src.webp", + "primary": true, + "url": "/og/api--reference--next--src.webp", + "width": 1200 + } + ], + "pathname": "/api/reference/next/src/" + }, + "/api/reference/react/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "api--reference--react--src.webp", + "primary": true, + "url": "/og/api--reference--react--src.webp", + "width": 1200 + } + ], + "pathname": "/api/reference/react/src/" + }, + "/api/reference/typescript/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "api--reference--typescript--src.webp", + "primary": true, + "url": "/og/api--reference--typescript--src.webp", + "width": 1200 + } + ], + "pathname": "/api/reference/typescript/src/" + }, + "/frameworks/angular/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--angular.webp", + "primary": true, + "url": "/og/frameworks--angular.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/angular/" + }, + "/frameworks/astro/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--astro.webp", + "primary": true, + "url": "/og/frameworks--astro.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/astro/" + }, + "/frameworks/expo/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--expo.webp", + "primary": true, + "url": "/og/frameworks--expo.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/expo/" + }, + "/frameworks/hono/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--hono.webp", + "primary": true, + "url": "/og/frameworks--hono.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/hono/" + }, + "/frameworks/lit/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--lit.webp", + "primary": true, + "url": "/og/frameworks--lit.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/lit/" + }, + "/frameworks/nest/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--nest.webp", + "primary": true, + "url": "/og/frameworks--nest.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/nest/" + }, + "/frameworks/next/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--next.webp", + "primary": true, + "url": "/og/frameworks--next.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/next/" + }, + "/frameworks/nuxt/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--nuxt.webp", + "primary": true, + "url": "/og/frameworks--nuxt.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/nuxt/" + }, + "/frameworks/preact/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--preact.webp", + "primary": true, + "url": "/og/frameworks--preact.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/preact/" + }, + "/frameworks/qwik/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--qwik.webp", + "primary": true, + "url": "/og/frameworks--qwik.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/qwik/" + }, + "/frameworks/react-router/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--react-router.webp", + "primary": true, + "url": "/og/frameworks--react-router.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/react-router/" + }, + "/frameworks/react/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--react.webp", + "primary": true, + "url": "/og/frameworks--react.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/react/" + }, + "/frameworks/remix/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--remix.webp", + "primary": true, + "url": "/og/frameworks--remix.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/remix/" + }, + "/frameworks/slidev/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--slidev.webp", + "primary": true, + "url": "/og/frameworks--slidev.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/slidev/" + }, + "/frameworks/solid/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--solid.webp", + "primary": true, + "url": "/og/frameworks--solid.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/solid/" + }, + "/frameworks/svelte/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--svelte.webp", + "primary": true, + "url": "/og/frameworks--svelte.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/svelte/" + }, + "/frameworks/tanstack-start/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--tanstack-start.webp", + "primary": true, + "url": "/og/frameworks--tanstack-start.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/tanstack-start/" + }, + "/frameworks/typescript/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--typescript.webp", + "primary": true, + "url": "/og/frameworks--typescript.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/typescript/" + }, + "/frameworks/vite/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--vite.webp", + "primary": true, + "url": "/og/frameworks--vite.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/vite/" + }, + "/frameworks/vue/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "frameworks--vue.webp", + "primary": true, + "url": "/og/frameworks--vue.webp", + "width": 1200 + } + ], + "pathname": "/frameworks/vue/" + }, + "/guide/acknowledgements/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--acknowledgements.webp", + "primary": true, + "url": "/og/guide--acknowledgements.webp", + "width": 1200 + } + ], + "pathname": "/guide/acknowledgements/" + }, + "/guide/ai-agents/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--ai-agents.webp", + "primary": true, + "url": "/og/guide--ai-agents.webp", + "width": 1200 + } + ], + "pathname": "/guide/ai-agents/" + }, + "/guide/architecture/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--architecture.webp", + "primary": true, + "url": "/og/guide--architecture.webp", + "width": 1200 + } + ], + "pathname": "/guide/architecture/" + }, + "/guide/changelog/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--changelog.webp", + "primary": true, + "url": "/og/guide--changelog.webp", + "width": 1200 + } + ], + "pathname": "/guide/changelog/" + }, + "/guide/cli/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--cli.webp", + "primary": true, + "url": "/og/guide--cli.webp", + "width": 1200 + } + ], + "pathname": "/guide/cli/" + }, + "/guide/config-builder/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--config-builder.webp", + "primary": true, + "url": "/og/guide--config-builder.webp", + "width": 1200 + } + ], + "pathname": "/guide/config-builder/" + }, + "/guide/configuration/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--configuration.webp", + "primary": true, + "url": "/og/guide--configuration.webp", + "width": 1200 + } + ], + "pathname": "/guide/configuration/" + }, + "/guide/development/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--development.webp", + "primary": true, + "url": "/og/guide--development.webp", + "width": 1200 + } + ], + "pathname": "/guide/development/" + }, + "/guide/doctor-report/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--doctor-report.webp", + "primary": true, + "url": "/og/guide--doctor-report.webp", + "width": 1200 + } + ], + "pathname": "/guide/doctor-report/" + }, + "/guide/getting-started/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--getting-started.webp", + "primary": true, + "url": "/og/guide--getting-started.webp", + "width": 1200 + } + ], + "pathname": "/guide/getting-started/" + }, + "/guide/inspector/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--inspector.webp", + "primary": true, + "url": "/og/guide--inspector.webp", + "width": 1200 + } + ], + "pathname": "/guide/inspector/" + }, + "/guide/installation/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--installation.webp", + "primary": true, + "url": "/og/guide--installation.webp", + "width": 1200 + } + ], + "pathname": "/guide/installation/" + }, + "/guide/lite-migration/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--lite-migration.webp", + "primary": true, + "url": "/og/guide--lite-migration.webp", + "width": 1200 + } + ], + "pathname": "/guide/lite-migration/" + }, + "/guide/migration-v1-to-v2/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--migration-v1-to-v2.webp", + "primary": true, + "url": "/og/guide--migration-v1-to-v2.webp", + "width": 1200 + } + ], + "pathname": "/guide/migration-v1-to-v2/" + }, + "/guide/migration-v2-to-v3/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--migration-v2-to-v3.webp", + "primary": true, + "url": "/og/guide--migration-v2-to-v3.webp", + "width": 1200 + } + ], + "pathname": "/guide/migration-v2-to-v3/" + }, + "/guide/monorepo/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--monorepo.webp", + "primary": true, + "url": "/og/guide--monorepo.webp", + "width": 1200 + } + ], + "pathname": "/guide/monorepo/" + }, + "/guide/playgrounds/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--playgrounds.webp", + "primary": true, + "url": "/og/guide--playgrounds.webp", + "width": 1200 + } + ], + "pathname": "/guide/playgrounds/" + }, + "/guide/presets/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--presets.webp", + "primary": true, + "url": "/og/guide--presets.webp", + "width": 1200 + } + ], + "pathname": "/guide/presets/" + }, + "/guide/releases/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--releases.webp", + "primary": true, + "url": "/og/guide--releases.webp", + "width": 1200 + } + ], + "pathname": "/guide/releases/" + }, + "/guide/runtime/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--runtime.webp", + "primary": true, + "url": "/og/guide--runtime.webp", + "width": 1200 + } + ], + "pathname": "/guide/runtime/" + }, + "/guide/troubleshooting/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--troubleshooting.webp", + "primary": true, + "url": "/og/guide--troubleshooting.webp", + "width": 1200 + } + ], + "pathname": "/guide/troubleshooting/" + }, + "/guide/v4-removals/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "guide--v4-removals.webp", + "primary": true, + "url": "/og/guide--v4-removals.webp", + "width": 1200 + } + ], + "pathname": "/guide/v4-removals/" + }, + "/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "index.webp", + "primary": true, + "url": "/og/index.webp", + "width": 1200 + } + ], + "pathname": "/" + }, + "/packages/basic/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "packages--basic.webp", + "primary": true, + "url": "/og/packages--basic.webp", + "width": 1200 + } + ], + "pathname": "/packages/basic/" + }, + "/packages/core/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "packages--core.webp", + "primary": true, + "url": "/og/packages--core.webp", + "width": 1200 + } + ], + "pathname": "/packages/core/" + }, + "/packages/full/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "packages--full.webp", + "primary": true, + "url": "/og/packages--full.webp", + "width": 1200 + } + ], + "pathname": "/packages/full/" + }, + "/packages/integrations/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "packages--integrations.webp", + "primary": true, + "url": "/og/packages--integrations.webp", + "width": 1200 + } + ], + "pathname": "/packages/integrations/" + }, + "/packages/lite/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "packages--lite.webp", + "primary": true, + "url": "/og/packages--lite.webp", + "width": 1200 + } + ], + "pathname": "/packages/lite/" + }, + "/packages/playground/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "packages--playground.webp", + "primary": true, + "url": "/og/packages--playground.webp", + "width": 1200 + } + ], + "pathname": "/packages/playground/" + }, + "/packages/tests/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "packages--tests.webp", + "primary": true, + "url": "/og/packages--tests.webp", + "width": 1200 + } + ], + "pathname": "/packages/tests/" + }, + "/tooling/extensions/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "tooling--extensions.webp", + "primary": true, + "url": "/og/tooling--extensions.webp", + "width": 1200 + } + ], + "pathname": "/tooling/extensions/" + }, + "/tooling/formats/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "tooling--formats.webp", + "primary": true, + "url": "/og/tooling--formats.webp", + "width": 1200 + } + ], + "pathname": "/tooling/formats/" + }, + "/tooling/libraries/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "tooling--libraries.webp", + "primary": true, + "url": "/og/tooling--libraries.webp", + "width": 1200 + } + ], + "pathname": "/tooling/libraries/" + }, + "/tooling/overview/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "tooling--overview.webp", + "primary": true, + "url": "/og/tooling--overview.webp", + "width": 1200 + } + ], + "pathname": "/tooling/overview/" + }, + "/tooling/testing/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "tooling--testing.webp", + "primary": true, + "url": "/og/tooling--testing.webp", + "width": 1200 + } + ], + "pathname": "/tooling/testing/" + }, + "/tooling/tools/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "tooling--tools.webp", + "primary": true, + "url": "/og/tooling--tools.webp", + "width": 1200 + } + ], + "pathname": "/tooling/tools/" + }, + "/v1/changelog/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--changelog.webp", + "primary": true, + "url": "/og/v1--changelog.webp", + "width": 1200 + } + ], + "pathname": "/v1/changelog/" + }, + "/v1/readme/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--readme.webp", + "primary": true, + "url": "/og/v1--readme.webp", + "width": 1200 + } + ], + "pathname": "/v1/readme/" + }, + "/v1/api/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--api.webp", + "primary": true, + "url": "/og/v1--api.webp", + "width": 1200 + } + ], + "pathname": "/v1/api/" + }, + "/v1/api/reference/astro/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--api--reference--astro--src.webp", + "primary": true, + "url": "/og/v1--api--reference--astro--src.webp", + "width": 1200 + } + ], + "pathname": "/v1/api/reference/astro/src/" + }, + "/v1/api/reference/basic/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--api--reference--basic--src.webp", + "primary": true, + "url": "/og/v1--api--reference--basic--src.webp", + "width": 1200 + } + ], + "pathname": "/v1/api/reference/basic/src/" + }, + "/v1/api/reference/core/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--api--reference--core--src.webp", + "primary": true, + "url": "/og/v1--api--reference--core--src.webp", + "width": 1200 + } + ], + "pathname": "/v1/api/reference/core/src/" + }, + "/v1/api/reference/expo/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--api--reference--expo--src.webp", + "primary": true, + "url": "/og/v1--api--reference--expo--src.webp", + "width": 1200 + } + ], + "pathname": "/v1/api/reference/expo/src/" + }, + "/v1/api/reference/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--api--reference.webp", + "primary": true, + "url": "/og/v1--api--reference.webp", + "width": 1200 + } + ], + "pathname": "/v1/api/reference/" + }, + "/v1/api/reference/nest/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--api--reference--nest--src.webp", + "primary": true, + "url": "/og/v1--api--reference--nest--src.webp", + "width": 1200 + } + ], + "pathname": "/v1/api/reference/nest/src/" + }, + "/v1/api/reference/next/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--api--reference--next--src.webp", + "primary": true, + "url": "/og/v1--api--reference--next--src.webp", + "width": 1200 + } + ], + "pathname": "/v1/api/reference/next/src/" + }, + "/v1/api/reference/optionals/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--api--reference--optionals--src.webp", + "primary": true, + "url": "/og/v1--api--reference--optionals--src.webp", + "width": 1200 + } + ], + "pathname": "/v1/api/reference/optionals/src/" + }, + "/v1/api/reference/react/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--api--reference--react--src.webp", + "primary": true, + "url": "/og/v1--api--reference--react--src.webp", + "width": 1200 + } + ], + "pathname": "/v1/api/reference/react/src/" + }, + "/v1/api/reference/typescript/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--api--reference--typescript--src.webp", + "primary": true, + "url": "/og/v1--api--reference--typescript--src.webp", + "width": 1200 + } + ], + "pathname": "/v1/api/reference/typescript/src/" + }, + "/v1/frameworks/angular/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--frameworks--angular.webp", + "primary": true, + "url": "/og/v1--frameworks--angular.webp", + "width": 1200 + } + ], + "pathname": "/v1/frameworks/angular/" + }, + "/v1/frameworks/astro/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--frameworks--astro.webp", + "primary": true, + "url": "/og/v1--frameworks--astro.webp", + "width": 1200 + } + ], + "pathname": "/v1/frameworks/astro/" + }, + "/v1/frameworks/expo/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--frameworks--expo.webp", + "primary": true, + "url": "/og/v1--frameworks--expo.webp", + "width": 1200 + } + ], + "pathname": "/v1/frameworks/expo/" + }, + "/v1/frameworks/hono/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--frameworks--hono.webp", + "primary": true, + "url": "/og/v1--frameworks--hono.webp", + "width": 1200 + } + ], + "pathname": "/v1/frameworks/hono/" + }, + "/v1/frameworks/nest/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--frameworks--nest.webp", + "primary": true, + "url": "/og/v1--frameworks--nest.webp", + "width": 1200 + } + ], + "pathname": "/v1/frameworks/nest/" + }, + "/v1/frameworks/next/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--frameworks--next.webp", + "primary": true, + "url": "/og/v1--frameworks--next.webp", + "width": 1200 + } + ], + "pathname": "/v1/frameworks/next/" + }, + "/v1/frameworks/qwik/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--frameworks--qwik.webp", + "primary": true, + "url": "/og/v1--frameworks--qwik.webp", + "width": 1200 + } + ], + "pathname": "/v1/frameworks/qwik/" + }, + "/v1/frameworks/react/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--frameworks--react.webp", + "primary": true, + "url": "/og/v1--frameworks--react.webp", + "width": 1200 + } + ], + "pathname": "/v1/frameworks/react/" + }, + "/v1/frameworks/remix/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--frameworks--remix.webp", + "primary": true, + "url": "/og/v1--frameworks--remix.webp", + "width": 1200 + } + ], + "pathname": "/v1/frameworks/remix/" + }, + "/v1/frameworks/solid/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--frameworks--solid.webp", + "primary": true, + "url": "/og/v1--frameworks--solid.webp", + "width": 1200 + } + ], + "pathname": "/v1/frameworks/solid/" + }, + "/v1/frameworks/svelte/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--frameworks--svelte.webp", + "primary": true, + "url": "/og/v1--frameworks--svelte.webp", + "width": 1200 + } + ], + "pathname": "/v1/frameworks/svelte/" + }, + "/v1/frameworks/typescript/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--frameworks--typescript.webp", + "primary": true, + "url": "/og/v1--frameworks--typescript.webp", + "width": 1200 + } + ], + "pathname": "/v1/frameworks/typescript/" + }, + "/v1/frameworks/vue/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--frameworks--vue.webp", + "primary": true, + "url": "/og/v1--frameworks--vue.webp", + "width": 1200 + } + ], + "pathname": "/v1/frameworks/vue/" + }, + "/v1/guide/changelog/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--guide--changelog.webp", + "primary": true, + "url": "/og/v1--guide--changelog.webp", + "width": 1200 + } + ], + "pathname": "/v1/guide/changelog/" + }, + "/v1/guide/cli/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--guide--cli.webp", + "primary": true, + "url": "/og/v1--guide--cli.webp", + "width": 1200 + } + ], + "pathname": "/v1/guide/cli/" + }, + "/v1/guide/configuration/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--guide--configuration.webp", + "primary": true, + "url": "/og/v1--guide--configuration.webp", + "width": 1200 + } + ], + "pathname": "/v1/guide/configuration/" + }, + "/v1/guide/getting-started/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--guide--getting-started.webp", + "primary": true, + "url": "/og/v1--guide--getting-started.webp", + "width": 1200 + } + ], + "pathname": "/v1/guide/getting-started/" + }, + "/v1/guide/inspector/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--guide--inspector.webp", + "primary": true, + "url": "/og/v1--guide--inspector.webp", + "width": 1200 + } + ], + "pathname": "/v1/guide/inspector/" + }, + "/v1/guide/installation/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--guide--installation.webp", + "primary": true, + "url": "/og/v1--guide--installation.webp", + "width": 1200 + } + ], + "pathname": "/v1/guide/installation/" + }, + "/v1/guide/playgrounds/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--guide--playgrounds.webp", + "primary": true, + "url": "/og/v1--guide--playgrounds.webp", + "width": 1200 + } + ], + "pathname": "/v1/guide/playgrounds/" + }, + "/v1/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1.webp", + "primary": true, + "url": "/og/v1.webp", + "width": 1200 + } + ], + "pathname": "/v1/" + }, + "/v1/packages/basic/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--packages--basic.webp", + "primary": true, + "url": "/og/v1--packages--basic.webp", + "width": 1200 + } + ], + "pathname": "/v1/packages/basic/" + }, + "/v1/packages/core/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--packages--core.webp", + "primary": true, + "url": "/og/v1--packages--core.webp", + "width": 1200 + } + ], + "pathname": "/v1/packages/core/" + }, + "/v1/packages/integrations/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--packages--integrations.webp", + "primary": true, + "url": "/og/v1--packages--integrations.webp", + "width": 1200 + } + ], + "pathname": "/v1/packages/integrations/" + }, + "/v1/packages/playground/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--packages--playground.webp", + "primary": true, + "url": "/og/v1--packages--playground.webp", + "width": 1200 + } + ], + "pathname": "/v1/packages/playground/" + }, + "/v1/packages/tests/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--packages--tests.webp", + "primary": true, + "url": "/og/v1--packages--tests.webp", + "width": 1200 + } + ], + "pathname": "/v1/packages/tests/" + }, + "/v1/tooling/extensions/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--tooling--extensions.webp", + "primary": true, + "url": "/og/v1--tooling--extensions.webp", + "width": 1200 + } + ], + "pathname": "/v1/tooling/extensions/" + }, + "/v1/tooling/formats/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--tooling--formats.webp", + "primary": true, + "url": "/og/v1--tooling--formats.webp", + "width": 1200 + } + ], + "pathname": "/v1/tooling/formats/" + }, + "/v1/tooling/libraries/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--tooling--libraries.webp", + "primary": true, + "url": "/og/v1--tooling--libraries.webp", + "width": 1200 + } + ], + "pathname": "/v1/tooling/libraries/" + }, + "/v1/tooling/overview/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--tooling--overview.webp", + "primary": true, + "url": "/og/v1--tooling--overview.webp", + "width": 1200 + } + ], + "pathname": "/v1/tooling/overview/" + }, + "/v1/tooling/testing/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--tooling--testing.webp", + "primary": true, + "url": "/og/v1--tooling--testing.webp", + "width": 1200 + } + ], + "pathname": "/v1/tooling/testing/" + }, + "/v1/tooling/tools/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v1--tooling--tools.webp", + "primary": true, + "url": "/og/v1--tooling--tools.webp", + "width": 1200 + } + ], + "pathname": "/v1/tooling/tools/" + }, + "/v2/api/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--api.webp", + "primary": true, + "url": "/og/v2--api.webp", + "width": 1200 + } + ], + "pathname": "/v2/api/" + }, + "/v2/api/reference/astro/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--api--reference--astro--src.webp", + "primary": true, + "url": "/og/v2--api--reference--astro--src.webp", + "width": 1200 + } + ], + "pathname": "/v2/api/reference/astro/src/" + }, + "/v2/api/reference/basic/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--api--reference--basic--src.webp", + "primary": true, + "url": "/og/v2--api--reference--basic--src.webp", + "width": 1200 + } + ], + "pathname": "/v2/api/reference/basic/src/" + }, + "/v2/api/reference/core/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--api--reference--core--src.webp", + "primary": true, + "url": "/og/v2--api--reference--core--src.webp", + "width": 1200 + } + ], + "pathname": "/v2/api/reference/core/src/" + }, + "/v2/api/reference/expo/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--api--reference--expo--src.webp", + "primary": true, + "url": "/og/v2--api--reference--expo--src.webp", + "width": 1200 + } + ], + "pathname": "/v2/api/reference/expo/src/" + }, + "/v2/api/reference/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--api--reference.webp", + "primary": true, + "url": "/og/v2--api--reference.webp", + "width": 1200 + } + ], + "pathname": "/v2/api/reference/" + }, + "/v2/api/reference/integrations/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--api--reference--integrations--src.webp", + "primary": true, + "url": "/og/v2--api--reference--integrations--src.webp", + "width": 1200 + } + ], + "pathname": "/v2/api/reference/integrations/src/" + }, + "/v2/api/reference/nest/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--api--reference--nest--src.webp", + "primary": true, + "url": "/og/v2--api--reference--nest--src.webp", + "width": 1200 + } + ], + "pathname": "/v2/api/reference/nest/src/" + }, + "/v2/api/reference/next/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--api--reference--next--src.webp", + "primary": true, + "url": "/og/v2--api--reference--next--src.webp", + "width": 1200 + } + ], + "pathname": "/v2/api/reference/next/src/" + }, + "/v2/api/reference/react/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--api--reference--react--src.webp", + "primary": true, + "url": "/og/v2--api--reference--react--src.webp", + "width": 1200 + } + ], + "pathname": "/v2/api/reference/react/src/" + }, + "/v2/api/reference/typescript/src/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--api--reference--typescript--src.webp", + "primary": true, + "url": "/og/v2--api--reference--typescript--src.webp", + "width": 1200 + } + ], + "pathname": "/v2/api/reference/typescript/src/" + }, + "/v2/frameworks/angular/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--angular.webp", + "primary": true, + "url": "/og/v2--frameworks--angular.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/angular/" + }, + "/v2/frameworks/astro/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--astro.webp", + "primary": true, + "url": "/og/v2--frameworks--astro.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/astro/" + }, + "/v2/frameworks/expo/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--expo.webp", + "primary": true, + "url": "/og/v2--frameworks--expo.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/expo/" + }, + "/v2/frameworks/hono/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--hono.webp", + "primary": true, + "url": "/og/v2--frameworks--hono.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/hono/" + }, + "/v2/frameworks/lit/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--lit.webp", + "primary": true, + "url": "/og/v2--frameworks--lit.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/lit/" + }, + "/v2/frameworks/nest/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--nest.webp", + "primary": true, + "url": "/og/v2--frameworks--nest.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/nest/" + }, + "/v2/frameworks/next/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--next.webp", + "primary": true, + "url": "/og/v2--frameworks--next.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/next/" + }, + "/v2/frameworks/nuxt/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--nuxt.webp", + "primary": true, + "url": "/og/v2--frameworks--nuxt.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/nuxt/" + }, + "/v2/frameworks/preact/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--preact.webp", + "primary": true, + "url": "/og/v2--frameworks--preact.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/preact/" + }, + "/v2/frameworks/qwik/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--qwik.webp", + "primary": true, + "url": "/og/v2--frameworks--qwik.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/qwik/" + }, + "/v2/frameworks/react-router/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--react-router.webp", + "primary": true, + "url": "/og/v2--frameworks--react-router.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/react-router/" + }, + "/v2/frameworks/react/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--react.webp", + "primary": true, + "url": "/og/v2--frameworks--react.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/react/" + }, + "/v2/frameworks/remix/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--remix.webp", + "primary": true, + "url": "/og/v2--frameworks--remix.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/remix/" + }, + "/v2/frameworks/slidev/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--slidev.webp", + "primary": true, + "url": "/og/v2--frameworks--slidev.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/slidev/" + }, + "/v2/frameworks/solid/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--solid.webp", + "primary": true, + "url": "/og/v2--frameworks--solid.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/solid/" + }, + "/v2/frameworks/svelte/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--svelte.webp", + "primary": true, + "url": "/og/v2--frameworks--svelte.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/svelte/" + }, + "/v2/frameworks/tanstack-start/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--tanstack-start.webp", + "primary": true, + "url": "/og/v2--frameworks--tanstack-start.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/tanstack-start/" + }, + "/v2/frameworks/typescript/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--typescript.webp", + "primary": true, + "url": "/og/v2--frameworks--typescript.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/typescript/" + }, + "/v2/frameworks/vite/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--vite.webp", + "primary": true, + "url": "/og/v2--frameworks--vite.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/vite/" + }, + "/v2/frameworks/vue/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--frameworks--vue.webp", + "primary": true, + "url": "/og/v2--frameworks--vue.webp", + "width": 1200 + } + ], + "pathname": "/v2/frameworks/vue/" + }, + "/v2/guide/acknowledgements/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--acknowledgements.webp", + "primary": true, + "url": "/og/v2--guide--acknowledgements.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/acknowledgements/" + }, + "/v2/guide/ai-agents/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--ai-agents.webp", + "primary": true, + "url": "/og/v2--guide--ai-agents.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/ai-agents/" + }, + "/v2/guide/architecture/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--architecture.webp", + "primary": true, + "url": "/og/v2--guide--architecture.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/architecture/" + }, + "/v2/guide/changelog/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--changelog.webp", + "primary": true, + "url": "/og/v2--guide--changelog.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/changelog/" + }, + "/v2/guide/cli/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--cli.webp", + "primary": true, + "url": "/og/v2--guide--cli.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/cli/" + }, + "/v2/guide/config-builder/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--config-builder.webp", + "primary": true, + "url": "/og/v2--guide--config-builder.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/config-builder/" + }, + "/v2/guide/configuration/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--configuration.webp", + "primary": true, + "url": "/og/v2--guide--configuration.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/configuration/" + }, + "/v2/guide/development/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--development.webp", + "primary": true, + "url": "/og/v2--guide--development.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/development/" + }, + "/v2/guide/doctor-report/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--doctor-report.webp", + "primary": true, + "url": "/og/v2--guide--doctor-report.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/doctor-report/" + }, + "/v2/guide/getting-started/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--getting-started.webp", + "primary": true, + "url": "/og/v2--guide--getting-started.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/getting-started/" + }, + "/v2/guide/inspector/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--inspector.webp", + "primary": true, + "url": "/og/v2--guide--inspector.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/inspector/" + }, + "/v2/guide/installation/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--installation.webp", + "primary": true, + "url": "/og/v2--guide--installation.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/installation/" + }, + "/v2/guide/lite-migration/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--lite-migration.webp", + "primary": true, + "url": "/og/v2--guide--lite-migration.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/lite-migration/" + }, + "/v2/guide/migration-v1-to-v2/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--migration-v1-to-v2.webp", + "primary": true, + "url": "/og/v2--guide--migration-v1-to-v2.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/migration-v1-to-v2/" + }, + "/v2/guide/monorepo/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--monorepo.webp", + "primary": true, + "url": "/og/v2--guide--monorepo.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/monorepo/" + }, + "/v2/guide/playgrounds/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--playgrounds.webp", + "primary": true, + "url": "/og/v2--guide--playgrounds.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/playgrounds/" + }, + "/v2/guide/presets/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--presets.webp", + "primary": true, + "url": "/og/v2--guide--presets.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/presets/" + }, + "/v2/guide/releases/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--releases.webp", + "primary": true, + "url": "/og/v2--guide--releases.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/releases/" + }, + "/v2/guide/runtime/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--runtime.webp", + "primary": true, + "url": "/og/v2--guide--runtime.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/runtime/" + }, + "/v2/guide/troubleshooting/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--guide--troubleshooting.webp", + "primary": true, + "url": "/og/v2--guide--troubleshooting.webp", + "width": 1200 + } + ], + "pathname": "/v2/guide/troubleshooting/" + }, + "/v2/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2.webp", + "primary": true, + "url": "/og/v2.webp", + "width": 1200 + } + ], + "pathname": "/v2/" + }, + "/v2/packages/basic/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--packages--basic.webp", + "primary": true, + "url": "/og/v2--packages--basic.webp", + "width": 1200 + } + ], + "pathname": "/v2/packages/basic/" + }, + "/v2/packages/core/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--packages--core.webp", + "primary": true, + "url": "/og/v2--packages--core.webp", + "width": 1200 + } + ], + "pathname": "/v2/packages/core/" + }, + "/v2/packages/integrations/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--packages--integrations.webp", + "primary": true, + "url": "/og/v2--packages--integrations.webp", + "width": 1200 + } + ], + "pathname": "/v2/packages/integrations/" + }, + "/v2/packages/lite/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--packages--lite.webp", + "primary": true, + "url": "/og/v2--packages--lite.webp", + "width": 1200 + } + ], + "pathname": "/v2/packages/lite/" + }, + "/v2/packages/playground/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--packages--playground.webp", + "primary": true, + "url": "/og/v2--packages--playground.webp", + "width": 1200 + } + ], + "pathname": "/v2/packages/playground/" + }, + "/v2/packages/tests/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--packages--tests.webp", + "primary": true, + "url": "/og/v2--packages--tests.webp", + "width": 1200 + } + ], + "pathname": "/v2/packages/tests/" + }, + "/v2/tooling/extensions/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--tooling--extensions.webp", + "primary": true, + "url": "/og/v2--tooling--extensions.webp", + "width": 1200 + } + ], + "pathname": "/v2/tooling/extensions/" + }, + "/v2/tooling/formats/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--tooling--formats.webp", + "primary": true, + "url": "/og/v2--tooling--formats.webp", + "width": 1200 + } + ], + "pathname": "/v2/tooling/formats/" + }, + "/v2/tooling/libraries/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--tooling--libraries.webp", + "primary": true, + "url": "/og/v2--tooling--libraries.webp", + "width": 1200 + } + ], + "pathname": "/v2/tooling/libraries/" + }, + "/v2/tooling/overview/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--tooling--overview.webp", + "primary": true, + "url": "/og/v2--tooling--overview.webp", + "width": 1200 + } + ], + "pathname": "/v2/tooling/overview/" + }, + "/v2/tooling/testing/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--tooling--testing.webp", + "primary": true, + "url": "/og/v2--tooling--testing.webp", + "width": 1200 + } + ], + "pathname": "/v2/tooling/testing/" + }, + "/v2/tooling/tools/": { + "images": [ + { + "format": "webp", + "height": 630, + "output": "v2--tooling--tools.webp", + "primary": true, + "url": "/og/v2--tooling--tools.webp", + "width": 1200 + } + ], + "pathname": "/v2/tooling/tools/" + } + }, + "version": 1 +} diff --git a/apps/docs/public/og/packages--basic.webp b/apps/docs/public/og/packages--basic.webp index 84d97d51..d806dc82 100644 Binary files a/apps/docs/public/og/packages--basic.webp and b/apps/docs/public/og/packages--basic.webp differ diff --git a/apps/docs/public/og/packages--core.webp b/apps/docs/public/og/packages--core.webp index e0abc5e9..fcb9bce7 100644 Binary files a/apps/docs/public/og/packages--core.webp and b/apps/docs/public/og/packages--core.webp differ diff --git a/apps/docs/public/og/packages--full.webp b/apps/docs/public/og/packages--full.webp index 8772efec..c5ce8c1d 100644 Binary files a/apps/docs/public/og/packages--full.webp and b/apps/docs/public/og/packages--full.webp differ diff --git a/apps/docs/public/og/packages--integrations.webp b/apps/docs/public/og/packages--integrations.webp index bc4b52eb..f4136ffb 100644 Binary files a/apps/docs/public/og/packages--integrations.webp and b/apps/docs/public/og/packages--integrations.webp differ diff --git a/apps/docs/public/og/packages--lite.webp b/apps/docs/public/og/packages--lite.webp index a769c132..0ae56fdd 100644 Binary files a/apps/docs/public/og/packages--lite.webp and b/apps/docs/public/og/packages--lite.webp differ diff --git a/apps/docs/public/og/packages--playground.webp b/apps/docs/public/og/packages--playground.webp index 18deb0a2..5be9c31d 100644 Binary files a/apps/docs/public/og/packages--playground.webp and b/apps/docs/public/og/packages--playground.webp differ diff --git a/apps/docs/public/og/packages--tests.webp b/apps/docs/public/og/packages--tests.webp index 7f1c92ee..2b9dd31f 100644 Binary files a/apps/docs/public/og/packages--tests.webp and b/apps/docs/public/og/packages--tests.webp differ diff --git a/apps/docs/public/og/tooling--extensions.webp b/apps/docs/public/og/tooling--extensions.webp index 009a2ee0..a9d2c0d0 100644 Binary files a/apps/docs/public/og/tooling--extensions.webp and b/apps/docs/public/og/tooling--extensions.webp differ diff --git a/apps/docs/public/og/tooling--formats.webp b/apps/docs/public/og/tooling--formats.webp index 9a64c95d..cf999ad4 100644 Binary files a/apps/docs/public/og/tooling--formats.webp and b/apps/docs/public/og/tooling--formats.webp differ diff --git a/apps/docs/public/og/tooling--libraries.webp b/apps/docs/public/og/tooling--libraries.webp index 04dde6c9..45b5e916 100644 Binary files a/apps/docs/public/og/tooling--libraries.webp and b/apps/docs/public/og/tooling--libraries.webp differ diff --git a/apps/docs/public/og/tooling--overview.webp b/apps/docs/public/og/tooling--overview.webp index 2a5a8cc7..afdd183f 100644 Binary files a/apps/docs/public/og/tooling--overview.webp and b/apps/docs/public/og/tooling--overview.webp differ diff --git a/apps/docs/public/og/tooling--testing.webp b/apps/docs/public/og/tooling--testing.webp index 0c3b3fdd..84acc014 100644 Binary files a/apps/docs/public/og/tooling--testing.webp and b/apps/docs/public/og/tooling--testing.webp differ diff --git a/apps/docs/public/og/tooling--tools.webp b/apps/docs/public/og/tooling--tools.webp index a2f2f4e2..e190861f 100644 Binary files a/apps/docs/public/og/tooling--tools.webp and b/apps/docs/public/og/tooling--tools.webp differ diff --git a/apps/docs/public/og/v1--CHANGELOG.webp b/apps/docs/public/og/v1--CHANGELOG.webp deleted file mode 100644 index 871849ad..00000000 Binary files a/apps/docs/public/og/v1--CHANGELOG.webp and /dev/null differ diff --git a/apps/docs/public/og/v1--README.webp b/apps/docs/public/og/v1--README.webp deleted file mode 100644 index 5d6fb56a..00000000 Binary files a/apps/docs/public/og/v1--README.webp and /dev/null differ diff --git a/apps/docs/public/og/v1--api--reference--astro--src.webp b/apps/docs/public/og/v1--api--reference--astro--src.webp index ebe85ca5..9ac6f272 100644 Binary files a/apps/docs/public/og/v1--api--reference--astro--src.webp and b/apps/docs/public/og/v1--api--reference--astro--src.webp differ diff --git a/apps/docs/public/og/v1--api--reference--basic--src.webp b/apps/docs/public/og/v1--api--reference--basic--src.webp index 9753d467..2ce99b11 100644 Binary files a/apps/docs/public/og/v1--api--reference--basic--src.webp and b/apps/docs/public/og/v1--api--reference--basic--src.webp differ diff --git a/apps/docs/public/og/v1--api--reference--core--src.webp b/apps/docs/public/og/v1--api--reference--core--src.webp index 89b30726..3eb126e1 100644 Binary files a/apps/docs/public/og/v1--api--reference--core--src.webp and b/apps/docs/public/og/v1--api--reference--core--src.webp differ diff --git a/apps/docs/public/og/v1--api--reference--expo--src.webp b/apps/docs/public/og/v1--api--reference--expo--src.webp index a208552a..b2d0c640 100644 Binary files a/apps/docs/public/og/v1--api--reference--expo--src.webp and b/apps/docs/public/og/v1--api--reference--expo--src.webp differ diff --git a/apps/docs/public/og/v1--api--reference--nest--src.webp b/apps/docs/public/og/v1--api--reference--nest--src.webp index 3462e4bf..2b25d47d 100644 Binary files a/apps/docs/public/og/v1--api--reference--nest--src.webp and b/apps/docs/public/og/v1--api--reference--nest--src.webp differ diff --git a/apps/docs/public/og/v1--api--reference--next--src.webp b/apps/docs/public/og/v1--api--reference--next--src.webp index eae38656..d8befcd3 100644 Binary files a/apps/docs/public/og/v1--api--reference--next--src.webp and b/apps/docs/public/og/v1--api--reference--next--src.webp differ diff --git a/apps/docs/public/og/v1--api--reference--optionals--src.webp b/apps/docs/public/og/v1--api--reference--optionals--src.webp index 62e8cb18..67e1ce16 100644 Binary files a/apps/docs/public/og/v1--api--reference--optionals--src.webp and b/apps/docs/public/og/v1--api--reference--optionals--src.webp differ diff --git a/apps/docs/public/og/v1--api--reference--react--src.webp b/apps/docs/public/og/v1--api--reference--react--src.webp index 10f3fdbf..434e8ddb 100644 Binary files a/apps/docs/public/og/v1--api--reference--react--src.webp and b/apps/docs/public/og/v1--api--reference--react--src.webp differ diff --git a/apps/docs/public/og/v1--api--reference--typescript--src.webp b/apps/docs/public/og/v1--api--reference--typescript--src.webp index 3db7ab2a..69bd322c 100644 Binary files a/apps/docs/public/og/v1--api--reference--typescript--src.webp and b/apps/docs/public/og/v1--api--reference--typescript--src.webp differ diff --git a/apps/docs/public/og/v1--api--reference.webp b/apps/docs/public/og/v1--api--reference.webp index a3eac7ef..578c23fb 100644 Binary files a/apps/docs/public/og/v1--api--reference.webp and b/apps/docs/public/og/v1--api--reference.webp differ diff --git a/apps/docs/public/og/v1--api.webp b/apps/docs/public/og/v1--api.webp index 5d247f46..5d433447 100644 Binary files a/apps/docs/public/og/v1--api.webp and b/apps/docs/public/og/v1--api.webp differ diff --git a/apps/docs/public/og/v1--changelog.webp b/apps/docs/public/og/v1--changelog.webp new file mode 100644 index 00000000..1dd57015 Binary files /dev/null and b/apps/docs/public/og/v1--changelog.webp differ diff --git a/apps/docs/public/og/v1--frameworks--angular.webp b/apps/docs/public/og/v1--frameworks--angular.webp index 01136de6..d00ee260 100644 Binary files a/apps/docs/public/og/v1--frameworks--angular.webp and b/apps/docs/public/og/v1--frameworks--angular.webp differ diff --git a/apps/docs/public/og/v1--frameworks--astro.webp b/apps/docs/public/og/v1--frameworks--astro.webp index eee75b1d..fb0015fc 100644 Binary files a/apps/docs/public/og/v1--frameworks--astro.webp and b/apps/docs/public/og/v1--frameworks--astro.webp differ diff --git a/apps/docs/public/og/v1--frameworks--expo.webp b/apps/docs/public/og/v1--frameworks--expo.webp index 365486c1..0dfec1b0 100644 Binary files a/apps/docs/public/og/v1--frameworks--expo.webp and b/apps/docs/public/og/v1--frameworks--expo.webp differ diff --git a/apps/docs/public/og/v1--frameworks--hono.webp b/apps/docs/public/og/v1--frameworks--hono.webp index 7a16599d..35c2534f 100644 Binary files a/apps/docs/public/og/v1--frameworks--hono.webp and b/apps/docs/public/og/v1--frameworks--hono.webp differ diff --git a/apps/docs/public/og/v1--frameworks--nest.webp b/apps/docs/public/og/v1--frameworks--nest.webp index 67b01662..24b8f60d 100644 Binary files a/apps/docs/public/og/v1--frameworks--nest.webp and b/apps/docs/public/og/v1--frameworks--nest.webp differ diff --git a/apps/docs/public/og/v1--frameworks--next.webp b/apps/docs/public/og/v1--frameworks--next.webp index 4eef21eb..7ece536c 100644 Binary files a/apps/docs/public/og/v1--frameworks--next.webp and b/apps/docs/public/og/v1--frameworks--next.webp differ diff --git a/apps/docs/public/og/v1--frameworks--qwik.webp b/apps/docs/public/og/v1--frameworks--qwik.webp index 669c3486..51bf4c1c 100644 Binary files a/apps/docs/public/og/v1--frameworks--qwik.webp and b/apps/docs/public/og/v1--frameworks--qwik.webp differ diff --git a/apps/docs/public/og/v1--frameworks--react.webp b/apps/docs/public/og/v1--frameworks--react.webp index 0bc95fde..7729cd79 100644 Binary files a/apps/docs/public/og/v1--frameworks--react.webp and b/apps/docs/public/og/v1--frameworks--react.webp differ diff --git a/apps/docs/public/og/v1--frameworks--remix.webp b/apps/docs/public/og/v1--frameworks--remix.webp index f9927619..d3ede801 100644 Binary files a/apps/docs/public/og/v1--frameworks--remix.webp and b/apps/docs/public/og/v1--frameworks--remix.webp differ diff --git a/apps/docs/public/og/v1--frameworks--solid.webp b/apps/docs/public/og/v1--frameworks--solid.webp index 35f9bf18..5f2a71a1 100644 Binary files a/apps/docs/public/og/v1--frameworks--solid.webp and b/apps/docs/public/og/v1--frameworks--solid.webp differ diff --git a/apps/docs/public/og/v1--frameworks--svelte.webp b/apps/docs/public/og/v1--frameworks--svelte.webp index 3925cc59..87577228 100644 Binary files a/apps/docs/public/og/v1--frameworks--svelte.webp and b/apps/docs/public/og/v1--frameworks--svelte.webp differ diff --git a/apps/docs/public/og/v1--frameworks--typescript.webp b/apps/docs/public/og/v1--frameworks--typescript.webp index 72882096..337b4dc2 100644 Binary files a/apps/docs/public/og/v1--frameworks--typescript.webp and b/apps/docs/public/og/v1--frameworks--typescript.webp differ diff --git a/apps/docs/public/og/v1--frameworks--vue.webp b/apps/docs/public/og/v1--frameworks--vue.webp index a7d0e5f5..bcb24dc5 100644 Binary files a/apps/docs/public/og/v1--frameworks--vue.webp and b/apps/docs/public/og/v1--frameworks--vue.webp differ diff --git a/apps/docs/public/og/v1--guide--changelog.webp b/apps/docs/public/og/v1--guide--changelog.webp index 89c586f6..b415df75 100644 Binary files a/apps/docs/public/og/v1--guide--changelog.webp and b/apps/docs/public/og/v1--guide--changelog.webp differ diff --git a/apps/docs/public/og/v1--guide--cli.webp b/apps/docs/public/og/v1--guide--cli.webp index 917a9cc9..0746fc77 100644 Binary files a/apps/docs/public/og/v1--guide--cli.webp and b/apps/docs/public/og/v1--guide--cli.webp differ diff --git a/apps/docs/public/og/v1--guide--configuration.webp b/apps/docs/public/og/v1--guide--configuration.webp index 6ccb5883..1dbaf574 100644 Binary files a/apps/docs/public/og/v1--guide--configuration.webp and b/apps/docs/public/og/v1--guide--configuration.webp differ diff --git a/apps/docs/public/og/v1--guide--getting-started.webp b/apps/docs/public/og/v1--guide--getting-started.webp index 25c6e2bd..563d8204 100644 Binary files a/apps/docs/public/og/v1--guide--getting-started.webp and b/apps/docs/public/og/v1--guide--getting-started.webp differ diff --git a/apps/docs/public/og/v1--guide--inspector.webp b/apps/docs/public/og/v1--guide--inspector.webp index 14e23e82..3d6a862a 100644 Binary files a/apps/docs/public/og/v1--guide--inspector.webp and b/apps/docs/public/og/v1--guide--inspector.webp differ diff --git a/apps/docs/public/og/v1--guide--installation.webp b/apps/docs/public/og/v1--guide--installation.webp index a7f25175..028acb84 100644 Binary files a/apps/docs/public/og/v1--guide--installation.webp and b/apps/docs/public/og/v1--guide--installation.webp differ diff --git a/apps/docs/public/og/v1--guide--playgrounds.webp b/apps/docs/public/og/v1--guide--playgrounds.webp index 2f819a43..6dde4f82 100644 Binary files a/apps/docs/public/og/v1--guide--playgrounds.webp and b/apps/docs/public/og/v1--guide--playgrounds.webp differ diff --git a/apps/docs/public/og/v1--packages--basic.webp b/apps/docs/public/og/v1--packages--basic.webp index 69ece085..d02eb4a5 100644 Binary files a/apps/docs/public/og/v1--packages--basic.webp and b/apps/docs/public/og/v1--packages--basic.webp differ diff --git a/apps/docs/public/og/v1--packages--core.webp b/apps/docs/public/og/v1--packages--core.webp index 6864262f..2bcc188b 100644 Binary files a/apps/docs/public/og/v1--packages--core.webp and b/apps/docs/public/og/v1--packages--core.webp differ diff --git a/apps/docs/public/og/v1--packages--integrations.webp b/apps/docs/public/og/v1--packages--integrations.webp index 74eeedae..82da640c 100644 Binary files a/apps/docs/public/og/v1--packages--integrations.webp and b/apps/docs/public/og/v1--packages--integrations.webp differ diff --git a/apps/docs/public/og/v1--packages--playground.webp b/apps/docs/public/og/v1--packages--playground.webp index 6b3d9e21..b67aadb4 100644 Binary files a/apps/docs/public/og/v1--packages--playground.webp and b/apps/docs/public/og/v1--packages--playground.webp differ diff --git a/apps/docs/public/og/v1--packages--tests.webp b/apps/docs/public/og/v1--packages--tests.webp index b2c9dfbc..b83e81f5 100644 Binary files a/apps/docs/public/og/v1--packages--tests.webp and b/apps/docs/public/og/v1--packages--tests.webp differ diff --git a/apps/docs/public/og/v1--readme.webp b/apps/docs/public/og/v1--readme.webp new file mode 100644 index 00000000..d92ea9dc Binary files /dev/null and b/apps/docs/public/og/v1--readme.webp differ diff --git a/apps/docs/public/og/v1--tooling--extensions.webp b/apps/docs/public/og/v1--tooling--extensions.webp index cfb5e036..4c50805d 100644 Binary files a/apps/docs/public/og/v1--tooling--extensions.webp and b/apps/docs/public/og/v1--tooling--extensions.webp differ diff --git a/apps/docs/public/og/v1--tooling--formats.webp b/apps/docs/public/og/v1--tooling--formats.webp index 75e6dbdf..4c5df93f 100644 Binary files a/apps/docs/public/og/v1--tooling--formats.webp and b/apps/docs/public/og/v1--tooling--formats.webp differ diff --git a/apps/docs/public/og/v1--tooling--libraries.webp b/apps/docs/public/og/v1--tooling--libraries.webp index a564ce73..90c44d58 100644 Binary files a/apps/docs/public/og/v1--tooling--libraries.webp and b/apps/docs/public/og/v1--tooling--libraries.webp differ diff --git a/apps/docs/public/og/v1--tooling--overview.webp b/apps/docs/public/og/v1--tooling--overview.webp index 03a11fd5..1c98e7bb 100644 Binary files a/apps/docs/public/og/v1--tooling--overview.webp and b/apps/docs/public/og/v1--tooling--overview.webp differ diff --git a/apps/docs/public/og/v1--tooling--testing.webp b/apps/docs/public/og/v1--tooling--testing.webp index a187dd2e..9d2cee81 100644 Binary files a/apps/docs/public/og/v1--tooling--testing.webp and b/apps/docs/public/og/v1--tooling--testing.webp differ diff --git a/apps/docs/public/og/v1--tooling--tools.webp b/apps/docs/public/og/v1--tooling--tools.webp index 75948bab..831de9c8 100644 Binary files a/apps/docs/public/og/v1--tooling--tools.webp and b/apps/docs/public/og/v1--tooling--tools.webp differ diff --git a/apps/docs/public/og/v1.webp b/apps/docs/public/og/v1.webp index e3fd7cda..c31658af 100644 Binary files a/apps/docs/public/og/v1.webp and b/apps/docs/public/og/v1.webp differ diff --git a/apps/docs/public/og/v2--api--reference--astro--src.webp b/apps/docs/public/og/v2--api--reference--astro--src.webp index dd91b5c2..2cba07ec 100644 Binary files a/apps/docs/public/og/v2--api--reference--astro--src.webp and b/apps/docs/public/og/v2--api--reference--astro--src.webp differ diff --git a/apps/docs/public/og/v2--api--reference--basic--src.webp b/apps/docs/public/og/v2--api--reference--basic--src.webp index 5918addb..3e356299 100644 Binary files a/apps/docs/public/og/v2--api--reference--basic--src.webp and b/apps/docs/public/og/v2--api--reference--basic--src.webp differ diff --git a/apps/docs/public/og/v2--api--reference--core--src.webp b/apps/docs/public/og/v2--api--reference--core--src.webp index 404a09ca..d726d43c 100644 Binary files a/apps/docs/public/og/v2--api--reference--core--src.webp and b/apps/docs/public/og/v2--api--reference--core--src.webp differ diff --git a/apps/docs/public/og/v2--api--reference--expo--src.webp b/apps/docs/public/og/v2--api--reference--expo--src.webp index c89e4196..343757e7 100644 Binary files a/apps/docs/public/og/v2--api--reference--expo--src.webp and b/apps/docs/public/og/v2--api--reference--expo--src.webp differ diff --git a/apps/docs/public/og/v2--api--reference--integrations--src.webp b/apps/docs/public/og/v2--api--reference--integrations--src.webp index b8130fca..119d2cf3 100644 Binary files a/apps/docs/public/og/v2--api--reference--integrations--src.webp and b/apps/docs/public/og/v2--api--reference--integrations--src.webp differ diff --git a/apps/docs/public/og/v2--api--reference--nest--src.webp b/apps/docs/public/og/v2--api--reference--nest--src.webp index 90347e5c..daaebda4 100644 Binary files a/apps/docs/public/og/v2--api--reference--nest--src.webp and b/apps/docs/public/og/v2--api--reference--nest--src.webp differ diff --git a/apps/docs/public/og/v2--api--reference--next--src.webp b/apps/docs/public/og/v2--api--reference--next--src.webp index bdcda5f9..3368248f 100644 Binary files a/apps/docs/public/og/v2--api--reference--next--src.webp and b/apps/docs/public/og/v2--api--reference--next--src.webp differ diff --git a/apps/docs/public/og/v2--api--reference--react--src.webp b/apps/docs/public/og/v2--api--reference--react--src.webp index d5591b42..c238bb23 100644 Binary files a/apps/docs/public/og/v2--api--reference--react--src.webp and b/apps/docs/public/og/v2--api--reference--react--src.webp differ diff --git a/apps/docs/public/og/v2--api--reference--typescript--src.webp b/apps/docs/public/og/v2--api--reference--typescript--src.webp index 88e6eb5b..7ebac9e5 100644 Binary files a/apps/docs/public/og/v2--api--reference--typescript--src.webp and b/apps/docs/public/og/v2--api--reference--typescript--src.webp differ diff --git a/apps/docs/public/og/v2--api--reference.webp b/apps/docs/public/og/v2--api--reference.webp index 1463da8d..053cdf55 100644 Binary files a/apps/docs/public/og/v2--api--reference.webp and b/apps/docs/public/og/v2--api--reference.webp differ diff --git a/apps/docs/public/og/v2--api.webp b/apps/docs/public/og/v2--api.webp index 70347557..aa3bd6cf 100644 Binary files a/apps/docs/public/og/v2--api.webp and b/apps/docs/public/og/v2--api.webp differ diff --git a/apps/docs/public/og/v2--frameworks--angular.webp b/apps/docs/public/og/v2--frameworks--angular.webp index e5e6bd78..8bfb5407 100644 Binary files a/apps/docs/public/og/v2--frameworks--angular.webp and b/apps/docs/public/og/v2--frameworks--angular.webp differ diff --git a/apps/docs/public/og/v2--frameworks--astro.webp b/apps/docs/public/og/v2--frameworks--astro.webp index 03c58ed2..471e9889 100644 Binary files a/apps/docs/public/og/v2--frameworks--astro.webp and b/apps/docs/public/og/v2--frameworks--astro.webp differ diff --git a/apps/docs/public/og/v2--frameworks--expo.webp b/apps/docs/public/og/v2--frameworks--expo.webp index d26123f9..99639ce8 100644 Binary files a/apps/docs/public/og/v2--frameworks--expo.webp and b/apps/docs/public/og/v2--frameworks--expo.webp differ diff --git a/apps/docs/public/og/v2--frameworks--hono.webp b/apps/docs/public/og/v2--frameworks--hono.webp index 379eb294..e77110b5 100644 Binary files a/apps/docs/public/og/v2--frameworks--hono.webp and b/apps/docs/public/og/v2--frameworks--hono.webp differ diff --git a/apps/docs/public/og/v2--frameworks--lit.webp b/apps/docs/public/og/v2--frameworks--lit.webp index 1bcdb37c..6f6f23ac 100644 Binary files a/apps/docs/public/og/v2--frameworks--lit.webp and b/apps/docs/public/og/v2--frameworks--lit.webp differ diff --git a/apps/docs/public/og/v2--frameworks--nest.webp b/apps/docs/public/og/v2--frameworks--nest.webp index e272abf7..4f07d4a8 100644 Binary files a/apps/docs/public/og/v2--frameworks--nest.webp and b/apps/docs/public/og/v2--frameworks--nest.webp differ diff --git a/apps/docs/public/og/v2--frameworks--next.webp b/apps/docs/public/og/v2--frameworks--next.webp index c64d7c2d..342ab047 100644 Binary files a/apps/docs/public/og/v2--frameworks--next.webp and b/apps/docs/public/og/v2--frameworks--next.webp differ diff --git a/apps/docs/public/og/v2--frameworks--nuxt.webp b/apps/docs/public/og/v2--frameworks--nuxt.webp index f1b05ba0..eda53102 100644 Binary files a/apps/docs/public/og/v2--frameworks--nuxt.webp and b/apps/docs/public/og/v2--frameworks--nuxt.webp differ diff --git a/apps/docs/public/og/v2--frameworks--preact.webp b/apps/docs/public/og/v2--frameworks--preact.webp index 968c0d37..9702f07b 100644 Binary files a/apps/docs/public/og/v2--frameworks--preact.webp and b/apps/docs/public/og/v2--frameworks--preact.webp differ diff --git a/apps/docs/public/og/v2--frameworks--qwik.webp b/apps/docs/public/og/v2--frameworks--qwik.webp index 8e357018..6873cc38 100644 Binary files a/apps/docs/public/og/v2--frameworks--qwik.webp and b/apps/docs/public/og/v2--frameworks--qwik.webp differ diff --git a/apps/docs/public/og/v2--frameworks--react-router.webp b/apps/docs/public/og/v2--frameworks--react-router.webp index 3904f450..5d152ce1 100644 Binary files a/apps/docs/public/og/v2--frameworks--react-router.webp and b/apps/docs/public/og/v2--frameworks--react-router.webp differ diff --git a/apps/docs/public/og/v2--frameworks--react.webp b/apps/docs/public/og/v2--frameworks--react.webp index fc5f6067..45026cbe 100644 Binary files a/apps/docs/public/og/v2--frameworks--react.webp and b/apps/docs/public/og/v2--frameworks--react.webp differ diff --git a/apps/docs/public/og/v2--frameworks--remix.webp b/apps/docs/public/og/v2--frameworks--remix.webp index cea298d6..3057bca0 100644 Binary files a/apps/docs/public/og/v2--frameworks--remix.webp and b/apps/docs/public/og/v2--frameworks--remix.webp differ diff --git a/apps/docs/public/og/v2--frameworks--slidev.webp b/apps/docs/public/og/v2--frameworks--slidev.webp index 70546a39..a92b342c 100644 Binary files a/apps/docs/public/og/v2--frameworks--slidev.webp and b/apps/docs/public/og/v2--frameworks--slidev.webp differ diff --git a/apps/docs/public/og/v2--frameworks--solid.webp b/apps/docs/public/og/v2--frameworks--solid.webp index fa66ead5..61e01588 100644 Binary files a/apps/docs/public/og/v2--frameworks--solid.webp and b/apps/docs/public/og/v2--frameworks--solid.webp differ diff --git a/apps/docs/public/og/v2--frameworks--svelte.webp b/apps/docs/public/og/v2--frameworks--svelte.webp index 5a4069ab..473fb6d0 100644 Binary files a/apps/docs/public/og/v2--frameworks--svelte.webp and b/apps/docs/public/og/v2--frameworks--svelte.webp differ diff --git a/apps/docs/public/og/v2--frameworks--tanstack-start.webp b/apps/docs/public/og/v2--frameworks--tanstack-start.webp index 04af4a26..4ac019ad 100644 Binary files a/apps/docs/public/og/v2--frameworks--tanstack-start.webp and b/apps/docs/public/og/v2--frameworks--tanstack-start.webp differ diff --git a/apps/docs/public/og/v2--frameworks--typescript.webp b/apps/docs/public/og/v2--frameworks--typescript.webp index 033a583a..cc20b25e 100644 Binary files a/apps/docs/public/og/v2--frameworks--typescript.webp and b/apps/docs/public/og/v2--frameworks--typescript.webp differ diff --git a/apps/docs/public/og/v2--frameworks--vite.webp b/apps/docs/public/og/v2--frameworks--vite.webp index bff50795..2e4f8fbd 100644 Binary files a/apps/docs/public/og/v2--frameworks--vite.webp and b/apps/docs/public/og/v2--frameworks--vite.webp differ diff --git a/apps/docs/public/og/v2--frameworks--vue.webp b/apps/docs/public/og/v2--frameworks--vue.webp index 9762dfb6..a05874fe 100644 Binary files a/apps/docs/public/og/v2--frameworks--vue.webp and b/apps/docs/public/og/v2--frameworks--vue.webp differ diff --git a/apps/docs/public/og/v2--guide--acknowledgements.webp b/apps/docs/public/og/v2--guide--acknowledgements.webp index b63d0e6f..bcbeaa22 100644 Binary files a/apps/docs/public/og/v2--guide--acknowledgements.webp and b/apps/docs/public/og/v2--guide--acknowledgements.webp differ diff --git a/apps/docs/public/og/v2--guide--ai-agents.webp b/apps/docs/public/og/v2--guide--ai-agents.webp index ac1f7be3..e7a463ab 100644 Binary files a/apps/docs/public/og/v2--guide--ai-agents.webp and b/apps/docs/public/og/v2--guide--ai-agents.webp differ diff --git a/apps/docs/public/og/v2--guide--architecture.webp b/apps/docs/public/og/v2--guide--architecture.webp index 0143e272..98584af7 100644 Binary files a/apps/docs/public/og/v2--guide--architecture.webp and b/apps/docs/public/og/v2--guide--architecture.webp differ diff --git a/apps/docs/public/og/v2--guide--changelog.webp b/apps/docs/public/og/v2--guide--changelog.webp index 9f701127..296c402e 100644 Binary files a/apps/docs/public/og/v2--guide--changelog.webp and b/apps/docs/public/og/v2--guide--changelog.webp differ diff --git a/apps/docs/public/og/v2--guide--cli.webp b/apps/docs/public/og/v2--guide--cli.webp index e0c4485c..a0463236 100644 Binary files a/apps/docs/public/og/v2--guide--cli.webp and b/apps/docs/public/og/v2--guide--cli.webp differ diff --git a/apps/docs/public/og/v2--guide--config-builder.webp b/apps/docs/public/og/v2--guide--config-builder.webp index f028726b..0fc8d006 100644 Binary files a/apps/docs/public/og/v2--guide--config-builder.webp and b/apps/docs/public/og/v2--guide--config-builder.webp differ diff --git a/apps/docs/public/og/v2--guide--configuration.webp b/apps/docs/public/og/v2--guide--configuration.webp index 52388916..dd30c656 100644 Binary files a/apps/docs/public/og/v2--guide--configuration.webp and b/apps/docs/public/og/v2--guide--configuration.webp differ diff --git a/apps/docs/public/og/v2--guide--development.webp b/apps/docs/public/og/v2--guide--development.webp index ab9fa98e..9cdbb1dc 100644 Binary files a/apps/docs/public/og/v2--guide--development.webp and b/apps/docs/public/og/v2--guide--development.webp differ diff --git a/apps/docs/public/og/v2--guide--doctor-report.webp b/apps/docs/public/og/v2--guide--doctor-report.webp index f22308ee..490b621e 100644 Binary files a/apps/docs/public/og/v2--guide--doctor-report.webp and b/apps/docs/public/og/v2--guide--doctor-report.webp differ diff --git a/apps/docs/public/og/v2--guide--getting-started.webp b/apps/docs/public/og/v2--guide--getting-started.webp index 202cc5b1..3470e1f4 100644 Binary files a/apps/docs/public/og/v2--guide--getting-started.webp and b/apps/docs/public/og/v2--guide--getting-started.webp differ diff --git a/apps/docs/public/og/v2--guide--inspector.webp b/apps/docs/public/og/v2--guide--inspector.webp index 3c5be67a..6675e9e5 100644 Binary files a/apps/docs/public/og/v2--guide--inspector.webp and b/apps/docs/public/og/v2--guide--inspector.webp differ diff --git a/apps/docs/public/og/v2--guide--installation.webp b/apps/docs/public/og/v2--guide--installation.webp index 6e3eb98f..8a09d32a 100644 Binary files a/apps/docs/public/og/v2--guide--installation.webp and b/apps/docs/public/og/v2--guide--installation.webp differ diff --git a/apps/docs/public/og/v2--guide--lite-migration.webp b/apps/docs/public/og/v2--guide--lite-migration.webp index d0b769d8..d19057b3 100644 Binary files a/apps/docs/public/og/v2--guide--lite-migration.webp and b/apps/docs/public/og/v2--guide--lite-migration.webp differ diff --git a/apps/docs/public/og/v2--guide--migration-v1-to-v2.webp b/apps/docs/public/og/v2--guide--migration-v1-to-v2.webp index 61305ebb..9cee4e1c 100644 Binary files a/apps/docs/public/og/v2--guide--migration-v1-to-v2.webp and b/apps/docs/public/og/v2--guide--migration-v1-to-v2.webp differ diff --git a/apps/docs/public/og/v2--guide--monorepo.webp b/apps/docs/public/og/v2--guide--monorepo.webp index a817656d..2b8377ca 100644 Binary files a/apps/docs/public/og/v2--guide--monorepo.webp and b/apps/docs/public/og/v2--guide--monorepo.webp differ diff --git a/apps/docs/public/og/v2--guide--playgrounds.webp b/apps/docs/public/og/v2--guide--playgrounds.webp index d135e657..c3b729f2 100644 Binary files a/apps/docs/public/og/v2--guide--playgrounds.webp and b/apps/docs/public/og/v2--guide--playgrounds.webp differ diff --git a/apps/docs/public/og/v2--guide--presets.webp b/apps/docs/public/og/v2--guide--presets.webp index c497cf87..e3cbeddc 100644 Binary files a/apps/docs/public/og/v2--guide--presets.webp and b/apps/docs/public/og/v2--guide--presets.webp differ diff --git a/apps/docs/public/og/v2--guide--releases.webp b/apps/docs/public/og/v2--guide--releases.webp index a8f6749d..a024cd98 100644 Binary files a/apps/docs/public/og/v2--guide--releases.webp and b/apps/docs/public/og/v2--guide--releases.webp differ diff --git a/apps/docs/public/og/v2--guide--runtime.webp b/apps/docs/public/og/v2--guide--runtime.webp index 6837b9df..55c16242 100644 Binary files a/apps/docs/public/og/v2--guide--runtime.webp and b/apps/docs/public/og/v2--guide--runtime.webp differ diff --git a/apps/docs/public/og/v2--guide--troubleshooting.webp b/apps/docs/public/og/v2--guide--troubleshooting.webp index 69ef68d8..fe8bcf22 100644 Binary files a/apps/docs/public/og/v2--guide--troubleshooting.webp and b/apps/docs/public/og/v2--guide--troubleshooting.webp differ diff --git a/apps/docs/public/og/v2--packages--basic.webp b/apps/docs/public/og/v2--packages--basic.webp index 9a1a7e87..ee3a3765 100644 Binary files a/apps/docs/public/og/v2--packages--basic.webp and b/apps/docs/public/og/v2--packages--basic.webp differ diff --git a/apps/docs/public/og/v2--packages--core.webp b/apps/docs/public/og/v2--packages--core.webp index fbd6f493..432203bb 100644 Binary files a/apps/docs/public/og/v2--packages--core.webp and b/apps/docs/public/og/v2--packages--core.webp differ diff --git a/apps/docs/public/og/v2--packages--integrations.webp b/apps/docs/public/og/v2--packages--integrations.webp index 22c9b7e5..686ebe5d 100644 Binary files a/apps/docs/public/og/v2--packages--integrations.webp and b/apps/docs/public/og/v2--packages--integrations.webp differ diff --git a/apps/docs/public/og/v2--packages--lite.webp b/apps/docs/public/og/v2--packages--lite.webp index ccefed49..d29342f0 100644 Binary files a/apps/docs/public/og/v2--packages--lite.webp and b/apps/docs/public/og/v2--packages--lite.webp differ diff --git a/apps/docs/public/og/v2--packages--playground.webp b/apps/docs/public/og/v2--packages--playground.webp index 2b7ad1e4..46fbe31a 100644 Binary files a/apps/docs/public/og/v2--packages--playground.webp and b/apps/docs/public/og/v2--packages--playground.webp differ diff --git a/apps/docs/public/og/v2--packages--tests.webp b/apps/docs/public/og/v2--packages--tests.webp index bc661c5e..141eccfd 100644 Binary files a/apps/docs/public/og/v2--packages--tests.webp and b/apps/docs/public/og/v2--packages--tests.webp differ diff --git a/apps/docs/public/og/v2--tooling--extensions.webp b/apps/docs/public/og/v2--tooling--extensions.webp index aa936622..f34987e4 100644 Binary files a/apps/docs/public/og/v2--tooling--extensions.webp and b/apps/docs/public/og/v2--tooling--extensions.webp differ diff --git a/apps/docs/public/og/v2--tooling--formats.webp b/apps/docs/public/og/v2--tooling--formats.webp index de03e55c..a8183d9e 100644 Binary files a/apps/docs/public/og/v2--tooling--formats.webp and b/apps/docs/public/og/v2--tooling--formats.webp differ diff --git a/apps/docs/public/og/v2--tooling--libraries.webp b/apps/docs/public/og/v2--tooling--libraries.webp index 58f25a5b..83656621 100644 Binary files a/apps/docs/public/og/v2--tooling--libraries.webp and b/apps/docs/public/og/v2--tooling--libraries.webp differ diff --git a/apps/docs/public/og/v2--tooling--overview.webp b/apps/docs/public/og/v2--tooling--overview.webp index 491589ab..54e9e47e 100644 Binary files a/apps/docs/public/og/v2--tooling--overview.webp and b/apps/docs/public/og/v2--tooling--overview.webp differ diff --git a/apps/docs/public/og/v2--tooling--testing.webp b/apps/docs/public/og/v2--tooling--testing.webp index 1090f47d..76ce22e4 100644 Binary files a/apps/docs/public/og/v2--tooling--testing.webp and b/apps/docs/public/og/v2--tooling--testing.webp differ diff --git a/apps/docs/public/og/v2--tooling--tools.webp b/apps/docs/public/og/v2--tooling--tools.webp index 1c22f2f7..b9d209f0 100644 Binary files a/apps/docs/public/og/v2--tooling--tools.webp and b/apps/docs/public/og/v2--tooling--tools.webp differ diff --git a/apps/docs/public/og/v2.webp b/apps/docs/public/og/v2.webp index 67472013..1868b56e 100644 Binary files a/apps/docs/public/og/v2.webp and b/apps/docs/public/og/v2.webp differ diff --git a/apps/docs/scripts/generate-og-images.mjs b/apps/docs/scripts/generate-og-images.mjs index 8de4b7bf..092d9ebf 100644 --- a/apps/docs/scripts/generate-og-images.mjs +++ b/apps/docs/scripts/generate-og-images.mjs @@ -1,58 +1,14 @@ -/** - * Pre-build OG image generator for the ESLint Config documentation site. - * - * Reads all Starlight content from `src/content/docs/`, generates a branded - * 1200×630 OG image per page, and writes them to `public/og/` as static files. - * - * Run via `pnpm run generate:og` or as part of `docs:build`. - * Set FORCE_OG=1 to regenerate images that already exist. - */ - -import fs, { promises as fsp } from 'node:fs' -import os from 'node:os' import path from 'node:path' import { fileURLToPath } from 'node:url' -import { Worker } from 'node:worker_threads' - -const __dirname = path.dirname(fileURLToPath(import.meta.url)) -const DOCS_DIR = path.resolve(__dirname, '..') -const CONTENT_DIR = path.join(DOCS_DIR, 'src', 'content', 'docs') -const OUT_DIR = path.join(DOCS_DIR, 'public', 'og') -const WORKER_SCRIPT = new URL('./og-render-worker.mjs', import.meta.url) -const FORCE = process.env.FORCE_OG === '1' -// --------------------------------------------------------------------------- -// Helpers -// --------------------------------------------------------------------------- -const trimOuterSlashes = value => value.replace(/^\/+|\/+$/g, '') - -const safeDecodeURIComponent = value => { - try { - return decodeURIComponent(value) - } catch { - return value - } -} - -const getOgSlug = pathname => trimOuterSlashes(pathname) - .split('/') - .filter(Boolean) - .map(segment => encodeURIComponent(safeDecodeURIComponent(segment)).replaceAll('%', '~')) - .join('--') -const getOgFileName = pathname => `${getOgSlug(pathname) || 'index'}.webp` +import { pathnameOutput } from '@santi020k/og' +import { collectContentCards } from '@santi020k/og/content' +import { definePresetConfig } from '@santi020k/og/presets' -const extractFrontmatterField = (content, field) => { - const re = new RegExp(`^${field}:\\s*["']?(.+?)["']?\\s*$`, 'm') - const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/) - const frontmatter = frontmatterMatch ? frontmatterMatch[1] : '' - const match = frontmatter.match(re) +const directory = path.dirname(fileURLToPath(import.meta.url)) +const root = path.resolve(directory, '..') - if (!match) return null - - return match[1].replace(/^["']|["']$/g, '').trim() -} - -const SECTION_MAP = { +const sections = { api: 'API', frameworks: 'Framework', guide: 'Guide', @@ -60,217 +16,51 @@ const SECTION_MAP = { tooling: 'Tooling' } -const getSectionFromPathname = pathname => { - const segments = trimOuterSlashes(pathname).split('/').filter(Boolean) - - if (segments.length === 0) return 'Docs' - - if (segments[0] === 'v1' || segments[0] === 'v2') { - const version = segments[0] - const sub = segments[1] - - return sub ? `${version} ${SECTION_MAP[sub] ?? 'Docs'}` : `${version} Archive` - } - - return SECTION_MAP[segments[0]] ?? 'Docs' -} - -const collectDocFiles = dir => { - if (!fs.existsSync(dir)) return [] - - return fs.readdirSync(dir, { withFileTypes: true }).flatMap(entry => { - const entryPath = path.join(dir, entry.name) - - if (entry.isDirectory()) return collectDocFiles(entryPath) - - const isDoc = entry.name.endsWith('.md') || entry.name.endsWith('.mdx') - - return isDoc ? [entryPath] : [] - }) -} - -const filePathToPathname = filePath => { - const relative = path.relative(CONTENT_DIR, filePath).replaceAll(path.sep, '/') - const withoutExt = relative.replace(/\.mdx?$/, '') - - const slug = withoutExt === 'index' || withoutExt.endsWith('/index') ? - withoutExt.replace(/\/?index$/, '') : - withoutExt - - return slug ? `/${slug}/` : '/' -} - -// --------------------------------------------------------------------------- -// Spec collection -// --------------------------------------------------------------------------- - -const collectSpecs = () => { - const specs = [] - - for (const filePath of collectDocFiles(CONTENT_DIR)) { - const content = fs.readFileSync(filePath, 'utf8') - const title = extractFrontmatterField(content, 'title') ?? path.basename(filePath, path.extname(filePath)) - const description = extractFrontmatterField(content, 'description') ?? undefined - const pathname = filePathToPathname(filePath) - const section = getSectionFromPathname(pathname) - - specs.push({ - outFile: path.join(OUT_DIR, getOgFileName(pathname)), - props: { description, section, title } - }) - } - - return specs -} - -// --------------------------------------------------------------------------- -// Worker pool -// --------------------------------------------------------------------------- - -class OgRenderPool { - constructor(workerCount) { - this.workerCount = workerCount - - this.workers = [] - - this.available = [] - - this.waiting = [] - - this.inFlight = new Map() - - this.nextId = 1 - } - - async start() { - for (let i = 0; i < this.workerCount; i++) { - const w = new Worker(WORKER_SCRIPT, { type: 'module' }) - - w.on('message', msg => this.onMessage(w, msg)) - - w.on('error', err => this.onWorkerError(w, err)) - - this.workers.push(w) - - this.available.push(w) - } - } - - onMessage(worker, msg) { - const entry = this.inFlight.get(msg.id) - - if (!entry) return - - this.inFlight.delete(msg.id) - - this.available.push(worker) - - if (msg.ok) { - entry.resolve(Buffer.from(msg.buffer)) - } else { - entry.reject(new Error(msg.message ?? 'OG worker render failed')) - } - - this.pump() - } - - onWorkerError(worker, err) { - const idx = this.workers.indexOf(worker) - - if (idx !== -1) this.workers.splice(idx, 1) - - for (const [id, entry] of this.inFlight) { - if (entry.worker === worker) { - this.inFlight.delete(id) - - entry.reject(err instanceof Error ? err : new Error(String(err))) - - break - } - } - - this.pump() - } - - pump() { - while (this.waiting.length > 0 && this.available.length > 0) { - const job = this.waiting.shift() - const worker = this.available.pop() - const id = this.nextId++ - - if (!job || !worker) break - - this.inFlight.set(id, { reject: job.reject, resolve: job.resolve, worker }) - - worker.postMessage({ id, props: job.props }) - } - } - - render(props) { - return new Promise((resolve, reject) => { - this.waiting.push({ props, reject, resolve }) - - this.pump() - }) - } - - async shutdown() { - await Promise.all(this.workers.map(w => w.terminate())) - - this.workers = [] - - this.available = [] - } -} - -const generateOne = async (pool, { outFile, props }) => { - const buffer = await pool.render(props) - - await fsp.mkdir(path.dirname(outFile), { recursive: true }) - - await fsp.writeFile(outFile, buffer) - - process.stdout.write(` write ${path.relative(DOCS_DIR, outFile)}\n`) -} - -// --------------------------------------------------------------------------- -// Entry point -// --------------------------------------------------------------------------- - -const generateAll = async () => { - const start = performance.now() - const specs = collectSpecs() - - const pendingSpecs = FORCE ? - specs : - specs.filter(s => !fs.existsSync(s.outFile)) - - const configured = Math.min(16, os.availableParallelism()) - const pendingCount = pendingSpecs.length - const poolSize = pendingCount === 0 ? 0 : Math.min(configured, pendingCount) - let pool = null - - try { - if (poolSize > 0) { - pool = new OgRenderPool(poolSize) - - await pool.start() - } - - console.log( - `\n🖼 Generating ${pendingCount}/${specs.length} OG images (workers=${poolSize})…\n` - ) - - if (pendingCount > 0) { - await Promise.all(pendingSpecs.map(spec => generateOne(pool, spec))) - } - } finally { - if (pool) await pool.shutdown() - } +const sectionFor = slug => { + const segments = slug.split('/').filter(Boolean) + const version = ['v1', 'v2'].includes(segments[0]) ? segments.shift() : undefined + const section = sections[segments[0]] ?? 'Docs' - const elapsed = ((performance.now() - start) / 1000).toFixed(2) + if (!version) return section - console.log(`\n✅ Done in ${elapsed}s\n`) + return segments.length === 0 ? `${version} Archive` : `${version} ${section}` } -await generateAll() +export default definePresetConfig({ + cards: () => collectContentCards({ + directory: 'src/content/docs', + map: entry => ({ + badge: sectionFor(entry.slug), + ...(typeof entry.frontmatter.description === 'string' ? + { description: entry.frontmatter.description } : + {}), + title: typeof entry.frontmatter.title === 'string' ? + entry.frontmatter.title : + path.basename(entry.slug), + variant: 'docs' + }), + output: entry => pathnameOutput(`/${entry.slug.toLowerCase()}/`), + route: entry => `/${entry.slug.toLowerCase()}/`, + root + }), + clean: true, + concurrency: 'auto', + outputDirectory: 'public/og', + routeManifest: { file: 'public/og/manifest.json', publicPath: '/og' }, + preset: { + brand: { + domain: 'eslint.santi020k.com', + logo: 'public/logo-square.svg', + name: 'ESLint Config' + }, + theme: { + accent: '#a56ef7', + background: '#110c1d', + foreground: '#dfdde3', + muted: '#b6b2bd', + panel: '#1c1528' + }, + variant: 'docs' + }, + root +}) diff --git a/apps/docs/scripts/og-render-worker.mjs b/apps/docs/scripts/og-render-worker.mjs deleted file mode 100644 index 9df5a60c..00000000 --- a/apps/docs/scripts/og-render-worker.mjs +++ /dev/null @@ -1,21 +0,0 @@ -import { parentPort } from 'node:worker_threads' - -import { renderOgImage } from './render-og-image.js' - -parentPort?.on('message', async ({ id, props }) => { - try { - const buffer = await renderOgImage(props) - const copy = new Uint8Array(buffer.length) - - copy.set(buffer) - - parentPort.postMessage({ buffer: copy.buffer, id, ok: true }, [copy.buffer]) - } catch (err) { - parentPort.postMessage({ - id, - message: err instanceof Error ? err.message : String(err), - ok: false, - stack: err instanceof Error ? err.stack : undefined - }) - } -}) diff --git a/apps/docs/scripts/render-og-image.js b/apps/docs/scripts/render-og-image.js deleted file mode 100644 index 6c70e0df..00000000 --- a/apps/docs/scripts/render-og-image.js +++ /dev/null @@ -1,205 +0,0 @@ -/** - * Satori-based OG card renderer for eslint-config-basic docs. - * Design mirrors the astro-doctor docs card: dark gradient, favicon in header, - * purple accent, title + optional description in the body. - */ - -import { readFileSync } from 'node:fs' -import path from 'node:path' -import { fileURLToPath } from 'node:url' - -import { Resvg } from '@resvg/resvg-js' -import satori from 'satori' -import sharp from 'sharp' - -const __dirname = path.dirname(fileURLToPath(import.meta.url)) -const ROOT = path.resolve(__dirname, '..') -// ─── Assets ────────────────────────────────────────────────────────────────── -const faviconSvg = readFileSync(path.join(ROOT, 'public', 'favicon.svg')) - -const iconBuf = await sharp(faviconSvg) - .resize(72, 72, { background: { alpha: 0, b: 0, g: 0, r: 0 }, fit: 'contain' }) - .png() - .toBuffer() - -const ICON_URI = `data:image/png;base64,${iconBuf.toString('base64')}` - -// ─── Fonts ─────────────────────────────────────────────────────────────────── - -const FONTS = [ - { - data: readFileSync(path.join(ROOT, 'public', 'fonts', 'Montserrat-Regular.ttf')), - name: 'Montserrat', - style: 'normal', - weight: 400 - }, - { - data: readFileSync(path.join(ROOT, 'public', 'fonts', 'Montserrat-ExtraBold.ttf')), - name: 'Montserrat', - style: 'normal', - weight: 900 - } -] - -// ─── Helpers ───────────────────────────────────────────────────────────────── - -const truncate = (s, max = 130) => s.length > max ? `${s.slice(0, max - 1).trimEnd()}…` : s - -const titleFontSize = title => { - if (title.length <= 22) return 88 - - if (title.length <= 40) return 74 - - if (title.length <= 58) return 60 - - return 48 -} - -// ─── Card template ──────────────────────────────────────────────────────────── - -const S = { - accentBar: { - backgroundImage: 'linear-gradient(90deg,#6319be 0%,#945df4 100%)', - display: 'flex', - flexShrink: 0, - height: 3, - width: 1200 - }, - accentLine: { - backgroundImage: 'linear-gradient(90deg,#6319be,#945df4)', - borderRadius: 999, - display: 'flex', - height: 3, - width: 80 - }, - badge: { - alignItems: 'center', - backgroundImage: 'linear-gradient(135deg,#6319be,#945df4)', - borderRadius: 999, - display: 'flex', - padding: '12px 24px' - }, - badgeText: { - color: '#fff', - display: 'flex', - fontSize: 16, - fontWeight: 700, - letterSpacing: '0.14em', - textTransform: 'uppercase' - }, - body: { - display: 'flex', - flex: 1, - flexDirection: 'column', - gap: 22, - justifyContent: 'center' - }, - card: { - backgroundImage: 'linear-gradient(135deg,#0d0d14 0%,#120d1e 100%)', - display: 'flex', - flexDirection: 'column', - fontFamily: 'Montserrat, sans-serif', - height: 630, - width: 1200 - }, - content: { - display: 'flex', - flex: 1, - flexDirection: 'column', - padding: '52px 64px' - }, - description: { - color: '#94a3b8', - display: 'flex', - fontSize: 22, - lineHeight: 1.55, - margin: 0, - maxWidth: 900 - }, - header: { - alignItems: 'center', - display: 'flex', - justifyContent: 'space-between' - }, - logo: { - display: 'flex', - height: 72, - width: 72 - }, - logoDomain: { - color: '#4b5563', - display: 'flex', - fontSize: 14, - letterSpacing: '0.4px' - }, - logoGroup: { - alignItems: 'center', - display: 'flex', - gap: 16 - }, - logoName: { - color: '#a78bfa', - display: 'flex', - fontSize: 22, - fontWeight: 600, - letterSpacing: 1 - }, - logoText: { - display: 'flex', - flexDirection: 'column', - gap: 4 - } -} - -const element = (type, props, ...children) => ({ - props: { - ...props, - children: children.length === 1 ? children[0] : children - }, - type -}) - -const renderCard = ({ description, section, title }) => { - const size = titleFontSize(title) - - const titleStyle = { - color: '#fff', - display: 'flex', - fontSize: size, - fontWeight: 900, - letterSpacing: '-0.03em', - lineHeight: 1.08, - margin: 0, - maxWidth: 1050 - } - - return element( - 'div', { style: S.card }, element('div', { style: S.accentBar }), element( - 'div', { style: S.content }, element( - 'div', { style: S.header }, element( - 'div', { style: S.logoGroup }, element('img', { src: ICON_URI, style: S.logo }), element( - 'div', { style: S.logoText }, element('span', { style: S.logoName }, 'eslint-config-basic'), element('span', { style: S.logoDomain }, 'eslint.santi020k.com') - ) - ), element( - 'div', { style: S.badge }, element('span', { style: S.badgeText }, section) - ) - ), element( - 'div', { style: S.body }, element('div', { style: S.accentLine }), element('h1', { style: titleStyle }, title), ...(description ? [element('p', { style: S.description }, truncate(description))] : []) - ) - ) - ) -} - -// ─── Main export ────────────────────────────────────────────────────────────── - -/** - * @param {{ title: string, description?: string, section: string }} props - * @returns {Promise} - */ -export const renderOgImage = async props => { - const markup = /** @type {Parameters[0]} */ (renderCard(props)) - const svg = await satori(markup, { fonts: FONTS, height: 630, width: 1200 }) - const png = new Resvg(svg, { fitTo: { mode: 'width', value: 1200 } }).render().asPng() - - return sharp(png).webp({ effort: 0, quality: 82 }).toBuffer() -} diff --git a/apps/docs/src/components/Head.astro b/apps/docs/src/components/Head.astro index 201994c2..5c23d5be 100644 --- a/apps/docs/src/components/Head.astro +++ b/apps/docs/src/components/Head.astro @@ -1,46 +1,35 @@ --- -import Default from '@astrojs/starlight/components/Head.astro' - -const trimOuterSlashes = (value: string) => value.replace(/^\/+|\/+$/g, '') - -const safeDecodeURIComponent = (value: string) => { - try { - return decodeURIComponent(value) - } catch { - return value - } -} - -const getOgSlug = (pathname: string) => trimOuterSlashes(pathname) - .split('/') - .filter(Boolean) - .map(segment => encodeURIComponent(safeDecodeURIComponent(segment)).replaceAll('%', '~')) - .join('--') - -const isRecord = (value: unknown): value is Record => typeof value === 'object' && value !== null - -const getPageTitle = (locals: unknown) => { - if (!isRecord(locals)) return 'ESLint Config' - - const route = locals.starlightRoute - - if (!isRecord(route) || !isRecord(route.entry) || !isRecord(route.entry.data)) - return 'ESLint Config' - - return typeof route.entry.data.title === 'string' ? - route.entry.data.title : - 'ESLint Config' -} - -const slug = getOgSlug(Astro.url.pathname) -const ogImagePath = `/og/${slug || 'index'}.webp` -const site = Astro.site ?? new URL('https://eslint.santi020k.com/') -const ogImageURL = new URL(ogImagePath, site).href -const pageTitle = getPageTitle(Astro.locals) -const ogImageAlt = `${pageTitle} — ESLint Config` +import type { StarlightRouteData } from '@astrojs/starlight/route-data' +import StarlightMetadataHead from '@santi020k/og/astro/starlight' +import { serializeJsonLd, webPageSchema } from '@santi020k/og/schema' + +const route: StarlightRouteData = Astro.locals.starlightRoute +const data = route.entry.data as Readonly> +const title = typeof data.title === 'string' ? data.title : route.siteTitle + +const description = typeof data.description === 'string' && data.description.trim() ? + data.description : + `${title} documentation.` + +const canonical = new URL(Astro.url.pathname, Astro.site ?? Astro.url.origin).href +const indexable = Astro.url.pathname !== '/404' && Astro.url.pathname !== '/404/' + +const schema = indexable ? +serializeJsonLd(webPageSchema({ + description, + inLanguage: route.lang, + name: title, + url: canonical +})) : +undefined --- - + + + + + +{schema && - - - - - - diff --git a/apps/docs/src/content/docs/api/reference/astro/src.md b/apps/docs/src/content/docs/api/reference/astro/src.md index 11a0f3a3..53aa7e1f 100644 --- a/apps/docs/src/content/docs/api/reference/astro/src.md +++ b/apps/docs/src/content/docs/api/reference/astro/src.md @@ -7,7 +7,7 @@ description: "@santi020k/eslint-config-basic" ### AstroOptions -Defined in: [packages/astro/src/rules.ts:7](https://github.com/santi020k/eslint-config-basic/blob/main/packages/astro/src/rules.ts#L7) +Defined in: packages/astro/src/rules.ts:7 Astro-specific ESLint options @@ -21,7 +21,7 @@ Astro-specific ESLint options > `optional` **hasReact?**: `boolean` -Defined in: [packages/astro/src/rules.ts:12](https://github.com/santi020k/eslint-config-basic/blob/main/packages/astro/src/rules.ts#L12) +Defined in: packages/astro/src/rules.ts:12 If true, includes React-specific overrides for .astro files @@ -29,7 +29,7 @@ If true, includes React-specific overrides for .astro files > `optional` **hasSolid?**: `boolean` -Defined in: [packages/astro/src/rules.ts:15](https://github.com/santi020k/eslint-config-basic/blob/main/packages/astro/src/rules.ts#L15) +Defined in: packages/astro/src/rules.ts:15 If true, includes SolidJS-specific sorting groups and JSX overrides @@ -37,7 +37,7 @@ If true, includes SolidJS-specific sorting groups and JSX overrides > `optional` **hasSvelte?**: `boolean` -Defined in: [packages/astro/src/rules.ts:18](https://github.com/santi020k/eslint-config-basic/blob/main/packages/astro/src/rules.ts#L18) +Defined in: packages/astro/src/rules.ts:18 If true, includes Svelte-specific sorting groups @@ -45,7 +45,7 @@ If true, includes Svelte-specific sorting groups > `optional` **hasVue?**: `boolean` -Defined in: [packages/astro/src/rules.ts:21](https://github.com/santi020k/eslint-config-basic/blob/main/packages/astro/src/rules.ts#L21) +Defined in: packages/astro/src/rules.ts:21 If true, includes Vue-specific sorting groups @@ -53,7 +53,7 @@ If true, includes Vue-specific sorting groups > `optional` **tsconfigRootDir?**: `string` -Defined in: [packages/astro/src/rules.ts:27](https://github.com/santi020k/eslint-config-basic/blob/main/packages/astro/src/rules.ts#L27) +Defined in: packages/astro/src/rules.ts:27 Optional tsconfig root passed through from the main config composer. This keeps Astro parser project lookup stable when projectService is disabled. @@ -62,7 +62,7 @@ This keeps Astro parser project lookup stable when projectService is disabled. > `optional` **typeChecked?**: `boolean` -Defined in: [packages/astro/src/rules.ts:33](https://github.com/santi020k/eslint-config-basic/blob/main/packages/astro/src/rules.ts#L33) +Defined in: packages/astro/src/rules.ts:33 Whether to enable type-aware linting for Astro files. Disabling this avoids parser crashes in Astro packages without TSConfig files. @@ -73,7 +73,7 @@ Disabling this avoids parser crashes in Astro packages without TSConfig files. > **createAstroConfig**(`options?`): `ConfigArray` -Defined in: [packages/astro/src/index.ts:12](https://github.com/santi020k/eslint-config-basic/blob/main/packages/astro/src/index.ts#L12) +Defined in: packages/astro/src/index.ts:12 Creates Astro ESLint configuration based on enabled frameworks @@ -97,7 +97,7 @@ The Astro configuration array > **getRules**(`options?`): `TSESLint.Linter.RulesRecord` -Defined in: [packages/astro/src/rules.ts:58](https://github.com/santi020k/eslint-config-basic/blob/main/packages/astro/src/rules.ts#L58) +Defined in: packages/astro/src/rules.ts:58 Generates Astro-specific rules based on enabled frameworks diff --git a/apps/docs/src/content/docs/api/reference/basic/src.md b/apps/docs/src/content/docs/api/reference/basic/src.md index dba82081..d6322a5f 100644 --- a/apps/docs/src/content/docs/api/reference/basic/src.md +++ b/apps/docs/src/content/docs/api/reference/basic/src.md @@ -7,7 +7,7 @@ description: "@santi020k/eslint-config-basic" ### EslintConfigArray -Defined in: [packages/basic/src/index.ts:685](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/index.ts#L685) +Defined in: packages/basic/src/index.ts:685 Portable public result type returned by the Basic config composer. @@ -215,7 +215,7 @@ Gets or sets the length of the array. This is a number one higher than the highe > **length**: `number` -Defined in: [packages/basic/src/index.ts:686](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/index.ts#L686) +Defined in: packages/basic/src/index.ts:686 Gets or sets the length of the array. This is a number one higher than the highest index in the array. @@ -1707,7 +1707,7 @@ The copied array with the updated value. > `const` **angular**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:120](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L120) +Defined in: packages/basic/src/frameworks.ts:120 #### Parameters @@ -1725,7 +1725,7 @@ Defined in: [packages/basic/src/frameworks.ts:120](https://github.com/santi020k/ > `const` **astro**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:121](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L121) +Defined in: packages/basic/src/frameworks.ts:121 #### Parameters @@ -1743,7 +1743,7 @@ Defined in: [packages/basic/src/frameworks.ts:121](https://github.com/santi020k/ > `const` **defineConfig**: `ConfigComposer` -Defined in: [packages/basic/src/index.ts:843](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/index.ts#L843) +Defined in: packages/basic/src/index.ts:843 Generates the ESLint configuration array, applying configurations and integration settings based on the input configuration. @@ -1770,7 +1770,7 @@ The final ESLint configuration array > `const` **expo**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:122](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L122) +Defined in: packages/basic/src/frameworks.ts:122 #### Parameters @@ -1788,7 +1788,7 @@ Defined in: [packages/basic/src/frameworks.ts:122](https://github.com/santi020k/ > `const` **hono**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:123](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L123) +Defined in: packages/basic/src/frameworks.ts:123 #### Parameters @@ -1806,7 +1806,7 @@ Defined in: [packages/basic/src/frameworks.ts:123](https://github.com/santi020k/ > `const` **lit**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:124](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L124) +Defined in: packages/basic/src/frameworks.ts:124 #### Parameters @@ -1824,7 +1824,7 @@ Defined in: [packages/basic/src/frameworks.ts:124](https://github.com/santi020k/ > `const` **nest**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:125](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L125) +Defined in: packages/basic/src/frameworks.ts:125 #### Parameters @@ -1842,7 +1842,7 @@ Defined in: [packages/basic/src/frameworks.ts:125](https://github.com/santi020k/ > `const` **next**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:126](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L126) +Defined in: packages/basic/src/frameworks.ts:126 #### Parameters @@ -1860,7 +1860,7 @@ Defined in: [packages/basic/src/frameworks.ts:126](https://github.com/santi020k/ > `const` **nuxt**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:127](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L127) +Defined in: packages/basic/src/frameworks.ts:127 #### Parameters @@ -1878,7 +1878,7 @@ Defined in: [packages/basic/src/frameworks.ts:127](https://github.com/santi020k/ > `const` **preact**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:128](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L128) +Defined in: packages/basic/src/frameworks.ts:128 #### Parameters @@ -1896,7 +1896,7 @@ Defined in: [packages/basic/src/frameworks.ts:128](https://github.com/santi020k/ > `const` **qwik**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:129](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L129) +Defined in: packages/basic/src/frameworks.ts:129 #### Parameters @@ -1914,7 +1914,7 @@ Defined in: [packages/basic/src/frameworks.ts:129](https://github.com/santi020k/ > `const` **react**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:130](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L130) +Defined in: packages/basic/src/frameworks.ts:130 #### Parameters @@ -1932,7 +1932,7 @@ Defined in: [packages/basic/src/frameworks.ts:130](https://github.com/santi020k/ > `const` **reactRouter**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:131](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L131) +Defined in: packages/basic/src/frameworks.ts:131 #### Parameters @@ -1950,7 +1950,7 @@ Defined in: [packages/basic/src/frameworks.ts:131](https://github.com/santi020k/ > `const` **slidev**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:132](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L132) +Defined in: packages/basic/src/frameworks.ts:132 #### Parameters @@ -1968,7 +1968,7 @@ Defined in: [packages/basic/src/frameworks.ts:132](https://github.com/santi020k/ > `const` **solid**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:133](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L133) +Defined in: packages/basic/src/frameworks.ts:133 #### Parameters @@ -1986,7 +1986,7 @@ Defined in: [packages/basic/src/frameworks.ts:133](https://github.com/santi020k/ > `const` **svelte**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:134](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L134) +Defined in: packages/basic/src/frameworks.ts:134 #### Parameters @@ -2004,7 +2004,7 @@ Defined in: [packages/basic/src/frameworks.ts:134](https://github.com/santi020k/ > `const` **tanstackStart**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:135](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L135) +Defined in: packages/basic/src/frameworks.ts:135 #### Parameters @@ -2022,7 +2022,7 @@ Defined in: [packages/basic/src/frameworks.ts:135](https://github.com/santi020k/ > `const` **vite**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:136](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L136) +Defined in: packages/basic/src/frameworks.ts:136 #### Parameters @@ -2040,7 +2040,7 @@ Defined in: [packages/basic/src/frameworks.ts:136](https://github.com/santi020k/ > `const` **vue**: (`options?`) => `Promise`\<`ConfigArray`\> -Defined in: [packages/basic/src/frameworks.ts:137](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/frameworks.ts#L137) +Defined in: packages/basic/src/frameworks.ts:137 #### Parameters @@ -2058,7 +2058,7 @@ Defined in: [packages/basic/src/frameworks.ts:137](https://github.com/santi020k/ > **attachReferencedPlugins**(`configs`): `ConfigArray` -Defined in: [packages/basic/src/index.ts:754](https://github.com/santi020k/eslint-config-basic/blob/main/packages/basic/src/index.ts#L754) +Defined in: packages/basic/src/index.ts:754 Copies already-loaded plugin objects onto rule blocks that reference them. ESLint 10 validates plugin availability per effective config object, while diff --git a/apps/docs/src/content/docs/api/reference/core/src.md b/apps/docs/src/content/docs/api/reference/core/src.md index 3dbf178e..87342667 100644 --- a/apps/docs/src/content/docs/api/reference/core/src.md +++ b/apps/docs/src/content/docs/api/reference/core/src.md @@ -7,7 +7,7 @@ description: "@santi020k/eslint-config-basic" ### Extension -Defined in: [packages/core/src/types.ts:36](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L36) +Defined in: packages/core/src/types.ts:36 Enum for specialized ESLint extensions and strict rule sets @@ -17,7 +17,7 @@ Enum for specialized ESLint extensions and strict rule sets > **A11y**: `"a11y"` -Defined in: [packages/core/src/types.ts:41](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L41) +Defined in: packages/core/src/types.ts:41 Accessibility (a11y) rules for JSX and Vue @@ -25,7 +25,7 @@ Accessibility (a11y) rules for JSX and Vue > **AstroDoctor**: `"astro-doctor"` -Defined in: [packages/core/src/types.ts:46](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L46) +Defined in: packages/core/src/types.ts:46 Astro Doctor performance, accessibility, security, and best-practice rules @@ -33,7 +33,7 @@ Astro Doctor performance, accessibility, security, and best-practice rules > **BestPractices**: `"best-practices"` -Defined in: [packages/core/src/types.ts:52](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L52) +Defined in: packages/core/src/types.ts:52 Built-in best-practice rules: no-console, no-alert, cyclomatic complexity, max nesting depth. No extra dependencies required. @@ -42,7 +42,7 @@ max nesting depth. No extra dependencies required. > **Biome**: `"biome"` -Defined in: [packages/core/src/types.ts:57](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L57) +Defined in: packages/core/src/types.ts:57 Disables formatting rules that conflict with Biome @@ -50,7 +50,7 @@ Disables formatting rules that conflict with Biome > **Boundaries**: `"boundaries"` -Defined in: [packages/core/src/types.ts:62](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L62) +Defined in: packages/core/src/types.ts:62 Import boundary rules for common app, workspace, and generated-code edges. @@ -58,7 +58,7 @@ Import boundary rules for common app, workspace, and generated-code edges. > **Compat**: `"compat"` -Defined in: [packages/core/src/types.ts:67](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L67) +Defined in: packages/core/src/types.ts:67 Browser compatibility checks against the project browserslist @@ -66,7 +66,7 @@ Browser compatibility checks against the project browserslist > **DeMorgan**: `"de-morgan"` -Defined in: [packages/core/src/types.ts:72](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L72) +Defined in: packages/core/src/types.ts:72 Simplifies negated logical expressions (De Morgan's laws) @@ -74,7 +74,7 @@ Simplifies negated logical expressions (De Morgan's laws) > **Depend**: `"depend"` -Defined in: [packages/core/src/types.ts:77](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L77) +Defined in: packages/core/src/types.ts:77 Suggests lighter or native alternatives to heavy dependencies @@ -82,7 +82,7 @@ Suggests lighter or native alternatives to heavy dependencies > **Node**: `"node"` -Defined in: [packages/core/src/types.ts:82](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L82) +Defined in: packages/core/src/types.ts:82 Node.js rules from eslint-plugin-n for server-side codebases @@ -90,7 +90,7 @@ Node.js rules from eslint-plugin-n for server-side codebases > **NoOnlyTests**: `"no-only-tests"` -Defined in: [packages/core/src/types.ts:87](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L87) +Defined in: packages/core/src/types.ts:87 Prevents `test.only` / `describe.only` from being committed @@ -98,7 +98,7 @@ Prevents `test.only` / `describe.only` from being committed > **Oxlint**: `"oxlint"` -Defined in: [packages/core/src/types.ts:92](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L92) +Defined in: packages/core/src/types.ts:92 Disables rules already covered by Oxlint for hybrid linting setups @@ -106,37 +106,37 @@ Disables rules already covered by Oxlint for hybrid linting setups > **Perfectionist**: `"perfectionist"` -Defined in: [packages/core/src/types.ts:93](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L93) +Defined in: packages/core/src/types.ts:93 ##### Regexp > **Regexp**: `"regexp"` -Defined in: [packages/core/src/types.ts:94](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L94) +Defined in: packages/core/src/types.ts:94 ##### Security > **Security**: `"security"` -Defined in: [packages/core/src/types.ts:95](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L95) +Defined in: packages/core/src/types.ts:95 ##### Sonarjs > **Sonarjs**: `"sonarjs"` -Defined in: [packages/core/src/types.ts:96](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L96) +Defined in: packages/core/src/types.ts:96 ##### Unicorn > **Unicorn**: `"unicorn"` -Defined in: [packages/core/src/types.ts:98](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L98) +Defined in: packages/core/src/types.ts:98 *** ### Format -Defined in: [packages/core/src/types.ts:104](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L104) +Defined in: packages/core/src/types.ts:104 Enum for linting non-JS/TS file formats @@ -146,61 +146,61 @@ Enum for linting non-JS/TS file formats > **Css**: `"css"` -Defined in: [packages/core/src/types.ts:105](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L105) +Defined in: packages/core/src/types.ts:105 ##### Graphql > **Graphql**: `"graphql"` -Defined in: [packages/core/src/types.ts:106](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L106) +Defined in: packages/core/src/types.ts:106 ##### Html > **Html**: `"html"` -Defined in: [packages/core/src/types.ts:107](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L107) +Defined in: packages/core/src/types.ts:107 ##### Jsonc > **Jsonc**: `"jsonc"` -Defined in: [packages/core/src/types.ts:108](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L108) +Defined in: packages/core/src/types.ts:108 ##### Markdown > **Markdown**: `"markdown"` -Defined in: [packages/core/src/types.ts:109](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L109) +Defined in: packages/core/src/types.ts:109 ##### Mdx > **Mdx**: `"mdx"` -Defined in: [packages/core/src/types.ts:110](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L110) +Defined in: packages/core/src/types.ts:110 ##### PackageJson > **PackageJson**: `"package-json"` -Defined in: [packages/core/src/types.ts:111](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L111) +Defined in: packages/core/src/types.ts:111 ##### Toml > **Toml**: `"toml"` -Defined in: [packages/core/src/types.ts:112](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L112) +Defined in: packages/core/src/types.ts:112 ##### Yaml > **Yaml**: `"yaml"` -Defined in: [packages/core/src/types.ts:113](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L113) +Defined in: packages/core/src/types.ts:113 *** ### Library -Defined in: [packages/core/src/types.ts:119](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L119) +Defined in: packages/core/src/types.ts:119 Enum for application-level runtime dependencies and styling @@ -210,133 +210,133 @@ Enum for application-level runtime dependencies and styling > **AiSdk**: `"ai-sdk"` -Defined in: [packages/core/src/types.ts:120](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L120) +Defined in: packages/core/src/types.ts:120 ##### Autogen > **Autogen**: `"autogen"` -Defined in: [packages/core/src/types.ts:121](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L121) +Defined in: packages/core/src/types.ts:121 ##### Drizzle > **Drizzle**: `"drizzle"` -Defined in: [packages/core/src/types.ts:122](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L122) +Defined in: packages/core/src/types.ts:122 ##### GoogleGenAi > **GoogleGenAi**: `"google-genai"` -Defined in: [packages/core/src/types.ts:123](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L123) +Defined in: packages/core/src/types.ts:123 ##### I18next > **I18next**: `"i18next"` -Defined in: [packages/core/src/types.ts:124](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L124) +Defined in: packages/core/src/types.ts:124 ##### Langchain > **Langchain**: `"langchain"` -Defined in: [packages/core/src/types.ts:125](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L125) +Defined in: packages/core/src/types.ts:125 ##### LlamaIndex > **LlamaIndex**: `"llamaindex"` -Defined in: [packages/core/src/types.ts:126](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L126) +Defined in: packages/core/src/types.ts:126 ##### Mastra > **Mastra**: `"mastra"` -Defined in: [packages/core/src/types.ts:127](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L127) +Defined in: packages/core/src/types.ts:127 ##### Mcp > **Mcp**: `"mcp"` -Defined in: [packages/core/src/types.ts:128](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L128) +Defined in: packages/core/src/types.ts:128 ##### MikroOrm > **MikroOrm**: `"mikro-orm"` -Defined in: [packages/core/src/types.ts:129](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L129) +Defined in: packages/core/src/types.ts:129 ##### OpenAiAgents > **OpenAiAgents**: `"openai-agents"` -Defined in: [packages/core/src/types.ts:130](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L130) +Defined in: packages/core/src/types.ts:130 ##### Prisma > **Prisma**: `"prisma"` -Defined in: [packages/core/src/types.ts:131](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L131) +Defined in: packages/core/src/types.ts:131 ##### Sequelize > **Sequelize**: `"sequelize"` -Defined in: [packages/core/src/types.ts:132](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L132) +Defined in: packages/core/src/types.ts:132 ##### Stencil > **Stencil**: `"stencil"` -Defined in: [packages/core/src/types.ts:133](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L133) +Defined in: packages/core/src/types.ts:133 ##### Storybook > **Storybook**: `"storybook"` -Defined in: [packages/core/src/types.ts:134](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L134) +Defined in: packages/core/src/types.ts:134 ##### Tailwind > **Tailwind**: `"tailwind"` -Defined in: [packages/core/src/types.ts:135](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L135) +Defined in: packages/core/src/types.ts:135 ##### TanstackQuery > **TanstackQuery**: `"tanstack-query"` -Defined in: [packages/core/src/types.ts:136](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L136) +Defined in: packages/core/src/types.ts:136 ##### TanstackRouter > **TanstackRouter**: `"tanstack-router"` -Defined in: [packages/core/src/types.ts:137](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L137) +Defined in: packages/core/src/types.ts:137 ##### Turbo > **Turbo**: `"turbo"` -Defined in: [packages/core/src/types.ts:138](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L138) +Defined in: packages/core/src/types.ts:138 ##### Typeorm > **Typeorm**: `"typeorm"` -Defined in: [packages/core/src/types.ts:139](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L139) +Defined in: packages/core/src/types.ts:139 ##### Zod > **Zod**: `"zod"` -Defined in: [packages/core/src/types.ts:140](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L140) +Defined in: packages/core/src/types.ts:140 *** ### NextMode -Defined in: [packages/core/src/types.ts:146](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L146) +Defined in: packages/core/src/types.ts:146 Enum for Next.js mode options @@ -346,19 +346,19 @@ Enum for Next.js mode options > **AppRouter**: `"app-router"` -Defined in: [packages/core/src/types.ts:147](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L147) +Defined in: packages/core/src/types.ts:147 ##### Pages > **Pages**: `"pages"` -Defined in: [packages/core/src/types.ts:148](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L148) +Defined in: packages/core/src/types.ts:148 *** ### Preset -Defined in: [packages/core/src/types.ts:154](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L154) +Defined in: packages/core/src/types.ts:154 Enum for named presets @@ -368,7 +368,7 @@ Enum for named presets > **All**: `"all"` -Defined in: [packages/core/src/types.ts:157](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L157) +Defined in: packages/core/src/types.ts:157 All configs + all optionals @@ -376,7 +376,7 @@ All configs + all optionals > **App**: `"app"` -Defined in: [packages/core/src/types.ts:160](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L160) +Defined in: packages/core/src/types.ts:160 Browser application defaults with TypeScript and Prettier @@ -384,7 +384,7 @@ Browser application defaults with TypeScript and Prettier > **Basic**: `"basic"` -Defined in: [packages/core/src/types.ts:163](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L163) +Defined in: packages/core/src/types.ts:163 Core JS config only @@ -392,7 +392,7 @@ Core JS config only > **Browser**: `"browser"` -Defined in: [packages/core/src/types.ts:166](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L166) +Defined in: packages/core/src/types.ts:166 Core + TS + Browser runtime @@ -400,7 +400,7 @@ Core + TS + Browser runtime > **CI**: `"ci"` -Defined in: [packages/core/src/types.ts:169](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L169) +Defined in: packages/core/src/types.ts:169 CI-oriented defaults with strict severities @@ -408,7 +408,7 @@ CI-oriented defaults with strict severities > **Library**: `"library"` -Defined in: [packages/core/src/types.ts:172](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L172) +Defined in: packages/core/src/types.ts:172 TypeScript package/library defaults for published packages @@ -416,7 +416,7 @@ TypeScript package/library defaults for published packages > **Monorepo**: `"monorepo"` -Defined in: [packages/core/src/types.ts:175](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L175) +Defined in: packages/core/src/types.ts:175 Monorepo-friendly defaults for mixed workspaces @@ -424,7 +424,7 @@ Monorepo-friendly defaults for mixed workspaces > **Node**: `"node"` -Defined in: [packages/core/src/types.ts:178](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L178) +Defined in: packages/core/src/types.ts:178 Core + TS + Node runtime @@ -432,7 +432,7 @@ Core + TS + Node runtime > **Worker**: `"worker"` -Defined in: [packages/core/src/types.ts:181](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L181) +Defined in: packages/core/src/types.ts:181 Core + TS + Worker runtime @@ -440,7 +440,7 @@ Core + TS + Worker runtime ### Runtime -Defined in: [packages/core/src/types.ts:187](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L187) +Defined in: packages/core/src/types.ts:187 Enum for runtime environment presets @@ -450,7 +450,7 @@ Enum for runtime environment presets > **Browser**: `"browser"` -Defined in: [packages/core/src/types.ts:190](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L190) +Defined in: packages/core/src/types.ts:190 Only Browser globals (window, document, etc.) @@ -458,7 +458,7 @@ Only Browser globals (window, document, etc.) > **Bun**: `"bun"` -Defined in: [packages/core/src/types.ts:193](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L193) +Defined in: packages/core/src/types.ts:193 Bun runtime globals @@ -466,7 +466,7 @@ Bun runtime globals > **Cloudflare**: `"cloudflare"` -Defined in: [packages/core/src/types.ts:196](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L196) +Defined in: packages/core/src/types.ts:196 Cloudflare Workers globals @@ -474,7 +474,7 @@ Cloudflare Workers globals > **Deno**: `"deno"` -Defined in: [packages/core/src/types.ts:199](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L199) +Defined in: packages/core/src/types.ts:199 Deno runtime globals @@ -482,7 +482,7 @@ Deno runtime globals > **Node**: `"node"` -Defined in: [packages/core/src/types.ts:202](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L202) +Defined in: packages/core/src/types.ts:202 Only Node.js globals (process, __dirname, etc.) @@ -490,7 +490,7 @@ Only Node.js globals (process, __dirname, etc.) > **Universal**: `"universal"` -Defined in: [packages/core/src/types.ts:205](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L205) +Defined in: packages/core/src/types.ts:205 Both Node.js and Browser globals (default) @@ -498,7 +498,7 @@ Both Node.js and Browser globals (default) > **Worker**: `"worker"` -Defined in: [packages/core/src/types.ts:208](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L208) +Defined in: packages/core/src/types.ts:208 Service Worker and Fetch API globals for edge runtimes @@ -506,7 +506,7 @@ Service Worker and Fetch API globals for edge runtimes ### Setting -Defined in: [packages/core/src/types.ts:214](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L214) +Defined in: packages/core/src/types.ts:214 Enum for settings options in ESLint @@ -516,7 +516,7 @@ Enum for settings options in ESLint > **NoDefaultIgnores**: `"no-default-ignores"` -Defined in: [packages/core/src/types.ts:217](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L217) +Defined in: packages/core/src/types.ts:217 Disable the built-in default ignore globs (dist, build, coverage, etc.). @@ -524,7 +524,7 @@ Disable the built-in default ignore globs (dist, build, coverage, etc.). > **NoGeneratedCodeIgnores**: `"no-generated-code-ignores"` -Defined in: [packages/core/src/types.ts:220](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L220) +Defined in: packages/core/src/types.ts:220 Disable generated-code ignore globs. @@ -532,7 +532,7 @@ Disable generated-code ignore globs. > **NoGitignore**: `"no-gitignore"` -Defined in: [packages/core/src/types.ts:223](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L223) +Defined in: packages/core/src/types.ts:223 Disable automatic `.gitignore`-based ignores. @@ -540,7 +540,7 @@ Disable automatic `.gitignore`-based ignores. ### Testing -Defined in: [packages/core/src/types.ts:229](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L229) +Defined in: packages/core/src/types.ts:229 Enum for testing frameworks and environments @@ -550,43 +550,43 @@ Enum for testing frameworks and environments > **Cypress**: `"cypress"` -Defined in: [packages/core/src/types.ts:230](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L230) +Defined in: packages/core/src/types.ts:230 ##### Jest > **Jest**: `"jest"` -Defined in: [packages/core/src/types.ts:231](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L231) +Defined in: packages/core/src/types.ts:231 ##### JestDom > **JestDom**: `"jest-dom"` -Defined in: [packages/core/src/types.ts:232](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L232) +Defined in: packages/core/src/types.ts:232 ##### Playwright > **Playwright**: `"playwright"` -Defined in: [packages/core/src/types.ts:233](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L233) +Defined in: packages/core/src/types.ts:233 ##### TestingLibrary > **TestingLibrary**: `"testing-library"` -Defined in: [packages/core/src/types.ts:234](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L234) +Defined in: packages/core/src/types.ts:234 ##### Vitest > **Vitest**: `"vitest"` -Defined in: [packages/core/src/types.ts:235](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L235) +Defined in: packages/core/src/types.ts:235 *** ### Tool -Defined in: [packages/core/src/types.ts:241](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L241) +Defined in: packages/core/src/types.ts:241 Enum for integrating external standalone utilities @@ -596,61 +596,61 @@ Enum for integrating external standalone utilities > **Command**: `"command"` -Defined in: [packages/core/src/types.ts:242](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L242) +Defined in: packages/core/src/types.ts:242 ##### Cspell > **Cspell**: `"cspell"` -Defined in: [packages/core/src/types.ts:243](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L243) +Defined in: packages/core/src/types.ts:243 ##### Docker > **Docker**: `"docker"` -Defined in: [packages/core/src/types.ts:244](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L244) +Defined in: packages/core/src/types.ts:244 ##### GithubActions > **GithubActions**: `"github-actions"` -Defined in: [packages/core/src/types.ts:245](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L245) +Defined in: packages/core/src/types.ts:245 ##### Jsdoc > **Jsdoc**: `"jsdoc"` -Defined in: [packages/core/src/types.ts:246](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L246) +Defined in: packages/core/src/types.ts:246 ##### Nx > **Nx**: `"nx"` -Defined in: [packages/core/src/types.ts:247](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L247) +Defined in: packages/core/src/types.ts:247 ##### Pnpm > **Pnpm**: `"pnpm"` -Defined in: [packages/core/src/types.ts:248](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L248) +Defined in: packages/core/src/types.ts:248 ##### Prettier > **Prettier**: `"prettier"` -Defined in: [packages/core/src/types.ts:249](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L249) +Defined in: packages/core/src/types.ts:249 ##### Swagger > **Swagger**: `"swagger"` -Defined in: [packages/core/src/types.ts:250](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L250) +Defined in: packages/core/src/types.ts:250 ## Interfaces ### ConfigFeature -Defined in: [packages/core/src/feature.ts:9](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/feature.ts#L9) +Defined in: packages/core/src/feature.ts:9 Stable extension point used by optional feature packs. @@ -663,13 +663,13 @@ only understands this small, ecosystem-agnostic contract. > **category**: [`ConfigFeatureCategory`](#configfeaturecategory) -Defined in: [packages/core/src/feature.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/feature.ts#L10) +Defined in: packages/core/src/feature.ts:10 ##### create > **create**: () => `ConfigArray` \| `Promise`\<`ConfigArray`\> -Defined in: [packages/core/src/feature.ts:11](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/feature.ts#L11) +Defined in: packages/core/src/feature.ts:11 ###### Returns @@ -679,25 +679,25 @@ Defined in: [packages/core/src/feature.ts:11](https://github.com/santi020k/eslin > **id**: `string` -Defined in: [packages/core/src/feature.ts:12](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/feature.ts#L12) +Defined in: packages/core/src/feature.ts:12 ##### order > **order**: `number` -Defined in: [packages/core/src/feature.ts:13](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/feature.ts#L13) +Defined in: packages/core/src/feature.ts:13 ##### phase? > `optional` **phase?**: [`ConfigFeaturePhase`](#configfeaturephase) -Defined in: [packages/core/src/feature.ts:14](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/feature.ts#L14) +Defined in: packages/core/src/feature.ts:14 *** ### DetectionOptions -Defined in: [packages/core/src/types.ts:256](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L256) +Defined in: packages/core/src/types.ts:256 Controls automatic project detection by category. @@ -707,67 +707,67 @@ Controls automatic project detection by category. > `optional` **extensions?**: `boolean` -Defined in: [packages/core/src/types.ts:257](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L257) +Defined in: packages/core/src/types.ts:257 ##### formats? > `optional` **formats?**: `boolean` -Defined in: [packages/core/src/types.ts:258](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L258) +Defined in: packages/core/src/types.ts:258 ##### frameworks? > `optional` **frameworks?**: `boolean` -Defined in: [packages/core/src/types.ts:259](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L259) +Defined in: packages/core/src/types.ts:259 ##### libraries? > `optional` **libraries?**: `boolean` -Defined in: [packages/core/src/types.ts:260](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L260) +Defined in: packages/core/src/types.ts:260 ##### nextMode? > `optional` **nextMode?**: `boolean` -Defined in: [packages/core/src/types.ts:261](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L261) +Defined in: packages/core/src/types.ts:261 ##### projects? > `optional` **projects?**: `boolean` -Defined in: [packages/core/src/types.ts:262](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L262) +Defined in: packages/core/src/types.ts:262 ##### runtime? > `optional` **runtime?**: `boolean` -Defined in: [packages/core/src/types.ts:263](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L263) +Defined in: packages/core/src/types.ts:263 ##### testing? > `optional` **testing?**: `boolean` -Defined in: [packages/core/src/types.ts:264](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L264) +Defined in: packages/core/src/types.ts:264 ##### tools? > `optional` **tools?**: `boolean` -Defined in: [packages/core/src/types.ts:265](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L265) +Defined in: packages/core/src/types.ts:265 ##### typescript? > `optional` **typescript?**: `boolean` -Defined in: [packages/core/src/types.ts:266](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L266) +Defined in: packages/core/src/types.ts:266 *** ### EslintConfigOptions -Defined in: [packages/core/src/types.ts:390](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L390) +Defined in: packages/core/src/types.ts:390 ESLint configuration interface @@ -777,7 +777,7 @@ ESLint configuration interface > `optional` **autoFrameworks?**: `boolean` -Defined in: [packages/core/src/types.ts:396](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L396) +Defined in: packages/core/src/types.ts:396 Enables installed optional framework configs detected from dependencies. Disable this when you want manual framework control only. @@ -786,7 +786,7 @@ Disable this when you want manual framework control only. > `optional` **detectedFrameworks?**: [`DetectedFrameworkName`](#detectedframeworkname)\[\] -Defined in: [packages/core/src/types.ts:402](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L402) +Defined in: packages/core/src/types.ts:402 Frameworks detected from package.json by `detectProjectOptions()`. In v3, `defineConfig()` enables detected framework configs when their optional packages are installed. @@ -795,7 +795,7 @@ In v3, `defineConfig()` enables detected framework configs when their optional p > `optional` **detection?**: `boolean` \| [`DetectionOptions`](#detectionoptions) -Defined in: [packages/core/src/types.ts:408](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L408) +Defined in: packages/core/src/types.ts:408 Enables or disables automatic project detection by category. Use `false` to disable all detection, or an object for granular control. @@ -804,7 +804,7 @@ Use `false` to disable all detection, or an object for granular control. > `optional` **detectRootDir?**: `string` -Defined in: [packages/core/src/types.ts:414](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L414) +Defined in: packages/core/src/types.ts:414 Root directory used for automatic project detection. Defaults to `process.cwd()`. @@ -813,7 +813,7 @@ Defaults to `process.cwd()`. > `optional` **extensions?**: [`ExtensionOption`](#extensionoption)\[\] -Defined in: [packages/core/src/types.ts:417](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L417) +Defined in: packages/core/src/types.ts:417 List of specialized ESLint rules and extensions @@ -821,7 +821,7 @@ List of specialized ESLint rules and extensions > `optional` **features?**: `Partial`\<`Record`\<[`OptionalConfigName`](#optionalconfigname), `boolean`\>\> -Defined in: [packages/core/src/types.ts:424](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L424) +Defined in: packages/core/src/types.ts:424 Simple optional-config switchboard. Enables or disables entries from `extensions`, `formats`, `libraries`, `testing`, and `tools` using their @@ -831,7 +831,7 @@ string names. `integrations` is an alias for the same map. > `optional` **formats?**: [`FormatOption`](#formatoption)\[\] -Defined in: [packages/core/src/types.ts:427](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L427) +Defined in: packages/core/src/types.ts:427 Additional non-JS/TS file formats to lint @@ -839,7 +839,7 @@ Additional non-JS/TS file formats to lint > `optional` **frameworks?**: `object` -Defined in: [packages/core/src/types.ts:436](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L436) +Defined in: packages/core/src/types.ts:436 Framework and library specific configurations. @@ -927,7 +927,7 @@ TanStack Start (React/Solid full-stack framework). > `optional` **ignores?**: `string`\[\] -Defined in: [packages/core/src/types.ts:467](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L467) +Defined in: packages/core/src/types.ts:467 Extra global ignore globs (flat config `ignores` only, no `files`). Patterns are relative to ESLint's working directory, like a manual ignore block. @@ -938,7 +938,7 @@ auto-prefixed with the subproject path; use repo-root-relative globs when needed > `optional` **integrations?**: `Partial`\<`Record`\<[`OptionalConfigName`](#optionalconfigname), `boolean`\>\> -Defined in: [packages/core/src/types.ts:472](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L472) +Defined in: packages/core/src/types.ts:472 ###### Deprecated @@ -948,13 +948,13 @@ Use `features` instead. This alias is scheduled for removal in v4. > `optional` **libraries?**: [`LibraryOption`](#libraryoption)\[\] -Defined in: [packages/core/src/types.ts:474](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L474) +Defined in: packages/core/src/types.ts:474 ##### nextMode? > `optional` **nextMode?**: [`NextModeOption`](#nextmodeoption) -Defined in: [packages/core/src/types.ts:477](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L477) +Defined in: packages/core/src/types.ts:477 Next.js specific routing mode @@ -962,7 +962,7 @@ Next.js specific routing mode > `optional` **optionMergeStrategy?**: `"merge"` \| `"replace"` -Defined in: [packages/core/src/types.ts:484](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L484) +Defined in: packages/core/src/types.ts:484 Controls how explicit arrays/frameworks combine with auto-detected and preset values. - `merge` (default): union detected + preset + explicit values @@ -972,7 +972,7 @@ Controls how explicit arrays/frameworks combine with auto-detected and preset va > `optional` **preset?**: [`PresetOption`](#presetoption) -Defined in: [packages/core/src/types.ts:487](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L487) +Defined in: packages/core/src/types.ts:487 High-level configuration preset @@ -980,7 +980,7 @@ High-level configuration preset > `optional` **projectDefaults?**: [`ProjectConfigOptions`](#projectconfigoptions) -Defined in: [packages/core/src/types.ts:494](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L494) +Defined in: packages/core/src/types.ts:494 Defaults inherited by every entry in `projects`. Project-level values override scalar defaults while arrays and option maps @@ -990,7 +990,7 @@ merge unless that project uses `optionMergeStrategy: 'replace'`. > `optional` **projects?**: `Record`\<`string`, [`ProjectConfigOptions`](#projectconfigoptions)\> -Defined in: [packages/core/src/types.ts:500](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L500) +Defined in: packages/core/src/types.ts:500 Package-aware subproject configuration for monorepos. Each key is a workspace-relative folder and each value is scoped to that folder. @@ -999,7 +999,7 @@ Each key is a workspace-relative folder and each value is scoped to that folder. > `optional` **root?**: `string` -Defined in: [packages/core/src/types.ts:508](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L508) +Defined in: packages/core/src/types.ts:508 Absolute project root used consistently for dependency detection, TypeScript, Tailwind, subprojects, and `.gitignore`. @@ -1010,7 +1010,7 @@ In editor-sensitive configs, pass `import.meta.dirname`. > `optional` **runtime?**: [`RuntimeOption`](#runtimeoption) -Defined in: [packages/core/src/types.ts:511](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L511) +Defined in: packages/core/src/types.ts:511 Runtime environment preset (Node, Browser, Universal) @@ -1018,7 +1018,7 @@ Runtime environment preset (Node, Browser, Universal) > `optional` **settings?**: [`SettingOption`](#settingoption)\[\] -Defined in: [packages/core/src/types.ts:514](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L514) +Defined in: packages/core/src/types.ts:514 List of global settings and behavioral flags @@ -1026,7 +1026,7 @@ List of global settings and behavioral flags > `optional` **strict?**: [`StrictMode`](#strictmode) -Defined in: [packages/core/src/types.ts:522](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L522) +Defined in: packages/core/src/types.ts:522 Severity profile. - `false` / `recommended`: keep recommended severities @@ -1037,7 +1037,7 @@ Severity profile. > `optional` **tailwind?**: `false` \| [`TailwindOptions`](#tailwindoptions) -Defined in: [packages/core/src/types.ts:528](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L528) +Defined in: packages/core/src/types.ts:528 Tailwind CSS plugin options. Providing an object enables the Tailwind integration, while `false` disables auto-detected Tailwind support. @@ -1046,7 +1046,7 @@ integration, while `false` disables auto-detected Tailwind support. > `optional` **testing?**: [`TestingOption`](#testingoption)\[\] -Defined in: [packages/core/src/types.ts:531](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L531) +Defined in: packages/core/src/types.ts:531 List of testing frameworks and testing environments @@ -1054,7 +1054,7 @@ List of testing frameworks and testing environments > `optional` **testingFiles?**: `Partial`\<`Record`\<`"cypress"` \| `"jest"` \| `"jest-dom"` \| `"playwright"` \| `"testing-library"` \| `"vitest"`, `string`\[\]\>\> -Defined in: [packages/core/src/types.ts:542](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L542) +Defined in: packages/core/src/types.ts:542 File globs for test integrations when the defaults do not match your project. @@ -1068,7 +1068,7 @@ to Vitest or Jest. > `optional` **tools?**: [`ToolOption`](#tooloption)\[\] -Defined in: [packages/core/src/types.ts:545](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L545) +Defined in: packages/core/src/types.ts:545 List of integrations for external standalone tools @@ -1076,7 +1076,7 @@ List of integrations for external standalone tools > `optional` **tsconfigRootDir?**: `string` -Defined in: [packages/core/src/types.ts:551](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L551) +Defined in: packages/core/src/types.ts:551 Root directory of the project. Required if multiple candidate TSConfigRootDirs are present. @@ -1085,7 +1085,7 @@ Required if multiple candidate TSConfigRootDirs are present. > `optional` **typescript?**: `boolean` \| [`TypeScriptMode`](#typescriptmode) \| [`TypeScriptOptions`](#typescriptoptions) -Defined in: [packages/core/src/types.ts:554](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L554) +Defined in: packages/core/src/types.ts:554 Enable TypeScript support with optional settings @@ -1093,7 +1093,7 @@ Enable TypeScript support with optional settings > `optional` **workspacePrefixes?**: `string`\[\] -Defined in: [packages/core/src/types.ts:568](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L568) +Defined in: packages/core/src/types.ts:568 Monorepo / workspace package scope prefixes that should sort in their own import group, **before** external npm packages. @@ -1112,7 +1112,7 @@ defineConfig({ workspacePrefixes: ['@acme'] }) ### ImportGroupOptions -Defined in: [packages/core/src/rules.ts:35](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/rules.ts#L35) +Defined in: packages/core/src/rules.ts:35 Options for [createImportGroups](#createimportgroups). @@ -1122,7 +1122,7 @@ Options for [createImportGroups](#createimportgroups). > `optional` **workspacePrefixes?**: `string`\[\] -Defined in: [packages/core/src/rules.ts:47](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/rules.ts#L47) +Defined in: packages/core/src/rules.ts:47 Workspace / monorepo package prefixes that should sort with internal code rather than external npm packages. @@ -1140,7 +1140,7 @@ createImportGroups({ workspacePrefixes: ['@acme'] }) ### TailwindOptions -Defined in: [packages/core/src/types.ts:301](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L301) +Defined in: packages/core/src/types.ts:301 #### Properties @@ -1148,7 +1148,7 @@ Defined in: [packages/core/src/types.ts:301](https://github.com/santi020k/eslint > `optional` **cwd?**: `string` -Defined in: [packages/core/src/types.ts:307](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L307) +Defined in: packages/core/src/types.ts:307 Working directory used to resolve Tailwind and its entry point. Defaults to `detectRootDir`, which keeps package-scoped monorepo configs stable. @@ -1157,7 +1157,7 @@ Defaults to `detectRootDir`, which keeps package-scoped monorepo configs stable. > `optional` **detectComponentClasses?**: `boolean` -Defined in: [packages/core/src/types.ts:314](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L314) +Defined in: packages/core/src/types.ts:314 Detect exact standalone selectors and static utilities reachable through the CSS import graph, Astro component-local styles, and supported utilities @@ -1167,25 +1167,25 @@ from explicitly configured Tailwind plugins. Defaults to true. > `optional` **entryPoint?**: `string` -Defined in: [packages/core/src/types.ts:315](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L315) +Defined in: packages/core/src/types.ts:315 ##### ignore? > `optional` **ignore?**: `string`\[\] -Defined in: [packages/core/src/types.ts:316](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L316) +Defined in: packages/core/src/types.ts:316 ##### noUnknownClasses? > `optional` **noUnknownClasses?**: `false` \| `"error"` \| `"off"` \| `"warn"` -Defined in: [packages/core/src/types.ts:317](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L317) +Defined in: packages/core/src/types.ts:317 *** ### TypeScriptOptions -Defined in: [packages/core/src/types.ts:330](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L330) +Defined in: packages/core/src/types.ts:330 #### Properties @@ -1193,31 +1193,31 @@ Defined in: [packages/core/src/types.ts:330](https://github.com/santi020k/eslint > `optional` **mode?**: [`TypeScriptMode`](#typescriptmode) -Defined in: [packages/core/src/types.ts:331](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L331) +Defined in: packages/core/src/types.ts:331 ##### project? > `optional` **project?**: `string` \| `boolean` \| `string`\[\] -Defined in: [packages/core/src/types.ts:332](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L332) +Defined in: packages/core/src/types.ts:332 ##### projectService? > `optional` **projectService?**: `boolean` \| \{ `allowDefaultProject?`: `string`\[\]; `defaultProject?`: `string`; `loadTypeScriptPlugins?`: `boolean`; `maximumDefaultProjectFileMatchCount_THIS_WILL_SLOW_DOWN_LINTING?`: `number`; \} -Defined in: [packages/core/src/types.ts:333](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L333) +Defined in: packages/core/src/types.ts:333 ##### tsconfigRootDir? > `optional` **tsconfigRootDir?**: `string` -Defined in: [packages/core/src/types.ts:339](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L339) +Defined in: packages/core/src/types.ts:339 ##### untypedFiles? > `optional` **untypedFiles?**: `false` \| `string`\[\] -Defined in: [packages/core/src/types.ts:348](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L348) +Defined in: packages/core/src/types.ts:348 TypeScript files that should receive syntax-only linting even when the project uses type-aware mode. Config files are included by default because @@ -1231,7 +1231,7 @@ Set to `false` to require type information for every TypeScript file. > **ConfigFeatureCategory** = `"extension"` \| `"format"` \| `"library"` \| `"testing"` \| `"tool"` -Defined in: [packages/core/src/feature.ts:17](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/feature.ts#L17) +Defined in: packages/core/src/feature.ts:17 *** @@ -1239,7 +1239,7 @@ Defined in: [packages/core/src/feature.ts:17](https://github.com/santi020k/eslin > **ConfigFeaturePhase** = `"config"` \| `"finalizer"` -Defined in: [packages/core/src/feature.ts:24](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/feature.ts#L24) +Defined in: packages/core/src/feature.ts:24 *** @@ -1247,7 +1247,7 @@ Defined in: [packages/core/src/feature.ts:24](https://github.com/santi020k/eslin > **ConfigInput** = `false` \| `null` \| `TSESLint.FlatConfig.Config` \| `TSESLint.FlatConfig.ConfigArray` \| `undefined` -Defined in: [packages/core/src/config-helpers.ts:91](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L91) +Defined in: packages/core/src/config-helpers.ts:91 *** @@ -1255,7 +1255,7 @@ Defined in: [packages/core/src/config-helpers.ts:91](https://github.com/santi020 > **DetectedFrameworkName** = `"angular"` \| `"astro"` \| `"expo"` \| `"hono"` \| `"lit"` \| `"nest"` \| `"next"` \| `"nuxt"` \| `"preact"` \| `"qwik"` \| `"react"` \| `"react-router"` \| `"slidev"` \| `"solid"` \| `"svelte"` \| `"tanstack-start"` \| `"vite"` \| `"vue"` -Defined in: [packages/core/src/types.ts:367](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L367) +Defined in: packages/core/src/types.ts:367 Framework names that can be auto-detected by `detectProjectOptions`. The composer enables these automatically when the matching optional config @@ -1267,7 +1267,7 @@ package is installed. > **ExtensionName** = `` `${Extension}` `` -Defined in: [packages/core/src/types.ts:268](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L268) +Defined in: packages/core/src/types.ts:268 *** @@ -1275,7 +1275,7 @@ Defined in: [packages/core/src/types.ts:268](https://github.com/santi020k/eslint > **ExtensionOption** = [`Extension`](#extension) \| [`ExtensionName`](#extensionname) -Defined in: [packages/core/src/types.ts:269](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L269) +Defined in: packages/core/src/types.ts:269 *** @@ -1283,7 +1283,7 @@ Defined in: [packages/core/src/types.ts:269](https://github.com/santi020k/eslint > **FlatConfigArray** = `TSESLint.FlatConfig.ConfigArray` -Defined in: [packages/core/src/types.ts:574](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L574) +Defined in: packages/core/src/types.ts:574 Type alias for ESLint flat config array @@ -1293,7 +1293,7 @@ Type alias for ESLint flat config array > **FormatName** = `` `${Format}` `` -Defined in: [packages/core/src/types.ts:270](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L270) +Defined in: packages/core/src/types.ts:270 *** @@ -1301,7 +1301,7 @@ Defined in: [packages/core/src/types.ts:270](https://github.com/santi020k/eslint > **FormatOption** = [`Format`](#format) \| [`FormatName`](#formatname) -Defined in: [packages/core/src/types.ts:271](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L271) +Defined in: packages/core/src/types.ts:271 *** @@ -1309,7 +1309,7 @@ Defined in: [packages/core/src/types.ts:271](https://github.com/santi020k/eslint > **ImportedFramework** = ((`options?`) => [`FlatConfigArray`](#flatconfigarray) \| `Promise`\<[`FlatConfigArray`](#flatconfigarray)\>) \| [`FlatConfigArray`](#flatconfigarray) \| `true` \| \{ `default`: ((`options?`) => [`FlatConfigArray`](#flatconfigarray) \| `Promise`\<[`FlatConfigArray`](#flatconfigarray)\>) \| [`FlatConfigArray`](#flatconfigarray); \} -Defined in: [packages/core/src/types.ts:583](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L583) +Defined in: packages/core/src/types.ts:583 Type for framework option values: `true` enables the optional v3 config, or pass a config array, a factory function (sync or async, like the lazy @@ -1323,7 +1323,7 @@ imported module with a default export. Any other value throws a descriptive > **LibraryName** = `` `${Library}` `` -Defined in: [packages/core/src/types.ts:272](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L272) +Defined in: packages/core/src/types.ts:272 *** @@ -1331,7 +1331,7 @@ Defined in: [packages/core/src/types.ts:272](https://github.com/santi020k/eslint > **LibraryOption** = [`Library`](#library) \| [`LibraryName`](#libraryname) -Defined in: [packages/core/src/types.ts:273](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L273) +Defined in: packages/core/src/types.ts:273 *** @@ -1339,7 +1339,7 @@ Defined in: [packages/core/src/types.ts:273](https://github.com/santi020k/eslint > **NextModeName** = `` `${NextMode}` `` -Defined in: [packages/core/src/types.ts:274](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L274) +Defined in: packages/core/src/types.ts:274 *** @@ -1347,7 +1347,7 @@ Defined in: [packages/core/src/types.ts:274](https://github.com/santi020k/eslint > **NextModeOption** = [`NextMode`](#nextmode) \| [`NextModeName`](#nextmodename) -Defined in: [packages/core/src/types.ts:275](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L275) +Defined in: packages/core/src/types.ts:275 *** @@ -1355,7 +1355,7 @@ Defined in: [packages/core/src/types.ts:275](https://github.com/santi020k/eslint > **NormalizedStrictMode** = `"ci"` \| `"pedantic"` \| `"recommended"` -Defined in: [packages/core/src/compose.ts:5](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/compose.ts#L5) +Defined in: packages/core/src/compose.ts:5 *** @@ -1363,7 +1363,7 @@ Defined in: [packages/core/src/compose.ts:5](https://github.com/santi020k/eslint > **OptionalBucket** = `"extensions"` \| `"formats"` \| `"libraries"` \| `"testing"` \| `"tools"` -Defined in: [packages/core/src/config-helpers.ts:81](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L81) +Defined in: packages/core/src/config-helpers.ts:81 *** @@ -1371,7 +1371,7 @@ Defined in: [packages/core/src/config-helpers.ts:81](https://github.com/santi020 > **OptionalConfigMap** = `Partial`\<`Record`\<[`OptionalConfigName`](#optionalconfigname), `boolean`\>\> -Defined in: [packages/core/src/types.ts:282](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L282) +Defined in: packages/core/src/types.ts:282 Simple opt-in/opt-out map for optional configs. Keys match the public enum string values, so both `features: { zod: true }` and `libraries: [Library.Zod]` @@ -1383,7 +1383,7 @@ resolve to the same underlying config. > **OptionalConfigName** = [`ExtensionName`](#extensionname) \| [`FormatName`](#formatname) \| [`LibraryName`](#libraryname) \| [`TestingName`](#testingname) \| [`ToolName`](#toolname) -Defined in: [packages/core/src/types.ts:283](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L283) +Defined in: packages/core/src/types.ts:283 *** @@ -1391,7 +1391,7 @@ Defined in: [packages/core/src/types.ts:283](https://github.com/santi020k/eslint > **PresetName** = `` `${Preset}` `` -Defined in: [packages/core/src/types.ts:289](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L289) +Defined in: packages/core/src/types.ts:289 *** @@ -1399,7 +1399,7 @@ Defined in: [packages/core/src/types.ts:289](https://github.com/santi020k/eslint > **PresetOption** = [`Preset`](#preset) \| [`PresetName`](#presetname) -Defined in: [packages/core/src/types.ts:290](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L290) +Defined in: packages/core/src/types.ts:290 *** @@ -1407,7 +1407,7 @@ Defined in: [packages/core/src/types.ts:290](https://github.com/santi020k/eslint > **ProjectConfigOptions** = `Omit`\<[`EslintConfigOptions`](#eslintconfigoptions), `"projectDefaults"` \| `"projects"`\> -Defined in: [packages/core/src/types.ts:589](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L589) +Defined in: packages/core/src/types.ts:589 *** @@ -1415,7 +1415,7 @@ Defined in: [packages/core/src/types.ts:589](https://github.com/santi020k/eslint > **RuntimeName** = `` `${Runtime}` `` -Defined in: [packages/core/src/types.ts:291](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L291) +Defined in: packages/core/src/types.ts:291 *** @@ -1423,7 +1423,7 @@ Defined in: [packages/core/src/types.ts:291](https://github.com/santi020k/eslint > **RuntimeOption** = [`Runtime`](#runtime) \| [`RuntimeName`](#runtimename) -Defined in: [packages/core/src/types.ts:292](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L292) +Defined in: packages/core/src/types.ts:292 *** @@ -1431,7 +1431,7 @@ Defined in: [packages/core/src/types.ts:292](https://github.com/santi020k/eslint > **SettingName** = `` `${Setting}` `` -Defined in: [packages/core/src/types.ts:293](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L293) +Defined in: packages/core/src/types.ts:293 *** @@ -1439,7 +1439,7 @@ Defined in: [packages/core/src/types.ts:293](https://github.com/santi020k/eslint > **SettingOption** = [`Setting`](#setting) \| [`SettingName`](#settingname) -Defined in: [packages/core/src/types.ts:294](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L294) +Defined in: packages/core/src/types.ts:294 *** @@ -1447,7 +1447,7 @@ Defined in: [packages/core/src/types.ts:294](https://github.com/santi020k/eslint > **StrictMode** = `"ci"` \| `"pedantic"` \| `"recommended"` \| `boolean` -Defined in: [packages/core/src/types.ts:299](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L299) +Defined in: packages/core/src/types.ts:299 Severity profiles for teams adopting the config progressively. @@ -1457,7 +1457,7 @@ Severity profiles for teams adopting the config progressively. > **TestingName** = `` `${Testing}` `` -Defined in: [packages/core/src/types.ts:320](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L320) +Defined in: packages/core/src/types.ts:320 *** @@ -1465,7 +1465,7 @@ Defined in: [packages/core/src/types.ts:320](https://github.com/santi020k/eslint > **TestingOption** = [`Testing`](#testing) \| [`TestingName`](#testingname) -Defined in: [packages/core/src/types.ts:322](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L322) +Defined in: packages/core/src/types.ts:322 *** @@ -1473,7 +1473,7 @@ Defined in: [packages/core/src/types.ts:322](https://github.com/santi020k/eslint > **ToolName** = `` `${Tool}` `` -Defined in: [packages/core/src/types.ts:324](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L324) +Defined in: packages/core/src/types.ts:324 *** @@ -1481,7 +1481,7 @@ Defined in: [packages/core/src/types.ts:324](https://github.com/santi020k/eslint > **ToolOption** = [`Tool`](#tool) \| [`ToolName`](#toolname) -Defined in: [packages/core/src/types.ts:326](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L326) +Defined in: packages/core/src/types.ts:326 *** @@ -1489,7 +1489,7 @@ Defined in: [packages/core/src/types.ts:326](https://github.com/santi020k/eslint > **TypeScriptMode** = `"off"` \| `"strict"` \| `"syntax"` \| `"type-aware"` -Defined in: [packages/core/src/types.ts:328](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L328) +Defined in: packages/core/src/types.ts:328 ## Variables @@ -1497,7 +1497,7 @@ Defined in: [packages/core/src/types.ts:328](https://github.com/santi020k/eslint > `const` **\_\_detectionInternals**: `object` -Defined in: [packages/core/src/utils/detection.ts:645](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/utils/detection.ts#L645) +Defined in: packages/core/src/utils/detection.ts:645 Internal detection helpers exposed for focused unit tests. Do not use these in application code. @@ -1796,7 +1796,7 @@ Do not use these in application code. > `const` **coreConfig**: `TSESLint.FlatConfig.ConfigArray` -Defined in: [packages/core/src/index.ts:163](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/index.ts#L163) +Defined in: packages/core/src/index.ts:163 Core JavaScript ESLint configuration (Universal runtime by default) This is included by default in all configurations @@ -1807,7 +1807,7 @@ This is included by default in all configurations > `const` **DEFAULT\_IGNORES**: `string`\[\] -Defined in: [packages/core/src/config-helpers.ts:22](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L22) +Defined in: packages/core/src/config-helpers.ts:22 *** @@ -1815,7 +1815,7 @@ Defined in: [packages/core/src/config-helpers.ts:22](https://github.com/santi020 > `const` **GENERATED\_CODE\_IGNORES**: `string`\[\] -Defined in: [packages/core/src/config-helpers.ts:60](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L60) +Defined in: packages/core/src/config-helpers.ts:60 *** @@ -1823,7 +1823,7 @@ Defined in: [packages/core/src/config-helpers.ts:60](https://github.com/santi020 > `const` **GLOB\_ASTRO**: `string`\[\] -Defined in: [packages/core/src/types.ts:13](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L13) +Defined in: packages/core/src/types.ts:13 *** @@ -1831,7 +1831,7 @@ Defined in: [packages/core/src/types.ts:13](https://github.com/santi020k/eslint- > `const` **GLOB\_JS**: `string`\[\] -Defined in: [packages/core/src/types.ts:6](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L6) +Defined in: packages/core/src/types.ts:6 Global file patterns for JavaScript-compatible files @@ -1841,7 +1841,7 @@ Global file patterns for JavaScript-compatible files > `const` **GLOB\_JS\_TS**: `string`\[\] -Defined in: [packages/core/src/types.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L10) +Defined in: packages/core/src/types.ts:10 *** @@ -1849,7 +1849,7 @@ Defined in: [packages/core/src/types.ts:10](https://github.com/santi020k/eslint- > `const` **GLOB\_JS\_TS\_ALL**: `string`\[\] -Defined in: [packages/core/src/types.ts:15](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L15) +Defined in: packages/core/src/types.ts:15 *** @@ -1857,7 +1857,7 @@ Defined in: [packages/core/src/types.ts:15](https://github.com/santi020k/eslint- > `const` **GLOB\_SLOT**: `string`\[\] -Defined in: [packages/core/src/types.ts:14](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L14) +Defined in: packages/core/src/types.ts:14 *** @@ -1865,7 +1865,7 @@ Defined in: [packages/core/src/types.ts:14](https://github.com/santi020k/eslint- > `const` **GLOB\_SVELTE**: `string`\[\] -Defined in: [packages/core/src/types.ts:12](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L12) +Defined in: packages/core/src/types.ts:12 *** @@ -1873,7 +1873,7 @@ Defined in: [packages/core/src/types.ts:12](https://github.com/santi020k/eslint- > `const` **GLOB\_TS**: `string`\[\] -Defined in: [packages/core/src/types.ts:8](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L8) +Defined in: packages/core/src/types.ts:8 *** @@ -1881,7 +1881,7 @@ Defined in: [packages/core/src/types.ts:8](https://github.com/santi020k/eslint-c > `const` **GLOB\_VIRTUAL\_TS**: `string`\[\] -Defined in: [packages/core/src/types.ts:17](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L17) +Defined in: packages/core/src/types.ts:17 *** @@ -1889,7 +1889,7 @@ Defined in: [packages/core/src/types.ts:17](https://github.com/santi020k/eslint- > `const` **GLOB\_VUE**: `string`\[\] -Defined in: [packages/core/src/types.ts:11](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L11) +Defined in: packages/core/src/types.ts:11 *** @@ -1897,7 +1897,7 @@ Defined in: [packages/core/src/types.ts:11](https://github.com/santi020k/eslint- > `const` **groups**: `string`\[\][] -Defined in: [packages/core/src/rules.ts:145](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/rules.ts#L145) +Defined in: packages/core/src/rules.ts:145 Default import sort groups used by the core config. Export allows downstream packages and end users to reference or extend them. @@ -1908,7 +1908,7 @@ Export allows downstream packages and end users to reference or extend them. > `const` **OPTIONAL\_BUCKETS**: `object` -Defined in: [packages/core/src/config-helpers.ts:83](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L83) +Defined in: packages/core/src/config-helpers.ts:83 #### Type Declaration @@ -1938,7 +1938,7 @@ Defined in: [packages/core/src/config-helpers.ts:83](https://github.com/santi020 > `const` **ReactConfigKeys**: readonly \[`"react"`, `"next"`, `"expo"`, `"react-router"`\] -Defined in: [packages/core/src/types.ts:355](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/types.ts#L355) +Defined in: packages/core/src/types.ts:355 Array of configurations that require React Note: These are now used internally for auto-detection and globals @@ -1949,7 +1949,7 @@ Note: These are now used internally for auto-detection and globals > `const` **rules**: `TSESLint.Linter.RulesRecord` -Defined in: [packages/core/src/rules.ts:149](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/rules.ts#L149) +Defined in: packages/core/src/rules.ts:149 *** @@ -1957,7 +1957,7 @@ Defined in: [packages/core/src/rules.ts:149](https://github.com/santi020k/eslint > `const` **TAILWIND\_ENTRYPOINT\_CANDIDATES**: `string`\[\] -Defined in: [packages/core/src/config-helpers.ts:72](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L72) +Defined in: packages/core/src/config-helpers.ts:72 ## Functions @@ -1965,7 +1965,7 @@ Defined in: [packages/core/src/config-helpers.ts:72](https://github.com/santi020 > **applyArrayControls**(`controls`, `detected`): `object` -Defined in: [packages/core/src/config-helpers.ts:290](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L290) +Defined in: packages/core/src/config-helpers.ts:290 #### Parameters @@ -2011,7 +2011,7 @@ Defined in: [packages/core/src/config-helpers.ts:290](https://github.com/santi02 > **applyDetectionControls**(`detected`, `detection`, `defaults?`): [`EslintConfigOptions`](#eslintconfigoptions) -Defined in: [packages/core/src/config-helpers.ts:307](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L307) +Defined in: packages/core/src/config-helpers.ts:307 #### Parameters @@ -2037,7 +2037,7 @@ Defined in: [packages/core/src/config-helpers.ts:307](https://github.com/santi02 > **applyFeatureDisables**\<`T`\>(`values`, `options`, `bucket`): `T`\[\] -Defined in: [packages/core/src/config-helpers.ts:144](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L144) +Defined in: packages/core/src/config-helpers.ts:144 #### Type Parameters @@ -2069,7 +2069,7 @@ Defined in: [packages/core/src/config-helpers.ts:144](https://github.com/santi02 > **applyScalarControls**(`controls`, `detected`): `object` -Defined in: [packages/core/src/config-helpers.ts:299](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L299) +Defined in: packages/core/src/config-helpers.ts:299 #### Parameters @@ -2111,7 +2111,7 @@ Defined in: [packages/core/src/config-helpers.ts:299](https://github.com/santi02 > **applyStrictMode**(`configs`, `strict`): `ConfigArray` -Defined in: [packages/core/src/compose.ts:32](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/compose.ts#L32) +Defined in: packages/core/src/compose.ts:32 Applies strict mode by promoting all 'warn' rules to 'error'. @@ -2135,7 +2135,7 @@ Applies strict mode by promoting all 'warn' rules to 'error'. > **applyStrictProfileDefaults**(`extensions`, `strict`): [`Extension`](#extension)\[\] -Defined in: [packages/core/src/config-helpers.ts:322](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L322) +Defined in: packages/core/src/config-helpers.ts:322 #### Parameters @@ -2157,7 +2157,7 @@ Defined in: [packages/core/src/config-helpers.ts:322](https://github.com/santi02 > **createCoreConfig**(`runtime?`): `ConfigArray` -Defined in: [packages/core/src/index.ts:72](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/index.ts#L72) +Defined in: packages/core/src/index.ts:72 Creates the core config with the specified runtime globals @@ -2177,7 +2177,7 @@ Creates the core config with the specified runtime globals > **createGitignoreConfig**(`rootDir?`): `ConfigArray` -Defined in: [packages/core/src/settings/gitignore.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/settings/gitignore.ts#L10) +Defined in: packages/core/src/settings/gitignore.ts:10 Creates an ESLint ignore block from the `.gitignore` at `rootDir`. @@ -2197,7 +2197,7 @@ Creates an ESLint ignore block from the `.gitignore` at `rootDir`. > **createImportGroups**(`options?`): `string`\[\][] -Defined in: [packages/core/src/rules.ts:71](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/rules.ts#L71) +Defined in: packages/core/src/rules.ts:71 Creates the `groups` array for `simple-import-sort/imports`. @@ -2235,7 +2235,7 @@ through to the npm packages group. > **createModuleLoader**(`resolveFn`): \<`T`\>(`specifier`) => `Promise`\<`T`\> -Defined in: [packages/core/src/lazy.ts:8](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/lazy.ts#L8) +Defined in: packages/core/src/lazy.ts:8 #### Parameters @@ -2253,7 +2253,7 @@ Defined in: [packages/core/src/lazy.ts:8](https://github.com/santi020k/eslint-co > **detectProjectOptions**(`detectRootDir?`): [`EslintConfigOptions`](#eslintconfigoptions) -Defined in: [packages/core/src/utils/detection.ts:673](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/utils/detection.ts#L673) +Defined in: packages/core/src/utils/detection.ts:673 Automatically detects project settings based on package.json content @@ -2277,7 +2277,7 @@ Detected ESLint configuration options > **findTailwindEntryPoint**(`rootDir`): `string` \| `undefined` -Defined in: [packages/core/src/config-helpers.ts:366](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L366) +Defined in: packages/core/src/config-helpers.ts:366 #### Parameters @@ -2295,7 +2295,7 @@ Defined in: [packages/core/src/config-helpers.ts:366](https://github.com/santi02 > **flattenConfigInputs**(`configs`): `ConfigArray` -Defined in: [packages/core/src/config-helpers.ts:98](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L98) +Defined in: packages/core/src/config-helpers.ts:98 #### Parameters @@ -2313,7 +2313,7 @@ Defined in: [packages/core/src/config-helpers.ts:98](https://github.com/santi020 > **getFeatureEntries**(`options`, `bucket`, `enabled`): `string`\[\] -Defined in: [packages/core/src/config-helpers.ts:132](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L132) +Defined in: packages/core/src/config-helpers.ts:132 #### Parameters @@ -2339,7 +2339,7 @@ Defined in: [packages/core/src/config-helpers.ts:132](https://github.com/santi02 > **getGlobalsForRuntime**(`runtime?`): `GlobalsConfig` \| `undefined` -Defined in: [packages/core/src/index.ts:22](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/index.ts#L22) +Defined in: packages/core/src/index.ts:22 Returns the appropriate globals for the given runtime option @@ -2359,7 +2359,7 @@ Returns the appropriate globals for the given runtime option > **getStrictMode**(`explicitStrict`, `presetStrict`): [`StrictMode`](#strictmode) \| `undefined` -Defined in: [packages/core/src/config-helpers.ts:317](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L317) +Defined in: packages/core/src/config-helpers.ts:317 #### Parameters @@ -2381,7 +2381,7 @@ Defined in: [packages/core/src/config-helpers.ts:317](https://github.com/santi02 > **hasReactConfig**(`options?`): `boolean` -Defined in: [packages/core/src/utils/index.ts:9](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/utils/index.ts#L9) +Defined in: packages/core/src/utils/index.ts:9 Checks if the provided EslintConfigOptions includes any React-specific configurations. @@ -2405,7 +2405,7 @@ True if any React configuration is detected, false otherwise. > **hasTsconfig**(`rootDir`): `boolean` -Defined in: [packages/core/src/config-helpers.ts:331](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L331) +Defined in: packages/core/src/config-helpers.ts:331 #### Parameters @@ -2423,7 +2423,7 @@ Defined in: [packages/core/src/config-helpers.ts:331](https://github.com/santi02 > **isOptionalBucketValue**(`bucket`, `value`): `boolean` -Defined in: [packages/core/src/config-helpers.ts:127](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L127) +Defined in: packages/core/src/config-helpers.ts:127 #### Parameters @@ -2445,7 +2445,7 @@ Defined in: [packages/core/src/config-helpers.ts:127](https://github.com/santi02 > **mergeArrayOption**\<`T`\>(`detectedValues`, `presetValues`, `explicitValues`, `strategy`): `T`\[\] -Defined in: [packages/core/src/config-helpers.ts:106](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L106) +Defined in: packages/core/src/config-helpers.ts:106 #### Type Parameters @@ -2481,7 +2481,7 @@ Defined in: [packages/core/src/config-helpers.ts:106](https://github.com/santi02 > **mergeFrameworkOption**(`detectedFrameworks`, `presetFrameworks`, `explicitFrameworks`, `strategy`): `object` -Defined in: [packages/core/src/config-helpers.ts:173](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L173) +Defined in: packages/core/src/config-helpers.ts:173 #### Parameters @@ -2585,7 +2585,7 @@ TanStack Start (React/Solid full-stack framework). > **mergeOptionalBucket**\<`T`\>(`bucket`, `detectedValues`, `presetValues`, `explicitValues`, `options`, `strategy`): `T`\[\] -Defined in: [packages/core/src/config-helpers.ts:154](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L154) +Defined in: packages/core/src/config-helpers.ts:154 #### Type Parameters @@ -2629,7 +2629,7 @@ Defined in: [packages/core/src/config-helpers.ts:154](https://github.com/santi02 > **mergeProjectOptions**(`defaults`, `project`): [`ProjectConfigOptions`](#projectconfigoptions) -Defined in: [packages/core/src/config-helpers.ts:223](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L223) +Defined in: packages/core/src/config-helpers.ts:223 Applies shared monorepo defaults to one project configuration. Scalar values are overridden by the project, while arrays and option maps @@ -2655,7 +2655,7 @@ inherit and merge unless the project selects the replace strategy. > **normalizeStrictMode**(`strict`): [`NormalizedStrictMode`](#normalizedstrictmode) -Defined in: [packages/core/src/compose.ts:7](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/compose.ts#L7) +Defined in: packages/core/src/compose.ts:7 #### Parameters @@ -2673,7 +2673,7 @@ Defined in: [packages/core/src/compose.ts:7](https://github.com/santi020k/eslint > **patchImportGroups**(`allConfigs`, `workspacePrefixes`): `ConfigArray` -Defined in: [packages/core/src/config-helpers.ts:440](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L440) +Defined in: packages/core/src/config-helpers.ts:440 #### Parameters @@ -2695,7 +2695,7 @@ Defined in: [packages/core/src/config-helpers.ts:440](https://github.com/santi02 > **patchImportGroupsConfig**(`config`, `workspacePatterns`): `Config` -Defined in: [packages/core/src/config-helpers.ts:405](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L405) +Defined in: packages/core/src/config-helpers.ts:405 #### Parameters @@ -2717,7 +2717,7 @@ Defined in: [packages/core/src/config-helpers.ts:405](https://github.com/santi02 > **resolveConfigFeatures**(`features`, `selected`, `phase?`): `Promise`\<`ConfigArray`\> -Defined in: [packages/core/src/feature.ts:26](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/feature.ts#L26) +Defined in: packages/core/src/feature.ts:26 #### Parameters @@ -2743,7 +2743,7 @@ Defined in: [packages/core/src/feature.ts:26](https://github.com/santi020k/eslin > **resolveDetectionOptions**(`detection`, `defaults?`): `Required`\<[`DetectionOptions`](#detectionoptions)\> -Defined in: [packages/core/src/config-helpers.ts:256](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L256) +Defined in: packages/core/src/config-helpers.ts:256 #### Parameters @@ -2765,7 +2765,7 @@ Defined in: [packages/core/src/config-helpers.ts:256](https://github.com/santi02 > **resolveTsconfigRootDir**(`rootDir`, `typescript`, `explicitRootDir`): `string` \| `undefined` -Defined in: [packages/core/src/config-helpers.ts:356](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L356) +Defined in: packages/core/src/config-helpers.ts:356 #### Parameters @@ -2791,7 +2791,7 @@ Defined in: [packages/core/src/config-helpers.ts:356](https://github.com/santi02 > **resolveTypescriptOptions**(`typescript`): `false` \| [`TypeScriptOptions`](#typescriptoptions) & `object` -Defined in: [packages/core/src/config-helpers.ts:339](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L339) +Defined in: packages/core/src/config-helpers.ts:339 #### Parameters @@ -2809,7 +2809,7 @@ Defined in: [packages/core/src/config-helpers.ts:339](https://github.com/santi02 > **scopeConfigToProject**(`config`, `projectPath`): `Config` -Defined in: [packages/core/src/config-helpers.ts:386](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L386) +Defined in: packages/core/src/config-helpers.ts:386 #### Parameters @@ -2831,7 +2831,7 @@ Defined in: [packages/core/src/config-helpers.ts:386](https://github.com/santi02 > **scopeFilePattern**(`projectPath`, `pattern`): `unknown` -Defined in: [packages/core/src/config-helpers.ts:370](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L370) +Defined in: packages/core/src/config-helpers.ts:370 #### Parameters @@ -2853,7 +2853,7 @@ Defined in: [packages/core/src/config-helpers.ts:370](https://github.com/santi02 > **toUniqueArray**\<`T`\>(`values`): `T`\[\] -Defined in: [packages/core/src/config-helpers.ts:20](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/src/config-helpers.ts#L20) +Defined in: packages/core/src/config-helpers.ts:20 #### Type Parameters diff --git a/apps/docs/src/content/docs/api/reference/expo/src.md b/apps/docs/src/content/docs/api/reference/expo/src.md index 082aefe1..d667aec7 100644 --- a/apps/docs/src/content/docs/api/reference/expo/src.md +++ b/apps/docs/src/content/docs/api/reference/expo/src.md @@ -9,7 +9,7 @@ description: "@santi020k/eslint-config-basic" > `const` **expoConfig**: `TSESLint.FlatConfig.ConfigArray` -Defined in: [packages/expo/src/index.ts:44](https://github.com/santi020k/eslint-config-basic/blob/main/packages/expo/src/index.ts#L44) +Defined in: packages/expo/src/index.ts:44 Expo ESLint configuration Extends the expo config with React Native/Expo rules. diff --git a/apps/docs/src/content/docs/api/reference/integrations/src.md b/apps/docs/src/content/docs/api/reference/integrations/src.md index 6ca2b2d5..c697d8f8 100644 --- a/apps/docs/src/content/docs/api/reference/integrations/src.md +++ b/apps/docs/src/content/docs/api/reference/integrations/src.md @@ -9,7 +9,7 @@ description: "@santi020k/eslint-config-basic" > `const` **a11y**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/extensions/src/a11y.ts:12](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/src/a11y.ts#L12) +Defined in: packages/extensions/src/a11y.ts:12 A11y extension configurations Provides accessibility linting for JSX and Vue @@ -24,7 +24,7 @@ Provides accessibility linting for JSX and Vue > `const` **aiSdk**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/libraries/src/ai.ts:32](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/ai.ts#L32) +Defined in: packages/libraries/src/ai.ts:32 Vercel AI SDK security ESLint configuration. @@ -38,7 +38,7 @@ Vercel AI SDK security ESLint configuration. > `const` **astroDoctor**: () => `Promise`\<[`FlatConfigArray`](../core/src.md#flatconfigarray)\> -Defined in: [packages/extensions/src/astro-doctor.ts:5](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/src/astro-doctor.ts#L5) +Defined in: packages/extensions/src/astro-doctor.ts:5 #### Returns @@ -56,7 +56,7 @@ scheduled for removal in v4. > `const` **bestPractices**: `TSESLint.FlatConfig.ConfigArray` -Defined in: [packages/extensions/src/best-practices.ts:15](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/src/best-practices.ts#L15) +Defined in: packages/extensions/src/best-practices.ts:15 Best-practices ESLint configuration @@ -74,7 +74,7 @@ All rules use built-in ESLint only; no extra dependencies are required. > `const` **biome**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/extensions/src/biome.ts:11](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/src/biome.ts#L11) +Defined in: packages/extensions/src/biome.ts:11 Biome extension configurations Disables rules that conflict with Biome formatting and linting. @@ -89,7 +89,7 @@ Disables rules that conflict with Biome formatting and linting. > `const` **boundaries**: `TSESLint.FlatConfig.ConfigArray` -Defined in: [packages/extensions/src/boundaries.ts:11](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/src/boundaries.ts#L11) +Defined in: packages/extensions/src/boundaries.ts:11 Import-boundary ESLint configuration @@ -103,7 +103,7 @@ eslint-plugin-import-x, which the base config already loads. > `const` **command**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/tools/src/command.ts:11](https://github.com/santi020k/eslint-config-basic/blob/main/packages/tools/src/command.ts#L11) +Defined in: packages/tools/src/command.ts:11 Command ESLint configuration Provides in-editor micro-fixes via magic comments (e.g., /// @keep) @@ -118,7 +118,7 @@ Provides in-editor micro-fixes via magic comments (e.g., /// @keep) > `const` **compat**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/extensions/src/compat.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/src/compat.ts#L10) +Defined in: packages/extensions/src/compat.ts:10 Browser compatibility extension configuration Checks code against the project browserslist using `eslint-plugin-compat` @@ -133,7 +133,7 @@ Checks code against the project browserslist using `eslint-plugin-compat` > `const` **cspell**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/tools/src/cspell.ts:11](https://github.com/santi020k/eslint-config-basic/blob/main/packages/tools/src/cspell.ts#L11) +Defined in: packages/tools/src/cspell.ts:11 CSpell ESLint configuration Enables spell checking in your codebase @@ -148,7 +148,7 @@ Enables spell checking in your codebase > `const` **css**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/formats/src/css.ts:9](https://github.com/santi020k/eslint-config-basic/blob/main/packages/formats/src/css.ts#L9) +Defined in: packages/formats/src/css.ts:9 CSS ESLint configuration Lints plain CSS files using the official `@eslint/css` language plugin @@ -163,7 +163,7 @@ Lints plain CSS files using the official `@eslint/css` language plugin > `const` **cypress**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/testing/src/cypress.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/testing/src/cypress.ts#L10) +Defined in: packages/testing/src/cypress.ts:10 Cypress ESLint configuration Provides linting rules for Cypress end-to-end test files @@ -178,7 +178,7 @@ Provides linting rules for Cypress end-to-end test files > `const` **deMorgan**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/extensions/src/de-morgan.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/src/de-morgan.ts#L10) +Defined in: packages/extensions/src/de-morgan.ts:10 De Morgan extension configuration Simplifies negated logical expressions using `eslint-plugin-de-morgan` @@ -193,7 +193,7 @@ Simplifies negated logical expressions using `eslint-plugin-de-morgan` > `const` **depend**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/extensions/src/depend.ts:11](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/src/depend.ts#L11) +Defined in: packages/extensions/src/depend.ts:11 Depend extension configuration Suggests lighter or native alternatives to heavy dependencies using @@ -209,7 +209,7 @@ Suggests lighter or native alternatives to heavy dependencies using > `const` **graphql**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/formats/src/graphql.ts:20](https://github.com/santi020k/eslint-config-basic/blob/main/packages/formats/src/graphql.ts#L20) +Defined in: packages/formats/src/graphql.ts:20 GraphQL ESLint configuration Provides linting rules for GraphQL schema and operations @@ -224,7 +224,7 @@ Provides linting rules for GraphQL schema and operations > `const` **html**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/formats/src/html.ts:13](https://github.com/santi020k/eslint-config-basic/blob/main/packages/formats/src/html.ts#L13) +Defined in: packages/formats/src/html.ts:13 HTML ESLint configuration Lints plain HTML files using `@html-eslint/eslint-plugin` and its parser @@ -239,7 +239,7 @@ Lints plain HTML files using `@html-eslint/eslint-plugin` and its parser > `const` **i18next**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/libraries/src/i18next.ts:11](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/i18next.ts#L11) +Defined in: packages/libraries/src/i18next.ts:11 i18next ESLint configuration Enables i18next plugin for internationalization best practices @@ -254,7 +254,7 @@ Enables i18next plugin for internationalization best practices > `const` **jest**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/testing/src/jest.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/testing/src/jest.ts#L10) +Defined in: packages/testing/src/jest.ts:10 Jest ESLint configuration Provides linting rules for Jest test files @@ -269,7 +269,7 @@ Provides linting rules for Jest test files > `const` **jestDom**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/testing/src/jest-dom.ts:11](https://github.com/santi020k/eslint-config-basic/blob/main/packages/testing/src/jest-dom.ts#L11) +Defined in: packages/testing/src/jest-dom.ts:11 Jest DOM ESLint configuration Provides rules for @testing-library/jest-dom @@ -284,7 +284,7 @@ Provides rules for @testing-library/jest-dom > `const` **jsdoc**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/tools/src/jsdoc.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/tools/src/jsdoc.ts#L10) +Defined in: packages/tools/src/jsdoc.ts:10 JSDoc ESLint configuration Provides rules for TSDoc/JSDoc validation and formatting. @@ -299,7 +299,7 @@ Provides rules for TSDoc/JSDoc validation and formatting. > `const` **jsonc**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/formats/src/jsonc.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/formats/src/jsonc.ts#L10) +Defined in: packages/formats/src/jsonc.ts:10 JSON/JSONC ESLint configuration Provides rules for JSON file linting and package.json key sorting @@ -314,7 +314,7 @@ Provides rules for JSON file linting and package.json key sorting > `const` **markdown**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/formats/src/markdown.ts:21](https://github.com/santi020k/eslint-config-basic/blob/main/packages/formats/src/markdown.ts#L21) +Defined in: packages/formats/src/markdown.ts:21 Markdown ESLint configuration Lints markdown files for common issues @@ -329,7 +329,7 @@ Lints markdown files for common issues > `const` **mdx**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/formats/src/mdx.ts:11](https://github.com/santi020k/eslint-config-basic/blob/main/packages/formats/src/mdx.ts#L11) +Defined in: packages/formats/src/mdx.ts:11 MDX ESLint configuration Lints MDX files with proper code block handling @@ -344,7 +344,7 @@ Lints MDX files with proper code block handling > `const` **node**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/extensions/src/node.ts:12](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/src/node.ts#L12) +Defined in: packages/extensions/src/node.ts:12 Node.js extension configuration Applies `eslint-plugin-n` recommended rules for Node.js codebases. @@ -361,7 +361,7 @@ TypeScript compiler already validates imports. > `const` **noOnlyTests**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/extensions/src/no-only-tests.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/src/no-only-tests.ts#L10) +Defined in: packages/extensions/src/no-only-tests.ts:10 Prevents `test.only` / `describe.only` from being committed to version control. Uses `eslint-plugin-no-only-tests`. @@ -376,7 +376,7 @@ control. Uses `eslint-plugin-no-only-tests`. > `const` **oxlint**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/extensions/src/oxlint.ts:14](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/src/oxlint.ts#L14) +Defined in: packages/extensions/src/oxlint.ts:14 Oxlint extension configuration Disables ESLint rules already covered by Oxlint so both linters can run @@ -392,7 +392,7 @@ side by side without duplicate reports (analogous to the Biome extension) > `const` **packageJson**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/formats/src/package-json.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/formats/src/package-json.ts#L10) +Defined in: packages/formats/src/package-json.ts:10 Package.json ESLint configuration Provides validation for npm package standards @@ -407,7 +407,7 @@ Provides validation for npm package standards > `const` **perfectionist**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/extensions/src/perfectionist.ts:11](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/src/perfectionist.ts#L11) +Defined in: packages/extensions/src/perfectionist.ts:11 Perfectionist ESLint configuration Provides rules for sorting and organizing code (imports, exports, object keys, etc.) @@ -422,7 +422,7 @@ Provides rules for sorting and organizing code (imports, exports, object keys, e > `const` **playwright**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/testing/src/playwright.ts:9](https://github.com/santi020k/eslint-config-basic/blob/main/packages/testing/src/playwright.ts#L9) +Defined in: packages/testing/src/playwright.ts:9 Playwright ESLint configuration Provides linting rules for Playwright end-to-end test files @@ -437,7 +437,7 @@ Provides linting rules for Playwright end-to-end test files > `const` **pnpm**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/tools/src/pnpm.ts:14](https://github.com/santi020k/eslint-config-basic/blob/main/packages/tools/src/pnpm.ts#L14) +Defined in: packages/tools/src/pnpm.ts:14 pnpm tooling ESLint configuration Enforces pnpm catalogs and workspace settings in `package.json` and @@ -453,7 +453,7 @@ Enforces pnpm catalogs and workspace settings in `package.json` and > `const` **prettier**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/tools/src/prettier.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/tools/src/prettier.ts#L10) +Defined in: packages/tools/src/prettier.ts:10 Prettier interop configuration Disables all ESLint rules that conflict with Prettier formatting @@ -468,7 +468,7 @@ Disables all ESLint rules that conflict with Prettier formatting > `const` **regexp**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/extensions/src/regexp.ts:12](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/src/regexp.ts#L12) +Defined in: packages/extensions/src/regexp.ts:12 RegExp ESLint configuration Catches common regex mistakes like exponential backtracking, @@ -484,7 +484,7 @@ unnecessary escapes, and optimizable character classes > `const` **security**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/extensions/src/security.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/src/security.ts#L10) +Defined in: packages/extensions/src/security.ts:10 Security ESLint configuration Provides rules for catching common security vulnerabilities. @@ -499,7 +499,7 @@ Provides rules for catching common security vulnerabilities. > `const` **sonarjs**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/extensions/src/sonarjs.ts:6](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/src/sonarjs.ts#L6) +Defined in: packages/extensions/src/sonarjs.ts:6 #### Returns @@ -517,7 +517,7 @@ scheduled for removal in v4. > `const` **stencil**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/libraries/src/stencil.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/stencil.ts#L10) +Defined in: packages/libraries/src/stencil.ts:10 Stencil ESLint configuration Enforces best practices for Stencil.js components @@ -532,7 +532,7 @@ Enforces best practices for Stencil.js components > `const` **storybook**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/libraries/src/storybook.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/storybook.ts#L10) +Defined in: packages/libraries/src/storybook.ts:10 Storybook ESLint configuration Provides rules for Storybook story best practices @@ -547,7 +547,7 @@ Provides rules for Storybook story best practices > `const` **swagger**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/tools/src/swagger.ts:11](https://github.com/santi020k/eslint-config-basic/blob/main/packages/tools/src/swagger.ts#L11) +Defined in: packages/tools/src/swagger.ts:11 Swagger/NestJS documentation ESLint configuration Provides rules from the nestjs-typed plugin for Swagger decorator validation @@ -562,7 +562,7 @@ Provides rules from the nestjs-typed plugin for Swagger decorator validation > `const` **tailwind**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/libraries/src/tailwind.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/tailwind.ts#L10) +Defined in: packages/libraries/src/tailwind.ts:10 Tailwind CSS ESLint configuration Enforces Tailwind CSS best practices using eslint-plugin-better-tailwindcss @@ -577,7 +577,7 @@ Enforces Tailwind CSS best practices using eslint-plugin-better-tailwindcss > `const` **tanstackQuery**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/libraries/src/tanstack.ts:9](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/tanstack.ts#L9) +Defined in: packages/libraries/src/tanstack.ts:9 TanStack Query ESLint configuration @@ -591,7 +591,7 @@ TanStack Query ESLint configuration > `const` **tanstackRouter**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/libraries/src/tanstack.ts:29](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/tanstack.ts#L29) +Defined in: packages/libraries/src/tanstack.ts:29 TanStack Router ESLint configuration @@ -605,7 +605,7 @@ TanStack Router ESLint configuration > `const` **testingLibrary**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/testing/src/testing-library.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/testing/src/testing-library.ts#L10) +Defined in: packages/testing/src/testing-library.ts:10 Testing Library ESLint configuration Provides linting rules for Testing Library usage in tests @@ -620,7 +620,7 @@ Provides linting rules for Testing Library usage in tests > `const` **toml**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/formats/src/toml.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/formats/src/toml.ts#L10) +Defined in: packages/formats/src/toml.ts:10 TOML ESLint configuration Provides rules for TOML file linting @@ -635,7 +635,7 @@ Provides rules for TOML file linting > `const` **turbo**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/libraries/src/turbo.ts:11](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/turbo.ts#L11) +Defined in: packages/libraries/src/turbo.ts:11 Turborepo ESLint configuration Validates process.env usage against turbo.json @@ -650,7 +650,7 @@ Validates process.env usage against turbo.json > `const` **unicorn**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/extensions/src/unicorn.ts:11](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/src/unicorn.ts#L11) +Defined in: packages/extensions/src/unicorn.ts:11 Unicorn ESLint configuration Modern JavaScript best practices from eslint-plugin-unicorn @@ -665,7 +665,7 @@ Modern JavaScript best practices from eslint-plugin-unicorn > `const` **vitest**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/testing/src/vitest.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/testing/src/vitest.ts#L10) +Defined in: packages/testing/src/vitest.ts:10 Vitest ESLint configuration Provides linting rules for Vitest test files with best practices @@ -680,7 +680,7 @@ Provides linting rules for Vitest test files with best practices > `const` **yaml**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/formats/src/yaml.ts:53](https://github.com/santi020k/eslint-config-basic/blob/main/packages/formats/src/yaml.ts#L53) +Defined in: packages/formats/src/yaml.ts:53 YAML ESLint configuration Provides rules for YAML file linting @@ -695,7 +695,7 @@ Provides rules for YAML file linting > `const` **zod**: () => `Promise`\<`TSESLint.FlatConfig.ConfigArray`\> -Defined in: [packages/libraries/src/zod.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/zod.ts#L10) +Defined in: packages/libraries/src/zod.ts:10 Zod ESLint configuration Provides validation rules for Zod schemas @@ -710,7 +710,7 @@ Provides validation rules for Zod schemas > **autogen**(): `ConfigArray` -Defined in: [packages/libraries/src/autogen.ts:7](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/autogen.ts#L7) +Defined in: packages/libraries/src/autogen.ts:7 AutoGen SDK ESLint configuration. @@ -724,7 +724,7 @@ AutoGen SDK ESLint configuration. > **docker**(): `Promise`\<`ConfigArray`\> -Defined in: [packages/tools/src/docker.ts:9](https://github.com/santi020k/eslint-config-basic/blob/main/packages/tools/src/docker.ts#L9) +Defined in: packages/tools/src/docker.ts:9 Docker tooling ESLint configuration Covers Docker Compose YAML files. Dockerfile linting is intentionally left to @@ -740,7 +740,7 @@ dedicated Dockerfile linters until a stable ESLint parser/plugin is added. > **drizzle**(): `ConfigArray` -Defined in: [packages/libraries/src/orm.ts:76](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/orm.ts#L76) +Defined in: packages/libraries/src/orm.ts:76 Drizzle ORM ESLint configuration. @@ -754,7 +754,7 @@ Drizzle ORM ESLint configuration. > **getIntegrationConfigs**(`libraries`, `tools`, `testing`, `formats`, `extensions`): `Promise`\<`ConfigArray`\> -Defined in: [packages/integrations/src/compose.ts:25](https://github.com/santi020k/eslint-config-basic/blob/main/packages/integrations/src/compose.ts#L25) +Defined in: packages/integrations/src/compose.ts:25 #### Parameters @@ -793,7 +793,7 @@ This compatibility aggregate is maintained for v3 and scheduled for removal in v > **getPrettierConfig**(`tools`): `Promise`\<`ConfigArray`\> -Defined in: [packages/integrations/src/compose.ts:36](https://github.com/santi020k/eslint-config-basic/blob/main/packages/integrations/src/compose.ts#L36) +Defined in: packages/integrations/src/compose.ts:36 #### Parameters @@ -816,7 +816,7 @@ This compatibility aggregate is maintained for v3 and scheduled for removal in v > **githubActions**(): `Promise`\<`ConfigArray`\> -Defined in: [packages/tools/src/github-actions.ts:9](https://github.com/santi020k/eslint-config-basic/blob/main/packages/tools/src/github-actions.ts#L9) +Defined in: packages/tools/src/github-actions.ts:9 GitHub Actions ESLint configuration Lints workflow YAML files with the shared YAML rules and workflow-specific @@ -832,7 +832,7 @@ guardrails. > **googleGenAi**(): `ConfigArray` -Defined in: [packages/libraries/src/google-genai.ts:7](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/google-genai.ts#L7) +Defined in: packages/libraries/src/google-genai.ts:7 Google GenAI SDK ESLint configuration. @@ -846,7 +846,7 @@ Google GenAI SDK ESLint configuration. > **langchain**(): `ConfigArray` -Defined in: [packages/libraries/src/langchain.ts:7](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/langchain.ts#L7) +Defined in: packages/libraries/src/langchain.ts:7 LangChain.js ESLint configuration. @@ -860,7 +860,7 @@ LangChain.js ESLint configuration. > **llamaIndex**(): `ConfigArray` -Defined in: [packages/libraries/src/llamaindex.ts:7](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/llamaindex.ts#L7) +Defined in: packages/libraries/src/llamaindex.ts:7 LlamaIndex.TS ESLint configuration. @@ -874,7 +874,7 @@ LlamaIndex.TS ESLint configuration. > **mastra**(): `ConfigArray` -Defined in: [packages/libraries/src/mastra.ts:7](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/mastra.ts#L7) +Defined in: packages/libraries/src/mastra.ts:7 Mastra agent framework ESLint configuration. @@ -888,7 +888,7 @@ Mastra agent framework ESLint configuration. > **mcp**(): `ConfigArray` -Defined in: [packages/libraries/src/mcp.ts:7](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/mcp.ts#L7) +Defined in: packages/libraries/src/mcp.ts:7 Model Context Protocol SDK ESLint configuration. @@ -902,7 +902,7 @@ Model Context Protocol SDK ESLint configuration. > **mikroOrm**(): `ConfigArray` -Defined in: [packages/libraries/src/orm.ts:96](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/orm.ts#L96) +Defined in: packages/libraries/src/orm.ts:96 MikroORM ESLint configuration. @@ -916,7 +916,7 @@ MikroORM ESLint configuration. > **nx**(): `Promise`\<`ConfigArray`\> -Defined in: [packages/tools/src/nx.ts:8](https://github.com/santi020k/eslint-config-basic/blob/main/packages/tools/src/nx.ts#L8) +Defined in: packages/tools/src/nx.ts:8 Nx ESLint configuration Lints Nx workspace JSON/JSONC files using the shared JSONC parser rules. @@ -931,7 +931,7 @@ Lints Nx workspace JSON/JSONC files using the shared JSONC parser rules. > **openAiAgents**(): `ConfigArray` -Defined in: [packages/libraries/src/openai-agents.ts:7](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/openai-agents.ts#L7) +Defined in: packages/libraries/src/openai-agents.ts:7 OpenAI Agents SDK ESLint configuration. @@ -945,7 +945,7 @@ OpenAI Agents SDK ESLint configuration. > **prisma**(): `ConfigArray` -Defined in: [packages/libraries/src/orm.ts:57](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/orm.ts#L57) +Defined in: packages/libraries/src/orm.ts:57 Prisma ESLint configuration. @@ -962,7 +962,7 @@ internals that frequently change between generated client versions. > **sequelize**(): `ConfigArray` -Defined in: [packages/libraries/src/orm.ts:115](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/orm.ts#L115) +Defined in: packages/libraries/src/orm.ts:115 Sequelize ESLint configuration. @@ -976,7 +976,7 @@ Sequelize ESLint configuration. > **typeorm**(): `ConfigArray` -Defined in: [packages/libraries/src/orm.ts:22](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/src/orm.ts#L22) +Defined in: packages/libraries/src/orm.ts:22 TypeORM ESLint configuration. diff --git a/apps/docs/src/content/docs/api/reference/nest/src.md b/apps/docs/src/content/docs/api/reference/nest/src.md index 2580cac5..4628c2cd 100644 --- a/apps/docs/src/content/docs/api/reference/nest/src.md +++ b/apps/docs/src/content/docs/api/reference/nest/src.md @@ -9,7 +9,7 @@ description: "@santi020k/eslint-config-basic" > `const` **nestConfig**: `TSESLint.FlatConfig.ConfigArray` -Defined in: [packages/nest/src/index.ts:10](https://github.com/santi020k/eslint-config-basic/blob/main/packages/nest/src/index.ts#L10) +Defined in: packages/nest/src/index.ts:10 NestJS ESLint configuration Includes NestJS plugin with recommended rules @@ -20,7 +20,7 @@ Includes NestJS plugin with recommended rules > `const` **rules**: `TSESLint.Linter.RulesRecord` -Defined in: [packages/nest/src/rules.ts:4](https://github.com/santi020k/eslint-config-basic/blob/main/packages/nest/src/rules.ts#L4) +Defined in: packages/nest/src/rules.ts:4 ## References diff --git a/apps/docs/src/content/docs/api/reference/next/src.md b/apps/docs/src/content/docs/api/reference/next/src.md index 973e9c88..90dd2deb 100644 --- a/apps/docs/src/content/docs/api/reference/next/src.md +++ b/apps/docs/src/content/docs/api/reference/next/src.md @@ -9,7 +9,7 @@ description: "@santi020k/eslint-config-basic" > `const` **nextConfig**: `TSESLint.FlatConfig.ConfigArray` -Defined in: [packages/next/src/index.ts:11](https://github.com/santi020k/eslint-config-basic/blob/main/packages/next/src/index.ts#L11) +Defined in: packages/next/src/index.ts:11 Next.js ESLint configuration Includes Next.js plugin with core-web-vitals rules @@ -20,7 +20,7 @@ Includes Next.js plugin with core-web-vitals rules > `const` **rules**: `TSESLint.Linter.RulesRecord` -Defined in: [packages/next/src/rules.ts:4](https://github.com/santi020k/eslint-config-basic/blob/main/packages/next/src/rules.ts#L4) +Defined in: packages/next/src/rules.ts:4 ## References diff --git a/apps/docs/src/content/docs/api/reference/react/src.md b/apps/docs/src/content/docs/api/reference/react/src.md index 2fa976e2..b2049338 100644 --- a/apps/docs/src/content/docs/api/reference/react/src.md +++ b/apps/docs/src/content/docs/api/reference/react/src.md @@ -9,7 +9,7 @@ description: "@santi020k/eslint-config-basic" > `const` **reactConfig**: `TSESLint.FlatConfig.ConfigArray` -Defined in: [packages/react/src/index.ts:51](https://github.com/santi020k/eslint-config-basic/blob/main/packages/react/src/index.ts#L51) +Defined in: packages/react/src/index.ts:51 React ESLint configuration Uses `@eslint-react/eslint-plugin` for React and hooks rules, the official @@ -21,7 +21,7 @@ React Hooks plugin for non-duplicated Compiler diagnostics, and React Refresh. > `const` **rules**: `TSESLint.Linter.RulesRecord` -Defined in: [packages/react/src/rules.ts:4](https://github.com/santi020k/eslint-config-basic/blob/main/packages/react/src/rules.ts#L4) +Defined in: packages/react/src/rules.ts:4 ## References diff --git a/apps/docs/src/content/docs/api/reference/typescript/src.md b/apps/docs/src/content/docs/api/reference/typescript/src.md index b7bd091d..85c4006d 100644 --- a/apps/docs/src/content/docs/api/reference/typescript/src.md +++ b/apps/docs/src/content/docs/api/reference/typescript/src.md @@ -9,7 +9,7 @@ description: "@santi020k/eslint-config-basic" > `const` **standardRules**: `TSESLint.Linter.RulesRecord` -Defined in: [packages/typescript/src/rules.ts:3](https://github.com/santi020k/eslint-config-basic/blob/main/packages/typescript/src/rules.ts#L3) +Defined in: packages/typescript/src/rules.ts:3 *** @@ -17,7 +17,7 @@ Defined in: [packages/typescript/src/rules.ts:3](https://github.com/santi020k/es > `const` **typeCheckedRules**: `TSESLint.Linter.RulesRecord` -Defined in: [packages/typescript/src/rules.ts:37](https://github.com/santi020k/eslint-config-basic/blob/main/packages/typescript/src/rules.ts#L37) +Defined in: packages/typescript/src/rules.ts:37 *** @@ -25,7 +25,7 @@ Defined in: [packages/typescript/src/rules.ts:37](https://github.com/santi020k/e > `const` **typescriptConfig**: `ConfigArray` -Defined in: [packages/typescript/src/index.ts:211](https://github.com/santi020k/eslint-config-basic/blob/main/packages/typescript/src/index.ts#L211) +Defined in: packages/typescript/src/index.ts:211 ## Functions @@ -33,7 +33,7 @@ Defined in: [packages/typescript/src/index.ts:211](https://github.com/santi020k/ > **createTypescriptConfig**(`options?`): `ConfigArray` -Defined in: [packages/typescript/src/index.ts:107](https://github.com/santi020k/eslint-config-basic/blob/main/packages/typescript/src/index.ts#L107) +Defined in: packages/typescript/src/index.ts:107 TypeScript ESLint configuration factory Extends typescript-eslint strict + stylistic type-checked presets with custom rules diff --git a/apps/docs/src/content/docs/guide/changelog.md b/apps/docs/src/content/docs/guide/changelog.md index cab1acce..c1355e1b 100644 --- a/apps/docs/src/content/docs/guide/changelog.md +++ b/apps/docs/src/content/docs/guide/changelog.md @@ -3,6 +3,21 @@ title: "Changelog" description: "Release history for @santi020k/eslint-config-basic." --- +## 3.5.3 + +### Patch Changes + +- [#132](https://github.com/santi020k/eslint-config-basic/pull/132) [`d92bcf4`](https://github.com/santi020k/eslint-config-basic/commit/d92bcf4e1591a18cdd1c2a84db556e8598cd293a) Thanks [@santi020k](https://github.com/santi020k)! - Create the umbrella GitHub Release and rolling major Action tag from the protected GitHub Actions release workflow, including a main-only recovery dispatch. + +## 3.5.2 + +### Patch Changes + +- [#126](https://github.com/santi020k/eslint-config-basic/pull/126) [`2bf02c3`](https://github.com/santi020k/eslint-config-basic/commit/2bf02c349c8b99671ac069a26ec7065a8233d4f2) Thanks [@santi020k](https://github.com/santi020k)! - Upgrade the supported dependency ecosystem, adopt Lumen Astro 2, and resolve all known audit findings with patched transitive versions. +- Updated dependencies [[`2bf02c3`](https://github.com/santi020k/eslint-config-basic/commit/2bf02c349c8b99671ac069a26ec7065a8233d4f2)]: + - @santi020k/eslint-config-core@3.1.2 + - @santi020k/eslint-config-typescript@3.1.4 + ## 3.5.1 ### Patch Changes diff --git a/apps/docs/src/content/docs/guide/development.md b/apps/docs/src/content/docs/guide/development.md index f9767048..8ddd6b1c 100644 --- a/apps/docs/src/content/docs/guide/development.md +++ b/apps/docs/src/content/docs/guide/development.md @@ -13,6 +13,9 @@ corepack use pnpm@11.6.0 # Install dependencies pnpm install +# Install the repository-managed Git hooks +pnpm run hooks:install + # Build all packages pnpm run build @@ -31,8 +34,28 @@ pnpm run test | `pnpm run test` | Run integration tests (Vitest) | | `pnpm run inspector` | Open ESLint config inspector UI | | `pnpm run docs` | Generate API docs (TypeDoc) | +| `pnpm run hooks:install` | Install the hooks declared in `quality.yml` | | `pnpm run clean` | Remove all `dist/` and `node_modules/` | +## Quality CLI prerequisite + +The Git hooks are managed by the external [`quality` CLI](https://quality.santi020k.com), +not by a JavaScript workspace dependency. Install the checksum-verified native +binary before running `pnpm run hooks:install`: + +```bash +curl --proto '=https' --tlsv1.2 -fsSL \ + https://raw.githubusercontent.com/santi020k/quality/main/install.sh \ + | sh -s -- santi020k/quality v1.1.1 + +quality --version +pnpm run hooks:install +quality hooks status +``` + +The repository's hook definitions live in `quality.yml`; rerun the install +command after changing them. + ## Project Structure This is a **monorepo** using Turborepo + pnpm Workspaces. Each config lives under `packages/`: @@ -56,7 +79,7 @@ This is a **monorepo** using Turborepo + pnpm Workspaces. Each config lives unde Always validate your changes before submitting: ```bash -pnpm run build && pnpm run lint && pnpm run test +pnpm run ok ``` For full contributing guidelines, see the [CONTRIBUTING.md](https://github.com/santi020k/eslint-config-basic/blob/main/.github/CONTRIBUTING.md). diff --git a/apps/docs/src/content/docs/index.mdx b/apps/docs/src/content/docs/index.mdx index 9e0ac9d9..eda4e02d 100644 --- a/apps/docs/src/content/docs/index.mdx +++ b/apps/docs/src/content/docs/index.mdx @@ -1,5 +1,5 @@ --- -title: Santi020k ESLint Config v3 - Lean, Intelligent Flat Config +title: Lean ESLint Flat Config for Modern Stacks description: Current v3 documentation for the lean, one-line ESLint flat-config toolkit and its optional framework and integration packages. template: splash banner: diff --git a/apps/docs/src/content/docs/v2/guide/installation.mdx b/apps/docs/src/content/docs/v2/guide/installation.mdx index 5fa32496..3b738350 100644 --- a/apps/docs/src/content/docs/v2/guide/installation.mdx +++ b/apps/docs/src/content/docs/v2/guide/installation.mdx @@ -1,6 +1,6 @@ --- title: "Installation" -description: "- Node.js ^20.19.0 || >=22.18.0 - ESLint 10+" +description: "Install the v2 ESLint flat-config packages with supported Node.js, ESLint, and TypeScript versions." --- import InstallTabs from '../../../../components/InstallTabs.astro' diff --git a/apps/docs/src/env.d.ts b/apps/docs/src/env.d.ts new file mode 100644 index 00000000..831bb1cd --- /dev/null +++ b/apps/docs/src/env.d.ts @@ -0,0 +1,11 @@ +/// + +import type { StarlightRouteData } from '@astrojs/starlight/route-data' + +declare global { + namespace App { + interface Locals { + starlightRoute: StarlightRouteData + } + } +} diff --git a/improvement.md b/improvement.md index 3fc14590..ae87c7f2 100644 --- a/improvement.md +++ b/improvement.md @@ -7,9 +7,9 @@ fixture, benchmark, or tracked issue before they are marked complete. ## Active follow-ups -No implementation or consumer-adoption follow-up remains. The current changeset -still needs a normal patch release before capability-gated workflows can use -`config-types`, compact rules-only snapshots, and the direct pnpm-bin fix. +No implementation, release, or consumer-adoption follow-up remains for the +capabilities recorded in this archive. `config-types`, compact rules-only +snapshots, and the direct pnpm-bin fix shipped in v3.5.3. When a follow-up is implemented, add the regression test or verification command next to its completion note. This keeps the archive useful without turning it diff --git a/package.json b/package.json index 7db1c47b..2cbeddfa 100644 --- a/package.json +++ b/package.json @@ -2,6 +2,7 @@ "name": "@santi020k/eslint-config-basic-root", "version": "1.0.0", "private": true, + "description": "DX-first ESLint 10 flat configs for JavaScript, TypeScript, and modern frameworks.", "type": "module", "scripts": { "dev": "turbo run dev", @@ -51,7 +52,7 @@ "release:build-versioned": "node scripts/build-versioned-packages.mjs", "release:publish": "changeset publish", "release": "pnpm run release:check && changeset publish", - "prepare": "husky", + "hooks:install": "quality hooks install", "pre-commit": "lint-staged", "pre-push": "pnpm run lint && pnpm run lint:spell && pnpm run typecheck && turbo run test", "commit": "commitprompt" @@ -64,11 +65,10 @@ "@eslint/config-inspector": "catalog:", "@santi020k/commitprompt": "catalog:", "@santi020k/eslint-config-basic": "workspace:^", - "@typescript/native": "catalog:", "@types/node": "catalog:", + "@typescript/native": "catalog:", "cspell": "catalog:", "eslint": "catalog:", - "husky": "catalog:", "knip": "catalog:", "lint-staged": "catalog:", "semver": "catalog:", diff --git a/packages/angular/README.md b/packages/angular/README.md index a4211cb4..9839df4b 100644 --- a/packages/angular/README.md +++ b/packages/angular/README.md @@ -2,10 +2,44 @@ Angular support as an optional framework package. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-angular.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-angular) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-angular.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-angular) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Angular guide](https://eslint.santi020k.com/frameworks/angular) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-angular +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { angular: true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Angular guide](https://eslint.santi020k.com/frameworks/angular) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/angular/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/astro/README.md b/packages/astro/README.md index 3497dbb9..fb628f89 100644 --- a/packages/astro/README.md +++ b/packages/astro/README.md @@ -2,10 +2,44 @@ Astro support, virtual script handling, and flat-config usage. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-astro.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-astro) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-astro.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-astro) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Astro guide](https://eslint.santi020k.com/frameworks/astro) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-astro +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { astro: true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Astro guide](https://eslint.santi020k.com/frameworks/astro) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/astro/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/basic/README.md b/packages/basic/README.md index edd4b568..16b40b88 100644 --- a/packages/basic/README.md +++ b/packages/basic/README.md @@ -1,11 +1,206 @@ # @santi020k/eslint-config-basic -The primary entry point that composes all feature-specific configurations. +DX-first ESLint 10 flat config for JavaScript and TypeScript, with auto-detection +and opt-in framework packages. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[Documentation](https://eslint.santi020k.com/) · +[npm](https://www.npmjs.com/package/@santi020k/eslint-config-basic) · +[Migration to v3](https://eslint.santi020k.com/guide/migration-v2-to-v3/) -- Docs: [Main package](https://eslint.santi020k.com/packages/basic) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +[![Build](https://github.com/santi020k/eslint-config-basic/actions/workflows/build.yml/badge.svg)](https://github.com/santi020k/eslint-config-basic/actions/workflows/build.yml) +[![CodeQL](https://github.com/santi020k/eslint-config-basic/actions/workflows/codeql.yml/badge.svg)](https://github.com/santi020k/eslint-config-basic/actions/workflows/codeql.yml) +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-basic.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-basic) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-basic.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-basic) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +## Quick start + +Install the lean package and ESLint: + +```sh +npm install -D eslint @santi020k/eslint-config-basic +``` + +Create `eslint.config.mjs`: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default defineConfig() +``` + +That is the complete zero-config setup. It detects JavaScript, TypeScript, +runtime, and installed optional features relative to the config file, even when +an editor starts ESLint from another working directory. + +For a framework, add its config package to the same install: + +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-react +``` + +For optional behavior, add only the corresponding feature packs: + +```sh +npm install -D @santi020k/eslint-config-testing @santi020k/eslint-config-tools +npm install -D @santi020k/eslint-config-libraries +``` + +If install size is not a concern, the batteries-included package keeps the same +one-line config: + +```sh +npm install -D eslint @santi020k/eslint-config-full +``` + +```js +export { default } from '@santi020k/eslint-config-full/recommended' +``` + +## Why v3 changed dependency ownership + +`@santi020k/eslint-config-basic` no longer installs every supported framework +and integration. Its production boundary is limited to the composer, core rules, +TypeScript support, and a small runtime utility. Frameworks and integrations are +optional peers loaded only when detected or selected. + +This gives projects: + +- fewer transitive dependencies and audit paths by default; +- no Angular, Expo, Storybook, GraphQL, Cypress, or Tailwind packages unless used; +- actionable errors naming an optional config package when it is missing; +- a full-package escape hatch for teams that prefer one dependency. + +The lean security boundary is checked during release and has direct-dependency +budgets to prevent accidental growth. + +## Custom configuration + +Use the named factory when auto-detection needs an override: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + root: import.meta.dirname, + frameworks: { react: true }, + strict: 'ci', + typescript: 'strict' +}) +``` + +Optional features require their granular category package: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + features: { + playwright: true, + prettier: true, + tailwind: true + } +}) +``` + +The factory also accepts local flat-config overrides after the options object: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({}, { + files: ['scripts/**/*.js'], + rules: { 'no-console': 'off' } +}) +``` + +Pass overrides that reference optional plugin rules directly to `defineConfig()` +whenever possible. The composer attaches each already-loaded plugin to the rule +block that needs it. An entry appended after `defineConfig()` has returned is +outside that attachment pass; wrap a dynamically assembled final array with +`attachReferencedPlugins()`: + +```js +import { + attachReferencedPlugins, + defineConfig +} from '@santi020k/eslint-config-basic' + +const generated = await defineConfig() +const lateOverrides = await loadProjectOverrides() + +export default attachReferencedPlugins([...generated, ...lateOverrides]) +``` + +Direct calls from `eslint.config.*` automatically anchor dependency detection, +TypeScript, Tailwind, workspace packages, and `.gitignore` to that file. Set +`root` only when the intended project root differs from the config directory. + +Type-aware projects can keep generated, template, or other out-of-project files +on syntax-only linting without importing `typescript-eslint`: + +```js +export default await defineConfig({ + root: import.meta.dirname, + typescript: { + untypedFiles: ['templates/**/*.ts'] + } +}) +``` + +TypeScript config files (`**/*.config.{ts,mts,cts}`) use this syntax fallback +automatically. Set `untypedFiles: false` to require type information everywhere. + +## Package choice + +| Package | Use it when | Dependency model | +| --- | --- | --- | +| `@santi020k/eslint-config-basic` | Default for applications and libraries | Lean core; frameworks and integrations are optional | +| `@santi020k/eslint-config-full` | Install simplicity matters more than footprint | Every supported framework and integration | +| `@santi020k/eslint-config-lite` | Existing v2 lite users | Deprecated v3 compatibility path; removed in v4 | +| `@santi020k/eslint-config-integrations` | Existing aggregate-package users | Deprecated v3 compatibility path; removed in v4 | +| Individual framework packages | Custom composition | One framework and its plugin set | + +## CLI + +```sh +npx @santi020k/eslint-config-basic init +npx @santi020k/eslint-config-basic explain no-console --file src/index.ts +npx @santi020k/eslint-config-basic doctor --fix +npx @santi020k/eslint-config-basic compatibility +npx @santi020k/eslint-config-basic config-types +npx @santi020k/eslint-config-basic migrate --to v3 +npx @santi020k/eslint-config-basic baseline --preset pedantic +npx @santi020k/eslint-config-basic profile --max-warnings 0 +npx @santi020k/eslint-config-basic snapshot +npx @santi020k/eslint-config-basic diff +``` + +`init` creates the zero-argument config. `explain` shows detection or traces an +effective rule, `doctor --fix` repairs safe setup issues with backups, and +`compatibility` validates runtime and peer ranges, while `config-types` checks +that editor-facing ESLint config declarations stay portable. The remaining +commands automate v3 migration, incremental strict-mode adoption, budgeted +performance profiling, and effective-rule change review. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- TypeScript: `>=5.0.0` when enabled +- Package managers: npm, pnpm, Yarn, and Bun + +Packages in the `@santi020k/eslint-config-*` family use independent minor and +patch versions. Packages with the same major version are designed to work +together; use the latest release of each package within that major. Internal +dependency and peer ranges provide the exact machine-readable compatibility +requirements. + +See the [v2 → v3 migration guide](https://eslint.santi020k.com/guide/migration-v2-to-v3/) +for package moves and copy-paste commands. The +[planned v4 removals](https://eslint.santi020k.com/guide/v4-removals/) page +tracks compatibility APIs that are deprecated during v3. + +## License + +MIT © [santi020k](https://santi020k.com). See [LICENSE](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/core/README.md b/packages/core/README.md index d97a8c0b..56cba9d5 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -2,10 +2,40 @@ Core rules, shared utilities, and runtime-aware base configuration. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-core.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-core) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-core.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-core) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Core package](https://eslint.santi020k.com/packages/core) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-core +``` + +## Direct usage + +Most projects should use `@santi020k/eslint-config-basic`, which includes this package. +For custom flat-config composition, import the core array directly: + +```js +import { coreConfig } from '@santi020k/eslint-config-core' + +export default [...coreConfig] +``` + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Core package](https://eslint.santi020k.com/packages/core) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/core/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/expo/README.md b/packages/expo/README.md index cea3c848..08bbfb1b 100644 --- a/packages/expo/README.md +++ b/packages/expo/README.md @@ -2,10 +2,44 @@ Expo and React Native support with explicit React configuration. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-expo.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-expo) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-expo.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-expo) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Expo guide](https://eslint.santi020k.com/frameworks/expo) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-expo @santi020k/eslint-config-react +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { expo: true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Expo guide](https://eslint.santi020k.com/frameworks/expo) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/expo/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/extensions/README.md b/packages/extensions/README.md index 24f81d43..d1fa3e5a 100644 --- a/packages/extensions/README.md +++ b/packages/extensions/README.md @@ -2,10 +2,45 @@ Specialized rule packs such as security, accessibility, Unicorn, and Oxlint. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-extensions.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-extensions) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-extensions.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-extensions) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Extensions](https://eslint.santi020k.com/tooling/extensions) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-extensions +``` + +## Usage + +Enable only the features your project uses: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + extensions: ['security', 'unicorn'] +}) +``` + +Supported features can also be auto-detected from the project. Installing this +package makes its extensions available to the Basic composer; it does not enable +every feature in the package. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Extensions](https://eslint.santi020k.com/tooling/extensions) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/extensions/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/extensions/package.json b/packages/extensions/package.json index 1bdf1ea1..c79bbc86 100644 --- a/packages/extensions/package.json +++ b/packages/extensions/package.json @@ -83,5 +83,8 @@ "directory": "packages/extensions" }, "homepage": "https://eslint.santi020k.com/tooling/extensions", + "bugs": { + "url": "https://github.com/santi020k/eslint-config-basic/issues" + }, "license": "MIT" } diff --git a/packages/formats/README.md b/packages/formats/README.md index d854f0f5..95d694d5 100644 --- a/packages/formats/README.md +++ b/packages/formats/README.md @@ -2,10 +2,45 @@ ESLint parsers and rules for Markdown, JSONC, YAML, GraphQL, CSS, HTML, and other formats. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-formats.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-formats) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-formats.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-formats) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Formats](https://eslint.santi020k.com/tooling/formats) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-formats +``` + +## Usage + +Enable only the features your project uses: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + formats: ['jsonc', 'markdown'] +}) +``` + +Supported features can also be auto-detected from the project. Installing this +package makes its formats available to the Basic composer; it does not enable +every feature in the package. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Formats](https://eslint.santi020k.com/tooling/formats) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/formats/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/formats/package.json b/packages/formats/package.json index 8a49a13e..67edb06e 100644 --- a/packages/formats/package.json +++ b/packages/formats/package.json @@ -78,6 +78,9 @@ "directory": "packages/formats" }, "homepage": "https://eslint.santi020k.com/tooling/formats", + "bugs": { + "url": "https://github.com/santi020k/eslint-config-basic/issues" + }, "author": "santi020k", "license": "MIT" } diff --git a/packages/hono/README.md b/packages/hono/README.md index 28a0e696..ed18fb21 100644 --- a/packages/hono/README.md +++ b/packages/hono/README.md @@ -2,10 +2,44 @@ Hono support for Fetch API and edge runtime projects. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-hono.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-hono) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-hono.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-hono) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Hono guide](https://eslint.santi020k.com/frameworks/hono) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-hono +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { hono: true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Hono guide](https://eslint.santi020k.com/frameworks/hono) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/hono/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/integrations/README.md b/packages/integrations/README.md index a781547a..dbc3df81 100644 --- a/packages/integrations/README.md +++ b/packages/integrations/README.md @@ -6,10 +6,28 @@ Libraries, tools, testing, formats, and extensions integrations. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-integrations.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-integrations) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-integrations.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-integrations) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Integrations package](https://eslint.santi020k.com/packages/integrations) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Recommended replacement -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +See the [migration guide](https://eslint.santi020k.com/guide/migration-v2-to-v3/) for the +copy-paste installation and configuration steps for your project. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Integrations package](https://eslint.santi020k.com/packages/integrations) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/integrations/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/integrations/package.json b/packages/integrations/package.json index 76953ca8..c811a6e6 100644 --- a/packages/integrations/package.json +++ b/packages/integrations/package.json @@ -84,5 +84,8 @@ "directory": "packages/integrations" }, "homepage": "https://eslint.santi020k.com/packages/integrations", + "bugs": { + "url": "https://github.com/santi020k/eslint-config-basic/issues" + }, "license": "MIT" } diff --git a/packages/libraries/README.md b/packages/libraries/README.md index 6340dd01..c614805f 100644 --- a/packages/libraries/README.md +++ b/packages/libraries/README.md @@ -2,10 +2,45 @@ Library-specific rules for Tailwind, Storybook, AI SDKs, ORMs, and related ecosystems. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-libraries.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-libraries) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-libraries.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-libraries) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Libraries](https://eslint.santi020k.com/tooling/libraries) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-libraries +``` + +## Usage + +Enable only the features your project uses: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + libraries: ['tailwind', 'zod'] +}) +``` + +Supported features can also be auto-detected from the project. Installing this +package makes its libraries available to the Basic composer; it does not enable +every feature in the package. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Libraries](https://eslint.santi020k.com/tooling/libraries) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/libraries/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/libraries/package.json b/packages/libraries/package.json index 041e766f..717795bf 100644 --- a/packages/libraries/package.json +++ b/packages/libraries/package.json @@ -85,5 +85,8 @@ "directory": "packages/libraries" }, "homepage": "https://eslint.santi020k.com/tooling/libraries", + "bugs": { + "url": "https://github.com/santi020k/eslint-config-basic/issues" + }, "license": "MIT" } diff --git a/packages/lit/README.md b/packages/lit/README.md index 80bb0209..9c67dc8d 100644 --- a/packages/lit/README.md +++ b/packages/lit/README.md @@ -2,10 +2,44 @@ Lit and Web Components rules for modern flat-config projects. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-lit.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-lit) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-lit.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-lit) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Lit guide](https://eslint.santi020k.com/frameworks/lit) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-lit +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { lit: true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Lit guide](https://eslint.santi020k.com/frameworks/lit) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/lit/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/lite/README.md b/packages/lite/README.md index ccb80f4f..a2a75ad5 100644 --- a/packages/lite/README.md +++ b/packages/lite/README.md @@ -8,10 +8,28 @@ Compatibility wrapper for projects migrating from the v2 Lite composer. Version 3 re-exports the lean `@santi020k/eslint-config-basic` API; new projects should install and import the Basic package directly. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-lite.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-lite) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-lite.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-lite) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Lite package](https://eslint.santi020k.com/packages/lite) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Recommended replacement -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +See the [migration guide](https://eslint.santi020k.com/guide/migration-v2-to-v3/) for the +copy-paste installation and configuration steps for your project. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Lite package](https://eslint.santi020k.com/packages/lite) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/lite/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/nest/README.md b/packages/nest/README.md index 205b1f55..e2a0e8dc 100644 --- a/packages/nest/README.md +++ b/packages/nest/README.md @@ -2,10 +2,44 @@ NestJS-focused rules layered on top of the core package. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-nest.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-nest) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-nest.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-nest) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [NestJS guide](https://eslint.santi020k.com/frameworks/nest) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-nest +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { nest: true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [NestJS guide](https://eslint.santi020k.com/frameworks/nest) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/nest/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/next/README.md b/packages/next/README.md index ee6f89d3..7d333b01 100644 --- a/packages/next/README.md +++ b/packages/next/README.md @@ -2,10 +2,44 @@ Next.js rules, App Router notes, and the React dependency contract. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-next.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-next) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-next.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-next) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Next.js guide](https://eslint.santi020k.com/frameworks/next) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-next @santi020k/eslint-config-react +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { next: true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Next.js guide](https://eslint.santi020k.com/frameworks/next) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/next/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/nuxt/README.md b/packages/nuxt/README.md index 2250e6ff..685a211a 100644 --- a/packages/nuxt/README.md +++ b/packages/nuxt/README.md @@ -2,10 +2,44 @@ Nuxt-specific rules layered on top of the Vue configuration. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-nuxt.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-nuxt) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-nuxt.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-nuxt) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Nuxt guide](https://eslint.santi020k.com/frameworks/nuxt) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-nuxt @santi020k/eslint-config-vue +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { nuxt: true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Nuxt guide](https://eslint.santi020k.com/frameworks/nuxt) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/nuxt/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/preact/README.md b/packages/preact/README.md index 66f0a223..568f993b 100644 --- a/packages/preact/README.md +++ b/packages/preact/README.md @@ -2,10 +2,44 @@ Preact support using shared React rules with a Preact-compatible plugin. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-preact.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-preact) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-preact.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-preact) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Preact guide](https://eslint.santi020k.com/frameworks/preact) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-preact +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { preact: true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Preact guide](https://eslint.santi020k.com/frameworks/preact) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/preact/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/qwik/README.md b/packages/qwik/README.md index dfd09455..b71a7496 100644 --- a/packages/qwik/README.md +++ b/packages/qwik/README.md @@ -2,10 +2,44 @@ Qwik support for projects using the shared flat-config toolkit. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-qwik.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-qwik) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-qwik.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-qwik) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Qwik guide](https://eslint.santi020k.com/frameworks/qwik) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-qwik +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { qwik: true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Qwik guide](https://eslint.santi020k.com/frameworks/qwik) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/qwik/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/react-router/README.md b/packages/react-router/README.md index 551ab37b..7488971a 100644 --- a/packages/react-router/README.md +++ b/packages/react-router/README.md @@ -2,10 +2,44 @@ React Router v7 (framework mode) rules, successor to the Remix configuration. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-react-router.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-react-router) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-react-router.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-react-router) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [React Router guide](https://eslint.santi020k.com/frameworks/react-router) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-react-router @santi020k/eslint-config-react +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { 'react-router': true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [React Router guide](https://eslint.santi020k.com/frameworks/react-router) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/react-router/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/react/README.md b/packages/react/README.md index c90a10a4..d30e5546 100644 --- a/packages/react/README.md +++ b/packages/react/README.md @@ -2,10 +2,44 @@ React and Hooks rules for modern flat-config projects. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-react.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-react) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-react.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-react) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [React guide](https://eslint.santi020k.com/frameworks/react) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-react +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { react: true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [React guide](https://eslint.santi020k.com/frameworks/react) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/react/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/slidev/README.md b/packages/slidev/README.md index a0abfaa1..1ad3bcd0 100644 --- a/packages/slidev/README.md +++ b/packages/slidev/README.md @@ -2,10 +2,44 @@ Slidev support for Vue-powered presentation decks. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-slidev.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-slidev) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-slidev.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-slidev) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Slidev guide](https://eslint.santi020k.com/frameworks/slidev) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-slidev @santi020k/eslint-config-vue +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { slidev: true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Slidev guide](https://eslint.santi020k.com/frameworks/slidev) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/slidev/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/solid/README.md b/packages/solid/README.md index 0078d40c..ca865116 100644 --- a/packages/solid/README.md +++ b/packages/solid/README.md @@ -2,10 +2,44 @@ SolidJS support for projects using the shared linting baseline. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-solid.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-solid) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-solid.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-solid) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Solid guide](https://eslint.santi020k.com/frameworks/solid) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-solid +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { solid: true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Solid guide](https://eslint.santi020k.com/frameworks/solid) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/solid/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/svelte/README.md b/packages/svelte/README.md index e82e9edb..86767afb 100644 --- a/packages/svelte/README.md +++ b/packages/svelte/README.md @@ -2,10 +2,44 @@ Svelte framework integration within the modular config stack. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-svelte.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-svelte) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-svelte.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-svelte) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Svelte guide](https://eslint.santi020k.com/frameworks/svelte) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-svelte +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { svelte: true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Svelte guide](https://eslint.santi020k.com/frameworks/svelte) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/svelte/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/tanstack-start/README.md b/packages/tanstack-start/README.md index ca146236..e95f2bd3 100644 --- a/packages/tanstack-start/README.md +++ b/packages/tanstack-start/README.md @@ -2,10 +2,44 @@ TanStack Start rules bundling TanStack Router and TanStack Query support. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-tanstack-start.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-tanstack-start) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-tanstack-start.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-tanstack-start) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [TanStack Start guide](https://eslint.santi020k.com/frameworks/tanstack-start) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-tanstack-start @santi020k/eslint-config-react +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { 'tanstack-start': true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [TanStack Start guide](https://eslint.santi020k.com/frameworks/tanstack-start) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/tanstack-start/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/testing/README.md b/packages/testing/README.md index 2476bb68..18c1daae 100644 --- a/packages/testing/README.md +++ b/packages/testing/README.md @@ -2,10 +2,45 @@ Testing configs for Vitest, Jest, Cypress, Playwright, and Testing Library. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-testing.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-testing) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-testing.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-testing) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Testing](https://eslint.santi020k.com/tooling/testing) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-testing +``` + +## Usage + +Enable only the features your project uses: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + testing: ['playwright', 'vitest'] +}) +``` + +Supported features can also be auto-detected from the project. Installing this +package makes its testing available to the Basic composer; it does not enable +every feature in the package. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Testing](https://eslint.santi020k.com/tooling/testing) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/testing/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/testing/package.json b/packages/testing/package.json index 6854a362..2a3ddf8c 100644 --- a/packages/testing/package.json +++ b/packages/testing/package.json @@ -69,5 +69,8 @@ "directory": "packages/testing" }, "homepage": "https://eslint.santi020k.com/tooling/testing", + "bugs": { + "url": "https://github.com/santi020k/eslint-config-basic/issues" + }, "license": "MIT" } diff --git a/packages/tools/README.md b/packages/tools/README.md index 609e2807..b8d066ff 100644 --- a/packages/tools/README.md +++ b/packages/tools/README.md @@ -2,10 +2,45 @@ Tool-specific configs for Prettier, CSpell, JSDoc, pnpm, Swagger, and more. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-tools.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-tools) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-tools.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-tools) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Tools](https://eslint.santi020k.com/tooling/tools) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-tools +``` + +## Usage + +Enable only the features your project uses: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + tools: ['cspell', 'prettier'] +}) +``` + +Supported features can also be auto-detected from the project. Installing this +package makes its tools available to the Basic composer; it does not enable +every feature in the package. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Tools](https://eslint.santi020k.com/tooling/tools) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/tools/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/tools/package.json b/packages/tools/package.json index 933bb2d2..05523351 100644 --- a/packages/tools/package.json +++ b/packages/tools/package.json @@ -70,5 +70,8 @@ "directory": "packages/tools" }, "homepage": "https://eslint.santi020k.com/tooling/tools", + "bugs": { + "url": "https://github.com/santi020k/eslint-config-basic/issues" + }, "license": "MIT" } diff --git a/packages/typescript/README.md b/packages/typescript/README.md index 999d8c8b..947d8f8f 100644 --- a/packages/typescript/README.md +++ b/packages/typescript/README.md @@ -2,10 +2,41 @@ Type-aware rules, project-service usage, and virtual file behavior. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-typescript.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-typescript) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-typescript.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-typescript) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [TypeScript guide](https://eslint.santi020k.com/frameworks/typescript) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint typescript @santi020k/eslint-config-typescript +``` + +## Direct usage + +Most projects should use `@santi020k/eslint-config-basic`, which enables TypeScript +automatically. For custom flat-config composition, import the TypeScript array +directly: + +```js +import typescript from '@santi020k/eslint-config-typescript' + +export default [...typescript] +``` + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [TypeScript guide](https://eslint.santi020k.com/frameworks/typescript) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/typescript/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/vite/README.md b/packages/vite/README.md index 8e06ee26..affe67ae 100644 --- a/packages/vite/README.md +++ b/packages/vite/README.md @@ -2,10 +2,44 @@ Vite support for browser apps and Vite config files. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-vite.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-vite) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-vite.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-vite) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Vite guide](https://eslint.santi020k.com/frameworks/vite) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-vite +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { vite: true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Vite guide](https://eslint.santi020k.com/frameworks/vite) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/vite/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/packages/vue/README.md b/packages/vue/README.md index 7a3016b7..90427f72 100644 --- a/packages/vue/README.md +++ b/packages/vue/README.md @@ -2,10 +2,44 @@ Vue single-file component support for the shared toolchain. -This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo. +[![npm version](https://img.shields.io/npm/v/@santi020k/eslint-config-vue.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-vue) +[![npm downloads](https://img.shields.io/npm/dm/@santi020k/eslint-config-vue.svg)](https://www.npmjs.com/package/@santi020k/eslint-config-vue) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE) -- Docs: [Vue guide](https://eslint.santi020k.com/frameworks/vue) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## Installation -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +```sh +npm install -D eslint @santi020k/eslint-config-basic @santi020k/eslint-config-vue +``` + +## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +```js +import { defineConfig } from '@santi020k/eslint-config-basic' + +export default await defineConfig({ + frameworks: { vue: true } +}) +``` + +Use `defineConfig()` with no options when auto-detection is enough. + +## Compatibility + +- Node.js: `>=22.19.0` +- ESLint: `^10.0.0` +- ESM and ESLint flat config + +## Documentation + +- [Vue guide](https://eslint.santi020k.com/frameworks/vue) +- [Configuration guide](https://eslint.santi020k.com/guide/configuration/) +- [Package family and repository](https://github.com/santi020k/eslint-config-basic) +- [Changelog](https://github.com/santi020k/eslint-config-basic/blob/main/packages/vue/CHANGELOG.md) + +## License + +MIT © [santi020k](https://santi020k.com). See the [license](https://github.com/santi020k/eslint-config-basic/blob/main/LICENSE). diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9f0a5ee7..df729c58 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -298,9 +298,6 @@ catalogs: graphql: specifier: ^16.11.0 version: 16.14.2 - husky: - specifier: ^9.1.7 - version: 9.1.7 knip: specifier: ^6.37.0 version: 6.37.0 @@ -448,9 +445,6 @@ importers: eslint: specifier: 'catalog:' version: 10.11.0(jiti@2.7.0)(supports-color@8.1.1) - husky: - specifier: 'catalog:' - version: 9.1.7 knip: specifier: 'catalog:' version: 6.37.0 @@ -509,6 +503,9 @@ importers: '@resvg/resvg-js': specifier: 'catalog:' version: 2.6.2 + '@santi020k/og': + specifier: 1.1.1 + version: 1.1.1(@types/node@26.6.2) astro: specifier: 'catalog:' version: 7.3.4(@astrojs/markdown-remark@7.3.1)(@emnapi/core@1.11.3)(@emnapi/runtime@1.11.3)(@types/node@26.6.2)(aws4fetch@1.0.20)(db0@0.3.4(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(drizzle-orm@0.45.3(@cloudflare/workers-types@5.20260922.1)(@electric-sql/pglite@0.4.3)(@libsql/client@0.17.4)(@opentelemetry/api@1.9.1)(@prisma/client@7.10.0(@typescript/typescript6@6.0.2)(prisma@7.10.0(@types/node@26.6.2)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(@typescript/typescript6@6.0.2)(magicast@0.5.5)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)))(@types/pg@8.6.1)(mysql2@3.24.4(@types/node@26.6.2))(postgres@3.4.7)(prisma@7.10.0(@types/node@26.6.2)(@types/react-dom@19.3.0(@types/react@19.3.0))(@types/react@19.3.0)(@typescript/typescript6@6.0.2)(magicast@0.5.5)(react-dom@19.3.0(react@19.3.0))(react@19.3.0)))(mysql2@3.24.4(@types/node@26.6.2)))(ioredis@5.11.1)(jiti@2.7.0)(terser@5.51.2)(yaml@2.9.1) @@ -4120,6 +4117,9 @@ packages: '@floating-ui/utils@0.2.12': resolution: {integrity: sha512-HpCo8tmWzLVad5s2d19EhAz5zqrrQ6s69qd6moPMQvkOuSwDT1YgRfWSVuc4ennqrgv3OHppiOGMQ7oC13yIww==} + '@fontsource-variable/inter@5.3.0': + resolution: {integrity: sha512-OupL48va4JNofb97w6NYeF9S7W/kHNKM0Er8Dem5nqi4jeOLrVJDoE8tZEpnMJmtkvNbB1EIPPwHcdkF6b1oUA==} + '@formatjs/ecma402-abstract@2.3.6': resolution: {integrity: sha512-HJnTFeRM2kVFVr5gr5kH1XP6K0JcJtE7Lzvtr3FS/so5f1kpsqqqxy5JF+FRaO6H2qmcMfAUIox7AJteieRtVw==} @@ -6436,6 +6436,11 @@ packages: engines: {node: '>=22.12.0'} hasBin: true + '@santi020k/og@1.1.1': + resolution: {integrity: sha512-9v+5oC6qgmNQb9S5gR1xQeB9DqaXDRTxrZ7Miakdc4kf1IXOEKCkO4MmZzyBN+INuEwnfU5/ViWu5uyZzZqCMw==} + engines: {node: '>=22.18.0'} + hasBin: true + '@santi020k/theme-core@1.2.0': resolution: {integrity: sha512-l5mJnF/ub6cJmft6Ef1OmWDzxNzBeic3XnlBFvyPoBkns5WdiUxbk8x7nUXvOwNuhp+oRH5SSd6abzjpUU5ppA==} engines: {node: '>=22.18.0'} @@ -8291,6 +8296,9 @@ packages: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} engines: {node: '>=8'} + brotli@1.3.3: + resolution: {integrity: sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==} + browserslist@4.29.0: resolution: {integrity: sha512-3GSvyjvDI4Dur1Meg2BekJquu5uF+9R9a1+5M1Mde192eZoXbeXjzgOsgqPS2V8D5wrrip0gR5Hf/GhWQ9ZzaA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -8550,6 +8558,10 @@ packages: resolution: {integrity: sha512-ujdnoq2Kxb8s3ItNBtnYeXdm07FcU0u8ARAT1lQ2YdMwQC+cdiXX8KoqMVuglztILivceTtp4ivqGSmEmhBUJw==} engines: {node: '>=12'} + clone@2.1.2: + resolution: {integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==} + engines: {node: '>=0.8'} + clsx@2.1.1: resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} engines: {node: '>=6'} @@ -9302,6 +9314,9 @@ packages: devtools-protocol@0.0.1687809: resolution: {integrity: sha512-t7kSb+UKYdyxcmqy98U2P86ne6rCve3DIJ4+lp54i/hhClgFuG35JrLj23rO14Jw3sWDsp7i+22QhNU0+/qk8g==} + dfa@1.2.0: + resolution: {integrity: sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==} + diff-match-patch-es@2.0.1: resolution: {integrity: sha512-+Sl+/H47ArQiKPp8fA307M1RwyCwFqNhggw0mAEFherLNL/J2ZUFZsnELj65Cir91VfVPx3jlNzeKBdr+QAFTw==} @@ -10611,6 +10626,9 @@ packages: fontace@0.4.1: resolution: {integrity: sha512-lDMvbAzSnHmbYMTEld5qdtvNH2/pWpICOqpean9IgC7vUbUJc3k+k5Dokp85CegamqQpFbXf0rAVkbzpyTA8aw==} + fontkit@2.0.4: + resolution: {integrity: sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==} + fontkitten@1.0.3: resolution: {integrity: sha512-Wp1zXWPVUPBmfoa3Cqc9ctaKuzKAV6uLstRqlR56kSjplf5uAce+qeyYym7F+PHbGTk+tCEdkCW6RD7DX/gBZw==} engines: {node: '>=20'} @@ -11120,11 +11138,6 @@ packages: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} engines: {node: '>=16.17.0'} - husky@9.1.7: - resolution: {integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==} - engines: {node: '>=18'} - hasBin: true - i18next@26.4.2: resolution: {integrity: sha512-RX+R0VLg13IbvRuJSxnqykUFS9vQZTl8wYpWPCIUDWVrSGjsQywB5Y+pjzrkboxGAuYfJZVH1InFTdgBdxq6ug==} peerDependencies: @@ -13786,6 +13799,9 @@ packages: resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} engines: {node: '>=18'} + restructure@3.0.2: + resolution: {integrity: sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==} + ret@0.5.0: resolution: {integrity: sha512-I1XxrZSQ+oErkRR4jYbAyEEu2I0avBvvMM5JN+6EBprOGRCs63ENqZ3vjavq8fBw2+62G5LF5XelKwuJpcvcxw==} engines: {node: '>=10'} @@ -13910,6 +13926,9 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + satori-html@0.3.2: + resolution: {integrity: sha512-wjTh14iqADFKDK80e51/98MplTGfxz2RmIzh0GqShlf4a67+BooLywF17TvJPD6phO0Hxm7Mf1N5LtRYvdkYRA==} + satori@0.33.5: resolution: {integrity: sha512-PNW6ktrQ8SM6kk7u4aOuTkkUewkzyTOrj+QeEzXSsnNMAdff4ire9CAqIz8+4C3rCiBtK8QTELv52AZEd1PbRw==} engines: {node: '>=16'} @@ -15020,6 +15039,9 @@ packages: resolution: {integrity: sha512-yLSH4py7oFH3oG/9K+XWrz1pSi3dfUrWEnInbxMfArOfc1+33BlGPQtLsOYwvdMy11AwUBetYuaRxSPqgkq+8g==} engines: {node: '>=4'} + unicode-properties@1.4.1: + resolution: {integrity: sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==} + unicode-trie@2.0.0: resolution: {integrity: sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==} @@ -17837,6 +17859,8 @@ snapshots: '@floating-ui/utils@0.2.12': {} + '@fontsource-variable/inter@5.3.0': {} + '@formatjs/ecma402-abstract@2.3.6': dependencies: '@formatjs/fast-memoize': 2.2.7 @@ -20152,6 +20176,18 @@ snapshots: '@santi020k/lumen-core': 2.1.0 semver: 7.8.5 + '@santi020k/og@1.1.1(@types/node@26.6.2)': + dependencies: + '@fontsource-variable/inter': 5.3.0 + '@resvg/resvg-js': 2.6.2 + fontkit: 2.0.4 + satori: 0.33.5 + satori-html: 0.3.2 + sharp: 0.35.4(@types/node@26.6.2) + yaml: 2.9.1 + transitivePeerDependencies: + - '@types/node' + '@santi020k/theme-core@1.2.0': {} '@santi020k/theme@1.3.0': @@ -22767,6 +22803,10 @@ snapshots: dependencies: fill-range: 7.1.1 + brotli@1.3.3: + dependencies: + base64-js: 1.5.1 + browserslist@4.29.0: dependencies: baseline-browser-mapping: 2.11.25 @@ -23063,6 +23103,8 @@ snapshots: dependencies: is-regexp: 3.1.0 + clone@2.1.2: {} + clsx@2.1.1: {} cluster-key-slot@1.1.1: {} @@ -23897,6 +23939,8 @@ snapshots: devtools-protocol@0.0.1687809: {} + dfa@1.2.0: {} + diff-match-patch-es@2.0.1: {} diff-sequences@29.6.3: {} @@ -25661,6 +25705,18 @@ snapshots: dependencies: fontkitten: 1.0.3 + fontkit@2.0.4: + dependencies: + '@swc/helpers': 0.5.23 + brotli: 1.3.3 + clone: 2.1.2 + dfa: 1.2.0 + fast-deep-equal: 3.1.3 + restructure: 3.0.2 + tiny-inflate: 1.0.3 + unicode-properties: 1.4.1 + unicode-trie: 2.0.0 + fontkitten@1.0.3: dependencies: tiny-inflate: 1.0.3 @@ -26293,8 +26349,6 @@ snapshots: human-signals@5.0.0: {} - husky@9.1.7: {} - i18next@26.4.2(@typescript/typescript6@6.0.2): optionalDependencies: typescript: '@typescript/typescript6@6.0.2' @@ -29830,6 +29884,8 @@ snapshots: onetime: 7.0.0 signal-exit: 4.1.0 + restructure@3.0.2: {} + ret@0.5.0: {} retext-latin@4.0.0: @@ -29998,6 +30054,10 @@ snapshots: safer-buffer@2.1.2: {} + satori-html@0.3.2: + dependencies: + ultrahtml: 1.7.0 + satori@0.33.5: dependencies: '@shuding/opentype.js': 1.4.0-beta.0 @@ -31260,6 +31320,11 @@ snapshots: unicode-emoji-modifier-base@1.0.0: {} + unicode-properties@1.4.1: + dependencies: + base64-js: 1.5.1 + unicode-trie: 2.0.0 + unicode-trie@2.0.0: dependencies: pako: 0.2.9 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 6e9fc075..9a71a424 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -143,7 +143,9 @@ catalogs: allowBuilds: '@prisma/engines': true '@scarf/scarf': false - cypress: true + # This workspace only type-checks and lints the Cypress playground. Avoid + # downloading the unused desktop binary during every clean install. + cypress: false esbuild: true msgpackr-extract: false prisma: false @@ -173,6 +175,7 @@ minimumReleaseAgeExclude: - '@nestjs/core@12.1.0' - '@nestjs/swagger@12.0.2' - dompurify@3.4.16 + - '@santi020k/og' overrides: deepmerge-ts@<8.0.0: 8.0.0 diff --git a/quality.yml b/quality.yml new file mode 100644 index 00000000..82d00675 --- /dev/null +++ b/quality.yml @@ -0,0 +1,51 @@ +# yaml-language-server: $schema=https://quality-cli.santi020k.chatgpt.site/quality.schema.json +# quality.yml — one code-quality workflow for this repository +# Tools are auto-detected; entries below make the selected policy explicit. +# A canonical repository script replaces analyzer checks when one is detected, +# while the analyzers remain available to `quality format` and `quality fix`. +version: 1 +output: pretty +baseline: .quality-baseline.json +tools: + astro-check: + enabled: true + check: false + required: true + cspell: + enabled: true + check: false + required: true + eslint: + enabled: true + check: false + required: true + knip: + enabled: true + check: false + required: true +tasks: + repository-check: + name: Repository check (pre-push) + command: pnpm + args: + - run + - pre-push + required: true + parser: generic +hooks: + commit-msg: + steps: + - name: Validate commit message + command: pnpm + args: [exec, commitprompt, validate, --input] + pass_hook_args: true + pre-commit: + steps: + - name: Check staged files + command: pnpm + args: [run, pre-commit] + pre-push: + steps: + - name: Run pre-push gate + command: pnpm + args: [run, pre-push] diff --git a/renovate.json b/renovate.json index 6b9c5212..619ea5e9 100644 --- a/renovate.json +++ b/renovate.json @@ -53,7 +53,7 @@ }, { "description": "Git hooks and commit tooling", - "matchPackageNames": ["husky", "lint-staged"], + "matchPackageNames": ["lint-staged"], "groupName": "git hooks", "groupSlug": "git-hooks" }, diff --git a/scripts/generate-package-readmes.mjs b/scripts/generate-package-readmes.mjs index 255e0087..0baa568a 100644 --- a/scripts/generate-package-readmes.mjs +++ b/scripts/generate-package-readmes.mjs @@ -1,7 +1,143 @@ -import { writeFileSync } from 'node:fs' +import { readFileSync, writeFileSync } from 'node:fs' import { join } from 'node:path' -import { docsOrigin, packageDocs } from './docs-packages.mjs' +import { docsOrigin, packageDocs, repositoryOrigin, websiteOrigin } from './docs-packages.mjs' + +const basicPackageName = '@santi020k/eslint-config-basic' +const reactPackageName = '@santi020k/eslint-config-react' +const vuePackageName = '@santi020k/eslint-config-vue' + +const impliedFrameworkPackages = { + '@santi020k/eslint-config-expo': [reactPackageName], + '@santi020k/eslint-config-next': [reactPackageName], + '@santi020k/eslint-config-nuxt': [vuePackageName], + '@santi020k/eslint-config-react-router': [reactPackageName], + '@santi020k/eslint-config-slidev': [vuePackageName], + '@santi020k/eslint-config-tanstack-start': [reactPackageName] +} + +const categoryExamples = { + extensions: ['security', 'unicorn'], + formats: ['jsonc', 'markdown'], + libraries: ['tailwind', 'zod'], + testing: ['playwright', 'vitest'], + tools: ['cspell', 'prettier'] +} + +const generateBadges = packageName => `[![npm version](https://img.shields.io/npm/v/${packageName}.svg)](https://www.npmjs.com/package/${packageName}) +[![npm downloads](https://img.shields.io/npm/dm/${packageName}.svg)](https://www.npmjs.com/package/${packageName}) +[![license](https://img.shields.io/badge/license-MIT-blue.svg)](${repositoryOrigin}/blob/main/LICENSE)` + +const resolveInstallPackages = packageName => { + if (packageName === '@santi020k/eslint-config-core') return `eslint ${packageName}` + + if (packageName === '@santi020k/eslint-config-typescript') return `eslint typescript ${packageName}` + + const impliedPackages = impliedFrameworkPackages[packageName] ?? [] + + return `eslint ${basicPackageName} ${packageName} ${impliedPackages.join(' ')}`.trim() +} + +const generateInstall = packageName => { + const packages = resolveInstallPackages(packageName) + + return `## Installation + +\`\`\`sh +npm install -D ${packages} +\`\`\`` +} + +const generateComposerUsage = pkg => { + const slug = pkg.packagePath.replace('packages/', '') + const examples = categoryExamples[slug] + const frameworkKey = slug.includes('-') ? `'${slug}'` : slug + + if (examples) { + return `## Usage + +Enable only the features your project uses: + +\`\`\`js +import { defineConfig } from '${basicPackageName}' + +export default await defineConfig({ + ${slug}: [${examples.map(value => `'${value}'`).join(', ')}] +}) +\`\`\` + +Supported features can also be auto-detected from the project. Installing this +package makes its ${slug} available to the Basic composer; it does not enable +every feature in the package.` + } + + return `## Usage + +The Basic composer can detect this framework from the project, or you can make +the choice explicit: + +\`\`\`js +import { defineConfig } from '${basicPackageName}' + +export default await defineConfig({ + frameworks: { ${frameworkKey}: true } +}) +\`\`\` + +Use \`defineConfig()\` with no options when auto-detection is enough.` +} + +const generateFoundationUsage = pkg => { + if (pkg.packageName === '@santi020k/eslint-config-core') { + return `## Direct usage + +Most projects should use ${'`'}${basicPackageName}${'`'}, which includes this package. +For custom flat-config composition, import the core array directly: + +\`\`\`js +import { coreConfig } from '@santi020k/eslint-config-core' + +export default [...coreConfig] +\`\`\`` + } + + return `## Direct usage + +Most projects should use ${'`'}${basicPackageName}${'`'}, which enables TypeScript +automatically. For custom flat-config composition, import the TypeScript array +directly: + +\`\`\`js +import typescript from '@santi020k/eslint-config-typescript' + +export default [...typescript] +\`\`\`` +} + +const generateCompatibility = packagePath => { + const manifestPath = join(process.cwd(), packagePath, 'package.json') + const manifest = JSON.parse(readFileSync(manifestPath, 'utf8')) + const eslintRange = manifest.peerDependencies?.eslint ?? '^10.0.0' + + return `## Compatibility + +- Node.js: \`${manifest.engines.node}\` +- ESLint: \`${eslintRange}\` +- ESM and ESLint flat config` +} + +const generateInstallAndUsage = (pkg, isCompatibilityPackage, isFoundation) => { + if (isCompatibilityPackage) { + return `## Recommended replacement + +See the [migration guide](${docsOrigin}/guide/migration-v2-to-v3/) for the +copy-paste installation and configuration steps for your project.` + } + + const usage = isFoundation ? generateFoundationUsage(pkg) : generateComposerUsage(pkg) + + return `${generateInstall(pkg.packageName)}\n\n${usage}` +} /** * Generate a standard README.md content for a package. @@ -9,24 +145,44 @@ import { docsOrigin, packageDocs } from './docs-packages.mjs' const generateReadmeContent = pkg => { const { description, docsPath, packageName, readmeNotice, title } = pkg - const monorepoLine = - 'This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo.' + if (packageName === basicPackageName) { + return readFileSync(join(process.cwd(), 'README.md'), 'utf8') + .replaceAll('(LICENSE)', `(${repositoryOrigin}/blob/main/LICENSE)`) + } const notice = readmeNotice?.length ? `> [!WARNING]\n${readmeNotice.map(line => `> ${line}`).join('\n')}\n\n` : '' + const isFoundation = ['@santi020k/eslint-config-core', '@santi020k/eslint-config-typescript'].includes(packageName) + + const isCompatibilityPackage = [ + '@santi020k/eslint-config-integrations', + '@santi020k/eslint-config-lite' + ].includes(packageName) + + const installAndUsage = generateInstallAndUsage(pkg, isCompatibilityPackage, isFoundation) + return `# ${packageName} ${notice}${description} -${monorepoLine} +${generateBadges(packageName)} + +${installAndUsage} + +${generateCompatibility(pkg.packagePath)} + +## Documentation + +- [${title}](${docsOrigin}${docsPath}) +- [Configuration guide](${docsOrigin}/guide/configuration/) +- [Package family and repository](${repositoryOrigin}) +- [Changelog](${repositoryOrigin}/blob/main/${pkg.packagePath}/CHANGELOG.md) -- Docs: [${title}](${docsOrigin}${docsPath}) -- Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic) -- Author: [santi020k](https://santi020k.com) +## License -The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication. +MIT © [santi020k](${websiteOrigin}). See the [license](${repositoryOrigin}/blob/main/LICENSE). ` }