{"_id":"@cristianrg/fastpress","_rev":"11-22e3c4682934a6edde96eb2ed1f39d92","name":"@cristianrg/fastpress","dist-tags":{"latest":"1.3.1"},"versions":{"1.0.0":{"name":"@cristianrg/fastpress","version":"1.0.0","author":{"name":"Cristian Alexander Rizo Gómez"},"license":"MIT","_id":"@cristianrg/fastpress@1.0.0","maintainers":[{"name":"cristianrg","email":"rizogomezalexander@gmail.com"}],"homepage":"https://github.com/CristianRG/fastpress#readme","bugs":{"url":"https://github.com/CristianRG/fastpress/issues"},"dist":{"shasum":"c2c977606d1bdf82b29316fdd923cbc87f7c3ab7","tarball":"https://registry.npmjs.org/@cristianrg/fastpress/-/fastpress-1.0.0.tgz","fileCount":81,"integrity":"sha512-JGB1r3zTgjqjasSGn8b7u0p8YsSMtVB3LLF/vbA8NYZsHBKXU564eFGY6nBMoejlSwXhKus4zUhlG/M7zXw1Gw==","signatures":[{"sig":"MEYCIQDiNUDaS7XhZwDIZi+5c8VV61wCeHT7QOHgddeXL0z6CwIhAJOeoeysFbXtXdylqLG2XcoBYeuYVPUpdtcn7SKXvo5f","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":198570},"main":"dist/index.cjs","type":"module","_from":"file:cristianrg-fastpress-1.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts --shims"},"_npmUser":{"name":"cristianrg","email":"rizogomezalexander@gmail.com"},"_resolved":"C:\\Users\\crist\\AppData\\Local\\Temp\\5c980eaea161e844f1a39907bea6d994\\cristianrg-fastpress-1.0.0.tgz","_integrity":"sha512-JGB1r3zTgjqjasSGn8b7u0p8YsSMtVB3LLF/vbA8NYZsHBKXU564eFGY6nBMoejlSwXhKus4zUhlG/M7zXw1Gw==","repository":{"url":"git+https://github.com/CristianRG/fastpress.git","type":"git"},"_npmVersion":"11.7.0","description":"A fast and minimalistic web framework for Node.js, inspired by Express and built with TypeScript.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"4.3.6","cors":"2.8.6","glob":"13.0.1","jiti":"2.6.1","redis":"5.11.0","bcrypt":"6.0.0","dotenv":"17.2.4","prisma":"7.4.0","express":"5.2.1","winston":"^3.19.0","jsonwebtoken":"9.0.3","@prisma/client":"7.4.0","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","tsup":"8.5.1","nodemon":"3.1.11","@swc/core":"1.15.13","typescript":"5.9.3","@types/cors":"2.8.19","@types/bcrypt":"6.0.0","@types/express":"5.0.6","@types/jsonwebtoken":"9.0.10"},"_npmOperationalInternal":{"tmp":"tmp/fastpress_1.0.0_1771959068441_0.9636906748599032","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@cristianrg/fastpress","version":"1.0.4","author":{"name":"Cristian Alexander Rizo Gómez"},"license":"MIT","_id":"@cristianrg/fastpress@1.0.4","maintainers":[{"name":"cristianrg","email":"rizogomezalexander@gmail.com"}],"homepage":"https://github.com/CristianRG/fastpress#readme","bugs":{"url":"https://github.com/CristianRG/fastpress/issues"},"dist":{"shasum":"2103c9b6a08036fab70bca68666344e5261c41a3","tarball":"https://registry.npmjs.org/@cristianrg/fastpress/-/fastpress-1.0.4.tgz","fileCount":7,"integrity":"sha512-PuVbDp7CaF+66BwNuK+v9R3lctOtkBVt7e03GR5/7L7RvRi6zgyn+vJO0qGDCLdQ3OfOWKxWrCfO9u5Obgvh1w==","signatures":[{"sig":"MEQCID8fCAIrhwQVr4TbDCGPj6szpfMjLO8uzTkSmdRE3C/fAiAiKo3GOYDqRyJwwbbfOzJPlgMi5aW9vE8NTL8PrHsgtA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":121419},"main":"dist/index.cjs","type":"module","_from":"file:cristianrg-fastpress-1.0.4.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts --shims"},"_npmUser":{"name":"cristianrg","email":"rizogomezalexander@gmail.com"},"_resolved":"C:\\Users\\crist\\AppData\\Local\\Temp\\0df1a1bda72a90febd65e13cf6d33480\\cristianrg-fastpress-1.0.4.tgz","_integrity":"sha512-PuVbDp7CaF+66BwNuK+v9R3lctOtkBVt7e03GR5/7L7RvRi6zgyn+vJO0qGDCLdQ3OfOWKxWrCfO9u5Obgvh1w==","repository":{"url":"git+https://github.com/CristianRG/fastpress.git","type":"git"},"_npmVersion":"11.7.0","description":"A fast and minimalistic web framework for Node.js, inspired by Express and built with TypeScript.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"4.3.6","cors":"2.8.6","glob":"13.0.1","jiti":"2.6.1","redis":"5.11.0","bcrypt":"6.0.0","dotenv":"17.2.4","prisma":"7.4.0","express":"5.2.1","winston":"^3.19.0","jsonwebtoken":"9.0.3","@prisma/client":"7.4.0","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","tsup":"8.5.1","nodemon":"3.1.11","@swc/core":"1.15.13","typescript":"5.9.3","@types/cors":"2.8.19","@types/bcrypt":"6.0.0","@types/express":"5.0.6","@types/jsonwebtoken":"9.0.10"},"_npmOperationalInternal":{"tmp":"tmp/fastpress_1.0.4_1771960725421_0.32992595799116975","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@cristianrg/fastpress","version":"1.0.5","author":{"name":"Cristian Alexander Rizo Gómez"},"license":"MIT","_id":"@cristianrg/fastpress@1.0.5","maintainers":[{"name":"cristianrg","email":"rizogomezalexander@gmail.com"}],"homepage":"https://github.com/CristianRG/fastpress#readme","bugs":{"url":"https://github.com/CristianRG/fastpress/issues"},"dist":{"shasum":"9e99cb1c876e4165d4efd9eaae14bd8ef869d61a","tarball":"https://registry.npmjs.org/@cristianrg/fastpress/-/fastpress-1.0.5.tgz","fileCount":7,"integrity":"sha512-WYNHrGuOIA/7bPXk03TjfC5sJwOG9VLZumG6J3TUR7kbegc822BFWuWxIl2+1Yp0XFXdE9cy1K3LIci3yazZyA==","signatures":[{"sig":"MEQCIFtcqYbmnpBWhq5V7tEV/v9Bbtuqd/JHS3z1isWHtcX3AiB1zCcLrTzvW4GIGQh+UGvvyZYvAw5nT7og+ok/X7FqEg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":120731},"main":"dist/index.cjs","type":"module","_from":"file:cristianrg-fastpress-1.0.5.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"build":"tsup src/index.ts --format cjs,esm --dts --shims"},"_npmUser":{"name":"cristianrg","email":"rizogomezalexander@gmail.com"},"_resolved":"C:\\Users\\crist\\AppData\\Local\\Temp\\b524a93211b7490d19aa8d4c2478158e\\cristianrg-fastpress-1.0.5.tgz","_integrity":"sha512-WYNHrGuOIA/7bPXk03TjfC5sJwOG9VLZumG6J3TUR7kbegc822BFWuWxIl2+1Yp0XFXdE9cy1K3LIci3yazZyA==","repository":{"url":"git+https://github.com/CristianRG/fastpress.git","type":"git"},"_npmVersion":"11.7.0","description":"A fast and minimalistic web framework for Node.js, inspired by Express and built with TypeScript.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"4.3.6","cors":"2.8.6","glob":"13.0.1","jiti":"2.6.1","redis":"5.11.0","bcrypt":"6.0.0","dotenv":"17.2.4","prisma":"7.4.0","express":"5.2.1","winston":"^3.19.0","jsonwebtoken":"9.0.3","@prisma/client":"7.4.0","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","tsup":"8.5.1","nodemon":"3.1.11","@swc/core":"1.15.13","typescript":"5.9.3","@types/cors":"2.8.19","@types/bcrypt":"6.0.0","@types/express":"5.0.6","@types/jsonwebtoken":"9.0.10"},"_npmOperationalInternal":{"tmp":"tmp/fastpress_1.0.5_1772134583488_0.5704042910593496","host":"s3://npm-registry-packages-npm-production"}},"1.1.1":{"name":"@cristianrg/fastpress","version":"1.1.1","author":{"name":"Cristian Alexander Rizo Gómez"},"license":"MIT","_id":"@cristianrg/fastpress@1.1.1","maintainers":[{"name":"cristianrg","email":"rizogomezalexander@gmail.com"}],"homepage":"https://github.com/CristianRG/fastpress#readme","bugs":{"url":"https://github.com/CristianRG/fastpress/issues"},"dist":{"shasum":"a3af8eabedabe9e63acc6160a3aaf7f4eb086cae","tarball":"https://registry.npmjs.org/@cristianrg/fastpress/-/fastpress-1.1.1.tgz","fileCount":7,"integrity":"sha512-j3QBIHIltt13Ua4GUdGpFVK4q1epp21bovkGVvrcjCi4BGmo0gVcJZLS4dv+IBUqjRmYTLTKV5E0s6LzJtA6yQ==","signatures":[{"sig":"MEQCIDFv+HKri3qauZN6wQScrcSimLYxUdDaOoMgniURvhn4AiBWWr/4m6aYLmm2tioPazLe8xLdZ6vTuh+O85sPdxdv0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":153031},"main":"dist/index.cjs","type":"module","_from":"file:cristianrg-fastpress-1.1.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"build":"tsup"},"_npmUser":{"name":"cristianrg","email":"rizogomezalexander@gmail.com"},"_resolved":"C:\\Users\\crist\\AppData\\Local\\Temp\\883e2904451da64a175be6377e20ee2c\\cristianrg-fastpress-1.1.1.tgz","_integrity":"sha512-j3QBIHIltt13Ua4GUdGpFVK4q1epp21bovkGVvrcjCi4BGmo0gVcJZLS4dv+IBUqjRmYTLTKV5E0s6LzJtA6yQ==","repository":{"url":"git+https://github.com/CristianRG/fastpress.git","type":"git"},"_npmVersion":"11.7.0","description":"A fast and minimalistic web framework for Node.js, inspired by Express and built with TypeScript.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"4.3.6","cors":"2.8.6","glob":"13.0.1","jiti":"2.6.1","redis":"5.11.0","bcrypt":"6.0.0","dotenv":"17.2.4","express":"5.2.1","winston":"^3.19.0","jsonwebtoken":"9.0.3","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","tsup":"8.5.1","nodemon":"3.1.11","@swc/core":"1.15.13","typescript":"5.9.3","@types/cors":"2.8.19","@types/bcrypt":"6.0.0","@types/express":"5.0.6","@types/jsonwebtoken":"9.0.10"},"peerDependencies":{"prisma":">=5.0.0","@prisma/client":">=5.0.0"},"peerDependenciesMeta":{"prisma":{"optional":false},"@prisma/client":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/fastpress_1.1.1_1772476953198_0.7084406386386783","host":"s3://npm-registry-packages-npm-production"}},"1.1.2":{"name":"@cristianrg/fastpress","version":"1.1.2","author":{"name":"Cristian Alexander Rizo Gómez"},"license":"MIT","_id":"@cristianrg/fastpress@1.1.2","maintainers":[{"name":"cristianrg","email":"rizogomezalexander@gmail.com"}],"homepage":"https://github.com/CristianRG/fastpress#readme","bugs":{"url":"https://github.com/CristianRG/fastpress/issues"},"dist":{"shasum":"c931c519c781111cad0afcb028084f269ea9128e","tarball":"https://registry.npmjs.org/@cristianrg/fastpress/-/fastpress-1.1.2.tgz","fileCount":7,"integrity":"sha512-PJjmBu1Ebpmb5lSlGRA0jGejkY7Y/ZnK8FDF5gFe8SH0laM/nvbCSRo9ARj/oNki7O6Vrr7nkAGow2s69PaFvw==","signatures":[{"sig":"MEUCIQCoZ7bhlTZqS+hOazjNYbQitvlMA5WV5a5WvUXaAbB4YwIgUQMqfN+3mSyuQp1DHUWe6SYQo5LUuRPThxJ50xzUENg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":153090},"main":"dist/index.cjs","type":"module","_from":"file:cristianrg-fastpress-1.1.2.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"build":"tsup"},"_npmUser":{"name":"cristianrg","email":"rizogomezalexander@gmail.com"},"_resolved":"C:\\Users\\crist\\AppData\\Local\\Temp\\ceeb4de2076ebaf266e0f0271516c20a\\cristianrg-fastpress-1.1.2.tgz","_integrity":"sha512-PJjmBu1Ebpmb5lSlGRA0jGejkY7Y/ZnK8FDF5gFe8SH0laM/nvbCSRo9ARj/oNki7O6Vrr7nkAGow2s69PaFvw==","repository":{"url":"git+https://github.com/CristianRG/fastpress.git","type":"git"},"_npmVersion":"11.7.0","description":"A fast and minimalistic web framework for Node.js, inspired by Express and built with TypeScript.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"zod":"4.3.6","cors":"2.8.6","glob":"13.0.1","jiti":"2.6.1","redis":"5.11.0","bcrypt":"6.0.0","express":"5.2.1","winston":"^3.19.0","jsonwebtoken":"9.0.3","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","tsup":"8.5.1","nodemon":"3.1.11","@swc/core":"1.15.13","typescript":"5.9.3","@types/cors":"2.8.19","@types/bcrypt":"6.0.0","@types/express":"5.0.6","@types/jsonwebtoken":"9.0.10"},"peerDependencies":{"prisma":">=5.0.0","@prisma/client":">=5.0.0"},"peerDependenciesMeta":{"prisma":{"optional":false},"@prisma/client":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/fastpress_1.1.2_1772648774693_0.21788867728716843","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@cristianrg/fastpress","version":"1.2.0","author":{"name":"Cristian Alexander Rizo Gómez"},"license":"MIT","_id":"@cristianrg/fastpress@1.2.0","maintainers":[{"name":"cristianrg","email":"rizogomezalexander@gmail.com"}],"homepage":"https://github.com/CristianRG/fastpress#readme","bugs":{"url":"https://github.com/CristianRG/fastpress/issues"},"dist":{"shasum":"880494bd8fccd5d746efbab85cd7d820b98d4466","tarball":"https://registry.npmjs.org/@cristianrg/fastpress/-/fastpress-1.2.0.tgz","fileCount":7,"integrity":"sha512-2JXOEBRZdnavDCVkmHcV0T4JdueUuzDujN8XVDC61XZMj6iQGoRRSNRGuGnpIPjvqch7TjFOOJre1UJYsZWoNQ==","signatures":[{"sig":"MEQCIElKqEwqP+hTRBfUYFiNe81AUtBTOs9PLCbgFkHst62ZAiBbWz0CtMoICkSYYlnAsq6ze6e/hlVXbIuenSNAsnoQaQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":151352},"main":"dist/index.cjs","type":"module","_from":"file:cristianrg-fastpress-1.2.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"build":"tsup"},"_npmUser":{"name":"cristianrg","email":"rizogomezalexander@gmail.com"},"_resolved":"C:\\Users\\crist\\AppData\\Local\\Temp\\e37d1c15ef1079f1c19a218a002fed68\\cristianrg-fastpress-1.2.0.tgz","_integrity":"sha512-2JXOEBRZdnavDCVkmHcV0T4JdueUuzDujN8XVDC61XZMj6iQGoRRSNRGuGnpIPjvqch7TjFOOJre1UJYsZWoNQ==","repository":{"url":"git+https://github.com/CristianRG/fastpress.git","type":"git"},"_npmVersion":"11.11.0","description":"A fast and minimalistic web framework for Node.js, inspired by Express and built with TypeScript.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"cors":"2.8.6","glob":"13.0.1","jiti":"2.6.1","redis":"5.11.0","bcrypt":"6.0.0","express":"5.2.1","jsonwebtoken":"9.0.3","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","zod":"4.3.6","tsup":"8.5.1","nodemon":"3.1.11","@swc/core":"1.15.13","typescript":"5.9.3","@types/cors":"2.8.19","@types/bcrypt":"6.0.0","@types/express":"5.0.6","@types/jsonwebtoken":"9.0.10"},"peerDependencies":{"zod":">=3.0.0","prisma":">=5.0.0","@prisma/client":">=5.0.0"},"peerDependenciesMeta":{"zod":{"optional":false},"prisma":{"optional":false},"@prisma/client":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/fastpress_1.2.0_1773334294148_0.012409735597440852","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@cristianrg/fastpress","version":"1.3.0","author":{"name":"Cristian Alexander Rizo Gómez"},"license":"MIT","_id":"@cristianrg/fastpress@1.3.0","maintainers":[{"name":"cristianrg","email":"rizogomezalexander@gmail.com"}],"homepage":"https://github.com/CristianRG/fastpress#readme","bugs":{"url":"https://github.com/CristianRG/fastpress/issues"},"dist":{"shasum":"f19feddc5fd1bb5f327120f7bbac72bb1eb2d0f0","tarball":"https://registry.npmjs.org/@cristianrg/fastpress/-/fastpress-1.3.0.tgz","fileCount":7,"integrity":"sha512-FZBUl6NMo8S7oRhZQ6daQMEYMessHPkfk922ki8y+urN/VCWXW/Z+U1bwyoF2WSl/kWh/rMR9+v74G+h4WSTYw==","signatures":[{"sig":"MEYCIQCU0YVRqxKrdzYA6Vq0pD0JcqBpMcbaRRG21ZiO87OFsQIhAIpjLLuQqnwNqxxHszyIymCNXoSG/JQvwUejRWt2Ad5t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":153468},"main":"dist/index.cjs","type":"module","_from":"file:cristianrg-fastpress-1.3.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"scripts":{"build":"tsup"},"_npmUser":{"name":"cristianrg","email":"rizogomezalexander@gmail.com"},"_resolved":"C:\\Users\\crist\\AppData\\Local\\Temp\\0bbcc5699a90ec8e1e13e3019f7b7aed\\cristianrg-fastpress-1.3.0.tgz","_integrity":"sha512-FZBUl6NMo8S7oRhZQ6daQMEYMessHPkfk922ki8y+urN/VCWXW/Z+U1bwyoF2WSl/kWh/rMR9+v74G+h4WSTYw==","repository":{"url":"git+https://github.com/CristianRG/fastpress.git","type":"git"},"_npmVersion":"11.11.0","description":"A fast and minimalistic web framework for Node.js, inspired by Express and built with TypeScript.","directories":{},"_nodeVersion":"22.17.0","dependencies":{"cors":"2.8.6","glob":"13.0.1","jiti":"2.6.1","redis":"5.11.0","bcrypt":"6.0.0","express":"5.2.1","jsonwebtoken":"9.0.3","@types/express":"5.0.6","reflect-metadata":"0.2.2"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"4.19.2","zod":"4.3.6","tsup":"8.5.1","nodemon":"3.1.11","@swc/core":"1.15.13","typescript":"5.9.3","@types/cors":"2.8.19","@types/bcrypt":"6.0.0","@types/jsonwebtoken":"9.0.10"},"peerDependencies":{"zod":">=3.0.0","prisma":">=5.0.0","@prisma/client":">=5.0.0"},"peerDependenciesMeta":{"zod":{"optional":false},"prisma":{"optional":false},"@prisma/client":{"optional":false}},"_npmOperationalInternal":{"tmp":"tmp/fastpress_1.3.0_1773506115894_0.012821437323488283","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@cristianrg/fastpress","version":"1.3.1","types":"./dist/index.d.ts","main":"dist/index.cjs","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"repository":{"type":"git","url":"git+https://github.com/CristianRG/fastpress.git"},"author":{"name":"Cristian Alexander Rizo Gómez"},"description":"A fast and minimalistic web framework for Node.js, inspired by Express and built with TypeScript.","license":"MIT","type":"module","devDependencies":{"@swc/core":"1.15.13","@types/bcrypt":"6.0.0","@types/cors":"2.8.19","@types/jsonwebtoken":"9.0.10","nodemon":"3.1.11","tsup":"8.5.1","tsx":"4.19.2","typescript":"5.9.3","zod":"4.3.6"},"peerDependencies":{"@prisma/client":">=5.0.0","prisma":">=5.0.0","zod":">=3.0.0"},"peerDependenciesMeta":{"@prisma/client":{"optional":false},"prisma":{"optional":false},"zod":{"optional":false}},"dependencies":{"@types/express":"5.0.6","bcrypt":"6.0.0","cors":"2.8.6","express":"5.2.1","glob":"13.0.1","jiti":"2.6.1","jsonwebtoken":"9.0.3","redis":"5.11.0","reflect-metadata":"0.2.2"},"scripts":{"build":"tsup"},"_id":"@cristianrg/fastpress@1.3.1","bugs":{"url":"https://github.com/CristianRG/fastpress/issues"},"homepage":"https://github.com/CristianRG/fastpress#readme","_integrity":"sha512-FKIjFOz5l06ImUTUC+ZzzGHNDFaxPH3M48LQNhfkOfni17A5LbQlu3hMwgnIqKdQnfERl499NRnpiYf0vMEgnQ==","_resolved":"C:\\Users\\crist\\AppData\\Local\\Temp\\180fb253cfce8d697567a81a71a6b97d\\cristianrg-fastpress-1.3.1.tgz","_from":"file:cristianrg-fastpress-1.3.1.tgz","_nodeVersion":"22.17.0","_npmVersion":"11.11.0","dist":{"integrity":"sha512-FKIjFOz5l06ImUTUC+ZzzGHNDFaxPH3M48LQNhfkOfni17A5LbQlu3hMwgnIqKdQnfERl499NRnpiYf0vMEgnQ==","shasum":"84f8c27ac9cde1ddfbe682c90953adc37d76f743","tarball":"https://registry.npmjs.org/@cristianrg/fastpress/-/fastpress-1.3.1.tgz","fileCount":7,"unpackedSize":153700,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIG8bkANu5dQOWf9zienmdlsixQ6MYyfeghskqV4vKbEqAiEAmbpewIWjF3pdTQxfURODEmGjlYqQRuv2UonwHwFSilY="}]},"_npmUser":{"name":"cristianrg","email":"rizogomezalexander@gmail.com"},"directories":{},"maintainers":[{"name":"cristianrg","email":"rizogomezalexander@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/fastpress_1.3.1_1773762868729_0.11343620443412328"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-24T18:51:08.310Z","modified":"2026-03-17T15:54:28.987Z","1.0.1":"2026-02-21T18:57:44.694Z","1.0.2":"2026-02-21T19:27:55.663Z","1.0.0":"2026-02-24T18:51:08.580Z","1.0.4":"2026-02-24T19:18:45.569Z","1.0.5":"2026-02-26T19:36:23.649Z","1.1.1":"2026-03-02T18:42:33.388Z","1.1.2":"2026-03-04T18:26:14.876Z","1.2.0":"2026-03-12T16:51:34.289Z","1.3.0":"2026-03-14T16:35:16.038Z","1.3.1":"2026-03-17T15:54:28.881Z"},"bugs":{"url":"https://github.com/CristianRG/fastpress/issues"},"author":{"name":"Cristian Alexander Rizo Gómez"},"license":"MIT","homepage":"https://github.com/CristianRG/fastpress#readme","repository":{"type":"git","url":"git+https://github.com/CristianRG/fastpress.git"},"description":"A fast and minimalistic web framework for Node.js, inspired by Express and built with TypeScript.","maintainers":[{"name":"cristianrg","email":"rizogomezalexander@gmail.com"}],"readme":"# Fastpress\r\n\r\nFastpress is an open-source project designed to empower developers to build backend applications easily. It features a clean, modern syntax inspired by major frameworks like SpringBoot, bringing that familiar structure to Node.js with TypeScript.\r\n\r\n> **TypeScript Required:** Fastpress is a TypeScript-first framework that leverages decorators and advanced TypeScript features. Your application must be written in TypeScript.\r\n\r\n## Features\r\n\r\n- **Integrated Daemon**: Includes a development mode that monitors .ts files. The server restarts automatically upon changes, eliminating the need for manual restarts.\r\n\r\n- **Automatic Controller Discovery**: No more manual registration. Your controllers (entry points) are automatically detected and registered by the system.\r\n\r\n- **Decorator-based Architecture**: Use decorators to register new controllers, define HTTP methods, apply middlewares, pipes, and more.\r\n\r\n- **Prisma Integration**: Powered by Prisma ORM for maximum flexibility and type safety. It is currently the primary database manager for the framework.\r\n\r\n- **Base Controllers**: Jumpstart your CRUD operations by extending a **Base** class. This provides out-of-the-box functionality to get all records, find by ID, create, update, and delete without writing boilerplate code.\r\n\r\n- **Hooks**: Events that are executed before and after a specific method is called. They allow data transformations, integration of elements into the request, and more.\r\n\r\n- **Centralized Configuration**: Allows you to change the behavior of certain elements in the application, such as the Prisma adapter or the logging system, through a centralized configuration file.\r\n\r\n- **Authentication Module**: Includes a ready-to-use authentication controller and service with JWT-based authentication (access tokens and refresh tokens). Simply import and use it in your project.\r\n\r\n\r\n## Usage Example\r\n\r\nFastpress uses decorators and Zod schemas to keep your code clean and validated:\r\n\r\n```typescript\r\nimport { z, Controller, Get, Post, Body, Query, User, Req, UseMiddleware, Auth, Sanitizer, ServerResponse, ParseIntPipe, ZodValidationPipe, Context } from '@cristianrg/fastpress';\r\n\r\nconst CreateUserSchema = z.object({\r\n    name: z.string().min(3).max(50),\r\n    email: z.string().email(),\r\n    age: z.number().int().min(18).optional()\r\n});\r\n\r\n@UseMiddleware(Auth, Sanitizer)\r\n@Controller(\"/users\")\r\nclass UserController {\r\n\r\n    @Get(\"/\")\r\n    getAll(\r\n        @Query(\"page\", ParseIntPipe) page: number = 1,\r\n        @Query(\"limit\", ParseIntPipe) limit: number = 10\r\n    ) {\r\n        return new ServerResponse(200, \"Users list\", {\r\n            users: [], \r\n            pagination: { page, limit, total: 0 }\r\n        });\r\n    }\r\n\r\n    @Post(\"/\")\r\n    create(\r\n        @Body(undefined, new ZodValidationPipe(CreateUserSchema)) data: z.infer<typeof CreateUserSchema>,\r\n        @User() user: UserModel\r\n    ) {\r\n        return new ServerResponse(201, \"User created\", { data, createdBy: user });\r\n    }\r\n\r\n    @Get(\"/custom\")\r\n    customHandler(\r\n        @Req() req: Context.Request  // Access to Express Request with full typing\r\n    ) {\r\n        const userAgent = req.headers['user-agent'];\r\n        return new ServerResponse(200, \"Custom handler\", { userAgent });\r\n    }\r\n}\r\n\r\nexport default UserController;\r\n```\r\n\r\n## Installation and Setup\r\n\r\nFollow these steps to get your environment ready:\r\n\r\n### 1) Initialize a New Project\r\n\r\nCreate your project folder and navigate to it:\r\n\r\n```bash\r\nmkdir fastpress-app\r\ncd fastpress-app\r\n```\r\n\r\nInitialize your Node.js project:\r\n\r\n```bash\r\npnpm init\r\n```\r\n\r\nor if you're using npm:\r\n\r\n```bash\r\nnpm init -y\r\n```\r\n\r\n### 2) Install Dependencies\r\n\r\nFastpress requires **TypeScript** and **Zod** to work properly. Install the framework along with required dependencies:\r\n\r\n```bash\r\npnpm add @cristianrg/fastpress @prisma/client zod\r\npnpm add -D prisma typescript @types/node\r\n```\r\n\r\nor using npm:\r\n\r\n```bash\r\nnpm i @cristianrg/fastpress @prisma/client zod\r\nnpm i -D prisma typescript @types/node\r\n```\r\n\r\n> **Note:** Zod is required as a peer dependency for validation with `ZodValidationPipe`. Prisma is required for database operations.\r\n\r\n> **Important:** Fastpress is a TypeScript-first framework. Your controllers must be written in TypeScript (`.ts` files) due to the use of decorators and other TypeScript features.\r\n\r\n**Optional - For development with auto-reload:**\r\n\r\n```bash\r\npnpm add -D nodemon\r\n```\r\n\r\nor using npm:\r\n\r\n```bash\r\nnpm i -D nodemon\r\n```\r\n\r\n### 3) TypeScript Configuration\r\n\r\nCreate a `tsconfig.json` file in your project root with the following minimum configuration:\r\n\r\n```json\r\n{\r\n  \"compilerOptions\": {\r\n    \"target\": \"ES2022\",\r\n    \"module\": \"ESNext\",\r\n    \"moduleResolution\": \"node\",\r\n    \"lib\": [\"ES2022\"],\r\n    \"outDir\": \"./dist\",\r\n    \"rootDir\": \"./src\",\r\n    \"strict\": true,\r\n    \"esModuleInterop\": true,\r\n    \"skipLibCheck\": true,\r\n    \"forceConsistentCasingInFileNames\": true,\r\n    \"resolveJsonModule\": true,\r\n    \"experimentalDecorators\": true,\r\n    \"emitDecoratorMetadata\": true,\r\n  },\r\n  \"include\": [\"src/**/*\"],\r\n  \"exclude\": [\"node_modules\", \"dist\"]\r\n}\r\n```\r\n\r\n> **Note:** The `experimentalDecorators` and `emitDecoratorMetadata` options are **required** for the framework to work correctly.\r\n\r\n### 4) Package.json Scripts\r\n\r\nAdd the following to your `package.json`:\r\n\r\n```json\r\n{\r\n  \"name\": \"my-fastpress-app\",\r\n  \"version\": \"1.0.0\",\r\n  \"type\": \"module\",\r\n  \"main\": \"dist/index.js\",\r\n  \"scripts\": {\r\n    \"build\": \"tsc\",\r\n    \"start\": \"node dist/index.js\",\r\n    \"dev\": \"nodemon --watch src --ext ts --exec \\\"npm run build && npm start\\\"\"\r\n  },\r\n  \"dependencies\": {\r\n    \"@cristianrg/fastpress\": \"^1.1.1\",\r\n    \"@prisma/client\": \">=5.0.0\",\r\n    \"zod\": \">=3.0.0\"\r\n  },\r\n  \"devDependencies\": {\r\n    \"@types/node\": \"^25.3.3\",\r\n    \"prisma\": \">=5.0.0\",\r\n    \"typescript\": \"^5.9.3\",\r\n    \"nodemon\": \"^3.1.11\"\r\n  }\r\n}\r\n```\r\n\r\n**Script descriptions:**\r\n- `build`: Compiles TypeScript to JavaScript\r\n- `start`: Runs the compiled application\r\n- `dev`: Watches for changes and automatically rebuilds (requires nodemon)\r\n\r\n> **Important:** The `\"type\": \"module\"` field is required for ESM support.\r\n\r\n### 5) Prisma Configuration\r\n\r\nBefore you begin, you need to initialize Prisma and configure a few settings.\r\n\r\n#### Initialize Prisma\r\n\r\nRun the following command to set up Prisma in your project:\r\n\r\n```bash\r\npnpx prisma init\r\n```\r\n\r\nor using npm:\r\n\r\n```bash\r\nnpx prisma init\r\n```\r\n\r\nThis will create a `prisma` folder containing your schema file and a `prisma.config.ts` file. If you don't have a `.env` file yet, one will be created with a `DATABASE_URL` variable pointing to your database connection.\r\n\r\n#### Configure the Prisma Client Generator\r\n\r\nNext, you need to configure the generator in your schema to use `prisma-client-js` and remove the `output` line. This ensures that generated files are not saved in your source code folder.\r\n\r\nYour generator configuration should look like this:\r\n\r\n```prisma\r\ngenerator client {\r\n  provider = \"prisma-client-js\"\r\n}\r\n\r\ndatasource db {\r\n  provider = \"sqlite\" // Set your database provider (e.g., \"postgresql\", \"mysql\", \"sqlite\", etc.)\r\n}\r\n```\r\n\r\n#### Select Your Database Provider\r\n\r\nChoose your database provider in the `datasource db` block. By default, Prisma sets it to `postgresql`, but you can change it to any provider supported by Prisma (e.g., `mysql`, `sqlite`, `sqlserver`, `mongodb`, etc.).\r\n\r\n#### Configure Database Connection\r\n\r\nMake sure the `DATABASE_URL` variable is defined in your `.env` file with the correct connection string for your database.\r\n\r\nFor example (SQLite):\r\n\r\n```bash\r\nDATABASE_URL=\"file:./dev.db\" # This URL is for SQLite providers\r\n```\r\n\r\n#### Define Required Models\r\n\r\nThe framework requires certain models to function properly. Make sure to include them in your `prisma/schema.prisma` file. You can extend the schema and customize these models to fit your needs, but you must maintain the default properties:\r\n\r\n```prisma\r\nmodel User {\r\n  id    String  @id @default(uuid())\r\n  name  String\r\n  email String  @unique\r\n  password String\r\n\r\n  sessions Session[]\r\n}\r\n\r\nmodel Session {\r\n  id        String  @id @default(uuid())\r\n  userId    String\r\n  token     String   @unique\r\n  createdAt DateTime @default(now())\r\n  expiresAt DateTime\r\n\r\n  user User @relation(fields: [userId], references: [id])\r\n}\r\n```\r\n\r\n#### Install Database Adapter\r\n\r\nInstall the specific adapter for your chosen database provider. For more details, refer to the official Prisma [documentation](https://www.prisma.io/docs/orm/core-concepts/supported-databases/database-drivers).\r\n\r\n#### Configure Fastpress\r\n\r\nCreate a `fastpress.config.ts` file in the project root and configure the database adapter and other options:\r\n\r\n> **Note** If you do not have **dotenv** installed, you can do so with the following command: `npm i dotenv`.\r\n\r\n```typescript\r\nimport { defineFastPressConfig } from '@cristianrg/fastpress';\r\nimport { PrismaBetterSqlite3 } from '@prisma/adapter-better-sqlite3';\r\nimport { config } from \"dotenv\";\r\nconfig();\r\n\r\nexport default defineFastPressConfig({\r\n    server: {\r\n        port: 3000,\r\n        env: process.env.NODE_ENV || 'development',\r\n        controllersPath: process.env.NODE_ENV === 'production' ? 'dist' : 'src',\r\n        prismaAdapter: new PrismaBetterSqlite3({ url: process.env.DATABASE_URL || 'file:./dev.db' }),\r\n        allowedOrigins: ['http://localhost:3000']\r\n    },\r\n    jwt: {\r\n        secret: process.env.JWT_SECRET,\r\n        algorithm: 'HS256',\r\n        jwt_exp: 15 * 60 * 1000, // 15 minutes\r\n        refresh_exp: 7 * 24 * 60 * 60 * 1000 // 7 days\r\n    }\r\n});\r\n```\r\n\r\n**Configuration Options:**\r\n\r\n- `server.port`: Port where the server will run (default: 3000)\r\n- `server.env`: Environment mode (default: 'development')\r\n- `server.controllersPath`: Directory where controllers are located. Use `'src'` for development (TypeScript files) and `'dist'` for production (compiled JavaScript files). Controllers must be inside a `modules/` folder within this path. Default: `'src'`\r\n- `server.prismaAdapter`: Prisma database adapter (required)\r\n- `server.allowedOrigins`: CORS allowed origins\r\n- `server.logger`: Custom logger instance (optional)\r\n- `jwt.secret`: JWT secret key\r\n- `jwt.algorithm`: JWT algorithm ('HS256' or 'RS256')\r\n- `jwt.jwt_exp`: Access token expiration in milliseconds\r\n- `jwt.refresh_exp`: Refresh token expiration in milliseconds\r\n\r\n> **Important:** Controllers must be placed inside a `modules/` folder within your `controllersPath`. For example: `src/modules/users/user.controller.ts` or `dist/modules/users/user.controller.js`\r\n\r\n#### Synchronize Database and Generate Types\r\n\r\nFinally, synchronize your Prisma schema with your database and generate the types you'll use in your application. Run the following commands to complete the Prisma setup:\r\n\r\n```bash\r\npnpx prisma db push\r\npnpx prisma generate\r\n```\r\n\r\nor using npm:\r\n\r\n```bash\r\nnpx prisma db push\r\nnpx prisma generate\r\n```\r\n\r\nYour Fastpress project is now ready to use! You can start creating controllers and building your backend application.\r\n\r\n### 6) Project Structure\r\n\r\nYour project structure should look like this:\r\n\r\n```\r\nmy-fastpress-app/\r\n├── src/\r\n│   ├── modules/\r\n│   │   └── users/\r\n│   │       └── user.controller.ts\r\n│   └── index.ts\r\n├── prisma/\r\n│   └── schema.prisma\r\n├── .env\r\n├── fastpress.config.ts\r\n├── prisma.config.ts\r\n├── tsconfig.json\r\n└── package.json\r\n```\r\n\r\nCreate your main entry file `src/index.ts`:\r\n\r\n```typescript\r\nimport { createServer } from '@cristianrg/fastpress';\r\n\r\nawait createServer();\r\n```\r\n\r\nThen create your first controller in `src/modules/users/user.controller.ts`:\r\n\r\n```typescript\r\nimport { Controller, Get, ServerResponse } from '@cristianrg/fastpress';\r\n\r\n@Controller(\"/users\")\r\nclass UserController {\r\n    @Get(\"/\")\r\n    getAll() {\r\n        return new ServerResponse(200, \"Users list\", { users: [] });\r\n    }\r\n}\r\n\r\nexport default UserController;\r\n```\r\n\r\n### 7) Running Your Application\r\n\r\n**Development mode (with auto-reload):**\r\n\r\n```bash\r\nnpm run dev\r\n```\r\n\r\n**Production mode:**\r\n\r\n```bash\r\nnpm run build\r\nnpm start\r\n```\r\n\r\n### 8) Using Built-in Authentication (Optional)\r\n\r\nFastpress includes a ready-to-use authentication module with JWT support. To use it, you need to explicitly import and register it in your application:\r\n\r\n```typescript\r\nimport { createServer, AuthController } from '@cristianrg/fastpress';\r\n\r\n// The AuthController will be automatically discovered if placed in your modules folder,\r\n// or you can import it directly from the package\r\nawait createServer({\r\n    controllers: [AuthController], // Explicitly register if not using file-based discovery\r\n});\r\n```\r\n\r\nThe `AuthController` provides the following endpoints:\r\n- `POST /auth/login` - User login with email and password\r\n- `POST /auth/signup` - User registration\r\n- `GET /auth/refresh` - Refresh access token using refresh token\r\n\r\nYou can also use the `AuthService` and auth schemas:\r\n\r\n```typescript\r\nimport { AuthService, AuthController } from '@cristianrg/fastpress';\r\n```\r\n\r\n**Note:** Controllers placed in `src/modules/` (or `dist/modules/` in production) with the pattern `*.controller.ts` are automatically discovered and registered. The framework searches recursively inside the `modules/` folder, so you can organize your controllers in subdirectories (e.g., `src/modules/users/user.controller.ts`, `src/modules/auth/auth.controller.ts`). You don't need to manually register them unless you want to use controllers from the framework package (like `AuthController`).\r\n\r\n## Roadmap\r\nFastpress is in its early stages. Future milestones include:\r\n\r\n- **Automated Prisma Setup**: A CLI-guided setup to install drivers automatically based on the selected database provider.\r\n\r\n- **CLI Scaffolding**: Commands like `npx fastpress generate` to automatically create controllers in the modules folder based on your database models (including flags to overwrite or skip files).\r\n\r\n- **Official CLI**: An `npx create fastpress` command to bootstrap new projects instantly.\r\n\r\n- **Dependency Abstraction**: Decouple the core to allow alternatives to Prisma or custom logging libraries.\r\n\r\n- **Testing Suite**: Built-in utilities to ensure application behavior remains consistent.\r\n\r\n## Motivation\r\n\r\nInitially, it was just a simple server using Express syntax, as it was intended to be an embedded server within a desktop application using Electron. However, with the constant implementation of new modules, the application grew to a point where it seemed unsustainable.\r\n\r\nThen Fastpress was born. Using modern syntax similar to frameworks like SpringBoot, it became possible to organize each new module in a simpler way, as they don't need to be manually imported into a file where the main instance is located along with other modules. Additionally, it features clean and easy-to-understand syntax.\r\n\r\nAlthough it's a small project that I maintain alone, I hope it will be useful to anyone interested, and that both you and I can learn a lot by developing this project. Even better, I would love to see what new features you can implement. \r\n\r\n## Useful Resources\r\n- [Prisma Documentation](https://www.prisma.io/docs)\r\n- [Database Drivers Guide](https://www.prisma.io/docs/orm/overview/databases)\r\n\r\n## License\r\n>This project is licensed under the MIT License.\r\n\r\n## Author\r\nCreated with 💙 by CristianRG","readmeFilename":"README.md"}