github-issue-tower-defence-management 1.117.1 → 1.117.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 (55) hide show
  1. package/.github/workflows/create-pr.yml +17 -2
  2. package/CHANGELOG.md +14 -0
  3. package/README.md +3 -2
  4. package/bin/adapter/entry-points/console/ui-dist/assets/{index-CJJsRF8i.js → index-BXcfEKkX.js} +1 -1
  5. package/bin/adapter/entry-points/console/ui-dist/index.html +1 -1
  6. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js +7 -2
  7. package/bin/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.js.map +1 -1
  8. package/bin/adapter/entry-points/handlers/notifySilentTmuxSessions.js +5 -4
  9. package/bin/adapter/entry-points/handlers/notifySilentTmuxSessions.js.map +1 -1
  10. package/bin/adapter/proxy/ClaudeMessageResponseParser.js +5 -1
  11. package/bin/adapter/proxy/ClaudeMessageResponseParser.js.map +1 -1
  12. package/bin/adapter/repositories/GraphqlProjectRepository.js +3 -3
  13. package/bin/adapter/repositories/GraphqlProjectRepository.js.map +1 -1
  14. package/bin/adapter/repositories/LocalStorageCacheRepository.js +1 -1
  15. package/bin/adapter/repositories/LocalStorageCacheRepository.js.map +1 -1
  16. package/bin/adapter/repositories/TranscriptSessionSubAgentActivityRepository.js +5 -1
  17. package/bin/adapter/repositories/TranscriptSessionSubAgentActivityRepository.js.map +1 -1
  18. package/bin/domain/usecases/HandleScheduledEventUseCase.js +1 -1
  19. package/bin/domain/usecases/HandleScheduledEventUseCase.js.map +1 -1
  20. package/bin/domain/usecases/NotifySilentLiveSessionsUseCase.js +2 -1
  21. package/bin/domain/usecases/NotifySilentLiveSessionsUseCase.js.map +1 -1
  22. package/bin/domain/usecases/UpdateIssueStatusByLabelUseCase.js +1 -1
  23. package/bin/domain/usecases/UpdateIssueStatusByLabelUseCase.js.map +1 -1
  24. package/eslint.config.mjs +67 -0
  25. package/package.json +8 -7
  26. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleDetailPrefetch.test.ts +12 -21
  27. package/src/adapter/entry-points/console/ui/src/features/console/hooks/useConsoleDetailPrefetch.ts +1 -1
  28. package/src/adapter/entry-points/console/ui-dist/assets/{index-CJJsRF8i.js → index-BXcfEKkX.js} +1 -1
  29. package/src/adapter/entry-points/console/ui-dist/index.html +1 -1
  30. package/src/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.ts +6 -0
  31. package/src/adapter/entry-points/handlers/dashboardRowWriter.test.ts +1 -1
  32. package/src/adapter/entry-points/handlers/machineStatusWriter.test.ts +1 -1
  33. package/src/adapter/entry-points/handlers/notifySilentTmuxSessions.ts +7 -0
  34. package/src/adapter/entry-points/handlers/tokenStatusWriter.test.ts +1 -1
  35. package/src/adapter/proxy/ClaudeMessageResponseParser.ts +3 -2
  36. package/src/adapter/repositories/GraphqlProjectRepository.ts +3 -2
  37. package/src/adapter/repositories/LocalStorageCacheRepository.ts +1 -1
  38. package/src/adapter/repositories/TranscriptSessionSubAgentActivityRepository.test.ts +118 -0
  39. package/src/adapter/repositories/TranscriptSessionSubAgentActivityRepository.ts +4 -0
  40. package/src/domain/usecases/AssignNoAssigneeIssueToManagerUseCase.test.ts +2 -1
  41. package/src/domain/usecases/HandleScheduledEventUseCase.ts +1 -1
  42. package/src/domain/usecases/NotifySilentLiveSessionsUseCase.ts +1 -0
  43. package/src/domain/usecases/UpdateIssueStatusByLabelUseCase.ts +1 -0
  44. package/tsconfig.json +1 -0
  45. package/types/adapter/entry-points/handlers/HandleScheduledEventUseCaseHandler.d.ts.map +1 -1
  46. package/types/adapter/entry-points/handlers/notifySilentTmuxSessions.d.ts +2 -0
  47. package/types/adapter/entry-points/handlers/notifySilentTmuxSessions.d.ts.map +1 -1
  48. package/types/adapter/proxy/ClaudeMessageResponseParser.d.ts.map +1 -1
  49. package/types/adapter/repositories/GraphqlProjectRepository.d.ts.map +1 -1
  50. package/types/adapter/repositories/TranscriptSessionSubAgentActivityRepository.d.ts +2 -1
  51. package/types/adapter/repositories/TranscriptSessionSubAgentActivityRepository.d.ts.map +1 -1
  52. package/types/domain/usecases/NotifySilentLiveSessionsUseCase.d.ts +1 -0
  53. package/types/domain/usecases/NotifySilentLiveSessionsUseCase.d.ts.map +1 -1
  54. package/types/domain/usecases/UpdateIssueStatusByLabelUseCase.d.ts.map +1 -1
  55. package/.eslintrc.cjs +0 -59
