{"_id":"@200systems/mf-express-adapter","_rev":"14-cb1395bdcc0aa6d1d37a1069a7603947","name":"@200systems/mf-express-adapter","dist-tags":{"latest":"1.2.6"},"versions":{"1.0.1":{"name":"@200systems/mf-express-adapter","version":"1.0.1","keywords":["typescript","express","middleware","controller","microframework","rest-api","error-handling","authentication"],"author":{"name":"Cleiton Marques","email":"cleiton.marques@200.systems"},"license":"MIT","_id":"@200systems/mf-express-adapter@1.0.1","maintainers":[{"name":"200systems","email":"cleiton.marques@200.systems"}],"homepage":"https://github.com/200Systems/bitbrick-microframework#readme","bugs":{"url":"https://github.com/200Systems/bitbrick-microframework/issues"},"dist":{"shasum":"0e080930e2a197b41490ec4c05089829f55a24fa","tarball":"https://registry.npmjs.org/@200systems/mf-express-adapter/-/mf-express-adapter-1.0.1.tgz","fileCount":46,"integrity":"sha512-Al8HZd32bnZfKBMR2pkmhSdKq9wczsGjVaaop2DdIu0p6ZZ13aRRGAKMJ2B92dWOiesH7uBS97oQqadkJ80ZIg==","signatures":[{"sig":"MEUCIHcIGNQhxQKfB5U8IQcYyHGj9rfzR+kG9TiYd5gIELemAiEAj0uW6l0VFHhi4y2zH2l0kG7XAFNBao8TCT69rrI0Sro=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75835},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"b23d0aca4444d3727bef596b99d52f845ee6bdd8","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","lint:fix":"eslint src/**/*.ts --fix"},"_npmUser":{"name":"200systems","actor":{"name":"200systems","type":"user","email":"cleiton.marques@200.systems"},"email":"cleiton.marques@200.systems"},"repository":{"url":"git+https://github.com/200Systems/bitbrick-microframework.git","type":"git","directory":"packages/express-adapter"},"_npmVersion":"10.8.1","description":"Express.js integration adapter with middleware, controllers, and error handling","directories":{},"_nodeVersion":"22.3.0","dependencies":{"@200systems/mf-logger":"^1.0.0","@200systems/mf-db-core":"^1.0.0","@200systems/mf-service-base":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","typescript":"^5.8.3","@types/cors":"^2.8.0","@types/node":"^20.10.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","@types/express":"^4.17.0","@types/compression":"^1.7.0","express-rate-limit":"^7.1.0","@types/jsonwebtoken":"^9.0.0"},"peerDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","express-rate-limit":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mf-express-adapter_1.0.1_1750937033752_0.8330332425738358","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Descontinuado: use @groundbrick/express-adapter."},"1.0.2":{"name":"@200systems/mf-express-adapter","version":"1.0.2","keywords":["typescript","express","middleware","controller","microframework","rest-api","error-handling","authentication"],"author":{"name":"Cleiton Marques","email":"cleiton.marques@200.systems"},"license":"MIT","_id":"@200systems/mf-express-adapter@1.0.2","maintainers":[{"name":"200systems","email":"cleiton.marques@200.systems"}],"homepage":"https://github.com/200Systems/bitbrick-microframework#readme","bugs":{"url":"https://github.com/200Systems/bitbrick-microframework/issues"},"dist":{"shasum":"259fbf923f1a382f5453e410047d1177ec0bdab6","tarball":"https://registry.npmjs.org/@200systems/mf-express-adapter/-/mf-express-adapter-1.0.2.tgz","fileCount":46,"integrity":"sha512-QrUvv0jIEagewkv7Jsq2eDrxG+RnoNZazBygz/YysMggPVmGM6pOUwnzoBM2vxeByhiau50Wd3q9D7pJXWp4Bg==","signatures":[{"sig":"MEQCIEj+TlGjnBbFoOzmgZABw7S1sS+AOlRWOiWOnPCFxP/FAiBaFeOxAXSaAzqZzt/ueDojtmQ24LwexP+ohY04mxFXtg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75302},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"3b9df0fba14ad311035a103071c895f780597d75","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","lint:fix":"eslint src/**/*.ts --fix"},"_npmUser":{"name":"200systems","actor":{"name":"200systems","type":"user","email":"cleiton.marques@200.systems"},"email":"cleiton.marques@200.systems"},"repository":{"url":"git+https://github.com/200Systems/bitbrick-microframework.git","type":"git","directory":"packages/express-adapter"},"_npmVersion":"10.8.1","description":"Express.js integration adapter with middleware, controllers, and error handling","directories":{},"_nodeVersion":"22.3.0","dependencies":{"@200systems/mf-logger":"^1.0.0","@200systems/mf-db-core":"^1.0.0","@200systems/mf-service-base":"^1.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","typescript":"^5.8.3","@types/cors":"^2.8.0","@types/node":"^20.10.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","@types/express":"^4.17.0","@types/compression":"^1.7.0","express-rate-limit":"^7.1.0","@types/jsonwebtoken":"^9.0.0"},"peerDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","express-rate-limit":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mf-express-adapter_1.0.2_1751014426065_0.6963001184567059","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Descontinuado: use @groundbrick/express-adapter."},"1.0.3":{"name":"@200systems/mf-express-adapter","version":"1.0.3","keywords":["typescript","express","middleware","controller","microframework","rest-api","error-handling","authentication"],"author":{"name":"Cleiton Marques","email":"cleiton.marques@200.systems"},"license":"MIT","_id":"@200systems/mf-express-adapter@1.0.3","maintainers":[{"name":"200systems","email":"cleiton.marques@200.systems"}],"homepage":"https://github.com/200Systems/bitbrick-microframework#readme","bugs":{"url":"https://github.com/200Systems/bitbrick-microframework/issues"},"dist":{"shasum":"42695b1babf294081879af8a3d73c88370caa25f","tarball":"https://registry.npmjs.org/@200systems/mf-express-adapter/-/mf-express-adapter-1.0.3.tgz","fileCount":46,"integrity":"sha512-a8hJ8OU5f49pjVkaqKNi3/b6bcFeKfjSJvnPk1Vs9Yx8vOFWzszhTfRUwfnlhOlIwzO+MSrqTPKJEVHzTrA8vw==","signatures":[{"sig":"MEUCIDQV75BdrvqHESwLwIIOGpzEsIvT8eK5mS7ytF1kX0QtAiEAslmIWtBKLEhN9sZx+9gl621rTnOEHRGE65BJzgHp900=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75681},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"c800d148864be1fa08ecb710d1869d79a5172455","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","lint:fix":"eslint src/**/*.ts --fix"},"_npmUser":{"name":"200systems","actor":{"name":"200systems","type":"user","email":"cleiton.marques@200.systems"},"email":"cleiton.marques@200.systems"},"repository":{"url":"git+https://github.com/200Systems/bitbrick-microframework.git","type":"git","directory":"packages/express-adapter"},"_npmVersion":"10.8.1","description":"Express.js integration adapter with middleware, controllers, and error handling","directories":{},"_nodeVersion":"22.3.0","dependencies":{"@200systems/mf-logger":"^1.0.0","@200systems/mf-db-core":"^1.0.0","@200systems/mf-service-base":"^1.0.0","@200systems/mf-express-adapter":"file:"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","typescript":"^5.8.3","@types/cors":"^2.8.0","@types/node":"^20.10.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","@types/express":"^4.17.0","@types/compression":"^1.7.0","express-rate-limit":"^7.1.0","@types/jsonwebtoken":"^9.0.0"},"peerDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","express-rate-limit":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mf-express-adapter_1.0.3_1751026108909_0.012993773463697345","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Descontinuado: use @groundbrick/express-adapter."},"1.1.0":{"name":"@200systems/mf-express-adapter","version":"1.1.0","keywords":["typescript","express","middleware","controller","microframework","rest-api","error-handling","authentication"],"author":{"name":"Cleiton Marques","email":"cleiton.marques@200.systems"},"license":"MIT","_id":"@200systems/mf-express-adapter@1.1.0","maintainers":[{"name":"200systems","email":"cleiton.marques@200.systems"}],"homepage":"https://github.com/200Systems/bitbrick-microframework#readme","bugs":{"url":"https://github.com/200Systems/bitbrick-microframework/issues"},"dist":{"shasum":"40c19a08c56e0db7ee966f911d62bfb6106cdfd2","tarball":"https://registry.npmjs.org/@200systems/mf-express-adapter/-/mf-express-adapter-1.1.0.tgz","fileCount":46,"integrity":"sha512-7XSxbYPb0E4A30NV3VSvZvIbX8usP+dEuM5e5pu3a/zRpBA8Lk52JWcIXNdkeS+Vic+K+TaiA4+tdRI0dYIa2g==","signatures":[{"sig":"MEQCIDLpUbPlBK6WtJoI2sB7Y6Sbpdi8DSawqO4wxCpvPvpXAiBxI23C6QPvA+TZAih946dyGBAFSr7HQ5PW7PqAyxLl/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":76327},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"17e3ce1150d8a91f15ba15d4208a96a40cf211b9","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","lint:fix":"eslint src/**/*.ts --fix"},"_npmUser":{"name":"200systems","actor":{"name":"200systems","type":"user","email":"cleiton.marques@200.systems"},"email":"cleiton.marques@200.systems"},"repository":{"url":"git+https://github.com/200Systems/bitbrick-microframework.git","type":"git","directory":"packages/express-adapter"},"_npmVersion":"10.8.1","description":"Express.js integration adapter with middleware, controllers, and error handling","directories":{},"_nodeVersion":"22.3.0","dependencies":{"@200systems/mf-logger":"^1.0.0","@200systems/mf-db-core":"^1.0.0","@200systems/mf-service-base":"^1.0.0","@200systems/mf-express-adapter":"file:"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","typescript":"^5.8.3","@types/cors":"^2.8.0","@types/node":"^20.10.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","@types/express":"^4.17.0","@types/compression":"^1.7.0","express-rate-limit":"^7.1.0","@types/jsonwebtoken":"^9.0.0"},"peerDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","express-rate-limit":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mf-express-adapter_1.1.0_1751046959678_0.7945922655860069","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Descontinuado: use @groundbrick/express-adapter."},"1.1.1":{"name":"@200systems/mf-express-adapter","version":"1.1.1","keywords":["typescript","express","middleware","controller","microframework","rest-api","error-handling","authentication"],"author":{"name":"Cleiton Marques","email":"cleiton.marques@200.systems"},"license":"MIT","_id":"@200systems/mf-express-adapter@1.1.1","maintainers":[{"name":"200systems","email":"cleiton.marques@200.systems"}],"homepage":"https://github.com/200Systems/bitbrick-microframework#readme","bugs":{"url":"https://github.com/200Systems/bitbrick-microframework/issues"},"dist":{"shasum":"1c097c18c4895ce9dfb92aff86ab07e3d16acdd4","tarball":"https://registry.npmjs.org/@200systems/mf-express-adapter/-/mf-express-adapter-1.1.1.tgz","fileCount":54,"integrity":"sha512-UPb484oIjkwTGDOy4di/Mtkq741hpBKMrxAktPr0b5FcoptW6SJ6dNzr22NoY81XSCHp7mSEn9WI4bhtRTXWbA==","signatures":[{"sig":"MEUCIEVeY6zawKFaHEce9TQowmqj0gjM/nXgxV8ujvGjgW9wAiEAvMJ4jGo+qy+RwjHmXrLflJmVYQYPjJ37OFGD7bPKT6E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87801},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"17e3ce1150d8a91f15ba15d4208a96a40cf211b9","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","lint:fix":"eslint src/**/*.ts --fix"},"_npmUser":{"name":"200systems","actor":{"name":"200systems","type":"user","email":"cleiton.marques@200.systems"},"email":"cleiton.marques@200.systems"},"repository":{"url":"git+https://github.com/200Systems/bitbrick-microframework.git","type":"git","directory":"packages/express-adapter"},"_npmVersion":"10.8.1","description":"Express.js integration adapter with middleware, controllers, and error handling","directories":{},"_nodeVersion":"22.3.0","dependencies":{"@200systems/mf-logger":"^1.0.0","@200systems/mf-db-core":"^1.0.0","@200systems/mf-service-base":"^1.0.0","@200systems/mf-express-adapter":"file:"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","typescript":"^5.8.3","@types/cors":"^2.8.0","@types/node":"^20.10.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","@types/express":"^4.17.0","@types/compression":"^1.7.0","express-rate-limit":"^7.1.0","@types/jsonwebtoken":"^9.0.0"},"peerDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","express-rate-limit":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mf-express-adapter_1.1.1_1751056808602_0.39903721043446616","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Descontinuado: use @groundbrick/express-adapter."},"1.1.2":{"name":"@200systems/mf-express-adapter","version":"1.1.2","keywords":["typescript","express","middleware","controller","microframework","rest-api","error-handling","authentication"],"author":{"name":"Cleiton Marques","email":"cleiton.marques@200.systems"},"license":"MIT","_id":"@200systems/mf-express-adapter@1.1.2","maintainers":[{"name":"200systems","email":"cleiton.marques@200.systems"}],"homepage":"https://github.com/200Systems/bitbrick-microframework#readme","bugs":{"url":"https://github.com/200Systems/bitbrick-microframework/issues"},"dist":{"shasum":"2ad22ff794d79a8f5dec725db0cd0b933341d3a3","tarball":"https://registry.npmjs.org/@200systems/mf-express-adapter/-/mf-express-adapter-1.1.2.tgz","fileCount":54,"integrity":"sha512-D0XAk5YoSdzOogOdG8xVh0lw9c23xUllW6o+iOTU1WKodHGAXiosDAXaR4NBtOmdaWyCD7AYH3f9bQNw5UHrhg==","signatures":[{"sig":"MEYCIQC2LeuN3LkRvXUh8Jo5+biNVMZ+2vb3CQzWVBdY+5BPJwIhAL66OE5uGXXZDFdyBt328duc7+O1xOJ0yi7IHG/c9Zt2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87801},"main":"./dist/index.js","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"d7bb90f291b6b532083319fa040cfeb43eae8ad7","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","lint:fix":"eslint src/**/*.ts --fix"},"_npmUser":{"name":"200systems","actor":{"name":"200systems","type":"user","email":"cleiton.marques@200.systems"},"email":"cleiton.marques@200.systems"},"repository":{"url":"git+https://github.com/200Systems/bitbrick-microframework.git","type":"git","directory":"packages/express-adapter"},"_npmVersion":"10.8.1","description":"Express.js integration adapter with middleware, controllers, and error handling","directories":{},"_nodeVersion":"22.3.0","dependencies":{"@200systems/mf-logger":"^1.0.0","@200systems/mf-db-core":"^1.0.0","@200systems/mf-service-base":"^1.0.0","@200systems/mf-express-adapter":"file:"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","typescript":"^5.8.3","@types/cors":"^2.8.0","@types/node":"^20.10.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","@types/express":"^4.17.0","@types/compression":"^1.7.0","express-rate-limit":"^7.1.0","@types/jsonwebtoken":"^9.0.0"},"peerDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","express-rate-limit":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mf-express-adapter_1.1.2_1751058919927_0.7549622729887517","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Descontinuado: use @groundbrick/express-adapter."},"1.1.3":{"name":"@200systems/mf-express-adapter","version":"1.1.3","keywords":["typescript","express","middleware","controller","microframework","rest-api","error-handling","authentication"],"author":{"name":"Cleiton Marques","email":"cleiton.marques@200.systems"},"license":"MIT","_id":"@200systems/mf-express-adapter@1.1.3","maintainers":[{"name":"200systems","email":"cleiton.marques@200.systems"}],"homepage":"https://github.com/200Systems/bitbrick-microframework#readme","bugs":{"url":"https://github.com/200Systems/bitbrick-microframework/issues"},"dist":{"shasum":"dd61e1d7de5bf1821e99a49dde331d605652d5bf","tarball":"https://registry.npmjs.org/@200systems/mf-express-adapter/-/mf-express-adapter-1.1.3.tgz","fileCount":54,"integrity":"sha512-EOOMC9XrLgVPl2C3rBsCKN5Rn+V+2k1vNTfft9JT2z7hnj1LnM1L9N/ea3uCZPgGzudgJzd38Nenbm2pESkEZQ==","signatures":[{"sig":"MEUCIHey33ywczqkkaW+vsR6gwaM9jw+yXJcIZHoGuG6RZVXAiEAkQkbyd4Kl5CtWmBRqo49GfN2iioP4S+dFMvph7IrhgA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87823},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"d7bb90f291b6b532083319fa040cfeb43eae8ad7","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","lint:fix":"eslint src/**/*.ts --fix"},"_npmUser":{"name":"200systems","actor":{"name":"200systems","type":"user","email":"cleiton.marques@200.systems"},"email":"cleiton.marques@200.systems"},"repository":{"url":"git+https://github.com/200Systems/bitbrick-microframework.git","type":"git","directory":"packages/express-adapter"},"_npmVersion":"10.8.1","description":"Express.js integration adapter with middleware, controllers, and error handling","directories":{},"_nodeVersion":"22.3.0","dependencies":{"@200systems/mf-logger":"^1.0.0","@200systems/mf-db-core":"^1.0.0","@200systems/mf-service-base":"^1.0.0","@200systems/mf-express-adapter":"file:"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","typescript":"^5.8.3","@types/cors":"^2.8.0","@types/node":"^20.10.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","@types/express":"^4.17.0","@types/compression":"^1.7.0","express-rate-limit":"^7.1.0","@types/jsonwebtoken":"^9.0.0"},"peerDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","express-rate-limit":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mf-express-adapter_1.1.3_1751059757621_0.056047829276447025","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Descontinuado: use @groundbrick/express-adapter."},"1.2.1":{"name":"@200systems/mf-express-adapter","version":"1.2.1","keywords":["typescript","express","middleware","controller","microframework","rest-api","error-handling","authentication"],"author":{"name":"Cleiton Marques","email":"cleiton.marques@200.systems"},"license":"MIT","_id":"@200systems/mf-express-adapter@1.2.1","maintainers":[{"name":"200systems","email":"cleiton.marques@200.systems"}],"homepage":"https://github.com/200Systems/bitbrick-microframework#readme","bugs":{"url":"https://github.com/200Systems/bitbrick-microframework/issues"},"dist":{"shasum":"6eb891d5515dcfca9a3b56fae10cd8abec93895f","tarball":"https://registry.npmjs.org/@200systems/mf-express-adapter/-/mf-express-adapter-1.2.1.tgz","fileCount":54,"integrity":"sha512-r/TfqcwSLdtB9VeOBptQxliKyM9aHU+QoVeu3g++gbWuUc3AzUiOtllKk502uryUD0WQdhfYiWvcztRmMFaf3g==","signatures":[{"sig":"MEUCIAZ/vta3VNZLjawOJlsG8B+nUFt6WRKehYF7uhgLyzQbAiEAodSmE69odWhbyMqtyqxaMGCEn+DVxDb679cjGls/qOU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87823},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"b2e1d0a164c5cfd355a044b56b7ec48c88def397","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","lint:fix":"eslint src/**/*.ts --fix"},"_npmUser":{"name":"200systems","actor":{"name":"200systems","type":"user","email":"cleiton.marques@200.systems"},"email":"cleiton.marques@200.systems"},"repository":{"url":"git+https://github.com/200Systems/bitbrick-microframework.git","type":"git","directory":"packages/express-adapter"},"_npmVersion":"10.8.1","description":"Express.js integration adapter with middleware, controllers, and error handling","directories":{},"_nodeVersion":"22.3.0","dependencies":{"@200systems/mf-logger":"^1.0.0","@200systems/mf-db-core":"^1.0.0","@200systems/mf-service-base":"^1.0.0","@200systems/mf-express-adapter":"file:"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","typescript":"^5.8.3","@types/cors":"^2.8.0","@types/node":"^20.10.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","@types/express":"^4.17.0","@types/compression":"^1.7.0","express-rate-limit":"^7.1.0","@types/jsonwebtoken":"^9.0.0"},"peerDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","express-rate-limit":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mf-express-adapter_1.2.1_1751223535931_0.2759540310166455","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Descontinuado: use @groundbrick/express-adapter."},"1.2.2":{"name":"@200systems/mf-express-adapter","version":"1.2.2","keywords":["typescript","express","middleware","controller","microframework","rest-api","error-handling","authentication"],"author":{"name":"Cleiton Marques","email":"cleiton.marques@200.systems"},"license":"MIT","_id":"@200systems/mf-express-adapter@1.2.2","maintainers":[{"name":"200systems","email":"cleiton.marques@200.systems"}],"homepage":"https://github.com/200Systems/bitbrick-microframework#readme","bugs":{"url":"https://github.com/200Systems/bitbrick-microframework/issues"},"dist":{"shasum":"6328d957a5406975d3043d3e5fdf8d2b6f6cd29c","tarball":"https://registry.npmjs.org/@200systems/mf-express-adapter/-/mf-express-adapter-1.2.2.tgz","fileCount":54,"integrity":"sha512-FMdOWXA4Q/uqHtvUOS2G25xNGG2lt65g1JaAgIGNlLYe2/2kcCU6uh8uS99mc747kMohuIb3hZ1zRKxui4YVBg==","signatures":[{"sig":"MEUCIG353rzBCwMD6pFQAcjaGV0ACmB1/DL2NmLoDh28s4aOAiEAw87t98MBAeB6Xq2SqPtxF7qdAMnZKrPhFDGaKvPG5KM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87823},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"b2e1d0a164c5cfd355a044b56b7ec48c88def397","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","lint:fix":"eslint src/**/*.ts --fix"},"_npmUser":{"name":"200systems","actor":{"name":"200systems","type":"user","email":"cleiton.marques@200.systems"},"email":"cleiton.marques@200.systems"},"repository":{"url":"git+https://github.com/200Systems/bitbrick-microframework.git","type":"git","directory":"packages/express-adapter"},"_npmVersion":"10.8.1","description":"Express.js integration adapter with middleware, controllers, and error handling","directories":{},"_nodeVersion":"22.3.0","dependencies":{"@200systems/mf-logger":"^1.0.0","@200systems/mf-db-core":"^1.0.0","@200systems/mf-service-base":"^1.0.0","@200systems/mf-express-adapter":"file:"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","typescript":"^5.8.3","@types/cors":"^2.8.0","@types/node":"^20.10.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","@types/express":"^4.17.0","@types/compression":"^1.7.0","express-rate-limit":"^7.1.0","@types/jsonwebtoken":"^9.0.0"},"peerDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","express-rate-limit":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mf-express-adapter_1.2.2_1751224239245_0.9304824027446092","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Descontinuado: use @groundbrick/express-adapter."},"1.2.3":{"name":"@200systems/mf-express-adapter","version":"1.2.3","keywords":["typescript","express","middleware","controller","microframework","rest-api","error-handling","authentication"],"author":{"name":"Cleiton Marques","email":"cleiton.marques@200.systems"},"license":"MIT","_id":"@200systems/mf-express-adapter@1.2.3","maintainers":[{"name":"200systems","email":"cleiton.marques@200.systems"}],"homepage":"https://github.com/200Systems/bitbrick-microframework#readme","bugs":{"url":"https://github.com/200Systems/bitbrick-microframework/issues"},"dist":{"shasum":"20815d23c6c48ef9df021058236ededa23c6b7b9","tarball":"https://registry.npmjs.org/@200systems/mf-express-adapter/-/mf-express-adapter-1.2.3.tgz","fileCount":54,"integrity":"sha512-7ol2ZVD8Z1xOX5GKIx91MmhAFrPUW54JGByj3o9FpkdNdz8XaMQT7CZ2RUqXN8AHQs68vYNd+rr3PU0/jPm7FA==","signatures":[{"sig":"MEUCIQCIg9/7aaubrzjM5kDoxPE3vZycLEuBEVqVUppUN4ZCqAIgbrjfmumkx8xwDcJyxoFESI0WnjDk6jjDuJ5Nuutodpk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87954},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"23dcee4f5721e057c3d9625f10e1823f834a466d","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","lint:fix":"eslint src/**/*.ts --fix"},"_npmUser":{"name":"200systems","actor":{"name":"200systems","type":"user","email":"cleiton.marques@200.systems"},"email":"cleiton.marques@200.systems"},"repository":{"url":"git+https://github.com/200Systems/bitbrick-microframework.git","type":"git","directory":"packages/express-adapter"},"_npmVersion":"10.8.1","description":"Express.js integration adapter with middleware, controllers, and error handling","directories":{},"_nodeVersion":"22.3.0","dependencies":{"@200systems/mf-logger":"^1.0.0","@200systems/mf-db-core":"^1.0.0","@200systems/mf-service-base":"^1.0.0","@200systems/mf-express-adapter":"file:"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","typescript":"^5.8.3","@types/cors":"^2.8.0","@types/node":"^20.10.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","@types/express":"^4.17.0","@types/compression":"^1.7.0","express-rate-limit":"^7.1.0","@types/jsonwebtoken":"^9.0.0"},"peerDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","express-rate-limit":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mf-express-adapter_1.2.3_1751472529354_0.9719804086594974","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Descontinuado: use @groundbrick/express-adapter."},"1.2.4":{"name":"@200systems/mf-express-adapter","version":"1.2.4","keywords":["typescript","express","middleware","controller","microframework","rest-api","error-handling","authentication"],"author":{"name":"Cleiton Marques","email":"cleiton.marques@200.systems"},"license":"MIT","_id":"@200systems/mf-express-adapter@1.2.4","maintainers":[{"name":"200systems","email":"cleiton.marques@200.systems"}],"homepage":"https://github.com/200Systems/bitbrick-microframework#readme","bugs":{"url":"https://github.com/200Systems/bitbrick-microframework/issues"},"dist":{"shasum":"864de3262ee99c706d3798429b6515efc11e3558","tarball":"https://registry.npmjs.org/@200systems/mf-express-adapter/-/mf-express-adapter-1.2.4.tgz","fileCount":54,"integrity":"sha512-tppuCDf2/GU1Y90okCoYuBr3FoDFTBPCv7rttrVcDgCZFOVyp4ErRHvE34kY2Q9BlVvIpePUkLbRgLdOqcEBqw==","signatures":[{"sig":"MEUCIQDnwL0K5U79m3UQfN6Is2sxbLHozOc4DUUEXUqSDxhEMAIgTxo/qNzqjm0KaKTpUFHKqStwdMeBAVB/21eD+7JOS5w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87954},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"23dcee4f5721e057c3d9625f10e1823f834a466d","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","lint:fix":"eslint src/**/*.ts --fix"},"_npmUser":{"name":"200systems","actor":{"name":"200systems","type":"user","email":"cleiton.marques@200.systems"},"email":"cleiton.marques@200.systems"},"repository":{"url":"git+https://github.com/200Systems/bitbrick-microframework.git","type":"git","directory":"packages/express-adapter"},"_npmVersion":"10.8.1","description":"Express.js integration adapter with middleware, controllers, and error handling","directories":{},"_nodeVersion":"22.3.0","dependencies":{"@200systems/mf-logger":"^1.0.0","@200systems/mf-db-core":"^1.0.0","@200systems/mf-service-base":"^1.0.0","@200systems/mf-express-adapter":"file:"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","typescript":"^5.8.3","@types/cors":"^2.8.0","@types/node":"^20.10.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","@types/express":"^4.17.0","@types/compression":"^1.7.0","express-rate-limit":"^7.1.0","@types/jsonwebtoken":"^9.0.0"},"peerDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","express-rate-limit":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mf-express-adapter_1.2.4_1751473981707_0.4736598432688943","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Descontinuado: use @groundbrick/express-adapter."},"1.2.5":{"name":"@200systems/mf-express-adapter","version":"1.2.5","keywords":["typescript","express","middleware","controller","microframework","rest-api","error-handling","authentication"],"author":{"name":"Cleiton Marques","email":"cleiton.marques@200.systems"},"license":"MIT","_id":"@200systems/mf-express-adapter@1.2.5","maintainers":[{"name":"200systems","email":"cleiton.marques@200.systems"}],"homepage":"https://github.com/200Systems/bitbrick-microframework#readme","bugs":{"url":"https://github.com/200Systems/bitbrick-microframework/issues"},"dist":{"shasum":"69f01c3ae91019631d1b845cf66f823095a1041a","tarball":"https://registry.npmjs.org/@200systems/mf-express-adapter/-/mf-express-adapter-1.2.5.tgz","fileCount":54,"integrity":"sha512-xn180WKEABSB/wwDOy3cqIe2UMGyQEozOV5POuTCJJA0NkMMMVWEYDpteHcbpKtcoJqh+HihjdQKH9bu3pF/uA==","signatures":[{"sig":"MEUCID2PewvJ/2pANBcy22lzmhMzLLw3oN/k1f8/Fwbr5rVuAiEA0XEOnqW1U9SogwW/1m2eesekgEJ6IIjqY+E3h3UQFPI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87954},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"23dcee4f5721e057c3d9625f10e1823f834a466d","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","lint:fix":"eslint src/**/*.ts --fix"},"_npmUser":{"name":"200systems","actor":{"name":"200systems","type":"user","email":"cleiton.marques@200.systems"},"email":"cleiton.marques@200.systems"},"repository":{"url":"git+https://github.com/200Systems/bitbrick-microframework.git","type":"git","directory":"packages/express-adapter"},"_npmVersion":"10.8.1","description":"Express.js integration adapter with middleware, controllers, and error handling","directories":{},"_nodeVersion":"22.3.0","dependencies":{"@200systems/mf-logger":"^1.0.0","@200systems/mf-db-core":"^1.0.0","@200systems/mf-service-base":"^1.0.0","@200systems/mf-express-adapter":"file:"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","typescript":"^5.8.3","@types/cors":"^2.8.0","@types/node":"^20.10.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","@types/express":"^4.17.0","@types/compression":"^1.7.0","express-rate-limit":"^7.1.0","@types/jsonwebtoken":"^9.0.0"},"peerDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","express-rate-limit":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mf-express-adapter_1.2.5_1751474254501_0.42467531775349054","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Descontinuado: use @groundbrick/express-adapter."},"1.2.6":{"name":"@200systems/mf-express-adapter","version":"1.2.6","keywords":["typescript","express","middleware","controller","microframework","rest-api","error-handling","authentication"],"author":{"name":"Cleiton Marques","email":"cleiton.marques@200.systems"},"license":"MIT","_id":"@200systems/mf-express-adapter@1.2.6","maintainers":[{"name":"200systems","email":"cleiton.marques@200.systems"}],"homepage":"https://github.com/200Systems/bitbrick-microframework#readme","bugs":{"url":"https://github.com/200Systems/bitbrick-microframework/issues"},"dist":{"shasum":"851866f80889fdeeb64e1a6a652714d5dd6d4566","tarball":"https://registry.npmjs.org/@200systems/mf-express-adapter/-/mf-express-adapter-1.2.6.tgz","fileCount":54,"integrity":"sha512-JOSVHLa9iECRabYTQoKky/XKhYioZssoKyXaqNfKi54J4qqaTM9iJY1ZktsiR6y1TA3FW5zJnzT3gt4jKAyrQg==","signatures":[{"sig":"MEYCIQDgkxz0NS/8yiWM4YGRAJXFRP6rcRRO2Xm3tQsxW6KPzwIhAO/TO5Nym9UfTYtEJ+xxTVedIwrXSKup+G2Tx9T14GiM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":87954},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.js"}},"gitHead":"23dcee4f5721e057c3d9625f10e1823f834a466d","scripts":{"dev":"tsc --watch","lint":"eslint src/**/*.ts","build":"tsc","clean":"rm -rf dist *.tsbuildinfo","lint:fix":"eslint src/**/*.ts --fix"},"_npmUser":{"name":"200systems","actor":{"name":"200systems","type":"user","email":"cleiton.marques@200.systems"},"email":"cleiton.marques@200.systems"},"repository":{"url":"git+https://github.com/200Systems/bitbrick-microframework.git","type":"git","directory":"packages/express-adapter"},"_npmVersion":"10.8.1","description":"Express.js integration adapter with middleware, controllers, and error handling","directories":{},"_nodeVersion":"22.3.0","dependencies":{"@200systems/mf-logger":"^1.0.0","@200systems/mf-db-core":"^1.0.0","@200systems/mf-service-base":"^1.0.0","@200systems/mf-express-adapter":"file:"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","typescript":"^5.8.3","@types/cors":"^2.8.0","@types/node":"^20.10.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","@types/express":"^4.17.0","@types/compression":"^1.7.0","express-rate-limit":"^7.1.0","@types/jsonwebtoken":"^9.0.0"},"peerDependencies":{"cors":"^2.8.5","helmet":"^7.1.0","express":"^4.18.0","compression":"^1.7.4","jsonwebtoken":"^9.0.0","express-rate-limit":"^7.1.0"},"_npmOperationalInternal":{"tmp":"tmp/mf-express-adapter_1.2.6_1751475264130_0.4768809097662172","host":"s3://npm-registry-packages-npm-production"},"deprecated":"Descontinuado: use @groundbrick/express-adapter."}},"time":{"created":"2025-06-26T11:23:53.643Z","modified":"2026-09-27T14:03:05.374Z","1.0.1":"2025-06-26T11:23:53.940Z","1.0.2":"2025-06-27T08:53:46.238Z","1.0.3":"2025-06-27T12:08:29.095Z","1.1.0":"2025-06-27T17:55:59.856Z","1.1.1":"2025-06-27T20:40:08.769Z","1.1.2":"2025-06-27T21:15:20.129Z","1.1.3":"2025-06-27T21:29:17.824Z","1.2.1":"2025-06-29T18:58:56.131Z","1.2.2":"2025-06-29T19:10:39.419Z","1.2.3":"2025-07-02T16:08:49.536Z","1.2.4":"2025-07-02T16:33:01.884Z","1.2.5":"2025-07-02T16:37:34.698Z","1.2.6":"2025-07-02T16:54:24.339Z"},"bugs":{"url":"https://github.com/200Systems/bitbrick-microframework/issues"},"author":{"name":"Cleiton Marques","email":"cleiton.marques@200.systems"},"license":"MIT","homepage":"https://github.com/200Systems/bitbrick-microframework#readme","keywords":["typescript","express","middleware","controller","microframework","rest-api","error-handling","authentication"],"repository":{"url":"git+https://github.com/200Systems/bitbrick-microframework.git","type":"git","directory":"packages/express-adapter"},"description":"Express.js integration adapter with middleware, controllers, and error handling","maintainers":[{"name":"200systems","email":"cleiton.marques@200.systems"}],"readme":"# @200systems/mf-express-adapter\n\nExpress.js integration adapter para o microframework TypeScript com middleware estruturado, controllers base e tratamento de erros.\n\n## Features Implementadas\n\n- **🚀 ExpressApp Class** - Classe principal com configuração Express pré-configurada\n- **📋 BaseController** - Controller base com async handlers e utilitários\n- **🛡️ Middleware Stack** - Error handling, request logging e response formatting\n- **🔐 JWT Authentication** - Middleware de autenticação JWT com role-based access\n- **📊 Response Helpers** - Formatação padronizada de respostas da API  \n- **✅ Validation Utilities** - Helpers de validação e sanitização\n- **📄 Pagination Support** - Utilitários de paginação e ordenação\n\n## Instalação\n\n```bash\nnpm install @200systems/mf-express-adapter\n```\n\n### Peer Dependencies\n\n```bash\nnpm install express cors helmet compression express-rate-limit jsonwebtoken\nnpm install --save-dev @types/express @types/cors @types/compression @types/jsonwebtoken\n```\n\n## Quick Start\n\n### 1. Configuração Básica da Aplicação\n\n```typescript\n// src/server.ts\nimport { ExpressApp } from '@200systems/mf-express-adapter';\nimport { createLogger } from '@200systems/mf-logger';\n\nconst app = new ExpressApp({\n  port: 3000,\n  host: '0.0.0.0',\n  cors: {\n    origin: process.env.CORS_ORIGIN || 'http://localhost:5173',\n    credentials: true\n  },\n  trustProxy: true,\n  security: {\n    helmet: true,\n    rateLimit: {\n      windowMs: 15 * 60 * 1000,\n      max: 100\n    }\n  }\n});\n\napp.start().then(() => {\n  console.log('Server started successfully');\n});\n```\n\n### 2. JWT Authentication Setup\n\n```typescript\n// src/middleware/auth.ts\nimport { JwtMiddleware } from '@200systems/mf-express-adapter';\nimport { createLogger } from '@200systems/mf-logger';\n\nconst logger = createLogger({ context: 'auth' });\n\nexport const jwtAuth = new JwtMiddleware({\n  secret: process.env.JWT_SECRET || 'your-secret-key',\n  algorithms: ['HS256'],\n  skipPaths: ['/auth/login', '/auth/register', '/health'],\n  headerName: 'authorization',\n  cookieName: 'token'\n}, logger);\n\n// Usage in routes\nimport { Router } from 'express';\nconst router = Router();\n\n// Protected route\nrouter.get('/profile', jwtAuth.authenticate, userController.getProfile);\n\n// Optional auth (user context if token present)\nrouter.get('/public', jwtAuth.optional, contentController.getPublicContent);\n\n// Role-based access\nrouter.delete('/admin/users/:id', \n  jwtAuth.authenticate, \n  jwtAuth.requireRole(['admin', 'super-admin']), \n  adminController.deleteUser\n);\n```\n\n### 3. Controller Implementation\n\n```typescript\n// src/controllers/UserController.ts\nimport { Request, Response, NextFunction } from 'express';\nimport { BaseController, AuthenticatedRequest } from '@200systems/mf-express-adapter';\nimport { Logger } from '@200systems/mf-logger';\nimport { ServiceResult } from '@200systems/mf-service-base';\n\nexport class UserController extends BaseController {\n  constructor(logger: Logger, private userService: UserService) {\n    super(logger);\n  }\n\n  getProfile = this.asyncHandler(async (req: AuthenticatedRequest, res: Response): Promise<ServiceResult<User>> => {\n    const userId = req.user!.userId; // Safe because of JWT middleware\n    const user = await this.userService.getUserById(userId);\n    return ServiceResult.success(user);\n  });\n\n  login = this.asyncHandler(async (req: Request, res: Response): Promise<ServiceResult<LoginResponse>> => {\n    const { email, password } = req.body;\n    \n    const user = await this.userService.authenticateUser(email, password);\n    const token = JwtMiddleware.generateToken(\n      { userId: user.id, email: user.email, roles: user.roles },\n      process.env.JWT_SECRET!,\n      '24h'\n    );\n\n    return ServiceResult.success({ user, token });\n  });\n}\n```\n\n### 4. Login/Logout Implementation\n\n```typescript\n// src/controllers/AuthController.ts\nexport class AuthController extends BaseController {\n  login = this.asyncHandler(async (req: Request, res: Response): Promise<void> => {\n    const { email, password } = req.body;\n    \n    const user = await this.authService.login(email, password);\n    const token = JwtMiddleware.generateToken(\n      { \n        userId: user.id, \n        email: user.email, \n        roles: user.roles || []\n      },\n      process.env.JWT_SECRET!,\n      '24h'\n    );\n\n    // Set as cookie (optional)\n    res.cookie('token', token, {\n      httpOnly: true,\n      secure: process.env.NODE_ENV === 'production',\n      maxAge: 24 * 60 * 60 * 1000 // 24 hours\n    });\n\n    res.json({\n      success: true,\n      data: { user, token },\n      meta: { timestamp: new Date().toISOString() }\n    });\n  });\n\n  logout = this.asyncHandler(async (req: Request, res: Response): Promise<void> => {\n    res.clearCookie('token');\n    res.json({\n      success: true,\n      message: 'Logged out successfully',\n      meta: { timestamp: new Date().toISOString() }\n    });\n  });\n}\n```\n\n## API Reference\n\n### JwtMiddleware\n\n```typescript\ninterface JwtMiddlewareConfig {\n  secret?: string;\n  algorithms?: string[];\n  skipPaths?: string[];\n  cookieName?: string;\n  headerName?: string;\n  onTokenExpired?: (req: Request, res: Response) => void;\n  onTokenInvalid?: (req: Request, res: Response) => void;\n}\n\nclass JwtMiddleware {\n  constructor(config: JwtMiddlewareConfig, logger: Logger);\n  \n  // Required authentication\n  authenticate: RequestHandler;\n  \n  // Optional authentication\n  optional: RequestHandler;\n  \n  // Role-based access control\n  requireRole(roles: string | string[]): RequestHandler;\n  \n  // Static helpers\n  static generateToken(payload: JwtPayload, secret: string, expiresIn?: string): string;\n  static decodeToken(token: string): JwtPayload | null;\n}\n```\n\n### JWT Payload Structure\n\n```typescript\ninterface JwtPayload {\n  userId: number;\n  email: string;\n  roles?: string[];\n  [key: string]: unknown;\n}\n```\n\n### Authentication Patterns\n\n```typescript\n// 1. Basic protected route\nrouter.get('/protected', jwtAuth.authenticate, controller.method);\n\n// 2. Optional authentication\nrouter.get('/mixed', jwtAuth.optional, (req: AuthenticatedRequest, res) => {\n  if (req.user) {\n    // User is authenticated\n  } else {\n    // Anonymous access\n  }\n});\n\n// 3. Role-based access\nrouter.post('/admin', \n  jwtAuth.authenticate,\n  jwtAuth.requireRole('admin'),\n  adminController.method\n);\n\n// 4. Multiple roles\nrouter.delete('/resource/:id',\n  jwtAuth.authenticate,\n  jwtAuth.requireRole(['admin', 'moderator']),\n  controller.method\n);\n```\n\n### ExpressApp\n\n```typescript\ninterface ExpressConfig {\n  port?: number;\n  host?: string;\n  cors?: {\n    origin?: string | string[] | boolean;\n    credentials?: boolean;\n    methods?: string[];\n    allowedHeaders?: string[];\n  };\n  security?: {\n    helmet?: boolean;\n    rateLimit?: {\n      windowMs?: number;\n      max?: number;\n      message?: string;\n    };\n  };\n  compression?: boolean;\n  bodyParser?: {\n    json?: { limit?: string };\n    urlencoded?: { limit?: string; extended?: boolean };\n  };\n  logger?: Partial<LoggerConfig>;\n  trustProxy?: boolean;\n}\n```\n\n### BaseController\n\n```typescript\nabstract class BaseController {\n  constructor(logger: Logger);\n  \n  protected asyncHandler(handler: RouteHandler): RouteHandler;\n  protected getIdFromParams(req: Request, paramName?: string): string;\n  protected getQueryParam(req: Request, paramName: string, defaultValue?: string): string | undefined;\n  protected getQueryParamAsNumber(req: Request, paramName: string, defaultValue?: number): number | undefined;\n  protected getPaginationParams(req: Request): { page: number; limit: number; offset: number };\n}\n```\n\n### Response Helpers\n\n```typescript\n// Success responses\nResponseHelper.success(res, data, 'Operation successful');\nResponseHelper.created(res, newUser, 'User created');\nResponseHelper.noContent(res);\n\n// Error responses  \nResponseHelper.error(res, 'Something went wrong', 400);\nResponseHelper.notFound(res, 'User not found');\nResponseHelper.unauthorized(res, 'Invalid credentials');\nResponseHelper.forbidden(res, 'Access denied');\n\n// Authentication responses\nResponseHelper.unauthorized(res); // 401\nResponseHelper.forbidden(res);    // 403\n```\n\n## Authentication Error Responses\n\nJWT middleware returns standardized error responses:\n\n```typescript\n// No token provided\n{\n  \"success\": false,\n  \"error\": {\n    \"message\": \"No token provided\",\n    \"code\": \"NO_TOKEN\"\n  },\n  \"meta\": {\n    \"timestamp\": \"2024-01-15T10:30:00.000Z\",\n    \"requestId\": \"abc123\"\n  }\n}\n\n// Token expired\n{\n  \"success\": false,\n  \"error\": {\n    \"message\": \"Token has expired\",\n    \"code\": \"TOKEN_EXPIRED\"\n  }\n}\n\n// Invalid token\n{\n  \"success\": false,\n  \"error\": {\n    \"message\": \"Invalid token\", \n    \"code\": \"TOKEN_INVALID\"\n  }\n}\n\n// Insufficient permissions\n{\n  \"success\": false,\n  \"error\": {\n    \"message\": \"Insufficient permissions\",\n    \"code\": \"INSUFFICIENT_PERMISSIONS\",\n    \"details\": {\n      \"requiredRoles\": [\"admin\"],\n      \"userRoles\": [\"user\"]\n    }\n  }\n}\n```\n\n## Middleware Stack Automático\n\nA classe `ExpressApp` configura automaticamente:\n\n- **Security**: Helmet para headers de segurança\n- **Rate Limiting**: Proteção contra ataques de força bruta\n- **CORS**: Configuração de Cross-Origin Resource Sharing\n- **Compression**: Compressão gzip/deflate\n- **Body Parsing**: JSON e URL-encoded parsing\n- **Request Logging**: Log automático de requests com timing\n- **Response Formatting**: Formatação padronizada de respostas\n- **Error Handling**: Tratamento global de erros\n\n## Exemplo Completo com Autenticação\n\n```typescript\n// src/server.ts\nimport { ExpressApp, JwtMiddleware } from '@200systems/mf-express-adapter';\nimport { createLogger } from '@200systems/mf-logger';\nimport { UserController } from './controllers/UserController';\nimport { AuthController } from './controllers/AuthController';\n\nconst logger = createLogger({ context: 'api-server' });\n\n// JWT Setup\nconst jwtAuth = new JwtMiddleware({\n  secret: process.env.JWT_SECRET!,\n  skipPaths: ['/auth/login', '/auth/register', '/health'],\n  algorithms: ['HS256']\n}, logger);\n\n// Express App\nconst app = new ExpressApp({\n  port: 3000,\n  cors: { origin: true, credentials: true },\n  trustProxy: true\n});\n\n// Auth routes (no JWT required)\napp.addRoutes([\n  { method: 'post', path: '/auth/login', handler: authController.login },\n  { method: 'post', path: '/auth/register', handler: authController.register },\n  { method: 'post', path: '/auth/logout', handler: authController.logout }\n]);\n\n// Protected routes\napp.addRoutes([\n  { \n    method: 'get', \n    path: '/api/profile', \n    handler: userController.getProfile,\n    middleware: [jwtAuth.authenticate]\n  },\n  { \n    method: 'get', \n    path: '/api/admin/users', \n    handler: userController.getAllUsers,\n    middleware: [jwtAuth.authenticate, jwtAuth.requireRole('admin')]\n  }\n]);\n\napp.start();\n```\n\n## Integração com Outros Packages\n\nEste adapter funciona perfeitamente com:\n\n- `@200systems/mf-logger` - Sistema de logging (obrigatório)\n- `@200systems/mf-service-base` - Base classes para services (obrigatório)\n- `@200systems/mf-db-core` - Abstração de banco de dados\n\n## Dependencies\n\n### Required\n- `@200systems/mf-logger` - Logging functionality\n- `@200systems/mf-service-base` - Service base classes\n- `@200systems/mf-db-core` - Database core abstractions\n\n### Peer Dependencies\n- `express` - Express.js framework\n- `cors` - CORS middleware\n- `helmet` - Security middleware\n- `compression` - Response compression\n- `express-rate-limit` - Rate limiting\n- `jsonwebtoken` - JWT token handling\n\n## License\n\nMIT","readmeFilename":"README.md"}