tailwind-nextjs-blog/lib/utils/files.ts
2022-10-17 15:37:01 +00:00

34 lines
743 B
TypeScript

import fs from 'fs';
import path from 'path';
const pipe =
(...fns) =>
(x) =>
fns.reduce((v, f) => f(v), x);
const flattenArray = (input) =>
input.reduce(
(acc, item) => [...acc, ...(Array.isArray(item) ? item : [item])],
[]
);
const map = (fn) => (input) => input.map(fn);
const walkDir = (fullPath: string) => {
return fs.statSync(fullPath).isFile()
? fullPath
: getAllFilesRecursively(fullPath);
};
const pathJoinPrefix = (prefix: string) => (extraPath: string) =>
path.join(prefix, extraPath);
const getAllFilesRecursively = (folder: string): string[] =>
pipe(
fs.readdirSync,
map(pipe(pathJoinPrefix(folder), walkDir)),
flattenArray
)(folder);
export default getAllFilesRecursively;