Compare commits

..

No commits in common. "master" and "v4.2.2" have entirely different histories.

5 changed files with 1033 additions and 962 deletions

View File

@ -1,19 +1,5 @@
# Changelog # Changelog
## 2025-02-20 - 4.2.3 - fix(test)
Refactor test suite for improved readability and maintainability.
- Updated and cleaned up test cases for deferreds and promises.
- Reduced timeouts in tests for quicker execution.
- Added expectations for promise status and duration.
## 2025-02-20 - 4.2.3 - fix(test)
Refactor test suite for improved readability and maintainability.
- Updated and cleaned up test cases for deferreds and promises.
- Reduced timeouts in tests for quicker execution.
- Added expectations for promise status and duration.
## 2025-01-23 - 4.2.2 - fix(dependencies) ## 2025-01-23 - 4.2.2 - fix(dependencies)
Update @git.zone/tstest and @types/node dependencies to latest versions Update @git.zone/tstest and @types/node dependencies to latest versions

View File

@ -1,7 +1,7 @@
{ {
"name": "@push.rocks/smartpromise", "name": "@push.rocks/smartpromise",
"private": false, "private": false,
"version": "4.2.3", "version": "4.2.2",
"description": "A TypeScript library for managing promises and Deferred constructs, simplifying asynchronous programming.", "description": "A TypeScript library for managing promises and Deferred constructs, simplifying asynchronous programming.",
"main": "dist_ts/index.js", "main": "dist_ts/index.js",
"typings": "dist_ts/index.d.ts", "typings": "dist_ts/index.d.ts",
@ -53,12 +53,5 @@
"typescript", "typescript",
"asynchronous", "asynchronous",
"utilities" "utilities"
],
"pnpm": {
"onlyBuiltDependencies": [
"esbuild",
"mongodb-memory-server",
"puppeteer"
] ]
} }
}

1866
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

View File

@ -1,57 +1,53 @@
import * as smartpromise from '../ts/index.js'; import * as smartpromise from '../ts/index.js';
import { tap, expect } from '@push.rocks/tapbundle';
tap.test('simple deferred should resolve with correct value', async () => {
const done = smartpromise.defer<string>();
let result: string | undefined;
// using Deferreds
// simple deferred;
const done = smartpromise.defer();
done.promise.then((stringArg) => { done.promise.then((stringArg) => {
result = stringArg; console.log(stringArg);
}); });
done.resolve('hello'); done.resolve('hello'); // whenever you are ready
await done.promise; // using deferreds in async functions to cater callback style apis
expect(result).toEqual('hello');
});
tap.test('deferred should work with async functions and track status/duration', async () => {
const myAsyncFunction = async (): Promise<string> => { const myAsyncFunction = async (): Promise<string> => {
const done = smartpromise.defer<string>(); const done = smartpromise.defer<string>(); // returns your typical Deferred object
setTimeout(() => { setTimeout(() => {
done.resolve('hi'); done.resolve('hi'); // will throw type error for other types than string as argument ;)
}, 100); // reduced timeout for testing }, 6000);
expect(done.status).toEqual('pending'); console.log(done.status); // logs "pending";
await done.promise; await done.promise;
expect(done.status).toEqual('fulfilled'); console.log(done.status); // logs "fullfilled"
expect(done.duration).toBeGreaterThan(0); console.log(done.duration); // outputs the duration in millisenconds
return done.promise; return done.promise;
}; };
const result = await myAsyncFunction(); let myAsyncFunction2 = async () => {
expect(result).toEqual('hi'); let aString = await myAsyncFunction();
console.log(aString); // will log 'hi' to console
};
myAsyncFunction2();
// Resolved and Rejected promises
// ------------------------------------------------
smartpromise.resolvedPromise(`I'll get logged to console soon`).then((x) => {
console.log(x);
}); });
tap.test('resolvedPromise should resolve immediately with correct value', async () => { smartpromise
const message = `I'll get logged to console soon`; .rejectedPromise(`what a lovely error message`)
const result = await smartpromise.resolvedPromise(message); .then(
expect(result).toEqual(message); () => {
console.log('This never makes it to console');
} /*, alternatively put a reject function here */
)
.catch((err) => {
console.log(err);
}); });
tap.test('rejectedPromise should reject with correct error message', async () => { import { tap, expect } from '@push.rocks/tapbundle';
const errorMessage = 'what a lovely error message';
let caught = false;
try {
await smartpromise.rejectedPromise(errorMessage);
} catch (err) {
caught = true;
expect(err).toEqual(errorMessage);
}
expect(caught).toEqual(true);
});
tap.test('runs through', async () => {});
export default tap.start(); export default tap.start();

View File

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