UNPKG

@neodx/vfs

Version:

Simple virtual file system - working dir context, lazy changes, different modes, integrations and moreover

54 lines (50 loc) 1.63 kB
'use strict'; 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