@h2nguyen/arc42-node-mcp-server 1.0.3 → 2.0.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.
Files changed (190) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +222 -11
  3. package/dist/server.d.ts.map +1 -1
  4. package/dist/server.js +28 -72
  5. package/dist/server.js.map +1 -1
  6. package/dist/templates/index.d.ts +46 -1
  7. package/dist/templates/index.d.ts.map +1 -1
  8. package/dist/templates/index.js +63 -896
  9. package/dist/templates/index.js.map +1 -1
  10. package/dist/templates/locales/cz/index.d.ts +9 -0
  11. package/dist/templates/locales/cz/index.d.ts.map +1 -0
  12. package/dist/templates/locales/cz/index.js +29 -0
  13. package/dist/templates/locales/cz/index.js.map +1 -0
  14. package/dist/templates/locales/cz/sections.d.ts +10 -0
  15. package/dist/templates/locales/cz/sections.d.ts.map +1 -0
  16. package/dist/templates/locales/cz/sections.js +39 -0
  17. package/dist/templates/locales/cz/sections.js.map +1 -0
  18. package/dist/templates/locales/cz/templates.d.ts +9 -0
  19. package/dist/templates/locales/cz/templates.d.ts.map +1 -0
  20. package/dist/templates/locales/cz/templates.js +274 -0
  21. package/dist/templates/locales/cz/templates.js.map +1 -0
  22. package/dist/templates/locales/de/index.d.ts +26 -0
  23. package/dist/templates/locales/de/index.d.ts.map +1 -0
  24. package/dist/templates/locales/de/index.js +53 -0
  25. package/dist/templates/locales/de/index.js.map +1 -0
  26. package/dist/templates/locales/de/sections.d.ts +28 -0
  27. package/dist/templates/locales/de/sections.d.ts.map +1 -0
  28. package/dist/templates/locales/de/sections.js +57 -0
  29. package/dist/templates/locales/de/sections.js.map +1 -0
  30. package/dist/templates/locales/de/templates.d.ts +22 -0
  31. package/dist/templates/locales/de/templates.d.ts.map +1 -0
  32. package/dist/templates/locales/de/templates.js +1060 -0
  33. package/dist/templates/locales/de/templates.js.map +1 -0
  34. package/dist/templates/locales/en/index.d.ts +26 -0
  35. package/dist/templates/locales/en/index.d.ts.map +1 -0
  36. package/dist/templates/locales/en/index.js +53 -0
  37. package/dist/templates/locales/en/index.js.map +1 -0
  38. package/dist/templates/locales/en/sections.d.ts +25 -0
  39. package/dist/templates/locales/en/sections.d.ts.map +1 -0
  40. package/dist/templates/locales/en/sections.js +54 -0
  41. package/dist/templates/locales/en/sections.js.map +1 -0
  42. package/dist/templates/locales/en/templates.d.ts +22 -0
  43. package/dist/templates/locales/en/templates.d.ts.map +1 -0
  44. package/dist/templates/locales/en/templates.js +1060 -0
  45. package/dist/templates/locales/en/templates.js.map +1 -0
  46. package/dist/templates/locales/es/index.d.ts +26 -0
  47. package/dist/templates/locales/es/index.d.ts.map +1 -0
  48. package/dist/templates/locales/es/index.js +53 -0
  49. package/dist/templates/locales/es/index.js.map +1 -0
  50. package/dist/templates/locales/es/sections.d.ts +28 -0
  51. package/dist/templates/locales/es/sections.d.ts.map +1 -0
  52. package/dist/templates/locales/es/sections.js +57 -0
  53. package/dist/templates/locales/es/sections.js.map +1 -0
  54. package/dist/templates/locales/es/templates.d.ts +22 -0
  55. package/dist/templates/locales/es/templates.d.ts.map +1 -0
  56. package/dist/templates/locales/es/templates.js +1060 -0
  57. package/dist/templates/locales/es/templates.js.map +1 -0
  58. package/dist/templates/locales/fr/index.d.ts +26 -0
  59. package/dist/templates/locales/fr/index.d.ts.map +1 -0
  60. package/dist/templates/locales/fr/index.js +53 -0
  61. package/dist/templates/locales/fr/index.js.map +1 -0
  62. package/dist/templates/locales/fr/sections.d.ts +28 -0
  63. package/dist/templates/locales/fr/sections.d.ts.map +1 -0
  64. package/dist/templates/locales/fr/sections.js +57 -0
  65. package/dist/templates/locales/fr/sections.js.map +1 -0
  66. package/dist/templates/locales/fr/templates.d.ts +22 -0
  67. package/dist/templates/locales/fr/templates.d.ts.map +1 -0
  68. package/dist/templates/locales/fr/templates.js +1060 -0
  69. package/dist/templates/locales/fr/templates.js.map +1 -0
  70. package/dist/templates/locales/index.d.ts +67 -0
  71. package/dist/templates/locales/index.d.ts.map +1 -0
  72. package/dist/templates/locales/index.js +100 -0
  73. package/dist/templates/locales/index.js.map +1 -0
  74. package/dist/templates/locales/it/index.d.ts +26 -0
  75. package/dist/templates/locales/it/index.d.ts.map +1 -0
  76. package/dist/templates/locales/it/index.js +53 -0
  77. package/dist/templates/locales/it/index.js.map +1 -0
  78. package/dist/templates/locales/it/sections.d.ts +28 -0
  79. package/dist/templates/locales/it/sections.d.ts.map +1 -0
  80. package/dist/templates/locales/it/sections.js +57 -0
  81. package/dist/templates/locales/it/sections.js.map +1 -0
  82. package/dist/templates/locales/it/templates.d.ts +22 -0
  83. package/dist/templates/locales/it/templates.d.ts.map +1 -0
  84. package/dist/templates/locales/it/templates.js +1060 -0
  85. package/dist/templates/locales/it/templates.js.map +1 -0
  86. package/dist/templates/locales/language-factory.d.ts +97 -0
  87. package/dist/templates/locales/language-factory.d.ts.map +1 -0
  88. package/dist/templates/locales/language-factory.js +126 -0
  89. package/dist/templates/locales/language-factory.js.map +1 -0
  90. package/dist/templates/locales/language-registry.d.ts +114 -0
  91. package/dist/templates/locales/language-registry.d.ts.map +1 -0
  92. package/dist/templates/locales/language-registry.js +146 -0
  93. package/dist/templates/locales/language-registry.js.map +1 -0
  94. package/dist/templates/locales/language-strategy.d.ts +126 -0
  95. package/dist/templates/locales/language-strategy.d.ts.map +1 -0
  96. package/dist/templates/locales/language-strategy.js +46 -0
  97. package/dist/templates/locales/language-strategy.js.map +1 -0
  98. package/dist/templates/locales/nl/index.d.ts +26 -0
  99. package/dist/templates/locales/nl/index.d.ts.map +1 -0
  100. package/dist/templates/locales/nl/index.js +53 -0
  101. package/dist/templates/locales/nl/index.js.map +1 -0
  102. package/dist/templates/locales/nl/sections.d.ts +28 -0
  103. package/dist/templates/locales/nl/sections.d.ts.map +1 -0
  104. package/dist/templates/locales/nl/sections.js +57 -0
  105. package/dist/templates/locales/nl/sections.js.map +1 -0
  106. package/dist/templates/locales/nl/templates.d.ts +22 -0
  107. package/dist/templates/locales/nl/templates.d.ts.map +1 -0
  108. package/dist/templates/locales/nl/templates.js +1060 -0
  109. package/dist/templates/locales/nl/templates.js.map +1 -0
  110. package/dist/templates/locales/pt/index.d.ts +26 -0
  111. package/dist/templates/locales/pt/index.d.ts.map +1 -0
  112. package/dist/templates/locales/pt/index.js +53 -0
  113. package/dist/templates/locales/pt/index.js.map +1 -0
  114. package/dist/templates/locales/pt/sections.d.ts +28 -0
  115. package/dist/templates/locales/pt/sections.d.ts.map +1 -0
  116. package/dist/templates/locales/pt/sections.js +57 -0
  117. package/dist/templates/locales/pt/sections.js.map +1 -0
  118. package/dist/templates/locales/pt/templates.d.ts +22 -0
  119. package/dist/templates/locales/pt/templates.d.ts.map +1 -0
  120. package/dist/templates/locales/pt/templates.js +1060 -0
  121. package/dist/templates/locales/pt/templates.js.map +1 -0
  122. package/dist/templates/locales/ru/index.d.ts +15 -0
  123. package/dist/templates/locales/ru/index.d.ts.map +1 -0
  124. package/dist/templates/locales/ru/index.js +41 -0
  125. package/dist/templates/locales/ru/index.js.map +1 -0
  126. package/dist/templates/locales/ru/sections.d.ts +28 -0
  127. package/dist/templates/locales/ru/sections.d.ts.map +1 -0
  128. package/dist/templates/locales/ru/sections.js +57 -0
  129. package/dist/templates/locales/ru/sections.js.map +1 -0
  130. package/dist/templates/locales/ru/templates.d.ts +22 -0
  131. package/dist/templates/locales/ru/templates.d.ts.map +1 -0
  132. package/dist/templates/locales/ru/templates.js +664 -0
  133. package/dist/templates/locales/ru/templates.js.map +1 -0
  134. package/dist/templates/locales/template-provider.d.ts +122 -0
  135. package/dist/templates/locales/template-provider.d.ts.map +1 -0
  136. package/dist/templates/locales/template-provider.js +173 -0
  137. package/dist/templates/locales/template-provider.js.map +1 -0
  138. package/dist/templates/locales/ukr/index.d.ts +9 -0
  139. package/dist/templates/locales/ukr/index.d.ts.map +1 -0
  140. package/dist/templates/locales/ukr/index.js +29 -0
  141. package/dist/templates/locales/ukr/index.js.map +1 -0
  142. package/dist/templates/locales/ukr/sections.d.ts +10 -0
  143. package/dist/templates/locales/ukr/sections.d.ts.map +1 -0
  144. package/dist/templates/locales/ukr/sections.js +39 -0
  145. package/dist/templates/locales/ukr/sections.js.map +1 -0
  146. package/dist/templates/locales/ukr/templates.d.ts +9 -0
  147. package/dist/templates/locales/ukr/templates.d.ts.map +1 -0
  148. package/dist/templates/locales/ukr/templates.js +242 -0
  149. package/dist/templates/locales/ukr/templates.js.map +1 -0
  150. package/dist/templates/locales/zh/index.d.ts +9 -0
  151. package/dist/templates/locales/zh/index.d.ts.map +1 -0
  152. package/dist/templates/locales/zh/index.js +29 -0
  153. package/dist/templates/locales/zh/index.js.map +1 -0
  154. package/dist/templates/locales/zh/sections.d.ts +10 -0
  155. package/dist/templates/locales/zh/sections.d.ts.map +1 -0
  156. package/dist/templates/locales/zh/sections.js +39 -0
  157. package/dist/templates/locales/zh/sections.js.map +1 -0
  158. package/dist/templates/locales/zh/templates.d.ts +9 -0
  159. package/dist/templates/locales/zh/templates.d.ts.map +1 -0
  160. package/dist/templates/locales/zh/templates.js +260 -0
  161. package/dist/templates/locales/zh/templates.js.map +1 -0
  162. package/dist/tools/arc42-init.d.ts +8 -2
  163. package/dist/tools/arc42-init.d.ts.map +1 -1
  164. package/dist/tools/arc42-init.js +67 -97
  165. package/dist/tools/arc42-init.js.map +1 -1
  166. package/dist/tools/arc42-status.d.ts +5 -2
  167. package/dist/tools/arc42-status.d.ts.map +1 -1
  168. package/dist/tools/arc42-status.js +47 -18
  169. package/dist/tools/arc42-status.js.map +1 -1
  170. package/dist/tools/arc42-workflow-guide.d.ts +6 -3
  171. package/dist/tools/arc42-workflow-guide.d.ts.map +1 -1
  172. package/dist/tools/arc42-workflow-guide.js +42 -276
  173. package/dist/tools/arc42-workflow-guide.js.map +1 -1
  174. package/dist/tools/generate-template.d.ts +7 -3
  175. package/dist/tools/generate-template.d.ts.map +1 -1
  176. package/dist/tools/generate-template.js +44 -35
  177. package/dist/tools/generate-template.js.map +1 -1
  178. package/dist/tools/get-section.d.ts +7 -3
  179. package/dist/tools/get-section.d.ts.map +1 -1
  180. package/dist/tools/get-section.js +38 -38
  181. package/dist/tools/get-section.js.map +1 -1
  182. package/dist/tools/index.d.ts +6 -5
  183. package/dist/tools/index.d.ts.map +1 -1
  184. package/dist/tools/index.js +14 -20
  185. package/dist/tools/index.js.map +1 -1
  186. package/dist/tools/update-section.d.ts +9 -3
  187. package/dist/tools/update-section.d.ts.map +1 -1
  188. package/dist/tools/update-section.js +12 -44
  189. package/dist/tools/update-section.js.map +1 -1
  190. package/package.json +1 -1
