The shutdown-cleanup
module provides a structured approach for managing graceful shutdowns in Node.js applications. It supports phased shutdowns, signal-specific handlers, customizable error handling strategies, and custom exit codes, ensuring broad compatibility with LTS Node.js versions.
- Phased Shutdown: Organizes shutdown logic into phases for orderly execution.
- Signal-Specific Handlers: Custom logic for specific signals without mandatory shutdown.
- Error Handling Strategy: Customizable handling of handler errors, including proper management of synchronous and asynchronous handlers to prevent unhandled promise rejections.
- Custom Exit Codes: Specify exit codes to indicate shutdown statuses.
- Graceful Shutdown with Timeout: Prevents indefinite hangs during shutdown. (See Developer Guide for details.)
- LTS Node.js Support: Compatible with LTS Node.js versions.
- Enhanced Flexibility: Supports handling of custom application events.
- TypeScript Support: Includes TypeScript definitions for ease of development.
npm install @hypercliq/shutdown-cleanup
Or using Yarn:
yarn add @hypercliq/shutdown-cleanup
To use shutdown-cleanup
, import and utilize its functions within your application to manage shutdown logic effectively. Both synchronous and asynchronous handlers are supported.
import { registerHandler } from '@hypercliq/shutdown-cleanup'
// Asynchronous handler
registerHandler(async (signal) => {
await performCleanup()
console.log('Async cleanup completed')
})
// Synchronous handler
registerHandler((signal) => {
performSyncCleanup()
console.log('Sync cleanup completed')
})
For more detailed usage examples and best practices, see the Developer Guide.
We encourage contributions! If you have suggestions, bug reports, or would like to contribute code, please submit issues or pull requests on GitHub. For major changes, start by opening an issue to discuss your ideas.
Thank you for using and contributing to the shutdown-cleanup
module!
- Fork the repository
- Create a new branch for your feature or bug fix
- Make your changes
- Commit your changes
- Push your changes to your fork
- Open a pull request
- Wait for review and merge
- Celebrate your contribution!
Remember to add tests for your changes and ensure that all tests pass before submitting a pull request. Also, lint and format your code according to the project's standards.
This project is licensed under the MIT License - see the LICENSE file for details.