/
trixden
/
prerender
Обзор
Документация
Войти
/
trixden
/
prerender
Код
Запросы
0
Задачи
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
src/helpers/filesystem.ts
45 строк
1 KB
Denis Karimov
Initial
07 авг 2023, 02:32
07 авг 2023, 02:32
8d96366
Код
Авторство
О чём код?
import fs from 'fs'; import nodePath from 'path'; import { CacheObjectModel } from '../models/cache-object'; import { mkdirp } from 'mkdirp'; export const getPathFromUrl = (url: string): string => { const urlObject = new URL(url); const postfix = urlObject.pathname.endsWith('/') ? '/index.json' : '.json'; return nodePath.join(__dirname, '../..', String(process.env.CACHE_DIR), urlObject.hostname, urlObject.pathname + postfix); } export const getFileExist = (path: string): Promise<boolean> => { return new Promise((resolve) => { fs.access(path, fs.constants.F_OK, (err) => { resolve(err ? false : true); }) }) } export const getFileStat = (path: string): Promise<fs.Stats> => { return new Promise((resolve, reject) => { fs.stat(path, (err, stats) => { err ? reject(err) : resolve(stats); }) }) } export const writeFile = (path: string, content: CacheObjectModel): Promise<void> => { return new Promise((resolve, reject) => { mkdirp(nodePath.dirname(path)).then(() => ( fs.writeFile(path, JSON.stringify(content), {flag: 'w'}, (err) => { err ? reject(err) : resolve(); }) )); }); } export const getFile = (path: string): Promise<CacheObjectModel> => { return new Promise((resolve, reject) => { fs.readFile(path, (err, data) => { if (err) reject(err); else resolve(JSON.parse(data.toString()) as CacheObjectModel) }); }) }