git-history-ui 1.0.0 → 1.0.2

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.
@@ -1,31 +1,426 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const gitService_1 = require("../backend/gitService");
4
+ // Mock simple-git
5
+ const mockGit = {
6
+ log: jest.fn(),
7
+ tags: jest.fn(),
8
+ branch: jest.fn(),
9
+ diff: jest.fn(),
10
+ raw: jest.fn(),
11
+ };
12
+ jest.mock('simple-git', () => {
13
+ return jest.fn(() => mockGit);
14
+ });
4
15
  describe('GitService', () => {
5
16
  let gitService;
6
17
  beforeEach(() => {
7
18
  gitService = new gitService_1.GitService();
19
+ jest.clearAllMocks();
8
20
  });
9
21
  describe('getCommits', () => {
10
22
  it('should return an array of commits', async () => {
11
- const commits = await gitService.getCommits({ limit: 5 });
23
+ const mockCommits = [
24
+ {
25
+ hash: 'abc123',
26
+ date: '2024-01-01',
27
+ message: 'Test commit',
28
+ author_name: 'Test Author',
29
+ author_email: 'test@example.com',
30
+ refs: 'HEAD -> main',
31
+ body: '',
32
+ hash_abbrev: 'abc123',
33
+ tree: 'def456',
34
+ tree_abbrev: 'def456',
35
+ parent: 'ghi789',
36
+ parent_abbrev: 'ghi789'
37
+ }
38
+ ];
39
+ mockGit.log.mockResolvedValue({ all: mockCommits });
40
+ mockGit.diff.mockResolvedValue('');
41
+ mockGit.branch.mockResolvedValue({ all: ['main'] });
42
+ mockGit.raw.mockResolvedValue('');
43
+ const commits = await gitService.getCommits();
12
44
  expect(Array.isArray(commits)).toBe(true);
45
+ expect(commits.length).toBeGreaterThan(0);
46
+ expect(commits[0]).toHaveProperty('hash');
47
+ expect(commits[0]).toHaveProperty('author');
48
+ expect(commits[0]).toHaveProperty('date');
49
+ expect(commits[0]).toHaveProperty('message');
13
50
  });
14
51
  it('should respect the limit parameter', async () => {
52
+ const mockCommits = Array(3).fill(null).map((_, i) => ({
53
+ hash: `hash${i}`,
54
+ date: '2024-01-01',
55
+ message: `Commit ${i}`,
56
+ author_name: 'Test Author',
57
+ author_email: 'test@example.com',
58
+ refs: 'HEAD -> main',
59
+ body: '',
60
+ hash_abbrev: `hash${i}`,
61
+ tree: 'def456',
62
+ tree_abbrev: 'def456',
63
+ parent: 'ghi789',
64
+ parent_abbrev: 'ghi789'
65
+ }));
66
+ mockGit.log.mockResolvedValue({ all: mockCommits });
15
67
  const commits = await gitService.getCommits({ limit: 3 });
16
- expect(commits.length).toBeLessThanOrEqual(3);
68
+ // The GitService should respect the limit parameter
69
+ expect(commits.length).toBe(3);
70
+ });
71
+ it('should handle git log errors', async () => {
72
+ mockGit.log.mockRejectedValue(new Error('Git error'));
73
+ await expect(gitService.getCommits()).rejects.toThrow('Git error');
74
+ });
75
+ it('should handle empty commit list', async () => {
76
+ mockGit.log.mockResolvedValue({ all: [] });
77
+ const commits = await gitService.getCommits();
78
+ expect(Array.isArray(commits)).toBe(true);
79
+ expect(commits.length).toBe(0);
80
+ });
81
+ it('should handle file filter option', async () => {
82
+ const mockCommits = [
83
+ {
84
+ hash: 'abc123',
85
+ date: '2024-01-01',
86
+ message: 'Test commit',
87
+ author_name: 'Test Author',
88
+ author_email: 'test@example.com',
89
+ refs: 'HEAD -> main',
90
+ body: '',
91
+ hash_abbrev: 'abc123',
92
+ tree: 'def456',
93
+ tree_abbrev: 'def456',
94
+ parent: 'ghi789',
95
+ parent_abbrev: 'ghi789'
96
+ }
97
+ ];
98
+ mockGit.log.mockResolvedValue({ all: mockCommits });
99
+ const commits = await gitService.getCommits({ file: 'src/app.js' });
100
+ expect(Array.isArray(commits)).toBe(true);
101
+ expect(commits.length).toBeGreaterThan(0);
102
+ });
103
+ it('should handle since filter option', async () => {
104
+ const mockCommits = [
105
+ {
106
+ hash: 'abc123',
107
+ date: '2024-01-01',
108
+ message: 'Test commit',
109
+ author_name: 'Test Author',
110
+ author_email: 'test@example.com',
111
+ refs: 'HEAD -> main',
112
+ body: '',
113
+ hash_abbrev: 'abc123',
114
+ tree: 'def456',
115
+ tree_abbrev: 'def456',
116
+ parent: 'ghi789',
117
+ parent_abbrev: 'ghi789'
118
+ }
119
+ ];
120
+ mockGit.log.mockResolvedValue({ all: mockCommits });
121
+ const commits = await gitService.getCommits({ since: 'v1.0.0' });
122
+ expect(Array.isArray(commits)).toBe(true);
123
+ expect(commits.length).toBeGreaterThan(0);
124
+ });
125
+ it('should handle author filter option', async () => {
126
+ const mockCommits = [
127
+ {
128
+ hash: 'abc123',
129
+ date: '2024-01-01',
130
+ message: 'Test commit',
131
+ author_name: 'Test Author',
132
+ author_email: 'test@example.com',
133
+ refs: 'HEAD -> main',
134
+ body: '',
135
+ hash_abbrev: 'abc123',
136
+ tree: 'def456',
137
+ tree_abbrev: 'def456',
138
+ parent: 'ghi789',
139
+ parent_abbrev: 'ghi789'
140
+ }
141
+ ];
142
+ mockGit.log.mockResolvedValue({ all: mockCommits });
143
+ mockGit.diff.mockResolvedValue('');
144
+ mockGit.branch.mockResolvedValue({ all: ['main'] });
145
+ mockGit.raw.mockResolvedValue('');
146
+ const commits = await gitService.getCommits({ author: 'Test Author' });
147
+ expect(Array.isArray(commits)).toBe(true);
148
+ expect(commits.length).toBeGreaterThan(0);
149
+ });
150
+ it('should handle private method errors gracefully', async () => {
151
+ const mockCommits = [
152
+ {
153
+ hash: 'abc123',
154
+ date: '2024-01-01',
155
+ message: 'Test commit',
156
+ author_name: 'Test Author',
157
+ author_email: 'test@example.com',
158
+ refs: 'HEAD -> main',
159
+ body: '',
160
+ hash_abbrev: 'abc123',
161
+ tree: 'def456',
162
+ tree_abbrev: 'def456',
163
+ parent: 'ghi789',
164
+ parent_abbrev: 'ghi789'
165
+ }
166
+ ];
167
+ mockGit.log.mockResolvedValue({ all: mockCommits });
168
+ mockGit.diff.mockRejectedValue(new Error('Diff error'));
169
+ mockGit.branch.mockRejectedValue(new Error('Branch error'));
170
+ mockGit.raw.mockRejectedValue(new Error('Tag error'));
171
+ const commits = await gitService.getCommits();
172
+ expect(Array.isArray(commits)).toBe(true);
173
+ expect(commits.length).toBeGreaterThan(0);
174
+ expect(commits[0].files).toEqual([]);
175
+ expect(commits[0].branches).toEqual([]);
176
+ expect(commits[0].tags).toEqual([]);
177
+ });
178
+ it('should handle non-Error exceptions', async () => {
179
+ mockGit.log.mockRejectedValue('String error');
180
+ await expect(gitService.getCommits()).rejects.toThrow('Failed to get commits: Unknown error');
17
181
  });
18
182
  });
19
183
  describe('getTags', () => {
20
184
  it('should return an array of tags', async () => {
185
+ const mockTags = ['v1.0.0', 'v1.1.0', 'v2.0.0'];
186
+ mockGit.tags.mockResolvedValue({ all: mockTags });
187
+ const tags = await gitService.getTags();
188
+ expect(Array.isArray(tags)).toBe(true);
189
+ expect(tags).toEqual(mockTags);
190
+ });
191
+ it('should handle git tags errors', async () => {
192
+ mockGit.tags.mockRejectedValue(new Error('Git tags error'));
193
+ await expect(gitService.getTags()).rejects.toThrow('Git tags error');
194
+ });
195
+ it('should handle empty tags list', async () => {
196
+ mockGit.tags.mockResolvedValue({ all: [] });
21
197
  const tags = await gitService.getTags();
22
198
  expect(Array.isArray(tags)).toBe(true);
199
+ expect(tags.length).toBe(0);
23
200
  });
24
201
  });
25
202
  describe('getBranches', () => {
26
203
  it('should return an array of branches', async () => {
204
+ const mockBranches = ['main', 'develop', 'feature/test'];
205
+ mockGit.branch.mockResolvedValue({ all: mockBranches });
206
+ const branches = await gitService.getBranches();
207
+ expect(Array.isArray(branches)).toBe(true);
208
+ expect(branches).toEqual(mockBranches);
209
+ });
210
+ it('should handle git branch errors', async () => {
211
+ mockGit.branch.mockRejectedValue(new Error('Git branch error'));
212
+ await expect(gitService.getBranches()).rejects.toThrow('Git branch error');
213
+ });
214
+ it('should handle empty branches list', async () => {
215
+ mockGit.branch.mockResolvedValue({ all: [] });
27
216
  const branches = await gitService.getBranches();
28
217
  expect(Array.isArray(branches)).toBe(true);
218
+ expect(branches.length).toBe(0);
219
+ });
220
+ });
221
+ describe('getDiff', () => {
222
+ it('should return diff for a commit', async () => {
223
+ const mockDiff = 'diff --git a/file.js b/file.js\nindex 123..456 100644\n--- a/file.js\n+++ b/file.js\n@@ -1,3 +1,4 @@\n line1\n+line2\n line3';
224
+ mockGit.diff.mockResolvedValue(mockDiff);
225
+ const diff = await gitService.getDiff('abc123');
226
+ expect(Array.isArray(diff)).toBe(true);
227
+ expect(diff.length).toBeGreaterThan(0);
228
+ expect(diff[0]).toHaveProperty('file');
229
+ expect(diff[0]).toHaveProperty('additions');
230
+ expect(diff[0]).toHaveProperty('deletions');
231
+ expect(diff[0]).toHaveProperty('changes');
232
+ });
233
+ it('should handle git diff errors', async () => {
234
+ mockGit.diff.mockRejectedValue(new Error('Git diff error'));
235
+ await expect(gitService.getDiff('abc123')).rejects.toThrow('Git diff error');
236
+ });
237
+ it('should handle empty diff', async () => {
238
+ mockGit.diff.mockResolvedValue('');
239
+ const diff = await gitService.getDiff('abc123');
240
+ expect(Array.isArray(diff)).toBe(true);
241
+ expect(diff.length).toBe(0);
242
+ });
243
+ it('should parse complex diff with multiple files', async () => {
244
+ const mockDiff = `diff --git a/file1.js b/file1.js
245
+ index 123..456 100644
246
+ --- a/file1.js
247
+ +++ b/file1.js
248
+ @@ -1,3 +1,4 @@
249
+ line1
250
+ +line2
251
+ line3
252
+ diff --git a/file2.js b/file2.js
253
+ index 789..012 100644
254
+ --- a/file2.js
255
+ +++ b/file2.js
256
+ @@ -1,2 +1,3 @@
257
+ old1
258
+ +new1
259
+ old2`;
260
+ mockGit.diff.mockResolvedValue(mockDiff);
261
+ const diff = await gitService.getDiff('abc123');
262
+ expect(Array.isArray(diff)).toBe(true);
263
+ expect(diff.length).toBe(2);
264
+ expect(diff[0].file).toBe('file1.js');
265
+ expect(diff[1].file).toBe('file2.js');
266
+ });
267
+ it('should handle diff with no file match', async () => {
268
+ const mockDiff = 'diff --git a/ b/\nindex 123..456 100644\n--- a/\n+++ b/';
269
+ mockGit.diff.mockResolvedValue(mockDiff);
270
+ const diff = await gitService.getDiff('abc123');
271
+ expect(Array.isArray(diff)).toBe(true);
272
+ expect(diff.length).toBeGreaterThan(0);
273
+ expect(diff[0].file).toBe('');
274
+ });
275
+ it('should handle diff with context lines and headers', async () => {
276
+ const mockDiff = `diff --git a/file.js b/file.js
277
+ index 123..456 100644
278
+ --- a/file.js
279
+ +++ b/file.js
280
+ @@ -1,3 +1,4 @@
281
+ line1
282
+ +line2
283
+ line3
284
+ unchanged line`;
285
+ mockGit.diff.mockResolvedValue(mockDiff);
286
+ const diff = await gitService.getDiff('abc123');
287
+ expect(Array.isArray(diff)).toBe(true);
288
+ expect(diff.length).toBeGreaterThan(0);
289
+ });
290
+ it('should handle diff with only deletions', async () => {
291
+ const mockDiff = `diff --git a/file.js b/file.js
292
+ index 123..456 100644
293
+ --- a/file.js
294
+ +++ b/file.js
295
+ @@ -1,3 +1,2 @@
296
+ line1
297
+ -line2
298
+ line3`;
299
+ mockGit.diff.mockResolvedValue(mockDiff);
300
+ const diff = await gitService.getDiff('abc123');
301
+ expect(Array.isArray(diff)).toBe(true);
302
+ expect(diff.length).toBeGreaterThan(0);
303
+ expect(diff[0].deletions).toBeGreaterThan(0);
304
+ });
305
+ });
306
+ describe('getCommit', () => {
307
+ it('should return a single commit', async () => {
308
+ const mockCommit = {
309
+ hash: 'abc123',
310
+ date: '2024-01-01',
311
+ message: 'Test commit',
312
+ author_name: 'Test Author',
313
+ author_email: 'test@example.com',
314
+ refs: 'HEAD -> main',
315
+ body: '',
316
+ hash_abbrev: 'abc123',
317
+ tree: 'def456',
318
+ tree_abbrev: 'def456',
319
+ parent: 'ghi789',
320
+ parent_abbrev: 'ghi789'
321
+ };
322
+ mockGit.log.mockResolvedValue({ all: [mockCommit] });
323
+ const commit = await gitService.getCommit('abc123');
324
+ expect(commit).toHaveProperty('hash', 'abc123');
325
+ expect(commit).toHaveProperty('author', 'Test Author');
326
+ expect(commit).toHaveProperty('date', '2024-01-01');
327
+ expect(commit).toHaveProperty('message', 'Test commit');
328
+ });
329
+ it('should handle commit not found', async () => {
330
+ mockGit.log.mockResolvedValue({ all: [] });
331
+ await expect(gitService.getCommit('nonexistent')).rejects.toThrow('Commit not found');
332
+ });
333
+ it('should handle git log errors', async () => {
334
+ mockGit.log.mockRejectedValue(new Error('Git error'));
335
+ await expect(gitService.getCommit('abc123')).rejects.toThrow('Git error');
336
+ });
337
+ it('should handle non-Error exceptions', async () => {
338
+ mockGit.log.mockRejectedValue('String error');
339
+ await expect(gitService.getCommit('abc123')).rejects.toThrow('Failed to get commit: Unknown error');
340
+ });
341
+ });
342
+ describe('getBlame', () => {
343
+ it('should return blame information for a file', async () => {
344
+ const mockBlame = 'abc123 1 1 1\nauthor Test Author\n\tline1';
345
+ mockGit.raw.mockResolvedValue(mockBlame);
346
+ const blame = await gitService.getBlame('test.js');
347
+ expect(Array.isArray(blame)).toBe(true);
348
+ expect(blame.length).toBeGreaterThan(0);
349
+ expect(blame[0]).toHaveProperty('hash');
350
+ expect(blame[0]).toHaveProperty('author');
351
+ expect(blame[0]).toHaveProperty('line');
352
+ expect(blame[0]).toHaveProperty('content');
353
+ });
354
+ it('should handle git blame errors', async () => {
355
+ mockGit.raw.mockRejectedValue(new Error('Git blame error'));
356
+ await expect(gitService.getBlame('test.js')).rejects.toThrow('Git blame error');
357
+ });
358
+ it('should handle empty blame', async () => {
359
+ mockGit.raw.mockResolvedValue('');
360
+ const blame = await gitService.getBlame('test.js');
361
+ expect(Array.isArray(blame)).toBe(true);
362
+ expect(blame.length).toBe(0);
363
+ });
364
+ it('should handle non-Error exceptions', async () => {
365
+ mockGit.raw.mockRejectedValue('String error');
366
+ await expect(gitService.getBlame('test.js')).rejects.toThrow('Failed to get blame: Unknown error');
367
+ });
368
+ it('should parse blame with author-time', async () => {
369
+ const mockBlame = `abc123 1 1 1
370
+ author Test Author
371
+ author-time 1640995200
372
+ \tline1`;
373
+ mockGit.raw.mockResolvedValue(mockBlame);
374
+ const blame = await gitService.getBlame('test.js');
375
+ expect(Array.isArray(blame)).toBe(true);
376
+ expect(blame.length).toBeGreaterThan(0);
377
+ expect(blame[0]).toHaveProperty('date');
378
+ });
379
+ it('should parse blame without author-time', async () => {
380
+ const mockBlame = `abc123 1 1 1
381
+ author Test Author
382
+ \tline1`;
383
+ mockGit.raw.mockResolvedValue(mockBlame);
384
+ const blame = await gitService.getBlame('test.js');
385
+ expect(Array.isArray(blame)).toBe(true);
386
+ expect(blame.length).toBeGreaterThan(0);
387
+ expect(blame[0]).toHaveProperty('date');
388
+ });
389
+ it('should handle malformed blame data', async () => {
390
+ const mockBlame = 'invalid blame data without proper format';
391
+ mockGit.raw.mockResolvedValue(mockBlame);
392
+ const blame = await gitService.getBlame('test.js');
393
+ expect(Array.isArray(blame)).toBe(true);
394
+ expect(blame.length).toBe(0);
395
+ });
396
+ it('should parse blame with multiple lines and complete properly', async () => {
397
+ const mockBlame = `abc123 1 1 1
398
+ author Test Author
399
+ author-time 1640995200
400
+ \tline1
401
+ def456 2 2 1
402
+ author Another Author
403
+ \tline2`;
404
+ mockGit.raw.mockResolvedValue(mockBlame);
405
+ const blame = await gitService.getBlame('test.js');
406
+ expect(Array.isArray(blame)).toBe(true);
407
+ expect(blame.length).toBe(2);
408
+ expect(blame[0].hash).toBe('abc123');
409
+ expect(blame[1].hash).toBe('def456');
410
+ });
411
+ });
412
+ describe('Error handling', () => {
413
+ it('should handle non-Error exceptions in getTags', async () => {
414
+ mockGit.tags.mockRejectedValue('String error');
415
+ await expect(gitService.getTags()).rejects.toThrow('Failed to get tags: Unknown error');
416
+ });
417
+ it('should handle non-Error exceptions in getBranches', async () => {
418
+ mockGit.branch.mockRejectedValue('String error');
419
+ await expect(gitService.getBranches()).rejects.toThrow('Failed to get branches: Unknown error');
420
+ });
421
+ it('should handle non-Error exceptions in getDiff', async () => {
422
+ mockGit.diff.mockRejectedValue('String error');
423
+ await expect(gitService.getDiff('abc123')).rejects.toThrow('Failed to get diff: Unknown error');
29
424
  });
30
425
  });
31
426
  });
