jack-cli
Version:
Chop through that Git log wicked fast!
155 lines • 7.29 kB
JavaScript
;
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