Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 | 24x 24x 81x 87x 87x 87x 87x 31x 31x 31x 31x 5x 5x 51x 51x 51x 51x 3x 3x 3x 3x 3x | import {join} from 'path';
import {existsSync} from 'fs-extra';
import BasicEditor from './BasicEditor';
import {parse} from './common';
const {assign} = Object;
const INDENT_SPACES = 4;
/**
* Create and edit a JSON file with a fluent API
* @param {string} filename Name of file to edit
* @param {object} [contents={}] Contents of file
* @return {JsonEditor} JsonEditor class (extends {@link BasicEditor})
*/
export const createJsonEditor = (filename, contents = {}) => class JsonEditor extends BasicEditor {
contents = contents;
constructor(cwd = process.cwd()) {
super();
const path = join(cwd, filename);
assign(this, {path});
}
create() {
const self = this;
const {contents, fs, path, queue} = self;
existsSync(path) || queue.add(() => fs.writeJSON(path, contents, null, INDENT_SPACES));
return self;
}
read() {
const {fs, path} = this;
return fs.readJSON(path) || '';
}
extend(contents) {
const self = this;
const {fs, path, queue} = self;
queue.add(() => fs.extendJSON(path, contents, null, INDENT_SPACES));
return self;
}
/**
* Check if package.json manifest file has dependencies (dependencies or devDependencies)
* @param {...string} modules npm module names
* @return {Boolean} Has at least one dependency (true) or none (false)
*/
hasSome(...modules) {
const {keys} = Object;
const pkg = this.read();
const {dependencies, devDependencies} = parse(pkg);
const installed = [...keys(dependencies ? dependencies : {}), ...keys(devDependencies ? devDependencies : {})];
return modules.some(module => installed.includes(module));
}
/**
* Check if package.json manifest file has dependencies (dependencies or devDependencies)
* @param {...string} modules npm module names
* @return {Boolean} Has all dependencies (true) or not all (false)
*/
hasAll(...modules) {
const {keys} = Object;
const pkg = this.read();
const {dependencies, devDependencies} = parse(pkg);
const installed = [...keys(dependencies ? dependencies : {}), ...keys(devDependencies ? devDependencies : {})];
return modules.every(module => installed.includes(module));
}
};
export default createJsonEditor; |