@shirokuma-library/shirokuma-docs 0.1.0-alpha.10

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.

Potentially problematic release.


This version of @shirokuma-library/shirokuma-docs might be problematic. Click here for more details.

Files changed (761) hide show
  1. package/LICENSE +21 -0
  2. package/README.en.md +346 -0
  3. package/README.md +346 -0
  4. package/THIRD_PARTY_NOTICES.md +18 -0
  5. package/bin/shirokuma-docs +2 -0
  6. package/dist/analyzers/details-test-analysis.d.ts +31 -0
  7. package/dist/analyzers/details-test-analysis.d.ts.map +1 -0
  8. package/dist/analyzers/details-test-analysis.js +174 -0
  9. package/dist/analyzers/details-test-analysis.js.map +1 -0
  10. package/dist/analyzers/feature-map-builder.d.ts +20 -0
  11. package/dist/analyzers/feature-map-builder.d.ts.map +1 -0
  12. package/dist/analyzers/feature-map-builder.js +154 -0
  13. package/dist/analyzers/feature-map-builder.js.map +1 -0
  14. package/dist/analyzers/feature-map-references.d.ts +34 -0
  15. package/dist/analyzers/feature-map-references.d.ts.map +1 -0
  16. package/dist/analyzers/feature-map-references.js +249 -0
  17. package/dist/analyzers/feature-map-references.js.map +1 -0
  18. package/dist/analyzers/reference-analyzer.d.ts +95 -0
  19. package/dist/analyzers/reference-analyzer.d.ts.map +1 -0
  20. package/dist/analyzers/reference-analyzer.js +372 -0
  21. package/dist/analyzers/reference-analyzer.js.map +1 -0
  22. package/dist/commands/adr.d.ts +26 -0
  23. package/dist/commands/adr.d.ts.map +1 -0
  24. package/dist/commands/adr.js +129 -0
  25. package/dist/commands/adr.js.map +1 -0
  26. package/dist/commands/api-tools.d.ts +83 -0
  27. package/dist/commands/api-tools.d.ts.map +1 -0
  28. package/dist/commands/api-tools.js +775 -0
  29. package/dist/commands/api-tools.js.map +1 -0
  30. package/dist/commands/coverage.d.ts +139 -0
  31. package/dist/commands/coverage.d.ts.map +1 -0
  32. package/dist/commands/coverage.js +481 -0
  33. package/dist/commands/coverage.js.map +1 -0
  34. package/dist/commands/deps.d.ts +24 -0
  35. package/dist/commands/deps.d.ts.map +1 -0
  36. package/dist/commands/deps.js +211 -0
  37. package/dist/commands/deps.js.map +1 -0
  38. package/dist/commands/details-context.d.ts +38 -0
  39. package/dist/commands/details-context.d.ts.map +1 -0
  40. package/dist/commands/details-context.js +195 -0
  41. package/dist/commands/details-context.js.map +1 -0
  42. package/dist/commands/details-types.d.ts +315 -0
  43. package/dist/commands/details-types.d.ts.map +1 -0
  44. package/dist/commands/details-types.js +7 -0
  45. package/dist/commands/details-types.js.map +1 -0
  46. package/dist/commands/details.d.ts +24 -0
  47. package/dist/commands/details.d.ts.map +1 -0
  48. package/dist/commands/details.js +299 -0
  49. package/dist/commands/details.js.map +1 -0
  50. package/dist/commands/discussion-templates.d.ts +26 -0
  51. package/dist/commands/discussion-templates.d.ts.map +1 -0
  52. package/dist/commands/discussion-templates.js +270 -0
  53. package/dist/commands/discussion-templates.js.map +1 -0
  54. package/dist/commands/discussions.d.ts +31 -0
  55. package/dist/commands/discussions.d.ts.map +1 -0
  56. package/dist/commands/discussions.js +744 -0
  57. package/dist/commands/discussions.js.map +1 -0
  58. package/dist/commands/feature-map-types.d.ts +294 -0
  59. package/dist/commands/feature-map-types.d.ts.map +1 -0
  60. package/dist/commands/feature-map-types.js +8 -0
  61. package/dist/commands/feature-map-types.js.map +1 -0
  62. package/dist/commands/feature-map.d.ts +30 -0
  63. package/dist/commands/feature-map.d.ts.map +1 -0
  64. package/dist/commands/feature-map.js +137 -0
  65. package/dist/commands/feature-map.js.map +1 -0
  66. package/dist/commands/generate.d.ts +16 -0
  67. package/dist/commands/generate.d.ts.map +1 -0
  68. package/dist/commands/generate.js +88 -0
  69. package/dist/commands/generate.js.map +1 -0
  70. package/dist/commands/gh-discussions.d.ts +31 -0
  71. package/dist/commands/gh-discussions.d.ts.map +1 -0
  72. package/dist/commands/gh-discussions.js +743 -0
  73. package/dist/commands/gh-discussions.js.map +1 -0
  74. package/dist/commands/gh-issues-pr.d.ts +74 -0
  75. package/dist/commands/gh-issues-pr.d.ts.map +1 -0
  76. package/dist/commands/gh-issues-pr.js +417 -0
  77. package/dist/commands/gh-issues-pr.js.map +1 -0
  78. package/dist/commands/gh-issues.d.ts +90 -0
  79. package/dist/commands/gh-issues.d.ts.map +1 -0
  80. package/dist/commands/gh-issues.js +1297 -0
  81. package/dist/commands/gh-issues.js.map +1 -0
  82. package/dist/commands/gh-projects.d.ts +54 -0
  83. package/dist/commands/gh-projects.d.ts.map +1 -0
  84. package/dist/commands/gh-projects.js +966 -0
  85. package/dist/commands/gh-projects.js.map +1 -0
  86. package/dist/commands/gh-repo.d.ts +18 -0
  87. package/dist/commands/gh-repo.d.ts.map +1 -0
  88. package/dist/commands/gh-repo.js +253 -0
  89. package/dist/commands/gh-repo.js.map +1 -0
  90. package/dist/commands/github-data.d.ts +67 -0
  91. package/dist/commands/github-data.d.ts.map +1 -0
  92. package/dist/commands/github-data.js +361 -0
  93. package/dist/commands/github-data.js.map +1 -0
  94. package/dist/commands/i18n.d.ts +102 -0
  95. package/dist/commands/i18n.d.ts.map +1 -0
  96. package/dist/commands/i18n.js +829 -0
  97. package/dist/commands/i18n.js.map +1 -0
  98. package/dist/commands/impact.d.ts +14 -0
  99. package/dist/commands/impact.d.ts.map +1 -0
  100. package/dist/commands/impact.js +263 -0
  101. package/dist/commands/impact.js.map +1 -0
  102. package/dist/commands/init.d.ts +53 -0
  103. package/dist/commands/init.d.ts.map +1 -0
  104. package/dist/commands/init.js +468 -0
  105. package/dist/commands/init.js.map +1 -0
  106. package/dist/commands/issues-pr.d.ts +83 -0
  107. package/dist/commands/issues-pr.d.ts.map +1 -0
  108. package/dist/commands/issues-pr.js +572 -0
  109. package/dist/commands/issues-pr.js.map +1 -0
  110. package/dist/commands/issues.d.ts +78 -0
  111. package/dist/commands/issues.d.ts.map +1 -0
  112. package/dist/commands/issues.js +1541 -0
  113. package/dist/commands/issues.js.map +1 -0
  114. package/dist/commands/link-docs.d.ts +21 -0
  115. package/dist/commands/link-docs.d.ts.map +1 -0
  116. package/dist/commands/link-docs.js +990 -0
  117. package/dist/commands/link-docs.js.map +1 -0
  118. package/dist/commands/lint-annotations.d.ts +28 -0
  119. package/dist/commands/lint-annotations.d.ts.map +1 -0
  120. package/dist/commands/lint-annotations.js +511 -0
  121. package/dist/commands/lint-annotations.js.map +1 -0
  122. package/dist/commands/lint-code.d.ts +26 -0
  123. package/dist/commands/lint-code.d.ts.map +1 -0
  124. package/dist/commands/lint-code.js +428 -0
  125. package/dist/commands/lint-code.js.map +1 -0
  126. package/dist/commands/lint-coverage.d.ts +33 -0
  127. package/dist/commands/lint-coverage.d.ts.map +1 -0
  128. package/dist/commands/lint-coverage.js +379 -0
  129. package/dist/commands/lint-coverage.js.map +1 -0
  130. package/dist/commands/lint-docs.d.ts +23 -0
  131. package/dist/commands/lint-docs.d.ts.map +1 -0
  132. package/dist/commands/lint-docs.js +338 -0
  133. package/dist/commands/lint-docs.js.map +1 -0
  134. package/dist/commands/lint-structure.d.ts +38 -0
  135. package/dist/commands/lint-structure.d.ts.map +1 -0
  136. package/dist/commands/lint-structure.js +350 -0
  137. package/dist/commands/lint-structure.js.map +1 -0
  138. package/dist/commands/lint-tests.d.ts +25 -0
  139. package/dist/commands/lint-tests.d.ts.map +1 -0
  140. package/dist/commands/lint-tests.js +105 -0
  141. package/dist/commands/lint-tests.js.map +1 -0
  142. package/dist/commands/lint-workflow.d.ts +36 -0
  143. package/dist/commands/lint-workflow.d.ts.map +1 -0
  144. package/dist/commands/lint-workflow.js +255 -0
  145. package/dist/commands/lint-workflow.js.map +1 -0
  146. package/dist/commands/overview.d.ts +21 -0
  147. package/dist/commands/overview.d.ts.map +1 -0
  148. package/dist/commands/overview.js +1300 -0
  149. package/dist/commands/overview.js.map +1 -0
  150. package/dist/commands/packages.d.ts +107 -0
  151. package/dist/commands/packages.d.ts.map +1 -0
  152. package/dist/commands/packages.js +308 -0
  153. package/dist/commands/packages.js.map +1 -0
  154. package/dist/commands/portal-nextjs.d.ts +23 -0
  155. package/dist/commands/portal-nextjs.d.ts.map +1 -0
  156. package/dist/commands/portal-nextjs.js +336 -0
  157. package/dist/commands/portal-nextjs.js.map +1 -0
  158. package/dist/commands/portal.d.ts +24 -0
  159. package/dist/commands/portal.d.ts.map +1 -0
  160. package/dist/commands/portal.js +16 -0
  161. package/dist/commands/portal.js.map +1 -0
  162. package/dist/commands/projects.d.ts +54 -0
  163. package/dist/commands/projects.d.ts.map +1 -0
  164. package/dist/commands/projects.js +1191 -0
  165. package/dist/commands/projects.js.map +1 -0
  166. package/dist/commands/repo-pairs.d.ts +19 -0
  167. package/dist/commands/repo-pairs.d.ts.map +1 -0
  168. package/dist/commands/repo-pairs.js +529 -0
  169. package/dist/commands/repo-pairs.js.map +1 -0
  170. package/dist/commands/repo.d.ts +18 -0
  171. package/dist/commands/repo.d.ts.map +1 -0
  172. package/dist/commands/repo.js +253 -0
  173. package/dist/commands/repo.js.map +1 -0
  174. package/dist/commands/schema.d.ts +49 -0
  175. package/dist/commands/schema.d.ts.map +1 -0
  176. package/dist/commands/schema.js +830 -0
  177. package/dist/commands/schema.js.map +1 -0
  178. package/dist/commands/screenshots.d.ts +203 -0
  179. package/dist/commands/screenshots.d.ts.map +1 -0
  180. package/dist/commands/screenshots.js +1234 -0
  181. package/dist/commands/screenshots.js.map +1 -0
  182. package/dist/commands/search-index.d.ts +83 -0
  183. package/dist/commands/search-index.d.ts.map +1 -0
  184. package/dist/commands/search-index.js +389 -0
  185. package/dist/commands/search-index.js.map +1 -0
  186. package/dist/commands/search.d.ts +24 -0
  187. package/dist/commands/search.d.ts.map +1 -0
  188. package/dist/commands/search.js +254 -0
  189. package/dist/commands/search.js.map +1 -0
  190. package/dist/commands/session.d.ts +159 -0
  191. package/dist/commands/session.d.ts.map +1 -0
  192. package/dist/commands/session.js +1274 -0
  193. package/dist/commands/session.js.map +1 -0
  194. package/dist/commands/test-cases-types.d.ts +154 -0
  195. package/dist/commands/test-cases-types.d.ts.map +1 -0
  196. package/dist/commands/test-cases-types.js +7 -0
  197. package/dist/commands/test-cases-types.js.map +1 -0
  198. package/dist/commands/test-cases.d.ts +28 -0
  199. package/dist/commands/test-cases.d.ts.map +1 -0
  200. package/dist/commands/test-cases.js +192 -0
  201. package/dist/commands/test-cases.js.map +1 -0
  202. package/dist/commands/typedoc.d.ts +21 -0
  203. package/dist/commands/typedoc.d.ts.map +1 -0
  204. package/dist/commands/typedoc.js +192 -0
  205. package/dist/commands/typedoc.js.map +1 -0
  206. package/dist/commands/update-skills.d.ts +56 -0
  207. package/dist/commands/update-skills.d.ts.map +1 -0
  208. package/dist/commands/update-skills.js +626 -0
  209. package/dist/commands/update-skills.js.map +1 -0
  210. package/dist/generators/details-entity-pages.d.ts +40 -0
  211. package/dist/generators/details-entity-pages.d.ts.map +1 -0
  212. package/dist/generators/details-entity-pages.js +301 -0
  213. package/dist/generators/details-entity-pages.js.map +1 -0
  214. package/dist/generators/details-html.d.ts +23 -0
  215. package/dist/generators/details-html.d.ts.map +1 -0
  216. package/dist/generators/details-html.js +324 -0
  217. package/dist/generators/details-html.js.map +1 -0
  218. package/dist/generators/details-module-page.d.ts +33 -0
  219. package/dist/generators/details-module-page.d.ts.map +1 -0
  220. package/dist/generators/details-module-page.js +408 -0
  221. package/dist/generators/details-module-page.js.map +1 -0
  222. package/dist/generators/details-styles.d.ts +39 -0
  223. package/dist/generators/details-styles.d.ts.map +1 -0
  224. package/dist/generators/details-styles.js +409 -0
  225. package/dist/generators/details-styles.js.map +1 -0
  226. package/dist/generators/feature-map-html.d.ts +66 -0
  227. package/dist/generators/feature-map-html.d.ts.map +1 -0
  228. package/dist/generators/feature-map-html.js +569 -0
  229. package/dist/generators/feature-map-html.js.map +1 -0
  230. package/dist/generators/feature-map-styles.d.ts +39 -0
  231. package/dist/generators/feature-map-styles.d.ts.map +1 -0
  232. package/dist/generators/feature-map-styles.js +449 -0
  233. package/dist/generators/feature-map-styles.js.map +1 -0
  234. package/dist/generators/test-cases-hierarchy.d.ts +21 -0
  235. package/dist/generators/test-cases-hierarchy.d.ts.map +1 -0
  236. package/dist/generators/test-cases-hierarchy.js +336 -0
  237. package/dist/generators/test-cases-hierarchy.js.map +1 -0
  238. package/dist/generators/test-cases-main.d.ts +20 -0
  239. package/dist/generators/test-cases-main.d.ts.map +1 -0
  240. package/dist/generators/test-cases-main.js +439 -0
  241. package/dist/generators/test-cases-main.js.map +1 -0
  242. package/dist/generators/test-cases-styles.d.ts +64 -0
  243. package/dist/generators/test-cases-styles.d.ts.map +1 -0
  244. package/dist/generators/test-cases-styles.js +1277 -0
  245. package/dist/generators/test-cases-styles.js.map +1 -0
  246. package/dist/index.d.ts +13 -0
  247. package/dist/index.d.ts.map +1 -0
  248. package/dist/index.js +600 -0
  249. package/dist/index.js.map +1 -0
  250. package/dist/lint/annotation-lint.d.ts +198 -0
  251. package/dist/lint/annotation-lint.d.ts.map +1 -0
  252. package/dist/lint/annotation-lint.js +510 -0
  253. package/dist/lint/annotation-lint.js.map +1 -0
  254. package/dist/lint/annotation-types.d.ts +161 -0
  255. package/dist/lint/annotation-types.d.ts.map +1 -0
  256. package/dist/lint/annotation-types.js +31 -0
  257. package/dist/lint/annotation-types.js.map +1 -0
  258. package/dist/lint/code-types.d.ts +135 -0
  259. package/dist/lint/code-types.d.ts.map +1 -0
  260. package/dist/lint/code-types.js +25 -0
  261. package/dist/lint/code-types.js.map +1 -0
  262. package/dist/lint/coverage-types.d.ts +128 -0
  263. package/dist/lint/coverage-types.d.ts.map +1 -0
  264. package/dist/lint/coverage-types.js +24 -0
  265. package/dist/lint/coverage-types.js.map +1 -0
  266. package/dist/lint/docs-types.d.ts +214 -0
  267. package/dist/lint/docs-types.d.ts.map +1 -0
  268. package/dist/lint/docs-types.js +18 -0
  269. package/dist/lint/docs-types.js.map +1 -0
  270. package/dist/lint/formatters/index.d.ts +14 -0
  271. package/dist/lint/formatters/index.d.ts.map +1 -0
  272. package/dist/lint/formatters/index.js +28 -0
  273. package/dist/lint/formatters/index.js.map +1 -0
  274. package/dist/lint/formatters/json.d.ts +11 -0
  275. package/dist/lint/formatters/json.d.ts.map +1 -0
  276. package/dist/lint/formatters/json.js +12 -0
  277. package/dist/lint/formatters/json.js.map +1 -0
  278. package/dist/lint/formatters/summary.d.ts +11 -0
  279. package/dist/lint/formatters/summary.d.ts.map +1 -0
  280. package/dist/lint/formatters/summary.js +37 -0
  281. package/dist/lint/formatters/summary.js.map +1 -0
  282. package/dist/lint/formatters/terminal.d.ts +11 -0
  283. package/dist/lint/formatters/terminal.d.ts.map +1 -0
  284. package/dist/lint/formatters/terminal.js +99 -0
  285. package/dist/lint/formatters/terminal.js.map +1 -0
  286. package/dist/lint/index.d.ts +18 -0
  287. package/dist/lint/index.d.ts.map +1 -0
  288. package/dist/lint/index.js +103 -0
  289. package/dist/lint/index.js.map +1 -0
  290. package/dist/lint/rules/annotation-required.d.ts +35 -0
  291. package/dist/lint/rules/annotation-required.d.ts.map +1 -0
  292. package/dist/lint/rules/annotation-required.js +127 -0
  293. package/dist/lint/rules/annotation-required.js.map +1 -0
  294. package/dist/lint/rules/code-rules.d.ts +12 -0
  295. package/dist/lint/rules/code-rules.d.ts.map +1 -0
  296. package/dist/lint/rules/code-rules.js +11 -0
  297. package/dist/lint/rules/code-rules.js.map +1 -0
  298. package/dist/lint/rules/describe-coverage.d.ts +8 -0
  299. package/dist/lint/rules/describe-coverage.d.ts.map +1 -0
  300. package/dist/lint/rules/describe-coverage.js +43 -0
  301. package/dist/lint/rules/describe-coverage.js.map +1 -0
  302. package/dist/lint/rules/duplicate-testdoc.d.ts +8 -0
  303. package/dist/lint/rules/duplicate-testdoc.d.ts.map +1 -0
  304. package/dist/lint/rules/duplicate-testdoc.js +38 -0
  305. package/dist/lint/rules/duplicate-testdoc.js.map +1 -0
  306. package/dist/lint/rules/index.d.ts +29 -0
  307. package/dist/lint/rules/index.d.ts.map +1 -0
  308. package/dist/lint/rules/index.js +55 -0
  309. package/dist/lint/rules/index.js.map +1 -0
  310. package/dist/lint/rules/server-action-structure.d.ts +37 -0
  311. package/dist/lint/rules/server-action-structure.d.ts.map +1 -0
  312. package/dist/lint/rules/server-action-structure.js +152 -0
  313. package/dist/lint/rules/server-action-structure.js.map +1 -0
  314. package/dist/lint/rules/skipped-test-report.d.ts +11 -0
  315. package/dist/lint/rules/skipped-test-report.d.ts.map +1 -0
  316. package/dist/lint/rules/skipped-test-report.js +31 -0
  317. package/dist/lint/rules/skipped-test-report.js.map +1 -0
  318. package/dist/lint/rules/structure-rules.d.ts +67 -0
  319. package/dist/lint/rules/structure-rules.d.ts.map +1 -0
  320. package/dist/lint/rules/structure-rules.js +617 -0
  321. package/dist/lint/rules/structure-rules.js.map +1 -0
  322. package/dist/lint/rules/testdoc-japanese.d.ts +8 -0
  323. package/dist/lint/rules/testdoc-japanese.d.ts.map +1 -0
  324. package/dist/lint/rules/testdoc-japanese.js +31 -0
  325. package/dist/lint/rules/testdoc-japanese.js.map +1 -0
  326. package/dist/lint/rules/testdoc-min-length.d.ts +8 -0
  327. package/dist/lint/rules/testdoc-min-length.d.ts.map +1 -0
  328. package/dist/lint/rules/testdoc-min-length.js +31 -0
  329. package/dist/lint/rules/testdoc-min-length.js.map +1 -0
  330. package/dist/lint/rules/testdoc-required.d.ts +8 -0
  331. package/dist/lint/rules/testdoc-required.d.ts.map +1 -0
  332. package/dist/lint/rules/testdoc-required.js +27 -0
  333. package/dist/lint/rules/testdoc-required.js.map +1 -0
  334. package/dist/lint/rules/workflow-branch-naming.d.ts +20 -0
  335. package/dist/lint/rules/workflow-branch-naming.d.ts.map +1 -0
  336. package/dist/lint/rules/workflow-branch-naming.js +85 -0
  337. package/dist/lint/rules/workflow-branch-naming.js.map +1 -0
  338. package/dist/lint/rules/workflow-commit-format.d.ts +27 -0
  339. package/dist/lint/rules/workflow-commit-format.d.ts.map +1 -0
  340. package/dist/lint/rules/workflow-commit-format.js +92 -0
  341. package/dist/lint/rules/workflow-commit-format.js.map +1 -0
  342. package/dist/lint/rules/workflow-issue-fields.d.ts +24 -0
  343. package/dist/lint/rules/workflow-issue-fields.d.ts.map +1 -0
  344. package/dist/lint/rules/workflow-issue-fields.js +89 -0
  345. package/dist/lint/rules/workflow-issue-fields.js.map +1 -0
  346. package/dist/lint/rules/workflow-main-protection.d.ts +32 -0
  347. package/dist/lint/rules/workflow-main-protection.d.ts.map +1 -0
  348. package/dist/lint/rules/workflow-main-protection.js +114 -0
  349. package/dist/lint/rules/workflow-main-protection.js.map +1 -0
  350. package/dist/lint/structure-types.d.ts +216 -0
  351. package/dist/lint/structure-types.d.ts.map +1 -0
  352. package/dist/lint/structure-types.js +96 -0
  353. package/dist/lint/structure-types.js.map +1 -0
  354. package/dist/lint/types.d.ts +154 -0
  355. package/dist/lint/types.d.ts.map +1 -0
  356. package/dist/lint/types.js +21 -0
  357. package/dist/lint/types.js.map +1 -0
  358. package/dist/lint/workflow-types.d.ts +90 -0
  359. package/dist/lint/workflow-types.d.ts.map +1 -0
  360. package/dist/lint/workflow-types.js +7 -0
  361. package/dist/lint/workflow-types.js.map +1 -0
  362. package/dist/md/analyzer/index.d.ts +46 -0
  363. package/dist/md/analyzer/index.d.ts.map +1 -0
  364. package/dist/md/analyzer/index.js +288 -0
  365. package/dist/md/analyzer/index.js.map +1 -0
  366. package/dist/md/builder/index.d.ts +91 -0
  367. package/dist/md/builder/index.d.ts.map +1 -0
  368. package/dist/md/builder/index.js +446 -0
  369. package/dist/md/builder/index.js.map +1 -0
  370. package/dist/md/cli/analyze.d.ts +11 -0
  371. package/dist/md/cli/analyze.d.ts.map +1 -0
  372. package/dist/md/cli/analyze.js +118 -0
  373. package/dist/md/cli/analyze.js.map +1 -0
  374. package/dist/md/cli/build.d.ts +11 -0
  375. package/dist/md/cli/build.d.ts.map +1 -0
  376. package/dist/md/cli/build.js +74 -0
  377. package/dist/md/cli/build.js.map +1 -0
  378. package/dist/md/cli/extract.d.ts +25 -0
  379. package/dist/md/cli/extract.d.ts.map +1 -0
  380. package/dist/md/cli/extract.js +230 -0
  381. package/dist/md/cli/extract.js.map +1 -0
  382. package/dist/md/cli/index.d.ts +3 -0
  383. package/dist/md/cli/index.d.ts.map +1 -0
  384. package/dist/md/cli/index.js +99 -0
  385. package/dist/md/cli/index.js.map +1 -0
  386. package/dist/md/cli/lint.d.ts +11 -0
  387. package/dist/md/cli/lint.d.ts.map +1 -0
  388. package/dist/md/cli/lint.js +165 -0
  389. package/dist/md/cli/lint.js.map +1 -0
  390. package/dist/md/cli/list.d.ts +16 -0
  391. package/dist/md/cli/list.d.ts.map +1 -0
  392. package/dist/md/cli/list.js +85 -0
  393. package/dist/md/cli/list.js.map +1 -0
  394. package/dist/md/cli/program.d.ts +11 -0
  395. package/dist/md/cli/program.d.ts.map +1 -0
  396. package/dist/md/cli/program.js +104 -0
  397. package/dist/md/cli/program.js.map +1 -0
  398. package/dist/md/cli/validate.d.ts +8 -0
  399. package/dist/md/cli/validate.d.ts.map +1 -0
  400. package/dist/md/cli/validate.js +82 -0
  401. package/dist/md/cli/validate.js.map +1 -0
  402. package/dist/md/constants.d.ts +69 -0
  403. package/dist/md/constants.d.ts.map +1 -0
  404. package/dist/md/constants.js +69 -0
  405. package/dist/md/constants.js.map +1 -0
  406. package/dist/md/extractor/index.d.ts +57 -0
  407. package/dist/md/extractor/index.d.ts.map +1 -0
  408. package/dist/md/extractor/index.js +365 -0
  409. package/dist/md/extractor/index.js.map +1 -0
  410. package/dist/md/index.d.ts +26 -0
  411. package/dist/md/index.d.ts.map +1 -0
  412. package/dist/md/index.js +30 -0
  413. package/dist/md/index.js.map +1 -0
  414. package/dist/md/linter/index.d.ts +20 -0
  415. package/dist/md/linter/index.d.ts.map +1 -0
  416. package/dist/md/linter/index.js +421 -0
  417. package/dist/md/linter/index.js.map +1 -0
  418. package/dist/md/linter/token-optimizer.d.ts +66 -0
  419. package/dist/md/linter/token-optimizer.d.ts.map +1 -0
  420. package/dist/md/linter/token-optimizer.js +292 -0
  421. package/dist/md/linter/token-optimizer.js.map +1 -0
  422. package/dist/md/lister/index.d.ts +42 -0
  423. package/dist/md/lister/index.d.ts.map +1 -0
  424. package/dist/md/lister/index.js +317 -0
  425. package/dist/md/lister/index.js.map +1 -0
  426. package/dist/md/parser/heading-numbers.d.ts +43 -0
  427. package/dist/md/parser/heading-numbers.d.ts.map +1 -0
  428. package/dist/md/parser/heading-numbers.js +97 -0
  429. package/dist/md/parser/heading-numbers.js.map +1 -0
  430. package/dist/md/parser/section-meta.d.ts +50 -0
  431. package/dist/md/parser/section-meta.d.ts.map +1 -0
  432. package/dist/md/parser/section-meta.js +212 -0
  433. package/dist/md/parser/section-meta.js.map +1 -0
  434. package/dist/md/parser/template.d.ts +56 -0
  435. package/dist/md/parser/template.d.ts.map +1 -0
  436. package/dist/md/parser/template.js +122 -0
  437. package/dist/md/parser/template.js.map +1 -0
  438. package/dist/md/plugins/loader.d.ts +15 -0
  439. package/dist/md/plugins/loader.d.ts.map +1 -0
  440. package/dist/md/plugins/loader.js +80 -0
  441. package/dist/md/plugins/loader.js.map +1 -0
  442. package/dist/md/plugins/normalize-headings.d.ts +43 -0
  443. package/dist/md/plugins/normalize-headings.d.ts.map +1 -0
  444. package/dist/md/plugins/normalize-headings.js +51 -0
  445. package/dist/md/plugins/normalize-headings.js.map +1 -0
  446. package/dist/md/plugins/normalize-whitespace.d.ts +46 -0
  447. package/dist/md/plugins/normalize-whitespace.d.ts.map +1 -0
  448. package/dist/md/plugins/normalize-whitespace.js +86 -0
  449. package/dist/md/plugins/normalize-whitespace.js.map +1 -0
  450. package/dist/md/plugins/remove-badges.d.ts +36 -0
  451. package/dist/md/plugins/remove-badges.d.ts.map +1 -0
  452. package/dist/md/plugins/remove-badges.js +59 -0
  453. package/dist/md/plugins/remove-badges.js.map +1 -0
  454. package/dist/md/plugins/remove-comments.d.ts +27 -0
  455. package/dist/md/plugins/remove-comments.d.ts.map +1 -0
  456. package/dist/md/plugins/remove-comments.js +40 -0
  457. package/dist/md/plugins/remove-comments.js.map +1 -0
  458. package/dist/md/plugins/remove-duplicates.d.ts +40 -0
  459. package/dist/md/plugins/remove-duplicates.d.ts.map +1 -0
  460. package/dist/md/plugins/remove-duplicates.js +72 -0
  461. package/dist/md/plugins/remove-duplicates.js.map +1 -0
  462. package/dist/md/plugins/remove-internal-links.d.ts +38 -0
  463. package/dist/md/plugins/remove-internal-links.d.ts.map +1 -0
  464. package/dist/md/plugins/remove-internal-links.js +66 -0
  465. package/dist/md/plugins/remove-internal-links.js.map +1 -0
  466. package/dist/md/plugins/strip-heading-numbers.d.ts +35 -0
  467. package/dist/md/plugins/strip-heading-numbers.d.ts.map +1 -0
  468. package/dist/md/plugins/strip-heading-numbers.js +59 -0
  469. package/dist/md/plugins/strip-heading-numbers.js.map +1 -0
  470. package/dist/md/plugins/strip-section-meta.d.ts +37 -0
  471. package/dist/md/plugins/strip-section-meta.d.ts.map +1 -0
  472. package/dist/md/plugins/strip-section-meta.js +62 -0
  473. package/dist/md/plugins/strip-section-meta.js.map +1 -0
  474. package/dist/md/types/config.d.ts +260 -0
  475. package/dist/md/types/config.d.ts.map +1 -0
  476. package/dist/md/types/config.js +156 -0
  477. package/dist/md/types/config.js.map +1 -0
  478. package/dist/md/types/document.d.ts +37 -0
  479. package/dist/md/types/document.d.ts.map +1 -0
  480. package/dist/md/types/document.js +2 -0
  481. package/dist/md/types/document.js.map +1 -0
  482. package/dist/md/types/validation.d.ts +107 -0
  483. package/dist/md/types/validation.d.ts.map +1 -0
  484. package/dist/md/types/validation.js +2 -0
  485. package/dist/md/types/validation.js.map +1 -0
  486. package/dist/md/utils/code-blocks.d.ts +136 -0
  487. package/dist/md/utils/code-blocks.d.ts.map +1 -0
  488. package/dist/md/utils/code-blocks.js +178 -0
  489. package/dist/md/utils/code-blocks.js.map +1 -0
  490. package/dist/md/utils/config.d.ts +10 -0
  491. package/dist/md/utils/config.d.ts.map +1 -0
  492. package/dist/md/utils/config.js +99 -0
  493. package/dist/md/utils/config.js.map +1 -0
  494. package/dist/md/utils/file-collector.d.ts +78 -0
  495. package/dist/md/utils/file-collector.d.ts.map +1 -0
  496. package/dist/md/utils/file-collector.js +100 -0
  497. package/dist/md/utils/file-collector.js.map +1 -0
  498. package/dist/md/utils/markdown.d.ts +18 -0
  499. package/dist/md/utils/markdown.d.ts.map +1 -0
  500. package/dist/md/utils/markdown.js +93 -0
  501. package/dist/md/utils/markdown.js.map +1 -0
  502. package/dist/md/utils/remark.d.ts +91 -0
  503. package/dist/md/utils/remark.d.ts.map +1 -0
  504. package/dist/md/utils/remark.js +125 -0
  505. package/dist/md/utils/remark.js.map +1 -0
  506. package/dist/md/utils/tokens.d.ts +9 -0
  507. package/dist/md/utils/tokens.d.ts.map +1 -0
  508. package/dist/md/utils/tokens.js +31 -0
  509. package/dist/md/utils/tokens.js.map +1 -0
  510. package/dist/md/validator/index.d.ts +40 -0
  511. package/dist/md/validator/index.d.ts.map +1 -0
  512. package/dist/md/validator/index.js +299 -0
  513. package/dist/md/validator/index.js.map +1 -0
  514. package/dist/parsers/details-jsdoc.d.ts +42 -0
  515. package/dist/parsers/details-jsdoc.d.ts.map +1 -0
  516. package/dist/parsers/details-jsdoc.js +256 -0
  517. package/dist/parsers/details-jsdoc.js.map +1 -0
  518. package/dist/parsers/details-zod.d.ts +22 -0
  519. package/dist/parsers/details-zod.d.ts.map +1 -0
  520. package/dist/parsers/details-zod.js +146 -0
  521. package/dist/parsers/details-zod.js.map +1 -0
  522. package/dist/parsers/drizzle-schema.d.ts +92 -0
  523. package/dist/parsers/drizzle-schema.d.ts.map +1 -0
  524. package/dist/parsers/drizzle-schema.js +376 -0
  525. package/dist/parsers/drizzle-schema.js.map +1 -0
  526. package/dist/parsers/feature-map-tags.d.ts +45 -0
  527. package/dist/parsers/feature-map-tags.d.ts.map +1 -0
  528. package/dist/parsers/feature-map-tags.js +292 -0
  529. package/dist/parsers/feature-map-tags.js.map +1 -0
  530. package/dist/parsers/feature-map-type-extraction.d.ts +62 -0
  531. package/dist/parsers/feature-map-type-extraction.d.ts.map +1 -0
  532. package/dist/parsers/feature-map-type-extraction.js +347 -0
  533. package/dist/parsers/feature-map-type-extraction.js.map +1 -0
  534. package/dist/parsers/feature-map-utils.d.ts +34 -0
  535. package/dist/parsers/feature-map-utils.d.ts.map +1 -0
  536. package/dist/parsers/feature-map-utils.js +101 -0
  537. package/dist/parsers/feature-map-utils.js.map +1 -0
  538. package/dist/parsers/jsdoc-common.d.ts +209 -0
  539. package/dist/parsers/jsdoc-common.d.ts.map +1 -0
  540. package/dist/parsers/jsdoc-common.js +650 -0
  541. package/dist/parsers/jsdoc-common.js.map +1 -0
  542. package/dist/parsers/jsdoc.d.ts +76 -0
  543. package/dist/parsers/jsdoc.d.ts.map +1 -0
  544. package/dist/parsers/jsdoc.js +238 -0
  545. package/dist/parsers/jsdoc.js.map +1 -0
  546. package/dist/parsers/screenshot-annotations.d.ts +96 -0
  547. package/dist/parsers/screenshot-annotations.d.ts.map +1 -0
  548. package/dist/parsers/screenshot-annotations.js +227 -0
  549. package/dist/parsers/screenshot-annotations.js.map +1 -0
  550. package/dist/parsers/test-annotations.d.ts +46 -0
  551. package/dist/parsers/test-annotations.d.ts.map +1 -0
  552. package/dist/parsers/test-annotations.js +393 -0
  553. package/dist/parsers/test-annotations.js.map +1 -0
  554. package/dist/parsers/test-categorization.d.ts +42 -0
  555. package/dist/parsers/test-categorization.d.ts.map +1 -0
  556. package/dist/parsers/test-categorization.js +182 -0
  557. package/dist/parsers/test-categorization.js.map +1 -0
  558. package/dist/parsers/zod-schema.d.ts +105 -0
  559. package/dist/parsers/zod-schema.d.ts.map +1 -0
  560. package/dist/parsers/zod-schema.js +271 -0
  561. package/dist/parsers/zod-schema.js.map +1 -0
  562. package/dist/utils/action-inference.d.ts +23 -0
  563. package/dist/utils/action-inference.d.ts.map +1 -0
  564. package/dist/utils/action-inference.js +36 -0
  565. package/dist/utils/action-inference.js.map +1 -0
  566. package/dist/utils/app-inference.d.ts +31 -0
  567. package/dist/utils/app-inference.d.ts.map +1 -0
  568. package/dist/utils/app-inference.js +41 -0
  569. package/dist/utils/app-inference.js.map +1 -0
  570. package/dist/utils/auto-infer.d.ts +93 -0
  571. package/dist/utils/auto-infer.d.ts.map +1 -0
  572. package/dist/utils/auto-infer.js +184 -0
  573. package/dist/utils/auto-infer.js.map +1 -0
  574. package/dist/utils/config.d.ts +709 -0
  575. package/dist/utils/config.d.ts.map +1 -0
  576. package/dist/utils/config.js +504 -0
  577. package/dist/utils/config.js.map +1 -0
  578. package/dist/utils/file.d.ts +46 -0
  579. package/dist/utils/file.d.ts.map +1 -0
  580. package/dist/utils/file.js +103 -0
  581. package/dist/utils/file.js.map +1 -0
  582. package/dist/utils/formatters.d.ts +123 -0
  583. package/dist/utils/formatters.d.ts.map +1 -0
  584. package/dist/utils/formatters.js +199 -0
  585. package/dist/utils/formatters.js.map +1 -0
  586. package/dist/utils/gh-config.d.ts +99 -0
  587. package/dist/utils/gh-config.d.ts.map +1 -0
  588. package/dist/utils/gh-config.js +247 -0
  589. package/dist/utils/gh-config.js.map +1 -0
  590. package/dist/utils/github.d.ts +108 -0
  591. package/dist/utils/github.d.ts.map +1 -0
  592. package/dist/utils/github.js +320 -0
  593. package/dist/utils/github.js.map +1 -0
  594. package/dist/utils/html.d.ts +107 -0
  595. package/dist/utils/html.d.ts.map +1 -0
  596. package/dist/utils/html.js +376 -0
  597. package/dist/utils/html.js.map +1 -0
  598. package/dist/utils/i18n.d.ts +40 -0
  599. package/dist/utils/i18n.d.ts.map +1 -0
  600. package/dist/utils/i18n.js +148 -0
  601. package/dist/utils/i18n.js.map +1 -0
  602. package/dist/utils/logger.d.ts +20 -0
  603. package/dist/utils/logger.d.ts.map +1 -0
  604. package/dist/utils/logger.js +49 -0
  605. package/dist/utils/logger.js.map +1 -0
  606. package/dist/utils/project-fields.d.ts +71 -0
  607. package/dist/utils/project-fields.d.ts.map +1 -0
  608. package/dist/utils/project-fields.js +318 -0
  609. package/dist/utils/project-fields.js.map +1 -0
  610. package/dist/utils/repo-pairs.d.ts +94 -0
  611. package/dist/utils/repo-pairs.d.ts.map +1 -0
  612. package/dist/utils/repo-pairs.js +196 -0
  613. package/dist/utils/repo-pairs.js.map +1 -0
  614. package/dist/utils/route-inference.d.ts +81 -0
  615. package/dist/utils/route-inference.d.ts.map +1 -0
  616. package/dist/utils/route-inference.js +137 -0
  617. package/dist/utils/route-inference.js.map +1 -0
  618. package/dist/utils/sanitize.d.ts +27 -0
  619. package/dist/utils/sanitize.d.ts.map +1 -0
  620. package/dist/utils/sanitize.js +38 -0
  621. package/dist/utils/sanitize.js.map +1 -0
  622. package/dist/utils/setup-check.d.ts +48 -0
  623. package/dist/utils/setup-check.d.ts.map +1 -0
  624. package/dist/utils/setup-check.js +226 -0
  625. package/dist/utils/setup-check.js.map +1 -0
  626. package/dist/utils/shirokumaignore.d.ts +55 -0
  627. package/dist/utils/shirokumaignore.d.ts.map +1 -0
  628. package/dist/utils/shirokumaignore.js +94 -0
  629. package/dist/utils/shirokumaignore.js.map +1 -0
  630. package/dist/utils/skills-repo.d.ts +353 -0
  631. package/dist/utils/skills-repo.d.ts.map +1 -0
  632. package/dist/utils/skills-repo.js +793 -0
  633. package/dist/utils/skills-repo.js.map +1 -0
  634. package/dist/utils/status-workflow.d.ts +54 -0
  635. package/dist/utils/status-workflow.d.ts.map +1 -0
  636. package/dist/utils/status-workflow.js +103 -0
  637. package/dist/utils/status-workflow.js.map +1 -0
  638. package/dist/validators/frontmatter.d.ts +41 -0
  639. package/dist/validators/frontmatter.d.ts.map +1 -0
  640. package/dist/validators/frontmatter.js +117 -0
  641. package/dist/validators/frontmatter.js.map +1 -0
  642. package/dist/validators/link-checker.d.ts +48 -0
  643. package/dist/validators/link-checker.d.ts.map +1 -0
  644. package/dist/validators/link-checker.js +108 -0
  645. package/dist/validators/link-checker.js.map +1 -0
  646. package/dist/validators/markdown-structure.d.ts +50 -0
  647. package/dist/validators/markdown-structure.d.ts.map +1 -0
  648. package/dist/validators/markdown-structure.js +253 -0
  649. package/dist/validators/markdown-structure.js.map +1 -0
  650. package/i18n/cli/en.json +164 -0
  651. package/i18n/cli/ja.json +164 -0
  652. package/i18n/discussion/en.json +191 -0
  653. package/i18n/discussion/ja.json +191 -0
  654. package/package.json +113 -0
  655. package/portal/app/api-tools/api-tools-client.tsx +411 -0
  656. package/portal/app/api-tools/api-tools-document.tsx +240 -0
  657. package/portal/app/api-tools/page.tsx +56 -0
  658. package/portal/app/api-tools/swagger-view.tsx +114 -0
  659. package/portal/app/apps/[appId]/[type]/[module]/[item]/item-tabs-client.tsx +71 -0
  660. package/portal/app/apps/[appId]/[type]/[module]/[item]/page.tsx +1422 -0
  661. package/portal/app/apps/[appId]/[type]/[module]/page.tsx +373 -0
  662. package/portal/app/apps/[appId]/feature-map/feature-map-app-document.tsx +298 -0
  663. package/portal/app/apps/[appId]/feature-map/page.tsx +224 -0
  664. package/portal/app/apps/[appId]/i18n/page.tsx +139 -0
  665. package/portal/app/apps/[appId]/test-cases/page.tsx +840 -0
  666. package/portal/app/apps/[appId]/tools/[tool]/page.tsx +351 -0
  667. package/portal/app/apps/[appId]/tools/api-tools-client.tsx +429 -0
  668. package/portal/app/apps/[appId]/tools/page.tsx +119 -0
  669. package/portal/app/db-schema/[db]/[table]/page.tsx +235 -0
  670. package/portal/app/db-schema/[db]/diagram/page.tsx +81 -0
  671. package/portal/app/db-schema/[db]/page.tsx +148 -0
  672. package/portal/app/db-schema/db-schema-document.tsx +100 -0
  673. package/portal/app/db-schema/diagram/client.tsx +211 -0
  674. package/portal/app/db-schema/diagram/page.tsx +20 -0
  675. package/portal/app/db-schema/page.tsx +145 -0
  676. package/portal/app/db-schema/table-detail-document.tsx +710 -0
  677. package/portal/app/db-schema/table-detail.tsx +747 -0
  678. package/portal/app/db-schema/table-list-document.tsx +224 -0
  679. package/portal/app/db-schema/table-list.tsx +247 -0
  680. package/portal/app/details/[type]/[module]/[item]/item-tabs-client.tsx +71 -0
  681. package/portal/app/details/[type]/[module]/[item]/page.tsx +1286 -0
  682. package/portal/app/details/[type]/[module]/page.tsx +884 -0
  683. package/portal/app/feature-map/feature-map-client.tsx +681 -0
  684. package/portal/app/feature-map/feature-map-document.tsx +313 -0
  685. package/portal/app/feature-map/page.tsx +438 -0
  686. package/portal/app/globals.css +205 -0
  687. package/portal/app/i18n/[...namespace]/page.tsx +190 -0
  688. package/portal/app/i18n/i18n-client.tsx +369 -0
  689. package/portal/app/i18n/page.tsx +339 -0
  690. package/portal/app/layout.tsx +37 -0
  691. package/portal/app/overview/page.tsx +65 -0
  692. package/portal/app/packages/[packageId]/page.tsx +201 -0
  693. package/portal/app/packages/page.tsx +148 -0
  694. package/portal/app/page.tsx +568 -0
  695. package/portal/app/test-cases/[file]/[line]/page.tsx +455 -0
  696. package/portal/app/test-cases/[file]/[line]/test-detail-document.tsx +335 -0
  697. package/portal/app/test-cases/[file]/page.tsx +323 -0
  698. package/portal/app/test-cases/[file]/test-file-document.tsx +335 -0
  699. package/portal/app/test-cases/page.tsx +546 -0
  700. package/portal/app/test-cases/test-cases-document.tsx +384 -0
  701. package/portal/components/code-block.tsx +57 -0
  702. package/portal/components/document/doc-params-table.tsx +71 -0
  703. package/portal/components/document/doc-section.tsx +133 -0
  704. package/portal/components/document/doc-table.tsx +119 -0
  705. package/portal/components/document/index.ts +9 -0
  706. package/portal/components/drawflow-er-diagram.tsx +607 -0
  707. package/portal/components/interactive-er-diagram.tsx +228 -0
  708. package/portal/components/layout/app-sidebar.tsx +490 -0
  709. package/portal/components/layout/er-sidebar.tsx +116 -0
  710. package/portal/components/layout/global-header.tsx +117 -0
  711. package/portal/components/layout/layout-content.tsx +48 -0
  712. package/portal/components/markdown-content.tsx +120 -0
  713. package/portal/components/mermaid-diagram.tsx +83 -0
  714. package/portal/components/reactflow-er-diagram.tsx +475 -0
  715. package/portal/components/search-dialog.tsx +268 -0
  716. package/portal/components/shared/coverage-score-bar.tsx +144 -0
  717. package/portal/components/swagger/endpoint-accordion.tsx +117 -0
  718. package/portal/components/swagger/index.ts +7 -0
  719. package/portal/components/swagger/method-badge.tsx +55 -0
  720. package/portal/components/swagger/params-table.tsx +78 -0
  721. package/portal/components/tabs-with-hash.tsx +43 -0
  722. package/portal/components/test/index.ts +2 -0
  723. package/portal/components/test/test-bdd-card.tsx +192 -0
  724. package/portal/components/test/test-matrix.tsx +242 -0
  725. package/portal/components/ui/accordion.tsx +66 -0
  726. package/portal/components/ui/badge.tsx +46 -0
  727. package/portal/components/ui/breadcrumb.tsx +109 -0
  728. package/portal/components/ui/button.tsx +62 -0
  729. package/portal/components/ui/card.tsx +92 -0
  730. package/portal/components/ui/collapsible.tsx +33 -0
  731. package/portal/components/ui/dialog.tsx +118 -0
  732. package/portal/components/ui/progress.tsx +28 -0
  733. package/portal/components/ui/scroll-area.tsx +58 -0
  734. package/portal/components/ui/sheet.tsx +139 -0
  735. package/portal/components/ui/table.tsx +116 -0
  736. package/portal/components/ui/tabs.tsx +66 -0
  737. package/portal/components.json +21 -0
  738. package/portal/lib/constants/test-categories.ts +186 -0
  739. package/portal/lib/data-loader.ts +1181 -0
  740. package/portal/lib/db-schema-utils.ts +182 -0
  741. package/portal/lib/format.ts +43 -0
  742. package/portal/lib/hooks/use-hash-tab.ts +144 -0
  743. package/portal/lib/path-utils.ts +25 -0
  744. package/portal/lib/search-index-generator.ts +214 -0
  745. package/portal/lib/search.ts +126 -0
  746. package/portal/lib/sidebar-context.tsx +111 -0
  747. package/portal/lib/types.ts +740 -0
  748. package/portal/lib/utils.ts +6 -0
  749. package/portal/next.config.ts +18 -0
  750. package/portal/package.json +45 -0
  751. package/portal/postcss.config.mjs +8 -0
  752. package/portal/tsconfig.json +42 -0
  753. package/portal/types/drawflow.d.ts +80 -0
  754. package/templates/README.md +73 -0
  755. package/templates/coverage.html +367 -0
  756. package/templates/dark-theme.css +443 -0
  757. package/templates/discussion/adr.yml.hbs +65 -0
  758. package/templates/discussion/handovers.yml.hbs +57 -0
  759. package/templates/discussion/knowledge.yml.hbs +60 -0
  760. package/templates/discussion/reports.yml.hbs +68 -0
  761. package/templates/discussion/research.yml.hbs +61 -0