@@ -0,0 +1,67 @@
1
+ import { readFileSync } from 'fs';
2
+ import tseslint from 'typescript-eslint';
3
+ import eslintJs from '@eslint/js';
4
+ import { importX } from 'eslint-plugin-import-x';
5
+ import unusedImports from 'eslint-plugin-unused-imports';
6
+
7
+ const gitignoreLines = readFileSync('.gitignore', 'utf8')
8
+ .split('\n')
9
+ .filter((line) => line.trim() && !line.trim().startsWith('#'));
10
+
11
+ export default tseslint.config(
12
+ {
13
+ ignores: [
14
+ ...gitignoreLines,
15
+ 'src/adapter/entry-points/console/ui/**',
16
+ 'src/adapter/entry-points/console/ui-dist/**',
17
+ ],
18
+ },
19
+ eslintJs.configs.recommended,
20
+ tseslint.configs.recommended,
21
+ tseslint.configs.recommendedTypeChecked,
22
+ {
23
+ plugins: {
24
+ 'import-x': importX,
25
+ 'unused-imports': unusedImports,
26
+ },
27
+ languageOptions: {
28
+ parserOptions: {
29
+ project: ['tsconfig.json'],
30
+ },
31
+ },
32
+ rules: {
33
+ '@typescript-eslint/require-await': 'off',
34
+ '@typescript-eslint/no-non-null-assertion': 'error',
35
+ '@typescript-eslint/consistent-type-assertions': [
36
+ 'error',
37
+ { assertionStyle: 'never' },
38
+ ],
39
+ '@typescript-eslint/no-unused-vars': [
40
+ 'error',
41
+ {
42
+ argsIgnorePattern: '^_',
43
+ },
44
+ ],
45
+ 'import-x/no-restricted-paths': [
46
+ 'error',
47
+ {
48
+ zones: [
49
+ {
50
+ target: './src/domain',
51
+ from: './src/adapter',
52
+ },
53
+ {
54
+ target: './src/domain/entities',
55
+ from: './src/domain/usecases',
56
+ },
57
+ {
58
+ target: './src/adapter/repositories',
59
+ from: './src/adapter/entry-points',
60
+ },
61
+ ],
62
+ },
63
+ ],
64
+ 'unused-imports/no-unused-imports': 'error',
65
+ },
66
+ },
67
+ );
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "github-issue-tower-defence-management",
3
- "version": "1.117.1",
3
+ "version": "1.117.3",
4
4
  "description": "",
5
5
  "main": "bin/index.js",
