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.
Files changed (113) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +314 -0
  3. package/bin/commands/create.d.ts +3 -0
  4. package/bin/commands/create.d.ts.map +1 -0
  5. package/bin/commands/create.js +30 -0
  6. package/bin/commands/create.js.map +1 -0
  7. package/bin/constants/languages.d.ts +15 -0
  8. package/bin/constants/languages.d.ts.map +1 -0
  9. package/bin/constants/languages.js +14 -0
  10. package/bin/constants/languages.js.map +1 -0
  11. package/bin/core/interactive-setup.d.ts +15 -0
  12. package/bin/core/interactive-setup.d.ts.map +1 -0
  13. package/bin/core/interactive-setup.js +171 -0
  14. package/bin/core/interactive-setup.js.map +1 -0
  15. package/bin/core/interactive-setup.test.d.ts +2 -0
  16. package/bin/core/interactive-setup.test.d.ts.map +1 -0
  17. package/bin/core/interactive-setup.test.js +97 -0
  18. package/bin/core/interactive-setup.test.js.map +1 -0
  19. package/bin/core/project-generator.d.ts +12 -0
  20. package/bin/core/project-generator.d.ts.map +1 -0
  21. package/bin/core/project-generator.js +83 -0
  22. package/bin/core/project-generator.js.map +1 -0
  23. package/bin/features/index.d.ts +3 -0
  24. package/bin/features/index.d.ts.map +1 -0
  25. package/bin/features/index.js +47 -0
  26. package/bin/features/index.js.map +1 -0
  27. package/bin/generators/docusaurus-config.d.ts +3 -0
  28. package/bin/generators/docusaurus-config.d.ts.map +1 -0
  29. package/bin/generators/docusaurus-config.js +285 -0
  30. package/bin/generators/docusaurus-config.js.map +1 -0
  31. package/bin/generators/package-json.d.ts +3 -0
  32. package/bin/generators/package-json.d.ts.map +1 -0
  33. package/bin/generators/package-json.js +98 -0
  34. package/bin/generators/package-json.js.map +1 -0
  35. package/bin/generators/template-files.d.ts +3 -0
  36. package/bin/generators/template-files.d.ts.map +1 -0
  37. package/bin/generators/template-files.js +370 -0
  38. package/bin/generators/template-files.js.map +1 -0
  39. package/bin/index.d.ts +5 -0
  40. package/bin/index.d.ts.map +1 -0
  41. package/bin/index.js +37 -0
  42. package/bin/index.js.map +1 -0
  43. package/bin/plugins/i18n-integration.d.ts +25 -0
  44. package/bin/plugins/i18n-integration.d.ts.map +1 -0
  45. package/bin/plugins/i18n-integration.js +309 -0
  46. package/bin/plugins/i18n-integration.js.map +1 -0
  47. package/bin/plugins/plantuml-integration.d.ts +17 -0
  48. package/bin/plugins/plantuml-integration.d.ts.map +1 -0
  49. package/bin/plugins/plantuml-integration.js +111 -0
  50. package/bin/plugins/plantuml-integration.js.map +1 -0
  51. package/bin/plugins/redoc-integration.d.ts +25 -0
  52. package/bin/plugins/redoc-integration.d.ts.map +1 -0
  53. package/bin/plugins/redoc-integration.js +372 -0
  54. package/bin/plugins/redoc-integration.js.map +1 -0
  55. package/bin/plugins/search-integration.d.ts +20 -0
  56. package/bin/plugins/search-integration.d.ts.map +1 -0
  57. package/bin/plugins/search-integration.js +165 -0
  58. package/bin/plugins/search-integration.js.map +1 -0
  59. package/bin/templates/index.d.ts +4 -0
  60. package/bin/templates/index.d.ts.map +1 -0
  61. package/bin/templates/index.js +60 -0
  62. package/bin/templates/index.js.map +1 -0
  63. package/bin/templates/template-definitions.d.ts +10 -0
  64. package/bin/templates/template-definitions.d.ts.map +1 -0
  65. package/bin/templates/template-definitions.js +296 -0
  66. package/bin/templates/template-definitions.js.map +1 -0
  67. package/bin/tests/integration.test.d.ts +2 -0
  68. package/bin/tests/integration.test.d.ts.map +1 -0
  69. package/bin/tests/integration.test.js +171 -0
  70. package/bin/tests/integration.test.js.map +1 -0
  71. package/bin/types/index.d.ts +44 -0
  72. package/bin/types/index.d.ts.map +1 -0
  73. package/bin/types/index.js +2 -0
  74. package/bin/types/index.js.map +1 -0
  75. package/bin/utils/config-merger.d.ts +32 -0
  76. package/bin/utils/config-merger.d.ts.map +1 -0
  77. package/bin/utils/config-merger.js +216 -0
  78. package/bin/utils/config-merger.js.map +1 -0
  79. package/bin/utils/errors.d.ts +9 -0
  80. package/bin/utils/errors.d.ts.map +1 -0
  81. package/bin/utils/errors.js +22 -0
  82. package/bin/utils/errors.js.map +1 -0
  83. package/bin/utils/install.d.ts +5 -0
  84. package/bin/utils/install.d.ts.map +1 -0
  85. package/bin/utils/install.js +38 -0
  86. package/bin/utils/install.js.map +1 -0
  87. package/bin/utils/message-formatter.d.ts +15 -0
  88. package/bin/utils/message-formatter.d.ts.map +1 -0
  89. package/bin/utils/message-formatter.js +85 -0
  90. package/bin/utils/message-formatter.js.map +1 -0
  91. package/bin/utils/template-processor.d.ts +54 -0
  92. package/bin/utils/template-processor.d.ts.map +1 -0
  93. package/bin/utils/template-processor.js +139 -0
  94. package/bin/utils/template-processor.js.map +1 -0
  95. package/bin/utils/template-processor.test.d.ts +2 -0
  96. package/bin/utils/template-processor.test.d.ts.map +1 -0
  97. package/bin/utils/template-processor.test.js +120 -0
  98. package/bin/utils/template-processor.test.js.map +1 -0
  99. package/bin/utils/version.d.ts +2 -0
  100. package/bin/utils/version.d.ts.map +1 -0
  101. package/bin/utils/version.js +10 -0
  102. package/bin/utils/version.js.map +1 -0
  103. package/package.json +67 -0
  104. package/templates/classic-spec/docusaurus.config.js.template +106 -0
  105. package/templates/classic-spec/package.json.template +36 -0
  106. package/templates/external-design/docusaurus.config.js.template +123 -0
  107. package/templates/external-design/package.json.template +36 -0
  108. package/templates/internal-design/docusaurus.config.js.template +123 -0
  109. package/templates/internal-design/package.json.template +36 -0
  110. package/templates/project-analysis/docusaurus.config.js.template +113 -0
  111. package/templates/project-analysis/package.json.template +36 -0
  112. package/templates/requirements/docusaurus.config.js.template +119 -0
  113. 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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=integration.test.d.ts.map
@@ -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,2 @@
1
+ export {};
2
+ //# sourceMappingURL=index.js.map
@@ -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"}