@@ -1,907 +1,74 @@
1
+ /**
2
+ * Templates Module
3
+ *
4
+ * Main entry point for arc42 templates.
5
+ * Provides backward-compatible access to English templates while delegating
6
+ * to the new locales system for multi-language support.
7
+ *
8
+ * @module templates
9
+ */
10
+ import { templateProvider } from './locales/index.js';
1
11
  // Re-export arc42 reference information
2
12
  export { ARC42_REFERENCE, getArc42ReferenceString, getArc42ReferenceMarkdown, getArc42ReferenceConfig, reloadArc42Reference } from './arc42-reference.js';
13
+ // Re-export locales module for multi-language support
14
+ export {
15
+ // Constants
16
+ SUPPORTED_LANGUAGE_CODES,
17
+ // Utility functions
18
+ isLanguageCode, normalizeLanguageCode, getDefaultLanguageCode, isInitialized,
19
+ // Classes
20
+ LanguageRegistry, LanguageFactory, LocalizedTemplateProvider,
21
+ // Singleton instances
22
+ languageRegistry, languageFactory, templateProvider,
23
+ // English strategy
24
+ englishStrategy } from './locales/index.js';
3
25
  /**
4
26
  * Get template for a specific arc42 section
27
+ *
28
+ * This function maintains backward compatibility with the original API
29
+ * while delegating to the new locales system.
30
+ *
31
+ * @param section - The arc42 section to get the template for
32
+ * @param language - Optional language code (defaults to English)
33
+ * @returns The template content
5
34
  */