@@ -1 +1 @@
1
- {"version":3,"file":"gitService.test.js","sourceRoot":"","sources":["../../src/__tests__/gitService.test.ts"],"names":[],"mappings":";;AAAA,sDAAmD;AAEnD,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,IAAI,UAAsB,CAAC;IAE3B,UAAU,CAAC,GAAG,EAAE;QACd,UAAU,GAAG,IAAI,uBAAU,EAAE,CAAC;IAChC,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE;YACjD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1D,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1D,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;QAChD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,SAAS,EAAE,GAAG,EAAE;QACvB,EAAE,CAAC,gCAAgC,EAAE,KAAK,IAAI,EAAE;YAC9C,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;YACxC,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE;YAClD,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"gitService.test.js","sourceRoot":"","sources":["../../src/__tests__/gitService.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=setup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":""}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ // Test setup file
4
+ const globals_1 = require("@jest/globals");
5
+ // Mock console methods to reduce noise in tests
6
+ global.console = {
7
+ ...console,
8
+ log: globals_1.jest.fn(),
9
+ debug: globals_1.jest.fn(),
10
+ info: globals_1.jest.fn(),
11
+ warn: globals_1.jest.fn(),
12
+ error: globals_1.jest.fn(),
13
+ };
14
+ // Mock process.exit to prevent tests from exiting
15
+ process.exit = globals_1.jest.fn();
16
+ // Set test timeout
17
+ globals_1.jest.setTimeout(10000);
18
+ // Add a simple test to satisfy Jest requirements
19
+ describe('Setup', () => {
20
+ it('should be configured correctly', () => {
21
+ expect(true).toBe(true);
22
+ });
23
+ });
24
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/__tests__/setup.ts"],"names":[],"mappings":";;AAAA,kBAAkB;AAClB,2CAAqC;AAErC,gDAAgD;AAChD,MAAM,CAAC,OAAO,GAAG;IACf,GAAG,OAAO;IACV,GAAG,EAAE,cAAI,CAAC,EAAE,EAAE;IACd,KAAK,EAAE,cAAI,CAAC,EAAE,EAAE;IAChB,IAAI,EAAE,cAAI,CAAC,EAAE,EAAE;IACf,IAAI,EAAE,cAAI,CAAC,EAAE,EAAE;IACf,KAAK,EAAE,cAAI,CAAC,EAAE,EAAE;CACjB,CAAC;AAEF,kDAAkD;AAClD,OAAO,CAAC,IAAI,GAAG,cAAI,CAAC,EAAE,EAAS,CAAC;AAEhC,mBAAmB;AACnB,cAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAEvB,iDAAiD;AACjD,QAAQ,CAAC,OAAO,EAAE,GAAG,EAAE;IACrB,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;QACxC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/backend/server.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,WAAW,CAC/B,IAAI,GAAE,MAAa,EACnB,IAAI,GAAE,MAAoB,EAC1B,OAAO,GAAE,OAAO,CAAC,aAAa,CAAM,iBAiHrC"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/backend/server.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,aAAa;IAC5B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,WAAW,CAC/B,IAAI,GAAE,MAAa,EACnB,IAAI,GAAE,MAAoB,EAC1B,OAAO,GAAE,OAAO,CAAC,aAAa,CAAM,iBAyHrC"}
@@ -13,15 +13,21 @@ const gitService_1 = require("./gitService");
13
13
  async function startServer(port = 3000, host = 'localhost', options = {}) {
14
14
  const app = (0, express_1.default)();
15
15
  const server = (0, http_1.createServer)(app);
16
+ // CORS configuration
17
+ const corsOptions = {
18
+ origin: process.env.NODE_ENV === 'production'
19
+ ? ['http://localhost:4200', 'http://localhost:3000', 'http://127.0.0.1:4200', 'http://127.0.0.1:3000']
20
+ : true,
21
+ credentials: true,
22
+ methods: ['GET', 'POST', 'PUT', 'DELETE', 'OPTIONS'],
23
+ allowedHeaders: ['Content-Type', 'Authorization', 'X-Requested-With']
24
+ };
16
25
  const io = new socket_io_1.Server(server, {
17
- cors: {
18
- origin: "*",
19
- methods: ["GET", "POST"]
20
- }
26
+ cors: corsOptions
21
27
  });
22
28
  const gitService = new gitService_1.GitService();
23
29
  // Middleware
24
- app.use((0, cors_1.default)());
30
+ app.use((0, cors_1.default)(corsOptions));
25
31
  app.use(express_1.default.json());
26
32
  // Serve Angular build files
27
33
  app.use(express_1.default.static(path_1.default.join(__dirname, '../../frontend/dist/frontend/browser')));
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/backend/server.ts"],"names":[],"mappings":";;;;;AAeA,kCAoHC;AAnID,sDAA8B;AAC9B,gDAAwB;AACxB,+BAAoC;AACpC,yCAAmC;AACnC,gDAAwB;AACxB,6CAA0C;AAUnC,KAAK,UAAU,WAAW,CAC/B,OAAe,IAAI,EACnB,OAAe,WAAW,EAC1B,UAAkC,EAAE;IAEpC,MAAM,GAAG,GAAG,IAAA,iBAAO,GAAE,CAAC;IACtB,MAAM,MAAM,GAAG,IAAA,mBAAY,EAAC,GAAG,CAAC,CAAC;IACjC,MAAM,EAAE,GAAG,IAAI,kBAAM,CAAC,MAAM,EAAE;QAC5B,IAAI,EAAE;YACJ,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC;SACzB;KACF,CAAC,CAAC;IAEH,MAAM,UAAU,GAAG,IAAI,uBAAU,EAAE,CAAC;IAEpC,aAAa;IACb,GAAG,CAAC,GAAG,CAAC,IAAA,cAAI,GAAE,CAAC,CAAC;IAChB,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAExB,4BAA4B;IAC5B,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,MAAM,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,sCAAsC,CAAC,CAAC,CAAC,CAAC;IAEtF,kCAAkC;IAClC,GAAG,CAAC,GAAG,CAAC,iBAAO,CAAC,MAAM,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;IAE9D,aAAa;IACb,GAAG,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACzC,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,KAAK,EAAE,GAAG,GAAG,CAAC,KAAK,CAAC;YACzD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,UAAU,CAAC;gBAC1C,IAAI,EAAE,IAAc;gBACpB,KAAK,EAAE,KAAe;gBACtB,MAAM,EAAE,MAAgB;gBACxB,KAAK,EAAE,QAAQ,CAAC,KAAe,CAAC;aACjC,CAAC,CAAC;YACH,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,mBAAmB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC9C,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAC5B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YAChD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC5C,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAC5B,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC5C,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC7C,IAAI,CAAC;YACH,MAAM,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;YAC5B,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC9C,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QACtC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,UAAU,CAAC,OAAO,EAAE,CAAC;YACxC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,GAAG,CAAC,GAAG,CAAC,eAAe,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAC1C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC;YAChD,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACrB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,CAAC;YAC9E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QAChD,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,+CAA+C;IAC/C,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;QACxB,GAAG,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iDAAiD,CAAC,CAAC,CAAC;IACxF,CAAC,CAAC,CAAC;IAEH,kCAAkC;IAClC,EAAE,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,MAAM,EAAE,EAAE;QAC7B,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAEhC,MAAM,CAAC,EAAE,CAAC,YAAY,EAAE,GAAG,EAAE;YAC3B,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;QACnC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;YAC7B,OAAO,CAAC,GAAG,CAAC,4BAA4B,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC;YACxD,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/backend/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ export interface PathConfig {
2
+ publicPath: string;
3
+ frontendPath: string;
4
+ frontendIndexPath: string;
5
+ distPath: string;
6
+ srcPath: string;
7
+ }
8
+ export declare function getPathConfig(): PathConfig;
9
+ export declare function getTailwindPaths(): string[];
10
+ export declare function getBuildPaths(): {
11
+ input: string;
12
+ output: string;
13
+ };
14
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,aAAa,IAAI,UAAU,CAU1C;AAED,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAQ3C;AAED,wBAAgB,aAAa,IAAI;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAOjE"}
@@ -0,0 +1,35 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.getPathConfig = getPathConfig;
7
+ exports.getTailwindPaths = getTailwindPaths;
8
+ exports.getBuildPaths = getBuildPaths;
9
+ const path_1 = __importDefault(require("path"));
10
+ function getPathConfig() {
11
+ const cwd = process.cwd();
12
+ return {
13
+ publicPath: process.env.PUBLIC_PATH || path_1.default.join(cwd, 'public'),
14
+ frontendPath: process.env.FRONTEND_PATH || path_1.default.join(cwd, 'frontend', 'dist', 'frontend', 'browser'),
15
+ frontendIndexPath: process.env.FRONTEND_INDEX_PATH || path_1.default.join(cwd, 'frontend', 'dist', 'frontend', 'browser', 'index.html'),
16
+ distPath: process.env.DIST_PATH || path_1.default.join(cwd, 'dist'),
17
+ srcPath: process.env.SRC_PATH || path_1.default.join(cwd, 'src')
18
+ };
19
+ }
20
+ function getTailwindPaths() {
21
+ const cwd = process.cwd();
22
+ return [
23
+ process.env.TAILWIND_PUBLIC_PATH || path_1.default.join(cwd, 'public', '**', '*.{html,js}'),
24
+ process.env.TAILWIND_SRC_PATH || path_1.default.join(cwd, 'src', '**', '*.{html,ts,js}'),
25
+ process.env.TAILWIND_FRONTEND_PATH || path_1.default.join(cwd, 'frontend', 'src', '**', '*.{html,ts,js}')
26
+ ];
27
+ }
28
+ function getBuildPaths() {
29
+ const cwd = process.cwd();
30
+ return {
31
+ input: process.env.BUILD_INPUT_PATH || path_1.default.join(cwd, 'public', 'styles.css'),
32
+ output: process.env.BUILD_OUTPUT_PATH || path_1.default.join(cwd, 'public', 'tailwind.css')
33
+ };
34
+ }
35
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/config/paths.ts"],"names":[],"mappings":";;;;;AAUA,sCAUC;AAED,4CAQC;AAED,sCAOC;AAvCD,gDAAwB;AAUxB,SAAgB,aAAa;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,OAAO;QACL,UAAU,EAAE,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC;QAC/D,YAAY,EAAE,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,CAAC;QACpG,iBAAiB,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,CAAC;QAC7H,QAAQ,EAAE,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC;QACzD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC;KACvD,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB;IAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,OAAO;QACL,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,aAAa,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,CAAC;QAC9E,OAAO,CAAC,GAAG,CAAC,sBAAsB,IAAI,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,gBAAgB,CAAC;KAChG,CAAC;AACJ,CAAC;AAED,SAAgB,aAAa;IAC3B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE1B,OAAO;QACL,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,YAAY,CAAC;QAC7E,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,cAAI,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,EAAE,cAAc,CAAC;KAClF,CAAC;AACJ,CAAC"}