{"_id":"@tcy/eslint-rules","_rev":"33-476899cabc97ae20e41896222db3e6c6","name":"@tcy/eslint-rules","dist-tags":{"latest":"1.10.0","beta":"1.10.0-beta.2"},"versions":{"1.0.0":{"name":"@tcy/eslint-rules","version":"1.0.0","author":"","license":"ISC","_id":"@tcy/eslint-rules@1.0.0","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"680d65f39c29da551a485acd3362a56d11f3bdd7","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.0.0.tgz","fileCount":9,"integrity":"sha512-+ciRW3+H1D0biIlliqH+w7f8cMfShuIiF+aGXDe9OcC3Cz20wkAIqhHpP36gKsqgce5gm4GRX9c5S1bVziVk5Q==","signatures":[{"sig":"MEUCIFAO0y7P70H8L7C+/d7xp65wuZjoAbU/EYSuc2XM2WtmAiEA5xkwvgxvkNuVLcYmeiwxL5GodXXUj5oXDPHsd3aMupA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":15548},"main":"src/index.js","type":"module","gitHead":"a09124a0bc99ca3e7ad415462bf3e6e46cfc4ad5","scripts":{},"_npmUser":{"name":"tcy","email":"thomas@castelly.fr"},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.3.0","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.0.0_1764606796991_0.7822524913475759","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@tcy/eslint-rules","version":"1.0.1","author":"","license":"ISC","_id":"@tcy/eslint-rules@1.0.1","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"d05531c0c7319910b578506c8ec3375dd6035d50","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.0.1.tgz","fileCount":9,"integrity":"sha512-VDvIOWVjDVpw35PeYzd+oxTZ7pgfoCEpDOwxklsfWyNYHX32o8ZR5YZLBHZQX9eTBpUSmnIClz9oYAkbKBEouw==","signatures":[{"sig":"MEYCIQCy+Y+kL6Md8GW8/CohAHJ6KMnaiII1481vc7lNDY/zPQIhAIMCb8cPqNKOCxdA/Z4Cr7ZFuoMbOoRl/eG8pxjkkO0j","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15548},"main":"src/index.js","type":"module","gitHead":"24b5c2deb000b3449f1e5c5fea179e7881548a6b","scripts":{},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.6.4","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.0.1_1764606981359_0.31884767833048455","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@tcy/eslint-rules","version":"1.0.2","author":"","license":"ISC","_id":"@tcy/eslint-rules@1.0.2","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"2711b7d38316b4dccdfccea791a86a4d85e5f92c","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.0.2.tgz","fileCount":9,"integrity":"sha512-UaVDfi+urFeUNbm18WVFYwEAVUjoNup03ot29yamEgn6kntLV1AIZdYlX0PCP1aqAuO6en7rIv8t4cAEIF4tjQ==","signatures":[{"sig":"MEQCIF41UUXruQXhz33VpPQnJUNJc0bS8fmWbIboo5klk031AiAMoHD9N97mQbHC4vpNVDxbCTV3KwaDtxvDOADVpfq2qg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15535},"main":"src/index.js","type":"module","gitHead":"e2a7af53ecb13f04137c1921f5fc309b0cc3d4ae","scripts":{},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.6.4","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.0.2_1764607635649_0.6345372784533883","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@tcy/eslint-rules","version":"1.0.3","author":"","license":"ISC","_id":"@tcy/eslint-rules@1.0.3","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"00e89fe37c3eb5a98497d9992524eb9ac5f347b0","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.0.3.tgz","fileCount":9,"integrity":"sha512-MgPl1SwJMka2lNgCQlQwJIL4siqlG5UbZSGMyhAvyp/1iuRzjpU+P8l+M3q/UXCa8rRIOYShFpbIECk+egVquQ==","signatures":[{"sig":"MEQCIB3PD7ZMApF49qYWWI9u19w8YJXdZhlZD2jYwHyNDExsAiA5aOL3UHXl3cqeTYqhUOlFoirXNr8hfmUdVC54upQynA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":15521},"main":"src/index.js","type":"module","gitHead":"f5344342402ee8cfe9e6a57b31761f600c0e31a1","scripts":{},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.6.4","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.0.3_1764608000664_0.1521475997190862","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@tcy/eslint-rules","version":"1.0.5","author":"","license":"ISC","_id":"@tcy/eslint-rules@1.0.5","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"c93c7528a33e65292363a38068b2b1e7d5ff21bc","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.0.5.tgz","fileCount":16,"integrity":"sha512-C+kYGcYm1PMi0Uh1TC0Zv1BOo42tV/RgiZmxAxFu/mjZHJIk86AdM4CzsgT5zJRjqaO3g3E+K2tAXjJK3M6+ag==","signatures":[{"sig":"MEUCIQD1GA4LLT/mJ8Ccx7h+SBPm644DfYKsAlV23Q0NFLGkdAIgQ9kJwOc+94ko973pS26JzWsjL8qsdZCPTCI9eCOSACM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":21031},"main":"src/index.js","type":"module","types":"dist/index.d.ts","gitHead":"554e1c9e284cf3b9e1910fb80c8f56adb1f9940e","scripts":{"clean":"rimraf dist","build:decl":"tsc","prepublishOnly":"npm run clean && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.6.4","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"rimraf":"^6.1.2","typescript":"^5.9.3"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.0.5_1764609521441_0.18763884167433886","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@tcy/eslint-rules","version":"1.0.6","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.0.6","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"0c1a7872fe922ce2d65de0d83bf1cb9df42a7b55","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.0.6.tgz","fileCount":36,"integrity":"sha512-G6P4sk1vjA1Xjz4biDAeRycbZI3Ux7JXJESkJ1ia5d+bYy8Odg8gIEDYKLKmbsPNzyQftNRQvtCLWvESaXhkXQ==","signatures":[{"sig":"MEQCIH6KELc4HXj4gqP1LydKr5CX1KGeSrz16jjOCXO/0xCpAiBznz4FcRp33yfp3VZ3r+8dN/fL6hqjVamk1ZkZzhpDSg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":197544},"main":"src/index.js","type":"module","types":"dist/index.d.ts","gitHead":"cadde83337dbb2fa7d3cbd8768594a2e18d5ba38","scripts":{"test":"jest","clean":"rimraf dist","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.6.4","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","rimraf":"^6.1.2","babel-jest":"^30.2.0","typescript":"^5.9.3","@babel/core":"^7.28.5","@types/jest":"^30.0.0","@babel/preset-env":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.0.6_1764610977126_0.8620536778759047","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@tcy/eslint-rules","version":"1.0.7","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.0.7","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"2461fc9a04c31b28632976bdd86eb98af13ce2b9","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.0.7.tgz","fileCount":36,"integrity":"sha512-J4rZ6ZjEVMp2Vn4NuUp8Pqj+f0eGPk7KBN/B3r4MWXn5E1aH2Mm11u1vXZOXzw7pr4zxRW58apudr1qlF2NWbw==","signatures":[{"sig":"MEQCIDvSlje4D9YdS3mQBJwFVhEComuChxR+BX25cI1tWAh6AiBZg4EHvvZGYJ/HKejjA4NNJHMU4X55B+y/DLd46INT+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":198864},"main":"src/index.js","type":"module","types":"dist/index.d.ts","gitHead":"d49f7c0830cea09ee9344b59376ac2f907011827","scripts":{"test":"jest","clean":"rimraf dist","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.6.4","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.11.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","rimraf":"^6.1.2","babel-jest":"^30.2.0","typescript":"^5.9.3","@babel/core":"^7.28.5","@types/jest":"^30.0.0","@babel/preset-env":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.0.7_1764933271797_0.9546817389933262","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@tcy/eslint-rules","version":"1.1.0","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.1.0","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"7ddb4fe2681d8af3b8acd91def09ca6a095e0fd5","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.1.0.tgz","fileCount":39,"integrity":"sha512-R3Q9wtFYnDNORd+vLNAKks7KlbHV3aWaoGlmxsrT8a9McIm4Irdu7hw+NwrGbXCVKfVoMzg/6nqXtv3nbehzyQ==","signatures":[{"sig":"MEQCIEsVEf+sDzTzAoIsRKSGyJtN0z4KAzhxyA33wFaYtygBAiB75Fhp3PKwMl5JZ2uKOsBL6CPUc1ObqszEv6hHUVmC9w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":223111},"main":"src/index.js","type":"module","types":"dist/index.d.ts","gitHead":"d4f7fe111277228dffe87df585e2dd3bb01ae0ef","scripts":{"test":"jest","clean":"rimraf dist","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.7.0","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","rimraf":"^6.1.2","babel-jest":"^30.2.0","typescript":"^5.9.3","@babel/core":"^7.28.5","@types/jest":"^30.0.0","@babel/preset-env":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.1.0_1766008119735_0.9003517479645327","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@tcy/eslint-rules","version":"1.1.1","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.1.1","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"e74ad6378c3c9e7f76a44c6430a74acf4283eb34","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.1.1.tgz","fileCount":39,"integrity":"sha512-j7RHmZ+Y6XExPxC7h2bwiR/QBDIs+Xcbp8M5ZpFVONUEBVhVowT0eUhYuU9Zfwpp1MZUogqN73W+VByPMSSc/Q==","signatures":[{"sig":"MEYCIQDMDXlkBNxnNlDZVRqotG2sBRVQmPZ59Ed/zH0QsnbstgIhAJjdnRcis8E28vlc5QT1BC+sPMvWN6biCxOHvo+p7L8v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":223111},"main":"src/index.js","type":"module","types":"dist/index.d.ts","gitHead":"cfff42220e321d5e1ccc2c8e71c5d60ae5552917","scripts":{"test":"jest","clean":"rimraf dist","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.7.0","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.12.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","rimraf":"^6.1.2","babel-jest":"^30.2.0","typescript":"^5.9.3","@babel/core":"^7.28.5","@types/jest":"^30.0.0","@babel/preset-env":"^7.28.5"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.1.1_1767954141267_0.11678135903927434","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@tcy/eslint-rules","version":"1.2.0","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.2.0","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"c37f1559e6578142aba49951829a24764f069fa7","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.2.0.tgz","fileCount":42,"integrity":"sha512-DUNYpCc24B7y0cC+v4sP4SSc8qgMjktYEYiELvOVf0/eSfcVijcy4KYJcHvnbRpkkgt/o7FH/i+oCcCxjFA49g==","signatures":[{"sig":"MEUCIQCE/wsicqgJOLsuGGBjAvEfVX7MYuN7TiZhlhpRk6BpGAIgWqVXWm19SBLgBLTlwsjqKlO7Hb9c9tPokBgNEEql6/k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":248145},"main":"src/index.js","type":"module","types":"dist/index.d.ts","gitHead":"26aacac7f7946cb16e2e82839f8c0f2b94166f7a","scripts":{"test":"jest","clean":"rimraf dist","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.8.0","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","rimraf":"^6.1.2","babel-jest":"^30.2.0","typescript":"^5.9.3","@babel/core":"^7.28.6","@types/jest":"^30.0.0","@babel/preset-env":"^7.28.6"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.2.0_1769456178274_0.6321005869931531","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@tcy/eslint-rules","version":"1.3.0","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.3.0","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"0248b81b14bfdbcef3d48bfecda3c875706176ca","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.3.0.tgz","fileCount":48,"integrity":"sha512-4s7I6vGAjvNw7gwpQNtNPJ1MYofzzx+D6USRGXEKc6vg2MNTEuNbGNRsNaySTGBM7CEUlg7GI/pdzQsMLTLIhQ==","signatures":[{"sig":"MEQCIA3f59kd5yFEIhRdCGhcSbM5NUTQehI5ySJM+aD/NUgKAiBGeHchxbTW2lQkTuTMqJ8OdtePQZQAasRyeSKvhKUhDw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":295645},"main":"src/index.js","type":"module","types":"dist/index.d.ts","gitHead":"1660d4a8abe292cc51456f56f32a930a8ca88b76","scripts":{"test":"jest","clean":"rimraf dist","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.8.0","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","rimraf":"^6.1.2","babel-jest":"^30.2.0","typescript":"^5.9.3","@babel/core":"^7.28.6","@types/jest":"^30.0.0","@babel/preset-env":"^7.28.6"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.3.0_1769622414584_0.8953118667721653","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@tcy/eslint-rules","version":"1.3.1","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.3.1","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"b54f7a994010f8f7b5158c895c2dc6e80c1d06fc","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.3.1.tgz","fileCount":48,"integrity":"sha512-aB1PTlPsb38DQWjAJkZavW8wvWEkTHdgd3ZAo2tpj7O8uB2RfW6fmB2641G8VlXalgvtMpVfysOoS8xpCvfdIg==","signatures":[{"sig":"MEUCIHwaMuokEDemEqFgROKsmqPV5uxmZqOWZDX2W4dtga/QAiEA3umQNJV61V33Jawsztp517d8oZU3xgzLOYdFdyJ06wo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":295647},"main":"src/index.js","type":"module","types":"dist/index.d.ts","gitHead":"dbb935403b4d197e82745a0507fe6cad182b7394","scripts":{"test":"jest","clean":"rimraf dist","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.11.0","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.14.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.2.0","rimraf":"^6.1.3","babel-jest":"^30.2.0","typescript":"^5.9.3","@babel/core":"^7.29.0","@types/jest":"^30.0.0","@babel/preset-env":"^7.29.0"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.3.1_1772789553497_0.23657541495809764","host":"s3://npm-registry-packages-npm-production"}},"1.4.1":{"name":"@tcy/eslint-rules","version":"1.4.1","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.4.1","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"e7b502bd999c073df91cede2cc35b5c3c210dcbe","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.4.1.tgz","fileCount":48,"integrity":"sha512-FQtv33kNsUf6OER92rMk2N35mFvG5/rpfZncDqDdrjgqii1Cy5CPpdBcsiReTHV9PmH3PTLxpyMHkPAh5Nci3Q==","signatures":[{"sig":"MEUCIQDThStanUFAhEdmJqONxG0sp7nlZ8wShHEor44bB4jkrwIgH/5j8vXv/o8HT1ZAKHrQnJ+h/0jGPaZCBZJTx5eQEVg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":307956},"main":"src/index.js","type":"module","types":"dist/index.d.ts","gitHead":"118fb146a524d2be1541bcd8c6ffb5d5db9a8ef1","scripts":{"test":"jest","clean":"rimraf dist","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"deprecated":"Experimental version retracted. Use 1.3.1","repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.12.1","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","rimraf":"^6.1.3","babel-jest":"^30.3.0","typescript":"^6.0.2","@babel/core":"^7.29.0","@types/jest":"^30.0.0","@types/node":"^25.6.0","@babel/preset-env":"^7.29.2"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.4.1_1776153189561_0.5252186704573119","host":"s3://npm-registry-packages-npm-production"}},"1.3.3":{"name":"@tcy/eslint-rules","version":"1.3.3","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.3.3","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"7637ffa0cad6632c4b947f15f876dbe121b5b19e","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.3.3.tgz","fileCount":48,"integrity":"sha512-CEYnfb6z89u0vTT8VD5SlXCWfW+94GFjOgdxA0TR3Xv836BeEiiLTsXc8hamfAI8K0KUfVlQ1nwE7v4M06XLlg==","signatures":[{"sig":"MEQCIBdhFr8fNjyhOe9ADcc84bPeTpgMqWb35Zfy0JYxH18cAiB48E5evVmahf7lfbGL7dLQxHGMIa8KIFJqGwMEvbQw8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.3.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":295727},"main":"src/index.js","type":"module","types":"dist/index.d.ts","gitHead":"d4230ab8ae1fe40546e82a54e7d8a78a618e9150","scripts":{"test":"jest","clean":"rimraf dist","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.12.1","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","rimraf":"^6.1.3","babel-jest":"^30.3.0","typescript":"^6.0.2","@babel/core":"^7.29.0","@types/jest":"^30.0.0","@types/node":"^25.6.0","@babel/preset-env":"^7.29.2"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.3.3_1776157815323_0.9366247328577564","host":"s3://npm-registry-packages-npm-production"}},"1.4.2":{"name":"@tcy/eslint-rules","version":"1.4.2","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.4.2","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"d17e85c9415755a152e1776bea2998cb6bb3003c","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.4.2.tgz","fileCount":48,"integrity":"sha512-D2ABtC+CDaFVyGsfO640g5n8JpDkVnjoUCy5C4en1cpnkNiUjBoHPnHMzid6KSy9wINcUrZJQKjxg1Az3gj28g==","signatures":[{"sig":"MEYCIQCfctn5HnOMvv6Px4VTBO8A+XYdw2RJ/FmI0f+vhyrG5AIhAIEd6SNp5XXz9mv5h3lBtv+FaViPSINmiA+DDz01lXtL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":299709},"main":"src/index.js","type":"module","types":"dist/index.d.ts","gitHead":"62d92a8f3ab5ab26203cd0bb6fa2ffae11d18409","scripts":{"test":"jest","clean":"rimraf dist","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.12.1","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","rimraf":"^6.1.3","babel-jest":"^30.3.0","typescript":"^6.0.2","@babel/core":"^7.29.0","@types/jest":"^30.0.0","@types/node":"^25.6.0","@babel/preset-env":"^7.29.2"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.4.2_1776171359016_0.6174299168179382","host":"s3://npm-registry-packages-npm-production"}},"1.4.3":{"name":"@tcy/eslint-rules","version":"1.4.3","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.4.3","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"4c6d21428246dc7d943b04a300035617a153d13b","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.4.3.tgz","fileCount":57,"integrity":"sha512-x2fK254Ef92HPdGbnsk42qmuxi3d6BxjMwCD11V6HPp/Ul5UsO5qB6TUyi4HbTH9VITe2t22PX3oBHp1m6aVBQ==","signatures":[{"sig":"MEYCIQDzddzk+4REFIM2AlZPg24mjGOIT+4jSCTaumToLN3CZQIhAOdPfcZOPMJz36JBqSEiP86fTaLqGZVWAnLIYJyMCBVE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":326329},"main":"src/index.js","type":"module","types":"dist/index.d.ts","exports":{"./back":"./dist/back.d.ts","./client":"./dist/client.d.ts"},"gitHead":"02310cd9473f5779f88e8d3a2e03eaacb3aeebda","scripts":{"test":"jest","clean":"rimraf dist","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.12.1","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","rimraf":"^6.1.3","babel-jest":"^30.3.0","typescript":"^6.0.2","@babel/core":"^7.29.0","@types/jest":"^30.0.0","@types/node":"^25.6.0","@babel/preset-env":"^7.29.2"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.4.3_1776172816028_0.7714124017385555","host":"s3://npm-registry-packages-npm-production"}},"1.4.4":{"name":"@tcy/eslint-rules","version":"1.4.4","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.4.4","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"f7347b44ccda96fa5908a87d0b2fe3cd25909d06","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.4.4.tgz","fileCount":57,"integrity":"sha512-Pfyv1/WC+yDwYTyDjzmYzYmyJMPRCLi9UaL5c2jUffXQLchbSzW5iHpe9CNbwGLt2rPHlD2r6hXy5RTT/C11rg==","signatures":[{"sig":"MEUCIQD9Gu1vF8ZvZ1U7LtBUth9yQGPyWRzDJ6XUPekPcxN8eQIgWst44S5WbAZAwxw1efooJ7l/VeE1P/+i06bDVlClHGo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":313642},"main":"src/index.js","type":"module","types":"decl/index.d.ts","exports":{"./back":{"types":"./decl/back.d.ts","import":"./src/back.js"},"./client":{"types":"./decl/client.d.ts","import":"./src/client.js"}},"gitHead":"8aa40ea76a7908d302198a17a6be3504d6e54c40","scripts":{"test":"jest","clean":"rimraf decl","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.12.1","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","rimraf":"^6.1.3","babel-jest":"^30.3.0","typescript":"^6.0.2","@babel/core":"^7.29.0","@types/jest":"^30.0.0","@types/node":"^25.6.0","@babel/preset-env":"^7.29.2"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.4.4_1776174213500_0.7565131469590249","host":"s3://npm-registry-packages-npm-production"}},"1.4.5":{"name":"@tcy/eslint-rules","version":"1.4.5","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.4.5","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"79f2b0a5feda026e7aa3caedd6c70ab8f68505bc","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.4.5.tgz","fileCount":69,"integrity":"sha512-5GxUu2cvK/9c0wnJqjXvqH/0Pu9Vxd9jKoETvzqCYX6Vw+IMgVO8CQmJBXZN9w1NI5N/ZvvRqTU+4Ek9rOBYRA==","signatures":[{"sig":"MEUCIQC4rGgU52V5cNm/ZUiES8yFdVDGXVb4cyL6ElBd2oVs1gIgG8iKdRQ16NFU/6wZqxTRlgzfWhWMhqGHPM7xUvqlvWk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":345888},"main":"src/index.js","type":"module","types":"decl/index.d.ts","exports":{"./back":{"types":"./decl/back/back.d.ts","import":"./src/back/back.js"},"./client":{"types":"./decl/client/client.d.ts","import":"./src/client/client.js"},"./back/recommended":{"types":"./decl/back/recommended.d.ts","import":"./src/back/recommended.js"},"./client/recommended":{"types":"./decl/client/recommended.d.ts","import":"./src/client/recommended.js"}},"gitHead":"1814771cc981191557ccdcd82c74a65db36734d7","scripts":{"test":"jest","clean":"rimraf decl","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.12.1","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","rimraf":"^6.1.3","babel-jest":"^30.3.0","typescript":"^6.0.2","@babel/core":"^7.29.0","@types/jest":"^30.0.0","@types/node":"^25.6.0","@babel/preset-env":"^7.29.2"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.4.5_1776245634276_0.34957949482675676","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@tcy/eslint-rules","version":"1.5.0","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.5.0","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"27ac4c25ef9ddf2f3d92df582389e0e7b2cffa69","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.5.0.tgz","fileCount":72,"integrity":"sha512-grh/ZBTQBRIVesP3gN4UCPud3oghV/GTjR4UqKmapxGfoD9x7yyokTIAFJz+MwLVYW1XiHdcitNJQQN3V/E+Kg==","signatures":[{"sig":"MEQCIAYPealUiEvKG2YTYrLCFCl7c23PB7OjdZU89Bakv28cAiA9ymtOZ72EvCHRystv2fzsdD4M7KMnlZKCqwA4hHwLRA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":360030},"main":"src/index.js","type":"module","types":"decl/index.d.ts","exports":{"./back":{"types":"./decl/back/back.d.ts","import":"./src/back/back.js"},"./client":{"types":"./decl/client/client.d.ts","import":"./src/client/client.js"},"./back/recommended":{"types":"./decl/back/recommended.d.ts","import":"./src/back/recommended.js"},"./client/recommended":{"types":"./decl/client/recommended.d.ts","import":"./src/client/recommended.js"}},"gitHead":"474a922e5822efeb9455e0c520a25e6d19d6fd66","scripts":{"test":"jest","clean":"rimraf decl","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.13.0","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","rimraf":"^6.1.3","babel-jest":"^30.3.0","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/jest":"^30.0.0","@types/node":"^25.6.0","@babel/preset-env":"^7.29.3"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.5.0_1777646275426_0.2974250062666901","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@tcy/eslint-rules","version":"1.6.0","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.6.0","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"30e9b38bab90dcd1950bd5d4243d413310c4f01a","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.6.0.tgz","fileCount":75,"integrity":"sha512-WveIY6xPc5zaAPudZnrzX0MXWbhQpLMwzdHRkVgtcVmh+ptFLl4Bt1JlMMDf9EVymqFC/DmNPraTRDBcjOKUbw==","signatures":[{"sig":"MEUCIQCZucGNAfyPzdUSeFAEft8vknKqQH15lhGZ+7FYrNCwPgIgKE7jTXItYALc+FUVetpeQ+aGYa4TA5kimqEAtbA+l9A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":389545},"main":"src/index.js","type":"module","types":"decl/index.d.ts","exports":{"./back":{"types":"./decl/back/back.d.ts","import":"./src/back/back.js"},"./client":{"types":"./decl/client/client.d.ts","import":"./src/client/client.js"},"./back/recommended":{"types":"./decl/back/recommended.d.ts","import":"./src/back/recommended.js"},"./client/recommended":{"types":"./decl/client/recommended.d.ts","import":"./src/client/recommended.js"}},"gitHead":"914b5033ae930aedfe12c3dd55354a58d47e28a3","scripts":{"test":"jest","clean":"rimraf decl","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.13.0","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.3.0","rimraf":"^6.1.3","babel-jest":"^30.3.0","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/jest":"^30.0.0","@types/node":"^25.6.0","@babel/preset-env":"^7.29.3"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.6.0_1777973299336_0.47458630257595247","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@tcy/eslint-rules","version":"1.6.1","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.6.1","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"2bffee5f39f300057301c9cacc33ea70775bf457","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.6.1.tgz","fileCount":75,"integrity":"sha512-MssNvW4n8kR+4zr8hIcRFhNRVa7Ugk9hDj/nNYF4w1Yr0zIJzyQiJVcMHNzQQ5sh4DTb8sriSLAjCdnpV/WW7w==","signatures":[{"sig":"MEQCIGepTLq5aEuYnNRu74t0zvZ7gQNsPEkWdzqcqRdGDYaXAiBwYEKev7xjZjX4Re0D20ltaoUXAsKejrjRt0Q2uxWrkQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":390948},"main":"src/index.js","type":"module","types":"decl/index.d.ts","exports":{"./back":{"types":"./decl/back/back.d.ts","import":"./src/back/back.js"},"./client":{"types":"./decl/client/client.d.ts","import":"./src/client/client.js"},"./back/recommended":{"types":"./decl/back/recommended.d.ts","import":"./src/back/recommended.js"},"./client/recommended":{"types":"./decl/client/recommended.d.ts","import":"./src/client/recommended.js"}},"gitHead":"2b02ae0955ca33f7a236b5d61a2e41afc9cd288f","scripts":{"test":"jest","clean":"rimraf decl","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.14.1","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","rimraf":"^6.1.3","babel-jest":"^30.4.1","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/jest":"^30.0.0","@types/node":"^25.7.0","@babel/preset-env":"^7.29.5"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.6.1_1778569498344_0.8734142119695458","host":"s3://npm-registry-packages-npm-production"}},"1.6.2":{"name":"@tcy/eslint-rules","version":"1.6.2","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.6.2","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"a57391c0bdfcd4e83fbf186e7f35f4640e73a908","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.6.2.tgz","fileCount":75,"integrity":"sha512-7Wd8IvbRfDRWG4ZuqyN64rZk1ghm+HIrPYcjeZg06CQzZNhg3awUlt64BF2N+efNJvQXCj/sdnrkhu42HSIM3A==","signatures":[{"sig":"MEUCIGGkqGajAzp0m3E/pCZwyzCt8iMJH4w6UTBuojmUGKenAiEAkUkMo+1Ea37YGTGAeRxUTYIO27kahADSvKlYS57PtbY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":391182},"main":"src/index.js","type":"module","types":"decl/index.d.ts","exports":{"./back":{"types":"./decl/back/back.d.ts","import":"./src/back/back.js"},"./client":{"types":"./decl/client/client.d.ts","import":"./src/client/client.js"},"./back/recommended":{"types":"./decl/back/recommended.d.ts","import":"./src/back/recommended.js"},"./client/recommended":{"types":"./decl/client/recommended.d.ts","import":"./src/client/recommended.js"}},"gitHead":"b0d781dea4b5afec9c58e1cf0a5f322f938264cd","scripts":{"test":"jest","clean":"rimraf decl","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.14.1","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","rimraf":"^6.1.3","babel-jest":"^30.4.1","typescript":"^6.0.3","@babel/core":"^7.29.0","@types/jest":"^30.0.0","@types/node":"^25.7.0","@babel/preset-env":"^7.29.5"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.6.2_1778571398965_0.3549964364321363","host":"s3://npm-registry-packages-npm-production"}},"1.6.3":{"name":"@tcy/eslint-rules","version":"1.6.3","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.6.3","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"720356b4c2b4d704e6c0d361912305ed7a2ba9e8","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.6.3.tgz","fileCount":81,"integrity":"sha512-UV5ALSefBg6Q6t1m8ZvkSc0BdX2r9yxGHPz2C6uJ0FOV89KTeET2HBDckisYRhFsH5u6DPr/K3qAYMasrmt6qw==","signatures":[{"sig":"MEQCIGxWC7f2jgBY9ziuUbPiA1bvwj/V6M87ImXi18dFIQZ0AiAb9wnPYQWbOlaxieLet8joZh7UMEK2Tj5YlYzQh4PmGA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.6.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":423258},"main":"src/index.js","type":"module","types":"decl/index.d.ts","exports":{"./back":{"types":"./decl/back/back.d.ts","import":"./src/back/back.js"},"./client":{"types":"./decl/client/client.d.ts","import":"./src/client/client.js"},"./back/recommended":{"types":"./decl/back/recommended.d.ts","import":"./src/back/recommended.js"},"./client/recommended":{"types":"./decl/client/recommended.d.ts","import":"./src/client/recommended.js"}},"gitHead":"7961f969a120eebca4425576137fad2cd139ae22","scripts":{"test":"jest","clean":"rimraf decl","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.17.0","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.17.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","rimraf":"^6.1.3","babel-jest":"^30.4.1","typescript":"^6.0.3","@babel/core":"^8.0.1","@types/jest":"^30.0.0","@types/node":"^26.0.1","@babel/preset-env":"^8.0.2"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.6.3_1782374908171_0.20015551580925361","host":"s3://npm-registry-packages-npm-production"}},"1.6.4":{"name":"@tcy/eslint-rules","version":"1.6.4","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.6.4","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"f7f5ab459f02b5301a75b2cadf8d03d77aa4e064","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.6.4.tgz","fileCount":81,"integrity":"sha512-rn4PNB8Y662hDEG+c20l/4J+58e1n3XK47h5FzMOwJ/T4E+s8foS3Hl/awfdJvXbvxD7EzuC5C3U4GjMyvZVkA==","signatures":[{"sig":"MEYCIQCC4XIM4Miavr9zXyTRgSyMN/kqtxElskF+XFGt40O8UQIhAIzmNm8UqWQuniAXHlw6cns1B/5jB4wcPYFMvsMQzQ9V","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.6.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":423363},"main":"src/index.js","type":"module","types":"decl/index.d.ts","exports":{"./back":{"types":"./decl/back/back.d.ts","import":"./src/back/back.js"},"./client":{"types":"./decl/client/client.d.ts","import":"./src/client/client.js"},"./back/http":{"types":"./decl/back/http.d.ts","import":"./src/back/http.js"},"./back/recommended":{"types":"./decl/back/recommended.d.ts","import":"./src/back/recommended.js"},"./client/recommended":{"types":"./decl/client/recommended.d.ts","import":"./src/client/recommended.js"}},"gitHead":"d88c793f6e29dfdc566b091e08126433f1b4a914","scripts":{"test":"jest","clean":"rimraf decl","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"11.17.0","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.17.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","rimraf":"^6.1.3","babel-jest":"^30.4.1","typescript":"^6.0.3","@babel/core":"^8.0.1","@types/jest":"^30.0.0","@types/node":"^26.0.1","@babel/preset-env":"^8.0.2"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.6.4_1782375533727_0.9333602205849099","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@tcy/eslint-rules","version":"1.7.0","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.7.0","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"bin":{"eslint-cache-guard":"src/bin/eslint-cache-guard.js"},"dist":{"shasum":"6e85e457edc9b1eb361d686717c4cd739998d6bf","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.7.0.tgz","fileCount":85,"integrity":"sha512-wrBeD6ZsEfxh+eVGk1+GZ4iPXXvjkfQrmIT33r0VdKm1ZL9KJ9hLN+YXh9aAHEFHnD+84Q9jRzxbmxQk1PdOzA==","signatures":[{"sig":"MEYCIQCiXaV4SvgD7hMY9ZvOmPgHb6qcq6fpJQXO7QYjDT1T9QIhAMW8+XjABio5PhUsWPrcBZJ/0k1MwZopJHH3YFX4d/Dw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":464524},"main":"src/index.js","type":"module","types":"decl/index.d.ts","exports":{"./back":{"types":"./decl/back/back.d.ts","import":"./src/back/back.js"},"./client":{"types":"./decl/client/client.d.ts","import":"./src/client/client.js"},"./back/http":{"types":"./decl/back/http.d.ts","import":"./src/back/http.js"},"./back/recommended":{"types":"./decl/back/recommended.d.ts","import":"./src/back/recommended.js"},"./client/recommended":{"types":"./decl/client/recommended.d.ts","import":"./src/client/recommended.js"}},"gitHead":"ed71dc4ece022bfa8b30dd37472d70cb7b5e8a4b","scripts":{"test":"jest","clean":"rimraf decl","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"12.0.1","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.18.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.4.2","rimraf":"^6.1.3","babel-jest":"^30.4.1","typescript":"^7.0.2","@babel/core":"^8.0.1","@types/jest":"^30.0.0","@types/node":"^26.0.1","@babel/preset-env":"^8.0.2"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.7.0_1784543438240_0.6668173072107242","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@tcy/eslint-rules","version":"1.8.0","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.8.0","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"bin":{"eslint-cache-guard":"src/bin/eslint-cache-guard.js"},"dist":{"shasum":"82b8d545e25c60c4bbd1b7c63da75421a1ce57ae","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.8.0.tgz","fileCount":89,"integrity":"sha512-n5Tay+mhFrihJ5rsmUfcw6nv0soR2HKrEwuMrc+Svb7QwTsDBQhUX4qe8qMD1YcW69rOjJUyIy06bfIgflXvgw==","signatures":[{"sig":"MEQCID8hy/aBQxp4WF22jb6mgtUYuZgza9H9atmVqX629wcLAiAepujBXgbx+tp9spn6kuewdLKSv7Mbxes/fC8bRaqK8Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":546688},"main":"src/index.js","type":"module","types":"decl/index.d.ts","exports":{"./back":{"types":"./decl/back/back.d.ts","import":"./src/back/back.js"},"./client":{"types":"./decl/client/client.d.ts","import":"./src/client/client.js"},"./back/http":{"types":"./decl/back/http.d.ts","import":"./src/back/http.js"},"./back/recommended":{"types":"./decl/back/recommended.d.ts","import":"./src/back/recommended.js"},"./client/recommended":{"types":"./decl/client/recommended.d.ts","import":"./src/client/recommended.js"}},"gitHead":"570ffeb3803b07beb44dddb78c30c903153687b6","scripts":{"test":"jest","clean":"rimraf decl","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"12.0.2","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.5.1","rimraf":"^6.1.3","babel-jest":"^30.5.1","typescript":"^7.0.2","@babel/core":"^8.0.1","@types/jest":"^30.0.0","@types/node":"^26.5.0","@babel/preset-env":"^8.0.2"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.8.0_1788876760377_0.1812512753588491","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@tcy/eslint-rules","version":"1.9.0","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.9.0","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"bin":{"eslint-cache-guard":"src/bin/eslint-cache-guard.js"},"dist":{"shasum":"8cf5dc45499c18739fd2a1fa14c9c9bb06a944a2","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.9.0.tgz","fileCount":93,"integrity":"sha512-hbCMKUUZvZMndYaPTQE8FN4R6HHnTNBNGMULOzDx/ZEJ6a4QGSO5Mv2dlUe7E1GlHp7uTAPplkuNkZQOkU/d4A==","signatures":[{"sig":"MEUCIQCjCWPAUYcMkRclA3vHdbKDsIGmirtLL4OQJsONRSaKswIgXxUPW4iwyVSPz0fcxoodEdwxMFp9UefwEbur2SGuUgg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":608669},"main":"src/index.js","type":"module","types":"decl/index.d.ts","exports":{"./back":{"types":"./decl/back/back.d.ts","import":"./src/back/back.js"},"./client":{"types":"./decl/client/client.d.ts","import":"./src/client/client.js"},"./back/http":{"types":"./decl/back/http.d.ts","import":"./src/back/http.js"},"./back/recommended":{"types":"./decl/back/recommended.d.ts","import":"./src/back/recommended.js"},"./client/recommended":{"types":"./decl/client/recommended.d.ts","import":"./src/client/recommended.js"}},"gitHead":"aad660a996a92503aa45aed0b890c2ebf8880a4d","scripts":{"test":"jest","clean":"rimraf decl","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"12.0.2","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.5.1","rimraf":"^6.1.3","babel-jest":"^30.5.1","typescript":"^7.0.2","@babel/core":"^8.0.1","@types/jest":"^30.0.0","@types/node":"^26.5.0","@babel/preset-env":"^8.0.2"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.9.0_1788880833778_0.6412538170403366","host":"s3://npm-registry-packages-npm-production"}},"1.9.1":{"name":"@tcy/eslint-rules","version":"1.9.1","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.9.1","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"bin":{"eslint-cache-guard":"src/bin/eslint-cache-guard.js"},"dist":{"shasum":"5ea66c9b2bbd88527c63da9a38400bf9541fa2f4","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.9.1.tgz","fileCount":93,"integrity":"sha512-ZjJj6KZnqkiI+Fa0DTuBxSMhFSgHmMhfG2W48Nx63T95kiaXyTx3tEPuYutd0C7DWwTW5Xh/nM1vFadQmg+7vQ==","signatures":[{"sig":"MEQCIBfdQLwo8Qn9Tu0RC6H2VlP5qwQjs0OkMcyR0stSUWaHAiA3Vh7KfnEpJVcFNzo6cnU9p9K418BPl3de6GqJZemkTw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":622662},"main":"src/index.js","type":"module","types":"decl/index.d.ts","exports":{"./back":{"types":"./decl/back/back.d.ts","import":"./src/back/back.js"},"./client":{"types":"./decl/client/client.d.ts","import":"./src/client/client.js"},"./back/http":{"types":"./decl/back/http.d.ts","import":"./src/back/http.js"},"./back/recommended":{"types":"./decl/back/recommended.d.ts","import":"./src/back/recommended.js"},"./client/recommended":{"types":"./decl/client/recommended.d.ts","import":"./src/client/recommended.js"}},"gitHead":"6e20b869b8ec2542b0a8bda83ba113495c7c4c47","scripts":{"test":"jest","clean":"rimraf decl","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"12.0.2","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.5.1","rimraf":"^6.1.3","babel-jest":"^30.5.1","typescript":"^7.0.2","@babel/core":"^8.0.1","@types/jest":"^30.0.0","@types/node":"^26.5.0","@babel/preset-env":"^8.0.2"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.9.1_1789059209063_0.29398384489736906","host":"s3://npm-registry-packages-npm-production"}},"1.9.2":{"name":"@tcy/eslint-rules","version":"1.9.2","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.9.2","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"bin":{"eslint-cache-guard":"src/bin/eslint-cache-guard.js"},"dist":{"shasum":"07de4fd30ba8ac1547ba2354f3b4c993b14c628f","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.9.2.tgz","fileCount":93,"integrity":"sha512-tSLK5kaXzWo267kLc3HiFhxmmVUGy8h32XZIN/DSsK+rnWw7myWiRNDPf45JVvuKxjJniE3UUacOkfg52nb5yA==","signatures":[{"sig":"MEUCIHRgn/pMe1IeGySNwF2P+Zw2bu5mNukbL1R95WhMgSB0AiEA2agosqeLF3wSUq9nHGTTdIx5LEQ3C0MDOikQeeowAEE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCICFCMeiW5IiRzZDy4vLqkeMXwuSMBNjqtFvD2ME00scdAiAOnJcKG/nb7A09gtzJ5rIeiEbuwDXodbSb2t5qpzCkLg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.9.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":621606},"main":"src/index.js","type":"module","types":"decl/index.d.ts","exports":{"./back":{"types":"./decl/back/back.d.ts","import":"./src/back/back.js"},"./client":{"types":"./decl/client/client.d.ts","import":"./src/client/client.js"},"./back/http":{"types":"./decl/back/http.d.ts","import":"./src/back/http.js"},"./back/recommended":{"types":"./decl/back/recommended.d.ts","import":"./src/back/recommended.js"},"./client/recommended":{"types":"./decl/client/recommended.d.ts","import":"./src/client/recommended.js"}},"gitHead":"3aaa5ed51840e023b2842796df4a8576c1933b90","scripts":{"test":"jest","clean":"rimraf decl","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"12.0.2","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.5.1","rimraf":"^6.1.3","babel-jest":"^30.5.1","typescript":"^7.0.2","@babel/core":"^8.0.5","@types/jest":"^30.0.0","@types/node":"^26.5.0","@babel/preset-env":"^8.0.5"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.9.2_1789651820865_0.4424254629080222","host":"s3://npm-registry-packages-npm-production"}},"1.10.0-beta.1":{"name":"@tcy/eslint-rules","version":"1.10.0-beta.1","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.10.0-beta.1","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"bin":{"eslint-cache-guard":"src/bin/eslint-cache-guard.js"},"dist":{"shasum":"77b96b691cc42f8853ae6791031fbd09f6afb563","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.10.0-beta.1.tgz","fileCount":97,"integrity":"sha512-4wd87zibC22xKZV9iopVpLJdr6mXeFXU/TRNI9AZD7I/fySGoCNi9XFzzwRHQV3/Ejys0ERdiU2ZYbeBGBRFBw==","signatures":[{"sig":"MEYCIQDS1sK13VasG1qqhOG8vL0JeFJAhsgMbo/hZnV/nRWhvwIhAPX5FKjUo6JDbFok90cdlqVq9Ixq4/giwz0aZiju7cbX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC1WTNM1pk52He6KA/im7UvFm6o9wpCx/LD2NCHLFD5vwIhAO4t+trjvryao6x1BXH9jwnHQljvhMIdowORQgUMr5/m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.10.0-beta.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":702515},"main":"src/index.js","type":"module","types":"decl/index.d.ts","exports":{"./back":{"types":"./decl/back/back.d.ts","import":"./src/back/back.js"},"./client":{"types":"./decl/client/client.d.ts","import":"./src/client/client.js"},"./back/http":{"types":"./decl/back/http.d.ts","import":"./src/back/http.js"},"./back/recommended":{"types":"./decl/back/recommended.d.ts","import":"./src/back/recommended.js"},"./client/recommended":{"types":"./decl/client/recommended.d.ts","import":"./src/client/recommended.js"}},"gitHead":"13dafd3db885e97ba765efba23d01598d4a12ae1","scripts":{"test":"jest","clean":"rimraf decl","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"12.0.2","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.5.2","rimraf":"^6.1.3","babel-jest":"^30.5.2","typescript":"^7.0.2","@babel/core":"^8.0.6","@types/jest":"^30.0.0","@types/node":"^26.6.2","@babel/preset-env":"^8.0.6"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.10.0-beta.1_1790107938676_0.9699702122078377","host":"s3://npm-registry-packages-npm-production"}},"1.10.0-beta.2":{"name":"@tcy/eslint-rules","version":"1.10.0-beta.2","author":{"name":"Thomas CASTELLY"},"license":"ISC","_id":"@tcy/eslint-rules@1.10.0-beta.2","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"homepage":"https://github.com/tcastelly/eslint-rules#readme","bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"bin":{"eslint-cache-guard":"src/bin/eslint-cache-guard.js"},"dist":{"shasum":"386f85ee894c95cb4457b6dcf7218cec57fc23e4","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.10.0-beta.2.tgz","fileCount":97,"integrity":"sha512-EKPm/AG9eeSrQONsVF+JUUbeTnTR437AfKjhJJxFcjbbWpbs4m6QtcuH3CgqUl2qTeby+GY1e6kbVxiliMy8zQ==","signatures":[{"sig":"MEYCIQCe+Tnu0kcOsM+rcQluhi8sDqVhQ6aH5YI1OFFu5M/noAIhALnK1ei2uJtxfU2goq2kSkhS77//jJdCOybRqceGVR16","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDgj8vP9YrnI3efrg1Wgenk/fHsJsVjuVWNOG7Rb0KuGwIgFJECcRfWYAuxrGHx/keTX0Ai8hwW0ZpReSGQKVbxW1w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.10.0-beta.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":741055},"main":"src/index.js","type":"module","types":"decl/index.d.ts","exports":{"./back":{"types":"./decl/back/back.d.ts","import":"./src/back/back.js"},"./client":{"types":"./decl/client/client.d.ts","import":"./src/client/client.js"},"./back/http":{"types":"./decl/back/http.d.ts","import":"./src/back/http.js"},"./back/recommended":{"types":"./decl/back/recommended.d.ts","import":"./src/back/recommended.js"},"./client/recommended":{"types":"./decl/client/recommended.d.ts","import":"./src/client/recommended.js"}},"gitHead":"22feb4b38b93f35b6195b391a73f324029cf9a89","scripts":{"test":"jest","clean":"rimraf decl","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"12.1.0","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"_nodeVersion":"24.21.0","_hasShrinkwrap":false,"readmeFilename":"README.md","devDependencies":{"jest":"^30.5.2","rimraf":"^6.1.3","babel-jest":"^30.5.2","typescript":"^7.0.2","@babel/core":"^8.0.6","@types/jest":"^30.0.0","@types/node":"^26.6.2","@babel/preset-env":"^8.0.6"},"_npmOperationalInternal":{"tmp":"tmp/eslint-rules_1.10.0-beta.2_1790111127871_0.2065589008160218","host":"s3://npm-registry-packages-npm-production"}},"1.10.0":{"_id":"@tcy/eslint-rules@1.10.0","bin":{"eslint-cache-guard":"src/bin/eslint-cache-guard.js"},"bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"dist":{"shasum":"9afad4bfb33cfd066b703847a7c47b70b8e8ce1e","tarball":"https://registry.npmjs.org/@tcy/eslint-rules/-/eslint-rules-1.10.0.tgz","fileCount":97,"integrity":"sha512-ecSTMs5up6MKvdIUyVmCJKXUG4/QcNY7S2fePwO/ujYq4lPjXbNYQjbVL5f/ROjDjhHX8NrwGoDeDLCeRjiIBQ==","signatures":[{"sig":"MEQCIFDr3150Sq7ES3TlZClYqDmbAwB82BbyzcbLD19H09GuAiA+PRSAXIRiYThQIspdrWSq2JxkyVDi/IxyV0PSM6VJhw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDAmqfL6ngbQg+4fXlt/c8coaY2y+iv8K4W5HWxrHTvJAiAh4xJZCqf8GKjyLXrqMxH92oB5D7Y4zYoABPoJTSWbMA=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@tcy%2feslint-rules@1.10.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":741048},"main":"src/index.js","name":"@tcy/eslint-rules","type":"module","types":"decl/index.d.ts","author":{"name":"Thomas CASTELLY"},"exports":{"./back":{"types":"./decl/back/back.d.ts","import":"./src/back/back.js"},"./client":{"types":"./decl/client/client.d.ts","import":"./src/client/client.js"},"./back/http":{"types":"./decl/back/http.d.ts","import":"./src/back/http.js"},"./back/recommended":{"types":"./decl/back/recommended.d.ts","import":"./src/back/recommended.js"},"./client/recommended":{"types":"./decl/client/recommended.d.ts","import":"./src/client/recommended.js"}},"gitHead":"000fa5f9cf324a6484c57ded87bed7c28fc49f3b","license":"ISC","scripts":{"test":"jest","clean":"rimraf decl","build:decl":"tsc","prepublishOnly":"npm run clean && npm run test && npm run build:decl"},"version":"1.10.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:63f7af23-381f-40c1-be5d-9aa01386daa2"}},"homepage":"https://github.com/tcastelly/eslint-rules#readme","repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"_npmVersion":"12.1.0","description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","directories":{},"maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"_nodeVersion":"24.20.0","_hasShrinkwrap":false,"devDependencies":{"jest":"^30.5.2","rimraf":"^6.1.3","babel-jest":"^30.5.2","typescript":"^7.0.2","@babel/core":"^8.0.6","@types/jest":"^30.0.0","@types/node":"^26.6.2","@babel/preset-env":"^8.0.6"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-rules_1.10.0_1790162949331_0.23565625024523928"}}},"time":{"created":"2025-12-01T16:33:16.926Z","modified":"2026-09-23T11:29:09.822Z","1.0.0":"2025-12-01T16:33:17.156Z","1.0.1":"2025-12-01T16:36:21.545Z","1.0.2":"2025-12-01T16:47:15.822Z","1.0.3":"2025-12-01T16:53:20.856Z","1.0.5":"2025-12-01T17:18:41.651Z","1.0.6":"2025-12-01T17:42:57.329Z","1.0.7":"2025-12-05T11:14:31.950Z","1.1.0":"2025-12-17T21:48:39.875Z","1.1.1":"2026-01-09T10:22:21.417Z","1.2.0":"2026-01-26T19:36:18.421Z","1.3.0":"2026-01-28T17:46:54.744Z","1.3.1":"2026-03-06T09:32:33.661Z","1.4.1":"2026-04-14T07:53:09.716Z","1.3.3":"2026-04-14T09:10:15.501Z","1.4.2":"2026-04-14T12:55:59.159Z","1.4.3":"2026-04-14T13:20:16.207Z","1.4.4":"2026-04-14T13:43:33.657Z","1.4.5":"2026-04-15T09:33:54.426Z","1.5.0":"2026-05-01T14:37:55.557Z","1.6.0":"2026-05-05T09:28:19.507Z","1.6.1":"2026-05-12T07:04:58.612Z","1.6.2":"2026-05-12T07:36:39.152Z","1.6.3":"2026-06-25T08:08:28.299Z","1.6.4":"2026-06-25T08:18:53.855Z","1.7.0":"2026-07-20T10:30:38.368Z","1.8.0":"2026-09-08T14:12:40.518Z","1.9.0":"2026-09-08T15:20:33.966Z","1.9.1":"2026-09-10T16:53:29.206Z","1.9.2":"2026-09-17T13:30:20.958Z","1.10.0-beta.1":"2026-09-22T20:12:18.762Z","1.10.0-beta.2":"2026-09-22T21:05:27.959Z","1.10.0":"2026-09-23T11:29:09.491Z"},"bugs":{"url":"https://github.com/tcastelly/eslint-rules/issues"},"author":{"name":"Thomas CASTELLY"},"license":"ISC","homepage":"https://github.com/tcastelly/eslint-rules#readme","repository":{"url":"git+https://github.com/tcastelly/eslint-rules.git","type":"git"},"description":"```typescript import { plugin as customRules } from 'tcy@eslint-rules/src/index.mjs';","maintainers":[{"name":"tcy","email":"thomas@castelly.fr"}],"readme":"# ESLint Custom Rules Documentation\n\nThis document provides detailed information about all custom ESLint rules included in this package.\n\nThe plugin ships two bundles — `tcy@eslint-rules/back` and `tcy@eslint-rules/client` — each enabling a different subset of rules by default (see [Usage](#usage)). Both bundles register the *full* rule set under `plugins.tcy.rules`, so any rule can still be turned on manually even if its bundle doesn't enable it by default.\n\n## Rules Overview\n\n### Shared rules (enabled by both `back` and `client`)\n\n| Rule Name | Type | Description |\n|-----------|------|-------------|\n| `import-specifiers-per-line` | Layout | Enforce one import specifier per line when there are more than 4 specifiers |\n| `export-specifiers-per-line` | Layout | Enforce one export specifier per line when there are more than 4 specifiers |\n| `array-elements-per-line` | Layout | Enforce one array element per line when the array is multiline |\n| `consistent-const-scoping` | Suggestion | Disallow a `const` inside a function when its value does not depend on that function's scope |\n\n### Backend-only rules (`tcy@eslint-rules/back`)\n\n| Rule Name | Type | Description |\n|-----------|------|-------------|\n| `route-dto-required` | Problem | Enforce Dto declaration in `@route` decorator when a Dto is used as a method parameter |\n\n### Client-only rules (`tcy@eslint-rules/client`)\n\n| Rule Name | Type | Description |\n|-----------|------|-------------|\n| `jsx-expression-string-literals` | Suggestion | Enforce string literals instead of string expressions in JSX |\n| `jsx-boolean-shorthand` | Suggestion | Enforce shorthand boolean syntax in JSX props |\n| `jsx-ref-string-exists` | Problem | Ensure a string ref (`ref=\"name\"`) exists on the render function's first parameter type |\n| `enforce-tailwind-important` | Layout | Enforce Tailwind classes end with the `!` important modifier |\n| `v-model-name-match` | Suggestion | Enforce v-model name matching variable names |\n| `vuejs-define-component` | Layout | Enforce use of `defineComponent` for Vue components |\n| `vuejs-define-workspace` | Problem | Require a `route` property in `defineComponent` for `Workspace*` / `Page*` files |\n| `require-fragment-key` | Problem | Require a `key` on a Fragment only where an un-keyed children diff can misalign |\n| `no-static-key-in-map` | Problem | Disallow a static `key` on the root element returned from `.map()` / `.flatMap()` |\n\n### Other rules (registered, but not enabled by either bundle by default)\n\n| Rule Name | Type | Description |\n|-----------|------|-------------|\n| `decorator-type-enforcement` | Problem | Enforce a property's type based on its `@boolean` / `@dbIntBoolean` decorator |\n\n> `decorator-type-enforcement` is exported by the plugin but isn't listed in either `src/back/back.js` or `src/client/client.js` — turn it on explicitly (see [Usage](#usage)) if you want it.\n\n## Rule Details\n\n### Shared rules\n\n#### 1. import-specifiers-per-line\n\n**Type:** Layout\n\n**Description:** Enforces one import specifier per line when there are more than 4 specifiers.\n\n**Options:**\n- `maxSpecifiers` (number, default: 4) - Maximum number of specifiers before enforcing line separation\n- `maxLen` (number, optional) - Maximum line length before enforcing line separation\n\n**Examples:**\n\nValid:\n```javascript\nimport { a } from 'module';\nimport { a, b } from 'module';\nimport {\n  a,\n  b,\n  c,\n  d,\n} from 'module';\n```\n\nInvalid:\n```javascript\nimport { a, b, c, d, e } from 'module';\n```\n\nAutomatically fixes to:\n```javascript\nimport {\n  a,\n  b,\n  c,\n  d,\n  e,\n} from 'module';\n```\n\n#### 2. export-specifiers-per-line\n\n**Type:** Layout\n\n**Description:** Enforces one export specifier per line when there are more than 4 specifiers.\n\n**Examples:**\n\nValid:\n```javascript\nexport { a };\nexport { a, b };\nexport {\n  a,\n  b,\n  c,\n  d,\n};\n```\n\nInvalid:\n```javascript\nexport { a, b, c, d, e };\n```\n\nAutomatically fixes to:\n```javascript\nexport {\n  a,\n  b,\n  c,\n  d,\n  e,\n};\n```\n\n#### 3. array-elements-per-line\n\n**Type:** Layout\n\n**Description:** Enforces one array element per line when the first element is on a new line.\n\n**Examples:**\n\nValid:\n```javascript\nconst arr = [1, 2, 3];\nconst arr = [\n  1,\n  2,\n  3,\n];\n```\n\nInvalid:\n```javascript\nconst arr = [\n  1, 2, 3,\n];\n```\n\nAutomatically fixes to:\n```javascript\nconst arr = [\n  1,\n  2,\n  3,\n];\n```\n\n#### 4. consistent-const-scoping\n\n**Type:** Suggestion\n\n**Description:** Disallows a `const` declared inside a function when its (side-effect-free) initializer does not depend on that function's parameters, locals, `this`, `super`, or `arguments` — such a value is rebuilt identically on every call, so it should be declared outside the function instead.\n\n**Options:**\n- `types` (array, default: `['arrow-function']`) - which shapes of initializer to flag: `'primitive'`, `'template-literal'`, `'expression'` (identifier / unary / binary / logical / conditional / member access), `'array'`, `'object'`, `'arrow-function'`, `'function-expression'`\n\n**Examples:**\n\nValid:\n```javascript\nconst hello = () => console.log('hello');\nfunction makeGreeter() {\n  return { hello };\n}\n\nfunction makeGreeter(name) {\n  // depends on a param — stays put\n  const hello = () => console.log(`hello ${name}`);\n  return { hello };\n}\n```\n\nInvalid:\n```javascript\nfunction makeGreeter() {\n  const hello = () => console.log('hello'); // recreated every call\n  return { hello };\n}\n```\n\n### Backend-only rules\n\n#### 1. route-dto-required\n\n**Type:** Problem\n\n**Description:** Enforces that a Dto used as a method parameter is also declared in that method's `@route` decorator, either as the second argument or as the `dto` property of the options object.\n\n**Examples:**\n\nValid:\n```typescript\nclass UserController {\n  @route('/users', CreateUserDto)\n  create(body: CreateUserDto) {}\n\n  @route({ path: '/users', dto: CreateUserDto })\n  update(body: CreateUserDto) {}\n}\n```\n\nInvalid:\n```typescript\nclass UserController {\n  @route('/users')\n  create(body: CreateUserDto) {}\n}\n```\n\n### Client-only rules\n\n#### 1. jsx-expression-string-literals\n\n**Type:** Suggestion\n\n**Description:** Enforces string literals instead of string expressions in JSX.\n\n**Examples:**\n\nValid:\n```javascript\n<Component title=\"hello\" />\n<Component title={someVariable} />\n```\n\nInvalid:\n```javascript\n<Component title={'hello'} />\n```\n\nAutomatically fixes to:\n```javascript\n<Component title=\"hello\" />\n```\n\n#### 2. jsx-boolean-shorthand\n\n**Type:** Suggestion\n\n**Description:** Enforces shorthand boolean syntax in JSX props.\n\n**Examples:**\n\nValid:\n```javascript\n<Component disabled />\n<Component disabled={false} />\n<Component disabled={someCondition} />\n```\n\nInvalid:\n```javascript\n<Component disabled={true} />\n```\n\nAutomatically fixes to:\n```javascript\n<Component disabled />\n```\n\n#### 3. jsx-ref-string-exists\n\n**Type:** Problem\n\n**Description:** Ensures string refs in TSX (`ref=\"name\"`) exist as properties on the render function's first parameter type. Requires type information — set `parserOptions.projectService` (or `project`) in your ESLint config, otherwise every string ref is flagged with a `noServices` warning instead.\n\n**Examples:**\n\nValid:\n```tsx\nfunction MyComponent(props: { myRef: unknown }) {\n  return <div ref=\"myRef\" />;\n}\n```\n\nInvalid:\n```tsx\nfunction MyComponent(props: { other: unknown }) {\n  return <div ref=\"myRef\" />;\n}\n```\n\n#### 4. enforce-tailwind-important\n\n**Type:** Layout\n\n**Description:** Enforces every Tailwind utility class to end with the `!` important modifier (e.g. `text-red-500!`) — this is Tailwind's own suffix syntax, not CSS's `!important`. Each whitespace-separated class token is checked independently. Checks JSX `class`/`className` attributes — plain string literals as well as expressions built from them (arrays, object keys, template literals, conditional/logical expressions) — and `const xxxClass`/`xxxCls = '...'` variable declarations.\n\n**Options:**\n- `ignore` (array, optional) - extra class names that are allowed to stay without the `!` modifier, on top of the defaults (`row`, `no-gutters`, `container`, `container-fluid` — non-Tailwind, Bootstrap-style grid classes that would silently stop matching any CSS rule if suffixed).\n\n**Examples:**\n\nValid:\n```jsx\n<div className=\"text-red-500! p-4!\" />\n<div className={cond ? 'text-red-500!' : 'text-blue-500!'} />\nconst cardCls = 'rounded-lg! shadow!';\n```\n\nWith `{ ignore: ['my-legacy-class'] }`:\n```jsx\n<div className=\"my-legacy-class text-red-500!\" />\n```\n\nInvalid:\n```jsx\n<div className=\"text-red-500 p-4\" />\nconst cardCls = 'rounded-lg shadow';\n```\n\nAutomatically fixes to:\n```jsx\n<div className=\"text-red-500! p-4!\" />\nconst cardCls = 'rounded-lg! shadow!';\n```\n\n#### 5. v-model-name-match\n\n**Type:** Suggestion\n\n**Description:** Enforces v-model name matching variable names.\n\n**Examples:**\n\nValid:\n```javascript\n<input v-model=\"value\" />\n<input v-model=\"formData.value\" />\n```\n\nInvalid:\n```javascript\n<input v-model=\"value\" />\n```\n\n#### 6. vuejs-define-component\n\n**Type:** Layout\n\n**Description:** Enforces use of `defineComponent` for Vue components.\n\n**Examples:**\n\nValid:\n```javascript\nexport default defineComponent({});\nexport default {\n  name: 'MyComponent',\n};\n```\n\nInvalid:\n```javascript\nexport default {\n  name: 'MyComponent',\n};\n```\n\nAutomatically fixes to:\n```javascript\nexport default defineComponent({\n  name: 'MyComponent',\n});\n```\n\n#### 7. vuejs-define-workspace\n\n**Type:** Problem\n\n**Description:** Requires a `route` property in the `defineComponent({ ... })` object exported by default from any file whose basename starts with `Workspace` or `Page` (e.g. `WorkspaceSettings.vue.ts`, `PageHome.tsx`). Files that don't match that naming pattern are not checked at all. There is no autofix — the rule can't infer what the route path should be.\n\n**Examples:**\n\nValid (`WorkspaceSettings.vue.ts`):\n```javascript\nexport default defineComponent({\n  route: { path: '/settings' },\n  name: 'WorkspaceSettings',\n});\n```\n\nInvalid (`WorkspaceSettings.vue.ts`):\n```javascript\nexport default defineComponent({\n  name: 'WorkspaceSettings',\n});\n```\n\nNot checked at all (filename doesn't start with `Workspace`/`Page`):\n```javascript\n// Settings.vue.ts\nexport default defineComponent({\n  name: 'Settings',\n});\n```\n\n#### 8. require-fragment-key\n\n**Type:** Problem\n\n**Description:** Requires a `key` on a Fragment (`<>…</>` or `<Fragment>`) only in the positions where an un-keyed children diff can actually misalign at runtime: a list item (`.map`/`.flatMap`) or a conditional sibling sharing a child list with another dynamically-rendered sibling. Stays silent for a sole return/child or a static sibling, where no key is needed.\n\n**Options:**\n- `strict` (boolean, default: `true`) - when `true`, a conditional sibling only requires a key if at least one other sibling in the same list is also dynamically rendered (another conditional or a `.map`)\n\n**Examples:**\n\nValid:\n```jsx\n// sole return — no key needed\nconst Comp = () => <>{children}</>;\n\n// already keyed\nlist.map((item) => <Fragment key={item.id}>{item.label}</Fragment>);\n```\n\nInvalid:\n```jsx\nlist.map((item) => <>{item.label}</>);\n\n<div>\n  {cond && <>{a}</>}\n  {otherCond && <span>{b}</span>}\n</div>\n```\n\n#### 9. no-static-key-in-map\n\n**Type:** Problem\n\n**Description:** Disallows a static `key` (a string / number / boolean literal, or a template literal with no interpolation) on the root element returned from a `.map()` / `.flatMap()` callback — every iteration would render the same key, so the list is diffed by position instead of identity.\n\n**Examples:**\n\nValid:\n```jsx\nlist.map((item) => <Row key={item.id} />);\nlist.map((item, i) => <Row key={i} />);\n```\n\nInvalid:\n```jsx\nlist.map((item) => <Row key=\"row\" />);\nlist.map(() => <Fragment key=\"rows\">…</Fragment>);\n```\n\n### Other rules\n\n#### 1. decorator-type-enforcement\n\n**Type:** Problem\n\n**Description:** Enforces a decorated class property's TypeScript type based on which decorator it carries:\n- `@boolean` — the property's type must be exactly `boolean` (auto-fixed by replacing the type).\n- `@dbIntBoolean` — the property's type must be (or include, in a union) `number` or `boolean` — modeling a DB column stored as an int-backed boolean.\n\n> **Note:** in the current implementation, the `@dbIntBoolean` autofix always rewrites the type to `boolean`, even though the reported message says the type \"must be of type `number`\" — this looks like a leftover bug in the rule rather than intended behavior. Flagging it here rather than silently documenting it as correct; happy to fix the rule if you want.\n\n**Examples:**\n\nValid:\n```typescript\nclass Entity {\n  @boolean\n  isActive: boolean;\n\n  @dbIntBoolean\n  isEnabled: number;\n\n  @dbIntBoolean\n  isEnabled: number | boolean;\n}\n```\n\nInvalid:\n```typescript\nclass Entity {\n  @boolean\n  isActive: string;\n\n  @dbIntBoolean\n  isEnabled: string;\n}\n```\n\nAutomatically fixes `@boolean` mismatches to:\n```typescript\nclass Entity {\n  @boolean\n  isActive: boolean;\n}\n```\n\n## Usage\n\n### Backend\n\n```javascript\nimport backCustomRules from 'tcy@eslint-rules/back';\n\nconst backConfig = [\n  backCustomRules,\n  {\n    files: ['**/*.+(ts|tsx|mts|cts)'],\n    rules: {\n      // `types`: which initializer shapes to flag; defaults to `['arrow-function']`.\n      'tcy/consistent-const-scoping': ['error', { types: ['arrow-function', 'primitive'] }],\n      // registered by the plugin but not enabled by `back` — opt in explicitly:\n      'tcy/decorator-type-enforcement': 'error',\n    },\n  },\n];\n\nexport default [\n  ...backConfig,\n];\n```\n\n### Client\n\n```javascript\nimport clientCustomRules from 'tcy@eslint-rules/client';\n\nconst clientConfig = [\n  clientCustomRules,\n  {\n    files: ['**/*.+(ts|tsx|mts|cts)'],\n    rules: {\n      // `ignore`: extra class names that may stay without the `!` modifier\n      // (non-Tailwind classes such as Bootstrap-style grid helpers).\n      // `row`, `no-gutters`, `container`, `container-fluid` are ignored by default.\n      'tcy/enforce-tailwind-important': ['error', { ignore: ['my-legacy-class'] }],\n      // `strict: false` also flags a lone conditional sibling with no other dynamic sibling.\n      'tcy/require-fragment-key': ['error', { strict: true }],\n      // `types`: which initializer shapes to flag; defaults to `['arrow-function']`.\n      'tcy/consistent-const-scoping': ['error', { types: ['arrow-function', 'primitive'] }],\n      // `jsx-ref-string-exists` requires `parserOptions.projectService` (or `project`)\n      // for type information to be set elsewhere in this config.\n    },\n  },\n];\n\nexport default [\n  ...clientConfig,\n];\n```\n","readmeFilename":"README.md"}