dde272c4b8
CD - Docker - GHCR Images / Build and Push Images (push) Waiting to run
i18n - Build Validation / Validate i18n Builds (24) (push) Has been cancelled
CI - Node.js / Lint (24) (push) Has been cancelled
CI - Node.js / Build (24) (push) Has been cancelled
CI - Node.js / Test (24) (push) Has been cancelled
CI - Node.js / Test - Upcoming Changes (24) (push) Has been cancelled
CI - Node.js / Test - i18n (italian, 24) (push) Has been cancelled
CI - Node.js / Test - i18n (portuguese, 24) (push) Has been cancelled
20 lines
569 B
TypeScript
20 lines
569 B
TypeScript
export function insertInto<T>(arr: T[], index: number, elem: T): T[] {
|
|
if (index >= arr.length) return [...arr, elem];
|
|
if (index <= 0) return [elem, ...arr];
|
|
|
|
return arr.flatMap((x, id) => {
|
|
return id === index ? [elem, x] : x;
|
|
});
|
|
}
|
|
|
|
// fs Promise functions return errors, but no stack trace. This adds back in
|
|
// the stack trace.
|
|
export function withTrace<Args extends unknown[], Result>(
|
|
fn: (...x: Args) => Promise<Result>,
|
|
...args: Args
|
|
): Promise<Result> {
|
|
return fn(...args).catch((reason: Error) => {
|
|
throw Error(reason.message);
|
|
});
|
|
}
|