All files / src/nesting spaceTrimNested.ts

83.33% Statements 10/12
80% Branches 4/5
100% Functions 2/2
83.33% Lines 10/12

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 413x 3x                         3x         20x   13x 4x 9x 9x   2x 2x                          
import { protectBlockContent } from './protectBlockContent';
import { restoreBlockContent } from './restoreBlockContent';
 
/**
 * Trims whitespace from all 4 sides with nested substrings
 *
 * @private withing the repository
 */
export function spaceTrimNested(
    createContent: (block: (blockContent: string) => string) => string,
): string;
export async function spaceTrimNested(
    createContent: (block: (blockContent: string) => string) => Promise<string>,
): Promise<string>;
export function spaceTrimNested(
    createContent: (
        block: (blockContent: string) => string,
    ) => string | Promise<string>,
): string | Promise<string> {
    const content = createContent(protectBlockContent);
 
    if (typeof content === 'string') {
        return restoreBlockContent(content);
    } else if (content instanceof Promise) {
        return content
            .then((value) => {
                if (typeof value === 'string') {
                    return value;
                }
                throw new TypeError(
                    `spaceTrim expected string or Promise<string>, but got ${typeof value}`,
                );
            })
            .then(restoreBlockContent);
    } else E{
        throw new TypeError(
            `spaceTrim expected string or Promise<string>, but got ${typeof content}`,
        );
    }
}