{"_id":"f-coder-server","_rev":"2-4c66414d66295dfb20cee1a6218f71a3","name":"f-coder-server","dist-tags":{"latest":"0.0.3"},"versions":{"0.0.1":{"name":"f-coder-server","version":"0.0.1","description":"Helper classes and functions on top of express","author":{"name":"Fabrizio Pauselli"},"main":"src/index.mjs","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"license":"ISC","keywords":["coder","express"],"dependencies":{"express":"^4.18.2","zod":"^3.21.4"},"_id":"f-coder-server@0.0.1","_nodeVersion":"19.9.0","_npmVersion":"9.6.0","dist":{"integrity":"sha512-rKReEDteA2obN+wm5iIcRM/dFX2N63gH1d/GqPRqX1CqW4KgBwRXvd7wWvlYRPqrXFD3iJfoqOQ8ZPO7rsfd1w==","shasum":"1a8596d1ed92620326f61cf3ca15a3e8b0437809","tarball":"https://registry.npmjs.org/f-coder-server/-/f-coder-server-0.0.1.tgz","fileCount":9,"unpackedSize":8395,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD3Anra/T44aSf4tnsiH5YGSlyR3kqcHI2umqL1n8AbTAIhALg0p85PeQBryf/W89+C4iYPG/cBT8ySf8qnmFzhJYq6"}]},"_npmUser":{"name":"fpauselli","email":"fabriziopauselli@gmail.com"},"directories":{},"maintainers":[{"name":"fpauselli","email":"fabriziopauselli@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/f-coder-server_0.0.1_1685490826415_0.4742940073527582"},"_hasShrinkwrap":false},"0.0.2":{"name":"f-coder-server","version":"0.0.2","description":"Helper classes and functions on top of express","author":{"name":"Fabrizio Pauselli"},"main":"src/index.mjs","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"license":"ISC","keywords":["coder","express"],"dependencies":{"express":"^4.18.2","zod":"^3.21.4"},"_id":"f-coder-server@0.0.2","_nodeVersion":"19.9.0","_npmVersion":"9.6.0","dist":{"integrity":"sha512-lenShsl37xux6VfNVpRniQpJ/3BQ4ndWD43S2C/tq2fTULFnVuW2Qv8+9OapUTS9A3G8w7fX2aYQQThYMWw12g==","shasum":"27f74daa425f49574b6bbbd88f894118aac6940a","tarball":"https://registry.npmjs.org/f-coder-server/-/f-coder-server-0.0.2.tgz","fileCount":9,"unpackedSize":9927,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGLBJv7g+3heCCc8F9p7YYCjomy7NGcfX2jUrvcgA7u+AiBpDPkfJz5+tSvqzbcHwrtzND3eZ0hCPiCpNVexMCdxeA=="}]},"_npmUser":{"name":"fpauselli","email":"fabriziopauselli@gmail.com"},"directories":{},"maintainers":[{"name":"fpauselli","email":"fabriziopauselli@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/f-coder-server_0.0.2_1685490902940_0.21748488639789243"},"_hasShrinkwrap":false},"0.0.3":{"name":"f-coder-server","version":"0.0.3","description":"Helper classes and functions on top of express","author":{"name":"Fabrizio Pauselli"},"main":"src/index.mjs","types":"types/index.d.mts","scripts":{"test":"echo \"Error: no test specified\" && exit 1"},"license":"ISC","keywords":["coder","express"],"dependencies":{"express":"^4.18.2","zod":"^3.21.4"},"devDependencies":{"@types/express":"^4.17.17"},"_id":"f-coder-server@0.0.3","_nodeVersion":"19.9.0","_npmVersion":"9.6.0","dist":{"integrity":"sha512-rr+pycHokysj/3zPAyd6wUzenJ/6lu3VxFPy4WwucBL5DyHYGKoICiPF/kN/GTqqpo2yY1RoJ99q/3akWEfOnQ==","shasum":"e53d974bfc40d6c62c3f56efb743548dd8fb8d89","tarball":"https://registry.npmjs.org/f-coder-server/-/f-coder-server-0.0.3.tgz","fileCount":16,"unpackedSize":17371,"signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIBc5L7uE3ceTnjZWjVlLeATkf3WIPeTeh1SJFdN+LwfbAiEAzj09/FLOM6UADf72+cqVKTvKdRaeeEWo3aeOvipyw5U="}]},"_npmUser":{"name":"fpauselli","email":"fabriziopauselli@gmail.com"},"directories":{},"maintainers":[{"name":"fpauselli","email":"fabriziopauselli@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/f-coder-server_0.0.3_1685491266611_0.7990643030190858"},"_hasShrinkwrap":false}},"time":{"created":"2023-05-30T23:53:46.414Z","0.0.1":"2023-05-30T23:53:46.603Z","modified":"2023-05-31T00:01:06.975Z","0.0.2":"2023-05-30T23:55:03.098Z","0.0.3":"2023-05-31T00:01:06.853Z"},"maintainers":[{"name":"fpauselli","email":"fabriziopauselli@gmail.com"}],"description":"Helper classes and functions on top of express","keywords":["coder","express"],"author":{"name":"Fabrizio Pauselli"},"license":"ISC","readme":"# Coder Server\n\nThis package is only some utility classes on top of express and zod to develop a small express server with validations with zod\n\n## Usage example\n\n```javascript\nimport { Server, Router } from 'coder-server';\nconst userRouter = new Router('/user');\nuserRouter\n  .get(\n    '/',\n    (req, res) => {\n      res.okResponse('this generates a 200 Http response');\n    },\n    (req, res, next) => {\n      console.log('this is a middleware');\n      next();\n    },\n  )\n  .get('/:id', (req, res) => {\n    res.userErrorResponse('this generates a 400 error response');\n  });\n\nconst server = new Server();\n\nserver.setRouter(userRouter);\n\nserver.start(3000);\n```\n\n## Validation Middlewares\n\nYou can also use validation middlewares\n\n```javascript\nimport { z } from 'zod';\nimport { Router, validateBody, validateParams, validator } from 'coder-server';\nconst UserDto = z.object({\n  name: z.string().min(3).max(255),\n  email: z.string().email(),\n  role: z.enum(['admin', 'user']),\n});\nconst Id = z.object({\n  id: z.string().uuid(),\n});\n\nconst userRouter = new Router('/user');\nuserRouter.put(\n  '/:id',\n  (req, res) => {\n    res.okResponse('everything went ok');\n  },\n  validateParams(validator(Id)),\n  validateBody(validator(UserDto)),\n);\n```\n\n## Setting several routes\n\nThere are two forms of setting routes on the server level:\n\n```javascript\nserver.setRouter(userRouter).setRouter(catsRoute);\n\n//or\n\nserver.setRouters([userRouter, catsRoute]);\n```\n\nIt is possible to set sub routes on the router level:\n\n```javascript\nconst userRouter = new Router('/user');\n\nuserRouter.subRoute(addressRouter);\n```\n","readmeFilename":"README.md"}