function deepReadDirSync(targetDir) {
    var targetDirAbsPath = require$$0__namespace$1.resolve(targetDir);
    if (!require$$0__namespace.existsSync(targetDirAbsPath)) {
        throw new Error("Cannot read contents of " + targetDirAbsPath + ". Directory does not exist.");
    }
    if (!require$$0__namespace.statSync(targetDirAbsPath).isDirectory()) {
        throw new Error("Cannot read contents of " + targetDirAbsPath + ", because it is not a directory.");
    }
    // This does the same thing as its containing function, `deepReadDirSync` (except that - purely for convenience - it
    // deals in absolute paths rather than relative ones). We need this to be separate from the outer function to preserve
    // the difference between `targetDirAbsPath` and `currentDirAbsPath`.
    var deepReadCurrentDir = function (currentDirAbsPath) {
        return require$$0__namespace.readdirSync(currentDirAbsPath).reduce(function (absPaths, itemName) {
            var itemAbsPath = require$$0__namespace$1.join(currentDirAbsPath, itemName);
            if (require$$0__namespace.statSync(itemAbsPath).isDirectory()) {
                return __spread$4(absPaths, deepReadCurrentDir(itemAbsPath));
            }
            return __spread$4(absPaths, [itemAbsPath]);
        }, []);
    };
    return deepReadCurrentDir(targetDirAbsPath).map(function (absPath) { return require$$0__namespace$1.relative(targetDirAbsPath, absPath); });
}
Recursively read the contents of a directory.

@param targetDir Absolute or relative path of the directory to scan. All returned paths will be relative to this
directory.
@returns Array holding all relative paths