git-history-ui 1.0.2 → 1.0.3

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.
Files changed (50) hide show
  1. package/README.md +7 -7
  2. package/dist/backend/server.d.ts.map +1 -1
  3. package/dist/backend/server.js +19 -5
  4. package/dist/backend/server.js.map +1 -1
  5. package/package.json +6 -1
  6. package/.dockerignore +0 -19
  7. package/.eslintrc.js +0 -21
  8. package/Dockerfile +0 -29
  9. package/demo.js +0 -45
  10. package/frontend/.editorconfig +0 -17
  11. package/frontend/.vscode/extensions.json +0 -4
  12. package/frontend/.vscode/launch.json +0 -20
  13. package/frontend/.vscode/tasks.json +0 -42
  14. package/frontend/README.md +0 -59
  15. package/frontend/angular.json +0 -99
  16. package/frontend/package-lock.json +0 -11272
  17. package/frontend/package.json +0 -58
  18. package/frontend/postcss.config.js +0 -6
  19. package/frontend/proxy.conf.json +0 -7
  20. package/frontend/public/favicon.ico +0 -0
  21. package/frontend/src/app/app.component.ts +0 -598
  22. package/frontend/src/app/app.config.ts +0 -12
  23. package/frontend/src/app/app.css +0 -0
  24. package/frontend/src/app/app.html +0 -342
  25. package/frontend/src/app/app.routes.ts +0 -3
  26. package/frontend/src/app/app.spec.ts +0 -23
  27. package/frontend/src/app/app.ts +0 -12
  28. package/frontend/src/app/components/color-palette-selector/color-palette-selector.component.ts +0 -137
  29. package/frontend/src/app/components/commit-detail/commit-detail.component.ts +0 -327
  30. package/frontend/src/app/components/commit-graph/commit-graph.component.ts +0 -294
  31. package/frontend/src/app/components/commit-list/commit-list.component.ts +0 -199
  32. package/frontend/src/app/components/diff-viewer/diff-viewer.component.ts +0 -311
  33. package/frontend/src/app/models/color-palette.models.ts +0 -229
  34. package/frontend/src/app/models/git.models.ts +0 -39
  35. package/frontend/src/app/services/git.service.ts +0 -43
  36. package/frontend/src/index.html +0 -13
  37. package/frontend/src/main.ts +0 -6
  38. package/frontend/src/styles.css +0 -401
  39. package/frontend/tailwind.config.js +0 -11
  40. package/frontend/tsconfig.app.json +0 -15
  41. package/frontend/tsconfig.json +0 -34
  42. package/frontend/tsconfig.spec.json +0 -14
  43. package/jest.config.js +0 -26
  44. package/src/__tests__/gitService.test.ts +0 -533
  45. package/src/__tests__/setup.ts +0 -25
  46. package/src/backend/dev-server.ts +0 -14
  47. package/src/backend/gitService.ts +0 -277
  48. package/src/backend/server.ts +0 -140
  49. package/src/cli.ts +0 -56
  50. package/tsconfig.json +0 -25
