{"_id":"@slip-stream-kit/eslint-plugin","_rev":"43-1704821812d3ccd6a590bba1e1dd93f9","name":"@slip-stream-kit/eslint-plugin","dist-tags":{"latest":"0.16.0"},"versions":{"0.1.0":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.0","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.0","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"534a7cc8aad56c42c4e3f5792b8fa76335b45299","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.0.tgz","fileCount":11,"integrity":"sha512-oKH7Na+1MlDxAdesieMmH9fx8UVYCK9t2qnkyqvoF5SWkf7xlKbpnl/rzwdM35uE/jzsEDNxvnyN4JO+z82RGw==","signatures":[{"sig":"MEUCIGV/39uoxJCPGvuXj6k/T6YRn2Pjw/QHD0AT7q+IJKUfAiEAss7kutfa7jsMWrgGCpLEd+SkPvDAI50RBq3HqgVGiRo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49118},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"8e3db079d24c6b1db043328130b890042d1fef13","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","vitest":"^4.1.8","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.60.1"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.0_1780997577908_0.186459972067484","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.1","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.1","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"e6a39ddbe6effba8ad2b32cbd8e504897162f3e0","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.1.tgz","fileCount":11,"integrity":"sha512-ZrAPLq0Wo7O3X5ih8K25lMWkGqDq0hSczhnMFJ1qqIYwJrY+FjbRjg5HH9KpQt+a+Deifi6HTt5pe9cilYb6Lg==","signatures":[{"sig":"MEUCIQCMK2djI8sclnKIrAA8OxEK1XbSdpRlTGWw/lZ60MW3WwIgCjCnnx1K+2kNqU6X/xADWhWGDFHvPSl7r4i+vafZCvE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":51986},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"8e3db079d24c6b1db043328130b890042d1fef13","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","vitest":"^4.1.8","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.60.1"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.1_1781009613935_0.9587843466540134","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.2","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.2","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"01b82dcfa837331d0b1a40057f2260ec3011cd9d","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.2.tgz","fileCount":11,"integrity":"sha512-ZHpoyazR9tuvJXzs76nBfPRqUFX2d5PlBZ0tBdRklmngnsNO/vj9fhVID8/5QXRUWJwIdRRJQ9fl8KdAboroTg==","signatures":[{"sig":"MEQCIEon4UDWppu2XqN73Ql+55Ns9tZTWj1j9+5Gdmwevp5gAiBcbeOKdiQAPXoDd7KiY8Nt/iE2xDXHQr6/UByOdkhXiQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":53079},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"687e8c5e62a515466116a61bf7d365a80bb3540a","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.4.1","vitest":"^4.1.8","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.60.1"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.2_1781016164675_0.8073777282142021","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.3","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.3","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"e6cbc1667b2fc98a8becbe8a0e43936740af5f2e","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.3.tgz","fileCount":13,"integrity":"sha512-GwWsXIsZ2d/bnERHUPST5mrZnFwXP3irxp2dfUphPZ0Yj/M97F7UhmDwqkfMR51vspNYtZIsZ/NqZTRKmof4Ag==","signatures":[{"sig":"MEQCIGTRKMn9S9vL2/+jmTcF6hxLZQDqTftuRcTpqRYtpyo8AiAadZbE0vft4Clx1s9V8MdoDQKgHtMbdqqYoQ8VmeGp7w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":84512},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"98a6c86c4087f7de8deab693564b24e555947d23","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.5.0","vitest":"^4.1.9","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.61.1"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.3_1781773287375_0.10202389758403307","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.5","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.5","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"b39e0402438bd8db545d9b7f1e83965a3523726f","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.5.tgz","fileCount":13,"integrity":"sha512-HNGSaYpXe8UyK4B7vgF/ZA1AHaSXJMhiliygF3fFddM/tT/6piSBG+XxA+saoDxcp23p3mcCdPpfqgEpFLEyYA==","signatures":[{"sig":"MEUCIQDlWMobj7Tpwm9jEiuD9yeGcdOsKqaiwdnK5rgJFOuJJgIgZeVG3iAhnLwHtSv2EvV9w1c6nilABkMHO6S7iWj4b3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":86983},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"93ad207f34e0cb385018151e5f8ddb828cf07aaa","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.5.0","vitest":"^4.1.9","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.61.1"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.5_1781789033442_0.5110425076793907","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.7","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.7","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"340bae27ef6e25572e41d9dd1b4c19622f1074ab","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.7.tgz","fileCount":13,"integrity":"sha512-yWidkwxDpfVxkWw+f2+WhB65YtGKdKmDha/ZVccGCpzbMW9Tic8WlaNR5RlP/bT3dE0fxW3TI5PkIlyPP+g9Nw==","signatures":[{"sig":"MEMCIHLKEG6MY+rgqmtkSZQlYCZmba/K+Ix31urA/8l1DE74Ah88y+qZmB+OaKyDySitLQYpP2JfaFeCVUJ7nUL3En2m","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":89157},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"93ad207f34e0cb385018151e5f8ddb828cf07aaa","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.5.0","vitest":"^4.1.9","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.61.1"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.7_1781792909542_0.7304839133970615","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.8","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.8","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"d20783f6232e2e3f40e95df646aec4ba5f869fe2","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.8.tgz","fileCount":13,"integrity":"sha512-D3/WePZMcyxP/QDmrWHG39ccqgrtRcLZBQ7oRJ4k9Q6EltAOAHG+L8G+TLhIqWdDO5j39PeFQKTc5K6wEqQAJw==","signatures":[{"sig":"MEQCIBDLO1+3H4xVqdKjl6YLWX+S04VqFvbePqRtziQZwVYNAiBCya2dd/Mn/gzzX392DQok+TXWJFYIza4BZeJ+/MIefg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91375},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"93ad207f34e0cb385018151e5f8ddb828cf07aaa","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.5.0","vitest":"^4.1.9","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.61.1"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.8_1781865743858_0.16076128613074392","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.9","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.9","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"038bace058c7eae5120739a477f8ff3b5ad93d3d","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.9.tgz","fileCount":13,"integrity":"sha512-WVrf2O8lOVPVfk6VbwBsky8MQEHm+XAHSzGPzDWLlbXN7dXzFPjCOtoJEsApRhypK4x/c1zpd08MfWKxX64gDQ==","signatures":[{"sig":"MEUCIQDPfCEtCiqRbg8wvyaxmIso79DIgJJPBojmNE9C0X9GjQIgCe2YRo65h9QqE0hcKZLzReOk0Uz/BR5vsdWmgmOxklo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":91375},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"93ad207f34e0cb385018151e5f8ddb828cf07aaa","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.5.0","vitest":"^4.1.9","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.61.1"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.9_1781865794130_0.23994006892862751","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.10","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.10","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"f8581857c7dcca09d1cbb59c7410df55b3f7f4e4","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.10.tgz","fileCount":14,"integrity":"sha512-FYOS5LVr/dKNGDy3bqzq1pKOotLZaf3ZR5GrtgTPw+DoZNGxjXwzBtJyAt0gaoYm8IHgBE+AzoRLP2niy7ZlKQ==","signatures":[{"sig":"MEUCIHGAhUkQw6RHLNjIkZ3Bgbxn16V9sjRjlyQjgpYbivxaAiEAgIJz2TLlztRha6Tb5VGVU0aHniI1JnZEAS4qJ3b6500=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111219},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"93ad207f34e0cb385018151e5f8ddb828cf07aaa","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.5.0","vitest":"^4.1.9","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.61.1"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.10_1781978930950_0.6766620075507392","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.11","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.11","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"97c3e74a69bb7dd5967367387e5eaad8cde2404c","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.11.tgz","fileCount":14,"integrity":"sha512-PYA7ZZoNPoMlAmcaUK3Pl3BQ76A+8vm1jFArLQ160S3mAQOciq+IlSQU/cs9I57UT4MbGep9H9lmm3kXeD21Lw==","signatures":[{"sig":"MEUCIQC8HDhs5b6H6ZVzqn08/OJRLFIVqrEvpm885tUW/QSPIgIgXS/k2jhJaKpnAFKzYMdCt5X80drVU0DflpyPKP/1Eok=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111215},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"93ad207f34e0cb385018151e5f8ddb828cf07aaa","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.5.0","vitest":"^4.1.9","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.61.1"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.11_1781980757963_0.27702763287503274","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.12","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.12","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"54b6ad027bd4b5edf98b9e2a9a9d4bee729ec7f2","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.12.tgz","fileCount":14,"integrity":"sha512-c+f0ICzEAx3TKrId630dZwyqhOOP+7sY1eQq0RKLn/ohVYglA+lY/5RJm8ep0d3q6DOwkeTHkGjJZ2p1iwLK7w==","signatures":[{"sig":"MEQCIAIEtqcoUbU+3Ec7LyADN5y0jHx69jdpcSRF/Lag7oirAiBLDkm2yVssvXqK+YwlWWzQZwrLgb+kLJ5XxdTQQmhwYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":111215},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"93ad207f34e0cb385018151e5f8ddb828cf07aaa","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.5.0","vitest":"^4.1.9","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.61.1"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.12_1781989620605_0.6416942466062223","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.13","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.13","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"f04db1696ed434fe831411ec0b2702b6ea6e37f7","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.13.tgz","fileCount":15,"integrity":"sha512-cHdBmi19DXonrMPhWOQjbuiaXCBn0/p3HpoZ7k8X315cTRYZuklJwLX2Sopqb6i4Wb/bqGzNKGT05zAdxBgcuw==","signatures":[{"sig":"MEQCIAXeupz/sQFAFZOn+IaF32CLFDLKFeVyYUZG3XtVMUTRAiAIe2nTihoDFGwuRbrU8SnpdiLctpBJ2PHJQ0JDWKUZxQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":124508},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"f7ba9d76e77bf5a19093dabcc30b7031ad11fd7b","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.5.0","vitest":"^4.1.9","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.61.1"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.13_1782112719330_0.8147842742050895","host":"s3://npm-registry-packages-npm-production"}},"0.1.15":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.15","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.15","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"834e5476f779be5a7166bb787a77d7502885aa83","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.15.tgz","fileCount":15,"integrity":"sha512-dCgf2HevedV8MocxhxlPDQAb1+XTAfdkySRg/2MgDxXyAfsQSgCGWlWBgn8jxB9AKYnqP/TwJZPvuDUpG9/2Ew==","signatures":[{"sig":"MEQCIAh2bKfjkrpRzzgU3nekD0OGmyeGLDNOkoCG8te7uupgAiA0/kZTc1AyD/nrl4kKWqQiT/wkKWTpxAGzptevodKz8g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":125001},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"1b3af1732484488394bcb1e86d5bb5652ee90d99","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.5.0","vitest":"^4.1.9","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.61.1"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.15_1782119191928_0.9618881800319197","host":"s3://npm-registry-packages-npm-production"}},"0.1.17":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.17","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.17","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"392aae5673532202dd65f5d3d46c8e915fdd5109","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.17.tgz","fileCount":16,"integrity":"sha512-/Ry90G6VVmvEkUIyhgt7VYTAsF2SdJssxGmdziB0JQuy4VkaltBjvUweh4hnWyNTYuiLeD7VsnBfc9n3ajLXhg==","signatures":[{"sig":"MEQCIG7aTkpPanNFZAkYWUKETyzWVpDheiV7Ei/BkBuC/R9yAiBSJbXdms4k9HqBC3euCPdmVU4+/sDxXVyewydBDRtI5A==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":141877},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"365044df9448285ee8a47f96851d6e4ee4d1156c","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.5.0","vitest":"^4.1.9","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.61.1"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.17_1782288473110_0.7557052947274985","host":"s3://npm-registry-packages-npm-production"}},"0.1.19":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.19","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.19","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"5dea9fd3c81fd3b039394ec09e9e2f88fd6374fe","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.19.tgz","fileCount":27,"integrity":"sha512-Y6tT9dS1Kr0grFIZJELM6KWtXVp2ZXWb7EcqIhXRPVuQGrCJlh+ljquI57V0Nvg+sq4LqwNUBvQXxV0xHWHDhQ==","signatures":[{"sig":"MEQCIERgRWUXG9VA3KfszxHhIpqI+gEMBt3QLA4eGbgYGDD+AiAJSi9AtRxWGOTLwLHqYbI2glIZTGE13V7RniK6HmIzVw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":188126},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"ecc06d6346f2b4e5da9eb39b50ab3bea20b6d9d9","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.6.0","vitest":"^4.1.9","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.62.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.19_1782738067874_0.3006553311729758","host":"s3://npm-registry-packages-npm-production"}},"0.1.20":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.20","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.20","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"92b242a70a0f98bffb80a94c30904a2edbfe13d9","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.20.tgz","fileCount":30,"integrity":"sha512-1kn18Yj6xb/qggZV+vfNsh3HDAayUQMnk3SKIOgkjMX9qeI839pIA2JZ4HSqIZ4DTNGVVEaV+wu8LJglC8YQJQ==","signatures":[{"sig":"MEYCIQC7OcP74UOBet4vPYmYn9QP5FAqWtY5PMMHTbpY1qB9KAIhAK7MLzsIxz9/Bk9691f3HQo/yagbn6lSDOFRe98REeBB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222227},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"852b508f6bd666e20999dbc9485c7c3f2802ae03","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.6.0","vitest":"^4.1.9","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.62.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.20_1782761969155_0.38862600348671417","host":"s3://npm-registry-packages-npm-production"}},"0.1.21":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.21","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.21","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"0c33d8b0761c431a5877c8a9308995260b006b5e","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.21.tgz","fileCount":30,"integrity":"sha512-bOFLoC1LJnrHszQPiM1eHZSgkR8o0LB7uox3Ld2bQuY66SKb0KZBgCO4msCtkVuP/48NkcfJeoNlj04EPxiYog==","signatures":[{"sig":"MEUCIQDJmho+9xCOOonJ9FoJhf21LRCtyV6FE/SurcoyoDV7hQIgZr7Gps8lpU9sadaqfNkpbJqBr5neziX1VafGkqkmTt4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":222227},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"b0af8a29967053defa68b49170ba81acdf5a7ba3","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.6.0","vitest":"^4.1.9","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"catalog:","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.62.1"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.21_1783333207554_0.26297618520099153","host":"s3://npm-registry-packages-npm-production"}},"0.1.22":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.22","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.22","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"986f5fd70b81206156da704b08ff7a4e6fd04a60","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.22.tgz","fileCount":32,"integrity":"sha512-ENCI/dfCGv7REUz31n9lvKJEKbrm81kM24wNOw1SGivsb/DBkR44385jXfy25UFVu+8RxGCCJviRIWYqx8VjtQ==","signatures":[{"sig":"MEYCIQCZHPwAhwWnTsspNrksZ5y3OPStqiJfbYHLvbH0/TM6KQIhAKpLjFKNVRE4BtXAHbIRU9JI7uomC7LBwJTl2lpKuvwj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244845},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"adaa8677290ad3116e0432fd986cbdd8217e79ef","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","vitest":"^4.1.9","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^26.1.2","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.65.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.22_1785311936709_0.7397124726379158","host":"s3://npm-registry-packages-npm-production"}},"0.1.23":{"name":"@slip-stream-kit/eslint-plugin","version":"0.1.23","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.1.23","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"1f252c4e07b4dbfa68b918dc648e475f2943e315","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.1.23.tgz","fileCount":32,"integrity":"sha512-dYn7wGVIfr3I91oRpseIST7CLe49mHSEPUYE4ac3ucueKCCD2nYhyQe923E/MWKARnJ+IwW47vfYSAECd0/DIA==","signatures":[{"sig":"MEUCIQCUc+Rrk1wjNU9p6HvlA5SODCrWIvaFdwBE/mYr7dC+ygIgUFYNuPJLCHaB6kbW8mC8l6RuWUixcldumaEx+hX72NA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":244845},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"adaa8677290ad3116e0432fd986cbdd8217e79ef","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"_npmVersion":"11.12.1","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.0","vitest":"^4.1.9","esbuild":"^0.28.0","typescript":"^6.0.3","@types/node":"^26.1.2","@wl/eslint-config":"workspace:*","@typescript-eslint/parser":"^8.65.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.1.23_1785311978405_0.03394918533267455","host":"s3://npm-registry-packages-npm-production"}},"0.3.15":{"name":"@slip-stream-kit/eslint-plugin","version":"0.3.15","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":"Arthur Saenko <arthur.saenz7@gmail.com> (https://github.com/ArthurSaenz)","license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.3.15","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"e2e3ce65b9787d773893a4cf47d5cbf86ef289b8","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.3.15.tgz","fileCount":33,"integrity":"sha512-+HS6oL0GG/XFopQbv328Mxs9U92DvKd0S/wX6OrT/FGHuUnEAvkRbIhxvFRHJtUKtABCMD2GOcTtzl6D3HVj7A==","signatures":[{"sig":"MEUCIEjB8wl6/CR1TJiPlO4sTW9RP2zA4K8g3LcRUD88eTtRAiEAzi+mXz4OLkQMvb2d2yAtDaLvDQXQViiswXGYZJowl1s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":245908},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.8.1","vitest":"^4.1.9","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.2.0","@wl/eslint-config":"0.1.0","@typescript-eslint/parser":"^8.66.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.3.15_1786946614191_0.07286951946622877","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@slip-stream-kit/eslint-plugin","version":"0.4.0","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":"Arthur Saenko <arthur.saenz7@gmail.com> (https://github.com/ArthurSaenz)","license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.4.0","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"b58e3adefc0df4dff317b5242adea3045f0d3139","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.4.0.tgz","fileCount":35,"integrity":"sha512-NdL5BH/1QYZ9z3p8fJ1eA5baNLn3YUzGmkILtSmcpH/TiNDbuaJdepfEroPQ+YW4KL6zhzs56BdII34YR7DhCQ==","signatures":[{"sig":"MEYCIQDWaax8n0V8x0nfs0yIaNyAuve/DumeDSElPfAiW/5EAQIhAJ6Knkdnb6/0NK4Iy/yxwnjjkFYSRA1lq4s3taP4LLVl","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265140},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"24.18.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.9.1","vitest":"^4.1.11","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.4.0","@wl/eslint-config":"0.1.0","@typescript-eslint/parser":"^8.68.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.4.0_1788624748257_0.35384442306213404","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@slip-stream-kit/eslint-plugin","version":"0.5.0","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":"Arthur Saenko <arthur.saenz7@gmail.com> (https://github.com/ArthurSaenz)","license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.5.0","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"8283b77e364e8370df8218a58195d7dfffb3c56e","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.5.0.tgz","fileCount":35,"integrity":"sha512-H9NSH5WjjrG9JzptgLmdgS76pXPT0ujBBqXzcSecBx5KjZ+IHLmmc65XqYuzFy0hN2PBuseGCodcnLe/KDhF4A==","signatures":[{"sig":"MEUCIH4OUODXwoLCq5vygIXTmjrunoXegHef5gs1T/S6s87yAiEAgxm7zSL55mmXXnuKefgRSnnMea1u2YteSOLuvoLZW40=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265136},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.0","@wl/eslint-config":"0.1.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.5.0_1789024756417_0.17042682325401515","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"@slip-stream-kit/eslint-plugin","version":"0.5.5","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":"Arthur Saenko <arthur.saenz7@gmail.com> (https://github.com/ArthurSaenz)","license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.5.5","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"4a0a15619feb2915ef18873fabcfb7ab00a17703","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.5.5.tgz","fileCount":35,"integrity":"sha512-TZ7hdn4HGZkXHAO6aFGrm/M/E2OmLGNaU6jdlQHxDnOOXvOz0IZBlheUbJk7hWq4nCCX5o+qPoHvAkrAHBSzgw==","signatures":[{"sig":"MEUCIQCSzkyrZSqe0z0tNES2+OhQm7e1PAYnmE9LdbedVMPt5AIgJAsmo+eG6NhaDWgVF/bm++BSYCW62Ob6/nR15VBu8Ts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCvzxJkkpla2DcFTR6C4LyOiDtThTUBBbAyQC/NlkasiQIhAOv9sdjBXw7/LrMQJT0x8ij9O3yGX4ELslJLSS9B6BiJ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265136},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"26.0.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.5.5_1789328993011_0.12403028271409133","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"@slip-stream-kit/eslint-plugin","version":"0.5.6","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":"Arthur Saenko <arthur.saenz7@gmail.com> (https://github.com/ArthurSaenz)","license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.5.6","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"88dfa51a8504318ddce3cf5b3cdbb1c77c32383f","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.5.6.tgz","fileCount":35,"integrity":"sha512-g/YKd3TkCZjl+XR7YAloGy1m3/M/IpTh/CP9O6GV3Rk4et23G1R8S5JOO1WWb1oorK1i+HAOAYV+Kw7tLuzZRA==","signatures":[{"sig":"MEUCIQD4+7U8fm/4MuJril0D9r0SQzyrN83MpD0U4CKjTf8YEAIgNT+xKogMZG4mxz1z8ytiLPig5NE/daHSDv3xLkl0iLY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDrvh3FTj9IYjocRQD9F7fHUXinQvm1BM2w7RbAu5FDSAIhAOtl/qnIJPjYDEWF5SmRiStdoFQKxRe+AEfpu5wZncGU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265136},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.5.6_1789337027364_0.6517915174938775","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@slip-stream-kit/eslint-plugin","version":"0.7.0","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":"Arthur Saenko <arthur.saenz7@gmail.com> (https://github.com/ArthurSaenz)","license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.7.0","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"7c63a3529753ed9295bf2c784136c89dcd680a1a","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.7.0.tgz","fileCount":35,"integrity":"sha512-zKk52mKRQn+CgijljZaOoEd6rFxFXNuPdc+Wy0s2qGwDUFEMeE4mOieop1IQZvbOzdFIEsbouVmdF/6J2spi2Q==","signatures":[{"sig":"MEQCIArmDhtDVSNG+ROO7vrypodmQB/W5giS/W4Bg2rQ+VTSAiBtdR76hWi5IbhZKNIDT70k6wmBH4lC4G/iyIJvBswYsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIED3o+HSX0KZAM5rHSzjHguHyy3rATSWJJByHb34Wpg5AiEAlI83o9qz1kJGMghh6ZKm8nuk/P1S2rWrdxm1kiFsS1c=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265136},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.7.0_1789384852712_0.46779145153649315","host":"s3://npm-registry-packages-npm-production"}},"0.7.7":{"name":"@slip-stream-kit/eslint-plugin","version":"0.7.7","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":"Arthur Saenko <arthur.saenz7@gmail.com> (https://github.com/ArthurSaenz)","license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.7.7","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"86e43e1ea8079ce8fde8762790d3bf84fee1a790","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.7.7.tgz","fileCount":35,"integrity":"sha512-HSWj9RFZm6HOn0zsP2UISFaiAwWzDxkjsKZ2NRra4sm6JVbCi/6TXeTK9nMwH89SRuGr0I/VCHUIS4v41uEwhA==","signatures":[{"sig":"MEUCIQDWaYjhz/xXpyEaY6k3dNe4yDBgHSielEmCy7MMwBHvlQIgByKjgNDp0FGo+lUVHNoTHq6Pi0OVNGjGt0+TOvRpKuQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIEvD/mv6H0N6wE+rbD7P06Jo7mgTdkLHXTG0/Tb2v9E0AiEAnbYhI3zFpVbHEbCZYtGiGYKE2ft1cYiY2wqYgjQndGQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265136},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.7.7_1789414614957_0.5514206118823319","host":"s3://npm-registry-packages-npm-production"}},"0.7.8":{"name":"@slip-stream-kit/eslint-plugin","version":"0.7.8","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":"Arthur Saenko <arthur.saenz7@gmail.com> (https://github.com/ArthurSaenz)","license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.7.8","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"78b38a13bebd4c01a60e5b853d307813cdcca905","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.7.8.tgz","fileCount":35,"integrity":"sha512-Mvnu1Wyc3zPjC5BjIRkY2PBLhcrdCvHFleqo1EqOl6vOy0Z4BTPNi0ha+O709T1FD4+LyaW+HvKYL9nYsTpkTg==","signatures":[{"sig":"MEUCIDM8wQOd49A7vQ/T217WBPu8qkgwqvFXPMFpBm1pXCRcAiEAhfQGKGOX53n3GHBIUaoHvJbhgfsQuoH59n9GRL2mKpA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGOAv99tnCTYKDZtgWwK3sjADUbzpIUfkkkFeqEG4ssfAiEAlAmJq8jz1IdZ49XSatwl+QDzQ5weRcAYemZHqWKHN/s=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265136},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.7.8_1789425295192_0.06644550871917954","host":"s3://npm-registry-packages-npm-production"}},"0.7.9":{"name":"@slip-stream-kit/eslint-plugin","version":"0.7.9","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":"Arthur Saenko <arthur.saenz7@gmail.com> (https://github.com/ArthurSaenz)","license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.7.9","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"3143d86dab8114f813f89f07379666d7cf7655ca","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.7.9.tgz","fileCount":35,"integrity":"sha512-Z6+RsauSn6KnBOConSQmk/g8VTDkLTtPEqSfJJmy9mJEdDDwwXCKJMnuk5te4ackM4/ZjLJw/vms53fAUfsE3Q==","signatures":[{"sig":"MEUCIQCDGVU3FVqYFd1Y6dCy9joyCWOTOfvHHNNXMeCZr/7TzgIgSn9g3G5g1U5W9VyHtTnElWcZF+8fyupa+uJViWlT7+o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGD224xu1e4RGTVMkmOgZXQf+siGrWY1/n8Q4EEHKwY/AiEAhUvuWu8lstb4b1iZKISCdH0OQj/Dl8iPIg3I2UhLw6Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265136},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.7.9_1789426328664_0.4627422938522332","host":"s3://npm-registry-packages-npm-production"}},"0.7.12":{"name":"@slip-stream-kit/eslint-plugin","version":"0.7.12","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":"Arthur Saenko <arthur.saenz7@gmail.com> (https://github.com/ArthurSaenz)","license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.7.12","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"e3e6b9f386600d094bff97d3a64b8a79b283b2e8","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.7.12.tgz","fileCount":35,"integrity":"sha512-FgI5BLi4ejF8mUO+RcWNbQE6mOKuNx14hOmgzl9Ca5potrzmFJLngpiZ8uFw0pJAeVXI8/NDlxAS2cHB+x+acA==","signatures":[{"sig":"MEUCIQDxK/9YoVobSd9hx/r1Dc/Z8J9I6YAX+Dieb7hMSkUneQIgE/LxdioF8Hod79U64yYjTl3AjRF4uVV/o09VM8l1mS0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFxM76h4SDRw49Oa4pEjNxQIkCBNbO6lAYpbXCGAWWYxAiEAsqHicTDpctGAEkM3xGhmUdG/XLTiWlJBl8HabKCpwsw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265139},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.7.12_1789468462402_0.3308900183451553","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@slip-stream-kit/eslint-plugin","version":"0.8.0","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":"Arthur Saenko <arthur.saenz7@gmail.com> (https://github.com/ArthurSaenz)","license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.8.0","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"9f398ef5d46eca6a2ce6883a1efe8c21d3416d08","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.8.0.tgz","fileCount":35,"integrity":"sha512-DJZOTk+43XePAbXM6UYR9OK/2xK2q6HqGYRfNa8JxfpasTe/obtw2GiVdd23ghHU3CXm5PZbnVq5dk1iJB+fDQ==","signatures":[{"sig":"MEYCIQDiV3jb9Mq8gyxwunDQoKP6su2kKP22jxOXmIO0TJyAYgIhAO7Ge/ko0T7WpgjHcHH6RRI/DF46C+ncV+ivlVEpODOU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC9iEQlEHDFDIXXf/Pc2XKyxXAlv81luTmAR3q9BSGa8AIhAJsbSrUKlD/OM4VQKdgzOnCNsrrSt+bspB3EbyINKMDY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265136},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.8.0_1789545483189_0.013401071694479905","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@slip-stream-kit/eslint-plugin","version":"0.9.0","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":"Arthur Saenko <arthur.saenz7@gmail.com> (https://github.com/ArthurSaenz)","license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.9.0","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"74fda5a8b6dfd6ef12886045b6bdaa8872583702","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.9.0.tgz","fileCount":35,"integrity":"sha512-qxootreckH/soAMzAGbjDLlSyrIS3zPP1yOGyLsoSauMm6u5Zgqqu9xc5fR3FztgQUYFckZj3jG8C5y2f01tjA==","signatures":[{"sig":"MEUCIQDImrbX2nd0olKItzDDvCaaKeeDlXb/1yd54+CJJ1ln0QIgFqt5OWTdMGM7ItulAQH3nK5FvtpOscRbWGcRUv28a7I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC7fX+bGZt7A5Y/JWl7wLSB2HFxCIFyaOiNUJsqcgg0OAIhAICUcwmXkziDk7tdNLv/S+SzPqjeGHoAe1E6q5kt3SNY","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265136},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.9.0_1789591599582_0.7354764992117404","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"@slip-stream-kit/eslint-plugin","version":"0.10.0","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":"Arthur Saenko <arthur.saenz7@gmail.com> (https://github.com/ArthurSaenz)","license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.10.0","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"508835f2309f8c3ccf9b871f2c2bcb2cee84db30","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.10.0.tgz","fileCount":35,"integrity":"sha512-Q8EnULCg2rbkvIp0vgBBQE898oqh1jG7U+v541JP6u0nEFPDT98YZtFYfgz9M3tp47RwV/uzbITjn50BCQkIKA==","signatures":[{"sig":"MEYCIQD4EzADjUZFU6o9PJwVNMYKskUdeN8OKftciYM7eUiOTQIhAO8HoSsJQcvAF+wDgnRKOn6jbEXw94MCaAMyGZILSu/g","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGTGQ5QsgL0Ssr98kroTym/ll9FARlsEf/weJp5WhBoiAiEA3AfhkHlim7gZQb3cr/JN3GQqT2D7LbUBSAwUR/FDrPc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":265139},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.10.0_1789629755011_0.4651004208125302","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"@slip-stream-kit/eslint-plugin","version":"0.11.0","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":"Arthur Saenko <arthur.saenz7@gmail.com> (https://github.com/ArthurSaenz)","license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.11.0","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"11dd44b1c31c1709dff15d7ed246a754173ff4fb","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.11.0.tgz","fileCount":39,"integrity":"sha512-dzAOu1uOBjPhsQ4ohiM2kq790TH4hfTmoUbG5ufIquHaE4/VgAXxjuSI3DBfgcx8X9yl0o+/UjbJPl/1m4Rf4g==","signatures":[{"sig":"MEUCIQCnIucaBHx4p2ioqRIKL4uVN4RyGsNfxdROjSbIIfOC2gIgKVfgj9y+ojzYHeutJ9Z51UMsTpfTPgTFKM9qqnOTmyk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIFXudSWMC2IFVaUUiNYB/lzqtFP664GlX6sxleTX3F7NAiEAk5y78wavuFUrTMsRhAskJh213CukeQSot3nHxY3oFZ8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318379},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@slip-stream-kit/config":"0.11.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.11.0_1789984943700_0.33188794538924604","host":"s3://npm-registry-packages-npm-production"}},"0.11.10":{"name":"@slip-stream-kit/eslint-plugin","version":"0.11.10","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":"Arthur Saenko <arthur.saenz7@gmail.com> (https://github.com/ArthurSaenz)","license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.11.10","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"dist":{"shasum":"451eaec70dd5f8ba88257fd8943fc8ad6671d91e","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.11.10.tgz","fileCount":39,"integrity":"sha512-N2G2dK0Oz8gQN+cpFewdmsHuOfPduLmFqshdGofTBh4lZr7PyCZ/zrYIE2Hb4KybIYLnDOkWksbkMSi7dy/+iA==","signatures":[{"sig":"MEUCIQDHNG0GBxn1rvtnGoBEtAzHZo2TG6AA2Bx0Jc/pVxbIlAIgYibWvYouF0aOU+VvGRnnwDNy+/WWNqPunhPmD8E8+Gw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQDBoUpzUQyvZafoUO2dc/OdPyQztCVFwGfhyJ8tK18dcAIgFsfZK77ImFv/B0OnGyH8KzWabdZIi4UVkhbwuNtZoDc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":318511},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@slip-stream-kit/config":"0.11.10","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.11.10_1790180332078_0.46544353160597196","host":"s3://npm-registry-packages-npm-production"}},"0.11.11":{"name":"@slip-stream-kit/eslint-plugin","version":"0.11.11","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.11.11","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"homepage":"https://github.com/ArthurSaenz/infra-kit#readme","bugs":{"url":"https://github.com/ArthurSaenz/infra-kit/issues"},"dist":{"shasum":"9aba8282b56135484452a8e1314c0e7c4dce14e2","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.11.11.tgz","fileCount":39,"integrity":"sha512-JyQlrj/X29yr7QzmtSGFMgXKVE6JtM2ijMG9dlLdfwIbOLgWSXTfKvnPd1sss2pUnlE59KIDx2Fs9Q6DCKf1bw==","signatures":[{"sig":"MEQCIDOIf1DTMCukrV9kBjpG+HxSsJYcoJwWy7B3u+oJJZujAiAHPRHGqyJi2BaKKr8rIQ4V88lWxjb1PrefN3skdRRgYw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@slip-stream-kit%2feslint-plugin@0.11.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":318664},"main":"dist/index.js","type":"module","_from":"file:/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.11.11.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:874d562b-2880-4cb6-b813-1ce0d034326b"}},"_resolved":"/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.11.11.tgz","_integrity":"sha512-JyQlrj/X29yr7QzmtSGFMgXKVE6JtM2ijMG9dlLdfwIbOLgWSXTfKvnPd1sss2pUnlE59KIDx2Fs9Q6DCKf1bw==","repository":{"url":"git+https://github.com/ArthurSaenz/infra-kit.git","type":"git","directory":"apps/infra-kit/eslint-plugin"},"_npmVersion":"11.19.0","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@slip-stream-kit/config":"0.11.11","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.11.11_1790448688502_0.09764500473571447","host":"s3://npm-registry-packages-npm-production"}},"0.11.12":{"name":"@slip-stream-kit/eslint-plugin","version":"0.11.12","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.11.12","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"homepage":"https://github.com/ArthurSaenz/infra-kit#readme","bugs":{"url":"https://github.com/ArthurSaenz/infra-kit/issues"},"dist":{"shasum":"0b70ae014ec7f650f9193ed557c20b4f58e89418","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.11.12.tgz","fileCount":39,"integrity":"sha512-2/qr73/QOXaBuCCq9PWwSARtYWrgkwCXvyoRG61SPBb+XCvoFCQ9HW6yDuLT1Rk86x0yapdBKa8nxnuijp+7yQ==","signatures":[{"sig":"MEUCIQDfLlihAX4PjgGVlkJoRpzrBSmuZmT191gOMB9E2RiVwwIgL9Coi4eT/wt/36dflfbpNEIT8rn9nj5mKv08umf7HmI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@slip-stream-kit%2feslint-plugin@0.11.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":318664},"main":"dist/index.js","type":"module","_from":"file:/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.11.12.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:874d562b-2880-4cb6-b813-1ce0d034326b"}},"_resolved":"/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.11.12.tgz","_integrity":"sha512-2/qr73/QOXaBuCCq9PWwSARtYWrgkwCXvyoRG61SPBb+XCvoFCQ9HW6yDuLT1Rk86x0yapdBKa8nxnuijp+7yQ==","repository":{"url":"git+https://github.com/ArthurSaenz/infra-kit.git","type":"git","directory":"apps/infra-kit/eslint-plugin"},"_npmVersion":"11.19.0","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@slip-stream-kit/config":"0.11.12","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.11.12_1790457937343_0.9228486729631975","host":"s3://npm-registry-packages-npm-production"}},"0.11.15":{"name":"@slip-stream-kit/eslint-plugin","version":"0.11.15","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.11.15","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"homepage":"https://github.com/ArthurSaenz/infra-kit#readme","bugs":{"url":"https://github.com/ArthurSaenz/infra-kit/issues"},"dist":{"shasum":"ccca18395660db736563bfbd0912c61507cbe651","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.11.15.tgz","fileCount":48,"integrity":"sha512-cf3d0lN8OUQLpLBj13ik3o64uQXV78r3ACLjt6VVmX2atb/JZazfv8/wroEAhJPfMWItLbSHnO7wBcutw1mUpg==","signatures":[{"sig":"MEQCIBtXYgxzKeVTqbDQkrz+cGY21b2dRgOGHkC2BAcWt8rLAiAtE5orrKUGv3GcflDY9u7xRfpVqjlluKMnDZGzYVKkCw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@slip-stream-kit%2feslint-plugin@0.11.15","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367397},"main":"dist/index.js","type":"module","_from":"file:/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.11.15.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:874d562b-2880-4cb6-b813-1ce0d034326b"}},"_resolved":"/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.11.15.tgz","_integrity":"sha512-cf3d0lN8OUQLpLBj13ik3o64uQXV78r3ACLjt6VVmX2atb/JZazfv8/wroEAhJPfMWItLbSHnO7wBcutw1mUpg==","repository":{"url":"git+https://github.com/ArthurSaenz/infra-kit.git","type":"git","directory":"apps/infra-kit/eslint-plugin"},"_npmVersion":"11.19.0","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@slip-stream-kit/config":"0.11.15","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.11.15_1790541043829_0.18322502423647102","host":"s3://npm-registry-packages-npm-production"}},"0.11.16":{"name":"@slip-stream-kit/eslint-plugin","version":"0.11.16","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.11.16","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"homepage":"https://github.com/ArthurSaenz/infra-kit#readme","bugs":{"url":"https://github.com/ArthurSaenz/infra-kit/issues"},"dist":{"shasum":"3fddf6c117373033b55c8c0aa13f9054da077af1","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.11.16.tgz","fileCount":48,"integrity":"sha512-QfhclyGTVn2gOihMflF/MNspZ/BcINMxUWQhI4y45xBcRI12d8ZaEdIu5qb6QbIjUQv0ry2uDYXnQx973SOYeA==","signatures":[{"sig":"MEUCIQC7cNnihAPqQVTBuDe71NtMuVOyK/P98LeWmezWxLETwAIga6tEbPgWfOV09Z2bwa2tzNL5j4K0ESIxeRlGpgNnuaM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@slip-stream-kit%2feslint-plugin@0.11.16","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367397},"main":"dist/index.js","type":"module","_from":"file:/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.11.16.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:874d562b-2880-4cb6-b813-1ce0d034326b"}},"_resolved":"/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.11.16.tgz","_integrity":"sha512-QfhclyGTVn2gOihMflF/MNspZ/BcINMxUWQhI4y45xBcRI12d8ZaEdIu5qb6QbIjUQv0ry2uDYXnQx973SOYeA==","repository":{"url":"git+https://github.com/ArthurSaenz/infra-kit.git","type":"git","directory":"apps/infra-kit/eslint-plugin"},"_npmVersion":"11.19.0","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@slip-stream-kit/config":"0.11.16","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.11.16_1790543025207_0.5704262638312791","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"@slip-stream-kit/eslint-plugin","version":"0.13.0","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.13.0","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"homepage":"https://github.com/ArthurSaenz/infra-kit#readme","bugs":{"url":"https://github.com/ArthurSaenz/infra-kit/issues"},"dist":{"shasum":"882da243f50863092d902fe88dea0ed082f2634e","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.13.0.tgz","fileCount":48,"integrity":"sha512-xiWAOdy/LVJNfc20yHI09uHy2L21KNpH0L6nDQp/MHdZMsrL1xi6g+mQ/6dZc3FTwqZJnPu3YGtPsjKwO/9N9A==","signatures":[{"sig":"MEUCIGZbMMnWy+wGcgNKGcfszR5gzyJt1/QafnEz2Gm4hgm2AiEAkfSAmnlWsKdCdY4ahFFcVne0EzEhIJ7HLOgbg5son1k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@slip-stream-kit%2feslint-plugin@0.13.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":367393},"main":"dist/index.js","type":"module","_from":"file:/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.13.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"trustedPublisher":{"id":"github","oidcConfigId":"oidc:874d562b-2880-4cb6-b813-1ce0d034326b"}},"_resolved":"/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.13.0.tgz","_integrity":"sha512-xiWAOdy/LVJNfc20yHI09uHy2L21KNpH0L6nDQp/MHdZMsrL1xi6g+mQ/6dZc3FTwqZJnPu3YGtPsjKwO/9N9A==","repository":{"url":"git+https://github.com/ArthurSaenz/infra-kit.git","type":"git","directory":"apps/infra-kit/eslint-plugin"},"_npmVersion":"11.19.0","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@slip-stream-kit/config":"0.13.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.13.0_1790661923112_0.7021914819552024","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"@slip-stream-kit/eslint-plugin","version":"0.14.0","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.14.0","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"homepage":"https://github.com/ArthurSaenz/infra-kit#readme","bugs":{"url":"https://github.com/ArthurSaenz/infra-kit/issues"},"dist":{"shasum":"758149dfe043937dd5c9ebe4704717693662c699","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.14.0.tgz","fileCount":57,"integrity":"sha512-2Ym7Z0kWBUI27sVZEMU6FGSnMt4MGvQDRpO/WKlg7DkKirGETFDRBguuoe4O6xZY6WRcZ5QXO1yCDmJA1srIPA==","signatures":[{"sig":"MEQCIDrm7+aTah7u2Gum66MR40vjqbl2e+e0QgJvq2HWUUVJAiAj5evhGYYlQEPTKgAF8nDe9RDJQaA/JM48A6YbYFZkSw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@slip-stream-kit%2feslint-plugin@0.14.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":455001},"main":"dist/index.js","type":"module","_from":"file:/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.14.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"trustedPublisher":{"id":"github","oidcConfigId":"874d562b-2880-4cb6-b813-1ce0d034326b"}},"_resolved":"/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.14.0.tgz","_integrity":"sha512-2Ym7Z0kWBUI27sVZEMU6FGSnMt4MGvQDRpO/WKlg7DkKirGETFDRBguuoe4O6xZY6WRcZ5QXO1yCDmJA1srIPA==","repository":{"url":"git+https://github.com/ArthurSaenz/infra-kit.git","type":"git","directory":"apps/infra-kit/eslint-plugin"},"_npmVersion":"11.19.0","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@slip-stream-kit/config":"0.14.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.14.0_1790794071531_0.7835677123729059","host":"s3://npm-registry-packages-npm-production"}},"0.15.0":{"name":"@slip-stream-kit/eslint-plugin","version":"0.15.0","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.15.0","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"homepage":"https://github.com/ArthurSaenz/infra-kit#readme","bugs":{"url":"https://github.com/ArthurSaenz/infra-kit/issues"},"dist":{"shasum":"0b32ae29b63337f5ed4df9425bbeaafc369ef9b0","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.15.0.tgz","fileCount":57,"integrity":"sha512-bX8HRGWrl4T6RGMQBYP3xD8vCdiH/lHmpKvquqh0k0cD8wbQQMy2oy3ao4zzh+deRkV9ass3uuWc47v4E6etTg==","signatures":[{"sig":"MEYCIQD8HI0c0xCKnljdPD3sRGBPUmebA5gl7h2maTpx+Z8NGQIhAL5m80N46rViaGrxaf9nSejTsN4ZAH5tN6x0iMtwDhoB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@slip-stream-kit%2feslint-plugin@0.15.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":455001},"main":"dist/index.js","type":"module","_from":"file:/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.15.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"trustedPublisher":{"id":"github","oidcConfigId":"874d562b-2880-4cb6-b813-1ce0d034326b"}},"_resolved":"/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.15.0.tgz","_integrity":"sha512-bX8HRGWrl4T6RGMQBYP3xD8vCdiH/lHmpKvquqh0k0cD8wbQQMy2oy3ao4zzh+deRkV9ass3uuWc47v4E6etTg==","repository":{"url":"git+https://github.com/ArthurSaenz/infra-kit.git","type":"git","directory":"apps/infra-kit/eslint-plugin"},"_npmVersion":"11.19.0","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@slip-stream-kit/config":"0.15.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.15.0_1791068750722_0.6485012938388954","host":"s3://npm-registry-packages-npm-production"}},"0.17.0":{"name":"@slip-stream-kit/eslint-plugin","version":"0.17.0","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","_id":"@slip-stream-kit/eslint-plugin@0.17.0","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"homepage":"https://github.com/ArthurSaenz/infra-kit#readme","bugs":{"url":"https://github.com/ArthurSaenz/infra-kit/issues"},"dist":{"shasum":"0f479a1b29c01d393be5f1c77d9ccd7e97ee9503","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.17.0.tgz","fileCount":57,"integrity":"sha512-N1AhjX4mEJqfsT4iN9X8H5ZnDkMG1YrqQwy4fPGduL//oT/AqB7zTX0vQtWSbOIiEJ6YwE7JIIsyKwwRN03ECg==","signatures":[{"sig":"MEQCIClUJwTWeqrjA3UclVgL/xIYSuEkRoPNVYnpbWrYSwyoAiAlA5xBVpPpbisfCyQ5KQezekkfiV0PAjmtWIncSouBsg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@slip-stream-kit%2feslint-plugin@0.17.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":455001},"main":"dist/index.js","type":"module","_from":"file:/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.17.0.tgz","types":"dist/index.d.ts","module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","approver":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"},"trustedPublisher":{"id":"github","oidcConfigId":"874d562b-2880-4cb6-b813-1ce0d034326b"}},"_resolved":"/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.17.0.tgz","_integrity":"sha512-N1AhjX4mEJqfsT4iN9X8H5ZnDkMG1YrqQwy4fPGduL//oT/AqB7zTX0vQtWSbOIiEJ6YwE7JIIsyKwwRN03ECg==","repository":{"url":"git+https://github.com/ArthurSaenz/infra-kit.git","type":"git","directory":"apps/infra-kit/eslint-plugin"},"_npmVersion":"11.19.0","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@slip-stream-kit/config":"0.17.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"tmp":"tmp/eslint-plugin_0.17.0_1791111132650_0.7313502172938604","host":"s3://npm-registry-packages-npm-production"}},"0.16.0":{"_id":"@slip-stream-kit/eslint-plugin@0.16.0","bugs":{"url":"https://github.com/ArthurSaenz/infra-kit/issues"},"dist":{"shasum":"90897c43e9fea199813bd2dddda309d8a5403e07","tarball":"https://registry.npmjs.org/@slip-stream-kit/eslint-plugin/-/eslint-plugin-0.16.0.tgz","integrity":"sha512-GEsfnaWYJlePLL6pfJQhlWJlrdrELeE/SvpS8IgRH472f/NYeGRbZwaciofeQkJ93dZd9NGu/1aqI0rPr1di5Q==","fileCount":57,"unpackedSize":455001,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@slip-stream-kit%2feslint-plugin@0.16.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAIh/e4NBkP0m+5YVmXyYTncBc2Z9PrnNzMCk6A456XtAiAMvpYsuaNInA1fnc5L9F1eJoH4DAs8R5DKCREy3soaMQ=="}]},"main":"dist/index.js","name":"@slip-stream-kit/eslint-plugin","type":"module","_from":"file:/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.16.0.tgz","types":"dist/index.d.ts","author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"module":"dist/index.js","engines":{"node":">=24.x"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./package.json":"./package.json"},"license":"MIT","scripts":{"qa":"pnpm run prettier-check && pnpm run eslint-check && pnpm run ts-check && pnpm run test && echo ✅ Success","fix":"pnpm run prettier-fix && pnpm run eslint-fix && pnpm run qa","test":"pnpm exec vitest run --reporter=minimal","build":"pnpm run clean-artifacts && node ./scripts/build.js","ts-check":"tsc --noEmit","eslint-fix":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src --fix","test-watch":"pnpm exec vitest --watch --silent passed-only","clean-cache":"rm -rf node_modules/.cache .eslintcache tsconfig.tsbuildinfo .turbo","test-report":"pnpm exec vitest run --coverage --silent passed-only","eslint-check":"pnpm exec eslint --cache --quiet --report-unused-disable-directives ./src","prettier-fix":"pnpm exec prettier **/* --write --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","prettier-check":"pnpm exec prettier **/* --check --no-error-on-unmatched-pattern --log-level silent --ignore-path ../../../.prettierignore","clean-artifacts":"rm -rf dist","infra-kit-check":"pnpm exec infra-kit audit"},"version":"0.16.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"874d562b-2880-4cb6-b813-1ce0d034326b"},"approver":{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}},"homepage":"https://github.com/ArthurSaenz/infra-kit#readme","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"_resolved":"/home/runner/work/infra-kit/infra-kit/release-artifacts/slip-stream-kit-eslint-plugin-0.16.0.tgz","_integrity":"sha512-GEsfnaWYJlePLL6pfJQhlWJlrdrELeE/SvpS8IgRH472f/NYeGRbZwaciofeQkJ93dZd9NGu/1aqI0rPr1di5Q==","repository":{"url":"git+https://github.com/ArthurSaenz/infra-kit.git","type":"git","directory":"apps/infra-kit/eslint-plugin"},"_npmVersion":"11.19.0","description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","directories":{},"maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"_nodeVersion":"24.21.0","publishConfig":{"access":"public"},"devDependencies":{"eslint":"^10.10.0","vitest":"^5.0.0","esbuild":"^0.28.2","typescript":"^6.0.3","@types/node":"^26.5.1","@wl/eslint-config":"0.1.0","@slip-stream-kit/config":"0.16.0","@typescript-eslint/parser":"^8.70.0"},"peerDependencies":{"eslint":">=9"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eslint-plugin_0.16.0_1791111157966_0.9422214144955448"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-09T09:32:57.712Z","modified":"2026-10-04T10:52:38.537Z","0.1.0":"2026-06-09T09:32:58.057Z","0.1.1":"2026-06-09T12:53:34.079Z","0.1.2":"2026-06-09T14:42:44.827Z","0.1.3":"2026-06-18T09:01:27.512Z","0.1.5":"2026-06-18T13:23:53.591Z","0.1.7":"2026-06-18T14:28:29.679Z","0.1.8":"2026-06-19T10:42:23.993Z","0.1.9":"2026-06-19T10:43:14.308Z","0.1.10":"2026-06-20T18:08:51.093Z","0.1.11":"2026-06-20T18:39:18.126Z","0.1.12":"2026-06-20T21:07:00.786Z","0.1.13":"2026-06-22T07:18:39.470Z","0.1.15":"2026-06-22T09:06:32.071Z","0.1.17":"2026-06-24T08:07:53.292Z","0.1.19":"2026-06-29T13:01:08.019Z","0.1.20":"2026-06-29T19:39:29.286Z","0.1.21":"2026-07-06T10:20:07.710Z","0.1.22":"2026-07-29T07:58:56.852Z","0.1.23":"2026-07-29T07:59:38.535Z","0.3.15":"2026-08-17T06:03:34.338Z","0.4.0":"2026-09-05T16:12:28.387Z","0.5.0":"2026-09-10T07:19:16.575Z","0.5.5":"2026-09-13T19:49:53.094Z","0.5.6":"2026-09-13T22:03:47.447Z","0.7.0":"2026-09-14T11:20:52.796Z","0.7.7":"2026-09-14T19:36:55.086Z","0.7.8":"2026-09-14T22:34:55.373Z","0.7.9":"2026-09-14T22:52:08.761Z","0.7.12":"2026-09-15T10:34:22.489Z","0.8.0":"2026-09-16T07:58:03.279Z","0.9.0":"2026-09-16T20:46:39.666Z","0.10.0":"2026-09-17T07:22:35.096Z","0.11.0":"2026-09-21T10:02:23.803Z","0.11.10":"2026-09-23T16:18:52.217Z","0.11.11":"2026-09-26T18:51:28.589Z","0.11.12":"2026-09-26T21:25:37.443Z","0.11.15":"2026-09-27T20:30:43.918Z","0.11.16":"2026-09-27T21:03:45.316Z","0.13.0":"2026-09-29T06:05:23.227Z","0.14.0":"2026-09-30T18:47:51.629Z","0.15.0":"2026-10-03T23:05:50.821Z","0.17.0":"2026-10-04T10:52:12.761Z","0.16.0":"2026-10-04T10:52:38.120Z"},"bugs":{"url":"https://github.com/ArthurSaenz/infra-kit/issues"},"author":{"url":"https://github.com/ArthurSaenz","name":"Arthur Saenko","email":"arthur.saenz7@gmail.com"},"license":"MIT","homepage":"https://github.com/ArthurSaenz/infra-kit#readme","keywords":["eslint","eslintplugin","eslint-plugin","react","props","destructuring"],"repository":{"url":"git+https://github.com/ArthurSaenz/infra-kit.git","type":"git","directory":"apps/infra-kit/eslint-plugin"},"description":"Custom ESLint rules enforcing the white-label frontend architecture conventions","maintainers":[{"name":"arthur.saenz","email":"arthur.saenz7@gmail.com"}],"readme":"# @wl/eslint-plugin\n\nCustom ESLint rules that enforce the white-label frontend architecture conventions.\n\n## Installation\n\n```bash\npnpm add -D @wl/eslint-plugin\n```\n\n## Usage (flat config)\n\nEnable everything via the recommended preset. It is an array of config blocks\n(rules scoped to `*.tsx`, with `component-file-order` and `props-type-name`\nturned off for `*.stories.{ts,tsx}`), so spread it:\n\n```js\n// eslint.config.js\nimport wl from '@wl/eslint-plugin'\n\nexport default [...wl.configs.recommended]\n```\n\nOr register the plugin and pick rules manually:\n\n```js\nimport wl from '@wl/eslint-plugin'\n\nexport default [\n  {\n    plugins: { '@wl': wl },\n    rules: {\n      '@wl/props-destructuring-newline': 'error',\n    },\n  },\n]\n```\n\n## Rules\n\n### `props-destructuring-newline`\n\n🔧 Automatically fixable.\n\nReact components must accept a single `props` parameter and destructure it on\nits own line inside the body, instead of destructuring inline in the parameter\nlist.\n\n```tsx\n// ❌ Incorrect\nconst UserCard = ({ user, className }: UserCardProps) => {\n  return <div className={className}>{user.name}</div>\n}\n\n// ✅ Correct\nconst UserCard = (props: UserCardProps) => {\n  const { user, className } = props\n\n  return <div className={className}>{user.name}</div>\n}\n```\n\nA function is treated as a component when its name is PascalCase (looking\nthrough `memo`/`forwardRef`/`observer` wrappers) or when it returns JSX. Hooks,\nplain helpers, and any function whose first parameter is not an object pattern\nare ignored.\n\n### `props-destructuring-blank-line`\n\n🔧 Automatically fixable.\n\nRequire a blank line after the `const { ... } = props` destructuring statement\nat the top of a component body.\n\n```tsx\n// ❌ Incorrect\nconst UserCard = (props: UserCardProps) => {\n  const { user, className } = props\n  return <div className={className}>{user.name}</div>\n}\n\n// ✅ Correct\nconst UserCard = (props: UserCardProps) => {\n  const { user, className } = props\n\n  return <div className={className}>{user.name}</div>\n}\n```\n\nThe rule only triggers inside components (same detection as above) and only for\na statement that destructures the `props` identifier. It is a no-op when the\ndestructuring is the last statement in the body.\n\n### `props-type-reference`\n\nA React component's props parameter must use a **named type** (e.g.\n`ButtonProps`) rather than an inline object type literal. This keeps props types\ndiscoverable, reusable, and consistent with the `ComponentNameProps` naming\nconvention. Report-only (it does not auto-extract the type).\n\n```tsx\n// ❌ Incorrect — inline object type on the props parameter\nconst Button = (props: { label: string }) => <button>{props.label}</button>\nfunction Card({ title }: { title: string }) {\n  return <div>{title}</div>\n}\n\n// ✅ Correct — a named type reference\nconst Button = (props: ButtonProps) => <button>{props.label}</button>\nfunction Card({ title }: CardProps) {\n  return <div>{title}</div>\n}\n```\n\nA function is treated as a component with the same detection as the rules above\n(PascalCase name through `memo`/`forwardRef`/`observer` wrappers, or a JSX\nreturn). The message suggests `<ComponentName>Props` when the component name is\nresolvable, and a generic phrasing for anonymous components.\n\nLimitations (v1): only a bare inline object type (`{ ... }`) on the first\nparameter is flagged. An intersection or union that merely _contains_ a literal\n(e.g. `Base & { x: number }`) is left alone. A default parameter value\n(`(props: { x } = {})`) is still flagged.\n\n#### Option: `paths` / `ignore` (optional)\n\nSame glob semantics as `component-file-order`: `paths` restricts the rule to\nmatching files, `ignore` skips matching files (and takes precedence over\n`paths`).\n\n```js\n{\n  rules: {\n    '@wl/props-type-reference': ['error', { ignore: ['**/*.stories.tsx'] }],\n  },\n}\n```\n\n### `props-type-name`\n\nA React component's props type must be named **`<ComponentName>Props`** (e.g.\n`ButtonProps` for `Button`). This complements `props-type-reference`: that rule\nrequires a _named_ type (not an inline literal); this rule requires that name to\nfollow the convention. Report-only.\n\n```tsx\n// ❌ Incorrect — props type does not match the component name\nconst Button = (props: Props) => <button>{props.label}</button>\nfunction Card({ title }: CardConfig) {\n  return <div>{title}</div>\n}\n\n// ✅ Correct — `<ComponentName>Props`\nconst Button = (props: ButtonProps) => <button>{props.label}</button>\nfunction Card({ title }: CardProps) {\n  return <div>{title}</div>\n}\n```\n\nThe component is detected the same way as the other rules (PascalCase name\nthrough `memo`/`forwardRef`/`observer` wrappers, or a JSX return). Only a simple\nnamed type reference on the first parameter is checked: inline object types are\nthe `props-type-reference` rule's concern, and anonymous components, untyped\nprops, and qualified/generic annotations (`NS.Props`, `FC<Props>`) are left\nalone. An imported props type with a non-conventional name is still flagged —\nuse `paths`/`ignore` to exempt it.\n\nThe recommended preset turns this rule **off for `*.stories.{ts,tsx}`**: story\ntemplates legitimately reference the component's own props type (e.g.\n`const Template = (args: ButtonProps) => ...`) rather than `<TemplateName>Props`.\n\n#### Option: `paths` / `ignore` (optional)\n\nSame glob semantics as `component-file-order`: `paths` restricts the rule to\nmatching files, `ignore` skips matching files (and takes precedence over\n`paths`).\n\n```js\n{\n  rules: {\n    '@wl/props-type-name': ['error', { ignore: ['**/*.stories.tsx'] }],\n  },\n}\n```\n\n### `component-file-order`\n\nEnforce a strict top-level order in files that contain a React component:\n**imports → component props interface/type → component declaration**, with the\nprops interface declared **immediately before** the component — no constants,\nhelpers, or other declarations wedged between them. Helpers are allowed _after_\nthe component (or between two separate component blocks). Report-only (it does\nnot auto-reorder code).\n\n```tsx\n// ❌ Incorrect — interface before imports, or component before its interface\ninterface CardProps { title: string }\nimport { cn } from '#root/lib/utils'\n\n// ✅ Correct\nimport { cn } from '#root/lib/utils'\n\ninterface CardProps {\n  title: string\n}\n\nconst Card = (props: CardProps) => {\n  const { title } = props\n\n  return <div className={cn('card')}>{title}</div>\n}\n```\n\nThe rule activates only when the file actually contains a component. A\ncomponent's props interface is matched by the **type its parameter actually\nreferences** (e.g. `Props` in `(props: Props)`), not by a name convention — so an\ninterface named anything is enforced, as long as the component uses it. (When the\nparameter has no resolvable named type, the rule falls back to looking for a\n`<ComponentName>Props` interface.)\n\nWhen the first component's props type is **imported** (e.g.\n`import type { CardProps } from './types'`) instead of declared in the file,\nthere is no in-file interface to anchor against — so the component itself must\nsit immediately after the imports, with no stray top-level definitions wedged in\nbetween. Only the first component is anchored this way.\n\n```tsx\n// ❌ Incorrect — props imported, but a stray const sits before the component\nimport { cn } from '#root/lib/utils'\nimport type { CardProps } from './types'\n\nconst SOMETHING = 1\n\nconst Card = (props: CardProps) => <div className={cn('card')}>{props.title}</div>\n\n// ✅ Correct — component immediately after the imports\nimport { cn } from '#root/lib/utils'\nimport type { CardProps } from './types'\n\nconst Card = (props: CardProps) => <div className={cn('card')}>{props.title}</div>\n```\n\n#### Option: `paths` (optional)\n\nRestrict the rule to specific files via glob patterns. When omitted, it runs on\nevery file (you can also scope it the usual way with flat-config `files`).\n\n```js\n{\n  rules: {\n    '@wl/component-file-order': ['error', { paths: ['**/features/**', 'apps/*/ui/**'] }],\n  },\n}\n```\n\nGlob support: `*` matches within a path segment, `**` matches across segments,\n`?` matches a single character. A file matches if any pattern matches its path.\n\n### `component-arrow-function`\n\nReact components must be declared as **arrow functions**, not `function`\ndeclarations or function expressions. This keeps component definitions consistent\nacross features and components. Report-only (it does not auto-convert the\nfunction — hoisting, generics, and default-export semantics make a safe autofix\nnon-trivial).\n\n```tsx\n// ❌ Incorrect — function declaration\nfunction Card(props: CardProps) {\n  return <div>{props.title}</div>\n}\n\n// ❌ Incorrect — function expression\nconst Card = function (props: CardProps) {\n  return <div>{props.title}</div>\n}\n\n// ✅ Correct — arrow function (memo/forwardRef wrappers are fine)\nconst Card = (props: CardProps) => <div>{props.title}</div>\nconst Memoized = memo((props: CardProps) => <div>{props.title}</div>)\n```\n\nA function is treated as a component with the same detection as the rules above\n(PascalCase name through `memo`/`forwardRef`/`observer` wrappers, or a JSX\nreturn) — so a PascalCase function is flagged even when it does not return JSX.\nThe message names the component when resolvable and uses a generic `component`\nphrasing for anonymous defaults (e.g. `export default memo(function () { ... })`).\nOnly top-level declarations are inspected; re-exports (`export { Foo }`) and\n`export default Foo` are governed at the declaration site.\n\nThe `recommended` preset enables this rule for `*.tsx` with a default\n`ignore` of `['**/pages/**', '**/routes/**']`, since page and route modules\ncommonly use `function` declarations (and framework conventions such as\ndefault-exported page/route functions).\n\n#### Option: `paths` / `ignore` (optional)\n\nSame glob semantics as `component-file-order`: `paths` restricts the rule to\nmatching files, `ignore` skips matching files (and takes precedence over\n`paths`). Use `ignore` to exclude pages and routes (override the preset default\nto add your own, e.g. an `app/` router):\n\n```js\n{\n  rules: {\n    '@wl/component-arrow-function': ['error', { ignore: ['**/pages/**', '**/routes/**', '**/app/**'] }],\n  },\n}\n```\n\n### `max-jsx-return-size`\n\nWarn when a single component **return** renders too many JSX elements. Large\nreturn blocks are hard to scan; the fix is to extract part of the markup into a\nvariable or a sub-component. Report-only — the remedy is left to the developer\n(no autofix), because safely extracting JSX touches scope, hooks, and keys.\n\n```tsx\n// ❌ Incorrect — one return renders too many elements (default max 20)\nconst Dashboard = () => (\n  <div>\n    <header>…</header>\n    <main>… lots of nested markup …</main>\n    <footer>…</footer>\n  </div>\n)\n\n// ✅ Correct — extract parts into variables or sub-components\nconst Dashboard = () => {\n  const header = <header>…</header>\n  const footer = <footer>…</footer>\n\n  return (\n    <div>\n      {header}\n      <Main />\n      {footer}\n    </div>\n  )\n}\n```\n\nThe metric is a **count of `JSXElement` nodes in the returned expression** —\nformatting-independent (Prettier reflow never changes the verdict). Each return\nin a component is measured on its own, so a small guard such as\n`if (loading) return <Spinner />` is never penalised by a large sibling return.\n\nCounting rules:\n\n- **Extraction lowers the count.** JSX hoisted into a variable is referenced as\n  `{header}` (a JSX expression container, not a `JSXElement`), so it is not\n  counted — extracting strictly reduces the number.\n- **Fragments are free.** `<>…</>` contributes `0`; its children still count.\n- **Inline-callback JSX counts** in the parent return: `<ul>{items.map(() => <li />)}</ul>`\n  counts `<ul>` and `<li>` (extract a `<Row />` sub-component to reduce it).\n- **Conditional branches are summed:** `cond ? <A /> : <B />` counts both sides.\n- **JSX in attributes is counted:** `<Foo icon={<Icon />} />` counts `Foo` and `Icon`.\n\nOnly **top-level declared** components are inspected (same as\n`component-arrow-function`), so anonymous inline callbacks are never reported on\ntheir own. A top-level JSX-returning helper (e.g. `const renderRow = () => <li />`)\nis treated as a component and measured. The message names the component when\nresolvable and uses a generic `component` for anonymous defaults.\n\n**Actionable message.** When one block dominates the return, the message points\nat it — its tag, line, and element count — so a human (or an automated lint →\nfix → lint loop) knows exactly what to lift out:\n\n```\nDashboard renders 28 JSX elements in one return (max 20). Extract the largest\nblock — <section> at line 14 (12 elements) — into a variable or a sub-component.\n```\n\nWhen no single block dominates (e.g. many flat sibling elements), there is\nnothing useful to point at, so the message instead advises splitting the return\ninto smaller sub-components.\n\n#### Option: `maxElements` (optional)\n\nThe element ceiling before the rule reports. Defaults to `20`. Only counts\nstrictly greater than the ceiling are reported (`count === max` is allowed).\n\n```js\n{\n  rules: {\n    '@wl/max-jsx-return-size': ['error', { maxElements: 25 }],\n  },\n}\n```\n\n#### Option: `paths` / `ignore` (optional)\n\nSame glob semantics as the other rules: `paths` restricts the rule to matching\nfiles, `ignore` skips matching files (and takes precedence over `paths`).\n\n### `max-components-per-file`\n\nCaps how many React components a single file may declare; extra components\nbelong in their own files. This keeps files focused and discoverable instead of\ngrowing into multi-component junk drawers.\n\n```tsx\n// ❌ Incorrect — 5 components in one file (default ceiling is 4)\nconst A = () => <div />\nconst B = () => <div />\nconst C = () => <div />\nconst D = () => <div />\nconst E = () => <div /> // reported here: \"This file declares 5 components (max 4)\"\n\n// ✅ Correct — split the extra component into its own file\n```\n\nOnly **top-level** declarations are counted. A multi-declarator statement\n(`const A = () => …, B = () => …`) counts each component separately. Re-exports\n(`export { X } from './x'`) declare nothing and are not counted, and\n`styled.div\\`…\\`` tagged templates are not component functions, so they are not\ncounted either. Nested / in-render components are intentionally out of scope —\nthat is a different concern (component identity / re-render stability), better\nserved by `react/no-unstable-nested-components`.\n\nDetection uses the same heuristic as the other rules (PascalCase name through\n`memo`/`forwardRef`/`observer` wrappers, or a JSX return). A consequence worth\nknowing: a PascalCase-named function that returns a non-JSX value (e.g. a factory\n`const Make = () => ({ … })`) is counted as a component, because the name\nshort-circuits the check. This is consistent across the plugin.\n\nThe rule reports **once per file**, anchored to the first component over the\nlimit, rather than once per excess component — there is no autofix, so a single\nfile-scoped diagnostic is more useful than N copies of the same advice.\n\nIn the recommended preset the ceiling is `4` for `*.tsx` generally and tightened\nto `1` for dumb `*-component.tsx` files (matching the one-component-per-file\nconvention the props/order/stories rules already assume); `**/pages/**` and\n`**/routes/**` are exempt, since route/page modules legitimately co-locate\nmultiple route or layout components. For a file that genuinely needs to break the\nceiling, use an inline `// eslint-disable-next-line @wl/max-components-per-file`.\n\n#### Why a custom rule (vs `react/no-multi-comp`)\n\n`eslint-plugin-react`'s `no-multi-comp` covers similar ground but effectively\nenforces a fixed ceiling of 1 (it flags the 2nd+ component) and cannot be\nconfigured to an arbitrary limit. This rule exists because it (1) supports a\nconfigurable `maxComponents` ceiling, (2) supports tiered per-file-type limits\nvia flat-config layering, and (3) reuses this plugin's centralized component\ndetection so its behavior matches the sibling `@wl` rules. (`eslint-plugin-react`\nis not a dependency of this repo.)\n\n#### Option: `maxComponents` (optional)\n\nThe component ceiling before the rule reports. Defaults to `4`. Only counts\nstrictly greater than the ceiling are reported (`count === max` is allowed).\n\n```js\n{\n  rules: {\n    '@wl/max-components-per-file': ['error', { maxComponents: 2 }],\n  },\n}\n```\n\n#### Option: `paths` / `ignore` (optional)\n\nSame glob semantics as the other rules: `paths` restricts the rule to matching\nfiles, `ignore` skips matching files (and takes precedence over `paths`).\n\n> **Flat-config note:** options are **replaced**, not merged, across matching\n> config blocks. If you override `maxComponents` for a glob, re-declare `ignore`\n> in that same block or its exemptions are lost.\n\n### `require-component-stories`\n\nRequire a co-located Storybook story for every dumb component. By default it enforces two layouts,\nmirroring the white-label `fe-architect` convention:\n\n| Layout                   | Component file                                       | Required story                                                               |\n| ------------------------ | ---------------------------------------------------- | ---------------------------------------------------------------------------- |\n| Feature component        | `features/<feature>/components/<name>-component.tsx` | `features/<feature>/__stories__/<name>-component.stories.tsx` (feature root) |\n| Shared default component | `components/default/<name>-component.tsx`            | `components/default/__stories__/<name>-component.stories.tsx` (sibling)      |\n\nA file is treated as a dumb component when it ends with the `-component` suffix, has a `.tsx`/`.jsx`\nextension, sits directly inside a `components/` directory (feature layout) or `components/default/`\n(shared layout), and — by default — actually declares a React component. Containers, nested\n`components/sub/*` files, barrels (`index.*`), and type files are never required to have stories. The\nstory is satisfied when any candidate (`.tsx`, `.jsx`, `.ts`, `.js`) exists on disk.\n\n```js\n{\n  rules: {\n    '@wl/require-component-stories': 'error',\n  },\n}\n```\n\n#### Options (all optional)\n\n| Option                | Default                          | Description                                                                                              |\n| --------------------- | -------------------------------- | -------------------------------------------------------------------------------------------------------- |\n| `paths`               | `[]`                             | Restrict the rule to files matching these globs.                                                         |\n| `ignore`              | `[]`                             | Skip files matching these globs (takes precedence over `paths`).                                         |\n| `storiesDir`          | `'__stories__'`                  | Directory name a story must live in.                                                                     |\n| `storySuffix`         | `'.stories'`                     | Suffix inserted before the extension.                                                                    |\n| `storyExtensions`     | `['.tsx', '.jsx', '.ts', '.js']` | Accepted story extensions, in priority order.                                                            |\n| `componentSuffix`     | `'-component'`                   | Basename suffix a component must end with (`''` disables the check).                                     |\n| `requireComponentAst` | `true`                           | When true, only require a story for files that actually declare a component.                             |\n| `extraTargets`        | `[]`                             | Extra structured layouts: `{ componentsDir, anchorParentDir?, storyMode: 'feature-root' \\| 'sibling' }`. |\n\n```js\n{\n  rules: {\n    '@wl/require-component-stories': ['error', {\n      extraTargets: [{ componentsDir: 'widgets', anchorParentDir: 'ui', storyMode: 'sibling' }],\n    }],\n  },\n}\n```\n\n#### Caveats\n\n- **Filesystem-coupled.** Unlike pure AST rules, this one checks the disk for a sibling story file,\n  so results depend on the working-tree state.\n- **`--cache`.** Adding or removing a story file does not change the component file, so a cached\n  ESLint result can go stale. Run without `--cache` in CI (or invalidate the cache) if you rely on\n  this rule as a gate.\n- **Case sensitivity.** The existence check is exact-case; a casing mismatch may pass on a\n  case-insensitive filesystem (macOS) and fail on a case-sensitive one (Linux CI).\n- **Unanchored globs.** `paths`/`ignore` patterns match anywhere in the path, so anchor them\n  (e.g. start with `**/`) when you need precision.\n\n### `package-structure`\n\nAllowlist the **layers under a package's `src/`**, and the **segments inside them**, per package\ntype. A file that sits in a directory the lists do not name is reported once, at the top of the\nfile — every file under the offending directory carries the same message, which is how a \"red\nfolder\" surfaces in the IDE explorer. The message names the skill that owns that layout, so the fix\nhas an owner:\n\n```\n`core` is not an allowed `src/` layer for package type `frontend` (allowed: app, features, lib, components, pages, routes, __tests__). See /infra-kit:fe-architect for the frontend layout.\n`hooks` is not an allowed segment of `features/user` for package type `frontend` (allowed: containers, components, services, __stories__, __tests__). See /infra-kit:fe-architect for the frontend layout.\n```\n\nTwo levels are checked:\n\n- **Layers** — the first directory under `src/` must be in `layers`.\n- **Segments** — inside a layer that has a `segments` key, the next directory must be in that list.\n  `features/*` means \"inside every folder of `features/`\" (each folder is a unit of any name, e.g. a\n  feature or a service); `services` (no `/*`) would mean \"directly inside `services/`\". A layer\n  without a key is not inspected below its first level.\n\nNever reported: files — in `src/` itself, in a layer, in a unit (`features/user/index.ts`) — and\nanything deeper than a segment (`features/user/components/default/…`). A file not under\n`<package>/src/` at all is silent, so a shipped `dist/src/**` is too. A `__tests__` or\n`__stories__` folder is an ordinary name: allowed exactly where a list says so.\n\n```js\n{\n  rules: {\n    '@wl/package-structure': 'error',\n  },\n}\n```\n\n#### How the package type is resolved\n\nThe package root is the nearest ancestor of the linted file holding an `infra-kit.config.ts` or a\n`package.json`. Its type is the `type` **literal** declared in `infra-kit.config.ts` when there is one\n(`type: 'backend'`); otherwise the same inference the `infra-kit` CLI uses — `apps/<app>/ui` →\n`frontend`, `apps/<app>/api` → `backend`, `apps/<app>/tests` → `e2e`, a `mobile-app` directory →\n`mobile`, then dependency signals (`@playwright/test` → `e2e`, `@capacitor/*` → `mobile`,\n`serverless` → `backend`), falling back to `lib`.\n\nThe config file is read as **text** — it is never imported or executed — and re-read when its mtime\nchanges, so an edit is picked up by the next lint of any file in that package, in CI and in the IDE\nlanguage server alike. A computed `type` (`type: pickType()`) is not a literal and falls back to\ninference.\n\n#### Options\n\nOne entry per package type. An **absent** key uses the built-in default below; a **present** key\nreplaces the whole entry (`layers`, `segments` and `skill`) — there is no merging. A type with no\nentry is silent, which is why `mobile` and `lib` report nothing by default: their layouts are not\nsettled.\n\n| Type       | Default `layers`                                                                        | Default `segments`                                                                | Default `skill`            |\n| ---------- | --------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- | -------------------------- |\n| `frontend` | `app`, `features`, `lib`, `components`, `pages`, `routes`, `__tests__`                  | `features/*` → `containers`, `components`, `services`, `__stories__`, `__tests__` | `/infra-kit:fe-architect`  |\n| `backend`  | `controllers`, `services`, `lib`, `config`, `__tests__`                                 | `services/*` → `__tests__`                                                        | `/infra-kit:be-architect`  |\n| `e2e`      | `tests`, `visual`, `setup`, `pages`, `config`, `lib`, `components`, `mocks`, `fixtures` | `tests/*`, `visual/*` → `pages`, `fixtures`, `mocks`, `data`, `lib`               | `/infra-kit:e2e-architect` |\n| `mobile`   | — (silent)                                                                              | —                                                                                 | —                          |\n| `lib`      | — (silent)                                                                              | —                                                                                 | —                          |\n\n| Option            | Type                       | Description                                                                                                                                     |\n| ----------------- | -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |\n| `<type>.layers`   | `string[]`                 | Allowed first-level `src/` directories for that type.                                                                                           |\n| `<type>.segments` | `Record<string, string[]>` | Allowed directories one level down, keyed by `<layer>/*` (inside each folder of the layer) or `<layer>`. A key must name a layer from `layers`. |\n| `<type>.skill`    | `string`                   | Appended as \"See `<skill>` for the `<type>` layout.\"; `''` or absent drops the sentence.                                                        |\n| `ignore`          | `string[]`                 | Skip files matching these globs.                                                                                                                |\n\n```js\n// Override one type wholesale; the other types keep their defaults.\nexport default config({\n  rules: {\n    '@wl/package-structure': [\n      'error',\n      {\n        backend: {\n          layers: ['lambda_controllers', 'services', 'libs', 'local'],\n          segments: { 'services/*': ['__tests__', 'fixtures'] },\n          skill: '/infra-kit:be-architect',\n        },\n      },\n    ],\n  },\n})\n```\n\nFlat config **replaces** rule options across matching blocks (it does not merge), so a consumer\noverride restates every type it wants to change — and only those.\n\n#### Caveats\n\n- **Filesystem-coupled.** The rule stats the package's `infra-kit.config.ts` once per linted file\n  (microseconds) and reads it only when the mtime changed. `package.json` dependency signals are\n  read once per lint process; adding `@playwright/test` mid-session is a `pnpm install` event, not an\n  edit-lint loop, and is seen by the next process.\n- **`--cache`.** Renaming a directory changes every file path under it, so ESLint's cache already\n  misses; editing `infra-kit.config.ts` does not touch the linted files, so a cached result can go\n  stale until those files change. Run without `--cache` in CI if you rely on this rule as a gate.\n- **The backend skill is a forward reference.** `/infra-kit:be-architect` is named in the default\n  message ahead of the skill shipping; override `backend.skill` if the pointer should go elsewhere.\n\n### `test-location`\n\nRequire unit tests to be **`*.test.*` files in a `__tests__/` folder beside the code they test**,\nnever next to the source file. The file is reported at the top, with the path to move it to:\n\n```\n`slugs.test.ts` sits next to its source. Move it to `src/lib/__tests__/slugs.test.ts` — tests live in a `__tests__/` folder beside the code they test.\n```\n\nInside a frontend feature (`src/…/features/<name>/`) the only place is the feature root's\n`__tests__/` — the `/infra-kit:fe-architect` layout — so `features/<name>/services/__tests__/` is\nreported too, with `features/<name>/__tests__/` as the target. Elsewhere any `__tests__` segment in\nthe path satisfies the rule, so nested folders (`__tests__/fixtures/…`) are fine.\n\n`.spec` is reserved for Playwright: a `*.spec.*` file is reported with its `*.test.*` name. Files in\nan `e2e` package (by the same package-type resolution `package-structure` uses) are never reported\n— `e2e-file-layout` owns their layout.\n\n```js\n{\n  rules: {\n    '@wl/test-location': ['error', { ignore: ['**/*.e2e.test.*'] }],\n  },\n}\n```\n\n#### Options\n\n| Option   | Type       | Default | Description                                    |\n| -------- | ---------- | ------- | ---------------------------------------------- |\n| `ignore` | `string[]` | `[]`    | Globs; the rule is skipped for matching files. |\n\nThe recommended preset enables it on test-file names only, with `ignore: ['**/*.e2e.test.*']` for\ne2e suites that sit in a package of another type.\n\n### `e2e-file-layout`\n\nHold an **e2e package** to its file layout: specs are `*.spec.ts` at the root of a domain folder\n(`src/tests/<domain>/` or `src/visual/<domain>/`), and every other file in a domain folder sits in\none of its subfolders — `pages/`, `fixtures/`, `mocks/`, `data/`, `lib/`. The file is reported once,\nat the top, with where it belongs:\n\n```\n`edge-redirects.test.ts` uses `.test`. Rename it to `edge-redirects.spec.ts` — every Playwright spec in an e2e package is `*.spec.ts`.\n`src/tests/ui/auth/login.spec.ts` nests a spec below its domain folder. Move it to `src/tests/ui/login.spec.ts`, or split the domain into two sibling domains if it holds too many specs.\n`checkout.page.ts` sits in the root of domain `checkout`, which holds only `*.spec.ts`. Move it to `src/tests/checkout/pages/checkout.page.ts`.\n```\n\nThe subfolder comes from the suffix: `.page` / `.component` → `pages/`, `.fixture` → `fixtures/`,\n`.mock` → `mocks/`, `.data` → `data/`, anything else → `lib/`. Files outside `src/tests` and\n`src/visual` (shared `src/pages/`, `src/setup/*.setup.ts`, `playwright.config.ts`) are not judged\nbeyond the spec checks; which `src/` folders may exist at all is\n[`package-structure`](#package-structure)'s job. Packages of any other type are silent — the type is\nresolved the same way `package-structure` resolves it.\n\n```js\n{\n  rules: {\n    '@wl/e2e-file-layout': 'error',\n  },\n}\n```\n\n#### Options\n\n| Option   | Type       | Default | Description                                    |\n| -------- | ---------- | ------- | ---------------------------------------------- |\n| `ignore` | `string[]` | `[]`    | Globs; the rule is skipped for matching files. |\n\n### `e2e-file-order`\n\nOpen every **e2e** source file with its main content, so a reader sees it right after the imports:\n`*.page.ts` / `*.component.ts` open with the class, `*.fixture.ts` with the fixtures type and the\n`export const test = base.extend<…>(…)` call, `*.spec.ts` with its first `test.*` call\n(`test.describe`, `test.use`, `test.describe.configure`, …), `*.mock.ts` with its first exported\nfunction. Constants, helpers and types declared between the imports and that anchor are reported by\nname. A file under a `lib/` folder opens with its exports: a private declaration above any export\n(an `export { … }` list counts) is reported the same way:\n\n```\n`CART_URL` sits between the imports and class `CartPage`. Move it below class `CartPage`: a page object file opens with its imports, then the class. The autofix moves it to the end of the file.\n```\n\nA `const` is not hoisted, so a binding read **while the module loads** stays above the anchor and is\nnot reported: a `describe` title, `test.use({…})`, a loop or `forEach` inside a `describe` body, a\n`static` class field, an `extend` option default like `[DEFAULT_LOCALE, { option: true }]` — and\nanything a kept binding reads. Reads inside `test(…)` bodies, hooks, fixture functions, methods and\ninstance fields run later and do not pin a binding. `--fix` moves the reported statements, with\ntheir attached comments and in their original order, to the end of the file; a comment separated\nfrom the statement by a blank line (a file overview) stays where it is. `*.data.ts` files and\npackages of any other type are not judged.\n\n```js\n{\n  rules: {\n    '@wl/e2e-file-order': 'error',\n  },\n}\n```\n\n#### Options\n\n| Option   | Type       | Default | Description                                    |\n| -------- | ---------- | ------- | ---------------------------------------------- |\n| `ignore` | `string[]` | `[]`    | Globs; the rule is skipped for matching files. |\n\n### `e2e-page-object-member-order`\n\nOrder the members of an **e2e** page object class (`*.page.ts`, `*.component.ts`): fields, the\nconstructor, getters, public methods, then private methods. A private or protected getter counts as a\nprivate method. A property is a field even when it holds an arrow function, since properties\ninitialize in source order. Each member out of place is reported with the one it follows:\n\n```\nThe public method `goto` comes after the private method `waitForPageList` in class `Catalog2Page`. Order a page object: fields, constructor, getters, public methods, private methods.\n```\n\n`--fix` reorders the class body in one pass. The sort is stable, so members of one group keep their\nrelative order, and each member moves with its attached comments.\n\n```js\n{\n  rules: {\n    '@wl/e2e-page-object-member-order': 'error',\n  },\n}\n```\n\n#### Options\n\n| Option   | Type       | Default | Description                                    |\n| -------- | ---------- | ------- | ---------------------------------------------- |\n| `ignore` | `string[]` | `[]`    | Globs; the rule is skipped for matching files. |\n\n### `e2e-describe-order`\n\nOrder the body of every `test.describe` in an **e2e** spec: setup first (`test.use`,\n`test.describe.configure`, `test.setTimeout`, `test.slow`, and `test.skip` / `fixme` / `fail` used\nas a condition, not as a test), then hooks `beforeAll` → `beforeEach` → `afterEach` → `afterAll`,\nthen tests and nested describes. Statements that are not `test.*` calls are ignored.\n\n```\n`test.use` (setup) comes after `test('shows the total')` (test) in describe 'Cart'. Order a describe body: `test.use` / `test.describe.configure` / annotations, then hooks beforeAll → beforeEach → afterEach → afterAll, then tests and nested describes.\n```\n\nThere is no autofix: moving `test.use({ … })` up past a `const` it reads would put the read in the\n`const`'s TDZ.\n\n```js\n{\n  rules: {\n    '@wl/e2e-describe-order': 'error',\n  },\n}\n```\n\n#### Options\n\n| Option   | Type       | Default | Description                                    |\n| -------- | ---------- | ------- | ---------------------------------------------- |\n| `ignore` | `string[]` | `[]`    | Globs; the rule is skipped for matching files. |\n\n### `e2e-top-level-describe`\n\nHold an **e2e** spec to one top-level `test.describe`, with its setup, hooks and tests inside it:\n\n```\n`test.describe('Cart Mutations')` is top-level describe number 2 in this spec; the limit is 1. Move it to its own spec file, or nest it inside `test.describe('Cart')`.\n`test.use` sits at the top level of the spec. Move it inside `test.describe('Cart')`: a spec holds one top-level describe, and its setup, hooks and tests live inside it.\nTest 'shows the total' sits at the top level of the spec. Wrap the spec’s tests in a `test.describe` named after the feature they cover.\n```\n\nWhen the spec has exactly one top-level describe, `--fix` moves every top-level `test.use`,\n`test.describe.configure`, hook and annotation to the start of its body, in source order and with\ntheir attached comments; with one describe they apply to the same tests either way. An extra\ndescribe or a top-level test needs a person: split the file, nest the describe, or wrap the tests.\n\n```js\n{\n  rules: {\n    '@wl/e2e-top-level-describe': ['error', { max: 1 }],\n  },\n}\n```\n\n#### Options\n\n| Option   | Type       | Default | Description                                       |\n| -------- | ---------- | ------- | ------------------------------------------------- |\n| `max`    | `integer`  | `1`     | Top-level `test.describe` blocks a spec may hold. |\n| `ignore` | `string[]` | `[]`    | Globs; the rule is skipped for matching files.    |\n\n### `e2e-test-tags`\n\nRestrict the tags on Playwright `test(…)` and `test.describe(…)` calls in an **e2e package** to an\nallowed set — by default `@smoke`, `@readonly`, `@mocked`, `@slow`. Each unknown tag is reported on\nits own string:\n\n```\nTag `@mocking` is not an allowed e2e tag. Use one of `@smoke`, `@readonly`, `@mocked`, `@slow`; browsers, devices and environments are Playwright projects, not tags.\n```\n\nOnly string literals in the `tag` property of the details object are judged (`{ tag: '@smoke' }`,\n`{ tag: ['@smoke', '@readonly'] }`); a tag held in a shared constant is not resolved. `test.step`\nand hooks carry no tags and are ignored.\n\n```js\n{\n  rules: {\n    '@wl/e2e-test-tags': ['error', { allowed: ['@smoke', '@readonly', '@mocked', '@slow', '@mobile'] }],\n  },\n}\n```\n\n#### Options\n\n| Option    | Type       | Default                                       | Description                                      |\n| --------- | ---------- | --------------------------------------------- | ------------------------------------------------ |\n| `allowed` | `string[]` | `['@smoke', '@readonly', '@mocked', '@slow']` | The only tags allowed. Each must start with `@`. |\n\n### `e2e-test-title`\n\nFlag e2e test titles that open with `should`, and suggest the direct form — the title states the\nbehaviour and its observable outcome:\n\n```\nTest title \"should reject an expired card\" starts with `should`. State the behaviour and its observable outcome directly: \"reject an expired card\".\n```\n\nOnly `test(…)` and its `only` / `skip` / `fixme` / `fail` forms with a plain-string title are\nchecked; `describe` and `test.step` titles are not. The recommended preset enables it as `error`:\n\n```js\n{\n  rules: {\n    '@wl/e2e-test-title': 'error',\n  },\n}\n```\n\n### `max-jsdoc-lines`\n\nCap the height of a JSDoc block. The block's **prose** and its **`@example` bodies**\nget **two independent budgets**, so a long worked example never makes the\ndescription look bloated — and never eats the room a description needs.\n\nThis rule caps the **whole block** at 15 lines.\n[`max-jsdoc-summary-lines`](#max-jsdoc-summary-lines) caps the **first paragraph**\nat 5. The two **compose rather than overlap** — a 40-line block whose summary is\ntwo lines is a well-shaped long block, and a 7-line block that is one unbroken\nparagraph is a badly-shaped short one. Do not unify them: this number is about\nheight, the other is about whether a reader can skim.\n\n```ts\n// ❌ Incorrect — 8 lines of contract wrapped around a 35-line `@example`\n/**\n * Extracts the first argument type from a WritableAtom's write function.\n *\n * @example\n * … 33 more lines walking through a whole feature …\n */\nexport type ExtractAtomActionArgs<T> = …\n\n// ✅ Correct — the smallest call that teaches usage; the walkthrough moves to a test\n/**\n * Extracts the first argument type from a WritableAtom's write function.\n *\n * @example\n * type Action = ExtractAtomActionArgs<typeof counterAtom>\n * // → { type: 'increment' } | { type: 'set'; value: number }\n */\nexport type ExtractAtomActionArgs<T> = …\n```\n\n**Every JSDoc-shaped block comment is measured**, not just the ones attached to a\nfunction. The rule iterates the file's comments and treats\n`comment.type === 'Block' && comment.value.startsWith('*')` as JSDoc — so blocks\nabove a `type`, an `interface`, a bare `const`, or a statement inside a function\nbody are all covered. That is deliberate: a rule driven by node types needs an\nanchor allowlist, which is exactly how `jsdoc/match-description` ends up not\ncovering `type` and `interface` declarations. `/* eslint-disable … */` is not a\nJSDoc block (its text starts with a space, not `*`) and is never measured.\n\nCounting rules:\n\n- **Total** is `end.line - start.line + 1` — the `/**` and closing lines included.\n- **`@example` bodies** run from each `@example` line (inclusive) to the next line\n  that opens a tag; an `@example` that is the block's last tag therefore runs\n  through the closing line. Multiple `@example` bodies **sum**.\n- **Prose is the remainder** (`total - example`), so the two budgets partition the\n  block exactly. `@param`/`@returns`/`@throws` lines charge the prose budget.\n- **Both budgets can report on the same block** — they are checked independently.\n\n**Why two budgets.** `@wl/require-jsdoc-example` *mandates* an `@example` on\nfunctions at cognitive complexity ≥ 12. If a rule-mandated example were charged\nagainst the prose budget, those functions could be pushed into a state with no\ncompliant answer. Charging examples to their own budget is the contract that\nkeeps the two rules from deadlocking; it is pinned by an integration test.\n\n#### Options\n\n| Option            | Default                                            | Description                                                                 |\n| ----------------- | -------------------------------------------------- | --------------------------------------------------------------------------- |\n| `maxLines`        | `15`                                               | Prose ceiling — total lines minus the `@example` bodies.                    |\n| `maxExampleLines` | `10`                                               | Combined ceiling for the block's `@example` bodies.                         |\n| `exemptTags`      | `['fileoverview', 'module', 'packageDocumentation']` | Tags that exempt a block entirely.                                          |\n\nOnly counts strictly greater than a ceiling report (`lines === max` is allowed).\n\n```js\n{\n  rules: {\n    '@wl/max-jsdoc-lines': ['warn', { maxLines: 20, maxExampleLines: 12 }],\n  },\n}\n```\n\n#### The `@fileoverview` escape hatch\n\nFile-level architectural rationale is the documentation most worth keeping, and\nit is naturally long. Tag such a block with `@fileoverview` (or `@module` /\n`@packageDocumentation`) and the rule skips it entirely — **any** tag in\n`exemptTags` exempts the **whole** block, both budgets.\n\n```ts\n/**\n * @fileoverview Why this module exists, and the three constraints it balances.\n *\n * … 50 more lines of rationale, deliberately kept …\n */\n```\n\nThere is **no positional exemption** — being the first block in the file exempts\nnothing. Position exempts by luck: a file-level block whose next statement is\n`let readers = 0` rather than an `import` would be missed by any \"precedes the\nfirst import\" spelling, while a 30-line block documenting the first exported\nclass would be exempted for no reason at all. A declared tag is greppable,\nreviewable, and cannot silently widen. The `tooManyLines` message names the tag\ninline so the fix is visible at the point of failure.\n\nA trailing block at the end of a file, with no token after it, is skipped as\ndegenerate input (an EOF guard — the rule never resolves the symbol a block\ndocuments).\n\n#### Not fixable, deliberately\n\nThere is no autofix, and there will not be one: shortening a block means\ndeleting sentences, and the longest blocks in a codebase are usually its most\nvaluable documentation. The part of this problem that *is* mechanically fixable —\nblank-line padding and `{type}` annotations — is already handled by\n`jsdoc/tag-lines` and `jsdoc/no-types`, which do have fixers. Run those first;\nwhat remains is a judgement call for a human.\n\n#### Caveat\n\nThe `@example` scan ends a body at any line starting with `@`, so a decorator\n(`@Injectable`) written inside an `@example` would truncate the body early and\nunder-count it. A scan of every `@example` in the codebase found no such line, so\nthis is correct today — but it is a measured constraint, not a guarantee.\n\n### `max-jsdoc-summary-lines`\n\nCap the height of a JSDoc block's **summary paragraph** — the first thing a reader\nsees. The requirement this encodes is that the essence of a comment should be\ngraspable in **3 to 5 lines**; the default ceiling is the loose end of that range.\n\n```ts\n// ❌ Incorrect — six unbroken lines before the reader learns anything they can act on\n/**\n * Resolves the dev proxy for a package by walking the preset table, falling back\n * to the launched backend set, then to the cloud gateway, honouring an explicit\n * pin where one exists, and finally writing the chosen source into the dev\n * context fragment so the vite plugin can re-resolve it without a restart, which\n * matters because the plugin watches that directory rather than the config file\n * and would otherwise bake the proxy at config load.\n */\nexport const resolveProxy = () => {}\n\n// ✅ Correct — one glance, a blank line, then the detail\n/**\n * Resolves the dev proxy for a package: preset pin, then launched backends, then\n * the cloud gateway.\n *\n * The chosen source is written to the dev-context fragment rather than returned,\n * because the vite plugin watches that directory and would otherwise bake the\n * proxy at config load.\n */\nexport const resolveProxy = () => {}\n```\n\n**Composes with [`max-jsdoc-lines`](#max-jsdoc-lines), does not overlap it.** That\nrule caps the **whole block** at 15 lines; this one caps the **first paragraph**\nat 5. A block can satisfy either and fail the other, and both are worth having:\none is about height, the other about whether the block can be skimmed. Do not\nunify them into a single budget.\n\nCounting rules:\n\n- **The summary** runs from the block's first prose line to the first blank line\n  or the first `@tag` line, whichever comes first.\n- **Leading gutter-only lines are skipped**, so the paragraph starts wherever the\n  prose does.\n- **Delimiter lines are not counted.** The `/**` opener and the closing line carry\n  no prose. This is the one place the count differs from `max-jsdoc-lines`, which\n  measures visual height and so counts them.\n- **A block with no blank line and no tags is one paragraph end to end**, so its\n  whole prose body is the summary.\n- **A block that opens with a tag has a zero-line summary** and can never report.\n  `@param`-only blocks are a contract, not a description.\n- Only counts strictly greater than the ceiling report (`lines === max` is\n  allowed).\n\n#### Options\n\n| Option            | Default                                              | Description                                                                             |\n| ----------------- | ---------------------------------------------------- | --------------------------------------------------------------------------------------- |\n| `maxSummaryLines` | `5`                                                  | Prose ceiling for the summary paragraph.                                                |\n| `exemptTags`      | `['fileoverview', 'module', 'packageDocumentation']` | Tags that exempt a block entirely. Same list as `max-jsdoc-lines`, so one tag does both. |\n\n```js\n{\n  rules: {\n    '@wl/max-jsdoc-summary-lines': ['warn', { maxSummaryLines: 3 }],\n  },\n}\n```\n\n#### Calibration\n\n51 of the 2,171 JSDoc blocks in `apps/infra-kit/cli/src` exceed 5 summary lines\n(measured 2026-09-05; `docs/comment-review-skill-plan.md` §9). That is 2.3% of\nlinted blocks — the same order as `max-jsdoc-lines`'s 2.12%, which is to say a\nnormal lint-rule yield rather than a codebase-wide sweep.\n\n#### Not fixable, deliberately\n\nThere is no autofix. The mechanical fix — insert a blank line after line 5 —\nsplits a paragraph at an arbitrary point and produces a summary that reads as\ntruncated. Deciding what belongs in the first glance is judgement, and the same\nreasoning that keeps `max-jsdoc-lines` unfixable applies here.\n\nModule-level rationale is exempted the same way: tag the block `@fileoverview`\n(or `@module` / `@packageDocumentation`). There is no positional exemption, and\nthe message names the tag inline so the escape hatch is visible at the point of\nfailure.\n\n### `require-jsdoc-example`\n\nGraduated JSDoc requirement driven by **cognitive complexity**: at or above `minComplexity` a named\ntop-level function must carry a leading JSDoc block, and at or above `exampleComplexity` that block\nmust also include an `@example` tag. Functions below the first threshold are left alone — the rule\nasks for documentation where a reader needs it, not everywhere.\n\n```ts\n// ❌ Incorrect — complexity 13, no JSDoc at all\nexport const resolveRoute = (ctx: Ctx) => { /* nested branches, loops, early returns … */ }\n\n// ✅ Correct — a block, and because 13 ≥ 12, a worked `@example`\n/**\n * Pick the route for a request, honouring locale, redirects and the fallback page.\n *\n * @example\n * resolveRoute({ path: '/he/deals', locale: 'he' }) // → { page: 'deals', locale: 'he' }\n */\nexport const resolveRoute = (ctx: Ctx) => { … }\n```\n\nTargets are named `function` declarations and `const name = () => …` / `function` expressions at the\ntop level, with or without an `export` wrapper; the JSDoc may sit on the declaration or on the\n`export` statement. Complexity is the same cognitive-complexity metric `sonarjs` uses. The\nrecommended preset ships this rule at `warn` in its own `**/*.{ts,tsx}` block, because the functions\nit targets overwhelmingly live in plain `.ts` modules.\n\n#### Options (all optional)\n\n| Option              | Default | Description                                                                         |\n| ------------------- | ------- | ----------------------------------------------------------------------------------- |\n| `minComplexity`     | `8`     | Cognitive complexity at or above which a function must carry a leading JSDoc block. |\n| `exampleComplexity` | `12`    | Cognitive complexity at or above which that block must also include an `@example`.  |\n| `paths`             | `[]`    | Restrict the rule to files matching these globs.                                    |\n| `ignore`            | `[]`    | Skip files matching these globs (takes precedence over `paths`).                    |\n\nThe `@example` bodies this rule mandates are charged to their own budget by\n[`max-jsdoc-lines`](#max-jsdoc-lines), so satisfying one rule can never violate the other.\n","readmeFilename":"readme.md"}