{"_id":"@iamjs/express","_rev":"29-7509dd882396c80d8331f442d23ea37d","name":"@iamjs/express","dist-tags":{"latest":"2.0.16"},"versions":{"0.2.0":{"name":"@iamjs/express","version":"0.2.0","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@0.2.0","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"44d71ea3b545ac9ff329d15c3fce3bf2c907ecea","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-0.2.0.tgz","fileCount":4,"integrity":"sha512-wWhfFOw6W3Ji96BiWESLCR37hekUXNoXz7jpsrpBFZE38bEl9djR6piUmaKO5pkcNHEqobPxymZV0rgNHUqW/g==","signatures":[{"sig":"MEYCIQC5A0uQ0Boixut6cgOR0rAPssgh2V7/A8TiDAIlW4VmOwIhANegFVgGvlrD/dHJM8tSPg+cikr8NRYq5rHJ/5R/b5od","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4899,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOHgTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrjyRAAlPSbxDC3Rn0flGKBtUD8+9XSFjSjbpGB1mjsOeBoMt14LxRx\r\nOxbzO42Z3b1ppcPj5Zya7FkSqTa8Tq0dh5BPVjsGDN5w+85JfRLIT0HSUq5b\r\nc6rW4uf+Rw4rHYJHJNvp8iJf1yDITABNmuvz+FQXPUxBX/ulYTBXDmDCal8X\r\n0TMKIrbXDyMtif5NTsiNZBe3Bv4ILdLVQnRyMCyVzmFL+tOyWhb6Yx5uf4Z6\r\n2rFmPjlw3IIWJewujohsDu0ZqKqeXCeSeIz0sGvA7LeKCPYmWuUL0sGCYe81\r\nADZKaGq3F49QQdm17faM2imZtUakeNC6wZ0ZnLrWHnEE82QSNKmBwg5Ca+Yi\r\no8ioKSYeQz0HLxNZ21B5M0wgMTynFfiq4JMiSxrTYBe4sS8Cmjw7n2hKfggU\r\nBCp4H/uvElBkQluunvSTMVPRFQEZ95IPKU8K5wZwWIH8qnJXLWs/zx56MmvD\r\nIVPTrzMbq6C57tBaWBLMv5tWIAWYydf72rlvc79A5FhLELIL2KEUT63ZXmlX\r\nZd4Po8OVsr2m/u7gqhPP7wrfU2lQoUyfObwyixf7HAFjsX+ysFTHzJV2TLoI\r\nLZ3QPADe/gIc5W7xyRpd3r1ZP7tzpD4iDQKiroN6jEQHrQr93CtoLSS2pFVf\r\nDQeD1FUr84ESKncfWdy/YclN8t6N4iG/Ko0=\r\n=q87s\r\n-----END PGP SIGNATURE-----\r\n"},"main":"lib/index.ts","gitHead":"345541a517a8e1a56581032e2437677030aab565","scripts":{"test":"jest --config=./jest.config.js","build":"vite build --config vite.config.js"},"_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v19.7.0+arm64 (darwin)","description":"> TODO: description","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"../core/src"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/express_0.2.0_1681422354814_0.7914671228130592","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@iamjs/express","version":"0.2.1","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@0.2.1","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"d3106085c44fd505c1b10341719f9946f7c82576","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-0.2.1.tgz","fileCount":8,"integrity":"sha512-CevbT2x5dIT5UnEaqwA9RAhJS+q5qTENf984dnVWBjw/evgZDFtqJQKlthBOsTZUzhe2WQnjyLPK3x3vKCMf2w==","signatures":[{"sig":"MEQCIBViincSXWbAIFKJQ4jeWD+sOCKDUtY1GK0zNwDEHRToAiB3Itm0Tn5nq28Nl6kJwfjCjDU06HmYkmg4CzI7aB5ofQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOIETACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqjKw/+NqPrx0VTRLE2JIAph+A54/KVanxJ9/0PTQ2qXMpTqyq5uOfP\r\nFTC2k/A2UwpOliWrUrDTd6XKspzCpF20NOJ6CD72CGkB/88r7nLSJ2fqM/3E\r\nZ1ug+WJ8o8bDYuDQQLy7V2/8WElTInZVv73fQL/TMt+qN3KDp5t+9CKUJ41t\r\nSXHz9/G5VK7215eAoIwQrQc28YHk0J+s5F7XWLO0pNQkYjY1yUzmKSez6MxU\r\nR3duIHLG78nOIp0aOIEXGiMOeIYVCZk2fMpAS6mX63RjMo9oruyIvsFw6t2O\r\nAclMyGVTo2TZg8wGSWphhG463liO3Yu7VnJTb/jMGWj+TEVo3eTvHnbFOuPr\r\ntZMZkpVWwU4fz/tflY5VbQ4LKjLwIP4GrNwNFf5ii6LWClLzjVQW+2FO5Isr\r\nC1zMnhbDj+y1QCZgAg7Ks57o60wc9VoNAd0x/0eLaVr3ZBxt0lEPopUHC0nG\r\naP1Dhi7YuRz/6tpkgwU0LA7YgfCesivD7vR3u3OXmHMAsKkRjZdTlHKg6z+j\r\n7RvkNk2O+kshNQZZVM4mjJCK4jc0ZMg8lsvW7qVF+ORGKA1rnOoX7NPEw+qe\r\nopvkBieaD2JkgErFaokRl3qYRXh8aJSTE03V3dRxGYGUARu5ZCkwe/2LzysW\r\n3qzImqV9J2/XaSttTJ/5F9Jx+Fg6lUAaIAI=\r\n=m5nI\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.js","gitHead":"10b93e9a49cd8fa616b557f9797d1f7fe2d4aeaa","scripts":{"test":"jest --config=./jest.config.js","build":"vite build --config vite.config.js"},"typings":"dist/types/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v19.7.0+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"../core/src"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/express_0.2.1_1681424659025_0.7800283247969315","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"@iamjs/express","version":"0.2.2","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@0.2.2","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"f680b1a4b57e2f1dcc828c443bd56e641a8b30bf","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-0.2.2.tgz","fileCount":8,"integrity":"sha512-3dCOASlmnKqdlQYIdihVyEgkq5VipuLBXR9skABTezuQPXfPWenPchz4azylHMiDUifvnkP2hVISONwF/Fs50Q==","signatures":[{"sig":"MEUCIQCLzY8fd+SiSVWWnqmnpT49damRV7STIHlt1aZYL6EMiwIgS1fm5VMKQjJ+FmjaOcEsdn6EXXKA5cuTrY963+/6HDo=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19666,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOIMWACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmp/5xAAheXCPk9xf19BX5DLTPJ/i1Tr1gTcxDfa4xJiVIu45NqjrzOC\r\nenL6JKrtlinhdFtatGMme/VLyXTvQX3Je+xMJKwWjBt+JiwB5IuKAaFpxIc5\r\nIrWXdlf+LcP0heHzKE7JMjygqfz2skVlsiqvm1hLgM4Oc69GqNzvmXfyzipm\r\nSkHm6ICZxss7bAQNnAyMd2N+6QUSVLhgoIriMjR77XXfvQkv2hQlyNnhmFFx\r\nulnpgxMmFE/Mp5Z3/WCDeywGOrrjMbhaDBtxA/p6+pw7XexnH9Vabd4DEF4x\r\nvQcmtc80FYrciIA3BDkVvJ4AB1QxE4n9pCkJ6k5817/BseEniTqm0+REeyf4\r\nIw3RoReTVerje80aJ72/D5SC3kGLAoankjkcJJ20V75/0Q+Xn6WW82HXkXPD\r\nAj1A8a2R06El2mMOzOphiqLjOm/ycX1a6u1PPp5ZP3g8swcZIisBJRkg/50p\r\nvG9Ive719J3raHBiKfllrh1CEl8h5XvkBzEa8LqBBpXO4S/Y41PivP0NwipP\r\njo8uc8s9z/1AWaBlaTdHIdilvsCnzJ82+DX96RVyGP5stuoHj/y5HHGrtwQM\r\nYhwm6+4pChL3YubV5wA5TlZgJN8uDVfYN5FNuOOmHPC8tA5wRssB5EevyVp+\r\nZzxlHZK+UPbc/Z2NqI1VnQc9aiWwuOmhGng=\r\n=tgVu\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.js","gitHead":"29271d1d33176fcfa9713a4b2c25e2d5f7dbde78","scripts":{"test":"jest --config=./jest.config.js","build":"vite build --config vite.config.js"},"typings":"dist/types/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v19.7.0+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"../core/src"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/express_0.2.2_1681425173917_0.24242268384098709","host":"s3://npm-registry-packages"}},"0.2.4":{"name":"@iamjs/express","version":"0.2.4","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@0.2.4","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"6316f58bcf37dcad1d475cde66a8bacc3ff18604","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-0.2.4.tgz","fileCount":8,"integrity":"sha512-Wl3EKmYifag91tb06RpKYjL1nneipemcEDSMyqtEfafPwp6ov3p9+mko6VkG2GlBGERcP5HDrv7kGPWe+SWQfw==","signatures":[{"sig":"MEYCIQCQ3jbZixtZHIl8zPK3hsY7CknNyqc9mdMqDeeWzvo4ugIhAPZt/W74O6/4Nx53hk1xW5MYj/268vP06ex1T5FCZL6f","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":19617,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOInkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmqf7g//c6G1efalZ/XJa4mVVVmJi9nY/OtEXRMsWxE6h/1t2qCkBJmk\r\nDNibi+7qwExnKTcug78Kgvk/fQG1HoRqexmeoqkoDiaI+0ty3/10wXeKK1rm\r\n0nQuevOr0tQVVHUE+MGniy5M6PYcfafg6ALauX8RdxXlZTe/cFE90NTXKqNj\r\n/bSQk58bTCjFm9YgC3nTaRRUDNflGQ4fDhxBnbpmguKMlOmuwmMS3mTlld3r\r\nvW7GYWFvm4x0RvE+DEUIFBtW7sAmMqq6Uwzvow+YIpa1ERTkf1P44UVceAo2\r\nYHVOZRZy4aURgaQLuxY+alSJt5p1xHsCXezklwVw6D74RLTWIDA5C9//sopg\r\nYeN7b6qWOifWVQxvXN4lIVE9tnl0V3uCBp3ENZDrggFCT37jm0mCCs6vPOdW\r\nHO1V8G+9dAxC3h1kfU1Q2eBOmTJat531Pe9/5tNd8rWd9YczMtbizOsS2/4z\r\n/kGevjI1KN05b3ZKxdPwKWhU0f6vynq+WMz9Y+WAyCIxo8AhDPxBv25stH/X\r\n6b42n+35KSWUWvZQvKS1Jcy1oaZRsMnkr+vZHcgzTKu05YKnLT8vEHOac9M8\r\naJ8VUGwISgxAt5cRFjCI3KxdVtKe5jnDvVC7GOMrt3smfW/oTZSFgSV0kMoP\r\n+rUsfNEcvNEY63dnqrePEk4ekgTFKte2+zc=\r\n=bHG0\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.js","gitHead":"3e8de84e71ed6f1b07b5e5252b2c880e5403aa0f","scripts":{"test":"jest --config=./jest.config.js","build":"vite build --config vite.config.js"},"typings":"dist/types/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v19.7.0+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0"},"_npmOperationalInternal":{"tmp":"tmp/express_0.2.4_1681426916352_0.026158546024055207","host":"s3://npm-registry-packages"}},"0.2.5":{"name":"@iamjs/express","version":"0.2.5","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@0.2.5","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"448f70cfa9ccec575d328649bcae2f96159f9d5f","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-0.2.5.tgz","fileCount":9,"integrity":"sha512-nkgP4yG7bM5SCMw3zAuh3+w1JsYYM9ARW2F+CElrF4QW1bFiNaz5kUmrw8j+1mnqZluWc1soMnfvcyuGf0x7KA==","signatures":[{"sig":"MEUCIBKY/YdqiV9vTJzP4VwWNTCzc4p5lsf9OeHGepsfLZc+AiEA0i2x68Vj3H3vTkRyEpu6FLgP5rRc4ucuLM7Eq02lJVM=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23359,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOblEACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmorahAAoFw+GYM6+t3dqb7QXvOrZwrLM+Hfsjw0Rev6nG3caWlE8TfS\r\n/t2G2aBPynl7F0MaEYutRJprZMr37weSRPADabwOtOcdn8DwJGb9KPmjvYdg\r\n/62ALbGO/Q2NNhXKaKcswkMBLRhQJ3c6Jmv1j/9Wb6882EmKVuNAGIqCyqIq\r\nQQhpvvTkU81w7LJGc3vTbG56AouTG4mxT+tkKEQD0sywSPWOOSgsHAZcDLKG\r\nFL6sHDuvFL84yIPeNNig9Op700IBmxWmpVc+E0+Mg4QeJ4kUr+9SibKPtFkn\r\nd/ycRbUFPZUHn7Bx5YtSjSMKKoecNOvsr/bUhiWMzqhSUty3HS5MEQWUn8Sd\r\npjyV9BADGNINUl1L9vqI3Xc2L4Bx12OY4i5xFDCDV+zUORSHufDyVCGkcKc9\r\nr1eUgRSikUsiMBZLgC56e8h1nL8kDe+bfpJHG5benVecTNtHNuk4z2ewYUz2\r\nrfge5dgI96h/gfMK2gN+POeefsnxnj60XqYfHb0pH7iG1snoIQhvPLwMMtC9\r\nNbKuwrCQ5NLUPdlr83f5dJ/WxJMQ18SXqz7s+0eaZNJjHB0hDC1oj91vd1JQ\r\nFpv8dic39FkjqK+PAXEEf2nyRSDpbp62EEzE8abzhC08/V1J2wjfmnzrkt6R\r\nXbUSHj3Bk4M1zJEZFMsW0Kul9TPkPhRxcss=\r\n=ICsq\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"682d61ff83a6a7ee24a01773fd2b082b3ab269f3","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v19.7.0+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.2.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_0.2.5_1681504579861_0.8985328034530222","host":"s3://npm-registry-packages"}},"0.2.6":{"name":"@iamjs/express","version":"0.2.6","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@0.2.6","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"d4ac176dd1b97ae1ea899417490ea47eb0b566fb","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-0.2.6.tgz","fileCount":9,"integrity":"sha512-VmNh62m4QXks7bdpeYfRJHfjMuBmP4iMfAdj2qwF8C9TE9AM0sh7A6mG4n4bYNwSnXzAaFsH1sq0Ur8i+jegmg==","signatures":[{"sig":"MEUCIQDX4Bl1M3Zx1g3E6udhk3IyCNvovTPfQjx4ehHj5Wt9yAIgNog2pRPhIaKi9ih17ZN6wAX98yN9vGdtd37+kIWqxAs=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23347,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOc8/ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmouuRAAoAvI1tedHLGTFHSBQaVDZnhmRyz6B/k0sieiHAi9qxl3mxKn\r\n3q+Gwmm46u2C76hBsQRE2XunMH8req5fkCya3Ik0tXjXaNAF/Q7r1NnHq5OZ\r\nG6S+/UFCB6A6WdqoYp1rWqctuN9xRI4k40U5Oa0kPVqNNCCekmDugSX5hKrD\r\njyr0uNU2nUB1eSFJhhqwaWL3/Q8bzqPVQKSo0A6+OKhEDmt4cmMNMxlpELyG\r\nONGpqSczveOyNe+dywAttETPhQyqA44Oh0MQWkI46LqwNH8OMj32mE4fDbpZ\r\nXAb22a3uctGECINBJ9NNq2AceaE98lC5aQKfLRYmUvYwetUjRgkNA4CFnXyq\r\n81hu1yq8iDEQ2cg0UcmIJ2TEIqeg0JtEPWWABH22CT5l2OmHVQIhSZumLhka\r\n4axaa1ADkNG4gsEjRnfMbDusJVTZvfYaZWzosud3H//qHqcoNAMrvEv5qWuK\r\nCwQ5YHkn1g0+LioxpNdvwRraEgCUPRXUqcdS3AK+10PfB1W/ISoQN9u5WsvY\r\nq5ytikitLj1TtS189q6IpYvtjJij/dRsHd3IGkpXFcRwTULYZ+oWxH0pCKFv\r\nOWb6WyjlOCbdfIGv3jH0T4DunW1SHDPP02qTSkVgDFpuPHyzRJBJWV7SiKRr\r\nhgy8qKWnBPpXVsMwepH2hMvTp7j7to7HNUM=\r\n=yK4D\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"1e5d22609b0381ec714e374bd157171bf9f3c3f0","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v19.7.0+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.2.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_0.2.6_1681510207800_0.7517197200449901","host":"s3://npm-registry-packages"}},"0.2.7":{"name":"@iamjs/express","version":"0.2.7","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@0.2.7","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"32c29f09f6127b95db22c76fa588107636b6677b","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-0.2.7.tgz","fileCount":9,"integrity":"sha512-NEpcFl6yOPDkkMddYvjM5saWkTP5dW+w/Cl0+kwfv8YVU1DZd3UUVrM1vkc2Zce9DDdmpnVMzHWxTtTHLRoWeQ==","signatures":[{"sig":"MEUCIQCXhRV8RxL2kPTfdHObNdKOMH2I+CUU9BOAj0EbNj33zQIgE7jSnl+Xd7At7AQ9Wct/kZp+/RkWRpZvKkc2TcmdXy4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOpK1ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqVzA//Soo+cAj+WtUugEobW6es33uNAoyoI8whPyn8lNX6NmnCbn8i\r\nhcLjWoxsRzDez7Uku+fbVY2Josw4/urtazC1HVmQ4hBUiWagQ537/N66rVB7\r\ns9duyh8Nbpm8IUAVTCQMbCEHb4ScYQxNudcoVAg3dDp/Y/5VPxjQo8BPsamA\r\n6elsgi7gAEF46ng49hQt1jQQPLg8TVmfzbwmzXAK95lS9ZY966bLtSArCDTg\r\nk73WUUJvrRaK56m1fYq+ueHEW47ie3x71GoKKT8EY9GumeErE917NDY6i8nQ\r\n4ZiRHUQvAuq7KiRRE7ZQskPLHcU8pcyi24rcsnTSG0aFte8zDTovIADPy3WK\r\nn+Xx8dOVwQ2e2e2yf3iPEICBQ8+zbYpWgijXbcxVbyhEqfuNbGhRlkosYsvR\r\n/TiooErUSZwiC3zDX42kKGGkIAWapFeDHcShILv0ArZ17uFh7RTJPpr48Js/\r\n9ocxU6vjHcU0RQ6PW4oJ4n5oMXVKtSmt9z3MjoX5G6pRr0DuOc+fgtBQLgOb\r\nLxmYJXD1ydHfmL6zRw8tOHtP6Ku9DrvTcFHh8kLMax0gu3UjanHGOcdfH5AI\r\nejM+uodO3jSem88+ti3Ye1Jf2jl2cW/899FmWbSTSQgCsI0kTudnBdZT4QnK\r\nWJZ5ObsQ9WfmAngN5BRkv8cotOzGQcKMV6g=\r\n=Hu2S\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"2df0e373c8c30954f14e28586ae5fc18319f9db1","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v19.7.0+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.2.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_0.2.7_1681560245770_0.9711697756245514","host":"s3://npm-registry-packages"}},"0.2.8":{"name":"@iamjs/express","version":"0.2.8","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@0.2.8","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"b5793b9178c2ce056dc84cd8b3d66d557e47d8d2","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-0.2.8.tgz","fileCount":9,"integrity":"sha512-bIAULMQ0bvkHUDbdM0AT87GKqBLZy1Q6Ge2Wl1Z7aeGlLMSU3am8kz5iX15hYVWB6fKUWocezjYSllq81S5d0A==","signatures":[{"sig":"MEUCIQCeXBAHm8uJjDOSQiwm4deMWvs/h/h0oV8bKPy3mgqkyAIgPe2BK1Q8+musaEzrPDaOm72JSK848Dl62wpNCEELdyk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23257,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOpSTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmplDA//ZYxTE7/tOOi0VWfDNpJf9Xp7JD2gF9Aizi6ss1amRgSy7CDP\r\nZrxpze4kn7jg4AN9tZgDpNg57/tge3/6ePxO2PcucjPFryFBQd3zAdhRs1TV\r\n8i89/za2oGbv1s5hnnVhDwDbhDpLY4zysysnTU9bWzFjqf/KY0LwjfDsBddi\r\n+O9Pet7hO8buUept3PuN7s1d7q2bu1vUiYJFC9ReJzBK8nLIrcyIy5l4fuGu\r\nZ5N9XAj4/ms76ZuMXqf59SdGGkkFkM0W5Mj+yDHaIooPUoQnV0mN1YHOH7uw\r\nrVEwZFElMBjblOeB2Qc/2QuJalIrD9QkyhZBEuRW2FlCDw8OUYRfrk3Xbb21\r\nMniH3TWE0tLoDkhqN6AiFxeUST9RrgRgnC28iyGe+r0EnWfw/v6O62op8Nia\r\nPYEsKi4Y5gFH9NGC60Uj/lZTqIJEW2NRHMf5KRv9ORVBukz4ep4sMLdsxMkc\r\n2O8h9Fm5RaPlk5h9jHt9YsjE8uPhpfVDQnQf1uvlMDXBoe9W9dGaIjvircUK\r\nVeCD0kb1+s9Qutc7yKBKpKq8pcAuZa1il0AIstxAMO6q2tc9KxOEVtzhAk4k\r\nDiCyWlmSIJly3s6MnAMOveKE2Uoe7mhT+XnTtGYnTWvY9izdOngpw6nDgj0H\r\nPkCE5/ma/Lh/IKAjxbORUjPbj8mGe9ZGw1k=\r\n=seQY\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"dade4383a453fdddc77ef03c0e8013af29751c6a","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v19.7.0+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.2.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_0.2.8_1681560723470_0.8600763376959968","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@iamjs/express","version":"0.3.0","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@0.3.0","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"752697b23b11d6286ba51688388b3c105507f07c","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-0.3.0.tgz","fileCount":8,"integrity":"sha512-ZzBQFUbcWmeRi9PvjIqbBSKYpyebzLe5qBJfMljQmNC3NSTd0xVOkzOH6ljPt6svC/w7avB5dJZb0l3C/ukbJQ==","signatures":[{"sig":"MEYCIQDHM2oCUaX7kN502Ov+zex7wRytRNg5EQX8NbCnopfW2AIhANiCZtNlhgng5ItsWeXImuk/0C70kl2+sNCvHQ/zUqHS","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25835,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOrSgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpmCg/+IHt1YDq52OLSnP2MVyAHk/nKamsIM5GxSSdTrnPwbwL2GkcY\r\nGFMhIjQVfZo+sbp7dy4ZJpLXQqi0wk7zavJk4X+Qq8EugeCRWT7q/4E6sFzf\r\nN8Q91G4VnLnsRbgkn1J1PTBZ9OZswh6ePYcU/TYUqDHshZaee/PLwp3pz/Lu\r\nWxR2t6sERQzuWfHDCLPqYltJcSDkfcQicj9G8/z1ausDc6sF65NrDJaWLeCy\r\n21Lij9Eo9bMlJSe/gje6X0L0Ziy3Mz7sF0rjpi5jqbjT//R3d5sOygAL2XqV\r\nAUL/lCRmyeB0zBKzlBQCotWRyvc331YIlJhyp6LJ++1aEJRq1aKmh/vBA8WU\r\nap5H2ZM8rjPXL1bfO98VNbOoWmJj4UgH7ITjMeHpB77+M2rnIfJAU00rsQbT\r\nH4HWqVLK8y/7m+fiuVwLunFjM8c+D3IZuWzXo5yhlvib79unBztTG8bFM75F\r\nYBSSoPKIAOL9HbkEbYG/MK5LLVWYIH7iVkhQ9t2Qwel+6fHbMCFCwrZig5ou\r\n1WPfgkeIdHdZ/YfrwV5fIFd14KlFJv62WMDlVww4Bx0ekANNJcQPWIf3EGt3\r\ng1wVvMIVMZOq7sHPkBO4fnFXcvUf1C6RQpfTvmUB8uyV0lZHuYoP1khQcvwr\r\nTTnLLaFu+fAeXwNxfNed7ikW1dZF7O+THqM=\r\n=qe5c\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"fc393383ec2950c17aa792c144bba0ead9983622","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v19.7.0+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_0.3.0_1681568927934_0.786375662886468","host":"s3://npm-registry-packages"}},"0.3.1":{"name":"@iamjs/express","version":"0.3.1","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@0.3.1","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"644515b3805136b5bd2dc6c45b7fd682bb874694","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-0.3.1.tgz","fileCount":8,"integrity":"sha512-JCJv9t6+4MEPNVGaz4EWTxxIL5EpmHl7208Q5g987vQY8VzApHmZZLmxfA9SZXMkD0hOxh+zVpgxOEJLC8XMTQ==","signatures":[{"sig":"MEYCIQCSVudTYhyz+iGOyvspA3MqlTiIvpwP5oEul7tUQzgPbAIhAJv+EF6mLiizjw4lCKvFBnfz4Rs+rS742e3GFTHN+qZ0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":25859,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkPiE+ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoOiQ//f4r7HbWG6nW/O8t8UXGzouNssEUnvBbnb9qk8Uqy/ZNqqI6R\r\nAQRuyV5jLOIbfwz1jD/V/Usdus5KhXv2kU5dXuvFMd0jOebjIA2wW7vVmqns\r\nYrQ1RlTyxVUh0Ep30nb2MwFuocupxHkSxq6XLN7vXzK5lt5Art7j5B3hyBPw\r\nnsYW2Typ1uW3vVJpp66mU9qEzp2t0Hnxtp37LH9ercMHwLRytN2dCs8Zzdgl\r\nKg1+aiHx3wqka9cICN+mpTSDkl9k5jzoTJHHKRc7xxC4tQIt3eN+Ybo/QvPo\r\n97ht5vPz6X95evvE6V8By5OlNJCGlTdu4K5AucSspDLXItotWVTYuRgKshds\r\nItKbL/RQ3pXeu6Ui43po81NqTvAhp+68glIHMcmbHafgVCz2rFcRuv4GK57E\r\nUZHAAFLfn184gTPbyz47uLT3PgITsUObaMWoZNr6DReCjgffnwk9AeH70k6z\r\ns2Hdf23nsQdB67H7q9c+mPkQGwlyjZrf/T2c9Nka4a6oY8m8F4klqujkg0tw\r\n/eFdzWnVilTXv7INLXa3aU0f49Xo+Xa8Cvf4Oz7MVyylt0a9baftxPYCtRMy\r\nN8L/6XsbQqLP63XH8KcTgI7XpoXx+M8j3FlQsmANoYDKEoKkQJtI53ngu3EY\r\nkc634ycts9FtB5sizUvTLKQwfjAhanZlcjs=\r\n=te5p\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"65542d18d22346f3332cf6b5d8ba49a7f866f1b4","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v19.7.0+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_0.3.1_1681793342019_0.01604022377818315","host":"s3://npm-registry-packages"}},"0.3.2":{"name":"@iamjs/express","version":"0.3.2","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@0.3.2","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"804da59147b0520b3f7f72df27cade800f17e5ca","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-0.3.2.tgz","fileCount":8,"integrity":"sha512-KmbSs4UKdS/Z8hZMK6PyRm9cD3z2go7uhwb12kRwbNmgfCyQCK3UoEzGgkTKTgKgQ4uPOoC13B8mEmfGsmlqZA==","signatures":[{"sig":"MEUCIDj6XlKfIlJWX8MFYQPQqTKmj74XDrRYONCTypBUzYIsAiEA77lfD95UudZygREvwJX9JYtwtMwbiG11Jfl38EW9BKg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":26157,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkTXwkACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmryxQ/+IQtl8TuiTzDkR//yAQg487rdPNnIiNKkP64cQ6fScv1W2NBr\r\nP7lEbLXDln49l+TzR/yfhIWpXTkC8ivPw/ikT5ieVQbbyb7lLEF/vxAY6J34\r\nMhCd0ugHQXjDZHAwFjl9LnlFTxawlXIbPgvHl5U7lx6ngUM59CWiJPoPqazD\r\nh/LYFk9ztiFeXpK8Gy2CAfTraQ1lJwNF3gQDOHBYhoZqQTlUsXMTkHXgWtJo\r\noggNnsqGZqDazX0vuIWnfYK06eYMn/Caz5oe54oXo3dLmiADR+Z6wrBpquED\r\nwitsLL9jOi+sTurVQeAczQOOiF4Cezk0OSbEy2s/Q9zebt1nfWBT1H/UbWkL\r\nb0T15Q6BfzcEGbz7auXhTv3rhjztT7MqNQqCf0MkO5SfCakhoYjwZ51gt0fX\r\nWJs/iqc8ZMCjGLfXz2dlQl7VovY9KnmJz6yAKp4jefln6AugDKyZTzJjYtDz\r\nmVGCuy2gRczNA1BEmJ28g9fJ8E2SNFKAgDdV+4qOuKJo5nypRsfMPIEWaoLU\r\nA8mnH4VzmAyUkkpIm8tCzFP6Z5zTHljrpw7m+2o0GbDP2XnUTrIPD/SsbAfh\r\nsSLnAgngBFEKxtBePcSdeztZmmxj+2TQ4C0BTrRLOF6szdn1+aICdxBY7OJQ\r\n0YEcUMCn47ENdN9p/saAGl1JpNlHImkAtZw=\r\n=Rq+2\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"a9e727e30f2e2d258f5e6d2a15034f8b45a25ea0","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v19.7.0+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_0.3.2_1682799652455_0.8193527186535201","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"@iamjs/express","version":"0.4.0","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@0.4.0","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"a23cdcae07683d79a75bd378c0cd4bdfc7ef26b9","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-0.4.0.tgz","fileCount":8,"integrity":"sha512-zD79/F/LPjqDHCi1VyLAb+lLf3dgJ6P0lIshVgUoji+LWidolZnt59EJ8r24AJZVjYzSqLuVC3Qx96F7AidVLw==","signatures":[{"sig":"MEUCIQDwi91nQq1Rj7U7eAwIUfwpDGv4EtGugd70bBDsxFeq1QIgXFjlX4+YJ7BXShUOXghRqMoH52DKdRLicw1uesdO+Kg=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":28594,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkTr2nACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoeEw//SVmtaoiuQfkkAt6inD45M4vHzhY1Qt2C46AvOHNX6XkMMdgs\r\nVCAwEjk2mnTukEGDCX/8Om39Q9iPzAIXtDlWu/gsF+TP2eLDOglHf5i4Q73F\r\n7eJoUWUUyQxds2ol8EJhkLlKJ2gnt2y3x4AHbTiTg3mlzawOPNJyWAbot3Dc\r\nW3IOWpJ+owGtblICIFMjlLWgqNpV2XVyY0CC6WB8GjRhDxYVBmdt8bbQk4Yp\r\nCx/FK3gkVYOUorPH3C1LagJxO+2IAH5jzQlN7SQ0eDAHSlXW5Ifstjo3X5bD\r\nDamVUcplvfYbvVB0Jl6oqHtcZC5v+oqZlXmUUI+88syXIk1eJE3dsfv4Jlop\r\ncfYLktAFyhGSllGGQwqYDmUWo6mJHZVrqQpue0aaE6Gq5nvcq9Yiz8PwJrjv\r\nkRLYGExv/59GRtG8iwHDmFpMxZEIEcOy0WLIThmeF+Byqpq4dEGr6r05b1mh\r\nUGn/ImRN3H9fu+sTltLzUBcZmZUK85ccWNOe4p1ELW3pEtB7g2n+K0OCeDeO\r\ntiXAolvfS3XDrv5RTJlhX0d/mtf9LxmnRGfTFtVT9HfcJbVleStKzsu/ozYg\r\n4VkVRLbekDOyw+Ex6mjnslJU0uh2R5puqJwxDSyNAwenYLuRqdmXGhQu4h8X\r\nIEro5D7WsK3ixryhJ/qxKnGPDS+LhwuHHoc=\r\n=bUDp\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"39bc7b8293b75c13991100d8132aa1ec15e1e80b","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v19.7.0+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_0.4.0_1682881959512_0.36117754058270224","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@iamjs/express","version":"1.0.0","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@1.0.0","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"ed80693dc187dfa313b9fd0a14a2e5222535e5cc","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-1.0.0.tgz","fileCount":8,"integrity":"sha512-J3CPfMKGXlVIqP7LbGIVXDyr18rcjUhBm/Y7WgvzgRuZuEY2FUzXWsf9e7DodEYg0VcsJFbH7YLQ5KTSThNTnQ==","signatures":[{"sig":"MEUCIBi3H1tLKnn/n/VvMuOWIOPpWkcVdUBnstKnpfxn4ONlAiEAoK9NEnj26IUci/Jc30+2787KqyrV8AeZEC7iTYJnO84=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20967},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"73b97b47e202a764c7420cac476e47f302f29a2c","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v20.3.1+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^0.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_1.0.0_1688758865002_0.7655732557615669","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@iamjs/express","version":"1.0.1","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@1.0.1","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"cca1a019d28c37ea9a0f0b78bdb31ae2a0ff5354","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-1.0.1.tgz","fileCount":8,"integrity":"sha512-tVOIhw3QQ/8gFLtTDV7NMadDt/ni4MVCvlHHjq2nfx9h3ZUwX/qfivaVQsF2O2/zdxxrUEzAz1xwoyi3XnqtMQ==","signatures":[{"sig":"MEYCIQCuN7yB0NuKcXrHOPZVq/CDy0soMGqrA2f7XA552i8tnAIhAMUbA2xXX8hHO8SNSV5F/8zp0jTlqIK5F3lkdnbt65l6","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20322},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"94d696cafeed43e7f22e3c524914bcf5dc059d84","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v20.3.1+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_1.0.1_1688760091861_0.16288221070110298","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@iamjs/express","version":"1.0.2","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@1.0.2","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"48d496afd74c7f5055b9b098fc170d12cacf9479","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-1.0.2.tgz","fileCount":8,"integrity":"sha512-vm1CTtgP3FNtGd9H2CpT22NE/ex+IfyTnnZ5D3myWeZWcvmmrPUXk/3M9HaUG8h98Msqy7hcdujTVBFo71JyqA==","signatures":[{"sig":"MEUCIAUOoVXfTA5EsUcu6oFvu0MoV4Hmt3MbyyDOdKoKtBMhAiEA7zYVGLmCwpAtd3tVIbuUK+tHhuJNjz+1IehtI2c4LQU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20322},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"42f2bbcbb811332e9bd0045add6dceb3d30b83d6","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.2/node@v20.3.1+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_1.0.2_1688760296366_0.5320767489182665","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@iamjs/express","version":"1.0.3","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@1.0.3","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"22e5117773cda283e5b55df58e464bff2f7f8e10","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-1.0.3.tgz","fileCount":8,"integrity":"sha512-1rcXlZ+MFTcs4IkiUdDQhpRSfAcUDGKxN3e+jHStjdDkWNUIcR48X6yqNpFJp6G+AP4vt6OWBjmCtuNpL4lJxw==","signatures":[{"sig":"MEUCIQCcfJIfcKfeJLQgH2v7fIQPHKMyo/nZxkIMFx0nJUBapgIgAnEnGfRoPxwmCmLCcfZqOqTiFhOH4Kw85Pwi+pQpqC0=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20380},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"a76b570a7fdb3e1f17647be288f1c31e0a0d0a51","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v20.3.1+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_1.0.3_1689728893030_0.8810399790263104","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"@iamjs/express","version":"1.0.4","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@1.0.4","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"8ee43be75d0465366610e66be596b2350c9642bd","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-1.0.4.tgz","fileCount":8,"integrity":"sha512-CuvPGiDh/qo2MQvgv0xFjgGDWngk1Etp0Iex4AMQnvGHJ55LMTr5xdsmyxWj57eB9pBIkF+ryT/MnMLHQBZBAA==","signatures":[{"sig":"MEQCIDgIhmsWiSu/xoOOd+XwFaGjMyjYF/e3NBUu12kTRwV4AiB4ypt7ce59E977PWiNtKUWzrgiGG87B99decbmRvEvWA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21025},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"63ec8759ad01c1a30c979c179f355a8eebfe2cfb","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v20.3.1+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_1.0.4_1689953377549_0.2676417910000901","host":"s3://npm-registry-packages"}},"1.0.5":{"name":"@iamjs/express","version":"1.0.5","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@1.0.5","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"3829f661b1126307ee0757daf26e284e6dd55874","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-1.0.5.tgz","fileCount":8,"integrity":"sha512-BnhNXCyvfkUxBOF29FPdS58/eQEbG3JzuUDiPS4WR0KIjp4FpAK097gXhQcQxrZnMI/JgkuatYPz2DM7CPW9mA==","signatures":[{"sig":"MEUCIDGdhT8FaIQkRhr4Nqubey7KRWuA2tHz7QqT9as1f9kZAiEAsTmcyPBwhtwOo3CbGYH6XtxaDa0hXV3jewZwVuPvclk=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20976},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"f0e795421a4ea6828d3d6ef1722bada083f862c9","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v20.3.1+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_1.0.5_1689957470873_0.9933768770381239","host":"s3://npm-registry-packages"}},"1.0.6":{"name":"@iamjs/express","version":"1.0.6","keywords":["iamjs","permissions","roles","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@1.0.6","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"ab7cfb884e21fe07eb54adb33b90c9729f7d6084","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-1.0.6.tgz","fileCount":8,"integrity":"sha512-xNFCKQm9VbMiIpTUpQPeYB88zMPuDbKXOf31qS9m2j6enBKQm/IWAlJv2nR44zTeTM9Mjnpt7XxUhq8S2UyZQw==","signatures":[{"sig":"MEYCIQCCopGYwfWHAm7JNcZofkwjrx9H7kTfgi6EKAaqjPvb9QIhAO91ktjcZ1Vf0m7TieoPNLwgBgy59WnepigeFEl5VVF0","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21035},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"dd50452a7a6de0b50170036f827a4db4b6c5e522","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","_npmVersion":"lerna/6.6.1/node@v20.3.1+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_1.0.6_1690317846162_0.14364703325484052","host":"s3://npm-registry-packages"}},"2.0.7":{"name":"@iamjs/express","version":"2.0.7","keywords":["iamjs","auth","acl","rbac","abac","access control","authorization","authorization library","authorization library for node","role based access control","attribute","attribute based access control","access control library","express","express middleware"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@2.0.7","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","bugs":{"url":"https://github.com/triyanox/iamjs/issues"},"dist":{"shasum":"f8801e06e31165a04acd0729c19fca949703062f","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-2.0.7.tgz","fileCount":8,"integrity":"sha512-+gHzrB3bZQw2lJ/o4fLJjm3uUmL/P9A38EEwCNxiq5JW23fLbfColE87YivJuavj3a2MlwHzVy6ue/jV8qPuVA==","signatures":[{"sig":"MEQCIGWsuGvY804MakQ55mVVeo4iL6EZEkpmzX+VqyIZt0wHAiBeI0gO15GWZDtIce0a1/zFCdaU/3dUSJg6yRQAQxmcJA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22610},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"994551228a9eb1bb8a2d07599f876a2e3e30a9c1","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","repository":{"url":"git+https://github.com/triyanox/iamjs.git","type":"git"},"_npmVersion":"lerna/6.6.2/node@v20.3.1+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^2.0.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_2.0.7_1691669661171_0.2400199501682685","host":"s3://npm-registry-packages"}},"2.0.8":{"name":"@iamjs/express","version":"2.0.8","keywords":["iamjs","auth","acl","rbac","abac","access control","authorization","authorization library","authorization library for node","role based access control","attribute","attribute based access control","access control library","express","express middleware"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@2.0.8","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","bugs":{"url":"https://github.com/triyanox/iamjs/issues"},"dist":{"shasum":"e4f636fe401968f0818edb48082f8c6d8a96029d","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-2.0.8.tgz","fileCount":8,"integrity":"sha512-28UCdHKZPMInvvv0XRZlRJF7pc/RWaA/YWmUECx4/IJ8bCBVW6ZhxLdlEdwrhDnmQsrmTzukXgbJdHGEew4L5Q==","signatures":[{"sig":"MEUCIQCHDyM+N4Sdw2HQIT183dknx5ZOC90cfnEhEIzjqY8A1QIgCGklZo8dR6R6gu9qiL+3ErsqlN5+NhcPKlgLjxz/L/4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":23672},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"81311c0c24d1ccbc57e4f31a6f4e5a3156c34937","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","repository":{"url":"git+https://github.com/triyanox/iamjs.git","type":"git"},"_npmVersion":"lerna/6.6.1/node@v20.3.1+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^2.0.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_2.0.8_1691732675952_0.2611531649873535","host":"s3://npm-registry-packages"}},"2.0.9":{"name":"@iamjs/express","version":"2.0.9","keywords":["iamjs","auth","acl","rbac","abac","access control","authorization","authorization library","authorization library for node","role based access control","attribute","attribute based access control","access control library","express","express middleware","typesafety","typescript"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@2.0.9","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","bugs":{"url":"https://github.com/triyanox/iamjs/issues"},"dist":{"shasum":"8787bd9abc184552a036c4e818f50c3dfa8919e2","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-2.0.9.tgz","fileCount":8,"integrity":"sha512-c9j5UJIqhltxfawmDOsHtgG8ZhHfjKfr5Yt7hMyy1unWKBdZoWTSWxKxm7kAREySpdt4VABDQ5cD1M/zwyKUAA==","signatures":[{"sig":"MEUCIQCnDw17uyZQfh85Alu5Z3ZPhgVPor8DITroUpi0EnrU5wIgc0+b+UPeh+6+fveQFACvr7Rkpz+wSomzXY813fM9f2k=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":30843},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"dd6b6c6e5af9ec6ac0f031fc19f18e96d15560d6","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","repository":{"url":"git+https://github.com/triyanox/iamjs.git","type":"git"},"_npmVersion":"lerna/6.6.2/node@v18.14.2+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"18.14.2","dependencies":{"@iamjs/core":"^2.0.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^4.2.1","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^3.5.2","@types/supertest":"^2.0.12"},"_npmOperationalInternal":{"tmp":"tmp/express_2.0.9_1693675207823_0.2906571026615359","host":"s3://npm-registry-packages"}},"2.0.11":{"name":"@iamjs/express","version":"2.0.11","keywords":["iamjs","auth","acl","rbac","abac","access control","authorization","authorization library","authorization library for node","role based access control","attribute","attribute based access control","access control library","express","express middleware","typesafety","typescript"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@2.0.11","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","bugs":{"url":"https://github.com/triyanox/iamjs/issues"},"dist":{"shasum":"e49169425afce9cee7687d206ae2519db6bfdec1","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-2.0.11.tgz","fileCount":9,"integrity":"sha512-msJ9I3PXh201WvbN1HQiOP81DvQIYfqkZ5NzQHnlSMP2CA6H4xQMrHQsYGYKuFUVWa+A6YGwoLx/HFLV5T6lxw==","signatures":[{"sig":"MEUCICO7R1KO3VOp+WZVOWrtMQ37GqpfrdSC7plnOjpXHz7vAiEAjh1AZiogy8iZfZbeCGbLMtjgz2cdE04mGuKy0TkbQV4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31459},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"2726b56b86683fea07885bee97f994b8fd891f3c","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","repository":{"url":"git+https://github.com/triyanox/iamjs.git","type":"git"},"_npmVersion":"lerna/6.6.2/node@v20.5.1+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.5.1","dependencies":{"@iamjs/core":"^2.0.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^5.0.2","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^3.5.2","@types/supertest":"^6.0.2"},"_npmOperationalInternal":{"tmp":"tmp/express_2.0.11_1706279784137_0.18536774581125837","host":"s3://npm-registry-packages"}},"2.0.12":{"name":"@iamjs/express","version":"2.0.12","keywords":["iamjs","auth","acl","rbac","abac","access control","authorization","authorization library","authorization library for node","role based access control","attribute","attribute based access control","access control library","express","express middleware","typesafety","typescript"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@2.0.12","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","bugs":{"url":"https://github.com/triyanox/iamjs/issues"},"dist":{"shasum":"2fba1c876ddb7c226615faf79f6d5a32799c59b1","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-2.0.12.tgz","fileCount":9,"integrity":"sha512-DjoyQPTMpe2+kMI3DkqdPH/2gIsfdAv/k49mq26mkC5xC+rcib3+BsVw0kq5vd9ofW9QTjqXH0dyK+S6/ZtJUQ==","signatures":[{"sig":"MEUCIFSNPMJFmHYhyLI10sU8lW9gqsKs6ib9C+yhr/Q/r7ryAiEA+yHmDXUosNNGFOii3z4zcsMK01jh2GrxpJe84L7ks8I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31459},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"50beee55a9711a135b0de978efd3f2245615e82f","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","repository":{"url":"git+https://github.com/triyanox/iamjs.git","type":"git"},"_npmVersion":"lerna/6.6.2/node@v20.5.1+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.5.1","dependencies":{"@iamjs/core":"^2.0.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^5.0.2","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^3.5.2","@types/supertest":"^6.0.2"},"_npmOperationalInternal":{"tmp":"tmp/express_2.0.12_1706280427861_0.09398673645688493","host":"s3://npm-registry-packages"}},"2.0.13":{"name":"@iamjs/express","version":"2.0.13","keywords":["iamjs","auth","acl","rbac","abac","access control","authorization","authorization library","authorization library for node","role based access control","attribute","attribute based access control","access control library","express","express middleware","typesafety","typescript"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@2.0.13","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","bugs":{"url":"https://github.com/triyanox/iamjs/issues"},"dist":{"shasum":"7ca39051cbd48427b9d56ce6581f1afd1a8d2616","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-2.0.13.tgz","fileCount":9,"integrity":"sha512-xscxuhGcPnpsUl/yZprQv75A14Gz0RgQ6AhxrTsf0m94Co0zffryL/YFjFIM3TpB5u7qSAIsZtAYtZAHQZf1Fw==","signatures":[{"sig":"MEYCIQCL1xJsjygZoVW9/aLfKr0+JQRAU5O+JMja+9Ss+ZM5pgIhAK2A8V/DJPHFtaAd1kCC0Ir/KqT7LIJqQM4zr/j7vtsl","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31459},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"b03139b2de5a0d303122a0f8d243c4c0b8eec3f0","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","repository":{"url":"git+https://github.com/triyanox/iamjs.git","type":"git"},"_npmVersion":"lerna/6.6.2/node@v20.5.1+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.5.1","dependencies":{"@iamjs/core":"^2.0.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^5.0.2","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^3.5.2","@types/supertest":"^6.0.2"},"_npmOperationalInternal":{"tmp":"tmp/express_2.0.13_1706281145881_0.8701402159718985","host":"s3://npm-registry-packages"}},"2.0.14":{"name":"@iamjs/express","version":"2.0.14","keywords":["iamjs","auth","acl","rbac","abac","access control","authorization","authorization library","authorization library for node","role based access control","attribute","attribute based access control","access control library","express","express middleware","typesafety","typescript"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@2.0.14","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","bugs":{"url":"https://github.com/triyanox/iamjs/issues"},"dist":{"shasum":"848697c1a05428bba24f58c4038302a76f62a905","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-2.0.14.tgz","fileCount":9,"integrity":"sha512-Ywb1bl550tM8q+RDLspp8v51w4sHOIh9pu8Nilpnu5PL+IyBcT400B08XjO2Oh4+T+Nf+wsbyDRKcopMTx+Vuw==","signatures":[{"sig":"MEYCIQC+N0gZWDpKhbg6Q3VTdePk9cTtKBnmDZ4JmA1U7KO8qQIhAIgbwmek/6FmFO1XDMUnGF+XZirlNIjbpFEMnpQIf1x9","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":31459},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"b83105dd9180ae853e68d16f95f64515e8cc3f34","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","repository":{"url":"git+https://github.com/triyanox/iamjs.git","type":"git"},"_npmVersion":"lerna/6.6.2/node@v20.5.1+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.5.1","dependencies":{"@iamjs/core":"^2.0.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^5.0.2","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^3.5.2","@types/supertest":"^6.0.2"},"_npmOperationalInternal":{"tmp":"tmp/express_2.0.14_1706281513207_0.052891787461141426","host":"s3://npm-registry-packages"}},"2.0.16":{"name":"@iamjs/express","version":"2.0.16","keywords":["iamjs","auth","acl","rbac","abac","access control","authorization","authorization library","authorization library for node","role based access control","attribute","attribute based access control","access control library","express","express middleware","typesafety","typescript"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/express@2.0.16","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","bugs":{"url":"https://github.com/triyanox/iamjs/issues"},"dist":{"shasum":"221508bf8da7fe687214cbee8a1c2c0050f99c4d","tarball":"https://registry.npmjs.org/@iamjs/express/-/express-2.0.16.tgz","fileCount":9,"integrity":"sha512-X85iokQGK4IAYvr0VGuzzICMmPNqwvU4z1UrdmfnO2zxv1uCZro7fY7MP+wYtqnYpiqq1lZoabzfOTmPrSrUGw==","signatures":[{"sig":"MEUCIQCJy3dAy0suvrNdH2XKGvhTwv3BRIZbHQJGCuiEbINouwIgN6KtASA1btQ+BYkPe9ze0DueG5gCGsgKtkrCwMqh0TU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33832},"main":"dist/index.js","module":"dist/index.mjs","gitHead":"0f41b633cbd0755524d6ed99252922ee3c2efac0","scripts":{"test":"jest --config=./jest.config.js","build":"rm -rf dist && vite build --config vite.config.js","clean":"rm -rf dist","prepublishOnly":"npm run build"},"typings":"dist/index.d.ts","_npmUser":{"name":"triyanox","email":"hi@achaq.dev"},"registry":"https://registry.npmjs.org/","repository":{"url":"git+https://github.com/triyanox/iamjs.git","type":"git"},"_npmVersion":"lerna/6.6.2/node@v21.7.3+arm64 (darwin)","description":"This package contains middleware for integrating the authorization library into an Express application.","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"21.7.3","dependencies":{"@iamjs/core":"^2.0.15"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.5.0","vite":"^5.0.2","express":"^4.18.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/jest":"^29.5.0","@types/express":"^4.17.17","vite-plugin-dts":"^3.5.2","@types/supertest":"^6.0.2"},"_npmOperationalInternal":{"tmp":"tmp/express_2.0.16_1720835451887_0.16229341508461115","host":"s3://npm-registry-packages"}}},"time":{"created":"2023-04-13T21:45:54.760Z","modified":"2025-10-27T13:29:35.632Z","0.2.0":"2023-04-13T21:45:54.969Z","0.2.1":"2023-04-13T22:24:19.189Z","0.2.2":"2023-04-13T22:32:54.129Z","0.2.4":"2023-04-13T23:01:56.520Z","0.2.5":"2023-04-14T20:36:20.109Z","0.2.6":"2023-04-14T22:10:07.957Z","0.2.7":"2023-04-15T12:04:05.953Z","0.2.8":"2023-04-15T12:12:03.609Z","0.3.0":"2023-04-15T14:28:48.248Z","0.3.1":"2023-04-18T04:49:02.199Z","0.3.2":"2023-04-29T20:20:52.621Z","0.4.0":"2023-04-30T19:12:39.655Z","1.0.0":"2023-07-07T19:41:05.261Z","1.0.1":"2023-07-07T20:01:32.058Z","1.0.2":"2023-07-07T20:04:56.563Z","1.0.3":"2023-07-19T01:08:13.211Z","1.0.4":"2023-07-21T15:29:37.754Z","1.0.5":"2023-07-21T16:37:51.037Z","1.0.6":"2023-07-25T20:44:06.331Z","2.0.7":"2023-08-10T12:14:21.401Z","2.0.8":"2023-08-11T05:44:36.135Z","2.0.9":"2023-09-02T17:20:08.034Z","2.0.11":"2024-01-26T14:36:24.268Z","2.0.12":"2024-01-26T14:47:08.063Z","2.0.13":"2024-01-26T14:59:06.075Z","2.0.14":"2024-01-26T15:05:13.356Z","2.0.16":"2024-07-13T01:50:52.022Z"},"bugs":{"url":"https://github.com/triyanox/iamjs/issues"},"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","homepage":"https://iamjs.achaq.dev","keywords":["iamjs","auth","acl","rbac","abac","access control","authorization","authorization library","authorization library for node","role based access control","attribute","attribute based access control","access control library","express","express middleware","typesafety","typescript"],"repository":{"url":"git+https://github.com/triyanox/iamjs.git","type":"git"},"description":"This package contains middleware for integrating the authorization library into an Express application.","maintainers":[{"email":"hi@chaqchase.com","name":"chaqchase"}],"readme":"# `@iamjs/express`\n\n<img src=\"https://raw.githubusercontent.com/triyanox/iamjs/main/assets/banner.png\" alt=\"iamjs banner\"\ntitle=\"iamjs\" align=\"center\" height=\"auto\" width=\"100%\"/>\n\n## Overview\n\nThe @iamjs/express package provides Express middleware for the iamjs library, enabling easy integration of role-based access control (RBAC) into your Express applications. This middleware simplifies the process of managing permissions and authorizing requests based on user roles.\n\n## Table of Contents\n\n- [Installation](#installation)\n- [Key Features](#key-features)\n- [Usage](#usage)\n  - [Basic Authorization](#basic-authorization)\n  - [Advanced Usage with Dynamic Role Construction](#advanced-usage-with-dynamic-role-construction)\n  - [Custom Success and Error Handling](#custom-success-and-error-handling)\n  - [TypeScript Support](#typescript-support)\n  - [Logging User Activity](#logging-user-activity)\n- [API Reference](#api-reference)\n- [Best Practices](#best-practices)\n- [Troubleshooting](#troubleshooting)\n- [Contributing](#contributing)\n- [License](#license)\n\n## Installation\n\nTo use @iamjs/express, you need to install both the core library and the Express middleware:\n\n```bash\nnpm install @iamjs/core @iamjs/express\n# or\nyarn add @iamjs/core @iamjs/express\n# or\npnpm add @iamjs/core @iamjs/express\n# or\nbun add @iamjs/core @iamjs/express\n```\n\n## Key Features\n\n- Easy integration with Express applications\n- Flexible role-based access control\n- Support for custom success and error handling\n- TypeScript support for improved type safety\n- Activity logging for auditing and monitoring\n\n## Usage\n\n### Basic Authorization\n\nHere's a basic example of how to use the @iamjs/express middleware for authorization:\n\n```typescript\nimport express from 'express';\nimport { Role, Schema } from '@iamjs/core';\nimport { ExpressRoleManager } from '@iamjs/express';\n\n// Define a role\nconst userRole = new Role({\n  name: 'user',\n  config: {\n    posts: {\n      base: 'crudl',\n      custom: {\n        publish: true\n      }\n    },\n    comments: {\n      base: 'crud-'\n    }\n  }\n});\n\n// Create a schema with roles\nconst schema = new Schema({\n  roles: { user: userRole }\n});\n\n// Initialize the ExpressRoleManager\nconst roleManager = new ExpressRoleManager({\n  schema,\n  onError: (_err, _req, res) => {\n    res.status(403).json({ error: 'Access denied' });\n  },\n  onSuccess: (_req, _res, next) => {\n    next();\n  }\n});\n\nconst app = express();\n\n// Use the middleware to protect a route\napp.get('/posts',\n  roleManager.check({\n    resources: 'posts',\n    actions: ['read', 'list'],\n    role: 'user'\n  }),\n  (req, res) => {\n    res.json({ message: 'Posts retrieved successfully' });\n  }\n);\n\napp.listen(3000, () => {\n  console.log('Server running on http://localhost:3000');\n});\n```\n\nIn this example, we define a `user` role with specific permissions for `posts` and `comments` resources. The `ExpressRoleManager` is then used to check if the user has the required permissions to access the `/posts` route.\n\n### Advanced Usage with Dynamic Role Construction\n\nFor more complex scenarios, you can dynamically construct roles based on request data:\n\n```typescript\nimport express from 'express';\nimport { Role, Schema } from '@iamjs/core';\nimport { ExpressRoleManager } from '@iamjs/express';\n\n// ... (previous role and schema setup)\n\nconst app = express();\n\n// Middleware to attach user permissions to the request\nconst attachUserPermissions = (req, res, next) => {\n  // In a real app, you'd fetch this from a database or JWT\n  req.userPermissions = userRole.toObject();\n  next();\n};\n\n// Initialize the ExpressRoleManager\nconst roleManager = new ExpressRoleManager({\n  schema,\n  onError: (_err, _req, res) => {\n    res.status(403).json({ error: 'Access denied' });\n  }\n});\n\napp.get('/posts',\n  attachUserPermissions,\n  roleManager.check({\n    resources: 'posts',\n    actions: ['read', 'list'],\n    strict: true,\n    construct: true,\n    data: async (req) => req.userPermissions\n  }),\n  (req, res) => {\n    res.json({ message: 'Posts retrieved successfully' });\n  }\n);\n```\n\nThis approach allows you to construct the role dynamically based on the user's actual permissions, which could be stored in a database or included in a JWT.\n\n### Custom Success and Error Handling\n\nYou can customize how the middleware handles successful and failed authorization attempts:\n\n```typescript\nconst roleManager = new ExpressRoleManager({\n  schema,\n  onError: (err, req, res, next) => {\n    console.error('Authorization failed:', err);\n    res.status(403).json({\n      error: 'Access denied',\n      details: err.message\n    });\n  },\n  onSuccess: (req, res, next) => {\n    console.log('Authorization successful for user:', req.userId);\n    next();\n  }\n});\n```\n\nThese handlers give you fine-grained control over the response sent to the client and allow for custom logging or other actions.\n\n### TypeScript Support\n\nThe @iamjs/express package provides strong TypeScript support. You can use generics to specify the types of your request and response objects:\n\n```typescript\nimport { Request, Response, NextFunction } from 'express';\n\ninterface CustomRequest extends Request {\n  userId: string;\n}\n\nconst roleManager = new ExpressRoleManager({\n  schema,\n  onSuccess: <CustomRequest, Response>((req, res, next) => {\n    console.log('Authorized user:', req.userId);\n    next();\n  }),\n  onError: <CustomRequest, Response>((err, req, res, next) => {\n    console.error(`User ${req.userId} unauthorized:`, err);\n    res.status(403).json({ error: 'Access denied' });\n  })\n});\n\napp.get('/posts',\n  roleManager.check<CustomRequest, Response>({\n    resources: 'posts',\n    actions: ['read'],\n    role: 'user'\n  }),\n  (req: CustomRequest, res: Response) => {\n    res.json({ message: `Posts retrieved for user ${req.userId}` });\n  }\n);\n```\n\nThis ensures type safety throughout your application, reducing the likelihood of runtime errors.\n\n### Logging User Activity\n\nThe `ExpressRoleManager` allows you to log user activity, which can be useful for auditing and monitoring:\n\n```typescript\nconst roleManager = new ExpressRoleManager({\n  schema,\n  onError: (_err, _req, res) => {\n    res.status(403).json({ error: 'Access denied' });\n  },\n  async onActivity(data) {\n    console.log('User activity:', data);\n    // In a real application, you might want to save this to a database\n    await saveActivityLog(data);\n  }\n});\n```\n\nThe `onActivity` handler receives an object with the following properties:\n\n| Property   | Description                                               |\n|------------|-----------------------------------------------------------|\n| actions    | The action(s) that were authorized                        |\n| resources  | The resource(s) that were accessed                        |\n| role       | The role used for authorization                           |\n| success    | Whether the authorization was successful                  |\n| req        | The Express request object (for additional context)       |\n\n## API Reference\n\n### ExpressRoleManager\n\n- `constructor(options: ExpressRoleManagerOptions)`\n- `check(options: CheckOptions): express.RequestHandler`\n\n### ExpressRoleManagerOptions\n\n- `schema: Schema` - The iamjs Schema containing role definitions\n- `onError?: (err: Error, req: Request, res: Response, next: NextFunction) => void`\n- `onSuccess?: (req: Request, res: Response, next: NextFunction) => void`\n- `onActivity?: (data: ActivityData) => Promise<void> | void`\n\n### CheckOptions\n\n- `resources: string | string[]` - The resource(s) being accessed\n- `actions: string[]` - The action(s) being performed\n- `role?: string` - The role to check against (if not using `construct`)\n- `strict?: boolean` - Whether to require all specified permissions\n- `construct?: boolean` - Whether to construct the role dynamically\n- `data?: (req: Request) => Promise<object> | object` - Function to retrieve role data (if `construct` is true)\n\n## Best Practices\n\n1. **Use Environment-Specific Schemas**: Create different schemas for different environments (development, staging, production) to manage permissions effectively across your deployment pipeline.\n\n2. **Implement Role Hierarchies**: Utilize role inheritance to create a hierarchy, reducing duplication and simplifying management.\n\n3. **Granular Permissions**: Define permissions at a granular level for fine-tuned access control.\n\n4. **Cache Role Data**: For improved performance, consider caching role data, especially if you're constructing roles dynamically.\n\n5. **Audit Logs**: Implement comprehensive logging using the `onActivity` handler to maintain an audit trail of all authorization decisions.\n\n6. **Error Handling**: Provide clear, informative error messages in your `onError` handler to aid in debugging and improve user experience.\n\n7. **Regular Reviews**: Periodically review and update your role definitions and permissions to ensure they align with your application's evolving security requirements.\n\n## Troubleshooting\n\n- **Authorization Always Fails**: Ensure that the role name in `check()` matches the role defined in your schema.\n- **TypeScript Errors**: Make sure you're using the correct types for your request and response objects.\n- **Performance Issues**: If you're seeing slow response times, consider caching role data or optimizing your `data` function in dynamic role construction.\n\n## Contributing\n\nWe welcome contributions to @iamjs/express! If you'd like to contribute, please:\n\n1. Fork the repository\n2. Create a new branch for your feature or bug fix\n3. Make your changes and write tests if applicable\n4. Submit a pull request with a clear description of your changes\n\nPlease see our [Contributing Guide](CONTRIBUTING.md) for more detailed information.\n\n## License\n\n@iamjs/express is released under the [MIT License](LICENSE). See the LICENSE file for more details.","readmeFilename":"README.md"}