@neodx/vfs
Version:
Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover
54 lines (50 loc) • 1.63 kB
JavaScript
;
var operations = require('../_internal/operations-C-RkTDIe.cjs');
var pkgMisc = require('@neodx/pkg-misc');
var std = require('@neodx/std');
var createVfsPlugin = require('../_internal/create-vfs-plugin-1jK9qNm1.cjs');
function prettier({ auto = true } = {}) {
return createVfsPlugin.createVfsPlugin('prettier', (vfs, { context, beforeApply }) => {
const log = context.log.child('prettier');
const { task } = operations.createTaskRunner({
log
});
const format = task(
'format',
async (path, content) => {
const formattedContent = await pkgMisc.tryFormatPrettier(
path,
std.isTypeOfString(content) ? content : content.toString('utf-8')
);
if (formattedContent !== null) {
await vfs.write(path, formattedContent);
}
return formattedContent !== null;
},
{
mapSuccessMessage: (formatted, path) =>
`${operations.displayPath(context, path)} ${formatted ? 'formatted' : 'skipped'}`
}
);
vfs.format = async path => await format(path, await vfs.read(path, 'utf-8'));
vfs.formatAll = task(
'format all',
async () => {
await std.concurrently(
await operations.getVfsActions(context, ['create', 'update']),
async ({ path, content }) => format(path, content),
5
);
},
{
mapSuccessMessage: () => 'formatted all changed files'
}
);
if (auto) {
beforeApply(() => vfs.formatAll());
}
return vfs;
});
}
exports.prettier = prettier;
//# sourceMappingURL=prettier.cjs.map