@h2nguyen/arc42-node-mcp-server 1.0.2 → 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 (191) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +222 -11
  3. package/dist/index.js +0 -0
  4. package/dist/server.d.ts.map +1 -1
  5. package/dist/server.js +28 -72
  6. package/dist/server.js.map +1 -1
  7. package/dist/templates/index.d.ts +46 -1
  8. package/dist/templates/index.d.ts.map +1 -1
  9. package/dist/templates/index.js +63 -896
  10. package/dist/templates/index.js.map +1 -1
  11. package/dist/templates/locales/cz/index.d.ts +9 -0
  12. package/dist/templates/locales/cz/index.d.ts.map +1 -0
  13. package/dist/templates/locales/cz/index.js +29 -0
  14. package/dist/templates/locales/cz/index.js.map +1 -0
  15. package/dist/templates/locales/cz/sections.d.ts +10 -0
  16. package/dist/templates/locales/cz/sections.d.ts.map +1 -0
  17. package/dist/templates/locales/cz/sections.js +39 -0
  18. package/dist/templates/locales/cz/sections.js.map +1 -0
  19. package/dist/templates/locales/cz/templates.d.ts +9 -0
  20. package/dist/templates/locales/cz/templates.d.ts.map +1 -0
  21. package/dist/templates/locales/cz/templates.js +274 -0
  22. package/dist/templates/locales/cz/templates.js.map +1 -0
  23. package/dist/templates/locales/de/index.d.ts +26 -0
  24. package/dist/templates/locales/de/index.d.ts.map +1 -0
  25. package/dist/templates/locales/de/index.js +53 -0
  26. package/dist/templates/locales/de/index.js.map +1 -0
  27. package/dist/templates/locales/de/sections.d.ts +28 -0
  28. package/dist/templates/locales/de/sections.d.ts.map +1 -0
  29. package/dist/templates/locales/de/sections.js +57 -0
  30. package/dist/templates/locales/de/sections.js.map +1 -0
  31. package/dist/templates/locales/de/templates.d.ts +22 -0
  32. package/dist/templates/locales/de/templates.d.ts.map +1 -0
  33. package/dist/templates/locales/de/templates.js +1060 -0
  34. package/dist/templates/locales/de/templates.js.map +1 -0
  35. package/dist/templates/locales/en/index.d.ts +26 -0
  36. package/dist/templates/locales/en/index.d.ts.map +1 -0
  37. package/dist/templates/locales/en/index.js +53 -0
  38. package/dist/templates/locales/en/index.js.map +1 -0
  39. package/dist/templates/locales/en/sections.d.ts +25 -0
  40. package/dist/templates/locales/en/sections.d.ts.map +1 -0
  41. package/dist/templates/locales/en/sections.js +54 -0
  42. package/dist/templates/locales/en/sections.js.map +1 -0
  43. package/dist/templates/locales/en/templates.d.ts +22 -0
  44. package/dist/templates/locales/en/templates.d.ts.map +1 -0
  45. package/dist/templates/locales/en/templates.js +1060 -0
  46. package/dist/templates/locales/en/templates.js.map +1 -0
  47. package/dist/templates/locales/es/index.d.ts +26 -0
  48. package/dist/templates/locales/es/index.d.ts.map +1 -0
  49. package/dist/templates/locales/es/index.js +53 -0
  50. package/dist/templates/locales/es/index.js.map +1 -0
  51. package/dist/templates/locales/es/sections.d.ts +28 -0
  52. package/dist/templates/locales/es/sections.d.ts.map +1 -0
  53. package/dist/templates/locales/es/sections.js +57 -0
  54. package/dist/templates/locales/es/sections.js.map +1 -0
  55. package/dist/templates/locales/es/templates.d.ts +22 -0
  56. package/dist/templates/locales/es/templates.d.ts.map +1 -0
  57. package/dist/templates/locales/es/templates.js +1060 -0
  58. package/dist/templates/locales/es/templates.js.map +1 -0
  59. package/dist/templates/locales/fr/index.d.ts +26 -0
  60. package/dist/templates/locales/fr/index.d.ts.map +1 -0
  61. package/dist/templates/locales/fr/index.js +53 -0
  62. package/dist/templates/locales/fr/index.js.map +1 -0
  63. package/dist/templates/locales/fr/sections.d.ts +28 -0
  64. package/dist/templates/locales/fr/sections.d.ts.map +1 -0
  65. package/dist/templates/locales/fr/sections.js +57 -0
  66. package/dist/templates/locales/fr/sections.js.map +1 -0
  67. package/dist/templates/locales/fr/templates.d.ts +22 -0
  68. package/dist/templates/locales/fr/templates.d.ts.map +1 -0
  69. package/dist/templates/locales/fr/templates.js +1060 -0
  70. package/dist/templates/locales/fr/templates.js.map +1 -0
  71. package/dist/templates/locales/index.d.ts +67 -0
  72. package/dist/templates/locales/index.d.ts.map +1 -0
  73. package/dist/templates/locales/index.js +100 -0
  74. package/dist/templates/locales/index.js.map +1 -0
  75. package/dist/templates/locales/it/index.d.ts +26 -0
  76. package/dist/templates/locales/it/index.d.ts.map +1 -0
  77. package/dist/templates/locales/it/index.js +53 -0
  78. package/dist/templates/locales/it/index.js.map +1 -0
  79. package/dist/templates/locales/it/sections.d.ts +28 -0
  80. package/dist/templates/locales/it/sections.d.ts.map +1 -0
  81. package/dist/templates/locales/it/sections.js +57 -0
  82. package/dist/templates/locales/it/sections.js.map +1 -0
  83. package/dist/templates/locales/it/templates.d.ts +22 -0
  84. package/dist/templates/locales/it/templates.d.ts.map +1 -0
  85. package/dist/templates/locales/it/templates.js +1060 -0
  86. package/dist/templates/locales/it/templates.js.map +1 -0
  87. package/dist/templates/locales/language-factory.d.ts +97 -0
  88. package/dist/templates/locales/language-factory.d.ts.map +1 -0
  89. package/dist/templates/locales/language-factory.js +126 -0
  90. package/dist/templates/locales/language-factory.js.map +1 -0
  91. package/dist/templates/locales/language-registry.d.ts +114 -0
  92. package/dist/templates/locales/language-registry.d.ts.map +1 -0
  93. package/dist/templates/locales/language-registry.js +146 -0
  94. package/dist/templates/locales/language-registry.js.map +1 -0
  95. package/dist/templates/locales/language-strategy.d.ts +126 -0
  96. package/dist/templates/locales/language-strategy.d.ts.map +1 -0
  97. package/dist/templates/locales/language-strategy.js +46 -0
  98. package/dist/templates/locales/language-strategy.js.map +1 -0
  99. package/dist/templates/locales/nl/index.d.ts +26 -0
  100. package/dist/templates/locales/nl/index.d.ts.map +1 -0
  101. package/dist/templates/locales/nl/index.js +53 -0
  102. package/dist/templates/locales/nl/index.js.map +1 -0
  103. package/dist/templates/locales/nl/sections.d.ts +28 -0
  104. package/dist/templates/locales/nl/sections.d.ts.map +1 -0
  105. package/dist/templates/locales/nl/sections.js +57 -0
  106. package/dist/templates/locales/nl/sections.js.map +1 -0
  107. package/dist/templates/locales/nl/templates.d.ts +22 -0
  108. package/dist/templates/locales/nl/templates.d.ts.map +1 -0
  109. package/dist/templates/locales/nl/templates.js +1060 -0
  110. package/dist/templates/locales/nl/templates.js.map +1 -0
  111. package/dist/templates/locales/pt/index.d.ts +26 -0
  112. package/dist/templates/locales/pt/index.d.ts.map +1 -0
  113. package/dist/templates/locales/pt/index.js +53 -0
  114. package/dist/templates/locales/pt/index.js.map +1 -0
  115. package/dist/templates/locales/pt/sections.d.ts +28 -0
  116. package/dist/templates/locales/pt/sections.d.ts.map +1 -0
  117. package/dist/templates/locales/pt/sections.js +57 -0
  118. package/dist/templates/locales/pt/sections.js.map +1 -0
  119. package/dist/templates/locales/pt/templates.d.ts +22 -0
  120. package/dist/templates/locales/pt/templates.d.ts.map +1 -0
  121. package/dist/templates/locales/pt/templates.js +1060 -0
  122. package/dist/templates/locales/pt/templates.js.map +1 -0
  123. package/dist/templates/locales/ru/index.d.ts +15 -0
  124. package/dist/templates/locales/ru/index.d.ts.map +1 -0
  125. package/dist/templates/locales/ru/index.js +41 -0
  126. package/dist/templates/locales/ru/index.js.map +1 -0
  127. package/dist/templates/locales/ru/sections.d.ts +28 -0
  128. package/dist/templates/locales/ru/sections.d.ts.map +1 -0
  129. package/dist/templates/locales/ru/sections.js +57 -0
  130. package/dist/templates/locales/ru/sections.js.map +1 -0
  131. package/dist/templates/locales/ru/templates.d.ts +22 -0
  132. package/dist/templates/locales/ru/templates.d.ts.map +1 -0
  133. package/dist/templates/locales/ru/templates.js +664 -0
  134. package/dist/templates/locales/ru/templates.js.map +1 -0
  135. package/dist/templates/locales/template-provider.d.ts +122 -0
  136. package/dist/templates/locales/template-provider.d.ts.map +1 -0
  137. package/dist/templates/locales/template-provider.js +173 -0
  138. package/dist/templates/locales/template-provider.js.map +1 -0
  139. package/dist/templates/locales/ukr/index.d.ts +9 -0
  140. package/dist/templates/locales/ukr/index.d.ts.map +1 -0
  141. package/dist/templates/locales/ukr/index.js +29 -0
  142. package/dist/templates/locales/ukr/index.js.map +1 -0
  143. package/dist/templates/locales/ukr/sections.d.ts +10 -0
  144. package/dist/templates/locales/ukr/sections.d.ts.map +1 -0
  145. package/dist/templates/locales/ukr/sections.js +39 -0
  146. package/dist/templates/locales/ukr/sections.js.map +1 -0
  147. package/dist/templates/locales/ukr/templates.d.ts +9 -0
  148. package/dist/templates/locales/ukr/templates.d.ts.map +1 -0
  149. package/dist/templates/locales/ukr/templates.js +242 -0
  150. package/dist/templates/locales/ukr/templates.js.map +1 -0
  151. package/dist/templates/locales/zh/index.d.ts +9 -0
  152. package/dist/templates/locales/zh/index.d.ts.map +1 -0
  153. package/dist/templates/locales/zh/index.js +29 -0
  154. package/dist/templates/locales/zh/index.js.map +1 -0
  155. package/dist/templates/locales/zh/sections.d.ts +10 -0
  156. package/dist/templates/locales/zh/sections.d.ts.map +1 -0
  157. package/dist/templates/locales/zh/sections.js +39 -0
  158. package/dist/templates/locales/zh/sections.js.map +1 -0
  159. package/dist/templates/locales/zh/templates.d.ts +9 -0
  160. package/dist/templates/locales/zh/templates.d.ts.map +1 -0
  161. package/dist/templates/locales/zh/templates.js +260 -0
  162. package/dist/templates/locales/zh/templates.js.map +1 -0
  163. package/dist/tools/arc42-init.d.ts +8 -2
  164. package/dist/tools/arc42-init.d.ts.map +1 -1
  165. package/dist/tools/arc42-init.js +67 -97
  166. package/dist/tools/arc42-init.js.map +1 -1
  167. package/dist/tools/arc42-status.d.ts +5 -2
  168. package/dist/tools/arc42-status.d.ts.map +1 -1
  169. package/dist/tools/arc42-status.js +47 -18
  170. package/dist/tools/arc42-status.js.map +1 -1
  171. package/dist/tools/arc42-workflow-guide.d.ts +6 -3
  172. package/dist/tools/arc42-workflow-guide.d.ts.map +1 -1
  173. package/dist/tools/arc42-workflow-guide.js +42 -276
  174. package/dist/tools/arc42-workflow-guide.js.map +1 -1
  175. package/dist/tools/generate-template.d.ts +7 -3
  176. package/dist/tools/generate-template.d.ts.map +1 -1
  177. package/dist/tools/generate-template.js +44 -35
  178. package/dist/tools/generate-template.js.map +1 -1
  179. package/dist/tools/get-section.d.ts +7 -3
  180. package/dist/tools/get-section.d.ts.map +1 -1
  181. package/dist/tools/get-section.js +38 -38
  182. package/dist/tools/get-section.js.map +1 -1
  183. package/dist/tools/index.d.ts +6 -5
  184. package/dist/tools/index.d.ts.map +1 -1
  185. package/dist/tools/index.js +14 -20
  186. package/dist/tools/index.js.map +1 -1
  187. package/dist/tools/update-section.d.ts +9 -3
  188. package/dist/tools/update-section.d.ts.map +1 -1
  189. package/dist/tools/update-section.js +12 -44
  190. package/dist/tools/update-section.js.map +1 -1
  191. package/package.json +2 -2
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../../../../src/templates/locales/fr/templates.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Locales Module - Multi-Language Template Support
3
+ *
4
+ * Barrel export for the language localization infrastructure.
5
+ * Exports all types, classes, and singleton instances for the locales module.
6
+ *
7
+ * @module templates/locales
8
+ *
9
+ * Design Patterns:
10
+ * - Singleton Pattern: Module-level instances provide global access points
11
+ * - Barrel Export Pattern: Single entry point for all locales functionality
12
+ */
13
+ export type { LanguageCode, SectionTitle, SectionDescription, LanguageInfo, LanguageStrategy } from './language-strategy.js';
14
+ export { SUPPORTED_LANGUAGE_CODES } from './language-strategy.js';
15
+ export { isLanguageCode, normalizeLanguageCode } from './language-strategy.js';
16
+ export { LanguageRegistry } from './language-registry.js';
17
+ export { LanguageFactory } from './language-factory.js';
18
+ export { LocalizedTemplateProvider } from './template-provider.js';
19
+ export type { LocalizedSectionMetadata } from './template-provider.js';
20
+ import { LanguageRegistry } from './language-registry.js';
21
+ import { LanguageFactory } from './language-factory.js';
22
+ import { LocalizedTemplateProvider } from './template-provider.js';
23
+ /**
24
+ * Global language registry instance
25
+ *
26
+ * Use this registry to register new language strategies
27
+ * and access registered languages throughout the application.
28
+ */
29
+ export declare const languageRegistry: LanguageRegistry;
30
+ /**
31
+ * Global language factory instance
32
+ *
33
+ * Use this factory to create language strategy instances
34
+ * with proper normalization and fallback handling.
35
+ */
36
+ export declare const languageFactory: LanguageFactory;
37
+ /**
38
+ * Global template provider instance
39
+ *
40
+ * Use this provider to access templates in different languages
41
+ * with config.yaml integration support.
42
+ */
43
+ export declare const templateProvider: LocalizedTemplateProvider;
44
+ export { englishStrategy } from './en/index.js';
45
+ export { germanStrategy } from './de/index.js';
46
+ export { spanishStrategy } from './es/index.js';
47
+ export { frenchStrategy } from './fr/index.js';
48
+ export { italianStrategy } from './it/index.js';
49
+ export { dutchStrategy } from './nl/index.js';
50
+ export { portugueseStrategy } from './pt/index.js';
51
+ export { russianStrategy } from './ru/index.js';
52
+ export { czechStrategy } from './cz/index.js';
53
+ export { ukrainianStrategy } from './ukr/index.js';
54
+ export { chineseStrategy } from './zh/index.js';
55
+ /**
56
+ * Helper function to get the default language code
57
+ *
58
+ * @returns The default language code ('EN')
59
+ */
60
+ export declare function getDefaultLanguageCode(): string;
61
+ /**
62
+ * Helper function to check if the registry has been initialized with languages
63
+ *
64
+ * @returns True if at least one language is registered
65
+ */
66
+ export declare function isInitialized(): boolean;
67
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/templates/locales/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,kBAAkB,EAClB,YAAY,EACZ,gBAAgB,EACjB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAGlE,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAGnE,YAAY,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAIvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAenE;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,kBAAyB,CAAC;AAgBvD;;;;;GAKG;AACH,eAAO,MAAM,eAAe,iBAAwC,CAAC;AAErE;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,2BAAiD,CAAC;AAG/E,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD;;;;GAIG;AACH,wBAAgB,sBAAsB,IAAI,MAAM,CAE/C;AAED;;;;GAIG;AACH,wBAAgB,aAAa,IAAI,OAAO,CAEvC"}
@@ -0,0 +1,100 @@
1
+ /**
2
+ * Locales Module - Multi-Language Template Support
3
+ *
4
+ * Barrel export for the language localization infrastructure.
5
+ * Exports all types, classes, and singleton instances for the locales module.
6
+ *
7
+ * @module templates/locales
8
+ *
9
+ * Design Patterns:
10
+ * - Singleton Pattern: Module-level instances provide global access points
11
+ * - Barrel Export Pattern: Single entry point for all locales functionality
12
+ */
13
+ // Re-export constants
14
+ export { SUPPORTED_LANGUAGE_CODES } from './language-strategy.js';
15
+ // Re-export utility functions
16
+ export { isLanguageCode, normalizeLanguageCode } from './language-strategy.js';
17
+ // Re-export classes
18
+ export { LanguageRegistry } from './language-registry.js';
19
+ export { LanguageFactory } from './language-factory.js';
20
+ export { LocalizedTemplateProvider } from './template-provider.js';
21
+ // Create singleton instances
22
+ // These provide global access points for the locales module
23
+ import { LanguageRegistry } from './language-registry.js';
24
+ import { LanguageFactory } from './language-factory.js';
25
+ import { LocalizedTemplateProvider } from './template-provider.js';
26
+ // Import language strategies for registration
27
+ import { englishStrategy } from './en/index.js';
28
+ import { germanStrategy } from './de/index.js';
29
+ import { spanishStrategy } from './es/index.js';
30
+ import { frenchStrategy } from './fr/index.js';
31
+ import { italianStrategy } from './it/index.js';
32
+ import { dutchStrategy } from './nl/index.js';
33
+ import { portugueseStrategy } from './pt/index.js';
34
+ import { russianStrategy } from './ru/index.js';
35
+ import { czechStrategy } from './cz/index.js';
36
+ import { ukrainianStrategy } from './ukr/index.js';
37
+ import { chineseStrategy } from './zh/index.js';
38
+ /**
39
+ * Global language registry instance
40
+ *
41
+ * Use this registry to register new language strategies
42
+ * and access registered languages throughout the application.
43
+ */
44
+ export const languageRegistry = new LanguageRegistry();
45
+ // Register all language strategies
46
+ // English is the default language
47
+ languageRegistry.register(englishStrategy);
48
+ languageRegistry.register(germanStrategy);
49
+ languageRegistry.register(spanishStrategy);
50
+ languageRegistry.register(frenchStrategy);
51
+ languageRegistry.register(italianStrategy);
52
+ languageRegistry.register(dutchStrategy);
53
+ languageRegistry.register(portugueseStrategy);
54
+ languageRegistry.register(russianStrategy);
55
+ languageRegistry.register(czechStrategy);
56
+ languageRegistry.register(ukrainianStrategy);
57
+ languageRegistry.register(chineseStrategy);
58
+ /**
59
+ * Global language factory instance
60
+ *
61
+ * Use this factory to create language strategy instances
62
+ * with proper normalization and fallback handling.
63
+ */
64
+ export const languageFactory = new LanguageFactory(languageRegistry);
65
+ /**
66
+ * Global template provider instance
67
+ *
68
+ * Use this provider to access templates in different languages
69
+ * with config.yaml integration support.
70
+ */
71
+ export const templateProvider = new LocalizedTemplateProvider(languageFactory);
72
+ // Re-export language strategies for direct access
73
+ export { englishStrategy } from './en/index.js';
74
+ export { germanStrategy } from './de/index.js';
75
+ export { spanishStrategy } from './es/index.js';
76
+ export { frenchStrategy } from './fr/index.js';
77
+ export { italianStrategy } from './it/index.js';
78
+ export { dutchStrategy } from './nl/index.js';
79
+ export { portugueseStrategy } from './pt/index.js';
80
+ export { russianStrategy } from './ru/index.js';
81
+ export { czechStrategy } from './cz/index.js';
82
+ export { ukrainianStrategy } from './ukr/index.js';
83
+ export { chineseStrategy } from './zh/index.js';
84
+ /**
85
+ * Helper function to get the default language code
86
+ *
87
+ * @returns The default language code ('EN')
88
+ */
89
+ export function getDefaultLanguageCode() {
90
+ return 'EN';
91
+ }
92
+ /**
93
+ * Helper function to check if the registry has been initialized with languages
94
+ *
95
+ * @returns True if at least one language is registered
96
+ */
97
+ export function isInitialized() {
98
+ return languageRegistry.size > 0;
99
+ }
100
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/templates/locales/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Italian Language Strategy
3
+ *
4
+ * Implements the LanguageStrategy interface for Italian (Italiano).
5
+ * Provides Italian section titles, descriptions, and templates.
6
+ *
7
+ * @module templates/locales/it
8
+ *
9
+ * S.O.L.I.D Principles:
10
+ * - LSP (Liskov Substitution Principle): ItalianStrategy is substitutable for LanguageStrategy
11
+ * - OCP (Open/Closed Principle): Implements interface without modifying it
12
+ *
13
+ * Design Patterns:
14
+ * - Strategy Pattern: Concrete implementation for Italian language
15
+ */
16
+ import type { LanguageStrategy } from '../language-strategy.js';
17
+ /**
18
+ * Italian Language Strategy
19
+ *
20
+ * Provides Italian translations for arc42 documentation.
21
+ * Based on official arc42 Italian template from vendor/arc42-template/IT/.
22
+ */
23
+ export declare const italianStrategy: LanguageStrategy;
24
+ export { getSectionTitle, getSectionDescription } from './sections.js';
25
+ export { getTemplate, getWorkflowGuide, getReadmeContent } from './templates.js';
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/templates/locales/it/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAoC,MAAM,yBAAyB,CAAC;AAIlG;;;;;GAKG;AACH,eAAO,MAAM,eAAe,EAAE,gBA8B7B,CAAC;AAGF,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Italian Language Strategy
3
+ *
4
+ * Implements the LanguageStrategy interface for Italian (Italiano).
5
+ * Provides Italian section titles, descriptions, and templates.
6
+ *
7
+ * @module templates/locales/it
8
+ *
9
+ * S.O.L.I.D Principles:
10
+ * - LSP (Liskov Substitution Principle): ItalianStrategy is substitutable for LanguageStrategy
11
+ * - OCP (Open/Closed Principle): Implements interface without modifying it
12
+ *
13
+ * Design Patterns:
14
+ * - Strategy Pattern: Concrete implementation for Italian language
15
+ */
16
+ import { getSectionTitle, getSectionDescription } from './sections.js';
17
+ import { getTemplate, getWorkflowGuide, getReadmeContent } from './templates.js';
18
+ /**
19
+ * Italian Language Strategy
20
+ *
21
+ * Provides Italian translations for arc42 documentation.
22
+ * Based on official arc42 Italian template from vendor/arc42-template/IT/.
23
+ */
24
+ export const italianStrategy = {
25
+ code: 'IT',
26
+ name: 'Italian',
27
+ nativeName: 'Italiano',
28
+ getSectionTitle(section) {
29
+ return {
30
+ title: getSectionTitle(section),
31
+ section
32
+ };
33
+ },
34
+ getSectionDescription(section) {
35
+ return {
36
+ description: getSectionDescription(section),
37
+ section
38
+ };
39
+ },
40
+ getTemplate(section) {
41
+ return getTemplate(section);
42
+ },
43
+ getWorkflowGuide() {
44
+ return getWorkflowGuide();
45
+ },
46
+ getReadmeContent(projectName) {
47
+ return getReadmeContent(projectName);
48
+ }
49
+ };
50
+ // Re-export for convenience
51
+ export { getSectionTitle, getSectionDescription } from './sections.js';
52
+ export { getTemplate, getWorkflowGuide, getReadmeContent } from './templates.js';
53
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/templates/locales/it/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAIH,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEjF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAqB;IAC/C,IAAI,EAAE,IAAI;IACV,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,UAAU;IAEtB,eAAe,CAAC,OAAqB;QACnC,OAAO;YACL,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC;YAC/B,OAAO;SACR,CAAC;IACJ,CAAC;IAED,qBAAqB,CAAC,OAAqB;QACzC,OAAO;YACL,WAAW,EAAE,qBAAqB,CAAC,OAAO,CAAC;YAC3C,OAAO;SACR,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,OAAqB;QAC/B,OAAO,WAAW,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;IAED,gBAAgB;QACd,OAAO,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAED,gBAAgB,CAAC,WAAoB;QACnC,OAAO,gBAAgB,CAAC,WAAW,CAAC,CAAC;IACvC,CAAC;CACF,CAAC;AAEF,4BAA4B;AAC5B,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Italian Section Titles and Descriptions
3
+ *
4
+ * Provides localized section metadata for the Italian language.
5
+ * Translations are based on the official arc42 Italian template.
6
+ *
7
+ * @module templates/locales/it/sections
8
+ */
9
+ import type { Arc42Section } from '../../../types.js';
10
+ /**
11
+ * Italian section titles
12
+ * Based on vendor/arc42-template/IT/
13
+ */
14
+ export declare const SECTION_TITLES: Record<Arc42Section, string>;
15
+ /**
16
+ * Italian section descriptions
17
+ * Based on vendor/arc42-template/IT/
18
+ */
19
+ export declare const SECTION_DESCRIPTIONS: Record<Arc42Section, string>;
20
+ /**
21
+ * Get the Italian title for a section
22
+ */
23
+ export declare function getSectionTitle(section: Arc42Section): string;
24
+ /**
25
+ * Get the Italian description for a section
26
+ */
27
+ export declare function getSectionDescription(section: Arc42Section): string;
28
+ //# sourceMappingURL=sections.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections.d.ts","sourceRoot":"","sources":["../../../../src/templates/locales/it/sections.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAavD,CAAC;AAEF;;;GAGG;AACH,eAAO,MAAM,oBAAoB,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAa7D,CAAC;AAEF;;GAEG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAE7D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAEnE"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Italian Section Titles and Descriptions
3
+ *
4
+ * Provides localized section metadata for the Italian language.
5
+ * Translations are based on the official arc42 Italian template.
6
+ *
7
+ * @module templates/locales/it/sections
8
+ */
9
+ /**
10
+ * Italian section titles
11
+ * Based on vendor/arc42-template/IT/
12
+ */
13
+ export const SECTION_TITLES = {
14
+ '01_introduction_and_goals': 'Introduzione e Obiettivi',
15
+ '02_architecture_constraints': 'Vincoli dell\'Architettura',
16
+ '03_context_and_scope': 'Contesto e Ambito',
17
+ '04_solution_strategy': 'Strategia di Soluzione',
18
+ '05_building_block_view': 'Vista dei Building Block',
19
+ '06_runtime_view': 'Vista Runtime',
20
+ '07_deployment_view': 'Vista di Deployment',
21
+ '08_concepts': 'Concetti Trasversali',
22
+ '09_architecture_decisions': 'Decisioni Architetturali',
23
+ '10_quality_requirements': 'Requisiti di Qualita',
24
+ '11_technical_risks': 'Rischi e Debito Tecnico',
25
+ '12_glossary': 'Glossario'
26
+ };
27
+ /**
28
+ * Italian section descriptions
29
+ * Based on vendor/arc42-template/IT/
30
+ */
31
+ export const SECTION_DESCRIPTIONS = {
32
+ '01_introduction_and_goals': 'Requisiti, obiettivi di qualita e stakeholder',
33
+ '02_architecture_constraints': 'Vincoli tecnici e organizzativi',
34
+ '03_context_and_scope': 'Contesto di business e tecnico, interfacce esterne',
35
+ '04_solution_strategy': 'Decisioni e strategie fondamentali della soluzione',
36
+ '05_building_block_view': 'Decomposizione statica del sistema',
37
+ '06_runtime_view': 'Comportamento dinamico e scenari importanti',
38
+ '07_deployment_view': 'Infrastruttura e distribuzione',
39
+ '08_concepts': 'Regolamenti e approcci trasversali',
40
+ '09_architecture_decisions': 'Decisioni importanti, costose, critiche o rischiose',
41
+ '10_quality_requirements': 'Albero della qualita e scenari di qualita',
42
+ '11_technical_risks': 'Problemi noti, rischi e debito tecnico',
43
+ '12_glossary': 'Termini importanti di business e tecnici'
44
+ };
45
+ /**
46
+ * Get the Italian title for a section
47
+ */
48
+ export function getSectionTitle(section) {
49
+ return SECTION_TITLES[section];
50
+ }
51
+ /**
52
+ * Get the Italian description for a section
53
+ */
54
+ export function getSectionDescription(section) {
55
+ return SECTION_DESCRIPTIONS[section];
56
+ }
57
+ //# sourceMappingURL=sections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sections.js","sourceRoot":"","sources":["../../../../src/templates/locales/it/sections.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAiC;IAC1D,2BAA2B,EAAE,0BAA0B;IACvD,6BAA6B,EAAE,4BAA4B;IAC3D,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,wBAAwB;IAChD,wBAAwB,EAAE,0BAA0B;IACpD,iBAAiB,EAAE,eAAe;IAClC,oBAAoB,EAAE,qBAAqB;IAC3C,aAAa,EAAE,sBAAsB;IACrC,2BAA2B,EAAE,0BAA0B;IACvD,yBAAyB,EAAE,sBAAsB;IACjD,oBAAoB,EAAE,yBAAyB;IAC/C,aAAa,EAAE,WAAW;CAC3B,CAAC;AAEF;;;GAGG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAiC;IAChE,2BAA2B,EAAE,+CAA+C;IAC5E,6BAA6B,EAAE,iCAAiC;IAChE,sBAAsB,EAAE,oDAAoD;IAC5E,sBAAsB,EAAE,oDAAoD;IAC5E,wBAAwB,EAAE,oCAAoC;IAC9D,iBAAiB,EAAE,6CAA6C;IAChE,oBAAoB,EAAE,gCAAgC;IACtD,aAAa,EAAE,oCAAoC;IACnD,2BAA2B,EAAE,qDAAqD;IAClF,yBAAyB,EAAE,2CAA2C;IACtE,oBAAoB,EAAE,wCAAwC;IAC9D,aAAa,EAAE,0CAA0C;CAC1D,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAqB;IACnD,OAAO,cAAc,CAAC,OAAO,CAAC,CAAC;AACjC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,OAAqB;IACzD,OAAO,oBAAoB,CAAC,OAAO,CAAC,CAAC;AACvC,CAAC"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Italian Templates
3
+ *
4
+ * Contains all arc42 section templates in Italian.
5
+ * Based on the official arc42 Italian template from vendor/arc42-template/IT/.
6
+ *
7
+ * @module templates/locales/it/templates
8
+ */
9
+ import type { Arc42Section } from '../../../types.js';
10
+ /**
11
+ * Get the Italian template for a specific section
12
+ */
13
+ export declare function getTemplate(section: Arc42Section): string;
14
+ /**
15
+ * Get the Italian workflow guide
16
+ */
17
+ export declare function getWorkflowGuide(): string;
18
+ /**
19
+ * Get the Italian README content
20
+ */
21
+ export declare function getReadmeContent(projectName?: string): string;
22
+ //# sourceMappingURL=templates.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../../../src/templates/locales/it/templates.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;GAEG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,YAAY,GAAG,MAAM,CAiBzD;AAk4BD;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CA2FzC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAgD7D"}