{"_id":"@abcar-parts/common","_rev":"6-c8c6d0888944534a103c4cb17be37546","name":"@abcar-parts/common","dist-tags":{"latest":"1.0.35"},"versions":{"1.0.29":{"name":"@abcar-parts/common","version":"1.0.29","keywords":[],"author":"","license":"ISC","_id":"@abcar-parts/common@1.0.29","maintainers":[{"name":"baraajr11","email":"ahmedbaraa009@gmail.com"}],"dist":{"shasum":"09e07267188fbf31f9341bab487f05112bf3d086","tarball":"https://registry.npmjs.org/@abcar-parts/common/-/common-1.0.29.tgz","fileCount":64,"integrity":"sha512-UwLoR305Oxw+gppMruC/q9pQqnZS1YNYYF8N5Xd025NgzAdjujaokwAm7F8sbYtvqblBTAjIfumBsF6HNaV3bQ==","signatures":[{"sig":"MEYCIQDTWf60xhYwKc7H3HEwwSONSH7Z7Zhtqv3dPKYoVNP7QgIhANsLWOfnDOz0UDx626kMA5TsWslGHirEyj0N2Z2D5QYU","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26058},"main":"./build/index.js","types":"./build/index.d.ts","gitHead":"fea0dc0ce2687b0107d00616a4dafd1a81b6f870","scripts":{"pub":"tsc && git add . && git commit -m \"updates\" && npm version patch && npm publish","build":"tsc","clean":"del-cli ./build/*"},"_npmUser":{"name":"baraajr11","email":"ahmedbaraa009@gmail.com"},"_npmVersion":"11.6.2","description":"A shared npm package containing reusable logic, classes, and middlewares used across multiple microservices in a Node.js-based microservices architecture.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"express":"^5.1.0","kafkajs":"^2.2.4","jsonwebtoken":"^9.0.2","@types/express":"^5.0.3","cookie-session":"^2.1.0","express-validator":"^7.2.1","@types/jsonwebtoken":"^9.0.10","node-nats-streaming":"^0.3.2","@types/cookie-session":"^2.0.49"},"_hasShrinkwrap":false,"devDependencies":{"del-cli":"^6.0.0","typescript":"^5.8.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/common_1.0.29_1765491213167_0.2568023642693291","host":"s3://npm-registry-packages-npm-production"}},"1.0.30":{"name":"@abcar-parts/common","version":"1.0.30","keywords":[],"author":"","license":"ISC","_id":"@abcar-parts/common@1.0.30","maintainers":[{"name":"baraajr11","email":"ahmedbaraa009@gmail.com"}],"dist":{"shasum":"69a1a710a0ae62f2d0ba7cbdc7c0e177b01ea4e7","tarball":"https://registry.npmjs.org/@abcar-parts/common/-/common-1.0.30.tgz","fileCount":68,"integrity":"sha512-spDyT8vVUe5knzemqS2taksNW9Ud7Yse5InwqmKXSxvpeN1oa4MhEGcOA6+uXJdrzSSQX7KVUBDSHfrhBbi89Q==","signatures":[{"sig":"MEQCIC9/602XP87vum6n4ebNLYf4XbxQcBlnUbZoIgufguwZAiBKnw2XCRZnwQU4MYB/U2kkg80UokOM0URJUSQzrAp3uw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27011},"main":"./build/index.js","types":"./build/index.d.ts","gitHead":"efae905d32f4ccc25e91f714ff727310fb773580","scripts":{"pub":"tsc && git add . && git commit -m \"updates\" && npm version patch && npm publish","build":"tsc","clean":"del-cli ./build/*"},"_npmUser":{"name":"baraajr11","email":"ahmedbaraa009@gmail.com"},"_npmVersion":"11.6.2","description":"A shared npm package containing reusable logic, classes, and middlewares used across multiple microservices in a Node.js-based microservices architecture.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"express":"^5.1.0","kafkajs":"^2.2.4","jsonwebtoken":"^9.0.2","@types/express":"^5.0.3","cookie-session":"^2.1.0","express-validator":"^7.2.1","@types/jsonwebtoken":"^9.0.10","node-nats-streaming":"^0.3.2","@types/cookie-session":"^2.0.49"},"_hasShrinkwrap":false,"devDependencies":{"del-cli":"^6.0.0","typescript":"^5.8.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/common_1.0.30_1765539663653_0.8330839087990036","host":"s3://npm-registry-packages-npm-production"}},"1.0.31":{"name":"@abcar-parts/common","version":"1.0.31","keywords":[],"author":"","license":"ISC","_id":"@abcar-parts/common@1.0.31","maintainers":[{"name":"baraajr11","email":"ahmedbaraa009@gmail.com"}],"dist":{"shasum":"7571b6e0ff304ddd186a14c4fe003c4b2ca24853","tarball":"https://registry.npmjs.org/@abcar-parts/common/-/common-1.0.31.tgz","fileCount":68,"integrity":"sha512-hoCSuWNwiAZ774ohr/B6uIo+DVZj3WG09wuLPDCE0Kqt1gO/NRrhF/OQ8E7l3sp8MWew7/rDPzOic964HiqBWA==","signatures":[{"sig":"MEQCIFDbc+dTvWeDfba9GA4T4ensRPEaE8dofqVL8c10cGSMAiAJUOX8dmwrbLCI3E2pX4GtTxrMnKYugJdGmmKyryqsng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27109},"main":"./build/index.js","types":"./build/index.d.ts","gitHead":"106ea144f425dad13c27edf41ddf86c6e3c56d89","scripts":{"pub":"tsc && git add . && git commit -m \"updates\" && npm version patch && npm publish","build":"tsc","clean":"del-cli ./build/*"},"_npmUser":{"name":"baraajr11","email":"ahmedbaraa009@gmail.com"},"_npmVersion":"11.6.2","description":"A shared npm package containing reusable logic, classes, and middlewares used across multiple microservices in a Node.js-based microservices architecture.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"express":"^5.1.0","kafkajs":"^2.2.4","jsonwebtoken":"^9.0.2","@types/express":"^5.0.3","cookie-session":"^2.1.0","express-validator":"^7.2.1","@types/jsonwebtoken":"^9.0.10","node-nats-streaming":"^0.3.2","@types/cookie-session":"^2.0.49"},"_hasShrinkwrap":false,"devDependencies":{"del-cli":"^6.0.0","typescript":"^5.8.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/common_1.0.31_1765540203904_0.6326340063103792","host":"s3://npm-registry-packages-npm-production"}},"1.0.33":{"name":"@abcar-parts/common","version":"1.0.33","keywords":[],"author":"","license":"ISC","_id":"@abcar-parts/common@1.0.33","maintainers":[{"name":"baraajr11","email":"ahmedbaraa009@gmail.com"}],"dist":{"shasum":"50ec75a5b0138c78391a6dc3678ccf621c79bf93","tarball":"https://registry.npmjs.org/@abcar-parts/common/-/common-1.0.33.tgz","fileCount":68,"integrity":"sha512-gnxRQ1dYxHavvau1TDgYO3pgge5OmiUXs+toVvqUd/zm6jNKESCL6ImKwwtCIBN6OX1DAD9zN57gH1HpeQQO4A==","signatures":[{"sig":"MEQCICFHy0lvvxFsuefAZAvTyJIoiVV+ukitS7mzTwICZEXqAiAXxzOm2Y3tv/Uk7qEwt1u0Jb7yFPjhDbdwBT4wwnNzVA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27392},"main":"./build/index.js","types":"./build/index.d.ts","gitHead":"fa4f2f23a3d04006f664c684eddecc2cd1482fa0","scripts":{"pub":"tsc && git add . && git commit -m \"updates\" && npm version patch && npm publish","build":"tsc","clean":"del-cli ./build/*"},"_npmUser":{"name":"baraajr11","email":"ahmedbaraa009@gmail.com"},"_npmVersion":"11.6.2","description":"A shared npm package containing reusable logic, classes, and middlewares used across multiple microservices in a Node.js-based microservices architecture.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"express":"^5.1.0","kafkajs":"^2.2.4","jsonwebtoken":"^9.0.2","@types/express":"^5.0.3","cookie-session":"^2.1.0","express-validator":"^7.2.1","@types/jsonwebtoken":"^9.0.10","node-nats-streaming":"^0.3.2","@types/cookie-session":"^2.0.49"},"_hasShrinkwrap":false,"devDependencies":{"del-cli":"^6.0.0","typescript":"^5.8.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/common_1.0.33_1765554160058_0.62482649937877","host":"s3://npm-registry-packages-npm-production"}},"1.0.34":{"name":"@abcar-parts/common","version":"1.0.34","keywords":[],"author":"","license":"ISC","_id":"@abcar-parts/common@1.0.34","maintainers":[{"name":"baraajr11","email":"ahmedbaraa009@gmail.com"}],"dist":{"shasum":"ec66ff65b3ad80c9857ddc4933a6ba4f626f9c24","tarball":"https://registry.npmjs.org/@abcar-parts/common/-/common-1.0.34.tgz","fileCount":68,"integrity":"sha512-IRFajxad9EhFDg11mq6E7hvkPQEWJNvYXolQTuvDKlCBZJMzcDBQtWX5jMfiuoxRPB0QF1MDgt44J6gnq6XJWQ==","signatures":[{"sig":"MEQCIFlDllpc6cIzyyBJOjOBTu65eY9APRxzoRf3YGlvPD9FAiAfUyroCwdF990t68PV7Ibvieu2bITN+kD5JzDeBrdUcg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27393},"main":"./build/index.js","types":"./build/index.d.ts","gitHead":"5b08edc400f4bd33497e4f76344f5f32d53c658f","scripts":{"pub":"tsc && git add . && git commit -m \"updates\" && npm version patch && npm publish","build":"tsc","clean":"del-cli ./build/*"},"_npmUser":{"name":"baraajr11","email":"ahmedbaraa009@gmail.com"},"_npmVersion":"11.6.2","description":"A shared npm package containing reusable logic, classes, and middlewares used across multiple microservices in a Node.js-based microservices architecture.","directories":{},"_nodeVersion":"24.12.0","dependencies":{"express":"^5.1.0","kafkajs":"^2.2.4","jsonwebtoken":"^9.0.2","@types/express":"^5.0.3","cookie-session":"^2.1.0","express-validator":"^7.2.1","@types/jsonwebtoken":"^9.0.10","node-nats-streaming":"^0.3.2","@types/cookie-session":"^2.0.49"},"_hasShrinkwrap":false,"devDependencies":{"del-cli":"^6.0.0","typescript":"^5.8.3","@types/node":"^24.10.1"},"_npmOperationalInternal":{"tmp":"tmp/common_1.0.34_1765561739212_0.8142120025329254","host":"s3://npm-registry-packages-npm-production"}},"1.0.35":{"name":"@abcar-parts/common","version":"1.0.35","main":"./build/index.js","types":"./build/index.d.ts","scripts":{"build":"tsc","clean":"del-cli ./build/*","pub":"tsc && git add . && git commit -m \"updates\" && npm version patch && npm publish"},"keywords":[],"author":"","license":"ISC","description":"A shared npm package containing reusable logic, classes, and middlewares used across multiple microservices in a Node.js-based microservices architecture.","devDependencies":{"@types/node":"^24.10.1","del-cli":"^6.0.0","typescript":"^5.8.3"},"dependencies":{"@types/cookie-session":"^2.0.49","@types/express":"^5.0.3","@types/jsonwebtoken":"^9.0.10","cookie-session":"^2.1.0","express":"^5.1.0","express-validator":"^7.2.1","jsonwebtoken":"^9.0.2","kafkajs":"^2.2.4","node-nats-streaming":"^0.3.2"},"gitHead":"7e71c496de1bae6909e3598f3a678f9f66d536f2","_id":"@abcar-parts/common@1.0.35","_nodeVersion":"24.12.0","_npmVersion":"11.6.2","dist":{"integrity":"sha512-xHnwhQ0cYFxggbyHKbx1je0McEMj+DQzsFC1DSWjeUh/4DG911iVFnwInR0s4eHTMlMmFo9awI2fUoHrtrLuTg==","shasum":"4292205d59fdd9174ac329b786411de75bb7d583","tarball":"https://registry.npmjs.org/@abcar-parts/common/-/common-1.0.35.tgz","fileCount":68,"unpackedSize":27372,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDwlTgmLP0UHNFLKgF6zAve2lnSo8M1LsxBwFnaezLUbgIhAN1VlTTKND8UbBjaQpGqfk1T+goOS5SKbl4mCjyNamiJ"}]},"_npmUser":{"name":"baraajr11","email":"ahmedbaraa009@gmail.com"},"directories":{},"maintainers":[{"name":"baraajr11","email":"ahmedbaraa009@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/common_1.0.35_1765562402053_0.8564457170356263"},"_hasShrinkwrap":false}},"time":{"created":"2025-12-11T22:13:33.055Z","modified":"2025-12-12T18:00:02.421Z","1.0.29":"2025-12-11T22:13:33.316Z","1.0.30":"2025-12-12T11:41:03.826Z","1.0.31":"2025-12-12T11:50:04.068Z","1.0.33":"2025-12-12T15:42:40.192Z","1.0.34":"2025-12-12T17:48:59.355Z","1.0.35":"2025-12-12T18:00:02.225Z"},"license":"ISC","keywords":[],"description":"A shared npm package containing reusable logic, classes, and middlewares used across multiple microservices in a Node.js-based microservices architecture.","maintainers":[{"name":"baraajr11","email":"ahmedbaraa009@gmail.com"}],"readme":"# Common Module for Microservices\r\n\r\nA shared npm package containing reusable logic, classes, and middlewares used across multiple microservices in a Node.js-based microservices architecture.\r\n\r\n## 📦 What’s Included\r\n\r\nThis module centralizes and exports the following utilities:\r\n\r\n### 🧠 Middlewares\r\n\r\n- **`validateRequest`** – Validates the request body using `express-validator`.\r\n- **`errorHandler`** – Custom Express error handler.\r\n- **`currentUser`** – Middleware to decode and attach the current user from JWT token.\r\n- **`requireAuth`** – Middleware to restrict access to authenticated users only.\r\n- **`NotFoundError` / `BadRequestError` / `NotAuthorizedError` / `RequestValidationError`** – Custom error classes.\r\n\r\n### 📣 Events & Base Classes\r\n\r\n- **`Publisher`** and **`Listener`** – Base classes built around NATS streaming server.\r\n- **`Subjects`** – Enum defining event subjects.\r\n- **Events** – Interfaces for event contracts (e.g., `TicketCreatedEvent`, `OrderCancelledEvent`).\r\n\r\n## 🚀 Getting Started\r\n\r\n### Install\r\n\r\n```bash\r\n# install module\r\nnpm install @car-parts/common\r\n```\r\n\r\n---\r\n\r\n## Usage Example\r\n\r\n```ts\r\nimport {\r\n  requireAuth,\r\n  validateRequest,\r\n  BadRequestError,\r\n} from '@car-parts/common';\r\n\r\napp.post('/api/resource', requireAuth, validateRequest, (req, res) => {\r\n  if (!req.body.title) {\r\n    throw new BadRequestError('Title is required');\r\n  }\r\n\r\n  res.status(201).send({ success: true });\r\n});\r\n```\r\n","readmeFilename":"README.md"}