UNPKG

jack-cli

Version:

Chop through that Git log wicked fast!

155 lines 7.29 kB
"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __spreadArrays = (this && this.__spreadArrays) || function () { for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; for (var r = Array(s), k = 0, i = 0; i < il; i++) for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) r[k] = a[j]; return r; }; Object.defineProperty(exports, "__esModule", { value: true }); var types_1 = require("../types/types"); var colors_1 = require("../util/colors"); var config_util_1 = require("../util/config-util"); var util_functions_1 = require("../util/util-functions"); var store_1 = require("./store"); var COMMIT_SHA_REGEX = new RegExp(/[0-9a-f]{7,40}\b/); var blacklistPatterns = config_util_1.getBlacklistPatterns(); var showLineNumbers = config_util_1.getShowLineNumbers(); exports.reducer = function (state, action) { if (state === void 0) { state = store_1.INITIAL_STATE; } if (action.type === types_1.ActionType.ADD_COMMITS) { var indexesWithSHAs_1 = __spreadArrays(state.indexesWithSHAs); var newLines = action.payload.map(function (line, i) { if (COMMIT_SHA_REGEX.test(line) && !blacklistPatterns.some(function (blacklistPattern) { return blacklistPattern.test(line); })) { var indexWithLine = i + state.lines.length; indexesWithSHAs_1.push(indexWithLine); if (showLineNumbers) { return indexesWithSHAs_1.length + ": " + line; } } return line; }); var lines = __spreadArrays(state.lines, newLines); var visibleLines = __spreadArrays(state.visibleLines, newLines); var index = indexesWithSHAs_1.includes(state.index) ? state.index : util_functions_1.getNextIndex(indexesWithSHAs_1, state.index); return __assign(__assign({}, state), { SHA: state.SHA ? state.SHA : getSHA(lines[state.index], state.SHA), index: index, indexesWithSHAs: indexesWithSHAs_1, lines: lines, visibleLines: visibleLines }); } else if (action.type === types_1.ActionType.CLEAR_LOG) { return store_1.INITIAL_STATE; } else if (action.type === types_1.ActionType.MARK_SHA) { return __assign(__assign({}, state), { markedSHA: action.payload }); } else if (action.type === types_1.ActionType.NEXT_SEARCH_RESULT) { var index = state.index, SHA = state.SHA; var indexesWithSHAs = state.indexesWithSHAs, indexesMatchingSearch = state.indexesMatchingSearch, lines = state.lines; if (indexesMatchingSearch.length) { var searchResultIndex = util_functions_1.getNextIndex(__spreadArrays(indexesMatchingSearch), index); if (!indexesWithSHAs.includes(searchResultIndex)) { var nextSHAIndex = util_functions_1.getNextIndex(__spreadArrays(indexesWithSHAs), index); if (searchResultIndex < nextSHAIndex) { searchResultIndex = util_functions_1.getNextIndex(__spreadArrays(indexesMatchingSearch), searchResultIndex); } index = util_functions_1.getPreviousIndex(__spreadArrays(indexesWithSHAs), searchResultIndex); } else { index = searchResultIndex; } SHA = getSHA(lines[index], SHA); } return __assign(__assign({}, state), { SHA: SHA, index: index }); } else if (action.type === types_1.ActionType.PREVIOUS_SEARCH_RESULT) { var index = state.index, SHA = state.SHA; var indexesWithSHAs = state.indexesWithSHAs, indexesMatchingSearch = state.indexesMatchingSearch, lines = state.lines; if (indexesMatchingSearch.length) { var searchResultIndex = util_functions_1.getPreviousIndex(__spreadArrays(indexesMatchingSearch), index); if (!indexesWithSHAs.includes(searchResultIndex)) { index = util_functions_1.getPreviousIndex(__spreadArrays(indexesWithSHAs), searchResultIndex); } else { index = searchResultIndex; } SHA = getSHA(lines[index], SHA); } return __assign(__assign({}, state), { SHA: SHA, index: index }); } else if (action.type === types_1.ActionType.UPDATE_SEARCH) { var indexesMatchingSearch = action.payload.indexesMatchingSearch; var searchTerm = action.payload.searchTerm; var index = state.index, SHA = state.SHA; var indexesWithSHAs = state.indexesWithSHAs, lines = state.lines; var visibleLines_1 = __spreadArrays(lines); if (indexesMatchingSearch.length) { var searchRegex_1 = new RegExp(searchTerm.replace(new RegExp(' ', 'g'), '.*?'), 'gi'); indexesMatchingSearch.forEach(function (i) { visibleLines_1[i] = visibleLines_1[i].replace(searchRegex_1, colors_1.colors.searchHit); }); var searchResultIndex = index; if (!indexesMatchingSearch.includes(index)) { searchResultIndex = util_functions_1.getNextIndex(indexesMatchingSearch, index); } if (!indexesWithSHAs.includes(searchResultIndex)) { index = util_functions_1.getPreviousIndex(__spreadArrays(indexesWithSHAs), searchResultIndex); } else { index = searchResultIndex; } SHA = getSHA(lines[index], SHA); } return __assign(__assign({}, state), { SHA: SHA, index: index, indexesMatchingSearch: indexesMatchingSearch, search: searchTerm, visibleLines: visibleLines_1 }); } else if (action.type === types_1.ActionType.UPDATE_INDEX) { var indexFn = action.payload > 0 ? util_functions_1.getNextIndex : util_functions_1.getPreviousIndex; var index = state.index; var indexesWithSHAs = state.indexesWithSHAs; for (var i = Math.abs(action.payload); i > 0; i--) { index = indexFn(__spreadArrays(indexesWithSHAs), index); } return __assign(__assign({}, state), { SHA: getSHA(state.lines[index], state.SHA), index: index }); } else if (action.type === types_1.ActionType.UPDATE_STATUS) { return __assign(__assign({}, state), { status: action.payload }); } else if (action.type === types_1.ActionType.UPDATE_VIEW) { return __assign(__assign({}, state), { view: action.payload }); } else { return state; } }; var getSHA = function (lineText, defaultValue) { var matches = COMMIT_SHA_REGEX.exec(lineText); if (!matches) { return defaultValue; } var matchedSHA = matches[0]; if (matchedSHA) { return matchedSHA; } return defaultValue; }; //# sourceMappingURL=reducers.js.map