json-viewer
Version:
Pretty JSON viewer for the terminal
92 lines (68 loc) • 4.01 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.getAutoCompletion = exports.getMatchingFile = exports.getMatchingPath = undefined;
var _ramda = require('ramda');
var _ramda2 = _interopRequireDefault(_ramda);
var _fsJetpack = require('fs-jetpack');
var _fsJetpack2 = _interopRequireDefault(_fsJetpack);
var _path = require('path');
var _path2 = _interopRequireDefault(_path);
var _files = require('../files');
var _json = require('../json');
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
var getMatchingPath = exports.getMatchingPath = function getMatchingPath() {
var argvPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var currentDirectory = _fsJetpack2.default.cwd();
var targetPath = _fsJetpack2.default.exists(argvPath) ? argvPath : _ramda2.default.compose(_ramda2.default.join('/'), _ramda2.default.dropLast(1), _ramda2.default.split('/'))(argvPath);
var targetFile = _ramda2.default.compose(_ramda2.default.last, _ramda2.default.split('/'))(argvPath);
var targetPathFiles = [].concat(_fsJetpack2.default.list(_path2.default.resolve(currentDirectory, targetPath))).filter(Boolean);
var fileMatchRegexp = RegExp(targetFile, 'gmi');
return targetPath ? _ramda2.default.compose(_ramda2.default.filter(function (item) {
return item.match(fileMatchRegexp);
}), _ramda2.default.filter(function (item) {
return typeof item === 'string';
}), _ramda2.default.filter(Boolean))(targetPathFiles) : [].concat(_toConsumableArray(targetPathFiles));
};
var getMatchingFile = exports.getMatchingFile = function getMatchingFile() {
var argvPath = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
var argvBranch = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
var currentDirectory = _fsJetpack2.default.cwd();
var targetFile = _path2.default.resolve(currentDirectory, argvPath);
var targetBranch = argvBranch;
var targetBranchPath = targetBranch.split(_json.deepJsonRegex);
var targetBranchAncestor = targetBranchPath.length <= 1 ? '' : _ramda2.default.compose(_ramda2.default.join('.'), _ramda2.default.dropLast(1))(targetBranchPath) + '.';
var targetProperty = _ramda2.default.compose(_ramda2.default.last, _ramda2.default.split(_json.deepJsonRegex))(targetBranch);
var fileContents = (0, _files.readJsonFile)(targetFile);
var isMatchingPropertyName = function isMatchingPropertyName(item) {
return item.indexOf(targetProperty) === 0;
};
var mapItemNameToBranchPath = function mapItemNameToBranchPath(item) {
return '' + targetBranchAncestor + item;
};
if (fileContents) {
return _ramda2.default.compose(_ramda2.default.map(mapItemNameToBranchPath), _ramda2.default.filter(isMatchingPropertyName))((0, _json.getDeepJsonChildren)(fileContents, targetBranchAncestor));
} else {
process.stderr.write('\n' + targetFile + ' is not a valid JSON file.\n');
}
return [];
};
var getAutoCompletion = exports.getAutoCompletion = function getAutoCompletion(current) {
var argv = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
if (argv && argv._) {
var filePath = argv._[1];
var filePathIsString = typeof filePath === 'string';
var jsonBranch = argv._[2];
var argumentsCount = argv._.length;
var normalizedFilePath = filePathIsString ? (0, _path.normalize)(filePath) : '';
var targetsExistingFile = _fsJetpack2.default.exists(normalizedFilePath) === 'file';
if (argumentsCount === 2 && !targetsExistingFile) {
return getMatchingPath(normalizedFilePath);
} else if (argumentsCount === 3 || targetsExistingFile) {
return getMatchingFile(normalizedFilePath, jsonBranch);
}
}
return [];
};
;