Shared TypeScript library for the Lightdash platform containing common types, utilities, and business logic for analytics workflows
Overall
score
72%
Evaluation — 72%
↑ 1.09xAgent success when using this tile
Utilities for working with Promise.allSettled results, including type guards and value extraction functions.
This module provides the following functionality:
/**
* Type guard to check if a PromiseSettledResult is fulfilled
* @param input - Promise result to check
* @returns true if the promise was fulfilled
*/
function isFulfilled<T>(
input: PromiseSettledResult<T>
): input is PromiseFulfilledResult<T>;
/**
* Type guard to check if a PromiseSettledResult is rejected
* @param input - Promise result to check
* @returns true if the promise was rejected
*/
function isRejected(
input: PromiseSettledResult<unknown>
): input is PromiseRejectedResult;
/**
* Extracts values from fulfilled promises
* @param results - Array of promise results from Promise.allSettled
* @returns Array of values from fulfilled promises only
*/
function getFulfilledValues<T>(results: PromiseSettledResult<T>[]): T[];import { isFulfilled, isRejected, getFulfilledValues } from '@lightdash/common';
// Use with Promise.allSettled
const promises = [
Promise.resolve('success1'),
Promise.reject('error'),
Promise.resolve('success2'),
];
const results = await Promise.allSettled(promises);
// Filter fulfilled promises
const fulfilled = results.filter(isFulfilled);
// Returns: [{ status: 'fulfilled', value: 'success1' }, { status: 'fulfilled', value: 'success2' }]
// Filter rejected promises
const rejected = results.filter(isRejected);
// Returns: [{ status: 'rejected', reason: 'error' }]
// Extract fulfilled values
const values = getFulfilledValues(results);
// Returns: ['success1', 'success2']import { isFulfilled, isRejected, getFulfilledValues } from '@lightdash/common';
// Execute multiple promises and handle settled results
const results = await Promise.allSettled([
fetchUser(1),
fetchUser(2),
fetchUser(3),
]);
// Filter successful results
const successful = results.filter(isFulfilled);
console.log(`${successful.length} succeeded`);
// Filter failed results
const failed = results.filter(isRejected);
failed.forEach(result => {
console.error(`Failed: ${result.reason}`);
});
// Extract values from successful promises
const values = getFulfilledValues(results);
// Returns: array of successfully resolved values
console.log(`Got ${values.length} user objects`);import { sleep } from '@lightdash/common';
async function delayedOperation() {
console.log('Starting...');
await sleep(1000); // Wait 1 second
console.log('Done!');
}sleep() function for delayed operationsInstall with Tessl CLI
npx tessl i tessl/npm-lightdash--commondocs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
scenario-11
scenario-12
scenario-13
scenario-14
scenario-15
scenario-16
scenario-17
scenario-18
scenario-19
scenario-20