git-truck 1.0.2 → 1.0.15-0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,28 @@
1
1
  # Git Truck 🚛
2
2
 
3
- Get a truckload of visualizations for your git repository, and find out if your project has a good [truck factor](https://www.agileadvice.com/2005/05/15/agilemanagement/truck-factor/)!
3
+ Git-Truck provides you with a truckload of visualizations for your git repository, and find out if your project has a good [truck factor](https://www.agileadvice.com/2005/05/15/agilemanagement/truck-factor/):
4
4
 
5
- Git Truck gives an overview of your folder-structure, which users have contributed most to which files, and more.
6
5
 
7
- ![billede](https://user-images.githubusercontent.com/23435481/161273053-a9420c2b-2b80-4f73-a78e-39dec822fab1.png)
6
+ ### 1. The files in your system where you have a single contributor (i.e., truck-factor = 1)
7
+
8
+ <img width="1912" alt="image" src="https://user-images.githubusercontent.com/464519/167393939-8d683732-4583-44fe-99a3-36c818761bcb.png">
9
+
10
+
11
+ ### 2. How the various developers contribute to your codebase
12
+
13
+ <img width="1913" alt="image" src="https://user-images.githubusercontent.com/464519/167394548-ca66665a-a699-44d7-8a97-bc7309c72f8a.png">
14
+
15
+
16
+
17
+ ### 3. The parts of the system that are most often changed
18
+
19
+ <img width="1912" alt="image" src="https://user-images.githubusercontent.com/464519/167395118-6a4f50f4-5f37-4e0d-bcc8-144797b83e65.png">
20
+
21
+
22
+ ### 4. You can also merge multiple developer accounts
23
+
24
+ <img width="1907" alt="image" src="https://user-images.githubusercontent.com/464519/167394405-67bd5b5d-be50-444e-8a1f-68af083a6cba.png">
25
+
8
26
 
9
27
  ## [Prerequisites](#prerequisites)
10
28
 
package/build/index.js CHANGED
@@ -1840,7 +1840,7 @@ function handleRequest(request, responseStatusCode, responseHeaders, remixContex
1840
1840
  });
1841
1841
  }
1842
1842
 
1843
- // route:C:\Users\Tjoms\Documents\GitHub\git-visual\src\root.tsx
1843
+ // route:C:\Users\Tjoms\Documents\GitHub\git-truck\src\root.tsx
1844
1844
  var root_exports = {};
1845
1845
  __export(root_exports, {
1846
1846
  CatchBoundary: () => CatchBoundary,
@@ -1866,13 +1866,34 @@ var styles_default = "/build/_assets/index-ISZFG75V.css";
1866
1866
  // src/styles/Chart.css
1867
1867
  var Chart_default = "/build/_assets/Chart-OOZGWRB3.css";
1868
1868
 
1869
- // route:C:\Users\Tjoms\Documents\GitHub\git-visual\src\root.tsx
1869
+ // route:C:\Users\Tjoms\Documents\GitHub\git-truck\src\root.tsx
1870
1870
  var import_react = require("react");
1871
1871
 
1872
1872
  // src/components/util.tsx
1873
1873
  init_react();
1874
1874
  var import_material = require("@styled-icons/material");
1875
1875
  var import_styled_components2 = __toESM(require_styled_components_cjs());
1876
+ var import_semver = require("semver");
1877
+ var branchCompare = (a, b) => {
1878
+ const defaultBranchNames = ["main", "master"];
1879
+ if (defaultBranchNames.includes(a))
1880
+ return -1;
1881
+ if (defaultBranchNames.includes(b))
1882
+ return 1;
1883
+ return a.toLowerCase().localeCompare(b.toLowerCase());
1884
+ };
1885
+ var semverCompare = (a, b) => {
1886
+ const validA = (0, import_semver.valid)((0, import_semver.clean)(a));
1887
+ const validB = (0, import_semver.valid)((0, import_semver.clean)(b));
1888
+ if (!validA || !validB) {
1889
+ if (validA)
1890
+ return 1;
1891
+ if (validB)
1892
+ return -1;
1893
+ return a.toLowerCase().localeCompare(b.toLowerCase());
1894
+ }
1895
+ return (0, import_semver.compare)(validA, validB);
1896
+ };
1876
1897
  var titleBaseStyles = import_styled_components2.css`
1877
1898
  font-weight: bold;
1878
1899
  margin-bottom: 0;
@@ -2121,7 +2142,7 @@ var Actions = import_styled_components2.default.div`
2121
2142
  display: flex;
2122
2143
  `;
2123
2144
 
2124
- // route:C:\Users\Tjoms\Documents\GitHub\git-visual\src\root.tsx
2145
+ // route:C:\Users\Tjoms\Documents\GitHub\git-truck\src\root.tsx
2125
2146
  var meta = () => {
2126
2147
  return { title: "Git Truck" };
2127
2148
  };
@@ -2160,7 +2181,7 @@ var ErrorBoundary = ({ error: error2 }) => {
2160
2181
  return /* @__PURE__ */ React.createElement("html", null, /* @__PURE__ */ React.createElement("head", null, /* @__PURE__ */ React.createElement("title", null, "Oops! An error wasn't handled"), /* @__PURE__ */ React.createElement(import_remix2.Meta, null), /* @__PURE__ */ React.createElement(import_remix2.Links, null)), /* @__PURE__ */ React.createElement("body", null, /* @__PURE__ */ React.createElement("h1", null, error2.message), /* @__PURE__ */ React.createElement(Code, null, error2.stack), /* @__PURE__ */ React.createElement(import_remix2.Scripts, null)));
2161
2182
  };
2162
2183
 
2163
- // route:C:\Users\Tjoms\Documents\GitHub\git-visual\src\routes\$repo.$.tsx
2184
+ // route:C:\Users\Tjoms\Documents\GitHub\git-truck\src\routes\$repo.$.tsx
2164
2185
  var repo_exports = {};
2165
2186
  __export(repo_exports, {
2166
2187
  ErrorBoundary: () => ErrorBoundary2,
@@ -2174,7 +2195,6 @@ var import_path8 = require("path");
2174
2195
  var import_react18 = require("react");
2175
2196
  var import_react_use6 = require("react-use");
2176
2197
  var import_remix7 = __toESM(require_remix());
2177
- var import_semver_compare2 = __toESM(require("semver-compare"));
2178
2198
  var import_styled_components18 = __toESM(require_styled_components_cjs());
2179
2199
 
2180
2200
  // src/analyzer/analyze.server.ts
@@ -2281,7 +2301,7 @@ var import_path2 = require("path");
2281
2301
 
2282
2302
  // package.json
2283
2303
  var name = "git-truck";
2284
- var version = "1.0.2";
2304
+ var version = "1.0.15-0";
2285
2305
  var private2 = false;
2286
2306
  var description = "Visualizing a Git repository";
2287
2307
  var license = "MIT";
@@ -2338,7 +2358,7 @@ var dependencies = {
2338
2358
  "react-use": "^17.3.2",
2339
2359
  "react-use-size": "^2.0.4",
2340
2360
  remix: "^1.2.3",
2341
- "semver-compare": "^1.0.0",
2361
+ semver: "^7.3.7",
2342
2362
  "styled-components": "^5.3.3",
2343
2363
  yargs: "^17.4.0"
2344
2364
  };
@@ -2352,6 +2372,7 @@ var devDependencies = {
2352
2372
  "@types/morgan": "^1.9.3",
2353
2373
  "@types/react": "^17.0.40",
2354
2374
  "@types/react-dom": "^17.0.9",
2375
+ "@types/semver": "^7.3.9",
2355
2376
  "@types/semver-compare": "^1.0.1",
2356
2377
  "@types/styled-components": "^5.1.24",
2357
2378
  "@types/yargs": "^17.0.10",
@@ -2579,7 +2600,6 @@ async function getGitTruckInfo() {
2579
2600
  init_react();
2580
2601
  var import_path3 = require("path");
2581
2602
  var import_fs2 = require("fs");
2582
- var import_semver_compare = __toESM(require("semver-compare"));
2583
2603
  var _GitCaller = class {
2584
2604
  constructor(repo) {
2585
2605
  this.useCache = true;
@@ -2736,10 +2756,11 @@ var _GitCaller = class {
2736
2756
  gitRefs.Tags[path] = hash;
2737
2757
  break;
2738
2758
  default:
2739
- throw new Error(`Analyser error, ref_type: ${ref_type}, is invalid`);
2759
+ break;
2740
2760
  }
2741
2761
  }
2742
- gitRefs.Tags = Object.fromEntries(Object.entries(gitRefs.Tags).sort(([a], [b]) => (0, import_semver_compare.default)(a, b)));
2762
+ gitRefs.Branches = Object.fromEntries(Object.entries(gitRefs.Branches).sort(([a], [b]) => branchCompare(a, b)));
2763
+ gitRefs.Tags = Object.fromEntries(Object.entries(gitRefs.Tags).sort(([a], [b]) => semverCompare(a, b) * -1));
2743
2764
  return gitRefs;
2744
2765
  }
2745
2766
  async gitLog() {
@@ -3270,7 +3291,7 @@ init_react();
3270
3291
 
3271
3292
  // node_modules/yargs-parser/build/lib/index.js
3272
3293
  init_react();
3273
- var import_util5 = require("util");
3294
+ var import_util6 = require("util");
3274
3295
  var import_path5 = require("path");
3275
3296
 
3276
3297
  // node_modules/yargs-parser/build/lib/string-utils.js
@@ -4229,7 +4250,7 @@ var parser = new YargsParser({
4229
4250
  env: () => {
4230
4251
  return env;
4231
4252
  },
4232
- format: import_util5.format,
4253
+ format: import_util6.format,
4233
4254
  normalize: import_path5.normalize,
4234
4255
  resolve: import_path5.resolve,
4235
4256
  require: (path) => {
@@ -5634,10 +5655,10 @@ function sum_default(value) {
5634
5655
 
5635
5656
  // node_modules/d3-hierarchy/src/hierarchy/sort.js
5636
5657
  init_react();
5637
- function sort_default(compare) {
5658
+ function sort_default(compare2) {
5638
5659
  return this.eachBefore(function(node) {
5639
5660
  if (node.children) {
5640
- node.children.sort(compare);
5661
+ node.children.sort(compare2);
5641
5662
  }
5642
5663
  });
5643
5664
  }
@@ -6563,7 +6584,7 @@ function createPartitionedHiearchy(data, paddedSizeProps, chartType, path) {
6563
6584
  }).sort((a, b) => b.value !== void 0 && a.value !== void 0 ? b.value - a.value : 0);
6564
6585
  switch (chartType) {
6565
6586
  case "TREE_MAP":
6566
- const treeMapPartition = treemap_default().size([paddedSizeProps.width, paddedSizeProps.height]).paddingInner(2).paddingOuter(treemapPadding);
6587
+ const treeMapPartition = treemap_default().size([paddedSizeProps.width, paddedSizeProps.height]).paddingInner(2).paddingOuter(4).paddingTop(treemapPadding);
6567
6588
  const tmPartition = treeMapPartition(hiearchy);
6568
6589
  filterTree(tmPartition, (child) => {
6569
6590
  const cast = child;
@@ -7143,7 +7164,7 @@ var AliasEntryRoot = import_styled_components17.default.div`
7143
7164
  var CheckboxWrapper = import_styled_components17.default.div``;
7144
7165
  var Checkbox2 = import_styled_components17.default.input.attrs({ type: "checkbox" })``;
7145
7166
 
7146
- // route:C:\Users\Tjoms\Documents\GitHub\git-visual\src\routes\$repo.$.tsx
7167
+ // route:C:\Users\Tjoms\Documents\GitHub\git-truck\src\routes\$repo.$.tsx
7147
7168
  var invalidateCache = false;
7148
7169
  var loader = async ({ params }) => {
7149
7170
  if (!params["repo"] || !params["*"]) {
@@ -7271,7 +7292,7 @@ function Repo() {
7271
7292
  isFullscreen
7272
7293
  }, /* @__PURE__ */ React.createElement(SidePanel, null, /* @__PURE__ */ React.createElement(GlobalInfo, null), /* @__PURE__ */ React.createElement(Feedback, null), /* @__PURE__ */ React.createElement(Options, null), /* @__PURE__ */ React.createElement(SearchBar, null), /* @__PURE__ */ React.createElement(Spacer, null)), typeof document !== "undefined" ? /* @__PURE__ */ React.createElement(Main, {
7273
7294
  fullscreenState: [isFullscreen, setIsFullscreen]
7274
- }) : /* @__PURE__ */ React.createElement("div", null), /* @__PURE__ */ React.createElement(SidePanel, null, gitTruckInfo.latestVersion && (0, import_semver_compare2.default)(gitTruckInfo.latestVersion, gitTruckInfo.version) === 1 ? /* @__PURE__ */ React.createElement(UpdateNotifier, null) : null, analyzerData.hiddenFiles.length > 0 ? /* @__PURE__ */ React.createElement(HiddenFiles, null) : null, /* @__PURE__ */ React.createElement(Details, {
7295
+ }) : /* @__PURE__ */ React.createElement("div", null), /* @__PURE__ */ React.createElement(SidePanel, null, gitTruckInfo.latestVersion && semverCompare(gitTruckInfo.latestVersion, gitTruckInfo.version) === 1 ? /* @__PURE__ */ React.createElement(UpdateNotifier, null) : null, analyzerData.hiddenFiles.length > 0 ? /* @__PURE__ */ React.createElement(HiddenFiles, null) : null, /* @__PURE__ */ React.createElement(Details, {
7275
7296
  showUnionAuthorsModal
7276
7297
  }), /* @__PURE__ */ React.createElement(Grower, null), /* @__PURE__ */ React.createElement(Legend, {
7277
7298
  showUnionAuthorsModal
@@ -7313,7 +7334,7 @@ var Container = import_styled_components18.default.div`
7313
7334
  }
7314
7335
  `;
7315
7336
 
7316
- // route:C:\Users\Tjoms\Documents\GitHub\git-visual\src\routes\index.tsx
7337
+ // route:C:\Users\Tjoms\Documents\GitHub\git-truck\src\routes\index.tsx
7317
7338
  var routes_exports = {};
7318
7339
  __export(routes_exports, {
7319
7340
  action: () => action2,
@@ -7360,7 +7381,7 @@ function AnalyzingIndicator() {
7360
7381
  }), /* @__PURE__ */ React.createElement(LoadingText, null, "Analyzing...")));
7361
7382
  }
7362
7383
 
7363
- // route:C:\Users\Tjoms\Documents\GitHub\git-visual\src\routes\index.tsx
7384
+ // route:C:\Users\Tjoms\Documents\GitHub\git-truck\src\routes\index.tsx
7364
7385
  var import_path9 = require("path");
7365
7386
  var import_react_use7 = require("react-use");
7366
7387
  var import_react19 = require("react");
@@ -7491,7 +7512,7 @@ var AnalyzedTag = import_styled_components20.default.span`
7491
7512
 
7492
7513
  // server-assets-manifest:@remix-run/dev/assets-manifest
7493
7514
  init_react();
7494
- var assets_manifest_default = { "version": "f28fada1", "entry": { "module": "/build/entry.client-CDN524WE.js", "imports": ["/build/_shared/chunk-Y7FU7OLJ.js", "/build/_shared/chunk-YDCVFN7Q.js"] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "module": "/build/root-XW5NDZMC.js", "imports": ["/build/_shared/chunk-FSZBSYJE.js", "/build/_shared/chunk-OFVESGNJ.js"], "hasAction": false, "hasLoader": false, "hasCatchBoundary": true, "hasErrorBoundary": true }, "routes/$repo.$": { "id": "routes/$repo.$", "parentId": "root", "path": ":repo/*", "index": void 0, "caseSensitive": void 0, "module": "/build/routes/$repo.$-RMFPDYZL.js", "imports": ["/build/_shared/chunk-6KG2XMTE.js"], "hasAction": true, "hasLoader": true, "hasCatchBoundary": false, "hasErrorBoundary": true }, "routes/index": { "id": "routes/index", "parentId": "root", "path": void 0, "index": true, "caseSensitive": void 0, "module": "/build/routes/index-HEMPWSNO.js", "imports": ["/build/_shared/chunk-6KG2XMTE.js"], "hasAction": true, "hasLoader": true, "hasCatchBoundary": false, "hasErrorBoundary": false } }, "url": "/build/manifest-F28FADA1.js" };
7515
+ var assets_manifest_default = { "version": "03d68990", "entry": { "module": "/build/entry.client-CDN524WE.js", "imports": ["/build/_shared/chunk-Y7FU7OLJ.js", "/build/_shared/chunk-YDCVFN7Q.js"] }, "routes": { "root": { "id": "root", "parentId": void 0, "path": "", "index": void 0, "caseSensitive": void 0, "module": "/build/root-RVNUJ3UD.js", "imports": ["/build/_shared/chunk-FSZBSYJE.js", "/build/_shared/chunk-4LCJRRXI.js"], "hasAction": false, "hasLoader": false, "hasCatchBoundary": true, "hasErrorBoundary": true }, "routes/$repo.$": { "id": "routes/$repo.$", "parentId": "root", "path": ":repo/*", "index": void 0, "caseSensitive": void 0, "module": "/build/routes/$repo.$-FUAN2AFA.js", "imports": ["/build/_shared/chunk-6WSXAQ4H.js"], "hasAction": true, "hasLoader": true, "hasCatchBoundary": false, "hasErrorBoundary": true }, "routes/index": { "id": "routes/index", "parentId": "root", "path": void 0, "index": true, "caseSensitive": void 0, "module": "/build/routes/index-QLBDLJWG.js", "imports": ["/build/_shared/chunk-6WSXAQ4H.js"], "hasAction": true, "hasLoader": true, "hasCatchBoundary": false, "hasErrorBoundary": false } }, "url": "/build/manifest-03D68990.js" };
7495
7516
 
7496
7517
  // server-entry-module:@remix-run/dev/server-build
7497
7518
  var entry = { module: entry_server_exports };
@@ -7529,7 +7550,6 @@ var import_express2 = __toESM(require("express"));
7529
7550
  var import_morgan = __toESM(require("morgan"));
7530
7551
  var import_open = __toESM(require("open"));
7531
7552
  var import_path10 = require("path");
7532
- var import_semver_compare3 = __toESM(require("semver-compare"));
7533
7553
  var args = parseArgs();
7534
7554
  (async () => {
7535
7555
  const currentV = package_default.version;
@@ -7538,7 +7558,7 @@ var args = parseArgs();
7538
7558
  const latestV = await latestVersion(package_default.name);
7539
7559
  process.stdout.write("\x1B[2J\x1B[0;0H");
7540
7560
  console.log();
7541
- updateMessage = latestV && (0, import_semver_compare3.default)(latestV, currentV) === 1 ? ` [!] Update available: ${latestV}
7561
+ updateMessage = latestV && semverCompare(latestV, currentV) === 1 ? ` [!] Update available: ${latestV}
7542
7562
 
7543
7563
  To update, run:
7544
7564
 
@@ -7586,7 +7606,7 @@ for usage instructions.`);
7586
7606
  const getPortLib = await import("get-port");
7587
7607
  const getPort = getPortLib.default;
7588
7608
  const port = await getPort({
7589
- port: devServerPort ?? [...!userHasProvidedPort ? [80] : [], ...getPortLib.portNumbers(minPort, minPort + 1e3)]
7609
+ port: devServerPort ?? [...!userHasProvidedPort ? [3e3] : [], ...getPortLib.portNumbers(minPort, minPort + 1e3)]
7590
7610
  });
7591
7611
  app.listen(port).once("listening", () => printOpen(port));
7592
7612
  })();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "git-truck",
3
- "version": "1.0.2",
3
+ "version": "1.0.15-0",
4
4
  "private": false,
5
5
  "description": "Visualizing a Git repository",
6
6
  "license": "MIT",
@@ -57,7 +57,7 @@
57
57
  "react-use": "^17.3.2",
58
58
  "react-use-size": "^2.0.4",
59
59
  "remix": "^1.2.3",
60
- "semver-compare": "^1.0.0",
60
+ "semver": "^7.3.7",
61
61
  "styled-components": "^5.3.3",
62
62
  "yargs": "^17.4.0"
63
63
  },
@@ -71,6 +71,7 @@
71
71
  "@types/morgan": "^1.9.3",
72
72
  "@types/react": "^17.0.40",
73
73
  "@types/react-dom": "^17.0.9",
74
+ "@types/semver": "^7.3.9",
74
75
  "@types/semver-compare": "^1.0.1",
75
76
  "@types/styled-components": "^5.1.24",
76
77
  "@types/yargs": "^17.0.10",