6
- export function getSectionTemplate(section) {
7
- const templates = {
8
- '01_introduction_and_goals': getIntroductionAndGoalsTemplate(),
9
- '02_architecture_constraints': getArchitectureConstraintsTemplate(),
10
- '03_context_and_scope': getContextAndScopeTemplate(),
11
- '04_solution_strategy': getSolutionStrategyTemplate(),
12
- '05_building_block_view': getBuildingBlockViewTemplate(),
13
- '06_runtime_view': getRuntimeViewTemplate(),
14
- '07_deployment_view': getDeploymentViewTemplate(),
15
- '08_concepts': getConceptsTemplate(),
16
- '09_architecture_decisions': getArchitectureDecisionsTemplate(),
17
- '10_quality_requirements': getQualityRequirementsTemplate(),
18
- '11_technical_risks': getTechnicalRisksTemplate(),
19
- '12_glossary': getGlossaryTemplate()
20
- };
21
- return templates[section];
22
- }
23
- function getIntroductionAndGoalsTemplate() {
24
- return `# 1. Introduction and Goals
25
-
26
- ## Requirements Overview
27
-
28
- **Purpose**: Describe the relevant requirements and driving forces that architects and development teams must consider.
29
-
30
- ### Key Requirements
31
-
32
- <!-- List the top 3-5 functional requirements -->
33
-
34
- | ID | Requirement | Priority |
35
- |----|-------------|----------|
36
- | REQ-1 | [Brief description] | High |
37
- | REQ-2 | [Brief description] | Medium |
38
-
39
- ### Features
40
-
41
- <!-- Essential features of the system -->
42
-
43
- - Feature 1: [Description]
44
- - Feature 2: [Description]
45
-
46
- ## Quality Goals
47
-
48
- **Purpose**: Define the top 3-5 quality goals that are most important for stakeholders.
49
-
50
- <!-- Based on ISO 25010, prioritize qualities like: -->
51
- <!-- Performance, Security, Reliability, Maintainability, Usability, etc. -->
52
-
53
- | Priority | Quality Goal | Motivation |
54
- |----------|--------------|------------|
55
- | 1 | [e.g., Performance] | [Why this is critical] |
56
- | 2 | [e.g., Security] | [Why this is critical] |
57
- | 3 | [e.g., Maintainability] | [Why this is critical] |
58
-
59
- ## Stakeholders
60
-
61
- **Purpose**: Identify everyone who should know about the architecture.
62
-
63
- | Role/Name | Contact | Expectations |
64
- |-----------|---------|--------------|
65
- | Product Owner | [Name/Email] | [What they expect from the architecture] |
66
- | Development Team | [Team name] | [What they need to know] |
67
- | Operations | [Team/Person] | [Deployment and operations concerns] |
68
- | End Users | [Type] | [User experience expectations] |
69
-
70
- ## Success Criteria
71
-
72
- <!-- What defines success for this system? -->
73
-
74
- - [ ] Criterion 1
75
- - [ ] Criterion 2
76
- - [ ] Criterion 3
77
- `;
78
- }
79
- function getArchitectureConstraintsTemplate() {
80
- return `# 2. Architecture Constraints
81
-
82
- ## Technical Constraints
83
-
84
- **Hardware Constraints**
85
-
86
- | Constraint | Background/Motivation |
87
- |------------|----------------------|
88
- | [e.g., Cloud platform] | [Why this constraint exists] |
89
-
90
- **Software/Technology Constraints**
91
-
92
- | Constraint | Background/Motivation |
93
- |------------|----------------------|
94
- | [e.g., Must use Java 17+] | [Reason for constraint] |
95
- | [e.g., Must use PostgreSQL] | [Why this was chosen] |
96
-
97
- **Programming Constraints**
98
-
99
- - Programming language: [Language]
100
- - Framework: [Framework and version]
101
- - Libraries: [Must-use or forbidden libraries]
102
-
103
- ## Organizational Constraints
104
-
105
- **Organization and Structure**
106
-
107
- | Constraint | Background/Motivation |
108
- |------------|----------------------|
109
- | [e.g., Team structure] | [How this affects architecture] |
110
- | [e.g., Agile methodology] | [Development process impact] |
111
-
112
- **Resources**
113
-
114
- - Budget: [Budget constraints]
115
- - Time: [Timeline constraints]
116
- - Team: [Team size and skills]
117
-
118
- ## Conventions
119
-
120
- **Architecture and Design Conventions**
121
-
122
- - [e.g., Microservices architecture pattern]
123
- - [e.g., RESTful API design]
124
- - [e.g., Domain-Driven Design]
125
-
126
- **Coding Conventions**
127
-
128
- - Code style: [Link to style guide]
129
- - Documentation: [Documentation standards]
130
- - Testing: [Testing requirements]
131
-
132
- **Compliance Requirements**
133
-
134
- - [e.g., GDPR compliance]
135
- - [e.g., Industry-specific regulations]
136
- - [e.g., Accessibility standards]
137
- `;
138
- }
139
- function getContextAndScopeTemplate() {
140
- return `# 3. Context and Scope
141
-
142
- ## Business Context
143
-
144
- **Purpose**: Show the system's business environment and major external dependencies.
145
-
146
- ### Context Diagram
147
-
148
- \`\`\`
149
- [Create a diagram showing your system and external systems/users it interacts with]
150
- You can use:
151
- - Mermaid diagrams
152
- - PlantUML
153
- - ASCII art
154
- - Or reference an image in /images/
155
- \`\`\`
156
-
157
- ### External Interfaces
158
-
159
- | External Entity | Interface | Purpose |
160
- |----------------|-----------|---------|
161
- | [External System 1] | [API/Protocol] | [What data/functionality is exchanged] |
162
- | [User Type 1] | [UI/API] | [How users interact] |
163
-
164
- ### Business Processes Supported
165
-
166
- <!-- What business processes does this system support? -->
167
-
168
- 1. **Process 1**: [Description]
169
- - Actors: [Who is involved]
170
- - Flow: [High-level flow]
171
-
172
- 2. **Process 2**: [Description]
173
-
174
- ## Technical Context
175
-
176
- **Purpose**: Show technical interfaces and channels between system and environment.
177
-
178
- ### Technical Interfaces
179
-
180
- | Interface | Technology | Protocol | Format |
181
- |-----------|------------|----------|--------|
182
- | [API 1] | [REST API] | [HTTPS] | [JSON] |
183
- | [Database] | [PostgreSQL] | [TCP/IP] | [SQL] |
184
-
185
- ### Channels and Transmission
186
-
187
- | Channel | Technology | Description |
188
- |---------|------------|-------------|
189
- | [Message Queue] | [RabbitMQ] | [Async communication between services] |
190
-
191
- ### Mapping: Business to Technical
192
-
193
- | Business Context | Technical Realization |
194
- |------------------|----------------------|
195
- | [User Interface] | [React SPA via HTTPS] |
196
- | [External System A] | [REST API over HTTPS] |
197
- `;
198
- }
199
- function getSolutionStrategyTemplate() {
200
- return `# 4. Solution Strategy
201
-
202
- **Purpose**: Summarize fundamental decisions and solution strategies that shape the system's architecture.
203
-
204
- ## Key Solution Decisions
205
-
206
- ### Architectural Patterns
207
-
208
- | Pattern | Motivation | Consequences |
209
- |---------|------------|--------------|
210
- | [e.g., Microservices] | [Why this pattern was chosen] | [Benefits and trade-offs] |
211
-
212
- ### Technology Choices
213
-
214
- | Component | Technology | Reason |
215
- |-----------|------------|--------|
216
- | Backend | [e.g., Node.js] | [Why this was chosen] |
217
- | Frontend | [e.g., React] | [Reasons] |
218
- | Database | [e.g., PostgreSQL] | [Reasons] |
219
-
220
- ### Top-level Decomposition
221
-
222
- <!-- How is the system structured at the highest level? -->
223
-
224
- \`\`\`
225
- [High-level component diagram]
226
- \`\`\`
227
-
228
- Description:
229
- - Component 1: [Purpose and responsibility]
230
- - Component 2: [Purpose and responsibility]
231
-
232
- ## Achieving Quality Goals
233
-
234
- ### Mapping: Quality Goals to Solution Approaches
235
-
236
- | Quality Goal | Solution Approach |
237
- |--------------|-------------------|
238
- | [Performance] | [Caching strategy, async processing, CDN] |
239
- | [Security] | [Authentication, authorization, encryption] |
240
- | [Scalability] | [Horizontal scaling, load balancing] |
241
-
242
- ### Key Design Decisions
243
-
244
- 1. **Decision 1**: [e.g., Event-driven architecture]
245
- - Reason: [Why this approach]
246
- - Impact: [How it helps achieve quality goals]
247
-
248
- 2. **Decision 2**: [Description]
249
- - Reason: [Rationale]
250
- - Impact: [Effects on quality goals]
251
-
252
- ## Development Strategy
253
-
254
- - Development approach: [Agile, Scrum, etc.]
255
- - Deployment strategy: [CI/CD, Blue-Green, etc.]
256
- - Testing strategy: [Unit, Integration, E2E]
257
- `;
258
- }
259
- function getBuildingBlockViewTemplate() {
260
- return `# 5. Building Block View
261
-
262
- **Purpose**: Static decomposition of the system into building blocks and their relationships.
263
-
264
- ## Level 1: System Context
265
-
266
- ### Whitebox: Overall System
267
-
268
- **Purpose**: [What does the system do]
269
-
270
- \`\`\`
271
- [Component diagram showing main building blocks]
272
- \`\`\`
273
-
274
- **Contained Building Blocks**:
275
-
276
- | Component | Responsibility |
277
- |-----------|---------------|
278
- | [Component 1] | [What it does] |
279
- | [Component 2] | [What it does] |
280
-
281
- **Important Interfaces**:
282
-
283
- | Interface | Description |
284
- |-----------|-------------|
285
- | [API 1] | [Purpose and protocol] |
286
-
287
- ## Level 2: Component Details
288
-
289
- ### Component 1 (Whitebox)
290
-
291
- **Purpose**: [Detailed purpose]
292
-
293
- **Interfaces**:
294
- - Input: [What it receives]
295
- - Output: [What it produces]
296
-
297
- **Internal Structure**:
298
-
299
- \`\`\`
300
- [Diagram of internal modules/classes]
301
- \`\`\`
302
-
303
- **Contained Elements**:
304
-
305
- | Element | Responsibility |
306
- |---------|---------------|
307
- | [Module A] | [Purpose] |
308
- | [Module B] | [Purpose] |
309
-
310
- ### Component 2 (Whitebox)
311
-
312
- [Similar structure]
313
-
314
- ## Level 3: Detailed Views
315
-
316
- <!-- Only include Level 3 for components that need additional detail -->
317
-
318
- ### Module A Details
319
-
320
- [Detailed class diagrams, package structure, etc.]
321
- `;
322
- }
323
- function getRuntimeViewTemplate() {
324
- return `# 6. Runtime View
325
-
326
- **Purpose**: Show the behavior and interaction of building blocks at runtime.
327
-
328
- ## Key Scenarios
329
-
330
- ### Scenario 1: [Name, e.g., "User Login"]
331
-
332
- **Description**: [What happens in this scenario]
333
-
334
- **Sequence Diagram**:
335
-
336
- \`\`\`mermaid
337
- sequenceDiagram
338
- participant User
339
- participant Frontend
340
- participant API
341
- participant Database
342
-
343
- User->>Frontend: Enter credentials
344
- Frontend->>API: POST /login
345
- API->>Database: Validate credentials
346
- Database-->>API: User data
347
- API-->>Frontend: JWT token
348
- Frontend-->>User: Login successful
349
- \`\`\`
350
-
351
- **Steps**:
352
-
353
- 1. User enters credentials
354
- 2. Frontend sends login request
355
- 3. API validates with database
356
- 4. Token is generated and returned
357
- 5. User is authenticated
358
-
359
- ### Scenario 2: [Name]
360
-
361
- [Similar structure]
362
-
363
- ## Data Flow
364
-
365
- ### Flow 1: [Name]
366
-
367
- **Purpose**: [What data flows where]
368
-
369
- **Diagram**:
370
-
371
- \`\`\`
372
- [Data flow diagram]
373
- \`\`\`
374
-
375
- **Description**:
376
- - Step 1: [What happens]
377
- - Step 2: [What happens]
378
-
379
- ## State Machines
380
-
381
- ### State Machine for [Entity]
382
-
383
- **States**:
384
- - State 1: [Description]
385
- - State 2: [Description]
386
-
387
- **Transitions**:
388
-
389
- | From | Event | To | Action |
390
- |------|-------|----|----|
391
- | [State 1] | [Event] | [State 2] | [What happens] |
392
- `;
393
- }
394
- function getDeploymentViewTemplate() {
395
- return `# 7. Deployment View
396
-
397
- **Purpose**: Describe the technical infrastructure and how software is deployed.
398
-
399
- ## Infrastructure Overview
400
-
401
- ### Deployment Diagram
402
-
403
- \`\`\`
404
- [Diagram showing servers, containers, networks]
405
- \`\`\`
406
-
407
- ## Environments
408
-
409
- ### Production Environment
410
-
411
- **Infrastructure**:
412
-
413
- | Component | Technology | Configuration |
414
- |-----------|------------|---------------|
415
- | [Application Server] | [AWS ECS] | [Specs] |
416
- | [Database] | [RDS PostgreSQL] | [Specs] |
417
- | [Cache] | [Redis] | [Specs] |
418
-
419
- **Network**:
420
- - VPC: [Configuration]
421
- - Subnets: [Public/Private setup]
422
- - Security Groups: [Rules]
423
-
424
- ### Staging Environment
425
-
426
- [Similar structure]
427
-
428
- ### Development Environment
429
-
430
- [Similar structure]
431
-
432
- ## Deployment Strategy
433
-
434
- ### CI/CD Pipeline
435
-
436
- 1. **Build**: [What happens]
437
- 2. **Test**: [Automated tests]
438
- 3. **Deploy**: [Deployment process]
439
-
440
- ### Rollback Strategy
441
-
442
- [How to rollback deployments]
443
-
444
- ## Scaling Strategy
445
-
446
- ### Horizontal Scaling
447
-
448
- | Component | Scaling Trigger | Max Instances |
449
- |-----------|----------------|---------------|
450
- | [API Servers] | [CPU > 70%] | [10] |
451
-
452
- ### Vertical Scaling
453
-
454
- [When and how to scale vertically]
455
-
456
- ## Monitoring and Operations
457
-
458
- ### Health Checks
459
-
460
- | Component | Check | Threshold |
461
- |-----------|-------|-----------|
462
- | [API] | [/health endpoint] | [Response time < 1s] |
463
-
464
- ### Logging
465
-
466
- - Log aggregation: [ELK, CloudWatch, etc.]
467
- - Log retention: [Policy]
468
-
469
- ### Metrics
470
-
471
- - Key metrics: [CPU, Memory, Request rate]
472
- - Alerting: [Alert conditions]
473
- `;
474
- }
475
- function getConceptsTemplate() {
476
- return `# 8. Cross-cutting Concepts
477
-
478
- **Purpose**: Overall regulations and solution ideas relevant across multiple parts of the system.
479
-
480
- ## Domain Models
481
-
482
- ### Core Domain Concepts
483
-
484
- \`\`\`
485
- [Domain model diagram or class diagram]
486
- \`\`\`
487
-
488
- **Key Entities**:
489
-
490
- | Entity | Responsibility | Relationships |
491
- |--------|---------------|---------------|
492
- | [Entity 1] | [Purpose] | [Related entities] |
493
-
494
- ## Security
495
-
496
- ### Authentication
497
-
498
- - Method: [JWT, OAuth2, etc.]
499
- - Implementation: [How it works]
500
-
501
- ### Authorization
502
-
503
- - Model: [RBAC, ABAC, etc.]
504
- - Roles: [List of roles and permissions]
505
-
506
- ### Data Protection
507
-
508
- - Encryption at rest: [How]
509
- - Encryption in transit: [TLS version]
510
- - Sensitive data handling: [Approach]
511
-
512
- ## Error Handling
513
-
514
- ### Error Categories
515
-
516
- | Category | Handling Strategy |
517
- |----------|-------------------|
518
- | [Validation errors] | [Return 400 with details] |
519
- | [System errors] | [Log and return 500] |
520
-
521
- ### Error Response Format
522
-
523
- \`\`\`json
524
- {
525
- "error": {
526
- "code": "ERROR_CODE",
527
- "message": "Human-readable message",
528
- "details": {}
529
- }
35
+ export function getSectionTemplate(section, language) {
36
+ return templateProvider.getTemplate(section, language);
530
37
  }
531
- \`\`\`
532
-
533
- ## Logging and Monitoring
534
-
535
- ### Logging Strategy
536
-
537
- - Log levels: [DEBUG, INFO, WARN, ERROR]
538
- - Structured logging: [JSON format]
539
- - Correlation IDs: [For request tracing]
540
-
541
- ### Monitoring
542
-
543
- - APM: [Application Performance Monitoring tool]
544
- - Metrics: [Key business and technical metrics]
545
-
546
- ## Configuration Management
547
-
548
- ### Configuration Sources
549
-
550
- 1. Environment variables
551
- 2. Configuration files
552
- 3. Secret management: [Vault, AWS Secrets Manager]
553
-
554
- ### Configuration by Environment
555
-
556
- | Setting | Dev | Staging | Prod |
557
- |---------|-----|---------|------|
558
- | [Log level] | [DEBUG] | [INFO] | [WARN] |
559
-
560
- ## Testing Strategy
561
-
562
- ### Test Levels
563
-
564
- | Level | Coverage | Tools |
565
- |-------|----------|-------|
566
- | Unit Tests | [Target %] | [Framework] |
567
- | Integration Tests | [Scope] | [Tools] |
568
- | E2E Tests | [Key flows] | [Tools] |
569
-
570
- ### Test Data Management
571
-
572
- [How test data is created and managed]
573
-
574
- ## Development Concepts
575
-
576
- ### Code Organization
577
-
578
- - Package structure: [Approach]
579
- - Naming conventions: [Standards]
580
-
581
- ### Build and Dependency Management
582
-
583
- - Build tool: [Maven, Gradle, npm, etc.]
584
- - Dependency management: [Strategy]
585
-
586
- ## Operational Concepts
587
-
588
- ### Backup and Recovery
589
-
590
- - Backup frequency: [Daily, hourly, etc.]
591
- - Retention: [Policy]
592
- - Recovery procedure: [Steps]
593
-
594
- ### Disaster Recovery
595
-
596
- - RTO: [Recovery Time Objective]
597
- - RPO: [Recovery Point Objective]
598
- - DR strategy: [Approach]
599
- `;
600
- }
601
- function getArchitectureDecisionsTemplate() {
602
- return `# 9. Architecture Decisions
603
-
604
- **Purpose**: Document important, expensive, critical, or risky architecture decisions including rationale.
605
-
606
- ## ADR Format
607
-
608
- Each decision follows this structure:
609
- - **Context**: What is the issue we're trying to address?
610
- - **Decision**: What we decided to do
611
- - **Consequences**: What becomes easier or harder as a result
612
-
613
- ## Decision Log
614
-
615
- ### ADR-001: [Decision Title]
616
-
617
- **Date**: [YYYY-MM-DD]
618
- **Status**: [Proposed | Accepted | Deprecated | Superseded]
619
- **Deciders**: [Names]
620
-
621
- **Context**:
622
-
623
- [Describe the forces at play, technical, political, social, and local to the project. These forces are probably in tension and should be called out as such.]
624
-
625
- **Decision**:
626
-
627
- [Describe our response to these forces. This is where we make our decision.]
628
-
629
- **Consequences**:
630
-
631
- Positive:
632
- - [Benefit 1]
633
- - [Benefit 2]
634
-
635
- Negative:
636
- - [Trade-off 1]
637
- - [Trade-off 2]
638
-
639
- Risks:
640
- - [Risk 1 and mitigation]
641
-
642
- ### ADR-002: [Another Decision]
643
-
644
- [Similar structure]
645
-
646
- ## Decision Categories
647
-
648
- ### Structural Decisions
649
-
650
- | Decision | Rationale | Date |
651
- |----------|-----------|------|
652
- | [Microservices vs Monolith] | [Why chosen] | [Date] |
653
-
654
- ### Technology Decisions
655
-
656
- | Component | Technology | Alternative Considered | Why Chosen |
657
- |-----------|------------|----------------------|-----------|
658
- | [Backend] | [Node.js] | [Python, Java] | [Reasons] |
659
-
660
- ### Process Decisions
661
-
662
- | Decision | Impact | Date |
663
- |----------|--------|------|
664
- | [Agile methodology] | [How it affects architecture] | [Date] |
665
-
666
- ## Deprecated Decisions
667
-
668
- | Decision | Date Deprecated | Reason | Superseded By |
669
- |----------|----------------|--------|---------------|
670
- | [Old decision] | [Date] | [Why deprecated] | [ADR-XXX] |
671
- `;
38
+ /**
39
+ * Get localized section metadata
40
+ *
41
+ * @param section - The arc42 section
42
+ * @param language - Optional language code (defaults to English)
43
+ * @returns The section metadata including title and description
44
+ */
45
+ export function getSectionMetadata(section, language) {
46
+ return templateProvider.getSectionMetadata(section, language);
672
47
  }
673
- function getQualityRequirementsTemplate() {
674
- return `# 10. Quality Requirements
675
-
676
- **Purpose**: Define quality requirements with concrete scenarios.
677
-
678
- ## Quality Tree
679
-
680
- ### Top-level Quality Goals
681
-
682
- \`\`\`
683
- Quality
684
- ├── Performance
685
- │ ├── Response Time
686
- │ └── Throughput
687
- ├── Security
688
- │ ├── Authentication
689
- │ └── Data Protection
690
- ├── Reliability
691
- │ ├── Availability
692
- │ └── Fault Tolerance
693
- └── Maintainability
694
- ├── Testability
695
- └── Modifiability
696
- \`\`\`
697
-
698
- ## Quality Scenarios
699
-
700
- ### Performance Scenarios
701
-
702
- **Scenario 1: Normal Load Response Time**
703
-
704
- | Aspect | Description |
705
- |--------|-------------|
706
- | Scenario | User requests data under normal load |
707
- | Source | End user |
708
- | Stimulus | HTTP request to API |
709
- | Environment | Normal operation, 100 concurrent users |
710
- | Response | System returns data |
711
- | Measure | 95th percentile response time < 200ms |
712
-
713
- **Scenario 2: Peak Load Handling**
714
-
715
- | Aspect | Description |
716
- |--------|-------------|
717
- | Scenario | System under peak load |
718
- | Source | Multiple users |
719
- | Stimulus | 1000 concurrent requests |
720
- | Environment | Peak hours |
721
- | Response | System handles all requests |
722
- | Measure | No request fails, response time < 1s |
723
-
724
- ### Security Scenarios
725
-
726
- **Scenario 3: Unauthorized Access Attempt**
727
-
728
- | Aspect | Description |
729
- |--------|-------------|
730
- | Scenario | Unauthorized user tries to access protected resource |
731
- | Source | External attacker |
732
- | Stimulus | HTTP request without valid token |
733
- | Environment | Normal operation |
734
- | Response | System denies access |
735
- | Measure | Returns 401, logs attempt, no data exposed |
736
-
737
- ### Reliability Scenarios
738
-
739
- **Scenario 4: Service Failure Recovery**
740
-
741
- | Aspect | Description |
742
- |--------|-------------|
743
- | Scenario | Database connection fails |
744
- | Source | Infrastructure failure |
745
- | Stimulus | Database becomes unavailable |
746
- | Environment | Normal operation |
747
- | Response | System continues with cached data |
748
- | Measure | Service degradation < 5%, recovery < 30s |
749
-
750
- ### Maintainability Scenarios
751
-
752
- **Scenario 5: Adding New Feature**
753
-
754
- | Aspect | Description |
755
- |--------|-------------|
756
- | Scenario | Developer adds new API endpoint |
757
- | Source | Development team |
758
- | Stimulus | New requirement |
759
- | Environment | Development |
760
- | Response | Feature is added |
761
- | Measure | < 2 days, < 5 files modified, tests pass |
762
-
763
- ## Quality Requirements Prioritization
764
-
765
- | Quality Attribute | Priority | Target Measure |
766
- |-------------------|----------|----------------|
767
- | Availability | High | 99.9% uptime |
768
- | Response Time | High | < 200ms (p95) |
769
- | Security | Critical | Zero data breaches |
770
- | Maintainability | Medium | Test coverage > 80% |
771
- | Usability | Medium | User task success > 95% |
772
- `;
48
+ /**
49
+ * Get the workflow guide
50
+ *
51
+ * @param language - Optional language code (defaults to English)
52
+ * @returns The workflow guide content
53
+ */
54
+ export function getWorkflowGuide(language) {
55
+ return templateProvider.getWorkflowGuide(language);
773
56
  }
774
- function getTechnicalRisksTemplate() {
775
- return `# 11. Risks and Technical Debt
776
-
777
- **Purpose**: Document known problems, risks, and technical debt.
778
-
779
- ## Risks
780
-
781
- ### Risk Assessment Matrix
782
-
783
- | Risk | Probability | Impact | Severity | Status |
784
- |------|------------|--------|----------|--------|
785
- | [Risk 1] | [High/Med/Low] | [High/Med/Low] | [Critical/High/Med/Low] | [Open/Mitigated] |
786
-
787
- ### Detailed Risks
788
-
789
- **Risk 1: [Risk Title]**
790
-
791
- - **Description**: [What is the risk]
792
- - **Probability**: [High/Medium/Low]
793
- - **Impact**: [High/Medium/Low - and what happens]
794
- - **Mitigation**: [What we're doing about it]
795
- - **Contingency**: [Plan if risk materializes]
796
- - **Owner**: [Who is responsible]
797
- - **Status**: [Open/Mitigating/Closed]
798
-
799
- **Risk 2: [Title]**
800
-
801
- [Similar structure]
802
-
803
- ## Technical Debt
804
-
805
- ### Debt Items
806
-
807
- | Item | Type | Impact | Effort | Priority |
808
- |------|------|--------|--------|----------|
809
- | [Debt 1] | [Code/Architecture/Testing] | [High/Med/Low] | [Days] | [1-5] |
810
-
811
- ### Detailed Debt Items
812
-
813
- **Debt 1: [Title]**
814
-
815
- - **Description**: [What needs to be fixed]
816
- - **Why it exists**: [How did this happen]
817
- - **Impact**: [What problems does it cause]
818
- - **Proposed solution**: [How to fix it]
819
- - **Effort estimate**: [Time needed]
820
- - **Priority**: [When should we fix it]
821
-
822
- ### Debt Repayment Plan
823
-
824
- | Quarter | Debt Items to Address | Expected Impact |
825
- |---------|----------------------|-----------------|
826
- | Q1 2024 | [Items 1, 2] | [Improvement in X] |
827
-
828
- ## Known Issues
829
-
830
- ### Open Issues
831
-
832
- | Issue | Severity | Workaround | Target Fix Date |
833
- |-------|----------|------------|-----------------|
834
- | [Issue 1] | [High/Med/Low] | [If any] | [Date] |
835
-
836
- ### Limitations
837
-
838
- | Limitation | Impact | Rationale | Future Plans |
839
- |------------|--------|-----------|--------------|
840
- | [Limit 1] | [Effect] | [Why it exists] | [When/if to address] |
841
-
842
- ## Security Vulnerabilities
843
-
844
- ### Known Vulnerabilities
845
-
846
- | CVE | Component | Severity | Status | Mitigation |
847
- |-----|-----------|----------|--------|------------|
848
- | [CVE-ID] | [Library] | [Critical/High/Med] | [Open/Fixed] | [Actions taken] |
849
-
850
- ## Performance Issues
851
-
852
- | Issue | Impact | Workaround | Solution Plan |
853
- |-------|--------|------------|---------------|
854
- | [Issue] | [Effect on users] | [Temporary fix] | [Permanent solution] |
855
- `;
57
+ /**
58
+ * Get available languages
59
+ *
60
+ * @returns Array of available language information
61
+ */
62
+ export function getAvailableLanguages() {
63
+ return templateProvider.getAvailableLanguages();
856
64
  }
857
- function getGlossaryTemplate() {
858
- return `# 12. Glossary
859
-
860
- **Purpose**: Define important domain and technical terms to ensure consistent terminology.
861
-
862
- ## Domain Terms
863
-
864
- | Term | Definition |
865
- |------|------------|
866
- | [Domain Term 1] | [Clear, concise definition] |
867
- | [Domain Term 2] | [Definition] |
868
-
869
- ## Technical Terms
870
-
871
- | Term | Definition | Synonyms |
872
- |------|------------|----------|
873
- | [Technical Term 1] | [Definition] | [Alternative names] |
874
- | [Technical Term 2] | [Definition] | [Alternative names] |
875
-
876
- ## Abbreviations and Acronyms
877
-
878
- | Abbreviation | Full Name | Context |
879
- |--------------|-----------|---------|
880
- | API | Application Programming Interface | [When/where used] |
881
- | SLA | Service Level Agreement | [Context] |
882
- | JWT | JSON Web Token | [Usage] |
883
-
884
- ## Business Concepts
885
-
886
- | Concept | Description | Related Terms |
887
- |---------|-------------|---------------|
888
- | [Concept 1] | [Detailed explanation] | [Related concepts] |
889
-
890
- ## System-Specific Terms
891
-
892
- | Term | Definition | Example |
893
- |------|------------|---------|
894
- | [System Term 1] | [What it means in this system] | [Usage example] |
895
-
896
- ## Deprecated Terms
897
-
898
- | Old Term | Replaced By | Reason |
899
- |----------|-------------|--------|
900
- | [Old term] | [New term] | [Why changed] |
901
-
902
- ---
903
-
904
- **Note**: Keep this glossary updated as new terms emerge. Link to this section from other parts of the documentation when using these terms.
905
- `;
65
+ /**
66
+ * Check if a language is supported
67
+ *
68
+ * @param language - The language code to check
69
+ * @returns True if the language is supported
70
+ */
71
+ export function isLanguageSupported(language) {
72
+ return templateProvider.isSupported(language);
906
73
  }
907
74
  //# sourceMappingURL=index.js.map