{"_id":"@defi-wonderland/solhint-plugin","_rev":"6-58520e7713ef9ff483d0271cd43ab6d9","name":"@defi-wonderland/solhint-plugin","dist-tags":{"canary":"0.0.0-5bf2c4c3","latest":"0.0.0-5bf2c4c3"},"versions":{"0.0.0-5bf2c4c3":{"name":"@defi-wonderland/solhint-plugin","version":"0.0.0-5bf2c4c3","keywords":["solhint","plugin","solidity","wonderland"],"author":{"name":"DeFi Wonderland"},"license":"MIT","_id":"@defi-wonderland/solhint-plugin@0.0.0-5bf2c4c3","maintainers":[{"name":"gas1cent","email":"gas1cent@defi.sucks"},{"name":"0xng","email":"ng@defi.sucks"},{"name":"0xgorilla","email":"0xGorilla@defi.sucks"},{"name":"kelvinfichter","email":"kelvinfichter@gmail.com"},{"name":"wei3erhase","email":"wei3erhase@defi.sucks"},{"name":"enderman0x","email":"enderman0x@defi.sucks"}],"dist":{"shasum":"d8a4c0eb0fb11ccb98486dc669471ac898d2faa0","tarball":"https://registry.npmjs.org/@defi-wonderland/solhint-plugin/-/solhint-plugin-0.0.0-5bf2c4c3.tgz","fileCount":43,"integrity":"sha512-dl7oz0ZOCtMWC0PM35TRmqeji0XJtQwlntVfpu4UuN+3CsAm/u1diaw3YMJk/vcGpplb/Ux2WC8On4x6IWWgTw==","signatures":[{"sig":"MEYCIQCdNCrg2Kt9gFd59L8BkVP/UBrmmZTEpbInV+7nArsSiAIhAN8gUyV/gWMHMbUBuLBs4A5ZqfQArCQfSGQD/+pIvrSH","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":37124,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJj6TNjACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoojA//Vpkfc1qAd8fWZVkvhYNkH8kQ8i6o1vGROvz+OOyGyp4ySB6a\r\nqqQe+q9qoY55lci88plNr1CIoYOVg/Q4QKhKDPI+60+WqdNKQg2qzrIlf7nA\r\nkkRkmbmlUxCxHLhVUXB67nubWSb0+Ayipu+7piRzJzeHQG8TocHGombc75Tv\r\n/B/ZXK3uCMauMF5xRm0YuZ3kpiJdcfchfKVaCCncVvtO4sNGvMLevylUk6Qf\r\n8xpeJolmiHJxCltvSuO40Iu08PVCljMX2AEqSWrPuo+DjctICsieR3qkFkLk\r\n3hjLHKijKgG1MUawKNvWeb+c+k05j/4pVRLdTf3LdJuqa/oGUWZi4NEfd3zY\r\nOFjNogsdRm2SEsz7KqDFvBddZYymY6rhTGmO0ZPY7pElnhaWWUGuUF2LWHFu\r\nPYUjcqRJAfI3hzvj+C5CbpAPI/V36T6KjZX/Q+JtMWjdG0FBpac5NHpeLAiz\r\nrFXQZuXT5/pUWvmI5QGTX1f0YGeiL5uk0q5DVl2s0EgagrnVTCLnQb9DIIMD\r\nVNV+6ldlR3bbOJNHlko2pTvF+PZ85GLL9tmDYhTzrDNxxgv3rISPxU5Ko0wz\r\nazYa6qeK3snR7JHZOfmQdlF8CN8cX22z5R+a9adqPrrXprpvt3ViHz5GQzrg\r\nZHXHWK+Ws3ZQm55bT5+fMOjyFlVnY2vpxts=\r\n=5C7v\r\n-----END PGP SIGNATURE-----\r\n"},"main":"build/index","types":"build/index","gitHead":"5bf2c4c3d1957b75dd6c846c0031d98777f5d519","scripts":{"test":"ts-mocha test/rules/*.ts","build":"tsc","prepare":"husky install","lint:fix":"sort-package-json && prettier --write './**'","lint:check":"prettier --check './**'"},"_npmUser":{"name":"0xgorilla","email":"0xGorilla@defi.sucks"},"_npmVersion":"8.19.3","description":"DeFi Wonderland's best practices Solhint plugin","directories":{},"lint-staged":{"*.{js,md,ts}":"prettier --write './**'","package.json":"sort-package-json"},"_nodeVersion":"16.19.0","dependencies":{"solhint":"3.3.7"},"_hasShrinkwrap":false,"devDependencies":{"nyc":"15.1.0","husky":"^8.0.3","mocha":"10.2.0","assert":"2.0.0","eslint":"8.31.0","shelljs":"0.8.5","ts-node":"10.9.1","prettier":"2.7.1","ts-mocha":"10.0.0","coveralls":"3.1.1","typescript":"4.7.4","@types/node":"18.11.3","lint-staged":"^13.1.1","@types/mocha":"10.0.0","markdown-table":"2.0.0","@commitlint/cli":"12.1.4","sort-package-json":"1.50.0","mocha-lcov-reporter":"1.3.0","eslint-plugin-import":"2.27.4","eslint-config-prettier":"8.6.0","eslint-plugin-prettier":"4.2.1","eslint-config-airbnb-base":"15.0.0","@commitlint/config-conventional":"12.1.4"},"_npmOperationalInternal":{"tmp":"tmp/solhint-plugin_0.0.0-5bf2c4c3_1676227426911_0.06346545822184502","host":"s3://npm-registry-packages"}}},"time":{"created":"2023-02-12T18:43:46.846Z","modified":"2025-07-25T08:28:30.942Z","0.0.0-5bf2c4c3":"2023-02-12T18:43:47.101Z"},"author":{"name":"DeFi Wonderland"},"license":"MIT","keywords":["solhint","plugin","solidity","wonderland"],"description":"DeFi Wonderland's best practices Solhint plugin","maintainers":[{"email":"gori@wonderland.xyz","name":"0xgorilla"},{"email":"alice@wonderland.xyz","name":"wonderland-bot"},{"email":"turtlemoji@protonmail.com","name":"turtlemoji"}],"readme":"# DeFi Wonderland's Solhint Plugin\n\n[![image](https://img.shields.io/npm/v/@defi-wonderland/solhint-plugin.svg?style=flat-square)](https://www.npmjs.org/package/@defi-wonderland/solhint-plugin)\n![Tests](https://github.com/defi-wonderland/solhint-plugin/actions/workflows/unit-tests.yml/badge.svg)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://github.com/defi-wonderland/solhint-plugin/blob/main/LICENSE)\n\n## Overview\n\nThis custom Solhint Plugin aims to contain all of the Solidity best practices implemented at [DeFi Wonderland](https://defi.sucks).\n\n## Setup\n\n[Setup Solhint](TODO) in your Solidity project if you haven't already. Then run:\n\n```sh\nyard add -D @defi-wonderland/solhint-plugin\n```\n\nor\n\n```sh\nnpm install --save-dev @defi-wonderland/solhint-plugin\n```\n\nFinally, inside your `.solhint.json` configuration file, add:\n\n```\n\"plugins\": [..., \"defi-wonderland\"],\n```\n\n## Available Rules\n\n| Name                                | Description                                                                          |\n| ----------------------------------- | ------------------------------------------------------------------------------------ |\n| `contract-data-order`               | Contracts storage members should be ordered: constants, immutable variables, others. |\n| `enum-name-camelcase`               | Enums name should be in CamelCase.                                                   |\n| `immutable-name-snakecase`          | Immutable variables names should be in capitalized SNAKE_CASE.                       |\n| `import-statement-format`           | Imports should specify imported node. Example: `import {A} from 'b.sol'`             |\n| `interface-member-order`            | Interfaces members should be ordered: events, errors, structs, functions.            |\n| `interface-starts-with-i`           | Interfaces name should start with `I`. Example: `IMyContract`.                       |\n| `named-return-values`               | Functions return values should be named.                                             |\n| `non-state-vars-leading-underscore` | Variables that are not in the state should start with underscore. Example: `_myVar`. |\n| `struct-name-camelcase`             | Structs name should be in CamelCase.                                                 |\n\n---\n\n## About DeFi Wonderland\n\n[DeFi Wonderland](https://defi.sucks) is a team of top Web3 researchers, developers, and operators who believe that the future needs to be open-source, permissionless, and decentralized.\n\nDeFi sucks, but DeFi Wonderland is here to make it better.\n","readmeFilename":"README.md"}