create-specment 0.2.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.
- package/LICENSE +21 -0
- package/README.md +314 -0
- package/bin/commands/create.d.ts +3 -0
- package/bin/commands/create.d.ts.map +1 -0
- package/bin/commands/create.js +30 -0
- package/bin/commands/create.js.map +1 -0
- package/bin/constants/languages.d.ts +15 -0
- package/bin/constants/languages.d.ts.map +1 -0
- package/bin/constants/languages.js +14 -0
- package/bin/constants/languages.js.map +1 -0
- package/bin/core/interactive-setup.d.ts +15 -0
- package/bin/core/interactive-setup.d.ts.map +1 -0
- package/bin/core/interactive-setup.js +171 -0
- package/bin/core/interactive-setup.js.map +1 -0
- package/bin/core/interactive-setup.test.d.ts +2 -0
- package/bin/core/interactive-setup.test.d.ts.map +1 -0
- package/bin/core/interactive-setup.test.js +97 -0
- package/bin/core/interactive-setup.test.js.map +1 -0
- package/bin/core/project-generator.d.ts +12 -0
- package/bin/core/project-generator.d.ts.map +1 -0
- package/bin/core/project-generator.js +83 -0
- package/bin/core/project-generator.js.map +1 -0
- package/bin/features/index.d.ts +3 -0
- package/bin/features/index.d.ts.map +1 -0
- package/bin/features/index.js +47 -0
- package/bin/features/index.js.map +1 -0
- package/bin/generators/docusaurus-config.d.ts +3 -0
- package/bin/generators/docusaurus-config.d.ts.map +1 -0
- package/bin/generators/docusaurus-config.js +285 -0
- package/bin/generators/docusaurus-config.js.map +1 -0
- package/bin/generators/package-json.d.ts +3 -0
- package/bin/generators/package-json.d.ts.map +1 -0
- package/bin/generators/package-json.js +98 -0
- package/bin/generators/package-json.js.map +1 -0
- package/bin/generators/template-files.d.ts +3 -0
- package/bin/generators/template-files.d.ts.map +1 -0
- package/bin/generators/template-files.js +370 -0
- package/bin/generators/template-files.js.map +1 -0
- package/bin/index.d.ts +5 -0
- package/bin/index.d.ts.map +1 -0
- package/bin/index.js +37 -0
- package/bin/index.js.map +1 -0
- package/bin/plugins/i18n-integration.d.ts +25 -0
- package/bin/plugins/i18n-integration.d.ts.map +1 -0
- package/bin/plugins/i18n-integration.js +309 -0
- package/bin/plugins/i18n-integration.js.map +1 -0
- package/bin/plugins/plantuml-integration.d.ts +17 -0
- package/bin/plugins/plantuml-integration.d.ts.map +1 -0
- package/bin/plugins/plantuml-integration.js +111 -0
- package/bin/plugins/plantuml-integration.js.map +1 -0
- package/bin/plugins/redoc-integration.d.ts +25 -0
- package/bin/plugins/redoc-integration.d.ts.map +1 -0
- package/bin/plugins/redoc-integration.js +372 -0
- package/bin/plugins/redoc-integration.js.map +1 -0
- package/bin/plugins/search-integration.d.ts +20 -0
- package/bin/plugins/search-integration.d.ts.map +1 -0
- package/bin/plugins/search-integration.js +165 -0
- package/bin/plugins/search-integration.js.map +1 -0
- package/bin/templates/index.d.ts +4 -0
- package/bin/templates/index.d.ts.map +1 -0
- package/bin/templates/index.js +60 -0
- package/bin/templates/index.js.map +1 -0
- package/bin/templates/template-definitions.d.ts +10 -0
- package/bin/templates/template-definitions.d.ts.map +1 -0
- package/bin/templates/template-definitions.js +296 -0
- package/bin/templates/template-definitions.js.map +1 -0
- package/bin/tests/integration.test.d.ts +2 -0
- package/bin/tests/integration.test.d.ts.map +1 -0
- package/bin/tests/integration.test.js +171 -0
- package/bin/tests/integration.test.js.map +1 -0
- package/bin/types/index.d.ts +44 -0
- package/bin/types/index.d.ts.map +1 -0
- package/bin/types/index.js +2 -0
- package/bin/types/index.js.map +1 -0
- package/bin/utils/config-merger.d.ts +32 -0
- package/bin/utils/config-merger.d.ts.map +1 -0
- package/bin/utils/config-merger.js +216 -0
- package/bin/utils/config-merger.js.map +1 -0
- package/bin/utils/errors.d.ts +9 -0
- package/bin/utils/errors.d.ts.map +1 -0
- package/bin/utils/errors.js +22 -0
- package/bin/utils/errors.js.map +1 -0
- package/bin/utils/install.d.ts +5 -0
- package/bin/utils/install.d.ts.map +1 -0
- package/bin/utils/install.js +38 -0
- package/bin/utils/install.js.map +1 -0
- package/bin/utils/message-formatter.d.ts +15 -0
- package/bin/utils/message-formatter.d.ts.map +1 -0
- package/bin/utils/message-formatter.js +85 -0
- package/bin/utils/message-formatter.js.map +1 -0
- package/bin/utils/template-processor.d.ts +54 -0
- package/bin/utils/template-processor.d.ts.map +1 -0
- package/bin/utils/template-processor.js +139 -0
- package/bin/utils/template-processor.js.map +1 -0
- package/bin/utils/template-processor.test.d.ts +2 -0
- package/bin/utils/template-processor.test.d.ts.map +1 -0
- package/bin/utils/template-processor.test.js +120 -0
- package/bin/utils/template-processor.test.js.map +1 -0
- package/bin/utils/version.d.ts +2 -0
- package/bin/utils/version.d.ts.map +1 -0
- package/bin/utils/version.js +10 -0
- package/bin/utils/version.js.map +1 -0
- package/package.json +67 -0
- package/templates/classic-spec/docusaurus.config.js.template +106 -0
- package/templates/classic-spec/package.json.template +36 -0
- package/templates/external-design/docusaurus.config.js.template +123 -0
- package/templates/external-design/package.json.template +36 -0
- package/templates/internal-design/docusaurus.config.js.template +123 -0
- package/templates/internal-design/package.json.template +36 -0
- package/templates/project-analysis/docusaurus.config.js.template +113 -0
- package/templates/project-analysis/package.json.template +36 -0
- package/templates/requirements/docusaurus.config.js.template +119 -0
- package/templates/requirements/package.json.template +36 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
export const templateDefinitions = {
|
|
2
|
+
'classic-spec': {
|
|
3
|
+
name: 'classic-spec',
|
|
4
|
+
displayName: 'Classic Specification',
|
|
5
|
+
description: '汎用的な仕様書テンプレート。基本的なドキュメント構造を提供します。',
|
|
6
|
+
docusaurusConfig: {
|
|
7
|
+
title: 'Classic Specification Documentation',
|
|
8
|
+
tagline: 'Classic Specification Documentation',
|
|
9
|
+
presets: [['classic', { blog: { showReadingTime: true } }]],
|
|
10
|
+
},
|
|
11
|
+
defaultFeatures: ['search'],
|
|
12
|
+
directoryStructure: {
|
|
13
|
+
docs: ['intro.md', 'tutorial-basics', 'tutorial-extras'],
|
|
14
|
+
static: ['img'],
|
|
15
|
+
src: ['css', 'components'],
|
|
16
|
+
},
|
|
17
|
+
sampleContent: [
|
|
18
|
+
{
|
|
19
|
+
path: 'docs/intro.md',
|
|
20
|
+
content: `---
|
|
21
|
+
sidebar_position: 1
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
# Tutorial Intro
|
|
25
|
+
|
|
26
|
+
Let's discover **Docusaurus in less than 5 minutes**.
|
|
27
|
+
|
|
28
|
+
## Getting Started
|
|
29
|
+
|
|
30
|
+
Get started by **creating a new site**.
|
|
31
|
+
|
|
32
|
+
Or **try Docusaurus immediately** with **[docusaurus.new](https://docusaurus.new)**.
|
|
33
|
+
|
|
34
|
+
### What you'll need
|
|
35
|
+
|
|
36
|
+
- [Node.js](https://nodejs.org/en/download/) version 20.0 or above:
|
|
37
|
+
- When installing Node.js, you are recommended to check all checkboxes related to dependencies.
|
|
38
|
+
`,
|
|
39
|
+
template: true,
|
|
40
|
+
},
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
'project-analysis': {
|
|
44
|
+
name: 'project-analysis',
|
|
45
|
+
displayName: 'Project Analysis',
|
|
46
|
+
description: 'プロジェクト概要・分析用テンプレート。プロジェクトの全体像を把握するための構造を提供します。',
|
|
47
|
+
docusaurusConfig: {
|
|
48
|
+
title: 'Project Analysis & Overview Documentation',
|
|
49
|
+
tagline: 'Project Analysis & Overview Documentation',
|
|
50
|
+
presets: [['classic', { blog: false }]],
|
|
51
|
+
},
|
|
52
|
+
defaultFeatures: ['plantuml'],
|
|
53
|
+
directoryStructure: {
|
|
54
|
+
docs: ['analysis', 'overview', 'stakeholders'],
|
|
55
|
+
static: ['img', 'diagrams'],
|
|
56
|
+
},
|
|
57
|
+
sampleContent: [
|
|
58
|
+
{
|
|
59
|
+
path: 'docs/analysis/intro.md',
|
|
60
|
+
content: `---
|
|
61
|
+
sidebar_position: 1
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
# プロジェクト分析
|
|
65
|
+
|
|
66
|
+
このセクションでは、プロジェクトの詳細な分析を行います。
|
|
67
|
+
|
|
68
|
+
## 分析の目的
|
|
69
|
+
|
|
70
|
+
- プロジェクトの現状把握
|
|
71
|
+
- 課題の特定
|
|
72
|
+
- 改善点の洗い出し
|
|
73
|
+
|
|
74
|
+
## 分析手法
|
|
75
|
+
|
|
76
|
+
### SWOT分析
|
|
77
|
+
|
|
78
|
+
#### Strengths (強み)
|
|
79
|
+
-
|
|
80
|
+
|
|
81
|
+
#### Weaknesses (弱み)
|
|
82
|
+
-
|
|
83
|
+
|
|
84
|
+
#### Opportunities (機会)
|
|
85
|
+
-
|
|
86
|
+
|
|
87
|
+
#### Threats (脅威)
|
|
88
|
+
-
|
|
89
|
+
`,
|
|
90
|
+
template: true,
|
|
91
|
+
},
|
|
92
|
+
],
|
|
93
|
+
},
|
|
94
|
+
'requirements': {
|
|
95
|
+
name: 'requirements',
|
|
96
|
+
displayName: 'Requirements Specification',
|
|
97
|
+
description: '要件定義書テンプレート。機能要件・非機能要件を体系的に整理できます。',
|
|
98
|
+
docusaurusConfig: {
|
|
99
|
+
title: 'Requirements Specification Documentation',
|
|
100
|
+
tagline: 'Requirements Specification Documentation',
|
|
101
|
+
presets: [['classic', { blog: false }]],
|
|
102
|
+
},
|
|
103
|
+
defaultFeatures: ['search'],
|
|
104
|
+
directoryStructure: {
|
|
105
|
+
docs: ['functional', 'non-functional', 'use-cases'],
|
|
106
|
+
static: ['img', 'diagrams'],
|
|
107
|
+
},
|
|
108
|
+
sampleContent: [
|
|
109
|
+
{
|
|
110
|
+
path: 'docs/functional/intro.md',
|
|
111
|
+
content: `---
|
|
112
|
+
sidebar_position: 1
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
# 機能要件
|
|
116
|
+
|
|
117
|
+
このセクションでは、システムが提供すべき機能について定義します。
|
|
118
|
+
|
|
119
|
+
## 要件の記述方法
|
|
120
|
+
|
|
121
|
+
要件はEARS(Easy Approach to Requirements Syntax)フォーマットに従って記述します。
|
|
122
|
+
|
|
123
|
+
### 基本パターン
|
|
124
|
+
|
|
125
|
+
- **THE [システム] SHALL [動作]** - 常時要件
|
|
126
|
+
- **WHEN [トリガー], THE [システム] SHALL [応答]** - イベント駆動
|
|
127
|
+
- **WHILE [条件], THE [システム] SHALL [応答]** - 状態駆動
|
|
128
|
+
- **IF [条件], THEN THE [システム] SHALL [応答]** - 望ましくない事象
|
|
129
|
+
|
|
130
|
+
## 機能要件一覧
|
|
131
|
+
|
|
132
|
+
### FR-001: ユーザー認証
|
|
133
|
+
|
|
134
|
+
**User Story:** ユーザーとして、システムに安全にログインしたい
|
|
135
|
+
|
|
136
|
+
#### Acceptance Criteria
|
|
137
|
+
|
|
138
|
+
1. WHEN ユーザーが有効な認証情報を入力する時、THE システム SHALL ユーザーをログインさせる
|
|
139
|
+
2. WHEN ユーザーが無効な認証情報を入力する時、THE システム SHALL エラーメッセージを表示する
|
|
140
|
+
3. WHILE ユーザーがログイン中、THE システム SHALL セッションを維持する
|
|
141
|
+
`,
|
|
142
|
+
template: true,
|
|
143
|
+
},
|
|
144
|
+
],
|
|
145
|
+
},
|
|
146
|
+
'external-design': {
|
|
147
|
+
name: 'external-design',
|
|
148
|
+
displayName: 'External Design',
|
|
149
|
+
description: '外部設計書テンプレート。システム外部とのインターフェース設計に特化しています。',
|
|
150
|
+
docusaurusConfig: {
|
|
151
|
+
title: 'External Design Specification Documentation',
|
|
152
|
+
tagline: 'External Design Specification Documentation',
|
|
153
|
+
presets: [['classic', { blog: false }]],
|
|
154
|
+
},
|
|
155
|
+
defaultFeatures: ['plantuml', 'redoc'],
|
|
156
|
+
directoryStructure: {
|
|
157
|
+
docs: ['architecture', 'api', 'ui'],
|
|
158
|
+
static: ['img', 'diagrams', 'api-specs'],
|
|
159
|
+
},
|
|
160
|
+
sampleContent: [
|
|
161
|
+
{
|
|
162
|
+
path: 'docs/architecture/intro.md',
|
|
163
|
+
content: `---
|
|
164
|
+
sidebar_position: 1
|
|
165
|
+
---
|
|
166
|
+
|
|
167
|
+
# システムアーキテクチャ
|
|
168
|
+
|
|
169
|
+
このセクションでは、システムの全体的なアーキテクチャについて説明します。
|
|
170
|
+
|
|
171
|
+
## アーキテクチャ概要
|
|
172
|
+
|
|
173
|
+
システムは以下の主要コンポーネントで構成されます:
|
|
174
|
+
|
|
175
|
+
\`\`\`plantuml
|
|
176
|
+
@startuml
|
|
177
|
+
!theme plain
|
|
178
|
+
|
|
179
|
+
package "Frontend" {
|
|
180
|
+
[Web Application]
|
|
181
|
+
[Mobile App]
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
package "Backend" {
|
|
185
|
+
[API Gateway]
|
|
186
|
+
[Application Server]
|
|
187
|
+
[Database]
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
[Web Application] --> [API Gateway]
|
|
191
|
+
[Mobile App] --> [API Gateway]
|
|
192
|
+
[API Gateway] --> [Application Server]
|
|
193
|
+
[Application Server] --> [Database]
|
|
194
|
+
|
|
195
|
+
@enduml
|
|
196
|
+
\`\`\`
|
|
197
|
+
|
|
198
|
+
## 設計原則
|
|
199
|
+
|
|
200
|
+
1. **スケーラビリティ**: システムは負荷に応じて拡張可能
|
|
201
|
+
2. **可用性**: 99.9%以上の稼働率を維持
|
|
202
|
+
3. **セキュリティ**: 多層防御によるセキュリティ確保
|
|
203
|
+
`,
|
|
204
|
+
template: true,
|
|
205
|
+
},
|
|
206
|
+
],
|
|
207
|
+
},
|
|
208
|
+
'internal-design': {
|
|
209
|
+
name: 'internal-design',
|
|
210
|
+
displayName: 'Internal Design',
|
|
211
|
+
description: '内部設計書テンプレート。システム内部の詳細設計とアルゴリズムに特化しています。',
|
|
212
|
+
docusaurusConfig: {
|
|
213
|
+
title: 'Internal Design Specification Documentation',
|
|
214
|
+
tagline: 'Internal Design Specification Documentation',
|
|
215
|
+
presets: [['classic', { blog: false }]],
|
|
216
|
+
},
|
|
217
|
+
defaultFeatures: ['plantuml'],
|
|
218
|
+
directoryStructure: {
|
|
219
|
+
docs: ['implementation', 'database', 'algorithms'],
|
|
220
|
+
static: ['img', 'diagrams'],
|
|
221
|
+
},
|
|
222
|
+
sampleContent: [
|
|
223
|
+
{
|
|
224
|
+
path: 'docs/implementation/intro.md',
|
|
225
|
+
content: `---
|
|
226
|
+
sidebar_position: 1
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
# 実装詳細
|
|
230
|
+
|
|
231
|
+
このセクションでは、システムの内部実装について詳細に説明します。
|
|
232
|
+
|
|
233
|
+
## モジュール構成
|
|
234
|
+
|
|
235
|
+
システムは以下のモジュールで構成されます:
|
|
236
|
+
|
|
237
|
+
\`\`\`plantuml
|
|
238
|
+
@startuml
|
|
239
|
+
!theme plain
|
|
240
|
+
|
|
241
|
+
package "Core Module" {
|
|
242
|
+
class CoreService {
|
|
243
|
+
+initialize()
|
|
244
|
+
+process()
|
|
245
|
+
+cleanup()
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
package "Data Module" {
|
|
250
|
+
class DataRepository {
|
|
251
|
+
+save()
|
|
252
|
+
+find()
|
|
253
|
+
+update()
|
|
254
|
+
+delete()
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
package "Business Module" {
|
|
259
|
+
class BusinessLogic {
|
|
260
|
+
+validateInput()
|
|
261
|
+
+processRequest()
|
|
262
|
+
+generateResponse()
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
CoreService --> DataRepository
|
|
267
|
+
CoreService --> BusinessLogic
|
|
268
|
+
|
|
269
|
+
@enduml
|
|
270
|
+
\`\`\`
|
|
271
|
+
|
|
272
|
+
## 実装ガイドライン
|
|
273
|
+
|
|
274
|
+
1. **コーディング規約**: TypeScript/ESLintルールに従う
|
|
275
|
+
2. **テスト**: 単体テスト・統合テストを必須とする
|
|
276
|
+
3. **ドキュメント**: JSDocによるAPI仕様書を作成
|
|
277
|
+
`,
|
|
278
|
+
template: true,
|
|
279
|
+
},
|
|
280
|
+
],
|
|
281
|
+
},
|
|
282
|
+
};
|
|
283
|
+
export function getTemplateDefinition(templateName) {
|
|
284
|
+
return templateDefinitions[templateName];
|
|
285
|
+
}
|
|
286
|
+
export function getAllTemplateNames() {
|
|
287
|
+
return Object.keys(templateDefinitions);
|
|
288
|
+
}
|
|
289
|
+
export function getTemplateDisplayNames() {
|
|
290
|
+
return Object.values(templateDefinitions).map(template => ({
|
|
291
|
+
name: template.name,
|
|
292
|
+
displayName: template.displayName,
|
|
293
|
+
description: template.description,
|
|
294
|
+
}));
|
|
295
|
+
}
|
|
296
|
+
//# sourceMappingURL=template-definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template-definitions.js","sourceRoot":"","sources":["../../src/templates/template-definitions.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.test.d.ts","sourceRoot":"","sources":["../../src/tests/integration.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { describe, it, expect, beforeEach, afterEach } from 'vitest';
|
|
2
|
+
import { mkdirSync, rmSync, existsSync, readFileSync } from 'fs';
|
|
3
|
+
import { join } from 'path';
|
|
4
|
+
import { InteractiveSetup } from '../core/interactive-setup.js';
|
|
5
|
+
import { ProjectGenerator } from '../core/project-generator.js';
|
|
6
|
+
import { getAvailableTemplates } from '../templates/index.js';
|
|
7
|
+
import { getAvailableFeatures } from '../features/index.js';
|
|
8
|
+
describe('End-to-End Integration Tests', () => {
|
|
9
|
+
const testDir = join(process.cwd(), 'test-integration');
|
|
10
|
+
const projectsDir = join(testDir, 'projects');
|
|
11
|
+
beforeEach(() => {
|
|
12
|
+
// テスト用ディレクトリの作成
|
|
13
|
+
try {
|
|
14
|
+
rmSync(testDir, { recursive: true, force: true });
|
|
15
|
+
}
|
|
16
|
+
catch (error) {
|
|
17
|
+
// ディレクトリが存在しない場合は無視
|
|
18
|
+
}
|
|
19
|
+
mkdirSync(projectsDir, { recursive: true });
|
|
20
|
+
});
|
|
21
|
+
afterEach(() => {
|
|
22
|
+
// テスト後のクリーンアップ
|
|
23
|
+
try {
|
|
24
|
+
rmSync(testDir, { recursive: true, force: true });
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
// クリーンアップエラーは無視
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
describe('Template Generation Tests', () => {
|
|
31
|
+
it('should generate complete project for classic-spec template', async () => {
|
|
32
|
+
const projectName = 'test-classic-spec';
|
|
33
|
+
const projectPath = join(projectsDir, projectName);
|
|
34
|
+
const options = {
|
|
35
|
+
template: 'classic-spec',
|
|
36
|
+
skipInstall: true,
|
|
37
|
+
verbose: false
|
|
38
|
+
};
|
|
39
|
+
try {
|
|
40
|
+
// プロジェクト生成のテスト(実際の生成は行わず、設定の検証のみ)
|
|
41
|
+
const templates = getAvailableTemplates();
|
|
42
|
+
const template = templates.find(t => t.name === 'classic-spec');
|
|
43
|
+
expect(template).toBeDefined();
|
|
44
|
+
expect(template?.name).toBe('classic-spec');
|
|
45
|
+
expect(template?.description).toBeDefined();
|
|
46
|
+
// テンプレートの基本構造を確認
|
|
47
|
+
expect(template?.features).toBeDefined();
|
|
48
|
+
expect(Array.isArray(template?.features)).toBe(true);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
console.error('Template classic-spec generation failed:', error);
|
|
52
|
+
throw error;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
it('should validate all available templates', () => {
|
|
56
|
+
const templates = getAvailableTemplates();
|
|
57
|
+
expect(templates.length).toBeGreaterThan(0);
|
|
58
|
+
templates.forEach(template => {
|
|
59
|
+
expect(template.name).toBeDefined();
|
|
60
|
+
expect(template.description).toBeDefined();
|
|
61
|
+
expect(template.features).toBeDefined();
|
|
62
|
+
expect(Array.isArray(template.features)).toBe(true);
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
});
|
|
66
|
+
describe('Feature Integration Tests', () => {
|
|
67
|
+
it('should validate all available features', () => {
|
|
68
|
+
const features = getAvailableFeatures();
|
|
69
|
+
expect(features.length).toBeGreaterThan(0);
|
|
70
|
+
features.forEach(feature => {
|
|
71
|
+
expect(feature.name).toBeDefined();
|
|
72
|
+
expect(feature.description).toBeDefined();
|
|
73
|
+
if (feature.config) {
|
|
74
|
+
expect(typeof feature.config).toBe('object');
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
});
|
|
78
|
+
it('should validate feature combinations', () => {
|
|
79
|
+
const features = getAvailableFeatures();
|
|
80
|
+
const featureNames = features.map(f => f.name);
|
|
81
|
+
// 基本的なフィーチャーが存在することを確認
|
|
82
|
+
expect(featureNames).toContain('plantuml');
|
|
83
|
+
expect(featureNames).toContain('redoc');
|
|
84
|
+
expect(featureNames).toContain('i18n');
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
describe('Configuration Validation Tests', () => {
|
|
88
|
+
it('should validate CreateSpecmentOptions interface', () => {
|
|
89
|
+
const validOptions = {
|
|
90
|
+
template: 'classic-spec',
|
|
91
|
+
skipInstall: true,
|
|
92
|
+
verbose: false
|
|
93
|
+
};
|
|
94
|
+
expect(validOptions.template).toBe('classic-spec');
|
|
95
|
+
expect(validOptions.skipInstall).toBe(true);
|
|
96
|
+
expect(validOptions.verbose).toBe(false);
|
|
97
|
+
});
|
|
98
|
+
it('should validate InteractiveSetup instantiation', () => {
|
|
99
|
+
const options = {
|
|
100
|
+
template: 'classic-spec',
|
|
101
|
+
skipInstall: true,
|
|
102
|
+
verbose: false
|
|
103
|
+
};
|
|
104
|
+
expect(() => {
|
|
105
|
+
new InteractiveSetup(options);
|
|
106
|
+
}).not.toThrow();
|
|
107
|
+
});
|
|
108
|
+
it('should validate ProjectGenerator instantiation', () => {
|
|
109
|
+
const selections = {
|
|
110
|
+
projectName: 'test-project',
|
|
111
|
+
templates: [{
|
|
112
|
+
name: 'classic-spec',
|
|
113
|
+
displayName: 'Classic Specification',
|
|
114
|
+
description: 'Test template',
|
|
115
|
+
features: ['search']
|
|
116
|
+
}],
|
|
117
|
+
features: []
|
|
118
|
+
};
|
|
119
|
+
const options = {
|
|
120
|
+
template: 'classic-spec',
|
|
121
|
+
skipInstall: true,
|
|
122
|
+
verbose: false
|
|
123
|
+
};
|
|
124
|
+
expect(() => {
|
|
125
|
+
new ProjectGenerator(selections, options);
|
|
126
|
+
}).not.toThrow();
|
|
127
|
+
});
|
|
128
|
+
});
|
|
129
|
+
describe('Error Handling Tests', () => {
|
|
130
|
+
it('should handle invalid template names', () => {
|
|
131
|
+
const templates = getAvailableTemplates();
|
|
132
|
+
const invalidTemplate = templates.find(t => t.name === 'nonexistent-template');
|
|
133
|
+
expect(invalidTemplate).toBeUndefined();
|
|
134
|
+
});
|
|
135
|
+
it('should validate project name format', () => {
|
|
136
|
+
const invalidNames = ['invalid@name', 'invalid name', ''];
|
|
137
|
+
invalidNames.forEach(name => {
|
|
138
|
+
// プロジェクト名の検証ロジックをテスト
|
|
139
|
+
const isValid = /^[a-zA-Z0-9-_]+$/.test(name) && name.length > 0;
|
|
140
|
+
expect(isValid).toBe(false);
|
|
141
|
+
});
|
|
142
|
+
const validNames = ['valid-name', 'valid_name', 'validname123'];
|
|
143
|
+
validNames.forEach(name => {
|
|
144
|
+
const isValid = /^[a-zA-Z0-9-_]+$/.test(name) && name.length > 0;
|
|
145
|
+
expect(isValid).toBe(true);
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
});
|
|
149
|
+
describe('System Integration Tests', () => {
|
|
150
|
+
it('should validate system requirements', () => {
|
|
151
|
+
// Node.jsバージョンの確認
|
|
152
|
+
const nodeVersion = process.version;
|
|
153
|
+
expect(nodeVersion).toBeDefined();
|
|
154
|
+
expect(nodeVersion.startsWith('v')).toBe(true);
|
|
155
|
+
// 必要なモジュールが利用可能かチェック
|
|
156
|
+
expect(() => require('fs')).not.toThrow();
|
|
157
|
+
expect(() => require('path')).not.toThrow();
|
|
158
|
+
expect(() => require('child_process')).not.toThrow();
|
|
159
|
+
});
|
|
160
|
+
it('should validate package.json structure', () => {
|
|
161
|
+
const packageJsonPath = join(process.cwd(), 'package.json');
|
|
162
|
+
expect(existsSync(packageJsonPath)).toBe(true);
|
|
163
|
+
const packageJson = JSON.parse(readFileSync(packageJsonPath, 'utf-8'));
|
|
164
|
+
expect(packageJson.name).toBeDefined();
|
|
165
|
+
expect(packageJson.version).toBeDefined();
|
|
166
|
+
expect(packageJson.scripts).toBeDefined();
|
|
167
|
+
expect(packageJson.dependencies).toBeDefined();
|
|
168
|
+
});
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
//# sourceMappingURL=integration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"integration.test.js","sourceRoot":"","sources":["../../src/tests/integration.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export interface CreateSpecmentOptions {
|
|
2
|
+
template?: string;
|
|
3
|
+
skipInstall?: boolean;
|
|
4
|
+
verbose?: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface TemplateType {
|
|
7
|
+
name: 'classic-spec' | 'api-spec' | 'technical-spec' | 'enterprise-spec';
|
|
8
|
+
displayName: string;
|
|
9
|
+
description: string;
|
|
10
|
+
features: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface FeatureSelection {
|
|
13
|
+
name: string;
|
|
14
|
+
displayName: string;
|
|
15
|
+
description: string;
|
|
16
|
+
enabled: boolean;
|
|
17
|
+
plugin?: string;
|
|
18
|
+
config?: Record<string, any>;
|
|
19
|
+
}
|
|
20
|
+
export interface UserSelections {
|
|
21
|
+
projectName: string;
|
|
22
|
+
templates: TemplateType[];
|
|
23
|
+
features: FeatureSelection[];
|
|
24
|
+
}
|
|
25
|
+
export interface TemplateConfig {
|
|
26
|
+
name: string;
|
|
27
|
+
displayName: string;
|
|
28
|
+
description: string;
|
|
29
|
+
docusaurusConfig: any;
|
|
30
|
+
defaultFeatures: string[];
|
|
31
|
+
directoryStructure: DirectoryStructure;
|
|
32
|
+
sampleContent: ContentFile[];
|
|
33
|
+
}
|
|
34
|
+
export interface DirectoryStructure {
|
|
35
|
+
docs: string[];
|
|
36
|
+
static: string[];
|
|
37
|
+
src?: string[];
|
|
38
|
+
}
|
|
39
|
+
export interface ContentFile {
|
|
40
|
+
path: string;
|
|
41
|
+
content: string;
|
|
42
|
+
template: boolean;
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,cAAc,GAAG,UAAU,GAAG,gBAAgB,GAAG,iBAAiB,CAAC;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,YAAY,EAAE,CAAC;IAC1B,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB,EAAE,GAAG,CAAC;IACtB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,kBAAkB,EAAE,kBAAkB,CAAC;IACvC,aAAa,EAAE,WAAW,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,OAAO,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
export interface MergeOptions {
|
|
2
|
+
preserveExisting: boolean;
|
|
3
|
+
allowOverwrite: boolean;
|
|
4
|
+
verbose: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface MergeResult {
|
|
7
|
+
success: boolean;
|
|
8
|
+
merged: any;
|
|
9
|
+
conflicts: ConfigConflict[];
|
|
10
|
+
warnings: string[];
|
|
11
|
+
}
|
|
12
|
+
export interface ConfigConflict {
|
|
13
|
+
path: string;
|
|
14
|
+
existing: any;
|
|
15
|
+
incoming: any;
|
|
16
|
+
resolution: 'keep_existing' | 'use_incoming' | 'merge' | 'manual';
|
|
17
|
+
reason: string;
|
|
18
|
+
}
|
|
19
|
+
export declare class ConfigMerger {
|
|
20
|
+
private options;
|
|
21
|
+
constructor(options: MergeOptions);
|
|
22
|
+
mergePackageJson(existing: any, incoming: any): MergeResult;
|
|
23
|
+
mergeDocusaurusConfig(existing: string, incoming: string): MergeResult;
|
|
24
|
+
private mergeDependencies;
|
|
25
|
+
private mergeScripts;
|
|
26
|
+
private mergeSimpleFields;
|
|
27
|
+
static createSafePackageJsonMerge(existing: any, incoming: any, options?: Partial<MergeOptions>): MergeResult;
|
|
28
|
+
static createSafeDocusaurusConfigMerge(existing: string, incoming: string, options?: Partial<MergeOptions>): MergeResult;
|
|
29
|
+
static areVersionsCompatible(version1: string, version2: string): boolean;
|
|
30
|
+
static getHigherVersion(version1: string, version2: string): string;
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=config-merger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-merger.d.ts","sourceRoot":"","sources":["../../src/utils/config-merger.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,YAAY;IAC3B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,GAAG,CAAC;IACZ,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,GAAG,CAAC;IACd,QAAQ,EAAE,GAAG,CAAC;IACd,UAAU,EAAE,eAAe,GAAG,cAAc,GAAG,OAAO,GAAG,QAAQ,CAAC;IAClE,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAe;gBAElB,OAAO,EAAE,YAAY;IAIjC,gBAAgB,CAAC,QAAQ,EAAE,GAAG,EAAE,QAAQ,EAAE,GAAG,GAAG,WAAW;IAoD3D,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;IAqDtE,OAAO,CAAC,iBAAiB;IA+CzB,OAAO,CAAC,YAAY;IA2CpB,OAAO,CAAC,iBAAiB;IA+BzB,MAAM,CAAC,0BAA0B,CAC/B,QAAQ,EAAE,GAAG,EACb,QAAQ,EAAE,GAAG,EACb,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAClC,WAAW;IAWd,MAAM,CAAC,+BAA+B,CACpC,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,OAAO,CAAC,YAAY,CAAM,GAClC,WAAW;IAYd,MAAM,CAAC,qBAAqB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAazE,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM;CAiBpE"}
|