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,309 @@
1
+ import { LANG } from '../constants/languages.js';
2
+ export class I18nIntegration {
3
+ static getDefaultConfig() {
4
+ return {
5
+ defaultLocale: LANG.EN.code,
6
+ locales: [LANG.EN.code, 'ja'],
7
+ localeConfigs: {
8
+ [LANG.EN.code]: {
9
+ label: 'English',
10
+ direction: 'ltr',
11
+ htmlLang: 'en-US'
12
+ },
13
+ ja: {
14
+ label: '日本語',
15
+ direction: 'ltr',
16
+ htmlLang: 'ja-JP'
17
+ }
18
+ }
19
+ };
20
+ }
21
+ static generateDocusaurusConfig(feature) {
22
+ const config = feature.config?.i18n || I18nIntegration.getDefaultConfig();
23
+ return {
24
+ i18n: {
25
+ defaultLocale: config.defaultLocale,
26
+ locales: config.locales,
27
+ localeConfigs: config.localeConfigs || I18nIntegration.getDefaultConfig().localeConfigs
28
+ },
29
+ themeConfig: {
30
+ navbar: {
31
+ items: [
32
+ {
33
+ type: 'localeDropdown',
34
+ position: 'right'
35
+ }
36
+ ]
37
+ }
38
+ }
39
+ };
40
+ }
41
+ static getDependencies() {
42
+ // i18n is built into Docusaurus, no additional dependencies needed
43
+ return {};
44
+ }
45
+ static generateI18nDocumentation() {
46
+ return `# 多言語対応 (Internationalization)
47
+
48
+ このドキュメントサイトは多言語対応(i18n)機能を提供しています。
49
+
50
+ ## サポート言語
51
+
52
+ 現在、以下の言語をサポートしています:
53
+
54
+ - **English** (en) - デフォルト言語
55
+ - **日本語** (ja) - Japanese
56
+
57
+ ## 言語の切り替え
58
+
59
+ ### ナビゲーションバーから切り替え
60
+
61
+ 1. ナビゲーションバー右上の言語ドロップダウンをクリック
62
+ 2. 希望する言語を選択
63
+
64
+ ### URLから直接アクセス
65
+
66
+ - 英語: \`/\` または \`/en/\`
67
+ - 日本語: \`/ja/\`
68
+
69
+ ## 翻訳の仕組み
70
+
71
+ ### ファイル構造
72
+
73
+ \`\`\`
74
+ docs/
75
+ ├── intro.md # 英語版(デフォルト)
76
+ └── ...
77
+
78
+ i18n/
79
+ └── ja/ # 日本語翻訳
80
+ ├── docusaurus-plugin-content-docs/
81
+ │ └── current/
82
+ │ ├── intro.md # 日本語版
83
+ │ └── ...
84
+ └── docusaurus-theme-classic/
85
+ └── navbar.json # ナビゲーション翻訳
86
+ \`\`\`
87
+
88
+ ### 翻訳ファイルの生成
89
+
90
+ 新しい翻訳を追加する場合:
91
+
92
+ \`\`\`bash
93
+ # 翻訳ファイルのテンプレートを生成
94
+ nr write-translations -- --locale ja
95
+
96
+ # 翻訳IDを生成
97
+ nr write-heading-ids
98
+ \`\`\`
99
+
100
+ ## 翻訳ガイドライン
101
+
102
+ ### 文書翻訳
103
+
104
+ 1. **一貫性の維持**
105
+ - 専門用語は統一した翻訳を使用
106
+ - 文体を統一(です・ます調)
107
+
108
+ 2. **文化的配慮**
109
+ - 日本の文化や慣習に合わせた表現
110
+ - 適切な敬語の使用
111
+
112
+ 3. **技術用語**
113
+ - 一般的な英語の技術用語はそのまま使用
114
+ - 必要に応じて日本語訳を併記
115
+
116
+ ### UI要素の翻訳
117
+
118
+ \`\`\`json
119
+ {
120
+ "theme.common.editThisPage": "このページを編集",
121
+ "theme.common.headingLinkTitle": "見出しへの直接リンク",
122
+ "theme.docs.breadcrumbs.home": "ホーム",
123
+ "theme.docs.breadcrumbs.navAriaLabel": "パンくずリスト",
124
+ "theme.docs.paginator.navAriaLabel": "ドキュメントページネーション",
125
+ "theme.docs.paginator.previous": "前へ",
126
+ "theme.docs.paginator.next": "次へ"
127
+ }
128
+ \`\`\`
129
+
130
+ ## SEO対応
131
+
132
+ ### 言語別メタデータ
133
+
134
+ 各言語版で適切なメタデータを設定:
135
+
136
+ - \`htmlLang\` 属性の設定
137
+ - 言語固有のタイトルと説明
138
+ - hreflang タグの自動生成
139
+
140
+ ### URL構造
141
+
142
+ - 英語(デフォルト): \`/docs/intro\`
143
+ - 日本語: \`/ja/docs/intro\`
144
+
145
+ ## 翻訳の貢献
146
+
147
+ ### 新しい翻訳の追加
148
+
149
+ 1. **言語の追加**
150
+ \`\`\`javascript
151
+ // docusaurus.config.js
152
+ i18n: {
153
+ defaultLocale: 'en',
154
+ locales: ['en', 'ja', 'ko'], // 韓国語を追加
155
+ }
156
+ \`\`\`
157
+
158
+ 2. **翻訳ファイルの作成**
159
+ \`\`\`bash
160
+ nr write-translations -- --locale ko
161
+ \`\`\`
162
+
163
+ 3. **翻訳作業**
164
+ - \`i18n/ko/\` ディレクトリ内のファイルを翻訳
165
+ - マークダウンファイルとJSONファイルの両方を翻訳
166
+
167
+ ### 翻訳の改善
168
+
169
+ 既存の翻訳を改善する場合:
170
+
171
+ 1. 該当する翻訳ファイルを編集
172
+ 2. プルリクエストを作成
173
+ 3. レビューを受けてマージ
174
+
175
+ ## トラブルシューティング
176
+
177
+ ### 翻訳が表示されない
178
+
179
+ 1. **ファイルパスの確認**
180
+ - 翻訳ファイルが正しい場所にあるか確認
181
+ - ファイル名が元のファイルと一致するか確認
182
+
183
+ 2. **設定の確認**
184
+ - \`docusaurus.config.js\` の i18n 設定を確認
185
+ - 言語コードが正しいか確認
186
+
187
+ 3. **ビルドの確認**
188
+ - 開発サーバーを再起動
189
+ - \`nr clear\` でキャッシュをクリア
190
+
191
+ ### 文字化けが発生する
192
+
193
+ 1. **エンコーディングの確認**
194
+ - ファイルがUTF-8で保存されているか確認
195
+ - BOMなしのUTF-8を使用
196
+
197
+ 2. **フォントの確認**
198
+ - 日本語フォントが正しく読み込まれているか確認
199
+ - CSSでフォントファミリーを指定
200
+
201
+ ## 参考資料
202
+
203
+ - [Docusaurus i18n ガイド](https://docusaurus.io/docs/i18n/introduction)
204
+ - [React Intl ドキュメント](https://formatjs.io/docs/react-intl/)
205
+ - [Unicode CLDR](https://cldr.unicode.org/)
206
+ `;
207
+ }
208
+ static generateLocaleFiles() {
209
+ return {
210
+ 'i18n/ja/docusaurus-theme-classic/navbar.json': JSON.stringify({
211
+ "title": {
212
+ "message": "ホーム",
213
+ "description": "The title in the navbar"
214
+ },
215
+ "item.label.Documentation": {
216
+ "message": "ドキュメント",
217
+ "description": "Navbar item with label Documentation"
218
+ },
219
+ "item.label.GitHub": {
220
+ "message": "GitHub",
221
+ "description": "Navbar item with label GitHub"
222
+ }
223
+ }, null, 2),
224
+ 'i18n/ja/docusaurus-theme-classic/footer.json': JSON.stringify({
225
+ "link.title.Documentation": {
226
+ "message": "ドキュメント",
227
+ "description": "The title of the footer links column with title=Documentation"
228
+ },
229
+ "link.title.Community": {
230
+ "message": "コミュニティ",
231
+ "description": "The title of the footer links column with title=Community"
232
+ },
233
+ "link.item.label.Getting Started": {
234
+ "message": "はじめに",
235
+ "description": "The label of footer link with label=Getting Started"
236
+ },
237
+ "copyright": {
238
+ "message": "Copyright © {year} {projectName}. Docusaurus でビルドされています。",
239
+ "description": "The footer copyright"
240
+ }
241
+ }, null, 2),
242
+ 'i18n/ja/code.json': JSON.stringify({
243
+ "theme.common.editThisPage": {
244
+ "message": "このページを編集",
245
+ "description": "The link label to edit the current page"
246
+ },
247
+ "theme.common.headingLinkTitle": {
248
+ "message": "見出しへの直接リンク",
249
+ "description": "Title for link to heading"
250
+ },
251
+ "theme.docs.breadcrumbs.home": {
252
+ "message": "ホーム",
253
+ "description": "The ARIA label for the home page in the breadcrumbs"
254
+ },
255
+ "theme.docs.breadcrumbs.navAriaLabel": {
256
+ "message": "パンくずリスト",
257
+ "description": "The ARIA label for the breadcrumbs"
258
+ },
259
+ "theme.docs.paginator.navAriaLabel": {
260
+ "message": "ドキュメントページネーション",
261
+ "description": "The ARIA label for the docs pagination"
262
+ },
263
+ "theme.docs.paginator.previous": {
264
+ "message": "前へ",
265
+ "description": "The label used to navigate to the previous doc"
266
+ },
267
+ "theme.docs.paginator.next": {
268
+ "message": "次へ",
269
+ "description": "The label used to navigate to the next doc"
270
+ }
271
+ }, null, 2)
272
+ };
273
+ }
274
+ static validateConfig(config) {
275
+ if (!config.defaultLocale) {
276
+ return {
277
+ valid: false,
278
+ message: 'Default locale is required'
279
+ };
280
+ }
281
+ if (!Array.isArray(config.locales) || config.locales.length === 0) {
282
+ return {
283
+ valid: false,
284
+ message: 'At least one locale must be specified'
285
+ };
286
+ }
287
+ if (!config.locales.includes(config.defaultLocale)) {
288
+ return {
289
+ valid: false,
290
+ message: 'Default locale must be included in locales array'
291
+ };
292
+ }
293
+ if (config.localeConfigs) {
294
+ for (const locale of config.locales) {
295
+ if (config.localeConfigs[locale]) {
296
+ const localeConfig = config.localeConfigs[locale];
297
+ if (!localeConfig.label || !localeConfig.direction || !localeConfig.htmlLang) {
298
+ return {
299
+ valid: false,
300
+ message: `Locale config for "${locale}" must include label, direction, and htmlLang`
301
+ };
302
+ }
303
+ }
304
+ }
305
+ }
306
+ return { valid: true };
307
+ }
308
+ }
309
+ //# sourceMappingURL=i18n-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"i18n-integration.js","sourceRoot":"","sources":["../../src/plugins/i18n-integration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,2BAA2B,CAAC;AAgBjD,MAAM,OAAO,eAAe;IAC1B,MAAM,CAAC,gBAAgB;QACrB,OAAO;YACL,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI;YAC3B,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;YAC7B,aAAa,EAAE;gBACb,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE;oBACd,KAAK,EAAE,SAAS;oBAChB,SAAS,EAAE,KAAK;oBAChB,QAAQ,EAAE,OAAO;iBAClB;gBACD,EAAE,EAAE;oBACF,KAAK,EAAE,KAAK;oBACZ,SAAS,EAAE,KAAK;oBAChB,QAAQ,EAAE,OAAO;iBAClB;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,wBAAwB,CAAC,OAAyB;QACvD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,eAAe,CAAC,gBAAgB,EAAE,CAAC;QAE1E,OAAO;YACL,IAAI,EAAE;gBACJ,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,OAAO,EAAE,MAAM,CAAC,OAAO;gBACvB,aAAa,EAAE,MAAM,CAAC,aAAa,IAAI,eAAe,CAAC,gBAAgB,EAAE,CAAC,aAAa;aACxF;YACD,WAAW,EAAE;gBACX,MAAM,EAAE;oBACN,KAAK,EAAE;wBACL;4BACE,IAAI,EAAE,gBAAgB;4BACtB,QAAQ,EAAE,OAAO;yBAClB;qBACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,eAAe;QACpB,mEAAmE;QACnE,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,CAAC,yBAAyB;QAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgKV,CAAC;IACA,CAAC;IAED,MAAM,CAAC,mBAAmB;QACxB,OAAO;YACL,8CAA8C,EAAE,IAAI,CAAC,SAAS,CAAC;gBAC7D,OAAO,EAAE;oBACP,SAAS,EAAE,KAAK;oBAChB,aAAa,EAAE,yBAAyB;iBACzC;gBACD,0BAA0B,EAAE;oBAC1B,SAAS,EAAE,QAAQ;oBACnB,aAAa,EAAE,sCAAsC;iBACtD;gBACD,mBAAmB,EAAE;oBACnB,SAAS,EAAE,QAAQ;oBACnB,aAAa,EAAE,+BAA+B;iBAC/C;aACF,EAAE,IAAI,EAAE,CAAC,CAAC;YAEX,8CAA8C,EAAE,IAAI,CAAC,SAAS,CAAC;gBAC7D,0BAA0B,EAAE;oBAC1B,SAAS,EAAE,QAAQ;oBACnB,aAAa,EAAE,+DAA+D;iBAC/E;gBACD,sBAAsB,EAAE;oBACtB,SAAS,EAAE,QAAQ;oBACnB,aAAa,EAAE,2DAA2D;iBAC3E;gBACD,iCAAiC,EAAE;oBACjC,SAAS,EAAE,MAAM;oBACjB,aAAa,EAAE,qDAAqD;iBACrE;gBACD,WAAW,EAAE;oBACX,SAAS,EAAE,0DAA0D;oBACrE,aAAa,EAAE,sBAAsB;iBACtC;aACF,EAAE,IAAI,EAAE,CAAC,CAAC;YAEX,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC;gBAClC,2BAA2B,EAAE;oBAC3B,SAAS,EAAE,UAAU;oBACrB,aAAa,EAAE,yCAAyC;iBACzD;gBACD,+BAA+B,EAAE;oBAC/B,SAAS,EAAE,YAAY;oBACvB,aAAa,EAAE,2BAA2B;iBAC3C;gBACD,6BAA6B,EAAE;oBAC7B,SAAS,EAAE,KAAK;oBAChB,aAAa,EAAE,qDAAqD;iBACrE;gBACD,qCAAqC,EAAE;oBACrC,SAAS,EAAE,SAAS;oBACpB,aAAa,EAAE,oCAAoC;iBACpD;gBACD,mCAAmC,EAAE;oBACnC,SAAS,EAAE,gBAAgB;oBAC3B,aAAa,EAAE,wCAAwC;iBACxD;gBACD,+BAA+B,EAAE;oBAC/B,SAAS,EAAE,IAAI;oBACf,aAAa,EAAE,gDAAgD;iBAChE;gBACD,2BAA2B,EAAE;oBAC3B,SAAS,EAAE,IAAI;oBACf,aAAa,EAAE,4CAA4C;iBAC5D;aACF,EAAE,IAAI,EAAE,CAAC,CAAC;SACZ,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAAkB;QACtC,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YAC1B,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,4BAA4B;aACtC,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClE,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,uCAAuC;aACjD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YACnD,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,kDAAkD;aAC5D,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC;YACzB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpC,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;oBACjC,MAAM,YAAY,GAAG,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;oBAClD,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;wBAC7E,OAAO;4BACL,KAAK,EAAE,KAAK;4BACZ,OAAO,EAAE,sBAAsB,MAAM,+CAA+C;yBACrF,CAAC;oBACJ,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,17 @@
1
+ import type { FeatureSelection } from '../types/index.js';
2
+ export interface PlantUMLConfig {
3
+ server?: string;
4
+ theme?: 'default' | 'dark';
5
+ format?: 'svg' | 'png';
6
+ }
7
+ export declare class PlantUMLIntegration {
8
+ static getDefaultConfig(): PlantUMLConfig;
9
+ static generateDocusaurusConfig(feature: FeatureSelection): any;
10
+ static getDependencies(): Record<string, string>;
11
+ static generateSampleContent(): string;
12
+ static validateConfig(config: PlantUMLConfig): {
13
+ valid: boolean;
14
+ message?: string;
15
+ };
16
+ }
17
+ //# sourceMappingURL=plantuml-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plantuml-integration.d.ts","sourceRoot":"","sources":["../../src/plugins/plantuml-integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,SAAS,GAAG,MAAM,CAAC;IAC3B,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC;CACxB;AAED,qBAAa,mBAAmB;IAC9B,MAAM,CAAC,gBAAgB,IAAI,cAAc;IAQzC,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG;IAsB/D,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAMhD,MAAM,CAAC,qBAAqB,IAAI,MAAM;IAwDtC,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,cAAc,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;CAwBpF"}
@@ -0,0 +1,111 @@
1
+ export class PlantUMLIntegration {
2
+ static getDefaultConfig() {
3
+ return {
4
+ server: 'https://www.plantuml.com/plantuml',
5
+ theme: 'default',
6
+ format: 'svg'
7
+ };
8
+ }
9
+ static generateDocusaurusConfig(feature) {
10
+ const config = feature.config?.plantuml || PlantUMLIntegration.getDefaultConfig();
11
+ return {
12
+ themeConfig: {
13
+ plantuml: {
14
+ server: config.server || 'https://www.plantuml.com/plantuml'
15
+ }
16
+ },
17
+ plugins: [
18
+ [
19
+ 'docusaurus-theme-plantuml',
20
+ {
21
+ // PlantUMLテーマの設定
22
+ theme: config.theme || 'default',
23
+ format: config.format || 'svg'
24
+ }
25
+ ]
26
+ ]
27
+ };
28
+ }
29
+ static getDependencies() {
30
+ return {
31
+ 'docusaurus-theme-plantuml': '^1.0.0'
32
+ };
33
+ }
34
+ static generateSampleContent() {
35
+ return `# PlantUML Examples
36
+
37
+ このページではPlantUMLを使用した図表の例を紹介します。
38
+
39
+ ## シーケンス図
40
+
41
+ \`\`\`plantuml
42
+ @startuml
43
+ Alice -> Bob: Authentication Request
44
+ Bob --> Alice: Authentication Response
45
+
46
+ Alice -> Bob: Another authentication Request
47
+ Alice <-- Bob: another authentication Response
48
+ @enduml
49
+ \`\`\`
50
+
51
+ ## クラス図
52
+
53
+ \`\`\`plantuml
54
+ @startuml
55
+ class User {
56
+ +String name
57
+ +String email
58
+ +login()
59
+ +logout()
60
+ }
61
+
62
+ class Admin {
63
+ +manageUsers()
64
+ }
65
+
66
+ User <|-- Admin
67
+ @enduml
68
+ \`\`\`
69
+
70
+ ## フローチャート
71
+
72
+ \`\`\`plantuml
73
+ @startuml
74
+ start
75
+ :ユーザー入力;
76
+ if (入力が有効?) then (yes)
77
+ :処理実行;
78
+ :結果表示;
79
+ else (no)
80
+ :エラーメッセージ表示;
81
+ endif
82
+ stop
83
+ @enduml
84
+ \`\`\`
85
+
86
+ 詳細な使用方法については[PlantUML公式ドキュメント](https://plantuml.com/)を参照してください。
87
+ `;
88
+ }
89
+ static validateConfig(config) {
90
+ if (config.server && !config.server.startsWith('http')) {
91
+ return {
92
+ valid: false,
93
+ message: 'PlantUML server URL must start with http or https'
94
+ };
95
+ }
96
+ if (config.theme && !['default', 'dark'].includes(config.theme)) {
97
+ return {
98
+ valid: false,
99
+ message: 'PlantUML theme must be "default" or "dark"'
100
+ };
101
+ }
102
+ if (config.format && !['svg', 'png'].includes(config.format)) {
103
+ return {
104
+ valid: false,
105
+ message: 'PlantUML format must be "svg" or "png"'
106
+ };
107
+ }
108
+ return { valid: true };
109
+ }
110
+ }
111
+ //# sourceMappingURL=plantuml-integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plantuml-integration.js","sourceRoot":"","sources":["../../src/plugins/plantuml-integration.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,mBAAmB;IAC9B,MAAM,CAAC,gBAAgB;QACrB,OAAO;YACL,MAAM,EAAE,mCAAmC;YAC3C,KAAK,EAAE,SAAS;YAChB,MAAM,EAAE,KAAK;SACd,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,wBAAwB,CAAC,OAAyB;QACvD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,QAAQ,IAAI,mBAAmB,CAAC,gBAAgB,EAAE,CAAC;QAElF,OAAO;YACL,WAAW,EAAE;gBACX,QAAQ,EAAE;oBACR,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,mCAAmC;iBAC7D;aACF;YACD,OAAO,EAAE;gBACP;oBACE,2BAA2B;oBAC3B;wBACE,iBAAiB;wBACjB,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;wBAChC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,KAAK;qBAC/B;iBACF;aACF;SACF,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,eAAe;QACpB,OAAO;YACL,2BAA2B,EAAE,QAAQ;SACtC,CAAC;IACJ,CAAC;IAED,MAAM,CAAC,qBAAqB;QAC1B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoDV,CAAC;IACA,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,MAAsB;QAC1C,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACvD,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,mDAAmD;aAC7D,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,IAAI,CAAC,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAChE,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,4CAA4C;aACtD,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;YAC7D,OAAO;gBACL,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,wCAAwC;aAClD,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;IACzB,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ import type { FeatureSelection } from '../types/index.js';
2
+ export interface RedocConfig {
3
+ specs: RedocSpec[];
4
+ theme?: {
5
+ primaryColor?: string;
6
+ primaryColorDark?: string;
7
+ };
8
+ }
9
+ export interface RedocSpec {
10
+ spec: string;
11
+ route: string;
12
+ id?: string;
13
+ }
14
+ export declare class RedocIntegration {
15
+ static getDefaultConfig(): RedocConfig;
16
+ static generateDocusaurusConfig(feature: FeatureSelection): any;
17
+ static getDependencies(): Record<string, string>;
18
+ static generateSampleOpenAPISpec(): string;
19
+ static generateSampleDocumentation(): string;
20
+ static validateConfig(config: RedocConfig): {
21
+ valid: boolean;
22
+ message?: string;
23
+ };
24
+ }
25
+ //# sourceMappingURL=redoc-integration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redoc-integration.d.ts","sourceRoot":"","sources":["../../src/plugins/redoc-integration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAE1D,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,SAAS,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAED,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,CAAC,EAAE,MAAM,CAAC;CACb;AAED,qBAAa,gBAAgB;IAC3B,MAAM,CAAC,gBAAgB,IAAI,WAAW;IAgBtC,MAAM,CAAC,wBAAwB,CAAC,OAAO,EAAE,gBAAgB,GAAG,GAAG;IAgB/D,MAAM,CAAC,eAAe,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAMhD,MAAM,CAAC,yBAAyB,IAAI,MAAM;IA4P1C,MAAM,CAAC,2BAA2B,IAAI,MAAM;IA8D5C,MAAM,CAAC,cAAc,CAAC,MAAM,EAAE,WAAW,GAAG;QAAE,KAAK,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;CA0BjF"}