mdjournal 1.0.16 → 1.1.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/LICENSE +26 -0
- package/README.md +20 -17
- package/dist/README.md +335 -0
- package/dist/client/assets/index-CWshDATd.js +402 -0
- package/dist/client/dist/assets/index-CWshDATd.js +402 -0
- package/dist/client/dist/index.html +1 -1
- package/dist/client/index.html +1 -1
- package/dist/packages/contract/mdjournal/domains/CalendarApi.d.ts +19 -0
- package/dist/packages/contract/mdjournal/domains/CalendarApi.d.ts.map +1 -0
- package/dist/packages/contract/mdjournal/domains/CalendarApi.js +7 -0
- package/dist/packages/contract/mdjournal/domains/CalendarApi.js.map +1 -0
- package/dist/packages/contract/mdjournal/domains/ConfigApi.d.ts +29 -0
- package/dist/packages/contract/mdjournal/domains/ConfigApi.d.ts.map +1 -0
- package/dist/packages/contract/mdjournal/domains/ConfigApi.js +7 -0
- package/dist/packages/contract/mdjournal/domains/ConfigApi.js.map +1 -0
- package/dist/packages/contract/mdjournal/domains/GitApi.d.ts +14 -0
- package/dist/packages/contract/mdjournal/domains/GitApi.d.ts.map +1 -0
- package/dist/packages/contract/mdjournal/domains/GitApi.js +7 -0
- package/dist/packages/contract/mdjournal/domains/GitApi.js.map +1 -0
- package/dist/packages/contract/mdjournal/domains/ReportApi.d.ts +24 -0
- package/dist/packages/contract/mdjournal/domains/ReportApi.d.ts.map +1 -0
- package/dist/packages/contract/mdjournal/domains/ReportApi.js +7 -0
- package/dist/packages/contract/mdjournal/domains/ReportApi.js.map +1 -0
- package/dist/packages/contract/mdjournal/domains/index.d.ts +24 -0
- package/dist/packages/contract/mdjournal/domains/index.d.ts.map +1 -0
- package/dist/packages/contract/mdjournal/domains/index.js +7 -0
- package/dist/packages/contract/mdjournal/domains/index.js.map +1 -0
- package/dist/packages/contract/mdjournal/errors/index.d.ts +19 -0
- package/dist/packages/contract/mdjournal/errors/index.d.ts.map +1 -0
- package/dist/packages/contract/mdjournal/errors/index.js +29 -0
- package/dist/packages/contract/mdjournal/errors/index.js.map +1 -0
- package/dist/packages/contract/mdjournal/index.d.ts +8 -0
- package/dist/packages/contract/mdjournal/index.d.ts.map +1 -0
- package/dist/packages/contract/mdjournal/index.js +8 -0
- package/dist/packages/contract/mdjournal/index.js.map +1 -0
- package/dist/packages/contract/mdjournal/schemas/index.d.ts +7 -0
- package/dist/packages/contract/mdjournal/schemas/index.d.ts.map +1 -0
- package/dist/packages/contract/mdjournal/schemas/index.js +7 -0
- package/dist/packages/contract/mdjournal/schemas/index.js.map +1 -0
- package/dist/packages/contract/mdjournal/schemas/types.d.ts +357 -0
- package/dist/packages/contract/mdjournal/schemas/types.d.ts.map +1 -0
- package/dist/packages/contract/mdjournal/schemas/types.js +7 -0
- package/dist/packages/contract/mdjournal/schemas/types.js.map +1 -0
- package/dist/packages/contract/mdjournal/schemas/validators.d.ts +1576 -0
- package/dist/packages/contract/mdjournal/schemas/validators.d.ts.map +1 -0
- package/dist/packages/contract/mdjournal/schemas/validators.js +952 -0
- package/dist/packages/contract/mdjournal/schemas/validators.js.map +1 -0
- package/dist/server/src/cli.d.ts.map +1 -0
- package/dist/server/src/cli.js.map +1 -0
- package/dist/server/src/index.d.ts.map +1 -0
- package/dist/{index.js → server/src/index.js} +21 -11
- package/dist/server/src/index.js.map +1 -0
- package/dist/server/src/mdjournal/domains/CalendarDomain.d.ts +19 -0
- package/dist/server/src/mdjournal/domains/CalendarDomain.d.ts.map +1 -0
- package/dist/server/src/mdjournal/domains/CalendarDomain.js +88 -0
- package/dist/server/src/mdjournal/domains/CalendarDomain.js.map +1 -0
- package/dist/server/src/mdjournal/domains/CalendarDomain.test.d.ts +2 -0
- package/dist/server/src/mdjournal/domains/CalendarDomain.test.d.ts.map +1 -0
- package/dist/server/src/mdjournal/domains/CalendarDomain.test.js +111 -0
- package/dist/server/src/mdjournal/domains/CalendarDomain.test.js.map +1 -0
- package/dist/server/src/mdjournal/domains/ConfigDomain.d.ts +27 -0
- package/dist/server/src/mdjournal/domains/ConfigDomain.d.ts.map +1 -0
- package/dist/server/src/mdjournal/domains/ConfigDomain.js +59 -0
- package/dist/server/src/mdjournal/domains/ConfigDomain.js.map +1 -0
- package/dist/server/src/mdjournal/domains/ConfigDomain.test.d.ts +2 -0
- package/dist/server/src/mdjournal/domains/ConfigDomain.test.d.ts.map +1 -0
- package/dist/server/src/mdjournal/domains/ConfigDomain.test.js +177 -0
- package/dist/server/src/mdjournal/domains/ConfigDomain.test.js.map +1 -0
- package/dist/server/src/mdjournal/domains/GitDomain.d.ts +15 -0
- package/dist/server/src/mdjournal/domains/GitDomain.d.ts.map +1 -0
- package/dist/server/src/mdjournal/domains/GitDomain.js +16 -0
- package/dist/server/src/mdjournal/domains/GitDomain.js.map +1 -0
- package/dist/server/src/mdjournal/domains/GitDomain.test.d.ts +2 -0
- package/dist/server/src/mdjournal/domains/GitDomain.test.d.ts.map +1 -0
- package/dist/server/src/mdjournal/domains/GitDomain.test.js +112 -0
- package/dist/server/src/mdjournal/domains/GitDomain.test.js.map +1 -0
- package/dist/server/src/mdjournal/domains/ReportDomain.d.ts +23 -0
- package/dist/server/src/mdjournal/domains/ReportDomain.d.ts.map +1 -0
- package/dist/server/src/mdjournal/domains/ReportDomain.js +117 -0
- package/dist/server/src/mdjournal/domains/ReportDomain.js.map +1 -0
- package/dist/server/src/mdjournal/domains/ReportDomain.test.d.ts +2 -0
- package/dist/server/src/mdjournal/domains/ReportDomain.test.d.ts.map +1 -0
- package/dist/server/src/mdjournal/domains/ReportDomain.test.js +207 -0
- package/dist/server/src/mdjournal/domains/ReportDomain.test.js.map +1 -0
- package/dist/server/src/mdjournal/domains/errors.d.ts +17 -0
- package/dist/server/src/mdjournal/domains/errors.d.ts.map +1 -0
- package/dist/server/src/mdjournal/domains/errors.js +27 -0
- package/dist/server/src/mdjournal/domains/errors.js.map +1 -0
- package/dist/server/src/mdjournal/domains/index.d.ts +15 -0
- package/dist/server/src/mdjournal/domains/index.d.ts.map +1 -0
- package/dist/server/src/mdjournal/domains/index.js +11 -0
- package/dist/server/src/mdjournal/domains/index.js.map +1 -0
- package/dist/server/src/mdjournal/index.d.ts +17 -0
- package/dist/server/src/mdjournal/index.d.ts.map +1 -0
- package/dist/server/src/mdjournal/index.js +34 -0
- package/dist/server/src/mdjournal/index.js.map +1 -0
- package/dist/server/src/mdjournal/routes.generated.d.ts +28 -0
- package/dist/server/src/mdjournal/routes.generated.d.ts.map +1 -0
- package/dist/server/src/mdjournal/routes.generated.js +403 -0
- package/dist/server/src/mdjournal/routes.generated.js.map +1 -0
- package/dist/server/src/types/index.d.ts.map +1 -0
- package/dist/server/src/types/index.js.map +1 -0
- package/dist/server/src/utils/configValidator.d.ts.map +1 -0
- package/dist/server/src/utils/configValidator.js.map +1 -0
- package/dist/server/src/utils/configValidator.test.d.ts +2 -0
- package/dist/server/src/utils/configValidator.test.d.ts.map +1 -0
- package/dist/server/src/utils/configValidator.test.js +359 -0
- package/dist/server/src/utils/configValidator.test.js.map +1 -0
- package/dist/server/src/utils/fileManager.d.ts.map +1 -0
- package/dist/server/src/utils/fileManager.js.map +1 -0
- package/dist/server/src/utils/git.d.ts.map +1 -0
- package/dist/server/src/utils/git.js.map +1 -0
- package/dist/server/src/utils/index.d.ts.map +1 -0
- package/dist/server/src/utils/index.js.map +1 -0
- package/dist/server/src/utils/markdown.d.ts.map +1 -0
- package/dist/server/src/utils/markdown.js.map +1 -0
- package/dist/server/src/utils/markdown.test.d.ts +2 -0
- package/dist/server/src/utils/markdown.test.d.ts.map +1 -0
- package/dist/server/src/utils/markdown.test.js +291 -0
- package/dist/server/src/utils/markdown.test.js.map +1 -0
- package/dist/server/src/utils/slack.d.ts.map +1 -0
- package/dist/server/src/utils/slack.js.map +1 -0
- package/dist/server/src/utils/validator.d.ts.map +1 -0
- package/dist/server/src/utils/validator.js.map +1 -0
- package/dist/server/src/utils/validator.test.d.ts +2 -0
- package/dist/server/src/utils/validator.test.d.ts.map +1 -0
- package/dist/server/src/utils/validator.test.js +307 -0
- package/dist/server/src/utils/validator.test.js.map +1 -0
- package/package.json +37 -17
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/client/assets/index-DlkkIyB6.js +0 -402
- package/dist/client/dist/assets/index-DlkkIyB6.js +0 -402
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/routes/calendar.d.ts +0 -8
- package/dist/routes/calendar.d.ts.map +0 -1
- package/dist/routes/calendar.js +0 -115
- package/dist/routes/calendar.js.map +0 -1
- package/dist/routes/config.d.ts +0 -11
- package/dist/routes/config.d.ts.map +0 -1
- package/dist/routes/config.js +0 -120
- package/dist/routes/config.js.map +0 -1
- package/dist/routes/gcal.d.ts +0 -10
- package/dist/routes/gcal.d.ts.map +0 -1
- package/dist/routes/gcal.js +0 -100
- package/dist/routes/gcal.js.map +0 -1
- package/dist/routes/git.d.ts +0 -8
- package/dist/routes/git.d.ts.map +0 -1
- package/dist/routes/git.js +0 -28
- package/dist/routes/git.js.map +0 -1
- package/dist/routes/index.d.ts +0 -9
- package/dist/routes/index.d.ts.map +0 -1
- package/dist/routes/index.js +0 -9
- package/dist/routes/index.js.map +0 -1
- package/dist/routes/reports.d.ts +0 -10
- package/dist/routes/reports.d.ts.map +0 -1
- package/dist/routes/reports.js +0 -175
- package/dist/routes/reports.js.map +0 -1
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/utils/configValidator.d.ts.map +0 -1
- package/dist/utils/configValidator.js.map +0 -1
- package/dist/utils/fileManager.d.ts.map +0 -1
- package/dist/utils/fileManager.js.map +0 -1
- package/dist/utils/git.d.ts.map +0 -1
- package/dist/utils/git.js.map +0 -1
- package/dist/utils/index.d.ts.map +0 -1
- package/dist/utils/index.js.map +0 -1
- package/dist/utils/markdown.d.ts.map +0 -1
- package/dist/utils/markdown.js.map +0 -1
- package/dist/utils/slack.d.ts.map +0 -1
- package/dist/utils/slack.js.map +0 -1
- package/dist/utils/validator.d.ts.map +0 -1
- package/dist/utils/validator.js.map +0 -1
- /package/{docs → dist/docs}/api-reference.html +0 -0
- /package/{docs → dist/docs}/config-spec.md +0 -0
- /package/{docs → dist/docs}/extension-spec.md +0 -0
- /package/{docs → dist/docs}/index.md +0 -0
- /package/{docs → dist/docs}/integration-spec.md +0 -0
- /package/{docs → dist/docs}/markdown-format-spec.md +0 -0
- /package/{docs → dist/docs}/openapi.yaml +0 -0
- /package/{docs → dist/docs}/requirements.md +0 -0
- /package/{docs → dist/docs}/screenshot.png +0 -0
- /package/dist/{cli.d.ts → server/src/cli.d.ts} +0 -0
- /package/dist/{cli.js → server/src/cli.js} +0 -0
- /package/dist/{index.d.ts → server/src/index.d.ts} +0 -0
- /package/dist/{types → server/src/types}/index.d.ts +0 -0
- /package/dist/{types → server/src/types}/index.js +0 -0
- /package/dist/{utils → server/src/utils}/configValidator.d.ts +0 -0
- /package/dist/{utils → server/src/utils}/configValidator.js +0 -0
- /package/dist/{utils → server/src/utils}/fileManager.d.ts +0 -0
- /package/dist/{utils → server/src/utils}/fileManager.js +0 -0
- /package/dist/{utils → server/src/utils}/git.d.ts +0 -0
- /package/dist/{utils → server/src/utils}/git.js +0 -0
- /package/dist/{utils → server/src/utils}/index.d.ts +0 -0
- /package/dist/{utils → server/src/utils}/index.js +0 -0
- /package/dist/{utils → server/src/utils}/markdown.d.ts +0 -0
- /package/dist/{utils → server/src/utils}/markdown.js +0 -0
- /package/dist/{utils → server/src/utils}/slack.d.ts +0 -0
- /package/dist/{utils → server/src/utils}/slack.js +0 -0
- /package/dist/{utils → server/src/utils}/validator.d.ts +0 -0
- /package/dist/{utils → server/src/utils}/validator.js +0 -0
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ConfigDomain tests
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
5
|
+
import { ConfigDomain } from './ConfigDomain.js';
|
|
6
|
+
import { ValidationError } from './errors.js';
|
|
7
|
+
// Mock dependencies
|
|
8
|
+
vi.mock('../../utils/fileManager.js', () => ({
|
|
9
|
+
readConfig: vi.fn(),
|
|
10
|
+
writeConfig: vi.fn(),
|
|
11
|
+
readRoutinesMarkdown: vi.fn(),
|
|
12
|
+
writeRoutinesMarkdown: vi.fn(),
|
|
13
|
+
}));
|
|
14
|
+
import { readConfig, writeConfig, readRoutinesMarkdown, writeRoutinesMarkdown, } from '../../utils/fileManager.js';
|
|
15
|
+
describe('ConfigDomain', () => {
|
|
16
|
+
let configDomain;
|
|
17
|
+
beforeEach(() => {
|
|
18
|
+
configDomain = new ConfigDomain();
|
|
19
|
+
vi.clearAllMocks();
|
|
20
|
+
});
|
|
21
|
+
describe('getConfig', () => {
|
|
22
|
+
it('should return config', async () => {
|
|
23
|
+
const mockConfig = {
|
|
24
|
+
projects: [
|
|
25
|
+
{ code: 'P99', name: 'テストプロジェクト', color: '#FF0000', category: 'internal', active: true },
|
|
26
|
+
],
|
|
27
|
+
routines: {
|
|
28
|
+
weekly: {
|
|
29
|
+
monday: [],
|
|
30
|
+
},
|
|
31
|
+
},
|
|
32
|
+
timeline: {
|
|
33
|
+
hourHeight: 60,
|
|
34
|
+
maxHours: 24,
|
|
35
|
+
defaultStartHour: 8,
|
|
36
|
+
defaultEndHour: 20,
|
|
37
|
+
snapMinutes: 15,
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
vi.mocked(readConfig).mockResolvedValue(mockConfig);
|
|
41
|
+
const result = await configDomain.getConfig({});
|
|
42
|
+
expect(readConfig).toHaveBeenCalled();
|
|
43
|
+
expect(result).toEqual(mockConfig);
|
|
44
|
+
});
|
|
45
|
+
});
|
|
46
|
+
describe('updateConfig', () => {
|
|
47
|
+
it('should update config with valid projects', async () => {
|
|
48
|
+
const mockConfig = {
|
|
49
|
+
projects: [
|
|
50
|
+
{ code: 'P99', name: 'テストプロジェクト', color: '#FF0000', category: 'internal', active: true },
|
|
51
|
+
],
|
|
52
|
+
routines: {},
|
|
53
|
+
};
|
|
54
|
+
vi.mocked(writeConfig).mockResolvedValue(undefined);
|
|
55
|
+
vi.mocked(readConfig).mockResolvedValue(mockConfig);
|
|
56
|
+
const result = await configDomain.updateConfig({
|
|
57
|
+
data: {
|
|
58
|
+
projects: [
|
|
59
|
+
{ code: 'P99', name: 'テストプロジェクト', color: '#FF0000', category: 'internal', active: true },
|
|
60
|
+
],
|
|
61
|
+
},
|
|
62
|
+
});
|
|
63
|
+
expect(writeConfig).toHaveBeenCalled();
|
|
64
|
+
expect(result).toEqual(mockConfig);
|
|
65
|
+
});
|
|
66
|
+
it('should throw ValidationError for project without required fields', async () => {
|
|
67
|
+
await expect(configDomain.updateConfig({
|
|
68
|
+
data: {
|
|
69
|
+
projects: [
|
|
70
|
+
{ code: 'P99', name: '', color: '#FF0000', category: 'internal', active: true },
|
|
71
|
+
],
|
|
72
|
+
},
|
|
73
|
+
})).rejects.toThrow(ValidationError);
|
|
74
|
+
});
|
|
75
|
+
it('should throw ValidationError for invalid color format', async () => {
|
|
76
|
+
await expect(configDomain.updateConfig({
|
|
77
|
+
data: {
|
|
78
|
+
projects: [
|
|
79
|
+
{ code: 'P99', name: 'テスト', color: 'red', category: 'internal', active: true },
|
|
80
|
+
],
|
|
81
|
+
},
|
|
82
|
+
})).rejects.toThrow(ValidationError);
|
|
83
|
+
await expect(configDomain.updateConfig({
|
|
84
|
+
data: {
|
|
85
|
+
projects: [
|
|
86
|
+
{ code: 'P99', name: 'テスト', color: '#FFF', category: 'internal', active: true },
|
|
87
|
+
],
|
|
88
|
+
},
|
|
89
|
+
})).rejects.toThrow(ValidationError);
|
|
90
|
+
});
|
|
91
|
+
it('should throw ValidationError for invalid category', async () => {
|
|
92
|
+
await expect(configDomain.updateConfig({
|
|
93
|
+
data: {
|
|
94
|
+
projects: [
|
|
95
|
+
{ code: 'P99', name: 'テスト', color: '#FF0000', category: 'invalid', active: true },
|
|
96
|
+
],
|
|
97
|
+
},
|
|
98
|
+
})).rejects.toThrow(ValidationError);
|
|
99
|
+
});
|
|
100
|
+
it('should accept all valid categories', async () => {
|
|
101
|
+
vi.mocked(writeConfig).mockResolvedValue(undefined);
|
|
102
|
+
vi.mocked(readConfig).mockResolvedValue({ projects: [], routines: {} });
|
|
103
|
+
const categories = ['internal', 'client', 'personal'];
|
|
104
|
+
for (const category of categories) {
|
|
105
|
+
await expect(configDomain.updateConfig({
|
|
106
|
+
data: {
|
|
107
|
+
projects: [
|
|
108
|
+
{ code: 'P99', name: 'テスト', color: '#FF0000', category, active: true },
|
|
109
|
+
],
|
|
110
|
+
},
|
|
111
|
+
})).resolves.toBeDefined();
|
|
112
|
+
}
|
|
113
|
+
});
|
|
114
|
+
it('should update config without projects', async () => {
|
|
115
|
+
const mockConfig = {
|
|
116
|
+
projects: [],
|
|
117
|
+
routines: {},
|
|
118
|
+
timeline: { hourHeight: 80, maxHours: 24, defaultStartHour: 8, defaultEndHour: 20, snapMinutes: 15 },
|
|
119
|
+
};
|
|
120
|
+
vi.mocked(writeConfig).mockResolvedValue(undefined);
|
|
121
|
+
vi.mocked(readConfig).mockResolvedValue(mockConfig);
|
|
122
|
+
const result = await configDomain.updateConfig({
|
|
123
|
+
data: { timeline: { hourHeight: 80 } },
|
|
124
|
+
});
|
|
125
|
+
expect(writeConfig).toHaveBeenCalled();
|
|
126
|
+
expect(result).toEqual(mockConfig);
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
describe('getRoutinesMarkdown', () => {
|
|
130
|
+
it('should return routines markdown', async () => {
|
|
131
|
+
const mockResponse = {
|
|
132
|
+
content: '# ルーチン設定\n\n## 平日\n* 08:00 [P99] 朝礼',
|
|
133
|
+
source: 'markdown',
|
|
134
|
+
};
|
|
135
|
+
vi.mocked(readRoutinesMarkdown).mockResolvedValue(mockResponse);
|
|
136
|
+
const result = await configDomain.getRoutinesMarkdown({});
|
|
137
|
+
expect(readRoutinesMarkdown).toHaveBeenCalled();
|
|
138
|
+
expect(result).toEqual(mockResponse);
|
|
139
|
+
});
|
|
140
|
+
it('should return routines from yaml source', async () => {
|
|
141
|
+
const mockResponse = {
|
|
142
|
+
content: '# ルーチン設定(YAMLから変換)',
|
|
143
|
+
source: 'yaml',
|
|
144
|
+
};
|
|
145
|
+
vi.mocked(readRoutinesMarkdown).mockResolvedValue(mockResponse);
|
|
146
|
+
const result = await configDomain.getRoutinesMarkdown({});
|
|
147
|
+
expect(result.source).toBe('yaml');
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
describe('saveRoutinesMarkdown', () => {
|
|
151
|
+
it('should save routines markdown', async () => {
|
|
152
|
+
const content = '# ルーチン設定\n\n## 平日\n* 08:00 [P99] 朝礼';
|
|
153
|
+
const mockResponse = {
|
|
154
|
+
content,
|
|
155
|
+
source: 'markdown',
|
|
156
|
+
};
|
|
157
|
+
vi.mocked(writeRoutinesMarkdown).mockResolvedValue(undefined);
|
|
158
|
+
vi.mocked(readRoutinesMarkdown).mockResolvedValue(mockResponse);
|
|
159
|
+
const result = await configDomain.saveRoutinesMarkdown({
|
|
160
|
+
data: { content },
|
|
161
|
+
});
|
|
162
|
+
expect(writeRoutinesMarkdown).toHaveBeenCalledWith(content);
|
|
163
|
+
expect(result).toEqual(mockResponse);
|
|
164
|
+
});
|
|
165
|
+
it('should throw ValidationError when content is missing', async () => {
|
|
166
|
+
await expect(configDomain.saveRoutinesMarkdown({
|
|
167
|
+
data: { content: '' },
|
|
168
|
+
})).rejects.toThrow(ValidationError);
|
|
169
|
+
});
|
|
170
|
+
it('should throw ValidationError when content is not a string', async () => {
|
|
171
|
+
await expect(configDomain.saveRoutinesMarkdown({
|
|
172
|
+
data: { content: undefined },
|
|
173
|
+
})).rejects.toThrow(ValidationError);
|
|
174
|
+
});
|
|
175
|
+
});
|
|
176
|
+
});
|
|
177
|
+
//# sourceMappingURL=ConfigDomain.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ConfigDomain.test.js","sourceRoot":"","sources":["../../../../../server/src/mdjournal/domains/ConfigDomain.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Domain Implementation
|
|
3
|
+
*
|
|
4
|
+
* Implements GitApi interface from the contract package.
|
|
5
|
+
* Contains HTTP-agnostic business logic for Git operations.
|
|
6
|
+
*/
|
|
7
|
+
import type { GitApi } from '@mdjournal/contract/domains/GitApi.js';
|
|
8
|
+
import type { ExtendedGitStatus, Git_getStatusInput } from '@mdjournal/contract/schemas/types.js';
|
|
9
|
+
export declare class GitDomain implements GitApi {
|
|
10
|
+
/**
|
|
11
|
+
* Git状態取得
|
|
12
|
+
*/
|
|
13
|
+
getStatus(_input: Git_getStatusInput): Promise<ExtendedGitStatus>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=GitDomain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GitDomain.d.ts","sourceRoot":"","sources":["../../../../../server/src/mdjournal/domains/GitDomain.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uCAAuC,CAAC;AACpE,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,sCAAsC,CAAC;AAI9C,qBAAa,SAAU,YAAW,MAAM;IACtC;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAGxE"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Domain Implementation
|
|
3
|
+
*
|
|
4
|
+
* Implements GitApi interface from the contract package.
|
|
5
|
+
* Contains HTTP-agnostic business logic for Git operations.
|
|
6
|
+
*/
|
|
7
|
+
import { getExtendedGitStatus } from '../../utils/git.js';
|
|
8
|
+
export class GitDomain {
|
|
9
|
+
/**
|
|
10
|
+
* Git状態取得
|
|
11
|
+
*/
|
|
12
|
+
async getStatus(_input) {
|
|
13
|
+
return await getExtendedGitStatus();
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=GitDomain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GitDomain.js","sourceRoot":"","sources":["../../../../../server/src/mdjournal/domains/GitDomain.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAE1D,MAAM,OAAO,SAAS;IACpB;;OAEG;IACH,KAAK,CAAC,SAAS,CAAC,MAA0B;QACxC,OAAO,MAAM,oBAAoB,EAAE,CAAC;IACtC,CAAC;CACF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GitDomain.test.d.ts","sourceRoot":"","sources":["../../../../../server/src/mdjournal/domains/GitDomain.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitDomain tests
|
|
3
|
+
*/
|
|
4
|
+
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
5
|
+
import { GitDomain } from './GitDomain.js';
|
|
6
|
+
// Mock dependencies
|
|
7
|
+
vi.mock('../../utils/git.js', () => ({
|
|
8
|
+
getExtendedGitStatus: vi.fn(),
|
|
9
|
+
}));
|
|
10
|
+
import { getExtendedGitStatus } from '../../utils/git.js';
|
|
11
|
+
describe('GitDomain', () => {
|
|
12
|
+
let gitDomain;
|
|
13
|
+
beforeEach(() => {
|
|
14
|
+
gitDomain = new GitDomain();
|
|
15
|
+
vi.clearAllMocks();
|
|
16
|
+
});
|
|
17
|
+
describe('getStatus', () => {
|
|
18
|
+
it('should return git status when repo is clean', async () => {
|
|
19
|
+
const mockStatus = {
|
|
20
|
+
branch: 'main',
|
|
21
|
+
uncommitted: {
|
|
22
|
+
count: 0,
|
|
23
|
+
files: [],
|
|
24
|
+
},
|
|
25
|
+
unpushed: {
|
|
26
|
+
count: 0,
|
|
27
|
+
commits: [],
|
|
28
|
+
},
|
|
29
|
+
};
|
|
30
|
+
vi.mocked(getExtendedGitStatus).mockResolvedValue(mockStatus);
|
|
31
|
+
const result = await gitDomain.getStatus({});
|
|
32
|
+
expect(getExtendedGitStatus).toHaveBeenCalled();
|
|
33
|
+
expect(result.branch).toBe('main');
|
|
34
|
+
expect(result.uncommitted.count).toBe(0);
|
|
35
|
+
expect(result.unpushed.count).toBe(0);
|
|
36
|
+
});
|
|
37
|
+
it('should return git status with uncommitted changes', async () => {
|
|
38
|
+
const mockStatus = {
|
|
39
|
+
branch: 'feature/test',
|
|
40
|
+
uncommitted: {
|
|
41
|
+
count: 3,
|
|
42
|
+
files: [
|
|
43
|
+
{ path: 'reports/2025-01-06.md', status: 'M' },
|
|
44
|
+
{ path: 'config/projects.yaml', status: 'A' },
|
|
45
|
+
{ path: 'README.md', status: 'M' },
|
|
46
|
+
],
|
|
47
|
+
},
|
|
48
|
+
unpushed: {
|
|
49
|
+
count: 2,
|
|
50
|
+
commits: [
|
|
51
|
+
{ hash: 'abc123', message: '日報更新', date: '2025-01-06 10:00:00', files: ['reports/2025-01-06.md'] },
|
|
52
|
+
{ hash: 'def456', message: '設定追加', date: '2025-01-06 09:00:00', files: ['config/projects.yaml'] },
|
|
53
|
+
],
|
|
54
|
+
},
|
|
55
|
+
lastCommit: {
|
|
56
|
+
hash: 'abc123',
|
|
57
|
+
message: '日報更新',
|
|
58
|
+
date: '2025-01-06 10:00:00',
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
vi.mocked(getExtendedGitStatus).mockResolvedValue(mockStatus);
|
|
62
|
+
const result = await gitDomain.getStatus({});
|
|
63
|
+
expect(result.branch).toBe('feature/test');
|
|
64
|
+
expect(result.uncommitted.count).toBe(3);
|
|
65
|
+
expect(result.uncommitted.files).toHaveLength(3);
|
|
66
|
+
expect(result.unpushed.count).toBe(2);
|
|
67
|
+
expect(result.lastCommit?.hash).toBe('abc123');
|
|
68
|
+
});
|
|
69
|
+
it('should handle repository with no unpushed commits', async () => {
|
|
70
|
+
const mockStatus = {
|
|
71
|
+
branch: 'main',
|
|
72
|
+
uncommitted: {
|
|
73
|
+
count: 1,
|
|
74
|
+
files: [{ path: 'file.txt', status: 'M' }],
|
|
75
|
+
},
|
|
76
|
+
unpushed: {
|
|
77
|
+
count: 0,
|
|
78
|
+
commits: [],
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
vi.mocked(getExtendedGitStatus).mockResolvedValue(mockStatus);
|
|
82
|
+
const result = await gitDomain.getStatus({});
|
|
83
|
+
expect(result.branch).toBe('main');
|
|
84
|
+
expect(result.uncommitted.count).toBe(1);
|
|
85
|
+
expect(result.unpushed.count).toBe(0);
|
|
86
|
+
});
|
|
87
|
+
it('should handle lastCommit info', async () => {
|
|
88
|
+
const mockStatus = {
|
|
89
|
+
branch: 'main',
|
|
90
|
+
uncommitted: {
|
|
91
|
+
count: 0,
|
|
92
|
+
files: [],
|
|
93
|
+
},
|
|
94
|
+
unpushed: {
|
|
95
|
+
count: 0,
|
|
96
|
+
commits: [],
|
|
97
|
+
},
|
|
98
|
+
lastCommit: {
|
|
99
|
+
hash: 'xyz789',
|
|
100
|
+
message: '最新コミット',
|
|
101
|
+
date: '2025-01-05 18:00:00',
|
|
102
|
+
},
|
|
103
|
+
};
|
|
104
|
+
vi.mocked(getExtendedGitStatus).mockResolvedValue(mockStatus);
|
|
105
|
+
const result = await gitDomain.getStatus({});
|
|
106
|
+
expect(result.lastCommit).toBeDefined();
|
|
107
|
+
expect(result.lastCommit?.hash).toBe('xyz789');
|
|
108
|
+
expect(result.lastCommit?.message).toBe('最新コミット');
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
});
|
|
112
|
+
//# sourceMappingURL=GitDomain.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GitDomain.test.js","sourceRoot":"","sources":["../../../../../server/src/mdjournal/domains/GitDomain.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report Domain Implementation
|
|
3
|
+
*
|
|
4
|
+
* Implements ReportApi interface from the contract package.
|
|
5
|
+
* Contains HTTP-agnostic business logic for report operations.
|
|
6
|
+
*/
|
|
7
|
+
import type { ReportApi } from '@mdjournal/contract/domains/ReportApi.js';
|
|
8
|
+
import type { ReportResponse, ReportSaveResponse, Report_getReportInput, Report_saveReportInput, Report_deleteReportInput } from '@mdjournal/contract/schemas/types.js';
|
|
9
|
+
export declare class ReportDomain implements ReportApi {
|
|
10
|
+
/**
|
|
11
|
+
* 日報取得
|
|
12
|
+
*/
|
|
13
|
+
getReport(input: Report_getReportInput): Promise<ReportResponse>;
|
|
14
|
+
/**
|
|
15
|
+
* 日報保存
|
|
16
|
+
*/
|
|
17
|
+
saveReport(input: Report_saveReportInput): Promise<ReportSaveResponse>;
|
|
18
|
+
/**
|
|
19
|
+
* 日報削除
|
|
20
|
+
*/
|
|
21
|
+
deleteReport(input: Report_deleteReportInput): Promise<void>;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=ReportDomain.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportDomain.d.ts","sourceRoot":"","sources":["../../../../../server/src/mdjournal/domains/ReportDomain.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0CAA0C,CAAC;AAC1E,OAAO,KAAK,EACV,cAAc,EACd,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,wBAAwB,EACzB,MAAM,sCAAsC,CAAC;AAe9C,qBAAa,YAAa,YAAW,SAAS;IAC5C;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC;IA2BtE;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAoE5E;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAAC,IAAI,CAAC;CAanE"}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Report Domain Implementation
|
|
3
|
+
*
|
|
4
|
+
* Implements ReportApi interface from the contract package.
|
|
5
|
+
* Contains HTTP-agnostic business logic for report operations.
|
|
6
|
+
*/
|
|
7
|
+
import { readReport, writeReport, deleteReport as deleteReportFile, getReportFilePath } from '../../utils/fileManager.js';
|
|
8
|
+
import { parseMarkdown, calculateStats } from '../../utils/markdown.js';
|
|
9
|
+
import { gitCommit, gitPush, getRelativePathFromGitRoot } from '../../utils/git.js';
|
|
10
|
+
import { postToSlack } from '../../utils/slack.js';
|
|
11
|
+
import { NotFoundError, ValidationError } from './errors.js';
|
|
12
|
+
/**
|
|
13
|
+
* 日付形式のバリデーション
|
|
14
|
+
*/
|
|
15
|
+
function isValidDate(date) {
|
|
16
|
+
return /^\d{4}-\d{2}-\d{2}$/.test(date);
|
|
17
|
+
}
|
|
18
|
+
export class ReportDomain {
|
|
19
|
+
/**
|
|
20
|
+
* 日報取得
|
|
21
|
+
*/
|
|
22
|
+
async getReport(input) {
|
|
23
|
+
const { date } = input;
|
|
24
|
+
if (!isValidDate(date)) {
|
|
25
|
+
throw new ValidationError('日付形式が不正です(YYYY-MM-DD形式で指定してください)');
|
|
26
|
+
}
|
|
27
|
+
const result = await readReport(date);
|
|
28
|
+
if (!result) {
|
|
29
|
+
throw new NotFoundError('指定された日報が見つかりません');
|
|
30
|
+
}
|
|
31
|
+
// frontmatterがない場合はパースして統計情報を計算
|
|
32
|
+
let stats = result.stats;
|
|
33
|
+
if (!stats) {
|
|
34
|
+
const report = parseMarkdown(date, result.content);
|
|
35
|
+
stats = calculateStats(report);
|
|
36
|
+
}
|
|
37
|
+
return {
|
|
38
|
+
date,
|
|
39
|
+
content: result.content,
|
|
40
|
+
stats,
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* 日報保存
|
|
45
|
+
*/
|
|
46
|
+
async saveReport(input) {
|
|
47
|
+
const { date, data } = input;
|
|
48
|
+
if (!isValidDate(date)) {
|
|
49
|
+
throw new ValidationError('日付形式が不正です(YYYY-MM-DD形式で指定してください)');
|
|
50
|
+
}
|
|
51
|
+
if (!data.content) {
|
|
52
|
+
throw new ValidationError('contentフィールドは必須です');
|
|
53
|
+
}
|
|
54
|
+
// Markdownをパースして統計情報を計算
|
|
55
|
+
const report = parseMarkdown(date, data.content);
|
|
56
|
+
const stats = calculateStats(report);
|
|
57
|
+
// ファイルに保存
|
|
58
|
+
await writeReport(date, data.content, stats);
|
|
59
|
+
const response = {
|
|
60
|
+
date,
|
|
61
|
+
saved: true,
|
|
62
|
+
stats,
|
|
63
|
+
};
|
|
64
|
+
// Git操作
|
|
65
|
+
if (data.git?.commit) {
|
|
66
|
+
const filePath = getReportFilePath(date);
|
|
67
|
+
const relativePath = getRelativePathFromGitRoot(filePath);
|
|
68
|
+
const message = data.git.message || `日報更新: ${date}`;
|
|
69
|
+
console.log(`Git commit: ${relativePath}`);
|
|
70
|
+
const commitResult = await gitCommit(relativePath, message);
|
|
71
|
+
console.log(`Git commit result:`, commitResult);
|
|
72
|
+
response.git = {
|
|
73
|
+
committed: commitResult.success,
|
|
74
|
+
commitHash: commitResult.commitHash,
|
|
75
|
+
error: commitResult.error,
|
|
76
|
+
};
|
|
77
|
+
// Push
|
|
78
|
+
if (data.git.push && commitResult.success) {
|
|
79
|
+
const pushResult = await gitPush();
|
|
80
|
+
response.git.pushed = pushResult.success;
|
|
81
|
+
if (pushResult.error) {
|
|
82
|
+
response.git.error = pushResult.error;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
// Slack投稿
|
|
87
|
+
if (data.slack?.post) {
|
|
88
|
+
console.log(`Slack post: ${date}`);
|
|
89
|
+
const slackResult = await postToSlack(date, data.content);
|
|
90
|
+
response.slack = {
|
|
91
|
+
posted: slackResult.success,
|
|
92
|
+
error: slackResult.error,
|
|
93
|
+
};
|
|
94
|
+
if (slackResult.success) {
|
|
95
|
+
console.log(`Slack post success`);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
console.log(`Slack post failed: ${slackResult.error}`);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return response;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* 日報削除
|
|
105
|
+
*/
|
|
106
|
+
async deleteReport(input) {
|
|
107
|
+
const { date } = input;
|
|
108
|
+
if (!isValidDate(date)) {
|
|
109
|
+
throw new ValidationError('日付形式が不正です(YYYY-MM-DD形式で指定してください)');
|
|
110
|
+
}
|
|
111
|
+
const deleted = await deleteReportFile(date);
|
|
112
|
+
if (!deleted) {
|
|
113
|
+
throw new NotFoundError('指定された日報が見つかりません');
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
//# sourceMappingURL=ReportDomain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportDomain.js","sourceRoot":"","sources":["../../../../../server/src/mdjournal/domains/ReportDomain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ReportDomain.test.d.ts","sourceRoot":"","sources":["../../../../../server/src/mdjournal/domains/ReportDomain.test.ts"],"names":[],"mappings":""}
|