UNPKG

json-viewer

Version:

Pretty JSON viewer for the terminal

92 lines (68 loc) 4.01 kB
'use strict'; 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 []; };