{"_id":"@abimongo/logger","_rev":"8-ff4ce9c20ffa7e345e35c06965ab8caf","name":"@abimongo/logger","dist-tags":{"latest":"2.0.1"},"versions":{"1.1.1":{"name":"@abimongo/logger","version":"1.1.1","keywords":["abimongo","logger","Advance logging"],"author":{"name":"Emmanuel Nodolomwanyi"},"license":"ISC","_id":"@abimongo/logger@1.1.1","maintainers":[{"name":"abimongo","email":"padave805@gmail.com"}],"dist":{"shasum":"090aa0d1365453120d82f3f23f360117c421074a","tarball":"https://registry.npmjs.org/@abimongo/logger/-/logger-1.1.1.tgz","fileCount":63,"integrity":"sha512-vdPPp3A8lTAWtkaU3GV6m5bKBN3cft5ZcTEX9lJeDcqnWmbCPY83Fk1riabgPFRBvap2LmH1Xx+AoBcCQtvjOA==","signatures":[{"sig":"MEUCIF9hH7sN07N7Wl/ASG30eiDN3D0QbjMOYZtVIYUXUhwQAiEAzV3Mf2sxmkY1+av+UuY61xyS8svElvBFqWQ4qymFj74=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":316607},"main":"dist/abimongo-logger.js","_from":"file:abimongo-logger-1.1.1.tgz","types":"dist/index.d.ts","module":"dist/abimongo-logger.js","browser":{"async_hooks":false},"engines":{"node":">=20.11.0","pnpm":">=10.20.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/abimongo-logger.js","require":"./dist/abimongo-logger.js"},"./package.json":"./package.json"},"release":{"branches":["main"]},"scripts":{"dev":"ts-node --project tsconfig.json src/index.ts","test":"jest --detectOpenHandles --coverage","build":"webpack --config webpack.config.js","clean":"rimraf dist","start":"ts-node src/index.ts","release":"pnpm changeset version && pnpm install && pnpm build && changeset publish","typedoc":"typedoc --options typedoc.json","changeset":"changeset"},"_npmUser":{"name":"abimongo","email":"padave805@gmail.com"},"_resolved":"/tmp/8c972dd17cb5f1aac11cc1300ec71052/abimongo-logger-1.1.1.tgz","_integrity":"sha512-vdPPp3A8lTAWtkaU3GV6m5bKBN3cft5ZcTEX9lJeDcqnWmbCPY83Fk1riabgPFRBvap2LmH1Xx+AoBcCQtvjOA==","repository":{"type":"git"},"_npmVersion":"10.8.2","description":"<!-- # abimongo_logger ![NPM Version](https://img.shields.io/npm/v/abimongo_utils?style=flat-square&logo=slugs.md%20file&logoSize=100) -->","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"axios":"^1.9.0","@babel/runtime":"^7.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","jest":"^29.7.0","tslib":"^2.8.1","rimraf":"^6.0.1","ts-jest":"^29.3.4","ts-node":"^10.9.2","typedoc":"^0.28.4","webpack":"^5.99.8","@types/ws":"^8.18.1","ts-loader":"^9.5.2","babel-jest":"^29.7.0","typescript":"^5.9.3","@babel/core":"^7.27.1","@types/jest":"^29.5.14","@types/node":"^22.15.33","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@types/webpack":"^5.28.5","@changesets/cli":"^2.29.5","path-browserify":"^1.0.1","@docusaurus/core":"^3.9.2","@babel/preset-env":"^7.27.2","webpack-remove-debug":"^0.1.0","typedoc-plugin-markdown":"^4.6.4","@babel/preset-typescript":"^7.27.1","@testing-library/jest-dom":"^6.9.1","@docusaurus/preset-classic":"^3.9.2","tsconfig-paths-webpack-plugin":"^4.2.0","@babel/plugin-transform-runtime":"^7.27.1","@docusaurus/plugin-content-docs":"^3.9.2","@babel/plugin-transform-modules-commonjs":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/logger_1.1.1_1762154491005_0.7811909849994891","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"@abimongo/logger","version":"1.1.3","keywords":["abimongo","logger","Advance logging"],"author":{"name":"Emmanuel Nodolomwanyi"},"license":"ISC","_id":"@abimongo/logger@1.1.3","maintainers":[{"name":"abimongo","email":"padave805@gmail.com"}],"dist":{"shasum":"367b5e790fa68ebd7fdc4736c922dfee5434ab96","tarball":"https://registry.npmjs.org/@abimongo/logger/-/logger-1.1.3.tgz","fileCount":63,"integrity":"sha512-3suUYaSDKn4mJ4cGIBITrtaFgYZc8CFwuQRIKtBGm8F9uaICfbTiu+7omn24TZspMVilvn07TtNtD7gsENaiXA==","signatures":[{"sig":"MEQCIAWTmPTcFXDUweWMemearcvNkgjod0del22IPa2iVBCPAiBVtxsfdQIHGAIOItHzAMTnzPZAJThZ3kXu0DmIayo2Rw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":316653},"main":"dist/abimongo-logger.js","_from":"file:abimongo-logger-1.1.3.tgz","types":"dist/index.d.ts","module":"dist/abimongo-logger.js","browser":{"async_hooks":false},"engines":{"node":">=20.11.0","pnpm":">=10.20.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/abimongo-logger.js","require":"./dist/abimongo-logger.js"},"./package.json":"./package.json"},"release":{"branches":["main"]},"scripts":{"dev":"ts-node --project tsconfig.json src/index.ts","test":"jest --detectOpenHandles --coverage","build":"webpack --config webpack.config.js","clean":"rimraf dist","start":"ts-node src/index.ts","release":"pnpm changeset version && pnpm install && pnpm build && changeset publish","typedoc":"typedoc --options typedoc.json","changeset":"changeset"},"_npmUser":{"name":"abimongo","email":"padave805@gmail.com"},"_resolved":"/tmp/205dc8a63e7adbdd101b40a1c9c2b73c/abimongo-logger-1.1.3.tgz","_integrity":"sha512-3suUYaSDKn4mJ4cGIBITrtaFgYZc8CFwuQRIKtBGm8F9uaICfbTiu+7omn24TZspMVilvn07TtNtD7gsENaiXA==","repository":{"type":"git"},"_npmVersion":"10.8.2","description":"![npm version](https://img.shields.io/npm/v/@abimongo/logger.svg)  ![Release workflow](https://github.com/NodEm9/abimongo/actions/workflows/release.yml/badge.svg)","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"axios":"^1.9.0","@babel/runtime":"^7.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","jest":"^29.7.0","tslib":"^2.8.1","rimraf":"^6.0.1","ts-jest":"^29.3.4","ts-node":"^10.9.2","typedoc":"^0.28.4","webpack":"^5.99.8","@types/ws":"^8.18.1","ts-loader":"^9.5.2","babel-jest":"^29.7.0","typescript":"^5.9.3","@babel/core":"^7.27.1","@types/jest":"^29.5.14","@types/node":"^22.15.33","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@types/webpack":"^5.28.5","@changesets/cli":"^2.29.5","path-browserify":"^1.0.1","@docusaurus/core":"^3.9.2","@babel/preset-env":"^7.27.2","webpack-remove-debug":"^0.1.0","typedoc-plugin-markdown":"^4.6.4","@babel/preset-typescript":"^7.27.1","@testing-library/jest-dom":"^6.9.1","@docusaurus/preset-classic":"^3.9.2","tsconfig-paths-webpack-plugin":"^4.2.0","@babel/plugin-transform-runtime":"^7.27.1","@docusaurus/plugin-content-docs":"^3.9.2","@babel/plugin-transform-modules-commonjs":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/logger_1.1.3_1762376795320_0.41754475676447655","host":"s3://npm-registry-packages-npm-production"}},"2.0.0":{"name":"@abimongo/logger","version":"2.0.0","keywords":["abimongo","logger","Advance logging"],"author":{"name":"Emmanuel Nodolomwanyi"},"license":"ISC","_id":"@abimongo/logger@2.0.0","maintainers":[{"name":"abimongo","email":"padave805@gmail.com"}],"dist":{"shasum":"c6154ae85c707dc9a14de389985c0fc4b748b25b","tarball":"https://registry.npmjs.org/@abimongo/logger/-/logger-2.0.0.tgz","fileCount":63,"integrity":"sha512-VlU1PI82s0jrNpcNGrPL21eHEGi6uF3N2+dTpAovh4WSigQZdkPMGgdKGCTBJt3aNpdXn3VcETzyVvLBx0xgRQ==","signatures":[{"sig":"MEUCIQDtkf5SCfz94/8ANh6lDJQHH+bJ9cC0DelBjEXayTP8kgIgD1WQER9mYU8kkQihRMEC90pZKnIcsg68J9kcnd8YlbE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":317954},"main":"dist/abimongo-logger.js","_from":"file:abimongo-logger-2.0.0.tgz","types":"dist/index.d.ts","module":"dist/abimongo-logger.js","browser":{"async_hooks":false},"engines":{"node":">=20.11.0","pnpm":">=10.20.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/abimongo-logger.js","require":"./dist/abimongo-logger.js"},"./package.json":"./package.json"},"release":{"branches":["main"]},"scripts":{"dev":"ts-node --project tsconfig.json src/index.ts","test":"jest --detectOpenHandles --coverage","build":"webpack --config webpack.config.js","clean":"rimraf dist","start":"ts-node src/index.ts","release":"pnpm changeset version && pnpm install && pnpm build && changeset publish","typedoc":"typedoc --options typedoc.json","changeset":"changeset"},"_npmUser":{"name":"abimongo","email":"padave805@gmail.com"},"_resolved":"/tmp/ffe5bd2c5270e82984cdff621e095944/abimongo-logger-2.0.0.tgz","_integrity":"sha512-VlU1PI82s0jrNpcNGrPL21eHEGi6uF3N2+dTpAovh4WSigQZdkPMGgdKGCTBJt3aNpdXn3VcETzyVvLBx0xgRQ==","repository":{"type":"git"},"_npmVersion":"10.8.2","description":"![npm version](https://img.shields.io/npm/v/@abimongo/logger.svg)  ![Release workflow](https://github.com/NodEm9/abimongo/actions/workflows/release.yml/badge.svg)","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"axios":"^1.9.0","@babel/runtime":"^7.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.4","jest":"^29.7.0","tslib":"^2.8.1","rimraf":"^6.0.1","ts-jest":"^29.3.4","ts-node":"^10.9.2","typedoc":"^0.28.4","webpack":"^5.99.8","@types/ws":"^8.18.1","ts-loader":"^9.5.2","babel-jest":"^29.7.0","typescript":"^5.9.3","@babel/core":"^7.27.1","@types/jest":"^29.5.14","@types/node":"^22.15.33","webpack-cli":"^6.0.1","babel-loader":"^10.0.0","@types/webpack":"^5.28.5","@changesets/cli":"^2.29.5","path-browserify":"^1.0.1","@docusaurus/core":"^3.9.2","@babel/preset-env":"^7.27.2","webpack-remove-debug":"^0.1.0","typedoc-plugin-markdown":"^4.6.4","@babel/preset-typescript":"^7.27.1","@testing-library/jest-dom":"^6.9.1","@docusaurus/preset-classic":"^3.9.2","tsconfig-paths-webpack-plugin":"^4.2.0","@babel/plugin-transform-runtime":"^7.27.1","@docusaurus/plugin-content-docs":"^3.9.2","@babel/plugin-transform-modules-commonjs":"^7.27.1"},"_npmOperationalInternal":{"tmp":"tmp/logger_2.0.0_1762722395876_0.24229741773327995","host":"s3://npm-registry-packages-npm-production"}},"2.0.1":{"name":"@abimongo/logger","version":"2.0.1","publishConfig":{"access":"public"},"main":"dist/abimongo-logger.js","module":"dist/abimongo-logger.js","types":"dist/index.d.ts","sideEffects":false,"browser":{"async_hooks":false},"exports":{".":{"import":"./dist/abimongo-logger.js","require":"./dist/abimongo-logger.js","types":"./dist/index.d.ts"},"./package.json":"./package.json"},"release":{"branches":["main"]},"keywords":["abimongo","logger","Advance logging"],"author":{"name":"Emmanuel Nodolomwanyi"},"maintainers":[{"name":"abimongo","email":"padave805@gmail.com"}],"license":"ISC","description":"<p align=\"center\">   <img src=\"../../abimongo-brand/abimongo-logo_socials.png\" width=\"360\" alt=\"Abimongo Logo\"> </p>","repository":{"type":"git","url":"git+https://github.com/NodEm9/abimongo.git"},"devDependencies":{"@babel/core":"^7.28.5","@babel/plugin-transform-modules-commonjs":"^7.27.1","@babel/plugin-transform-runtime":"^7.28.5","@babel/preset-env":"^7.28.5","@babel/preset-typescript":"^7.28.5","@changesets/cli":"^2.29.8","@docusaurus/core":"^3.9.2","@docusaurus/plugin-content-docs":"^3.9.2","@docusaurus/preset-classic":"^3.9.2","@testing-library/jest-dom":"^6.9.1","@types/jest":"^29.5.14","@types/node":"^22.19.3","@types/webpack":"^5.28.5","@types/ws":"^8.18.1","babel-jest":"^29.7.0","babel-loader":"^10.0.0","jest":"^29.7.0","path-browserify":"^1.0.1","rimraf":"^6.1.2","ts-jest":"^29.4.6","ts-loader":"^9.5.4","ts-node":"^10.9.2","tsconfig-paths-webpack-plugin":"^4.2.0","tslib":"^2.8.1","tsx":"^4.21.0","typedoc":"^0.28.15","typedoc-plugin-markdown":"^4.9.0","typescript":"^5.9.3","webpack":"^5.104.1","webpack-cli":"^6.0.1","webpack-remove-debug":"^0.1.0"},"dependencies":{"@babel/runtime":"^7.28.4","axios":"^1.13.2"},"engines":{"node":">=20.11.0","pnpm":">=10.20.0"},"scripts":{"start":"ts-node src/index.ts","dev":"ts-node --project tsconfig.json src/index.ts","build":"webpack --config webpack.config.js","test":"jest --detectOpenHandles --coverage","changeset":"changeset","release":"pnpm changeset version && pnpm install && pnpm build && changeset publish","typedoc":"typedoc --options typedoc.json","clean":"rimraf dist"},"_id":"@abimongo/logger@2.0.1","bugs":{"url":"https://github.com/NodEm9/abimongo/issues"},"homepage":"https://github.com/NodEm9/abimongo#readme","_integrity":"sha512-DG0hZMV1zb7Zsh/CU3LtQSy4LN9sDiYA0FPAtPng3JTEdZUzCg/25cr5Y6Mwuga11hA2Df1s9i7ZR8iaPwJj8A==","_resolved":"/tmp/bdee3205b381c31533e5927a9b6faa33/abimongo-logger-2.0.1.tgz","_from":"file:abimongo-logger-2.0.1.tgz","_nodeVersion":"20.19.6","_npmVersion":"11.7.0","dist":{"integrity":"sha512-DG0hZMV1zb7Zsh/CU3LtQSy4LN9sDiYA0FPAtPng3JTEdZUzCg/25cr5Y6Mwuga11hA2Df1s9i7ZR8iaPwJj8A==","shasum":"c86d7944141bb5ed79089b5a22003d62c881e434","tarball":"https://registry.npmjs.org/@abimongo/logger/-/logger-2.0.1.tgz","fileCount":63,"unpackedSize":318445,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@abimongo%2flogger@2.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIAZ27kDMiAkF9umrNBhbUptvB3W689A1GczvYIYT+xTdAiA/NU1ISunJF4PqSx6HIsH06NoMSTFkvsMWdjIwzUyiiQ=="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:9799520d-8fc6-4471-b750-e0a19e593cda"}},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/logger_2.0.1_1767463149418_0.5932045576305194"},"_hasShrinkwrap":false}},"time":{"created":"2025-11-03T07:21:30.924Z","modified":"2026-01-03T17:59:10.294Z","1.0.0":"2025-10-31T03:33:41.684Z","1.1.1":"2025-11-03T07:21:31.196Z","1.1.3":"2025-11-05T21:06:35.520Z","2.0.0":"2025-11-09T21:06:36.077Z","2.0.1":"2026-01-03T17:59:09.577Z"},"author":{"name":"Emmanuel Nodolomwanyi"},"license":"ISC","keywords":["abimongo","logger","Advance logging"],"repository":{"type":"git","url":"git+https://github.com/NodEm9/abimongo.git"},"description":"<p align=\"center\">   <img src=\"../../abimongo-brand/abimongo-logo_socials.png\" width=\"360\" alt=\"Abimongo Logo\"> </p>","maintainers":[{"name":"abimongo","email":"padave805@gmail.com"}],"readme":"<p align=\"center\">\n  <img src=\"../../abimongo-brand/abimongo-logo_socials.png\" width=\"360\" alt=\"Abimongo Logo\">\n</p> \n\n<h1 align=\"center\">@abimongo/logger</h1>\n<p align=\"center\">\n  <strong>Structured Logging for the Abimongo Ecosystem</strong><br>\n  JSON Logs • Transports • Correlation IDs • Production-Ready\n</p>\n\n<p align=\"center\">\n  <a href=\"https://www.npmjs.com/package/@abimongo/logger\">\n    <img src=\"https://img.shields.io/npm/v/@abimongo/logger.svg?style=flat-square&color=00C4B4\" alt=\"npm version\">\n  </a>\n  <a href=\"https://github.com/Nodem9/abimongo\">\n    <img src=\"https://img.shields.io/github/stars/Nodem9/abimongo?style=flat-square&color=1E88E5\" alt=\"GitHub stars\">\n  </a>\n</p>\n\n---\n<!-- \n ![npm version](https://img.shields.io/npm/v/@abimongo/logger.svg)\n ![Release workflow](https://github.com/NodEm9/abimongo/actions/workflows/release.yml/badge.svg) -->\n\n\nA modular utility library for Node.js projects, starting with a robust, extensible logger utility. This library is designed to be expanded with additional utilities over time, making it a central toolkit for your backend applications.\n\n---\n\n## Release Notes — v2.0.0\n\nReleased: 2025-11-09\n\n- Major bump to `@abimongo/logger` -> **2.0.0**.\n- Fix: GraphQL-related issues in the core package have been addressed so consumers using Abimongo Core will not encounter runtime logging errors related to transport shapes.\n- Fix: Improved robustness when consumers configure transports (defensive checks to avoid runtime TypeError when a transport entry is undefined).\n- Fix: Buffered -> file transport flush behavior improved so buffered logs reach the file transport promptly.\n- Misc: Docs, metrics card updates, and packaging improvements.\n\nUpgrade notes:\n- This is a major release. Please test in staging before upgrading production.\n- If you previously passed transport factory references, ensure you follow the transport API: pass either an instantiated transport object (has `.write` or `.log`) or a function-style transporter (`async (message, meta) => ...`) as appropriate.\n\n\n## Features\n\n- **Advanced Logger Utility**  \n  - Customizable log levels (`info`, `debug`, `error`, etc.)\n  - Pluggable transporters (console, file, custom)\n  - Hooks for log and error events\n  - Metadata enrichment\n  - Source-based log exclusion\n  - TypeScript support\n\n---\n\n## Installation\n\n```sh\nnpm install @abimongo/logger\n```\n\n---\n\n## Logger Usage\n\n### Logger Utility\n\n#### Basic Setup\n\n```typescript\nimport { setupLogger } from '@abimongo/logger';\n\nconst logger = setupLogger({\n  level: 'info',\n  transporters: [\n    {\n      write: (msg: string) => {\n        // Write to console, file, or any custom destination\n        console.log(msg);\n      }\n    },\n    // Add other properties here\n  ],\n  hooks: {\n    onLog: (msg, meta) => {\n      // Custom logic after logging\n    },\n    onError: (err, meta) => {\n      // Custom error handling\n    }\n  },\n  enrichMetadata: (meta) => ({\n    ...meta,\n    timestamp: new Date().toISOString(),\n  }),\n  excludedSources: ['test'],\n});\n```\n\n#### Logging\n\n```typescript\nlogger.info('Application started', { source: 'app' });\nlogger.error('Something went wrong', { source: 'service', error: new Error('fail') });\n```\n\n#### Using a Custom Logger\n\nIf you already have a logger instance, you can pass it to `setupLogger`:\n\n```typescript\nconst customLogger = {\n  info: (msg: string) => { /* ... */ },\n  error: (msg: string) => { /* ... */ },\n};\n\nconst logger = setupLogger({ logger: customLogger });\n```\n\n---\n\nIf you are implementing ( logger ) without using the above setup yourself then follow below steps.\n\n## Advanced Logger Usage (`@abimongo/logger`)\n\nThe logger is a pluggable, buffered, rolling log system that supports:\n\n- JSON or text formatting\n- Daily file rotation with compression\n- Multi-tenant routing\n- Redis real-time log streaming\n- Metrics tracking\n\n### Install Redis for full features\n\n```bash\nnpm install redis      # windows\nbrew install redis     # macOS\nsudo apt install redis # Linux\n```\n\n### Usage\n\n```ts\nimport { logger } from '@abimongo/logger';\n\nawait logger.log('User created', 'info', { tenantId: 'org-123' });\n```\n\n### Metrics\n\n```ts\nlogger.getMetrics(); // { totalLogs, flushedBuffers, logsPerMinute }\n\n```\n\n### Flush & CLose\n\n```ts\nawait logger.flushAll();\nawait logger.close();\n```\n\n### CLI Tools\n\n```bash\nnpm run logger:tail      # Tail logs in terminal (from Redis)\nnpm run logger:flush     # Flush buffered logs\nnpm run logger:metrics   # View internal metrics\n```\n\n### Real-time Dashboard\n\n```bash\nnpm run start\n# Visit /log-dashboard\n```\n\nThis page connects to a WebSocket server that listens to logs:* Redis channels.\n\n---\n\n## Development\n\n### Running Locally with Docker\n\nA `docker-compose.yml` is provided for local development:\n\n```sh\ndocker-compose up\n```\n\nThis will mount your code, install dependencies, build the library, and keep the container running for development and testing.\n\n### Scripts\n\n- `npm run build` – Build the library\n- `npm test` – Run tests\n- `npm run lint` – Lint the codebase\n\n---\n\n## Publishing\n\nThis library is published to npm via GitHub Actions when a new version tag (`v*.*.*`) is pushed to the `main` or `master` branch.\n\n---\n\n## Extending the Library\n\nThe `abimongo_logger library is designed to be extended. Future utilities can be added under the`src/` directory and exported via the main entry point.\n\n---\n\n## License\n\nISC\n\n---\n\n## Maintainers\n\n- Emmanuel Nodolomwanyi ([padave805@gmail.com](mailto:padave805@gmail.com))\n\n---\n\n## Contributing\n\nContributions are welcome! Please open issues or submit pull requests for new utilities or improvements.\n","readmeFilename":"README.md","homepage":"https://github.com/NodEm9/abimongo#readme","bugs":{"url":"https://github.com/NodEm9/abimongo/issues"}}