eslint-config-galex
Version:
personal ESLint ruleset of galex
109 lines (108 loc) • 4.53 kB
JavaScript
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.generateStandalone = exports.backupExistingEslintrc = exports.maybeLoadExistingEslintrc = exports.prettierOptions = exports.defaultEslintRcJsonPath = exports.loadPrettier = exports.maybeFindSettings = exports.standaloneSettingsName = void 0;
/* eslint-disable import/dynamic-import-chunkname */
const fs_1 = require("fs");
const lodash_merge_1 = __importDefault(require("lodash.merge"));
const path_1 = require("path");
const createConfig_1 = require("../createConfig");
const log = (message) => {
// eslint-disable-next-line no-console
console.log(`[eslint-config-galex] ${message}`);
};
exports.standaloneSettingsName = 'eslint-galex-settings.json';
const maybeFindSettings = () => {
try {
const path = (0, path_1.resolve)(`./${exports.standaloneSettingsName}`);
const result = (0, fs_1.readFileSync)(path, 'utf-8');
return JSON.parse(result);
}
catch {
return null;
}
};
exports.maybeFindSettings = maybeFindSettings;
const loadPrettier = async () => {
try {
const prettier = await Promise.resolve().then(() => __importStar(require('prettier')));
return prettier.format;
}
catch {
/* istanbul ignore next cant mock import */
log(`unable to load prettier, generated json won't be formatted`);
/* istanbul ignore next cant mock import */
return (source) => {
return source;
};
}
};
exports.loadPrettier = loadPrettier;
exports.defaultEslintRcJsonPath = './.eslintrc.json';
exports.prettierOptions = {
parser: 'json-stringify',
};
const maybeLoadExistingEslintrc = (path) => {
try {
log(`attempting to load existing ".eslintrc.json"`);
return JSON.parse((0, fs_1.readFileSync)(path, 'utf-8'));
}
catch {
return null;
}
};
exports.maybeLoadExistingEslintrc = maybeLoadExistingEslintrc;
const backupExistingEslintrc = (config, format) => {
const name = `./.eslintrc-${Date.now()}-bak.json`;
const targetPath = (0, path_1.resolve)(name);
log(`backing existing ".eslintrc.json" up at "${name}"`);
(0, fs_1.writeFileSync)(targetPath, format(JSON.stringify(config), exports.prettierOptions));
};
exports.backupExistingEslintrc = backupExistingEslintrc;
async function generateStandalone() {
try {
const settings = (0, exports.maybeFindSettings)();
const targetPath = (0, path_1.resolve)(exports.defaultEslintRcJsonPath);
const existingConfig = (0, exports.maybeLoadExistingEslintrc)(targetPath);
const format = await (0, exports.loadPrettier)();
if (existingConfig) {
(0, exports.backupExistingEslintrc)(existingConfig, format);
}
const config = (0, createConfig_1.createConfig)(settings ?? undefined);
const finalConfig = existingConfig ? (0, lodash_merge_1.default)(config, existingConfig) : config;
(0, fs_1.writeFileSync)(targetPath, format(JSON.stringify(finalConfig), exports.prettierOptions));
log(`wrote ".eslintrc.json" to "${targetPath}"`);
}
catch (error) {
/* istanbul ignore next only throwing errors so... */
if (error instanceof Error) {
log(`error -- ${error.message}`);
}
}
}
exports.generateStandalone = generateStandalone;
;