1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- const fs = require('graceful-fs');
- const join = require('path').join;
- const _mkdirp = require('mkdirp');
- const promisify = require('./util/promisify');
- const mkdirp = promisify(_mkdirp);
- const fsReadFile = promisify(fs.readFile, { context: fs });
- const fsReaddir = promisify(fs.readdir, { context: fs });
- const fsWriteFile = promisify(fs.writeFile, { context: fs });
- class FileSerializer {
- constructor({ cacheDirPath }) {
- this.path = cacheDirPath;
- }
- read() {
- const assets = {};
- const cacheAssetDirPath = this.path;
- return mkdirp(cacheAssetDirPath)
- .then(() => fsReaddir(cacheAssetDirPath))
- .then(dir =>
- dir.map(name =>
- Promise.all([name, fsReadFile(join(cacheAssetDirPath, name))]),
- ),
- )
- .then(a => Promise.all(a))
- .then(_assets => {
- for (let i = 0; i < _assets.length; i++) {
- assets[_assets[i][0]] = _assets[i][1];
- }
- })
- .then(() => assets);
- }
- write(assetOps) {
- const cacheAssetDirPath = this.path;
- return mkdirp(cacheAssetDirPath)
- .then(() =>
- assetOps.map(({ key, value }) => {
- const assetPath = join(cacheAssetDirPath, key);
- return fsWriteFile(assetPath, value);
- }),
- )
- .then(a => Promise.all(a));
- }
- }
- module.exports = FileSerializer;
|