6
6
  "scripts": {
@@ -67,18 +67,19 @@
67
67
  "@types/jest": "^29.5.12",
68
68
  "@types/react": "^19.1.0",
69
69
  "@types/react-dom": "^19.1.0",
70
- "@typescript-eslint/eslint-plugin": "^7.2.0",
71
- "@typescript-eslint/parser": "^7.2.0",
70
+ "@eslint/js": "^10.0.0",
71
+ "@typescript-eslint/eslint-plugin": "^8.0.0",
72
+ "@typescript-eslint/parser": "^8.0.0",
73
+ "typescript-eslint": "^8.0.0",
72
74
  "@vitejs/plugin-react": "^4.3.0",
73
75
  "check-node-version": "^4.2.1",
74
76
  "class-variance-authority": "^0.7.1",
75
77
  "clsx": "^2.1.1",
76
78
  "commitlint": "^21.0.0",
77
79
  "conventional-changelog-conventionalcommits": "^9.0.0",
78
- "eslint": "^8.57.0",
79
- "eslint-plugin-import": "^2.29.1",
80
- "eslint-plugin-no-type-assertion": "^1.3.0",
81
- "eslint-plugin-unused-imports": "^3.1.0",
80
+ "eslint": "^10.5.0",
81
+ "eslint-plugin-import-x": "^4.0.0",
82
+ "eslint-plugin-unused-imports": "^4.0.0",
82
83
  "jest": "^29.7.0",
83
84
  "jest-environment-jsdom": "29.7.0",
84
85
  "jest-html-reporter": "^4.4.0",
@@ -53,24 +53,26 @@ describe('useConsoleDetailPrefetch', () => {
53
53
  jest.useRealTimers();
54
54
  });
55
55
 
56
- it('prefetches the next items after the idle defer elapses', () => {
56
+ it('is disabled and schedules no prefetch for issue items', () => {
57
57
  const caches = buildCaches();
58
58
  const bodyPrefetch = jest.spyOn(caches.body, 'prefetch');
59
+ const statePrefetch = jest.spyOn(caches.state, 'prefetch');
60
+ const commentsPrefetch = jest.spyOn(caches.comments, 'prefetch');
59
61
  const relatedPrefetch = jest.spyOn(caches.relatedPrs, 'prefetch');
60
62
  const items = [makeItem(1), makeItem(2), makeItem(3)];
61
63
  renderHook(() => useConsoleDetailPrefetch(caches, items[0], items));
62
-
63
- expect(bodyPrefetch).not.toHaveBeenCalled();
64
64
  jest.runAllTimers();
65
65
 
66
- expect(bodyPrefetch).toHaveBeenCalledWith('o/r#2', items[1].url);
67
- expect(bodyPrefetch).toHaveBeenCalledWith('o/r#3', items[2].url);
68
- expect(relatedPrefetch).toHaveBeenCalledWith('o/r#2', items[1].url);
66
+ expect(bodyPrefetch).not.toHaveBeenCalled();
67
+ expect(statePrefetch).not.toHaveBeenCalled();
68
+ expect(commentsPrefetch).not.toHaveBeenCalled();
69
+ expect(relatedPrefetch).not.toHaveBeenCalled();
69
70
  });
70
71
 
71
- it('prefetches PR resources for pull request items', () => {
72
+ it('is disabled and schedules no prefetch for pull request items', () => {
72
73
  const caches = buildCaches();
73
74
  const filesPrefetch = jest.spyOn(caches.files, 'prefetch');
75
+ const commitsPrefetch = jest.spyOn(caches.commits, 'prefetch');
74
76
  const prStatusPrefetch = jest.spyOn(caches.prStatus, 'prefetch');
75
77
  const items = [
76
78
  makeItem(1),
@@ -79,20 +81,9 @@ describe('useConsoleDetailPrefetch', () => {
79
81
  renderHook(() => useConsoleDetailPrefetch(caches, items[0], items));
80
82
  jest.runAllTimers();
81
83
 
82
- expect(filesPrefetch).toHaveBeenCalledWith('o/r#2', items[1].url);
83
- expect(prStatusPrefetch).toHaveBeenCalledWith('o/r#2', items[1].url);
84
- });
85
-
86
- it('limits prefetch to the next ten items', () => {
87
- const caches = buildCaches();
88
- const bodyPrefetch = jest.spyOn(caches.body, 'prefetch');
89
- const items = Array.from({ length: 15 }, (_unused, index) =>
90
- makeItem(index + 1),
91
- );
92
- renderHook(() => useConsoleDetailPrefetch(caches, items[0], items));
93
- jest.runAllTimers();
94
-
95
- expect(bodyPrefetch).toHaveBeenCalledTimes(10);
84
+ expect(filesPrefetch).not.toHaveBeenCalled();
85
+ expect(commitsPrefetch).not.toHaveBeenCalled();
86
+ expect(prStatusPrefetch).not.toHaveBeenCalled();
96
87
  });
97
88
 
98
89
  it('does nothing when no item is selected', () => {
@@ -2,7 +2,7 @@ import { useEffect } from 'react';
2
2
  import type { ConsoleListItem } from '../logic/types';
3
3
  import type { ConsoleCaches } from './useConsoleCaches';
4
4
 
5
- const PREFETCH_AHEAD_COUNT = 10;
5
+ const PREFETCH_AHEAD_COUNT = 0;
6
6
  const PREFETCH_DEFER_MS = 500;
7
7
  const PREFETCH_IDLE_TIMEOUT_MS = 2000;
8
8