feat(core): Add fromCallback utility function for promisifying Node.js-style callback functions

This commit is contained in:
Philipp Kunz 2025-01-07 04:27:24 +01:00
parent 3802c03838
commit 1afbfd8895
3 changed files with 25 additions and 4 deletions

View File

@ -1,5 +1,10 @@
# Changelog
## 2025-01-07 - 4.1.0 - feat(core)
Add fromCallback utility function for promisifying Node.js-style callback functions
- Added fromCallback function to convert Node.js-style callbacks into Promises.
## 2024-06-23 - 4.0.4 - fix(ci)
Remove .gitlab-ci.yml and update dependencies and metadata
@ -7,8 +12,6 @@ Remove .gitlab-ci.yml and update dependencies and metadata
- Updated dependencies in package.json and npmextra.json
- Improved description and keywords for better package definition
## 2024-05-29 - 4.0.3 - Maintenance
Update project configuration and descriptions.
@ -85,4 +88,3 @@ Added polyfill and npmextra.json.
Updated continuous integration configuration.
- Update ci
```

View File

@ -3,6 +3,6 @@
*/
export const commitinfo = {
name: '@push.rocks/smartpromise',
version: '4.0.4',
version: '4.1.0',
description: 'A TypeScript library for managing promises and Deferred constructs, simplifying asynchronous programming.'
}

View File

@ -80,3 +80,22 @@ export const getFirstTrueOrFalse = async (promisesArg: Promise<boolean>[]) => {
});
return done.promise;
};
/**
* Converts a Node.js-style callback-based function into a Promise.
* @param fn The function that expects a callback.
* @returns A Promise that resolves with the result of the function or rejects with an error.
*/
export const fromCallback = <T>(
fn: (callback: (err: NodeJS.ErrnoException | null, result?: T) => void) => void
): Promise<T> => {
return new Promise((resolve, reject) => {
fn((err, result) => {
if (err) {
reject(err); // Reject the promise with the error
} else {
resolve(result as T); // Resolve the promise with the result
}
});
});
};