{"_id":"@iamjs/koa","_rev":"28-ad12196d1602863d2b2c9a645deda816","name":"@iamjs/koa","dist-tags":{"latest":"2.0.16"},"versions":{"0.2.0":{"name":"@iamjs/koa","version":"0.2.0","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@0.2.0","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"b935c7ec535097d0e81eb53d0f17eb5fe897f591","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-0.2.0.tgz","fileCount":4,"integrity":"sha512-vfQjnBoqNG/+Q1ZBRGmegk9gvXcx0NOv9wFChQdxo2S1O9dJNGW3CQZp102FCtjJh1dMRrgWoNtNECkqYpK3PA==","signatures":[{"sig":"MEYCIQDnNIB0inaNkTT2IP6AXDN0YjBcsq7dOMUmXdNxeA8bgwIhAMHwWvu37E+ifgy9WzmyIOwFnuoN4ds9+Tge+TlTqunP","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":4688,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOHgUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq5LhAAi9P0mh+Ov9xkmYVq8xTIdwr2whaZqCV9hTOU5GAqMrxf5bJs\r\nfv9i9KP3WWsVW/4iwZsmBPK0fkUqKCKWNafDX5lwr62LLlSzQqCC3cCpO3Y4\r\nMU6kc3ihwtda+XhAONpBEFgD6wwKp/wRwSwGmpUapOheQJx+IocgUs1lFV+k\r\n+c9Fak7QcQnMXhE0878w9heKhT450+GxqphwXccKaM3wa/xdJM9XtWby7KTG\r\nBA1p+dnBwEi/+sK08ID5kS6UwVdFI4IAcMZJULKh03V/8Zsb/kmWkDP90/Ub\r\ne4pEsynW/EIQLnzy38/YxXAw1ykEAWx3v9CUcMsXRIyoGjLCpZQFkJwQQFRL\r\n20WnyigxcqivGUaoOcMexLRr3zTq0vGJQIAvmvF54prWsPa4Ho7O7J1YXusZ\r\nOOPYxZjyUuJXlGDx5Z2PXLOp+XnvDP2DvDCLEWQmmigLCU2Dr7833TCtB3Fr\r\nIs8ubsOrHj9DNE0I1sOO2TP6bsIZhhAF+8Ilq6idcEY7j/bDYV8LGaXg9gpS\r\nSgjdictRCV0NntYzPHwDRr5tsyNC6NRSlUM+hKHyWNO4tc+PVKihf7eZVqIE\r\nCsHUN+Zp7EibfoUd+WCynN7Kv6wKmrl74XxzHP5ckw6+N+Z+SvynnvyrKtdg\r\n4VYAmrXonyP0TfL9GcRZqVnN9kyIMzXtnDc=\r\n=W8y9\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":"^0.2.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_0.2.0_1681422356306_0.26002202406174635","host":"s3://npm-registry-packages"}},"0.2.1":{"name":"@iamjs/koa","version":"0.2.1","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@0.2.1","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"3be8caa0f333cf503e5719d64376d69744cedc98","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-0.2.1.tgz","fileCount":8,"integrity":"sha512-lok+FG3LbPEEM4PzaltegvzTqWtqLmHGdglDpmfSouKoSfJxukISwCfVUdV21+5UdIHvLaVFexzOcVotPzz1xw==","signatures":[{"sig":"MEUCIFcP25yTGbhNWsxkhDfmpvbJC+wfr9CnGKp+qEmgE2iAAiEAgXQsR31BipCTshCLTegPmJNiLxoY4TS7hKksDfDgx/I=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18541,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOIEUACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrzpA/9Gf3pOGogJkdu5sm33RBBJAvDzhQC2Nd3D9EyqHxUi7BjxYqu\r\nQCcXDktkl4rZVdxqfe7Ek1DhdDxov/PopM7A0x1DNYapyXKKn9V9UyVQzP4o\r\n5almaDzp6wRmZfEUO05wVsuB82Km8dmDPyHj6zLf1VRr1/pJrSPMvY222QqI\r\ncRGs8BSRlx0udPXxPfFsTszMWx5qRpCLWWhIIxY8i8OHypRVvuHW7CpX5xvi\r\nleLenL9hlNf7U9MYMfAWA8rncrQi8hInS7X0yYmfb956s7MjpHfPxR5nrT/v\r\nkG+lbc1GwiBLNVexly86fWkLTKlJm/2VpAYSxKuhQfADuoS8Z31G44AaflF2\r\nuzkHe5TyPw2WLxDl20hrDVl9wZseyc0Y8pFI2cR7XxXxR+rKHaM+fOdtgQBv\r\n+RCKXrfzAH5lZAg8FyfuroLI27akqhCqAQ2pBm71qko0otQhs50TXQpqibX+\r\n79UoO9QvBn+CasTieqF+EyHk/AjQY7NwDGTCdl97lHTPxGoPFoUZMdxJHbWI\r\nWmDF3y6ApzvFwdJYF0BaMPNK67eAzD36xbbtEZHvkJC7H2AKg0IcteRRCBjP\r\nCAFooaWIz+CsQ8dq3+wcBOSX5tSyFLMZEznIkdHSvXOc1MC1VaDo/Zec4q/K\r\nhbvHxPZB4PLCvZpyjBa+tGaVlSrS+HHCCtc=\r\n=pn1c\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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.2.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_0.2.1_1681424660178_0.5306156491250282","host":"s3://npm-registry-packages"}},"0.2.2":{"name":"@iamjs/koa","version":"0.2.2","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@0.2.2","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"458f165d292e6d37c70d819680fad3f677254adc","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-0.2.2.tgz","fileCount":8,"integrity":"sha512-F6BhuH2Q0+ho5Z9WEjklVwKHy8LnVUlnuXpmJhxwdqhAotSYhI0pdQbv+zq5X0txg1gBoklDv+/QtCdtgx2XmA==","signatures":[{"sig":"MEYCIQDXTGRqiavJt3bqli/pNaUEYYORxvxC13iTTNJKrsAX8QIhAJ/AbHixe/CzIdvT6mi55WELMgcOyIZx50ygW5kOHjuf","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":18204,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOIMXACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq3PxAAoSQQHaFraKCknI+tbcWE+6rYzVw9gcXq8mzSCFNKc5RV9jI8\r\n5IkghXDcmouEhNwh4C4xOUIBafrzZF0n535moznpUTuutfkdlh3y0bj9ypXZ\r\ntERQ1lcma67Lqnh0TTweayx448kSbiZCZQka3Diog0CUkhJlKGiRRYQcbhpe\r\nTE1RlJ6XFmn9Kz+jbRP74eBzUI2k3FrmYS2/sccbWipJH1/C8uGZYGy2pPVd\r\nnF9XTsPVfxW1yEgC+jX+hbfJLyNvuwmUFKNzfyYvDcjL54AXZjZedvHRSLVA\r\nSuBbd/X4/3aIn8dkVRE6O/wcCqVbsDmufmD+PpIeSPc3i2wgo+Z7NzZV+u1u\r\ndtBZJRXxESkSCkmOWzgpw4dDFZ8STAxM01HZ3BZU0rApKM+hXcgmthFj8fbA\r\nQrEWgICpLoq9QL27Z1DKufho/7bzvHwPaP6i57yWeemsfBV4vfM3ILZEqWOt\r\n8nwKsvAmcLblkoT8IJruBgW0CW3wy0N5RtWSbJi9pBr5kHp2ktcr+zbz21KR\r\nkdF0Jb6pO7FgkWyeUNIJNqXeCP6H8uJcLXt/shcoqdmVqA3p3tk0NJL1rZN6\r\n3pKWKe3lah6sCHRbgP4wtpuIN7X9aJzSIKjRmI/Q47V3FL2hjjukoET+ymRt\r\n/rWuaJxH6sotFAm+clI0FZPZM8NU2ujDiRA=\r\n=JNVv\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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.2.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_0.2.2_1681425175621_0.7935967668194843","host":"s3://npm-registry-packages"}},"0.2.3":{"name":"@iamjs/koa","version":"0.2.3","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@0.2.3","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"236de3fe49bd5e9a996d1ed8c74ed340885dad02","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-0.2.3.tgz","fileCount":9,"integrity":"sha512-gmznzp17ErH28fJFLN+4d9XD0l7EozcZi7vqMSIIx3BxsppKrbWDTIcK5VmD8VSRP8Va1Ir8oJWYNHZDvTaiEQ==","signatures":[{"sig":"MEYCIQCPyCTq0uscepEJ1rjovNhrRgnwWq83L4eQ2SwySPJDVgIhANaSvSjaIGCreg+FPFd083tGg9QB0HGFx4QCdkGlT9s7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20624,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOblDACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmoUKA//QBPjTbQtP48i5bnire1N1/lHtdrNryD5XsANICty/tJ8sECQ\r\nqxi5zMXX9V6cpQ4CKM+8PW3bU5xref9/awm3a1w+Nq3E+7Z3zEmmUWtavu6v\r\nNvoXOEA9v5bHepe+p/rqOuxFnD0vN2NifGRIL5iZgP10jQyasSsZUbgM1i7s\r\n5jxKIOk0HuQNNOlf+hxtZU1vMuaKCqg8oWZvlxitC/rRJUgx9G28GMwP1O69\r\nBy9wwhfTibHYnRRalYHSweKxeezDOlUvexZY38NLwElAiI6oqMXAF6dRbjWO\r\nnJzT3v+VyGQwWKFVAOv/WRTXuNhPONRwHXUaILl0aBEiERdlw2Z84AMV6cOp\r\n2YUpOp0/ZRUkbBWgiUMWfkvrdxUiCddKm0MDXcxHr+tUWlh8bGbzsDImW/Ac\r\nITXYML/cqjw3gRB5SvF2yiUa4YIXsbs5rF3BefvKUgQK7ArOtwwFPhNVYBeK\r\n3bdWsbPO8PjVL+zBoL39OGfeulIkaL7MVWFtoc6+tIzbAebgvDl3mtO8l/QM\r\n5Av5dlAPpA5RYj6LLzdgBiuvxMMB9PIzT5Y/kPfGyueNqK8vTAtbAWGrnTaD\r\nYibad3ggkVOoCwPzBZD9kGe3ZhG8Hv5CDpYfjmqegqW6kWOHmPHT9v1/9HLJ\r\nmTFIR3RhLMVJAdfsFSv3Yv9bctsrdiXhDD8=\r\n=L7fh\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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.2.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_0.2.3_1681504579549_0.267633631015765","host":"s3://npm-registry-packages"}},"0.2.4":{"name":"@iamjs/koa","version":"0.2.4","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@0.2.4","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"8264ea930feb34fecf0a43771991a96674699bc1","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-0.2.4.tgz","fileCount":9,"integrity":"sha512-VwkI8akxWMqVQSL0I4iiydd/aBBqqP+/AREsov33yPeGTAMiJgpWnLGPEQKeqW5fL0w3zBMkkGEIExFvrzXJNA==","signatures":[{"sig":"MEUCIF46rZj9gHyqlnR8PuLRTNfv1KCHJqT30lPJs9pSQ4MDAiEAqsNO4NtJK8wCgshmEplR/dwL2RRuSP665JjNh1O9elw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20616,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOc9AACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpbKRAAlDAFWPTfmx7ca9Ryv1TasZp/y9MOU2P5QWg+zlVJT3kRbrYK\r\ncyQF0T7AuoYO1PUWr6/KontOenPe4w3ngzawnSuZMW2SVa/hOdKlSAVNMVt5\r\nuMMvNkiYZdL1xLpCsFtYSv4WRqNz1P4EWJ1cReI3fPht9TDjdB6K25NAeYmN\r\nSdNoUDFyrFM9tmfm7ggPab2Q+YDoEq8dqJ3O1gdnq7uqIM88N5sRzIk34690\r\nC9ONYdjb7EGV1T8j97IqrDgNb08WMrwyB6/bab46MoTIgyVngaGzoDuFa9HN\r\nonRIoSu8MINnBm1vMjVMbjuXopPPb6hX1YmvjSa79VcG8LtU1irdLCrCT8x2\r\n9FBo3ihNFGWjxRPQPo2ToDR4puvD613QLaduPdwDEory0NOZK2m7xRcWGffb\r\n9C7zhXR2h6p+UrbelGXSbSzdGAUkMHg9rOOvifmqI9ERSAgbqbE7S6kaCrHj\r\nzks0cC8i/LczNvVn+WUDvmYMXbvay4lEnJ/ECs/NQ3FCioCv8oyOjt2s3P2a\r\nkID7YRDB1FHhO0OG92N71QJQvpy8xmqkM0Y3Rvo8ACKtuzzARVcCdUtBgneQ\r\nBaI1OB7v9jxPnMFzmhvafsR1GyBxr3ZYxm3AlQ4JXr20YFxUps06fl+FAU1C\r\n19xt5Eaa5mlqd/MsFp0yFAEjOjYhglCK8HM=\r\n=DCbm\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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.2.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_0.2.4_1681510208264_0.9411171460144447","host":"s3://npm-registry-packages"}},"0.2.5":{"name":"@iamjs/koa","version":"0.2.5","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@0.2.5","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"56c85b4aa3644b73615dd8a35406de624abac77d","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-0.2.5.tgz","fileCount":9,"integrity":"sha512-o3v7gQR78vIC7s0P+/YHSTlyKSMxnufOgYfivr8RG6ycD9tfUKBtLStme6OZ6DUh4TXQd7kRQBwJ650fKHzSiw==","signatures":[{"sig":"MEUCIHdSyvSyEmgvLKSbSzU40nBLV/6sZRHGEaQyOkDgIT3jAiEA9f0wcMzqvalccoJW5tYpLbwJZOGu9uRcm9S4S9uGrWU=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOpK2ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmq34Q//TQEnDjTjBG7a4gMQzG9H6DPxoPu0RJIuYDP7IwhqOc+njfzM\r\n2CiwJbJmy/nOrJK+BJ+Gyfm4iWX0224xYU9Qwk4hh6VJ4ua8Chbz4JLzylzZ\r\nmiOQ2X9wkFazkOnxOpphK9U+AGXYOsdvzMJLBLgIxVV/cgm10JEC1C1uLaKz\r\ndTpVa1X2Pe00WrYjXDoej+RmHAy5Jon2xQ4pa0u4ye9Lr7j7aIlY2SSDv2kj\r\n34YSKM7zGHf3P6gTQljc18rWM0sguASRTqhO17IOWAx6mC30oghHJ6waLHzh\r\n8IONnIhNK7BfolNeIYcyjcJd6IF/OgwwCkqUMyqZQ/B2w/xEL62pIkuYo0iR\r\nzULlZFbSC1yJaB0kYA3pOOtoekBoqPfPsj/ThSXhE5M99EYfEhlpm3M8zlYN\r\n5gF6Wr5yNQlP4dFWjZXobEsgkNzQWUP7sNybib0LbR/aotxpfb+EDUfNN/q+\r\np2m9PC/y4su+eriuynrAQigwffmEnS9wfV5Qb3FA2572i9lV1oVjsih8uhit\r\noie6hnY7k7nte6uYmtJMvcj0oUKM3u6SsIjjV1TJ7wK+S/e+ZUm8Vv9Vj80E\r\nOEfGdFjKTmITRg4k8IxjxXy729qq9UtuuIJxGW3wxI9Z9zl5FSQ+Nezz7Z6+\r\nfb7ry4uJFDYUFedZv0nyozXichOD6IkHg8M=\r\n=S9RZ\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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.2.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_0.2.5_1681560245766_0.6503723690261287","host":"s3://npm-registry-packages"}},"0.2.6":{"name":"@iamjs/koa","version":"0.2.6","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@0.2.6","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"db3c747e725b17e3aea0f50e898ec5992125577b","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-0.2.6.tgz","fileCount":9,"integrity":"sha512-TUDFsJrMWgEBUTk1lDUbQ9nUeJWp+SNy1zdjcAVSHEKyebrHXdTHI896oa8SHTBM8LkplzHIzx3zq3MoDez2Qg==","signatures":[{"sig":"MEUCIGq3BDCZDln58hjxEI9yy9yrdALd7Ru2shH5D/BBo4+QAiEA5XadQHGO8rFZMuj/4rknC88wr7zzbAsDrGexsdxyQHw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20535,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOpSTACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmrWMA//atwt+EUZmi4vCUAsTmH+lYXzL2+lQARZPd+5ygcyZbDbWmsn\r\nIcg904RMi2Zgan2rWulX9XxCGMFF5sq7U3t/IQzxxdnmHvHpMtnE2IAVV65E\r\n1iafnDLfiarf0pqDj5L36sQaoH+NLep1obXvSzI80pljqU6adjVNRRTcFxK0\r\n34mqesKnwQy2eGNdUwfmePf1+RTdmkmhP0a24O8/qtn8+Y8mviu9p+Xc1vGe\r\nx1e8EnTxn4U0IQOajDwFAr5USS52twKg8p8THwo6C7JBZ9Z8kBcrA3QOt0M/\r\nJe3iTek1/Xa1icxjBjwkwzPXnpw0nAJKhKwEmgFDzDQDU5sU0QF8uSO4L1qe\r\nQ0eoPCxXK0RI2Vwp1i7KQGHYBWjMEPdZRxwdfr/3W9hgZpLoaPrMSjdNivnR\r\nxNPDVEfFTTkE1aDWbkg8EKI8QjXBjSuo7h3v82oeIeGPPU34ZViLUAUYkD8R\r\nD1+5tOYEK9vaNqsRUvaAHTMFolLGEa2kz5MjlyM/gktJJ3bWRqiUUgNacSsK\r\n9MYaEgGH2F3bTOKs2epos+f4BafaFlT3eKZ0Tq5edcXZV+kmE8Q7vIjeRXtv\r\nh+vmGr9PJf4MW3hTTPYCcsO4/tkXIJtND6lZYC355DDa6aZkt79Xk06mYfzm\r\nBVBJnJMg+wVbbeaaLuHZnzX9VaTbk9YBhJI=\r\n=blfd\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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.2.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_0.2.6_1681560723635_0.02118764289808306","host":"s3://npm-registry-packages"}},"0.3.0":{"name":"@iamjs/koa","version":"0.3.0","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@0.3.0","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"613508119ad6e2f8ff429e9700925018c2e26614","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-0.3.0.tgz","fileCount":8,"integrity":"sha512-Iq0OTRFtjQThzErgqyCpyyYJZ068i9S+wCT6E+wpmMB2wJ2Vo3T9BxXWPoV/uZZAtm0pzoB8hGpB240fV/z55Q==","signatures":[{"sig":"MEQCIA7NMXiPMwAlkhJZ2RazPEkOQZcpc6488iw6tmY5XUZ2AiBPJnxG8Qdq67Qp/F8fvtXVtQIxFGvBxXi5/USU3ckSfg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24658,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkOrSgACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqvPA/9E1Q8PwRdEmcizQH29iIw3urB/zrZXEa40C3SNwq72LqnBZWP\r\nufldGFBDFExBDFc7vT9UImIPDvVhluz/iJz+P0brqlnTptGpAkljewda2OL5\r\nlVatnN1oTNRp98b+H/dNsKhEv18fId4Vyfe7c0UDBKWoJWPkV7x9GM70fhXM\r\nz6AYaghjgkLXAb3Dpuxt7WDlE3R+UbjPNCAZnUHcC1XRCGPA8CHbvPGze0Eb\r\nZVQooPHcha7n/QwSxzQm6eDtyeaFHrleVpS1DTtxxajmpH+zILG5AgI6LK17\r\n8eYrFBGyLNYtvXn0OExj8+XG6hG4JG49ZtC9P+5hjVriep89a0J7Rtx9yg/9\r\niwxPzL1/QJZBdV/y8YNPOpOv1xaWF8XplBDiO0Dmfvonr3wpOp/t4qXoGnQm\r\ndhFnGV6I3vh46l/waqdqBhXhmSGN3dORjftLEJWiUfGhiuBMXh3ZxNi2eSHm\r\nZajL9Jj8hyFbPt6wYTULkxjZmPhC+dTYqj/spDrm39Bppon3y/2UgdSadpuN\r\n8JVA6x/OVUdpayILAZSSrHLrDcVqL6rXYzvTfsyXNVJZiyjmXlxIMIkiz+P2\r\ndvD1g/7Ucfhdp7jo5jwhOhckGb14uMgCSJgS8SDbSZg6kx0y+nxqng47aHw7\r\nFJ40JMuUIGVq7MmLOfymuZUQA5lAxmUvXJM=\r\n=tq/D\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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_0.3.0_1681568927876_0.8263489633558367","host":"s3://npm-registry-packages"}},"0.3.1":{"name":"@iamjs/koa","version":"0.3.1","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@0.3.1","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"16d667216ba44be345ef93845c052d2037ffca48","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-0.3.1.tgz","fileCount":8,"integrity":"sha512-4hwLEXmU6ZFhmT4qM6n1VMpL9l1wdsQXArDx7sw0Fn5z1//q2KyeRusreBZB1Pl/ForfOGwA2F7ptp8qyYQMlw==","signatures":[{"sig":"MEQCIHYqegHyxB7X5YTv9hJ33f6h/0HRAOBOS+UjbiVjclOUAiBcdyn8yJv+nunPdbR/AJDKmxAcF6IMsnKc6LuY58Vp1w==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24681,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkPiE9ACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2Vmop8g/8DG3kXECNvH9qAI2pou09I5VXOiUObAHygk8SRv5w/0wb4ImS\r\npK7v7sN3bcXamsR31y00kF1qmU90ShaSsN5WTChV/0T6prcYognu4s9+ZFY6\r\nDU10mXEgl1vNctzKwm4vfBvCaDCMHILI6ppDr/nFpJ9+CAiN+mOj0f3DzLmt\r\nHeRGe5OAMIL+fQG+mKWcu6Ar1sKmuszFNujl6/zxJG/J3miuD/1c4Rq+wUxR\r\n05Ycwjjcr4Inv0k2f1yFa52LqIFsKXPAUYH2oN8SXGBQouWWYaufth16aGIL\r\niydFnKk2pbvCJkVCfrDAmSxSVpAOIIASYf2GrtHuJK9+nbUzlb3AzMHNl8HK\r\nrbrLqTR+1yWaEZ0HTT+rnb4oomsmpRiBmClbQQrZWlH0XHkZHJZHCnGer4W+\r\nozUsMP5bg2xvx1/AFn1OSIKRsYffZh3PBA6FjBYL6J4vXUAS6AFXfgsXTfhU\r\n8WnLwllSLrG/lfpSSLfES7PoW3EGVWydsfFZKhdaiRufLVAlPeZ1FIU8qXa9\r\nhcYfc4VdrTVV19QQp8vr19j7hf4iiHEvbXJvkRwnvTiPHm8GFjfnXgOf1Khu\r\nS/lYBJ4eOtWa0WlGJj8iWiGwccG9o2tv00FUqvUguWFd8AHR4Czr94Roujpz\r\n49k07EbDCBz4W5nf5gWQmclT6WAmkeTOhyA=\r\n=MLo5\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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.3.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_0.3.1_1681793341162_0.023542351377302984","host":"s3://npm-registry-packages"}},"0.3.2":{"name":"@iamjs/koa","version":"0.3.2","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@0.3.2","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"9e7633e78d0bb1f89310e2d7df35664c1fb91707","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-0.3.2.tgz","fileCount":8,"integrity":"sha512-BMULFJN02ia43BKH3zVQAufV+mWUCV+WLUYiNTwyEikHeqsLTb9ed4CcbFVQosYeWSZMDLoUZzTkdtYdWR+VKQ==","signatures":[{"sig":"MEQCIA7BVNJvbUhRG8j7Eo5un+WRcp0Rn41kcZer9YC8fhi2AiA7lAAvUX2O1gzU/XhrpzK0cqO76zlYsYcBjNw+Emohrg==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":24972,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkTXwlACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmqHFg//QIlOIKeXc5/jpeqZHxx3MGP5IPijwjBB+Vufx9jRvZEU5756\r\n/I7P1tC8ZbjYR7Ug7hDeodD+o1IPucGw3KZKvcRd/E758kiJDu/cqBrjIA8M\r\nvrFG+n0Q4r+SAUC6KeiW7p72Aa7D2NLStJC2E1/VcypqRxaHwLG5LOmR44Aw\r\n+2Xlp9j9OgJGOfPUWOw7N1IbttuFCvrgz+KHw3qhOy/wJyYF6+gqILL0geX0\r\nAJR1BHyghV1G9b04zqLaoHsa3RLXAz/FWwQiB48XGenPtjEep/Cs+1R4/i7x\r\nBMJkHuVsPKYfYXQcTX3fkWZ7H4W/1ftenw5bjlb3jgDzdgssgwRRTaPQ0Php\r\n0rN2BvWglPMpiEvace8n32dEdTy4V437HB2GwqPmZHQOl3XCVVChovR6XiE6\r\ngVHNeqaDP2F0+5egMlXUazl5D63hFmgqCcPLaHUXkFYXy1BUzm0XrmJFt8AZ\r\n83awQfYX5SOYQPDbToMFG1NuYRQ0Ais2TA3yvUnJPk8VI4li7t9xqsUGM3M1\r\nQApQKaPpy/3FJnTKtMUT0EFzGVEP/LODV1LKCFzDPn5TPQu6GRvPArKpvLPa\r\ns0PnMTfZBC45Ti6hvnddPFHXIrS1I5bfytZH3WG/uSM45ttc+qAZtRvjYgyM\r\nbniFfVZ2kzLEidjXPqXiW1etWmRlxbMD8fo=\r\n=gQBB\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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_0.3.2_1682799653613_0.48017495273528454","host":"s3://npm-registry-packages"}},"0.4.0":{"name":"@iamjs/koa","version":"0.4.0","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@0.4.0","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"26c94a7818a174f563aadcfa34ab79560c73a412","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-0.4.0.tgz","fileCount":8,"integrity":"sha512-BwdgHv6gd5mwL5bPH3VEsXwlAG4gaGTU0XmOBDsNaOY1hizynqQXtXIdA32BVrsAHSpFFWgbVp0BoU3SAbs4SA==","signatures":[{"sig":"MEUCIQDAOXEcbAwpu0bo5ZvSOm8pdMxCbJQcDDJ2sP6Pbq8oMwIgbDhbgqol/pilG6QdVuWWVaR/9KwGe0dRFNPNbCl1tQ4=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":27129,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkTr2nACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmpnRxAAlTyYfy4U1przxnmlSDP1e0RYHi2X/3zs8k9dmEC88dSKxl+l\r\nhx9of0YMqxJA+vla1py0EWG0cen8bxXE+WWrXn+bD1R96VdqgnL4iaHMyEfg\r\nPvL1CiromnBtZwPBPiJyeeZSRB3VETJI/oh1kP5OkP0Xs0UUD9kz8kgAoX4R\r\neBgSzy2BEe3JrDlF5n/2d+SUZCc5sTA2WisNuIUUmgeCldo5JG89Q4huCpaA\r\nwy23tl+3UpNriOlfBnGmcHdcrhfd4H2/BNK1BYAxUrXAxHQiNXtpLPAEkhbu\r\nlgHO7UoFa/FnEUmynQnxQ2R5ySPuU5O01OVa9uKpNBdTQdvrYuHRh/BMiDCW\r\n8/G/w2pp+dlLD2tCSFHsD69bIvmbZhpW3D1mKvgCey/rA1gleeuF+UYhtoKe\r\nG06Wf433VQ9fxrqZwZUtPjkotGeEgR31WTZS38KmK3bQIZmD+8MYADOTHZNv\r\nF6huEmyycxvR1K52B7M9G375iNMRPM88c5hRWXWvIMW+Vk2tiRi9uJNepHlZ\r\ntNJBAftPe1Up66ZS+pp8h8vEvb6Sc6lqGlqe1ER3D6KNIfA4mbj8llZY4mfX\r\nfzV7h89JtspaWVHnAcGTudSL9dQlyrUlfWs2j+cSEd3p185mkmNEj0gGT81h\r\nEXIQ2ZUy3HybJ57eVorAM5SVx4jtzzUrMuE=\r\n=lFMF\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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"19.7.0","dependencies":{"@iamjs/core":"^0.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_0.4.0_1682881959404_0.39134432488401183","host":"s3://npm-registry-packages"}},"1.0.0":{"name":"@iamjs/koa","version":"1.0.0","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@1.0.0","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"bb67efdc34247a248f74167dc9e34f79f8a10e22","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-1.0.0.tgz","fileCount":8,"integrity":"sha512-oIysny2SLpjdcEODvHAlhKVvljwaoFEqCw5FVq58JPC7WC2CU7f7+h0e0t0PI3yRW9pZpEShoApzU/0nbpC1Zw==","signatures":[{"sig":"MEUCIEsDBb1vysFmGA9Kv4e/E6flY+XblNTTtL6NNDnNU0NUAiEA7n/j/dx8YaQRni859wed7yJAq2hRuYziygN9oEgNSKE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20231},"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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^0.3.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_1.0.0_1688758865231_0.12238382121083702","host":"s3://npm-registry-packages"}},"1.0.1":{"name":"@iamjs/koa","version":"1.0.1","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@1.0.1","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"3c38345f718ecf0a1c75a35cdd91abcbc4362e1f","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-1.0.1.tgz","fileCount":8,"integrity":"sha512-MaIhn9mVPggn6n4SVp35+H0dmMU20ChmCrvTJeE5jF8mW83kQRZ+2e88JRkj8j854jcREh8H1H3d+otL+KrsGA==","signatures":[{"sig":"MEYCIQD7QdlBXs/AYERpAKcwwZHfpXCwppGDEaYv7Dm9/8R8NQIhAOLVoY6622uwgEh2LoI1ivmwkAq1c/Agjq5vgrnILBJt","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20231},"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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^1.0.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_1.0.1_1688760091912_0.47186020469499135","host":"s3://npm-registry-packages"}},"1.0.2":{"name":"@iamjs/koa","version":"1.0.2","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@1.0.2","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"45018039908fd3e7ae69e8633daabe124d3dd0b0","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-1.0.2.tgz","fileCount":8,"integrity":"sha512-VBQYi7p3+WAEsRykVk/PSgP4D/rf7Qhcsih9kAL/gbmsdmuCWVeLogX8Bq9CWEgjznVACT8DsEpzHJvkZSjIkg==","signatures":[{"sig":"MEUCID88PPJDpZW/3aqjLSOUkdad1hoJytKy8tgibjlV1NMuAiEAlyI0rwbzfv6LH5NEikluyds6Ugv3SKADUKrnjxyO3Fw=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20231},"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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_1.0.2_1688760296657_0.2750548331559559","host":"s3://npm-registry-packages"}},"1.0.3":{"name":"@iamjs/koa","version":"1.0.3","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@1.0.3","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"a9f666038cd636ed06cc1d6936337918f3af189c","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-1.0.3.tgz","fileCount":8,"integrity":"sha512-l+sxPe/QvzTOYF/ihgR13tsGnhoq6az67vjBKGTwyKvhpKHPoNBOiNNuF5OhSU9osBEOrD210fK19ATBwmACuQ==","signatures":[{"sig":"MEQCIG/nI/R3lOoPyM9kRtuUOfTyAmMC54nYdcNsoSmcA19IAiBYbWLpU/eRFccDMljTp1OW/cbm9UKCr8hu8YtpIf36HA==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20289},"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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_1.0.3_1689728893020_0.2459813725150013","host":"s3://npm-registry-packages"}},"1.0.4":{"name":"@iamjs/koa","version":"1.0.4","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@1.0.4","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"b48984387107bfe3c7a9cc5f6a130f8ff5c9d709","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-1.0.4.tgz","fileCount":8,"integrity":"sha512-E4PlpaPi8GenzMkmoK0cfp7Fmwa1kydN2FJgXVdd0zFGgtFRfcnNGmuPx1rXkyEQUVLfSnrxjivcWBiJLjROOw==","signatures":[{"sig":"MEYCIQDZvHRRiS7rfImnl7nSQNYS9lrMn+ltTB3zvzh4r+23GAIhAIhBVC8ETe1+DUY1DYrvXZngy6lqN75itopSkaVrUGox","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20289},"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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_1.0.4_1689953377853_0.5039440045012498","host":"s3://npm-registry-packages"}},"1.0.5":{"name":"@iamjs/koa","version":"1.0.5","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@1.0.5","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"d224867e0200cf549a9e7a7d8f6132f3ee63086a","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-1.0.5.tgz","fileCount":8,"integrity":"sha512-kacQvrrOwv41QYaizOFBSA/HYn9JYiyFl6CCQXMFvj67gLrUiVkyMvXubien89eFpMYBqRM6zLZLHYVRsqKChA==","signatures":[{"sig":"MEUCIQDNfW9xwTS3XszIMQM5vbZNdAvOGB/e+wBoC3Hfa7XcRAIgDlirjEzCRrUHD3mhJr3g8vtJXOP+iOzlA9vibTxj1OE=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20264},"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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^1.0.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_1.0.5_1689957470958_0.22854945278118133","host":"s3://npm-registry-packages"}},"1.0.6":{"name":"@iamjs/koa","version":"1.0.6","keywords":["iamjs","koa","middleware","auth"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@1.0.6","maintainers":[{"name":"triyanox","email":"hi@achaq.dev"}],"homepage":"https://iamjs.achaq.dev","dist":{"shasum":"a0644bc2944f45395f2b9dd961ecd4b8effd0ed2","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-1.0.6.tgz","fileCount":8,"integrity":"sha512-Pfl1K1tIzNqhGZUXzCL+Lu3sEwjl+XrUlk5YeNgVs9iIAfgWlpQqv1lsJ5X28W9DW+1rByxHq0w6c0mTFKF41Q==","signatures":[{"sig":"MEUCIQDZZvKvPllLm8jePjMlCChjrX8SSWPZ61/X6LTne1Z59wIgOzyBG6fTXbD9j51NlfF6tjQGBW+/znxkCpKaT83+TdY=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":20323},"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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^1.0.3"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_1.0.6_1690317845858_0.5865775269057292","host":"s3://npm-registry-packages"}},"2.0.7":{"name":"@iamjs/koa","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","koa","koa middleware"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@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":"b650c36c403b0fc1e89ff8875a22cbc11fedd0ee","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-2.0.7.tgz","fileCount":8,"integrity":"sha512-ROKAGPOq4YFxs3Ca+T3WUkFxKkt2LV9/26fxOxDqDCQ7EoXoJKIi77d/SH4z08tZFzydtd9zUuqOx2xUThPj8g==","signatures":[{"sig":"MEUCIQDc8riikM22xUIG1LCf/MFgG5AhUIoxhmhylFfUmsQopQIgSLRR64zXwUf1Yk+DThoELrXE9+NVhyx2P53UOfe8VbQ=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":21893},"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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^2.0.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_2.0.7_1691669661271_0.47239788633658053","host":"s3://npm-registry-packages"}},"2.0.8":{"name":"@iamjs/koa","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","koa","koa middleware"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@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":"2282164fba64659c8b267057d5c1cfecdea4601e","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-2.0.8.tgz","fileCount":8,"integrity":"sha512-XklCJWhil1pUBOCbXjd1AlAN4/oox3Jhv7hhuF6YNbrwnF+fg5SOF/aA+dg/9DwypcsaxzeUlikkdRV8BLNikQ==","signatures":[{"sig":"MEUCIQDpM70H9tysGbMWD8WQj1Co84GMkN/UPsdgpVcOrPYFiAIgZicLQviqLq0Xz2zgdD8UuX1iu2x5KFvQthBCVlIauNI=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":22880},"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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.3.1","dependencies":{"@iamjs/core":"^2.0.7"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^2.2.0","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_2.0.8_1691732675184_0.8840951681675449","host":"s3://npm-registry-packages"}},"2.0.9":{"name":"@iamjs/koa","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","koa","koa middleware","typesafety","typescript"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@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":"393ed17c2bf2aefb248029b26c1ccf5ec977a82a","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-2.0.9.tgz","fileCount":8,"integrity":"sha512-35/dFmTAc1G8wBNk5CMF0apToimJrrCg2AAeFmghcGgd14I9SuFfnGJyrESSjdJhUx+kmENU4r4lBScdROs7vA==","signatures":[{"sig":"MEYCIQCvHaUbxpuQvqJM2BZxgMo2qwg7UkYwJmr8rargbNi8VgIhALMF0KR6/Wf18wnVo7LdN1nHYYdEJahP+qTvmtG2JIKb","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29436},"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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"18.14.2","dependencies":{"@iamjs/core":"^2.0.8"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^4.2.1","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^3.5.2","@types/supertest":"^2.0.12","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_2.0.9_1693675208010_0.09089292207303656","host":"s3://npm-registry-packages"}},"2.0.11":{"name":"@iamjs/koa","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","koa","koa middleware","typesafety","typescript"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@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":"f99c43ba395292437b4ee46d67cb5c19d06b26a2","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-2.0.11.tgz","fileCount":9,"integrity":"sha512-MfUmm1P3eNYX9ShkaY6tsdH2CJOXbSt6G6n7qxjyksXafG9pSbzyw7hEqWJts7XYPRSssojxLeAGalUK+qtbRw==","signatures":[{"sig":"MEYCIQDKyTVXi2PCWzMVAiJK6454AZPbBlVSiTGRy58evkTIyAIhANrOVuoVl6xsl+vhqcjJSFXw776a3WazBU83gTqoZvTv","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29947},"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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.5.1","dependencies":{"@iamjs/core":"^2.0.10"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^5.0.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^3.5.2","@types/supertest":"^6.0.2","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_2.0.11_1706279784806_0.356585645194055","host":"s3://npm-registry-packages"}},"2.0.12":{"name":"@iamjs/koa","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","koa","koa middleware","typesafety","typescript"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@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":"34d49dbc49be4b8f38cc0b2445c3890c5de5f251","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-2.0.12.tgz","fileCount":9,"integrity":"sha512-kqhGhZRI4lgxdgQxvZtjEAJF9ITwE40YVFFJqYM+jKoK73crfZL0RJzaQdZjRp9DpuZ/MQ5zogqtwlYYuPEX1Q==","signatures":[{"sig":"MEQCIC5Ou2IwVeLdUh8VFdWSftEBPUFkXVdtdWYXbs2yIz/NAiAf0JBYovgsntWgxLHOhgx3GO8jWkowif2wu48S7kjSfQ==","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29947},"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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.5.1","dependencies":{"@iamjs/core":"^2.0.11"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^5.0.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^3.5.2","@types/supertest":"^6.0.2","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_2.0.12_1706280427081_0.34621584792608795","host":"s3://npm-registry-packages"}},"2.0.13":{"name":"@iamjs/koa","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","koa","koa middleware","typesafety","typescript"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@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":"9ba7fdc13cfa48144e898dd29a90e1b86f38f568","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-2.0.13.tgz","fileCount":9,"integrity":"sha512-6Z4IqYPkK4DmLM1f4EYUrruyMy12PleoTEi6/rXQz9Io9a/fLyyUl7mWzp+B9osbxjAZqZiXWYNNhVeWjtkCsg==","signatures":[{"sig":"MEUCIQDtyxxrXAsSnGCbRdEzTNZXO0k5oBRB4XxDMT5a1PuUPQIgPBrZ9e1GQSPic9KTu2SrGCEMhnoUEBkUYAbYcJIORh8=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29947},"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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.5.1","dependencies":{"@iamjs/core":"^2.0.12"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^5.0.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^3.5.2","@types/supertest":"^6.0.2","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_2.0.13_1706281144301_0.9795841213401537","host":"s3://npm-registry-packages"}},"2.0.14":{"name":"@iamjs/koa","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","koa","koa middleware","typesafety","typescript"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@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":"728d945230961565bd1b3d8649dce4045f27cbf5","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-2.0.14.tgz","fileCount":9,"integrity":"sha512-5GTzGGeuqb+y9tbCBDpycTVrLA2j98L6Y7WIlA9Pf0KKq68Mgnae/OfeAzvckDoDRuN/G+k3OlAJg9j4nsCmHg==","signatures":[{"sig":"MEYCIQC1a1z4aYunRaN+UV+8rmY0uc3Q1jBguhuEUmiPHHxbYgIhAOgrLHrTsLCcNILlfshEQguTaE3IFKtDsmO8li3J2v3w","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":29947},"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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"20.5.1","dependencies":{"@iamjs/core":"^2.0.13"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^5.0.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^3.5.2","@types/supertest":"^6.0.2","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_2.0.14_1706281513220_0.20513675914272245","host":"s3://npm-registry-packages"}},"2.0.16":{"name":"@iamjs/koa","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","koa","koa middleware","typesafety","typescript"],"author":{"name":"Mohamed Achaq","email":"hi@achaq.dev"},"license":"MIT","_id":"@iamjs/koa@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":"ee729eeea7a0ebd0399112dffe62895d7c38aaa9","tarball":"https://registry.npmjs.org/@iamjs/koa/-/koa-2.0.16.tgz","fileCount":9,"integrity":"sha512-aJbkUgYKoZGEtCeOmLbixwyKBk3l7dHrz1SWoAwvsBjhmmD9PMoR3ge3Ikn5aQAVMwA8slCRci25jvptapXqiA==","signatures":[{"sig":"MEUCIF2VshfZMjZ6g34X0CD3Kz7glwDfQ0CJvHOcMkv0mV1zAiEAmwGJIsGRC7La4BoJTKnSOkW0g3bXY8Sv5t/r3kLrCTc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":33193},"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 a Koa application. ","directories":{"lib":"lib","test":"__tests__"},"_nodeVersion":"21.7.3","dependencies":{"@iamjs/core":"^2.0.15"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"koa":"^2.14.2","jest":"^29.5.0","vite":"^5.0.2","ts-jest":"^29.1.0","supertest":"^6.3.3","@types/koa":"^2.13.6","koa-router":"^12.0.0","@types/jest":"^29.5.0","vite-plugin-dts":"^3.5.2","@types/supertest":"^6.0.2","@types/koa-router":"^7.4.4"},"_npmOperationalInternal":{"tmp":"tmp/koa_2.0.16_1720835451749_0.24941759831805266","host":"s3://npm-registry-packages"}}},"time":{"created":"2023-04-13T21:45:56.248Z","modified":"2025-10-27T13:29:34.957Z","0.2.0":"2023-04-13T21:45:56.473Z","0.2.1":"2023-04-13T22:24:20.355Z","0.2.2":"2023-04-13T22:32:55.858Z","0.2.3":"2023-04-14T20:36:19.799Z","0.2.4":"2023-04-14T22:10:08.419Z","0.2.5":"2023-04-15T12:04:05.968Z","0.2.6":"2023-04-15T12:12:03.802Z","0.3.0":"2023-04-15T14:28:48.062Z","0.3.1":"2023-04-18T04:49:01.323Z","0.3.2":"2023-04-29T20:20:53.800Z","0.4.0":"2023-04-30T19:12:39.574Z","1.0.0":"2023-07-07T19:41:05.393Z","1.0.1":"2023-07-07T20:01:32.069Z","1.0.2":"2023-07-07T20:04:56.891Z","1.0.3":"2023-07-19T01:08:13.197Z","1.0.4":"2023-07-21T15:29:37.985Z","1.0.5":"2023-07-21T16:37:51.092Z","1.0.6":"2023-07-25T20:44:06.061Z","2.0.7":"2023-08-10T12:14:21.425Z","2.0.8":"2023-08-11T05:44:35.320Z","2.0.9":"2023-09-02T17:20:08.191Z","2.0.11":"2024-01-26T14:36:25.029Z","2.0.12":"2024-01-26T14:47:07.226Z","2.0.13":"2024-01-26T14:59:04.465Z","2.0.14":"2024-01-26T15:05:13.357Z","2.0.16":"2024-07-13T01:50:51.925Z"},"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","koa","koa 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 a Koa application. ","maintainers":[{"email":"hi@chaqchase.com","name":"chaqchase"}],"readme":"# `@iamjs/koa`\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/koa package provides Koa middleware for the iamjs library, enabling seamless integration of role-based access control (RBAC) into your Koa applications. This middleware simplifies the process of managing permissions and authorizing requests based on user roles in a Koa environment.\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/koa, you need to install both the core library and the Koa middleware:\n\n```bash\nnpm install @iamjs/core @iamjs/koa\n# or\nyarn add @iamjs/core @iamjs/koa\n# or\npnpm add @iamjs/core @iamjs/koa\n# or\nbun add @iamjs/core @iamjs/koa\n```\n\n## Key Features\n\n- Seamless integration with Koa 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/koa middleware for authorization:\n\n```typescript\nimport Koa from 'koa';\nimport Router from 'koa-router';\nimport { Role, Schema } from '@iamjs/core';\nimport { KoaRoleManager } from '@iamjs/koa';\n\nconst app = new Koa();\nconst router = new Router();\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 KoaRoleManager\nconst roleManager = new KoaRoleManager({\n  schema,\n  async onError(_err, ctx, next) {\n    ctx.status = 403;\n    ctx.body = { error: 'Access denied' };\n    await next();\n  },\n  async onSuccess(ctx, next) {\n    await next();\n  }\n});\n\n// Use the middleware to protect a route\nrouter.get('/posts',\n  roleManager.check({\n    resources: 'posts',\n    actions: ['read', 'list'],\n    role: 'user'\n  }),\n  async (ctx) => {\n    ctx.body = { message: 'Posts retrieved successfully' };\n  }\n);\n\napp.use(router.routes()).use(router.allowedMethods());\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 `KoaRoleManager` 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 Koa from 'koa';\nimport Router from 'koa-router';\nimport { Role, Schema } from '@iamjs/core';\nimport { KoaRoleManager } from '@iamjs/koa';\n\n// ... (previous role and schema setup)\n\nconst app = new Koa();\nconst router = new Router();\n\n// Middleware to attach user permissions to the context\napp.use(async (ctx, next) => {\n  // In a real app, you'd fetch this from a database or JWT\n  ctx.state.userPermissions = userRole.toObject();\n  await next();\n});\n\n// Initialize the KoaRoleManager\nconst roleManager = new KoaRoleManager({\n  schema,\n  async onError(_err, ctx, next) {\n    ctx.status = 403;\n    ctx.body = { error: 'Access denied' };\n    await next();\n  }\n});\n\nrouter.get('/posts',\n  roleManager.check({\n    resources: 'posts',\n    actions: ['read', 'list'],\n    strict: true,\n    construct: true,\n    data: async (ctx) => ctx.state.userPermissions\n  }),\n  async (ctx) => {\n    ctx.body = { message: 'Posts retrieved successfully' };\n  }\n);\n\napp.use(router.routes()).use(router.allowedMethods());\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 KoaRoleManager({\n  schema,\n  async onError(err, ctx, next) {\n    console.error('Authorization failed:', err);\n    ctx.status = 403;\n    ctx.body = {\n      error: 'Access denied',\n      details: err.message\n    };\n    await next();\n  },\n  async onSuccess(ctx, next) {\n    console.log('Authorization successful for user:', ctx.state.userId);\n    await 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/koa package provides strong TypeScript support. You can use generics to specify the types of your context object:\n\n```typescript\nimport Koa, { Context } from 'koa';\nimport Router from 'koa-router';\n\ninterface CustomContext extends Context {\n  state: {\n    userId: string;\n    userPermissions: object;\n  };\n}\n\nconst roleManager = new KoaRoleManager({\n  schema,\n  async onSuccess<CustomContext>(ctx, next) {\n    console.log('Authorized user:', ctx.state.userId);\n    await next();\n  },\n  async onError<CustomContext>(err, ctx, next) {\n    console.error(`User ${ctx.state.userId} unauthorized:`, err);\n    ctx.status = 403;\n    ctx.body = { error: 'Access denied' };\n    await next();\n  }\n});\n\nrouter.get('/posts',\n  roleManager.check<CustomContext>({\n    resources: 'posts',\n    actions: ['read'],\n    role: 'user'\n  }),\n  async (ctx: CustomContext) => {\n    ctx.body = { message: `Posts retrieved for user ${ctx.state.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 `KoaRoleManager` allows you to log user activity, which can be useful for auditing and monitoring:\n\n```typescript\nconst roleManager = new KoaRoleManager({\n  schema,\n  async onError(_err, ctx, next) {\n    ctx.status = 403;\n    ctx.body = { error: 'Access denied' };\n    await next();\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| ctx        | The Koa context object (for additional context)           |\n\n## API Reference\n\n### KoaRoleManager\n\n- `constructor(options: KoaRoleManagerOptions)`\n- `check(options: CheckOptions): Koa.Middleware`\n\n### KoaRoleManagerOptions\n\n- `schema: Schema` - The iamjs Schema containing role definitions\n- `onError?: (err: Error, ctx: Koa.Context, next: Koa.Next) => Promise<void>`\n- `onSuccess?: (ctx: Koa.Context, next: Koa.Next) => Promise<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?: (ctx: Koa.Context) => 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 context object.\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/koa! 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/koa is released under the [MIT License](LICENSE). See the LICENSE file for more details.","readmeFilename":"README.md"}