@@ -0,0 +1,76 @@
1
+ /**
2
+ * JSDoc パーサー
3
+ *
4
+ * TypeScript ファイルから JSDoc コメントを解析し、カスタムタグを抽出する
5
+ */
6
+ /**
7
+ * エラーコード定義
8
+ */
9
+ export interface ErrorCode {
10
+ /** エラーコード(例: NOT_FOUND) */
11
+ code: string;
12
+ /** エラー説明 */
13
+ description: string;
14
+ /** HTTPステータスコード(例: 404) */
15
+ status: number;
16
+ }
17
+ /**
18
+ * 認証レベル
19
+ */
20
+ export type AuthLevel = "none" | "authenticated" | "member" | "admin";
21
+ /**
22
+ * JSDoc 解析結果
23
+ */
24
+ export interface JSDocInfo {
25
+ /** 関数/変数名 */
26
+ name: string;
27
+ /** JSDoc コメント全体 */
28
+ raw: string;
29
+ /** 説明文 */
30
+ description: string;
31
+ /** 検出されたタグ一覧 */
32
+ tags: string[];
33
+ /** 入力スキーマ名(Zod スキーマ) */
34
+ inputSchema?: string;
35
+ /** 出力スキーマ名(戻り値型) */
36
+ outputSchema?: string;
37
+ /** 認証レベル */
38
+ authLevel?: AuthLevel;
39
+ /** レートリミット(例: "10/hour") */
40
+ rateLimit?: string;
41
+ /** エラーコード定義 */
42
+ errorCodes?: ErrorCode[];
43
+ /** @param タグ */
44
+ params?: Array<{
45
+ name: string;
46
+ description: string;
47
+ type?: string;
48
+ }>;
49
+ /** @returns タグ */
50
+ returns?: string;
51
+ /** @throws タグ */
52
+ throws?: string[];
53
+ }
54
+ /**
55
+ * JSDoc コメントを解析
56
+ *
57
+ * @param jsdocBlock - JSDoc コメント文字列
58
+ * @param name - 関数/変数名
59
+ * @returns 解析結果
60
+ */
61
+ export declare function parseJSDoc(jsdocBlock: string, name: string): JSDocInfo;
62
+ /**
63
+ * タグ一覧を抽出
64
+ *
65
+ * @param jsdocBlock - JSDoc コメント文字列
66
+ * @returns タグ配列(重複なし)
67
+ */
68
+ export declare function extractTags(jsdocBlock: string): string[];
69
+ /**
70
+ * ファイル全体から JSDoc を抽出
71
+ *
72
+ * @param content - ファイルの内容
73
+ * @returns JSDoc 情報の配列
74
+ */
75
+ export declare function extractJSDocsFromFile(content: string): JSDocInfo[];
76
+ //# sourceMappingURL=jsdoc.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsdoc.d.ts","sourceRoot":"","sources":["../../src/parsers/jsdoc.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,2BAA2B;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,YAAY;IACZ,WAAW,EAAE,MAAM,CAAC;IACpB,2BAA2B;IAC3B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,eAAe,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtE;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,aAAa;IACb,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU;IACV,WAAW,EAAE,MAAM,CAAC;IACpB,gBAAgB;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IAGf,wBAAwB;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oBAAoB;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY;IACZ,SAAS,CAAC,EAAE,SAAS,CAAC;IACtB,4BAA4B;IAC5B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,eAAe;IACf,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC;IAGzB,gBAAgB;IAChB,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IACrE,kBAAkB;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,iBAAiB;IACjB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,CAyCtE;AAqBD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM,EAAE,CAUxD;AA8KD;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,EAAE,CAmBlE"}
@@ -0,0 +1,238 @@
1
+ /**
2
+ * JSDoc パーサー
3
+ *
4
+ * TypeScript ファイルから JSDoc コメントを解析し、カスタムタグを抽出する
5
+ */
6
+ /**
7
+ * JSDoc コメントを解析
8
+ *
9
+ * @param jsdocBlock - JSDoc コメント文字列
10
+ * @param name - 関数/変数名
11
+ * @returns 解析結果
12
+ */
13
+ export function parseJSDoc(jsdocBlock, name) {
14
+ // コメント本体を抽出(/** と */ を除去)
15
+ const cleaned = jsdocBlock.replace(/^\/\*\*\s*/, "").replace(/\s*\*\/$/, "");
16
+ // 行ごとに分割して * を除去
17
+ const lines = cleaned
18
+ .split("\n")
19
+ .map((line) => line.replace(/^\s*\*\s?/, "").trimEnd());
20
+ // 説明文を抽出(最初のタグまで)
21
+ const description = extractDescription(lines);
22
+ // タグを抽出
23
+ const tags = extractTags(jsdocBlock);
24
+ // 各タグの値を抽出
25
+ const inputSchema = extractTagValue(jsdocBlock, "inputSchema");
26
+ const outputSchema = extractTagValue(jsdocBlock, "outputSchema");
27
+ const authLevel = extractAuthLevel(jsdocBlock);
28
+ const rateLimit = extractTagValue(jsdocBlock, "rateLimit");
29
+ const errorCodes = extractErrorCodes(jsdocBlock);
30
+ // 従来のタグ
31
+ const params = extractParams(jsdocBlock);
32
+ const returns = extractTagValue(jsdocBlock, "returns");
33
+ const throws = extractThrows(jsdocBlock);
34
+ return {
35
+ name,
36
+ raw: jsdocBlock,
37
+ description,
38
+ tags,
39
+ inputSchema,
40
+ outputSchema,
41
+ authLevel,
42
+ rateLimit,
43
+ errorCodes,
44
+ params,
45
+ returns,
46
+ throws,
47
+ };
48
+ }
49
+ /**
50
+ * 説明文を抽出(最初のタグまで)
51
+ *
52
+ * @param lines - JSDoc の行配列
53
+ * @returns 説明文
54
+ */
55
+ function extractDescription(lines) {
56
+ const descriptionLines = [];
57
+ for (const line of lines) {
58
+ if (line.startsWith("@")) {
59
+ break; // 最初のタグで終了
60
+ }
61
+ descriptionLines.push(line);
62
+ }
63
+ return descriptionLines.join("\n").trim();
64
+ }
65
+ /**
66
+ * タグ一覧を抽出
67
+ *
68
+ * @param jsdocBlock - JSDoc コメント文字列
69
+ * @returns タグ配列(重複なし)
70
+ */
71
+ export function extractTags(jsdocBlock) {
72
+ const tags = [];
73
+ const tagRegex = /@(\w+)/g;
74
+ let match;
75
+ while ((match = tagRegex.exec(jsdocBlock)) !== null) {
76
+ tags.push(`@${match[1]}`);
77
+ }
78
+ return [...new Set(tags)];
79
+ }
80
+ /**
81
+ * タグの値を抽出(単一行)
82
+ *
83
+ * @param jsdocBlock - JSDoc コメント文字列
84
+ * @param tagName - タグ名(@ なし)
85
+ * @returns タグの値(存在しない場合は undefined)
86
+ */
87
+ function extractTagValue(jsdocBlock, tagName) {
88
+ const regex = new RegExp(`@${tagName}\\s+(.+?)(?=\\n|\\*\\/|$)`, "s");
89
+ const match = regex.exec(jsdocBlock);
90
+ if (!match) {
91
+ return undefined;
92
+ }
93
+ // 複数行にまたがる場合、* を除去してトリム
94
+ return match[1]
95
+ .split("\n")
96
+ .map((line) => line.replace(/^\s*\*\s?/, "").trim())
97
+ .filter((line) => line.length > 0)
98
+ .join(" ")
99
+ .trim();
100
+ }
101
+ /**
102
+ * 認証レベルを抽出
103
+ *
104
+ * @param jsdocBlock - JSDoc コメント文字列
105
+ * @returns 認証レベル(存在しない場合は undefined)
106
+ */
107
+ function extractAuthLevel(jsdocBlock) {
108
+ const value = extractTagValue(jsdocBlock, "authLevel");
109
+ if (!value) {
110
+ return undefined;
111
+ }
112
+ const validLevels = ["none", "authenticated", "member", "admin"];
113
+ const normalized = value.toLowerCase().trim();
114
+ if (validLevels.includes(normalized)) {
115
+ return normalized;
116
+ }
117
+ // 不正な値の場合は undefined
118
+ return undefined;
119
+ }
120
+ /**
121
+ * @errorCodes タグを解析
122
+ *
123
+ * 形式:
124
+ * @errorCodes
125
+ * - NOT_FOUND: エンティティが存在しない (404)
126
+ * - VALIDATION_ERROR: バリデーション失敗 (400)
127
+ *
128
+ * @param jsdocBlock - JSDoc コメント文字列
129
+ * @returns エラーコード配列
130
+ */
131
+ function extractErrorCodes(jsdocBlock) {
132
+ // @errorCodes タグの後の行を抽出(次のタグまたはコメント終了まで)
133
+ const regex = /@errorCodes\s*([\s\S]*?)(?=@\w+|\*\/)/;
134
+ const match = regex.exec(jsdocBlock);
135
+ if (!match) {
136
+ return undefined;
137
+ }
138
+ const errorCodesText = match[1];
139
+ const errorCodes = [];
140
+ // 各行を解析: " - CODE: Description (status)"
141
+ // * を除去してから解析
142
+ const lines = errorCodesText.split("\n");
143
+ const lineRegex = /^\s*\*?\s*-\s*([A-Z_]+):\s*(.+?)\s*\((\d{3})\)\s*$/;
144
+ for (const line of lines) {
145
+ const lineMatch = lineRegex.exec(line);
146
+ if (lineMatch) {
147
+ const code = lineMatch[1];
148
+ const description = lineMatch[2].trim();
149
+ const status = parseInt(lineMatch[3], 10);
150
+ errorCodes.push({ code, description, status });
151
+ }
152
+ }
153
+ return errorCodes.length > 0 ? errorCodes : undefined;
154
+ }
155
+ /**
156
+ * @param タグを抽出
157
+ *
158
+ * @param jsdocBlock - JSDoc コメント文字列
159
+ * @returns パラメータ配列
160
+ */
161
+ function extractParams(jsdocBlock) {
162
+ const params = [];
163
+ // 行ごとに分割して @param を探す
164
+ const lines = jsdocBlock.split("\n");
165
+ for (let i = 0; i < lines.length; i++) {
166
+ const line = lines[i];
167
+ const paramMatch = /@param\s+(?:\{([^}]+)\}\s+)?(\w+)\s*-?\s*(.*)/.exec(line);
168
+ if (paramMatch) {
169
+ const type = paramMatch[1]?.trim();
170
+ const name = paramMatch[2].trim();
171
+ let description = paramMatch[3].trim();
172
+ // 次の行が @タグでない場合は継続
173
+ let j = i + 1;
174
+ while (j < lines.length) {
175
+ const nextLine = lines[j].replace(/^\s*\*\s?/, "").trim();
176
+ if (nextLine.startsWith("@") || nextLine === "" || nextLine === "/") {
177
+ break;
178
+ }
179
+ description += " " + nextLine;
180
+ j++;
181
+ }
182
+ params.push({ name, description: description.trim(), type });
183
+ }
184
+ }
185
+ return params.length > 0 ? params : undefined;
186
+ }
187
+ /**
188
+ * @throws タグを抽出
189
+ *
190
+ * @param jsdocBlock - JSDoc コメント文字列
191
+ * @returns エラー説明配列
192
+ */
193
+ function extractThrows(jsdocBlock) {
194
+ const throws = [];
195
+ // 行ごとに分割して @throws を探す
196
+ const lines = jsdocBlock.split("\n");
197
+ for (let i = 0; i < lines.length; i++) {
198
+ const line = lines[i];
199
+ const throwsMatch = /@throws\s+(?:\{[^}]+\}\s+)?(.*)/.exec(line);
200
+ if (throwsMatch) {
201
+ let description = throwsMatch[1].trim();
202
+ // 次の行が @タグでない場合は継続
203
+ let j = i + 1;
204
+ while (j < lines.length) {
205
+ const nextLine = lines[j].replace(/^\s*\*\s?/, "").trim();
206
+ if (nextLine.startsWith("@") || nextLine === "" || nextLine === "/") {
207
+ break;
208
+ }
209
+ description += " " + nextLine;
210
+ j++;
211
+ }
212
+ throws.push(description.trim());
213
+ }
214
+ }
215
+ return throws.length > 0 ? throws : undefined;
216
+ }
217
+ /**
218
+ * ファイル全体から JSDoc を抽出
219
+ *
220
+ * @param content - ファイルの内容
221
+ * @returns JSDoc 情報の配列
222
+ */
223
+ export function extractJSDocsFromFile(content) {
224
+ const results = [];
225
+ // export async function または export function を検出
226
+ const functionRegex = /(?:(\/\*\*[\s\S]*?\*\/)\s*)?export\s+(?:async\s+)?function\s+(\w+)\s*\(/g;
227
+ let match;
228
+ while ((match = functionRegex.exec(content)) !== null) {
229
+ const jsdocBlock = match[1];
230
+ const functionName = match[2];
231
+ if (jsdocBlock) {
232
+ const jsDocInfo = parseJSDoc(jsdocBlock, functionName);
233
+ results.push(jsDocInfo);
234
+ }
235
+ }
236
+ return results;
237
+ }
238
+ //# sourceMappingURL=jsdoc.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jsdoc.js","sourceRoot":"","sources":["../../src/parsers/jsdoc.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Screenshot Annotations Parser
3
+ *
4
+ * Parses @screenshot annotations from page.tsx files to identify
5
+ * pages that should be included in screenshot generation.
6
+ *
7
+ * Supported annotations:
8
+ * - @screenshot - Marks page for screenshot (required)
9
+ * - @screenshot-viewport - Custom viewport size (e.g., "1920x1080")
10
+ * - @screenshot-auth - Auth requirement: "required" | "none" | "optional"
11
+ * - @screenshot-waitFor - Wait condition: "networkidle" | "domcontentloaded" | "load"
12
+ * - @screenshot-delay - Delay in ms after page load
13
+ * - @screenshotWaitFor - CSS selector(s) to wait for before screenshot (multiple allowed)
14
+ * - @screenshotAccount - Account name(s) for multi-account screenshots (comma-separated)
15
+ *
16
+ * @module parsers/screenshot-annotations
17
+ */
18
+ /**
19
+ * Screenshot annotation data extracted from page.tsx
20
+ */
21
+ export interface ScreenshotAnnotation {
22
+ /** Screen name (from @screen or inferred from file path) */
23
+ name: string;
24
+ /** File path where annotation was found */
25
+ filePath: string;
26
+ /** Whether screenshot is enabled */
27
+ enabled: boolean;
28
+ /** Optional viewport size */
29
+ viewport?: {
30
+ width: number;
31
+ height: number;
32
+ };
33
+ /** Auth requirement */
34
+ auth?: "required" | "none" | "optional";
35
+ /** Wait condition (networkidle, domcontentloaded, load) */
36
+ waitFor?: string;
37
+ /** Delay in ms */
38
+ delay?: number;
39
+ /** Description from JSDoc */
40
+ description?: string;
41
+ /** Explicit route from @route annotation */
42
+ route?: string;
43
+ /** CSS selectors to wait for before taking screenshot */
44
+ waitForSelectors?: string[];
45
+ /** Account names to use for screenshot (for multi-account support) */
46
+ accounts?: string[];
47
+ }
48
+ /**
49
+ * Parse screenshot annotations from file content.
50
+ *
51
+ * Searches for JSDoc blocks containing @screenshot and extracts
52
+ * all related annotation values.
53
+ *
54
+ * @param content - File content to parse
55
+ * @param filePath - File path for reference and screen name inference
56
+ * @returns ScreenshotAnnotation if @screenshot found, null otherwise
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * const content = `
61
+ * /**
62
+ * * Dashboard Page
63
+ * * @screen DashboardScreen
64
+ * * @screenshot
65
+ * * @screenshot-viewport 1280x720
66
+ * * /
67
+ * export default function Page() {}
68
+ * `;
69
+ * const result = parseScreenshotAnnotations(content, "apps/web/app/page.tsx");
70
+ * // Returns: { name: "DashboardScreen", enabled: true, viewport: { width: 1280, height: 720 }, ... }
71
+ * ```
72
+ */
73
+ export declare function parseScreenshotAnnotations(content: string, filePath: string): ScreenshotAnnotation | null;
74
+ /**
75
+ * Scan multiple files for screenshot annotations.
76
+ *
77
+ * Convenience function to process multiple files and collect
78
+ * all screenshot annotations.
79
+ *
80
+ * @param files - Array of file objects with content and path
81
+ * @returns Array of ScreenshotAnnotation from files with @screenshot
82
+ *
83
+ * @example
84
+ * ```typescript
85
+ * const files = [
86
+ * { path: "apps/web/app/page.tsx", content: "..." },
87
+ * { path: "apps/web/app/about/page.tsx", content: "..." },
88
+ * ];
89
+ * const annotations = scanFilesForScreenshots(files);
90
+ * ```
91
+ */
92
+ export declare function scanFilesForScreenshots(files: Array<{
93
+ content: string;
94
+ path: string;
95
+ }>): ScreenshotAnnotation[];
96
+ //# sourceMappingURL=screenshot-annotations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot-annotations.d.ts","sourceRoot":"","sources":["../../src/parsers/screenshot-annotations.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAIH;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,4DAA4D;IAC5D,IAAI,EAAE,MAAM,CAAC;IACb,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,OAAO,EAAE,OAAO,CAAC;IACjB,6BAA6B;IAC7B,QAAQ,CAAC,EAAE;QACT,KAAK,EAAE,MAAM,CAAC;QACd,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,uBAAuB;IACvB,IAAI,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,UAAU,CAAC;IACxC,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,6BAA6B;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,4CAA4C;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,0BAA0B,CACxC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,GACf,oBAAoB,GAAG,IAAI,CA+F7B;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,KAAK,CAAC;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,GAC9C,oBAAoB,EAAE,CAWxB"}
@@ -0,0 +1,227 @@
1
+ /**
2
+ * Screenshot Annotations Parser
3
+ *
4
+ * Parses @screenshot annotations from page.tsx files to identify
5
+ * pages that should be included in screenshot generation.
6
+ *
7
+ * Supported annotations:
8
+ * - @screenshot - Marks page for screenshot (required)
9
+ * - @screenshot-viewport - Custom viewport size (e.g., "1920x1080")
10
+ * - @screenshot-auth - Auth requirement: "required" | "none" | "optional"
11
+ * - @screenshot-waitFor - Wait condition: "networkidle" | "domcontentloaded" | "load"
12
+ * - @screenshot-delay - Delay in ms after page load
13
+ * - @screenshotWaitFor - CSS selector(s) to wait for before screenshot (multiple allowed)
14
+ * - @screenshotAccount - Account name(s) for multi-account screenshots (comma-separated)
15
+ *
16
+ * @module parsers/screenshot-annotations
17
+ */
18
+ import { inferScreenNameFromPath } from "../utils/route-inference.js";
19
+ /**
20
+ * Parse screenshot annotations from file content.
21
+ *
22
+ * Searches for JSDoc blocks containing @screenshot and extracts
23
+ * all related annotation values.
24
+ *
25
+ * @param content - File content to parse
26
+ * @param filePath - File path for reference and screen name inference
27
+ * @returns ScreenshotAnnotation if @screenshot found, null otherwise
28
+ *
29
+ * @example
30
+ * ```typescript
31
+ * const content = `
32
+ * /**
33
+ * * Dashboard Page
34
+ * * @screen DashboardScreen
35
+ * * @screenshot
36
+ * * @screenshot-viewport 1280x720
37
+ * * /
38
+ * export default function Page() {}
39
+ * `;
40
+ * const result = parseScreenshotAnnotations(content, "apps/web/app/page.tsx");
41
+ * // Returns: { name: "DashboardScreen", enabled: true, viewport: { width: 1280, height: 720 }, ... }
42
+ * ```
43
+ */
44
+ export function parseScreenshotAnnotations(content, filePath) {
45
+ // Find JSDoc blocks containing @screenshot
46
+ const jsdocRegex = /\/\*\*[\s\S]*?\*\//g;
47
+ const matches = content.matchAll(jsdocRegex);
48
+ for (const match of matches) {
49
+ const jsdocBlock = match[0];
50
+ // Check if this block contains @screenshot
51
+ if (!jsdocBlock.includes("@screenshot")) {
52
+ continue;
53
+ }
54
+ // Check for standalone @screenshot (not @screenshot-*)
55
+ if (!/@screenshot(?!\s*-)/m.test(jsdocBlock)) {
56
+ continue;
57
+ }
58
+ // Extract tags
59
+ const { single: tags, multi: multiTags } = extractTags(jsdocBlock);
60
+ // Get screen name from @screen or infer from file path
61
+ const name = tags.screen || inferScreenNameFromPath(filePath);
62
+ // Build annotation object
63
+ const annotation = {
64
+ name,
65
+ filePath,
66
+ enabled: true,
67
+ };
68
+ // Parse @screenshot-viewport (format: WIDTHxHEIGHT)
69
+ if (tags["screenshot-viewport"]) {
70
+ const viewportMatch = tags["screenshot-viewport"].match(/^(\d+)x(\d+)$/);
71
+ if (viewportMatch) {
72
+ annotation.viewport = {
73
+ width: parseInt(viewportMatch[1], 10),
74
+ height: parseInt(viewportMatch[2], 10),
75
+ };
76
+ }
77
+ }
78
+ // Parse @screenshot-auth
79
+ if (tags["screenshot-auth"]) {
80
+ const authValue = tags["screenshot-auth"];
81
+ if (authValue === "required" || authValue === "none" || authValue === "optional") {
82
+ annotation.auth = authValue;
83
+ }
84
+ }
85
+ // Parse @screenshot-waitFor (page load condition)
86
+ if (tags["screenshot-waitFor"]) {
87
+ annotation.waitFor = tags["screenshot-waitFor"];
88
+ }
89
+ // Parse @screenshotWaitFor (CSS selectors to wait for - multiple allowed)
90
+ if (multiTags["screenshotWaitFor"] && multiTags["screenshotWaitFor"].length > 0) {
91
+ annotation.waitForSelectors = multiTags["screenshotWaitFor"];
92
+ }
93
+ // Parse @screenshotAccount (comma-separated account names)
94
+ if (tags["screenshotAccount"]) {
95
+ const accountsValue = tags["screenshotAccount"];
96
+ const accounts = accountsValue
97
+ .split(",")
98
+ .map((a) => a.trim())
99
+ .filter((a) => a.length > 0);
100
+ if (accounts.length > 0) {
101
+ annotation.accounts = accounts;
102
+ }
103
+ }
104
+ // Parse @screenshot-delay
105
+ if (tags["screenshot-delay"]) {
106
+ const delay = parseInt(tags["screenshot-delay"], 10);
107
+ if (!isNaN(delay)) {
108
+ annotation.delay = delay;
109
+ }
110
+ }
111
+ // Extract description
112
+ const description = extractDescription(jsdocBlock);
113
+ if (description) {
114
+ annotation.description = description;
115
+ }
116
+ // Extract @route
117
+ if (tags.route) {
118
+ annotation.route = tags.route;
119
+ }
120
+ return annotation;
121
+ }
122
+ return null;
123
+ }
124
+ /**
125
+ * Scan multiple files for screenshot annotations.
126
+ *
127
+ * Convenience function to process multiple files and collect
128
+ * all screenshot annotations.
129
+ *
130
+ * @param files - Array of file objects with content and path
131
+ * @returns Array of ScreenshotAnnotation from files with @screenshot
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * const files = [
136
+ * { path: "apps/web/app/page.tsx", content: "..." },
137
+ * { path: "apps/web/app/about/page.tsx", content: "..." },
138
+ * ];
139
+ * const annotations = scanFilesForScreenshots(files);
140
+ * ```
141
+ */
142
+ export function scanFilesForScreenshots(files) {
143
+ const results = [];
144
+ for (const file of files) {
145
+ const annotation = parseScreenshotAnnotations(file.content, file.path);
146
+ if (annotation) {
147
+ results.push(annotation);
148
+ }
149
+ }
150
+ return results;
151
+ }
152
+ /**
153
+ * Extract JSDoc tags from a JSDoc block.
154
+ *
155
+ * @param jsdocBlock - JSDoc comment block
156
+ * @returns Object containing single-value tags and array-value tags
157
+ */
158
+ function extractTags(jsdocBlock) {
159
+ const single = {};
160
+ const multi = {};
161
+ const lines = jsdocBlock.split("\n");
162
+ for (const line of lines) {
163
+ // Match @tag value pattern
164
+ const tagMatch = line.match(/@([\w-]+)(?:\s+(.+?))?(?:\s*\*\/|\s*$)/);
165
+ if (tagMatch) {
166
+ const [, tag, value] = tagMatch;
167
+ // Handle standalone @screenshot marker
168
+ if (tag === "screenshot" && !value) {
169
+ single[tag] = "";
170
+ }
171
+ else if (value) {
172
+ // Tags that support multiple values
173
+ if (tag === "screenshotWaitFor") {
174
+ if (!multi[tag]) {
175
+ multi[tag] = [];
176
+ }
177
+ multi[tag].push(value.trim());
178
+ }
179
+ else {
180
+ single[tag] = value.trim();
181
+ }
182
+ }
183
+ }
184
+ }
185
+ return { single, multi };
186
+ }
187
+ /**
188
+ * Extract description from JSDoc block (non-tag lines).
189
+ *
190
+ * Preserves paragraph structure by keeping empty lines between text blocks.
191
+ *
192
+ * @param jsdocBlock - JSDoc comment block
193
+ * @returns Description text or undefined
194
+ */
195
+ function extractDescription(jsdocBlock) {
196
+ const lines = jsdocBlock.split("\n");
197
+ const descLines = [];
198
+ let foundContent = false;
199
+ for (const line of lines) {
200
+ // Remove JSDoc prefix (* )
201
+ const trimmed = line.replace(/^\s*\*\s?/, "").trim();
202
+ // Skip JSDoc start/end
203
+ if (trimmed.startsWith("/**") || trimmed.startsWith("*/") || trimmed === "/") {
204
+ continue;
205
+ }
206
+ // Stop at first tag
207
+ if (trimmed.startsWith("@")) {
208
+ break;
209
+ }
210
+ // Handle empty lines - keep them to preserve paragraph structure
211
+ // but only after we've found some content
212
+ if (trimmed === "") {
213
+ if (foundContent) {
214
+ descLines.push("");
215
+ }
216
+ continue;
217
+ }
218
+ foundContent = true;
219
+ descLines.push(trimmed);
220
+ }
221
+ // Remove trailing empty lines
222
+ while (descLines.length > 0 && descLines[descLines.length - 1] === "") {
223
+ descLines.pop();
224
+ }
225
+ return descLines.length > 0 ? descLines.join("\n") : undefined;
226
+ }
227
+ //# sourceMappingURL=screenshot-annotations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"screenshot-annotations.js","sourceRoot":"","sources":["../../src/parsers/screenshot-annotations.ts"],"names":[],"mappings":"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"}