@riddance/env
Version:
Too much code slows you down, creates risks, increases maintainability burdens, confuses AI. So let's commit less of it.
50 lines • 7.79 kB
JavaScript
import { readFile, writeFile } from 'node:fs/promises';
import { join, relative } from 'node:path';
import { check, format, resolveConfig } from 'prettier';
export async function formatted(reporter, path, files, signal) {
try {
const bad = await formatter(reporter, path, files, signal);
return bad.length === 0;
}
catch {
return false;
}
}
export async function formatFiles(path, files) {
const bad = await formatter(undefined, path, files);
return await Promise.all(bad.map(async (file) => {
await writeFile(join(path, file.filepath), await format(file.source, file));
return file.filepath;
}));
}
async function formatter(reporter, path, files, signal) {
const configPath = join(path, '.prettierrc.json');
const src = await Promise.all(files.map(file => Promise.all([
readFile(join(path, file), 'utf-8'),
resolveConfig(join(path, file), {
config: configPath,
editorconfig: true,
}),
])));
signal?.throwIfAborted();
const bad = (await Promise.all(src.map(([s, options], ix) => check(s, {
...options,
filepath: files[ix],
}))))
.map((s, ix) => (s ? undefined : relative(process.cwd(), files[ix] ?? '')))
.filter(s => s !== undefined);
if (bad.length === 0) {
return [];
}
if (reporter) {
for (const file of bad) {
reporter.error('Improperly formatted', file);
}
}
return bad.map(file => {
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
const [source, options] = src[files.indexOf(file)];
return { source, ...options, filepath: file };
});
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZm9ybWF0dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZm9ybWF0dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDdEQsT0FBTyxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUE7QUFDMUMsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLEVBQUUsYUFBYSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBR3ZELE1BQU0sQ0FBQyxLQUFLLFVBQVUsU0FBUyxDQUMzQixRQUFrQixFQUNsQixJQUFZLEVBQ1osS0FBZSxFQUNmLE1BQW1CO0lBRW5CLElBQUksQ0FBQztRQUNELE1BQU0sR0FBRyxHQUFHLE1BQU0sU0FBUyxDQUFDLFFBQVEsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLE1BQU0sQ0FBQyxDQUFBO1FBQzFELE9BQU8sR0FBRyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUE7SUFDM0IsQ0FBQztJQUFDLE1BQU0sQ0FBQztRQUNMLE9BQU8sS0FBSyxDQUFBO0lBQ2hCLENBQUM7QUFDTCxDQUFDO0FBRUQsTUFBTSxDQUFDLEtBQUssVUFBVSxXQUFXLENBQUMsSUFBWSxFQUFFLEtBQWU7SUFDM0QsTUFBTSxHQUFHLEdBQUcsTUFBTSxTQUFTLENBQUMsU0FBUyxFQUFFLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQTtJQUNuRCxPQUFPLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDcEIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxLQUFLLEVBQUMsSUFBSSxFQUFDLEVBQUU7UUFDakIsTUFBTSxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsTUFBTSxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFBO1FBQzNFLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQTtJQUN4QixDQUFDLENBQUMsQ0FDTCxDQUFBO0FBQ0wsQ0FBQztBQUVELEtBQUssVUFBVSxTQUFTLENBQ3BCLFFBQThCLEVBQzlCLElBQVksRUFDWixLQUFlLEVBQ2YsTUFBb0I7SUFFcEIsTUFBTSxVQUFVLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxrQkFBa0IsQ0FBQyxDQUFBO0lBQ2pELE1BQU0sR0FBRyxHQUFHLE1BQU0sT0FBTyxDQUFDLEdBQUcsQ0FDekIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUNiLE9BQU8sQ0FBQyxHQUFHLENBQUM7UUFDUixRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxJQUFJLENBQUMsRUFBRSxPQUFPLENBQUM7UUFDbkMsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLEVBQUU7WUFDNUIsTUFBTSxFQUFFLFVBQVU7WUFDbEIsWUFBWSxFQUFFLElBQUk7U0FDckIsQ0FBQztLQUNMLENBQUMsQ0FDTCxDQUNKLENBQUE7SUFDRCxNQUFNLEVBQUUsY0FBYyxFQUFFLENBQUE7SUFDeEIsTUFBTSxHQUFHLEdBQUcsQ0FDUixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2IsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQ3pCLEtBQUssQ0FBQyxDQUFDLEVBQUU7UUFDTCxHQUFHLE9BQU87UUFDVixRQUFRLEVBQUUsS0FBSyxDQUFDLEVBQUUsQ0FBQztLQUN0QixDQUFDLENBQ0wsQ0FDSixDQUNKO1NBQ0ksR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxHQUFHLEVBQUUsRUFBRSxLQUFLLENBQUMsRUFBRSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztTQUMxRSxNQUFNLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEtBQUssU0FBUyxDQUFDLENBQUE7SUFDakMsSUFBSSxHQUFHLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25CLE9BQU8sRUFBRSxDQUFBO0lBQ2IsQ0FBQztJQUNELElBQUksUUFBUSxFQUFFLENBQUM7UUFDWCxLQUFLLE1BQU0sSUFBSSxJQUFJLEdBQUcsRUFBRSxDQUFDO1lBQ3JCLFFBQVEsQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsSUFBSSxDQUFDLENBQUE7UUFDaEQsQ0FBQztJQUNMLENBQUM7SUFDRCxPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDbEIsb0VBQW9FO1FBQ3BFLE1BQU0sQ0FBQyxNQUFNLEVBQUUsT0FBTyxDQUFDLEdBQUcsR0FBRyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUUsQ0FBQTtRQUNuRCxPQUFPLEVBQUUsTUFBTSxFQUFFLEdBQUcsT0FBTyxFQUFFLFFBQVEsRUFBRSxJQUFJLEVBQUUsQ0FBQTtJQUNqRCxDQUFDLENBQUMsQ0FBQTtBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZWFkRmlsZSwgd3JpdGVGaWxlIH0gZnJvbSAnbm9kZTpmcy9wcm9taXNlcydcbmltcG9ydCB7IGpvaW4sIHJlbGF0aXZlIH0gZnJvbSAnbm9kZTpwYXRoJ1xuaW1wb3J0IHsgY2hlY2ssIGZvcm1hdCwgcmVzb2x2ZUNvbmZpZyB9IGZyb20gJ3ByZXR0aWVyJ1xuaW1wb3J0IHR5cGUgeyBSZXBvcnRlciB9IGZyb20gJy4vcmVwb3J0ZXIuanMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmb3JtYXR0ZWQoXG4gICAgcmVwb3J0ZXI6IFJlcG9ydGVyLFxuICAgIHBhdGg6IHN0cmluZyxcbiAgICBmaWxlczogc3RyaW5nW10sXG4gICAgc2lnbmFsOiBBYm9ydFNpZ25hbCxcbikge1xuICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IGJhZCA9IGF3YWl0IGZvcm1hdHRlcihyZXBvcnRlciwgcGF0aCwgZmlsZXMsIHNpZ25hbClcbiAgICAgICAgcmV0dXJuIGJhZC5sZW5ndGggPT09IDBcbiAgICB9IGNhdGNoIHtcbiAgICAgICAgcmV0dXJuIGZhbHNlXG4gICAgfVxufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZm9ybWF0RmlsZXMocGF0aDogc3RyaW5nLCBmaWxlczogc3RyaW5nW10pIHtcbiAgICBjb25zdCBiYWQgPSBhd2FpdCBmb3JtYXR0ZXIodW5kZWZpbmVkLCBwYXRoLCBmaWxlcylcbiAgICByZXR1cm4gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICAgIGJhZC5tYXAoYXN5bmMgZmlsZSA9PiB7XG4gICAgICAgICAgICBhd2FpdCB3cml0ZUZpbGUoam9pbihwYXRoLCBmaWxlLmZpbGVwYXRoKSwgYXdhaXQgZm9ybWF0KGZpbGUuc291cmNlLCBmaWxlKSlcbiAgICAgICAgICAgIHJldHVybiBmaWxlLmZpbGVwYXRoXG4gICAgICAgIH0pLFxuICAgIClcbn1cblxuYXN5bmMgZnVuY3Rpb24gZm9ybWF0dGVyKFxuICAgIHJlcG9ydGVyOiBSZXBvcnRlciB8IHVuZGVmaW5lZCxcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgZmlsZXM6IHN0cmluZ1tdLFxuICAgIHNpZ25hbD86IEFib3J0U2lnbmFsLFxuKSB7XG4gICAgY29uc3QgY29uZmlnUGF0aCA9IGpvaW4ocGF0aCwgJy5wcmV0dGllcnJjLmpzb24nKVxuICAgIGNvbnN0IHNyYyA9IGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICBmaWxlcy5tYXAoZmlsZSA9PlxuICAgICAgICAgICAgUHJvbWlzZS5hbGwoW1xuICAgICAgICAgICAgICAgIHJlYWRGaWxlKGpvaW4ocGF0aCwgZmlsZSksICd1dGYtOCcpLFxuICAgICAgICAgICAgICAgIHJlc29sdmVDb25maWcoam9pbihwYXRoLCBmaWxlKSwge1xuICAgICAgICAgICAgICAgICAgICBjb25maWc6IGNvbmZpZ1BhdGgsXG4gICAgICAgICAgICAgICAgICAgIGVkaXRvcmNvbmZpZzogdHJ1ZSxcbiAgICAgICAgICAgICAgICB9KSxcbiAgICAgICAgICAgIF0pLFxuICAgICAgICApLFxuICAgIClcbiAgICBzaWduYWw/LnRocm93SWZBYm9ydGVkKClcbiAgICBjb25zdCBiYWQgPSAoXG4gICAgICAgIGF3YWl0IFByb21pc2UuYWxsKFxuICAgICAgICAgICAgc3JjLm1hcCgoW3MsIG9wdGlvbnNdLCBpeCkgPT5cbiAgICAgICAgICAgICAgICBjaGVjayhzLCB7XG4gICAgICAgICAgICAgICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgICAgICAgICAgICAgIGZpbGVwYXRoOiBmaWxlc1tpeF0sXG4gICAgICAgICAgICAgICAgfSksXG4gICAgICAgICAgICApLFxuICAgICAgICApXG4gICAgKVxuICAgICAgICAubWFwKChzLCBpeCkgPT4gKHMgPyB1bmRlZmluZWQgOiByZWxhdGl2ZShwcm9jZXNzLmN3ZCgpLCBmaWxlc1tpeF0gPz8gJycpKSlcbiAgICAgICAgLmZpbHRlcihzID0+IHMgIT09IHVuZGVmaW5lZClcbiAgICBpZiAoYmFkLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gW11cbiAgICB9XG4gICAgaWYgKHJlcG9ydGVyKSB7XG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBiYWQpIHtcbiAgICAgICAgICAgIHJlcG9ydGVyLmVycm9yKCdJbXByb3Blcmx5IGZvcm1hdHRlZCcsIGZpbGUpXG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGJhZC5tYXAoZmlsZSA9PiB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tbm9uLW51bGwtYXNzZXJ0aW9uXG4gICAgICAgIGNvbnN0IFtzb3VyY2UsIG9wdGlvbnNdID0gc3JjW2ZpbGVzLmluZGV4T2YoZmlsZSldIVxuICAgICAgICByZXR1cm4geyBzb3VyY2UsIC4uLm9wdGlvbnMsIGZpbGVwYXRoOiBmaWxlIH1cbiAgICB9KVxufVxuIl19