{"_id":"@arewageek/access-control","_rev":"9-c246b79cf7ff161ab2ef534871c4575d","name":"@arewageek/access-control","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.1":{"name":"@arewageek/access-control","version":"1.0.1","author":{"name":"arewageek"},"license":"MIT","_id":"@arewageek/access-control@1.0.1","maintainers":[{"name":"arewageek","email":"arewageek@gmail.com"}],"homepage":"https://github.com/arewageek/access-control#readme","bugs":{"url":"https://github.com/arewageek/access-control/issues"},"dist":{"shasum":"d9aa5e746b117add0e36d7ca3ced30ce1b85d7cc","tarball":"https://registry.npmjs.org/@arewageek/access-control/-/access-control-1.0.1.tgz","fileCount":4,"integrity":"sha512-SoDBvZO9wC+z4muwwpXZLjSArrwXmiaCeHp9ucjFo8q6KE3LFFn9pRsONBqvaQewIOSIg/50DQbk2/zP2imTMQ==","signatures":[{"sig":"MEUCIDdguRhFNcFpogcMvWd3Cawdv/fh0Z1FLflnSSE4Ih18AiEAlniJdB+kHpLq+5gtG1aldIjXxLIBEueEslEstslv5D8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4040},"main":"index.ts","gitHead":"eb6c7c06fecf60b2611072e43cca7af71b8fd715","scripts":{"test":"mocha"},"_npmUser":{"name":"arewageek","email":"arewageek@gmail.com"},"repository":{"url":"git+https://github.com/arewageek/access-control.git","type":"git"},"_npmVersion":"10.9.2","description":"This project demonstrates a basic Hardhat use case. It comes with a sample contract, a test for that contract, and a Hardhat Ignition module that deploys that contract.","directories":{"test":"test"},"_nodeVersion":"20.15.0","_hasShrinkwrap":false,"devDependencies":{"hardhat":"^2.24.0","@nomicfoundation/hardhat-toolbox-viem":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/access-control_1.0.1_1747882412929_0.7089841683810703","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@arewageek/access-control","version":"1.0.2","author":{"name":"arewageek"},"license":"MIT","_id":"@arewageek/access-control@1.0.2","maintainers":[{"name":"arewageek","email":"arewageek@gmail.com"}],"homepage":"https://github.com/arewageek/access-control#readme","bugs":{"url":"https://github.com/arewageek/access-control/issues"},"dist":{"shasum":"335b8f127524bf19912b66f38a17e51d33af9fb2","tarball":"https://registry.npmjs.org/@arewageek/access-control/-/access-control-1.0.2.tgz","fileCount":4,"integrity":"sha512-MSmxS7Tf35DH9pfrEdoIBb/mpb/QROltJBoz0HFjDq8RE7q5ImJWLb/hb/dV20+5Xek3IM62hOy9UUNPdCgDcQ==","signatures":[{"sig":"MEUCIQC8VNb50tv6Cq+Q4vQ3brTteX7VR+lwTtlCnh6IDFxDWwIgUYSmusblCYd3d2rNbQeJNTLo6plegD16rNMJkqUstsQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4036},"main":"index.ts","gitHead":"898e5dd616d8857a1c08f10be9eeed7ff0106369","scripts":{"test":"mocha"},"_npmUser":{"name":"arewageek","email":"arewageek@gmail.com"},"repository":{"url":"git+https://github.com/arewageek/access-control.git","type":"git"},"_npmVersion":"10.9.2","description":"This project demonstrates a basic Hardhat use case. It comes with a sample contract, a test for that contract, and a Hardhat Ignition module that deploys that contract.","directories":{"test":"test"},"_nodeVersion":"20.15.0","_hasShrinkwrap":false,"devDependencies":{"hardhat":"^2.24.0","@nomicfoundation/hardhat-toolbox-viem":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/access-control_1.0.2_1747883924284_0.7603984395541399","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@arewageek/access-control","version":"1.0.3","author":{"name":"arewageek"},"license":"MIT","_id":"@arewageek/access-control@1.0.3","maintainers":[{"name":"arewageek","email":"arewageek@gmail.com"}],"homepage":"https://github.com/arewageek/access-control#readme","bugs":{"url":"https://github.com/arewageek/access-control/issues"},"dist":{"shasum":"3a432778a62661648ba42f45863238bd5dbf2785","tarball":"https://registry.npmjs.org/@arewageek/access-control/-/access-control-1.0.3.tgz","fileCount":4,"integrity":"sha512-IeAMMZazkwtELgugzzEHkNDHlFM+EPtyd/4SxduKltwEv9aBAE887C0fgx7YO3UtHnb4JjX3T8QB0FAByXM5PQ==","signatures":[{"sig":"MEUCIEU/GrvXloNibx0SvtjHobQjmk8EqIl9Z2QpAyx7N2QLAiEA0wRicZ6GJ6/4Et2pmfZtpFyHQsrRcnvRWbFnlMf7rAk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3663},"main":"index.ts","gitHead":"ce6df83a8a3749500ecf013855ad23233d2955d8","scripts":{"test":"mocha"},"_npmUser":{"name":"arewageek","email":"arewageek@gmail.com"},"repository":{"url":"git+https://github.com/arewageek/access-control.git","type":"git"},"_npmVersion":"10.9.2","description":"This project demonstrates a basic Hardhat use case. It comes with a sample contract, a test for that contract, and a Hardhat Ignition module that deploys that contract.","directories":{"test":"test"},"_nodeVersion":"20.15.0","_hasShrinkwrap":false,"devDependencies":{"hardhat":"^2.24.0","@nomicfoundation/hardhat-toolbox-viem":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/access-control_1.0.3_1747968910811_0.5733153905137205","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@arewageek/access-control","version":"1.0.4","author":{"name":"arewageek"},"license":"MIT","_id":"@arewageek/access-control@1.0.4","maintainers":[{"name":"arewageek","email":"arewageek@gmail.com"}],"homepage":"https://github.com/arewageek/access-control#readme","bugs":{"url":"https://github.com/arewageek/access-control/issues"},"dist":{"shasum":"0382bb77098947642edaa02d827ff5762c4abf4a","tarball":"https://registry.npmjs.org/@arewageek/access-control/-/access-control-1.0.4.tgz","fileCount":4,"integrity":"sha512-dvb7uyu+7iBB7cqQxvyn0I4hVOliMK8Q4aePdEM+j3m59+Ut57YIMVcv0nX19kMg9o2MDSIlj087TXqOIjF66g==","signatures":[{"sig":"MEUCIEPZfVYtliq4HKA+bL0dbtBbqdBgL3uaslTHBost52+HAiEA+6zmH0FNQY879kAMXobGg95QRu22qxMjuoji7+t/VnI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6351},"main":"index.ts","gitHead":"6a83b926da29aea2d1b8b081473a139aaed6b10c","scripts":{"test":"mocha"},"_npmUser":{"name":"arewageek","email":"arewageek@gmail.com"},"repository":{"url":"git+https://github.com/arewageek/access-control.git","type":"git"},"_npmVersion":"10.9.2","description":"This project demonstrates a basic Hardhat use case. It comes with a sample contract, a test for that contract, and a Hardhat Ignition module that deploys that contract.","directories":{"test":"test"},"_nodeVersion":"20.15.0","_hasShrinkwrap":false,"devDependencies":{"hardhat":"^2.24.0","@nomicfoundation/hardhat-toolbox-viem":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/access-control_1.0.4_1748038672853_0.04188112750807571","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@arewageek/access-control","version":"1.0.5","keywords":["ethereum","hardhat","smart-contracts","access-control"],"author":{"name":"arewageek"},"license":"MIT","_id":"@arewageek/access-control@1.0.5","maintainers":[{"name":"arewageek","email":"arewageek@gmail.com"}],"homepage":"https://github.com/arewageek/access-control#readme","bugs":{"url":"https://github.com/arewageek/access-control/issues"},"dist":{"shasum":"acdb27a42909e1e4553e22c01c3a7cb6697c536c","tarball":"https://registry.npmjs.org/@arewageek/access-control/-/access-control-1.0.5.tgz","fileCount":4,"integrity":"sha512-MXVihzn3ZqFmhMym0RVjcEfLLJf2Spl1rfdvMfymYcn3BLjSqOou2xkB6FOnIWc23rwTrVhr0IOFAI1VmbVKmQ==","signatures":[{"sig":"MEQCIAqziGKtG4dvlC3s0Bxw41eu0vsIDbGG+blksQKqEqgPAiArI3tFwHuTbX4ry/zZmyl7BhK1PURWUQGM3yy1RyUt+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":6516},"main":"index.js","type":"module","gitHead":"56260947661d89a32f9a64c316d40edf90adba48","scripts":{"test":"mocha"},"_npmUser":{"name":"arewageek","email":"arewageek@gmail.com"},"repository":{"url":"git+https://github.com/arewageek/access-control.git","type":"git"},"_npmVersion":"10.9.2","description":"This project demonstrates a basic Hardhat use case. It comes with a sample contract, a test for that contract, and a Hardhat Ignition module that deploys that contract.","directories":{"test":"test"},"_nodeVersion":"20.15.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"hardhat":"^2.24.0","@nomicfoundation/hardhat-toolbox-viem":"^3.0.0"},"_npmOperationalInternal":{"tmp":"tmp/access-control_1.0.5_1748039840553_0.4573779182010007","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@arewageek/access-control","devDependencies":{"@nomicfoundation/hardhat-toolbox-viem":"^3.0.0","hardhat":"^2.24.0"},"keywords":["ethereum","hardhat","smart-contracts","access-control"],"version":"1.1.0","description":"This project demonstrates a basic Hardhat use case. It comes with a sample contract, a test for that contract, and a Hardhat Ignition module that deploys that contract.","main":"index.js","directories":{"test":"test"},"scripts":{"test":"mocha"},"repository":{"type":"git","url":"git+https://github.com/arewageek/access-control.git"},"author":{"name":"arewageek"},"license":"MIT","bugs":{"url":"https://github.com/arewageek/access-control/issues"},"homepage":"https://github.com/arewageek/access-control#readme","publishConfig":{"access":"public"},"type":"module","_id":"@arewageek/access-control@1.1.0","gitHead":"44533a5b9bb0ba0e86f7181262c8d5adbed17283","_nodeVersion":"20.15.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-LZRhL7+uaqxkOVO0J6kxjH69NovZmgxjlCE5FKQa2sar5MwHC0MRzgAAQkfodNv7/5nEk3BcaaOp3cuR2zqEKg==","shasum":"627f0cfcba58b1f18259135b9b95976484cf14e6","tarball":"https://registry.npmjs.org/@arewageek/access-control/-/access-control-1.1.0.tgz","fileCount":4,"unpackedSize":6461,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCiVwRikSGd00OhRvs8h9Qqx6Fl/Q0rU1GYKtR9l+ZSmQIhAJVaunoCYPr6Jb5mHmAJk/TzXRbk0WluZvLXSiQy6zGN"}]},"_npmUser":{"name":"arewageek","email":"arewageek@gmail.com"},"maintainers":[{"name":"arewageek","email":"arewageek@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/access-control_1.1.0_1756210421914_0.5712838039869681"},"_hasShrinkwrap":false}},"time":{"created":"2025-05-22T02:53:32.821Z","modified":"2025-08-26T12:13:42.283Z","1.0.0":"2025-05-22T02:36:11.836Z","1.0.1":"2025-05-22T02:53:33.123Z","1.0.2":"2025-05-22T03:18:44.486Z","1.0.3":"2025-05-23T02:55:11.046Z","1.0.4":"2025-05-23T22:17:53.042Z","1.0.5":"2025-05-23T22:37:20.757Z","1.1.0":"2025-08-26T12:13:42.107Z"},"bugs":{"url":"https://github.com/arewageek/access-control/issues"},"author":{"name":"arewageek"},"license":"MIT","homepage":"https://github.com/arewageek/access-control#readme","keywords":["ethereum","hardhat","smart-contracts","access-control"],"repository":{"type":"git","url":"git+https://github.com/arewageek/access-control.git"},"description":"This project demonstrates a basic Hardhat use case. It comes with a sample contract, a test for that contract, and a Hardhat Ignition module that deploys that contract.","maintainers":[{"name":"arewageek","email":"arewageek@gmail.com"}],"readme":"# Access Control\n\nAccess Control is a Solidity library for implementing role-based access control mechanisms in smart contracts. It provides a simple and effective way to manage permissions and enforce authorization through customizable roles.\n\n## Features\n\n- Role-based access control for Solidity contracts.\n- Default ADMIN_ROLE for managing other roles.\n- Functions to grant, revoke, and renounce roles.\n- Easy integration with other contracts.\n\n## Installation\n\nYou can install the package using your preferred package manager:\n\n```bash\nnpm install arewageek/access-control\n# or\nbun add arewageek/access-control\n# or\nyarn add arewageek/access-control\n# or\npnpm install arewageek/access-control\n```\n\n## Usage\n\nTo integrate `AccessControl` into your contract:\n\n```solidity\nimport {AccessControl} from '@arewageek/access-control/contracts/AccessControl.sol';\n\ncontract Token {\n    // Your contract code here\n    AccessControl public ac;\n}\n```\n\n### Granting Roles\n\nOnly accounts with `ADMIN_ROLE` can grant roles:\n\n```solidity\nac.grant(MY_ROLE, _walletAddress);\n```\n\n### Revoking Roles\n\nOnly accounts with ADMIN_ROLE can revoke roles:\n\n```solidity\nac.revoke(MY_ROLE, _walletAddress);\n```\n\n### Renouncing Roles\n\nAny account can renounce a role it holds:\n\n```solidity\nac.renounce(MY_ROLE);\n```\n\n## Contract Details\n\n- `ADMIN_ROLE`: Default admin role with privileges to grant or revoke other roles.\n- `onlyRole(bytes32 role)`: Modifier to restrict access to specific roles.\n- `onlyAdmin`: Modifier to restrict access to admin-only functions.\n\n## Key Functions\n\n- `hasRole(bytes32 role, address account)`: Returns whether an account holds a given role.\n- `grantRole(bytes32 role, address account)`: Assigns a role to an account.\n- `revokeRole(bytes32 role, address account)`: Removes a role from an account.\n- `renounceRole(bytes32 role)`: Allows the caller to relinquish a role.\n\n## License\n\nThis project is licensed under the MIT License.\n\n## Issues\n\nReport bugs or request features at: [https://github.com/arewageek/access-control/issues](https://github.com/arewageek/access-control/issues)\n\n## How to Contribute\n\nContributions are very welcome from the community! Here's how to do that:\n\n- Fork the repository on GitHub.\n- Clone your fork and create a new branch:\n\n```bash\ngit clone https://github.com/your-username/access-control.git\ngit checkout -b feature/your-feature-name\n```\n\n- Make your changes, ensuring they follow the existing style and structure.\n- Write tests for your changes if applicable.\n- Run tests to verify: `npx hardhat test`\n- Commit your changes and push the branch: `git push origin feature/your-feature-name`\n- Open a Pull Request from your branch to the `main` branch of the original repository.\n","readmeFilename":"README.md"}