diff --git a/package.json b/package.json index 3b498041df..f98ef81ef1 100644 --- a/package.json +++ b/package.json @@ -54,7 +54,6 @@ "dagre-d3": "^0.6.4", "graphlib": "^2.1.7", "he": "^1.2.0", - "lodash": "^4.17.11", "minify": "^4.1.1", "moment-mini": "^2.22.1", "scope-css": "^1.2.1" diff --git a/src/diagrams/git/gitGraphAst.js b/src/diagrams/git/gitGraphAst.js index f9dc85383b..7f9fd785fb 100644 --- a/src/diagrams/git/gitGraphAst.js +++ b/src/diagrams/git/gitGraphAst.js @@ -1,4 +1,3 @@ -import _ from 'lodash'; import randomString from 'crypto-random-string'; import { logger } from '../../logger'; @@ -43,6 +42,18 @@ function isReachableFrom(currentCommit, otherCommit) { return false; } +function uniqBy(list, fn) { + const recordMap = Object.create(null); + return list.reduce((out, item) => { + const key = fn(item); + if (!recordMap[key]) { + recordMap[key] = true; + out.push(item); + } + return out; + }, []); +} + export const setDirection = function(dir) { direction = dir; }; @@ -142,7 +153,10 @@ function upsert(arr, key, newval) { } function prettyPrintCommitHistory(commitArr) { - const commit = _.maxBy(commitArr, 'seq'); + const commit = commitArr.reduce((out, commit) => { + if (out.seq > commit.seq) return out; + return commit; + }, commitArr[0]); let line = ''; commitArr.forEach(function(c) { if (c === commit) { @@ -166,7 +180,7 @@ function prettyPrintCommitHistory(commitArr) { const nextCommit = commits[commit.parent]; upsert(commitArr, commit, nextCommit); } - commitArr = _.uniqBy(commitArr, 'id'); + commitArr = uniqBy(commitArr, c => c.id); prettyPrintCommitHistory(commitArr); } @@ -205,7 +219,8 @@ export const getCommitsArray = function() { commitArr.forEach(function(o) { logger.debug(o.id); }); - return _.orderBy(commitArr, ['seq'], ['desc']); + commitArr.sort((a, b) => b.seq - a.seq); + return commitArr; }; export const getCurrentBranch = function() { return curBranch; diff --git a/src/diagrams/git/gitGraphRenderer.js b/src/diagrams/git/gitGraphRenderer.js index 7809f80120..2fc91ceb90 100644 --- a/src/diagrams/git/gitGraphRenderer.js +++ b/src/diagrams/git/gitGraphRenderer.js @@ -1,5 +1,4 @@ import { curveBasis, line, select } from 'd3'; -import _ from 'lodash'; import db from './gitGraphAst'; import gitGraphParser from './parser/gitGraph'; @@ -307,7 +306,7 @@ export const draw = function(txt, id, ver) { // Parse the graph definition parser.parse(txt + '\n'); - config = _.assign(config, apiConfig, db.getOptions()); + config = Object.assign(config, apiConfig, db.getOptions()); logger.debug('effective options', config); const direction = db.getDirection(); allCommitsDict = db.getCommits();