@@ -1,229 +0,0 @@
1
- export interface ColorPalette {
2
- id: string;
3
- name: string;
4
- description: string;
5
- colors: {
6
- primary: string;
7
- secondary: string;
8
- accent: string;
9
- background: string;
10
- text: string;
11
- border: string;
12
- link: string;
13
- nodeFill: string;
14
- nodeStroke: string;
15
- graphText: string;
16
- };
17
- }
18
-
19
- export type ColorPaletteId = 'default' | 'ocean' | 'forest' | 'sunset' | 'monochrome' | 'neon';
20
-
21
- export const COLOR_PALETTES: Record<ColorPaletteId, ColorPalette> = {
22
- default: {
23
- id: 'default',
24
- name: 'Default',
25
- description: 'Classic blue theme',
26
- colors: {
27
- primary: '#3b82f6',
28
- secondary: '#6b7280',
29
- accent: '#1e40af',
30
- background: '#ffffff',
31
- text: '#111827',
32
- border: '#e5e7eb',
33
- link: '#cbd5e0',
34
- nodeFill: '#3b82f6',
35
- nodeStroke: '#1e40af',
36
- graphText: '#6b7280'
37
- }
38
- },
39
- ocean: {
40
- id: 'ocean',
41
- name: 'Ocean',
42
- description: 'Deep blue ocean theme',
43
- colors: {
44
- primary: '#0ea5e9',
45
- secondary: '#64748b',
46
- accent: '#0369a1',
47
- background: '#ffffff',
48
- text: '#0f172a',
49
- border: '#e2e8f0',
50
- link: '#94a3b8',
51
- nodeFill: '#0ea5e9',
52
- nodeStroke: '#0369a1',
53
- graphText: '#475569'
54
- }
55
- },
56
- forest: {
57
- id: 'forest',
58
- name: 'Forest',
59
- description: 'Green nature theme',
60
- colors: {
61
- primary: '#10b981',
62
- secondary: '#6b7280',
63
- accent: '#059669',
64
- background: '#ffffff',
65
- text: '#111827',
66
- border: '#e5e7eb',
67
- link: '#d1fae5',
68
- nodeFill: '#10b981',
69
- nodeStroke: '#059669',
70
- graphText: '#6b7280'
71
- }
72
- },
73
- sunset: {
74
- id: 'sunset',
75
- name: 'Sunset',
76
- description: 'Warm orange theme',
77
- colors: {
78
- primary: '#f59e0b',
79
- secondary: '#6b7280',
80
- accent: '#d97706',
81
- background: '#ffffff',
82
- text: '#111827',
83
- border: '#e5e7eb',
84
- link: '#fed7aa',
85
- nodeFill: '#f59e0b',
86
- nodeStroke: '#d97706',
87
- graphText: '#6b7280'
88
- }
89
- },
90
- monochrome: {
91
- id: 'monochrome',
92
- name: 'Monochrome',
93
- description: 'Black and white theme',
94
- colors: {
95
- primary: '#374151',
96
- secondary: '#6b7280',
97
- accent: '#111827',
98
- background: '#ffffff',
99
- text: '#111827',
100
- border: '#e5e7eb',
101
- link: '#d1d5db',
102
- nodeFill: '#374151',
103
- nodeStroke: '#111827',
104
- graphText: '#6b7280'
105
- }
106
- },
107
- neon: {
108
- id: 'neon',
109
- name: 'Neon',
110
- description: 'Bright neon theme',
111
- colors: {
112
- primary: '#ec4899',
113
- secondary: '#8b5cf6',
114
- accent: '#06b6d4',
115
- background: '#ffffff',
116
- text: '#111827',
117
- border: '#e5e7eb',
118
- link: '#f0abfc',
119
- nodeFill: '#ec4899',
120
- nodeStroke: '#be185d',
121
- graphText: '#6b7280'
122
- }
123
- }
124
- };
125
-
126
- export const DARK_COLOR_PALETTES: Record<ColorPaletteId, ColorPalette> = {
127
- default: {
128
- id: 'default',
129
- name: 'Default Dark',
130
- description: 'Classic dark theme',
131
- colors: {
132
- primary: '#3b82f6',
133
- secondary: '#6b7280',
134
- accent: '#1e40af',
135
- background: '#1a1a1a',
136
- text: '#e0e0e0',
137
- border: '#404040',
138
- link: '#4b5563',
139
- nodeFill: '#3b82f6',
140
- nodeStroke: '#1e40af',
141
- graphText: '#9ca3af'
142
- }
143
- },
144
- ocean: {
145
- id: 'ocean',
146
- name: 'Ocean Dark',
147
- description: 'Deep ocean dark theme',
148
- colors: {
149
- primary: '#0ea5e9',
150
- secondary: '#64748b',
151
- accent: '#0369a1',
152
- background: '#0f172a',
153
- text: '#f1f5f9',
154
- border: '#334155',
155
- link: '#475569',
156
- nodeFill: '#0ea5e9',
157
- nodeStroke: '#0369a1',
158
- graphText: '#94a3b8'
159
- }
160
- },
161
- forest: {
162
- id: 'forest',
163
- name: 'Forest Dark',
164
- description: 'Dark green theme',
165
- colors: {
166
- primary: '#10b981',
167
- secondary: '#6b7280',
168
- accent: '#059669',
169
- background: '#064e3b',
170
- text: '#ecfdf5',
171
- border: '#065f46',
172
- link: '#065f46',
173
- nodeFill: '#10b981',
174
- nodeStroke: '#059669',
175
- graphText: '#6ee7b7'
176
- }
177
- },
178
- sunset: {
179
- id: 'sunset',
180
- name: 'Sunset Dark',
181
- description: 'Dark orange theme',
182
- colors: {
183
- primary: '#f59e0b',
184
- secondary: '#6b7280',
185
- accent: '#d97706',
186
- background: '#451a03',
187
- text: '#fef3c7',
188
- border: '#92400e',
189
- link: '#92400e',
190
- nodeFill: '#f59e0b',
191
- nodeStroke: '#d97706',
192
- graphText: '#fbbf24'
193
- }
194
- },
195
- monochrome: {
196
- id: 'monochrome',
197
- name: 'Monochrome Dark',
198
- description: 'Pure black and white',
199
- colors: {
200
- primary: '#e5e7eb',
201
- secondary: '#9ca3af',
202
- accent: '#f9fafb',
203
- background: '#000000',
204
- text: '#ffffff',
205
- border: '#374151',
206
- link: '#4b5563',
207
- nodeFill: '#e5e7eb',
208
- nodeStroke: '#f9fafb',
209
- graphText: '#9ca3af'
210
- }
211
- },
212
- neon: {
213
- id: 'neon',
214
- name: 'Neon Dark',
215
- description: 'Bright neon on dark',
216
- colors: {
217
- primary: '#ec4899',
218
- secondary: '#8b5cf6',
219
- accent: '#06b6d4',
220
- background: '#0f0f23',
221
- text: '#ffffff',
222
- border: '#312e81',
223
- link: '#581c87',
224
- nodeFill: '#ec4899',
225
- nodeStroke: '#be185d',
226
- graphText: '#f0abfc'
227
- }
228
- }
229
- };
@@ -1,39 +0,0 @@
1
- export interface Commit {
2
- hash: string;
3
- author: string;
4
- date: string;
5
- message: string;
6
- files: string[];
7
- parents: string[];
8
- branches: string[];
9
- tags: string[];
10
- }
11
-
12
- export interface DiffFile {
13
- file: string;
14
- additions: number;
15
- deletions: number;
16
- changes: string;
17
- }
18
-
19
- export interface BlameLine {
20
- line: number;
21
- hash: string;
22
- author: string;
23
- date: string;
24
- content: string;
25
- }
26
-
27
- export interface GitOptions {
28
- file?: string;
29
- since?: string;
30
- author?: string;
31
- limit?: number;
32
- }
33
-
34
- export interface CommitNode {
35
- id: string;
36
- x: number;
37
- y: number;
38
- commit: Commit;
39
- }
@@ -1,43 +0,0 @@
1
- import { Injectable } from '@angular/core';
2
- import { HttpClient } from '@angular/common/http';
3
- import { Observable } from 'rxjs';
4
- import { Commit, DiffFile, BlameLine, GitOptions } from '../models/git.models';
5
-
6
- @Injectable({
7
- providedIn: 'root'
8
- })
9
- export class GitService {
10
- private apiUrl = '/api';
11
-
12
- constructor(private http: HttpClient) { }
13
-
14
- getCommits(options: GitOptions = {}): Observable<Commit[]> {
15
- const params = new URLSearchParams();
16
- if (options.file) params.set('file', options.file);
17
- if (options.since) params.set('since', options.since);
18
- if (options.author) params.set('author', options.author);
19
- if (options.limit) params.set('limit', options.limit.toString());
20
-
21
- return this.http.get<Commit[]>(`${this.apiUrl}/commits?${params.toString()}`);
22
- }
23
-
24
- getCommit(hash: string): Observable<Commit> {
25
- return this.http.get<Commit>(`${this.apiUrl}/commit/${hash}`);
26
- }
27
-
28
- getDiff(hash: string): Observable<DiffFile[]> {
29
- return this.http.get<DiffFile[]>(`${this.apiUrl}/diff/${hash}`);
30
- }
31
-
32
- getBlame(filePath: string): Observable<BlameLine[]> {
33
- return this.http.get<BlameLine[]>(`${this.apiUrl}/blame/${encodeURIComponent(filePath)}`);
34
- }
35
-
36
- getTags(): Observable<string[]> {
37
- return this.http.get<string[]>(`${this.apiUrl}/tags`);
38
- }
39
-
40
- getBranches(): Observable<string[]> {
41
- return this.http.get<string[]>(`${this.apiUrl}/branches`);
42
- }
43
- }
@@ -1,13 +0,0 @@
1
- <!doctype html>
2
- <html lang="en">
3
- <head>
4
- <meta charset="utf-8">
5
- <title>Frontend</title>
6
- <base href="/">
7
- <meta name="viewport" content="width=device-width, initial-scale=1">
8
- <link rel="icon" type="image/x-icon" href="favicon.ico">
9
- </head>
10
- <body>
11
- <app-root></app-root>
12
- </body>
13
- </html>
@@ -1,6 +0,0 @@
1
- import { bootstrapApplication } from '@angular/platform-browser';
2
- import { appConfig } from './app/app.config';
3
- import { AppComponent } from './app/app.component';
4
-
5
- bootstrapApplication(AppComponent, appConfig)
6
- .catch((err) => console.error(err));