@typed/content-hash
Version:
Content hash a directory of HTML/JS/CSS files and other static assets
20 lines • 1.08 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.fsReadDirectory = void 0;
const Env_1 = require("@typed/fp/Env");
const FxEnv_1 = require("@typed/fp/FxEnv");
const fs_1 = require("fs");
const path_1 = require("path");
const logging_1 = require("../application/services/logging");
const readdir = (directory) => (0, Env_1.fromTask)(() => fs_1.promises.readdir(directory).then((paths) => paths.map((p) => path_1.posix.join(directory, p))));
const isFile = (path) => (0, fs_1.statSync)(path).isFile();
const isDirectory = (path) => (0, fs_1.statSync)(path).isDirectory();
const fsReadDirectory = (directory) => (0, FxEnv_1.Do)(function* (_) {
yield* _((0, logging_1.debug)(`Reading Directory ${directory}...`));
const paths = yield* _(readdir(directory));
const files = paths.filter(isFile);
const directories = yield* _((0, Env_1.zip)(paths.filter(isDirectory).map(exports.fsReadDirectory)));
return [...files, ...directories.flat()];
});
exports.fsReadDirectory = fsReadDirectory;
//# sourceMappingURL=fsReadDirectory.js.map