@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.
- package/LICENSE +21 -0
- package/README.en.md +346 -0
- package/README.md +346 -0
- package/THIRD_PARTY_NOTICES.md +18 -0
- package/bin/shirokuma-docs +2 -0
- package/dist/analyzers/details-test-analysis.d.ts +31 -0
- package/dist/analyzers/details-test-analysis.d.ts.map +1 -0
- package/dist/analyzers/details-test-analysis.js +174 -0
- package/dist/analyzers/details-test-analysis.js.map +1 -0
- package/dist/analyzers/feature-map-builder.d.ts +20 -0
- package/dist/analyzers/feature-map-builder.d.ts.map +1 -0
- package/dist/analyzers/feature-map-builder.js +154 -0
- package/dist/analyzers/feature-map-builder.js.map +1 -0
- package/dist/analyzers/feature-map-references.d.ts +34 -0
- package/dist/analyzers/feature-map-references.d.ts.map +1 -0
- package/dist/analyzers/feature-map-references.js +249 -0
- package/dist/analyzers/feature-map-references.js.map +1 -0
- package/dist/analyzers/reference-analyzer.d.ts +95 -0
- package/dist/analyzers/reference-analyzer.d.ts.map +1 -0
- package/dist/analyzers/reference-analyzer.js +372 -0
- package/dist/analyzers/reference-analyzer.js.map +1 -0
- package/dist/commands/adr.d.ts +26 -0
- package/dist/commands/adr.d.ts.map +1 -0
- package/dist/commands/adr.js +129 -0
- package/dist/commands/adr.js.map +1 -0
- package/dist/commands/api-tools.d.ts +83 -0
- package/dist/commands/api-tools.d.ts.map +1 -0
- package/dist/commands/api-tools.js +775 -0
- package/dist/commands/api-tools.js.map +1 -0
- package/dist/commands/coverage.d.ts +139 -0
- package/dist/commands/coverage.d.ts.map +1 -0
- package/dist/commands/coverage.js +481 -0
- package/dist/commands/coverage.js.map +1 -0
- package/dist/commands/deps.d.ts +24 -0
- package/dist/commands/deps.d.ts.map +1 -0
- package/dist/commands/deps.js +211 -0
- package/dist/commands/deps.js.map +1 -0
- package/dist/commands/details-context.d.ts +38 -0
- package/dist/commands/details-context.d.ts.map +1 -0
- package/dist/commands/details-context.js +195 -0
- package/dist/commands/details-context.js.map +1 -0
- package/dist/commands/details-types.d.ts +315 -0
- package/dist/commands/details-types.d.ts.map +1 -0
- package/dist/commands/details-types.js +7 -0
- package/dist/commands/details-types.js.map +1 -0
- package/dist/commands/details.d.ts +24 -0
- package/dist/commands/details.d.ts.map +1 -0
- package/dist/commands/details.js +299 -0
- package/dist/commands/details.js.map +1 -0
- package/dist/commands/discussion-templates.d.ts +26 -0
- package/dist/commands/discussion-templates.d.ts.map +1 -0
- package/dist/commands/discussion-templates.js +270 -0
- package/dist/commands/discussion-templates.js.map +1 -0
- package/dist/commands/discussions.d.ts +31 -0
- package/dist/commands/discussions.d.ts.map +1 -0
- package/dist/commands/discussions.js +744 -0
- package/dist/commands/discussions.js.map +1 -0
- package/dist/commands/feature-map-types.d.ts +294 -0
- package/dist/commands/feature-map-types.d.ts.map +1 -0
- package/dist/commands/feature-map-types.js +8 -0
- package/dist/commands/feature-map-types.js.map +1 -0
- package/dist/commands/feature-map.d.ts +30 -0
- package/dist/commands/feature-map.d.ts.map +1 -0
- package/dist/commands/feature-map.js +137 -0
- package/dist/commands/feature-map.js.map +1 -0
- package/dist/commands/generate.d.ts +16 -0
- package/dist/commands/generate.d.ts.map +1 -0
- package/dist/commands/generate.js +88 -0
- package/dist/commands/generate.js.map +1 -0
- package/dist/commands/gh-discussions.d.ts +31 -0
- package/dist/commands/gh-discussions.d.ts.map +1 -0
- package/dist/commands/gh-discussions.js +743 -0
- package/dist/commands/gh-discussions.js.map +1 -0
- package/dist/commands/gh-issues-pr.d.ts +74 -0
- package/dist/commands/gh-issues-pr.d.ts.map +1 -0
- package/dist/commands/gh-issues-pr.js +417 -0
- package/dist/commands/gh-issues-pr.js.map +1 -0
- package/dist/commands/gh-issues.d.ts +90 -0
- package/dist/commands/gh-issues.d.ts.map +1 -0
- package/dist/commands/gh-issues.js +1297 -0
- package/dist/commands/gh-issues.js.map +1 -0
- package/dist/commands/gh-projects.d.ts +54 -0
- package/dist/commands/gh-projects.d.ts.map +1 -0
- package/dist/commands/gh-projects.js +966 -0
- package/dist/commands/gh-projects.js.map +1 -0
- package/dist/commands/gh-repo.d.ts +18 -0
- package/dist/commands/gh-repo.d.ts.map +1 -0
- package/dist/commands/gh-repo.js +253 -0
- package/dist/commands/gh-repo.js.map +1 -0
- package/dist/commands/github-data.d.ts +67 -0
- package/dist/commands/github-data.d.ts.map +1 -0
- package/dist/commands/github-data.js +361 -0
- package/dist/commands/github-data.js.map +1 -0
- package/dist/commands/i18n.d.ts +102 -0
- package/dist/commands/i18n.d.ts.map +1 -0
- package/dist/commands/i18n.js +829 -0
- package/dist/commands/i18n.js.map +1 -0
- package/dist/commands/impact.d.ts +14 -0
- package/dist/commands/impact.d.ts.map +1 -0
- package/dist/commands/impact.js +263 -0
- package/dist/commands/impact.js.map +1 -0
- package/dist/commands/init.d.ts +53 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +468 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/issues-pr.d.ts +83 -0
- package/dist/commands/issues-pr.d.ts.map +1 -0
- package/dist/commands/issues-pr.js +572 -0
- package/dist/commands/issues-pr.js.map +1 -0
- package/dist/commands/issues.d.ts +78 -0
- package/dist/commands/issues.d.ts.map +1 -0
- package/dist/commands/issues.js +1541 -0
- package/dist/commands/issues.js.map +1 -0
- package/dist/commands/link-docs.d.ts +21 -0
- package/dist/commands/link-docs.d.ts.map +1 -0
- package/dist/commands/link-docs.js +990 -0
- package/dist/commands/link-docs.js.map +1 -0
- package/dist/commands/lint-annotations.d.ts +28 -0
- package/dist/commands/lint-annotations.d.ts.map +1 -0
- package/dist/commands/lint-annotations.js +511 -0
- package/dist/commands/lint-annotations.js.map +1 -0
- package/dist/commands/lint-code.d.ts +26 -0
- package/dist/commands/lint-code.d.ts.map +1 -0
- package/dist/commands/lint-code.js +428 -0
- package/dist/commands/lint-code.js.map +1 -0
- package/dist/commands/lint-coverage.d.ts +33 -0
- package/dist/commands/lint-coverage.d.ts.map +1 -0
- package/dist/commands/lint-coverage.js +379 -0
- package/dist/commands/lint-coverage.js.map +1 -0
- package/dist/commands/lint-docs.d.ts +23 -0
- package/dist/commands/lint-docs.d.ts.map +1 -0
- package/dist/commands/lint-docs.js +338 -0
- package/dist/commands/lint-docs.js.map +1 -0
- package/dist/commands/lint-structure.d.ts +38 -0
- package/dist/commands/lint-structure.d.ts.map +1 -0
- package/dist/commands/lint-structure.js +350 -0
- package/dist/commands/lint-structure.js.map +1 -0
- package/dist/commands/lint-tests.d.ts +25 -0
- package/dist/commands/lint-tests.d.ts.map +1 -0
- package/dist/commands/lint-tests.js +105 -0
- package/dist/commands/lint-tests.js.map +1 -0
- package/dist/commands/lint-workflow.d.ts +36 -0
- package/dist/commands/lint-workflow.d.ts.map +1 -0
- package/dist/commands/lint-workflow.js +255 -0
- package/dist/commands/lint-workflow.js.map +1 -0
- package/dist/commands/overview.d.ts +21 -0
- package/dist/commands/overview.d.ts.map +1 -0
- package/dist/commands/overview.js +1300 -0
- package/dist/commands/overview.js.map +1 -0
- package/dist/commands/packages.d.ts +107 -0
- package/dist/commands/packages.d.ts.map +1 -0
- package/dist/commands/packages.js +308 -0
- package/dist/commands/packages.js.map +1 -0
- package/dist/commands/portal-nextjs.d.ts +23 -0
- package/dist/commands/portal-nextjs.d.ts.map +1 -0
- package/dist/commands/portal-nextjs.js +336 -0
- package/dist/commands/portal-nextjs.js.map +1 -0
- package/dist/commands/portal.d.ts +24 -0
- package/dist/commands/portal.d.ts.map +1 -0
- package/dist/commands/portal.js +16 -0
- package/dist/commands/portal.js.map +1 -0
- package/dist/commands/projects.d.ts +54 -0
- package/dist/commands/projects.d.ts.map +1 -0
- package/dist/commands/projects.js +1191 -0
- package/dist/commands/projects.js.map +1 -0
- package/dist/commands/repo-pairs.d.ts +19 -0
- package/dist/commands/repo-pairs.d.ts.map +1 -0
- package/dist/commands/repo-pairs.js +529 -0
- package/dist/commands/repo-pairs.js.map +1 -0
- package/dist/commands/repo.d.ts +18 -0
- package/dist/commands/repo.d.ts.map +1 -0
- package/dist/commands/repo.js +253 -0
- package/dist/commands/repo.js.map +1 -0
- package/dist/commands/schema.d.ts +49 -0
- package/dist/commands/schema.d.ts.map +1 -0
- package/dist/commands/schema.js +830 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/screenshots.d.ts +203 -0
- package/dist/commands/screenshots.d.ts.map +1 -0
- package/dist/commands/screenshots.js +1234 -0
- package/dist/commands/screenshots.js.map +1 -0
- package/dist/commands/search-index.d.ts +83 -0
- package/dist/commands/search-index.d.ts.map +1 -0
- package/dist/commands/search-index.js +389 -0
- package/dist/commands/search-index.js.map +1 -0
- package/dist/commands/search.d.ts +24 -0
- package/dist/commands/search.d.ts.map +1 -0
- package/dist/commands/search.js +254 -0
- package/dist/commands/search.js.map +1 -0
- package/dist/commands/session.d.ts +159 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +1274 -0
- package/dist/commands/session.js.map +1 -0
- package/dist/commands/test-cases-types.d.ts +154 -0
- package/dist/commands/test-cases-types.d.ts.map +1 -0
- package/dist/commands/test-cases-types.js +7 -0
- package/dist/commands/test-cases-types.js.map +1 -0
- package/dist/commands/test-cases.d.ts +28 -0
- package/dist/commands/test-cases.d.ts.map +1 -0
- package/dist/commands/test-cases.js +192 -0
- package/dist/commands/test-cases.js.map +1 -0
- package/dist/commands/typedoc.d.ts +21 -0
- package/dist/commands/typedoc.d.ts.map +1 -0
- package/dist/commands/typedoc.js +192 -0
- package/dist/commands/typedoc.js.map +1 -0
- package/dist/commands/update-skills.d.ts +56 -0
- package/dist/commands/update-skills.d.ts.map +1 -0
- package/dist/commands/update-skills.js +626 -0
- package/dist/commands/update-skills.js.map +1 -0
- package/dist/generators/details-entity-pages.d.ts +40 -0
- package/dist/generators/details-entity-pages.d.ts.map +1 -0
- package/dist/generators/details-entity-pages.js +301 -0
- package/dist/generators/details-entity-pages.js.map +1 -0
- package/dist/generators/details-html.d.ts +23 -0
- package/dist/generators/details-html.d.ts.map +1 -0
- package/dist/generators/details-html.js +324 -0
- package/dist/generators/details-html.js.map +1 -0
- package/dist/generators/details-module-page.d.ts +33 -0
- package/dist/generators/details-module-page.d.ts.map +1 -0
- package/dist/generators/details-module-page.js +408 -0
- package/dist/generators/details-module-page.js.map +1 -0
- package/dist/generators/details-styles.d.ts +39 -0
- package/dist/generators/details-styles.d.ts.map +1 -0
- package/dist/generators/details-styles.js +409 -0
- package/dist/generators/details-styles.js.map +1 -0
- package/dist/generators/feature-map-html.d.ts +66 -0
- package/dist/generators/feature-map-html.d.ts.map +1 -0
- package/dist/generators/feature-map-html.js +569 -0
- package/dist/generators/feature-map-html.js.map +1 -0
- package/dist/generators/feature-map-styles.d.ts +39 -0
- package/dist/generators/feature-map-styles.d.ts.map +1 -0
- package/dist/generators/feature-map-styles.js +449 -0
- package/dist/generators/feature-map-styles.js.map +1 -0
- package/dist/generators/test-cases-hierarchy.d.ts +21 -0
- package/dist/generators/test-cases-hierarchy.d.ts.map +1 -0
- package/dist/generators/test-cases-hierarchy.js +336 -0
- package/dist/generators/test-cases-hierarchy.js.map +1 -0
- package/dist/generators/test-cases-main.d.ts +20 -0
- package/dist/generators/test-cases-main.d.ts.map +1 -0
- package/dist/generators/test-cases-main.js +439 -0
- package/dist/generators/test-cases-main.js.map +1 -0
- package/dist/generators/test-cases-styles.d.ts +64 -0
- package/dist/generators/test-cases-styles.d.ts.map +1 -0
- package/dist/generators/test-cases-styles.js +1277 -0
- package/dist/generators/test-cases-styles.js.map +1 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +600 -0
- package/dist/index.js.map +1 -0
- package/dist/lint/annotation-lint.d.ts +198 -0
- package/dist/lint/annotation-lint.d.ts.map +1 -0
- package/dist/lint/annotation-lint.js +510 -0
- package/dist/lint/annotation-lint.js.map +1 -0
- package/dist/lint/annotation-types.d.ts +161 -0
- package/dist/lint/annotation-types.d.ts.map +1 -0
- package/dist/lint/annotation-types.js +31 -0
- package/dist/lint/annotation-types.js.map +1 -0
- package/dist/lint/code-types.d.ts +135 -0
- package/dist/lint/code-types.d.ts.map +1 -0
- package/dist/lint/code-types.js +25 -0
- package/dist/lint/code-types.js.map +1 -0
- package/dist/lint/coverage-types.d.ts +128 -0
- package/dist/lint/coverage-types.d.ts.map +1 -0
- package/dist/lint/coverage-types.js +24 -0
- package/dist/lint/coverage-types.js.map +1 -0
- package/dist/lint/docs-types.d.ts +214 -0
- package/dist/lint/docs-types.d.ts.map +1 -0
- package/dist/lint/docs-types.js +18 -0
- package/dist/lint/docs-types.js.map +1 -0
- package/dist/lint/formatters/index.d.ts +14 -0
- package/dist/lint/formatters/index.d.ts.map +1 -0
- package/dist/lint/formatters/index.js +28 -0
- package/dist/lint/formatters/index.js.map +1 -0
- package/dist/lint/formatters/json.d.ts +11 -0
- package/dist/lint/formatters/json.d.ts.map +1 -0
- package/dist/lint/formatters/json.js +12 -0
- package/dist/lint/formatters/json.js.map +1 -0
- package/dist/lint/formatters/summary.d.ts +11 -0
- package/dist/lint/formatters/summary.d.ts.map +1 -0
- package/dist/lint/formatters/summary.js +37 -0
- package/dist/lint/formatters/summary.js.map +1 -0
- package/dist/lint/formatters/terminal.d.ts +11 -0
- package/dist/lint/formatters/terminal.d.ts.map +1 -0
- package/dist/lint/formatters/terminal.js +99 -0
- package/dist/lint/formatters/terminal.js.map +1 -0
- package/dist/lint/index.d.ts +18 -0
- package/dist/lint/index.d.ts.map +1 -0
- package/dist/lint/index.js +103 -0
- package/dist/lint/index.js.map +1 -0
- package/dist/lint/rules/annotation-required.d.ts +35 -0
- package/dist/lint/rules/annotation-required.d.ts.map +1 -0
- package/dist/lint/rules/annotation-required.js +127 -0
- package/dist/lint/rules/annotation-required.js.map +1 -0
- package/dist/lint/rules/code-rules.d.ts +12 -0
- package/dist/lint/rules/code-rules.d.ts.map +1 -0
- package/dist/lint/rules/code-rules.js +11 -0
- package/dist/lint/rules/code-rules.js.map +1 -0
- package/dist/lint/rules/describe-coverage.d.ts +8 -0
- package/dist/lint/rules/describe-coverage.d.ts.map +1 -0
- package/dist/lint/rules/describe-coverage.js +43 -0
- package/dist/lint/rules/describe-coverage.js.map +1 -0
- package/dist/lint/rules/duplicate-testdoc.d.ts +8 -0
- package/dist/lint/rules/duplicate-testdoc.d.ts.map +1 -0
- package/dist/lint/rules/duplicate-testdoc.js +38 -0
- package/dist/lint/rules/duplicate-testdoc.js.map +1 -0
- package/dist/lint/rules/index.d.ts +29 -0
- package/dist/lint/rules/index.d.ts.map +1 -0
- package/dist/lint/rules/index.js +55 -0
- package/dist/lint/rules/index.js.map +1 -0
- package/dist/lint/rules/server-action-structure.d.ts +37 -0
- package/dist/lint/rules/server-action-structure.d.ts.map +1 -0
- package/dist/lint/rules/server-action-structure.js +152 -0
- package/dist/lint/rules/server-action-structure.js.map +1 -0
- package/dist/lint/rules/skipped-test-report.d.ts +11 -0
- package/dist/lint/rules/skipped-test-report.d.ts.map +1 -0
- package/dist/lint/rules/skipped-test-report.js +31 -0
- package/dist/lint/rules/skipped-test-report.js.map +1 -0
- package/dist/lint/rules/structure-rules.d.ts +67 -0
- package/dist/lint/rules/structure-rules.d.ts.map +1 -0
- package/dist/lint/rules/structure-rules.js +617 -0
- package/dist/lint/rules/structure-rules.js.map +1 -0
- package/dist/lint/rules/testdoc-japanese.d.ts +8 -0
- package/dist/lint/rules/testdoc-japanese.d.ts.map +1 -0
- package/dist/lint/rules/testdoc-japanese.js +31 -0
- package/dist/lint/rules/testdoc-japanese.js.map +1 -0
- package/dist/lint/rules/testdoc-min-length.d.ts +8 -0
- package/dist/lint/rules/testdoc-min-length.d.ts.map +1 -0
- package/dist/lint/rules/testdoc-min-length.js +31 -0
- package/dist/lint/rules/testdoc-min-length.js.map +1 -0
- package/dist/lint/rules/testdoc-required.d.ts +8 -0
- package/dist/lint/rules/testdoc-required.d.ts.map +1 -0
- package/dist/lint/rules/testdoc-required.js +27 -0
- package/dist/lint/rules/testdoc-required.js.map +1 -0
- package/dist/lint/rules/workflow-branch-naming.d.ts +20 -0
- package/dist/lint/rules/workflow-branch-naming.d.ts.map +1 -0
- package/dist/lint/rules/workflow-branch-naming.js +85 -0
- package/dist/lint/rules/workflow-branch-naming.js.map +1 -0
- package/dist/lint/rules/workflow-commit-format.d.ts +27 -0
- package/dist/lint/rules/workflow-commit-format.d.ts.map +1 -0
- package/dist/lint/rules/workflow-commit-format.js +92 -0
- package/dist/lint/rules/workflow-commit-format.js.map +1 -0
- package/dist/lint/rules/workflow-issue-fields.d.ts +24 -0
- package/dist/lint/rules/workflow-issue-fields.d.ts.map +1 -0
- package/dist/lint/rules/workflow-issue-fields.js +89 -0
- package/dist/lint/rules/workflow-issue-fields.js.map +1 -0
- package/dist/lint/rules/workflow-main-protection.d.ts +32 -0
- package/dist/lint/rules/workflow-main-protection.d.ts.map +1 -0
- package/dist/lint/rules/workflow-main-protection.js +114 -0
- package/dist/lint/rules/workflow-main-protection.js.map +1 -0
- package/dist/lint/structure-types.d.ts +216 -0
- package/dist/lint/structure-types.d.ts.map +1 -0
- package/dist/lint/structure-types.js +96 -0
- package/dist/lint/structure-types.js.map +1 -0
- package/dist/lint/types.d.ts +154 -0
- package/dist/lint/types.d.ts.map +1 -0
- package/dist/lint/types.js +21 -0
- package/dist/lint/types.js.map +1 -0
- package/dist/lint/workflow-types.d.ts +90 -0
- package/dist/lint/workflow-types.d.ts.map +1 -0
- package/dist/lint/workflow-types.js +7 -0
- package/dist/lint/workflow-types.js.map +1 -0
- package/dist/md/analyzer/index.d.ts +46 -0
- package/dist/md/analyzer/index.d.ts.map +1 -0
- package/dist/md/analyzer/index.js +288 -0
- package/dist/md/analyzer/index.js.map +1 -0
- package/dist/md/builder/index.d.ts +91 -0
- package/dist/md/builder/index.d.ts.map +1 -0
- package/dist/md/builder/index.js +446 -0
- package/dist/md/builder/index.js.map +1 -0
- package/dist/md/cli/analyze.d.ts +11 -0
- package/dist/md/cli/analyze.d.ts.map +1 -0
- package/dist/md/cli/analyze.js +118 -0
- package/dist/md/cli/analyze.js.map +1 -0
- package/dist/md/cli/build.d.ts +11 -0
- package/dist/md/cli/build.d.ts.map +1 -0
- package/dist/md/cli/build.js +74 -0
- package/dist/md/cli/build.js.map +1 -0
- package/dist/md/cli/extract.d.ts +25 -0
- package/dist/md/cli/extract.d.ts.map +1 -0
- package/dist/md/cli/extract.js +230 -0
- package/dist/md/cli/extract.js.map +1 -0
- package/dist/md/cli/index.d.ts +3 -0
- package/dist/md/cli/index.d.ts.map +1 -0
- package/dist/md/cli/index.js +99 -0
- package/dist/md/cli/index.js.map +1 -0
- package/dist/md/cli/lint.d.ts +11 -0
- package/dist/md/cli/lint.d.ts.map +1 -0
- package/dist/md/cli/lint.js +165 -0
- package/dist/md/cli/lint.js.map +1 -0
- package/dist/md/cli/list.d.ts +16 -0
- package/dist/md/cli/list.d.ts.map +1 -0
- package/dist/md/cli/list.js +85 -0
- package/dist/md/cli/list.js.map +1 -0
- package/dist/md/cli/program.d.ts +11 -0
- package/dist/md/cli/program.d.ts.map +1 -0
- package/dist/md/cli/program.js +104 -0
- package/dist/md/cli/program.js.map +1 -0
- package/dist/md/cli/validate.d.ts +8 -0
- package/dist/md/cli/validate.d.ts.map +1 -0
- package/dist/md/cli/validate.js +82 -0
- package/dist/md/cli/validate.js.map +1 -0
- package/dist/md/constants.d.ts +69 -0
- package/dist/md/constants.d.ts.map +1 -0
- package/dist/md/constants.js +69 -0
- package/dist/md/constants.js.map +1 -0
- package/dist/md/extractor/index.d.ts +57 -0
- package/dist/md/extractor/index.d.ts.map +1 -0
- package/dist/md/extractor/index.js +365 -0
- package/dist/md/extractor/index.js.map +1 -0
- package/dist/md/index.d.ts +26 -0
- package/dist/md/index.d.ts.map +1 -0
- package/dist/md/index.js +30 -0
- package/dist/md/index.js.map +1 -0
- package/dist/md/linter/index.d.ts +20 -0
- package/dist/md/linter/index.d.ts.map +1 -0
- package/dist/md/linter/index.js +421 -0
- package/dist/md/linter/index.js.map +1 -0
- package/dist/md/linter/token-optimizer.d.ts +66 -0
- package/dist/md/linter/token-optimizer.d.ts.map +1 -0
- package/dist/md/linter/token-optimizer.js +292 -0
- package/dist/md/linter/token-optimizer.js.map +1 -0
- package/dist/md/lister/index.d.ts +42 -0
- package/dist/md/lister/index.d.ts.map +1 -0
- package/dist/md/lister/index.js +317 -0
- package/dist/md/lister/index.js.map +1 -0
- package/dist/md/parser/heading-numbers.d.ts +43 -0
- package/dist/md/parser/heading-numbers.d.ts.map +1 -0
- package/dist/md/parser/heading-numbers.js +97 -0
- package/dist/md/parser/heading-numbers.js.map +1 -0
- package/dist/md/parser/section-meta.d.ts +50 -0
- package/dist/md/parser/section-meta.d.ts.map +1 -0
- package/dist/md/parser/section-meta.js +212 -0
- package/dist/md/parser/section-meta.js.map +1 -0
- package/dist/md/parser/template.d.ts +56 -0
- package/dist/md/parser/template.d.ts.map +1 -0
- package/dist/md/parser/template.js +122 -0
- package/dist/md/parser/template.js.map +1 -0
- package/dist/md/plugins/loader.d.ts +15 -0
- package/dist/md/plugins/loader.d.ts.map +1 -0
- package/dist/md/plugins/loader.js +80 -0
- package/dist/md/plugins/loader.js.map +1 -0
- package/dist/md/plugins/normalize-headings.d.ts +43 -0
- package/dist/md/plugins/normalize-headings.d.ts.map +1 -0
- package/dist/md/plugins/normalize-headings.js +51 -0
- package/dist/md/plugins/normalize-headings.js.map +1 -0
- package/dist/md/plugins/normalize-whitespace.d.ts +46 -0
- package/dist/md/plugins/normalize-whitespace.d.ts.map +1 -0
- package/dist/md/plugins/normalize-whitespace.js +86 -0
- package/dist/md/plugins/normalize-whitespace.js.map +1 -0
- package/dist/md/plugins/remove-badges.d.ts +36 -0
- package/dist/md/plugins/remove-badges.d.ts.map +1 -0
- package/dist/md/plugins/remove-badges.js +59 -0
- package/dist/md/plugins/remove-badges.js.map +1 -0
- package/dist/md/plugins/remove-comments.d.ts +27 -0
- package/dist/md/plugins/remove-comments.d.ts.map +1 -0
- package/dist/md/plugins/remove-comments.js +40 -0
- package/dist/md/plugins/remove-comments.js.map +1 -0
- package/dist/md/plugins/remove-duplicates.d.ts +40 -0
- package/dist/md/plugins/remove-duplicates.d.ts.map +1 -0
- package/dist/md/plugins/remove-duplicates.js +72 -0
- package/dist/md/plugins/remove-duplicates.js.map +1 -0
- package/dist/md/plugins/remove-internal-links.d.ts +38 -0
- package/dist/md/plugins/remove-internal-links.d.ts.map +1 -0
- package/dist/md/plugins/remove-internal-links.js +66 -0
- package/dist/md/plugins/remove-internal-links.js.map +1 -0
- package/dist/md/plugins/strip-heading-numbers.d.ts +35 -0
- package/dist/md/plugins/strip-heading-numbers.d.ts.map +1 -0
- package/dist/md/plugins/strip-heading-numbers.js +59 -0
- package/dist/md/plugins/strip-heading-numbers.js.map +1 -0
- package/dist/md/plugins/strip-section-meta.d.ts +37 -0
- package/dist/md/plugins/strip-section-meta.d.ts.map +1 -0
- package/dist/md/plugins/strip-section-meta.js +62 -0
- package/dist/md/plugins/strip-section-meta.js.map +1 -0
- package/dist/md/types/config.d.ts +260 -0
- package/dist/md/types/config.d.ts.map +1 -0
- package/dist/md/types/config.js +156 -0
- package/dist/md/types/config.js.map +1 -0
- package/dist/md/types/document.d.ts +37 -0
- package/dist/md/types/document.d.ts.map +1 -0
- package/dist/md/types/document.js +2 -0
- package/dist/md/types/document.js.map +1 -0
- package/dist/md/types/validation.d.ts +107 -0
- package/dist/md/types/validation.d.ts.map +1 -0
- package/dist/md/types/validation.js +2 -0
- package/dist/md/types/validation.js.map +1 -0
- package/dist/md/utils/code-blocks.d.ts +136 -0
- package/dist/md/utils/code-blocks.d.ts.map +1 -0
- package/dist/md/utils/code-blocks.js +178 -0
- package/dist/md/utils/code-blocks.js.map +1 -0
- package/dist/md/utils/config.d.ts +10 -0
- package/dist/md/utils/config.d.ts.map +1 -0
- package/dist/md/utils/config.js +99 -0
- package/dist/md/utils/config.js.map +1 -0
- package/dist/md/utils/file-collector.d.ts +78 -0
- package/dist/md/utils/file-collector.d.ts.map +1 -0
- package/dist/md/utils/file-collector.js +100 -0
- package/dist/md/utils/file-collector.js.map +1 -0
- package/dist/md/utils/markdown.d.ts +18 -0
- package/dist/md/utils/markdown.d.ts.map +1 -0
- package/dist/md/utils/markdown.js +93 -0
- package/dist/md/utils/markdown.js.map +1 -0
- package/dist/md/utils/remark.d.ts +91 -0
- package/dist/md/utils/remark.d.ts.map +1 -0
- package/dist/md/utils/remark.js +125 -0
- package/dist/md/utils/remark.js.map +1 -0
- package/dist/md/utils/tokens.d.ts +9 -0
- package/dist/md/utils/tokens.d.ts.map +1 -0
- package/dist/md/utils/tokens.js +31 -0
- package/dist/md/utils/tokens.js.map +1 -0
- package/dist/md/validator/index.d.ts +40 -0
- package/dist/md/validator/index.d.ts.map +1 -0
- package/dist/md/validator/index.js +299 -0
- package/dist/md/validator/index.js.map +1 -0
- package/dist/parsers/details-jsdoc.d.ts +42 -0
- package/dist/parsers/details-jsdoc.d.ts.map +1 -0
- package/dist/parsers/details-jsdoc.js +256 -0
- package/dist/parsers/details-jsdoc.js.map +1 -0
- package/dist/parsers/details-zod.d.ts +22 -0
- package/dist/parsers/details-zod.d.ts.map +1 -0
- package/dist/parsers/details-zod.js +146 -0
- package/dist/parsers/details-zod.js.map +1 -0
- package/dist/parsers/drizzle-schema.d.ts +92 -0
- package/dist/parsers/drizzle-schema.d.ts.map +1 -0
- package/dist/parsers/drizzle-schema.js +376 -0
- package/dist/parsers/drizzle-schema.js.map +1 -0
- package/dist/parsers/feature-map-tags.d.ts +45 -0
- package/dist/parsers/feature-map-tags.d.ts.map +1 -0
- package/dist/parsers/feature-map-tags.js +292 -0
- package/dist/parsers/feature-map-tags.js.map +1 -0
- package/dist/parsers/feature-map-type-extraction.d.ts +62 -0
- package/dist/parsers/feature-map-type-extraction.d.ts.map +1 -0
- package/dist/parsers/feature-map-type-extraction.js +347 -0
- package/dist/parsers/feature-map-type-extraction.js.map +1 -0
- package/dist/parsers/feature-map-utils.d.ts +34 -0
- package/dist/parsers/feature-map-utils.d.ts.map +1 -0
- package/dist/parsers/feature-map-utils.js +101 -0
- package/dist/parsers/feature-map-utils.js.map +1 -0
- package/dist/parsers/jsdoc-common.d.ts +209 -0
- package/dist/parsers/jsdoc-common.d.ts.map +1 -0
- package/dist/parsers/jsdoc-common.js +650 -0
- package/dist/parsers/jsdoc-common.js.map +1 -0
- package/dist/parsers/jsdoc.d.ts +76 -0
- package/dist/parsers/jsdoc.d.ts.map +1 -0
- package/dist/parsers/jsdoc.js +238 -0
- package/dist/parsers/jsdoc.js.map +1 -0
- package/dist/parsers/screenshot-annotations.d.ts +96 -0
- package/dist/parsers/screenshot-annotations.d.ts.map +1 -0
- package/dist/parsers/screenshot-annotations.js +227 -0
- package/dist/parsers/screenshot-annotations.js.map +1 -0
- package/dist/parsers/test-annotations.d.ts +46 -0
- package/dist/parsers/test-annotations.d.ts.map +1 -0
- package/dist/parsers/test-annotations.js +393 -0
- package/dist/parsers/test-annotations.js.map +1 -0
- package/dist/parsers/test-categorization.d.ts +42 -0
- package/dist/parsers/test-categorization.d.ts.map +1 -0
- package/dist/parsers/test-categorization.js +182 -0
- package/dist/parsers/test-categorization.js.map +1 -0
- package/dist/parsers/zod-schema.d.ts +105 -0
- package/dist/parsers/zod-schema.d.ts.map +1 -0
- package/dist/parsers/zod-schema.js +271 -0
- package/dist/parsers/zod-schema.js.map +1 -0
- package/dist/utils/action-inference.d.ts +23 -0
- package/dist/utils/action-inference.d.ts.map +1 -0
- package/dist/utils/action-inference.js +36 -0
- package/dist/utils/action-inference.js.map +1 -0
- package/dist/utils/app-inference.d.ts +31 -0
- package/dist/utils/app-inference.d.ts.map +1 -0
- package/dist/utils/app-inference.js +41 -0
- package/dist/utils/app-inference.js.map +1 -0
- package/dist/utils/auto-infer.d.ts +93 -0
- package/dist/utils/auto-infer.d.ts.map +1 -0
- package/dist/utils/auto-infer.js +184 -0
- package/dist/utils/auto-infer.js.map +1 -0
- package/dist/utils/config.d.ts +709 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +504 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/file.d.ts +46 -0
- package/dist/utils/file.d.ts.map +1 -0
- package/dist/utils/file.js +103 -0
- package/dist/utils/file.js.map +1 -0
- package/dist/utils/formatters.d.ts +123 -0
- package/dist/utils/formatters.d.ts.map +1 -0
- package/dist/utils/formatters.js +199 -0
- package/dist/utils/formatters.js.map +1 -0
- package/dist/utils/gh-config.d.ts +99 -0
- package/dist/utils/gh-config.d.ts.map +1 -0
- package/dist/utils/gh-config.js +247 -0
- package/dist/utils/gh-config.js.map +1 -0
- package/dist/utils/github.d.ts +108 -0
- package/dist/utils/github.d.ts.map +1 -0
- package/dist/utils/github.js +320 -0
- package/dist/utils/github.js.map +1 -0
- package/dist/utils/html.d.ts +107 -0
- package/dist/utils/html.d.ts.map +1 -0
- package/dist/utils/html.js +376 -0
- package/dist/utils/html.js.map +1 -0
- package/dist/utils/i18n.d.ts +40 -0
- package/dist/utils/i18n.d.ts.map +1 -0
- package/dist/utils/i18n.js +148 -0
- package/dist/utils/i18n.js.map +1 -0
- package/dist/utils/logger.d.ts +20 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +49 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/project-fields.d.ts +71 -0
- package/dist/utils/project-fields.d.ts.map +1 -0
- package/dist/utils/project-fields.js +318 -0
- package/dist/utils/project-fields.js.map +1 -0
- package/dist/utils/repo-pairs.d.ts +94 -0
- package/dist/utils/repo-pairs.d.ts.map +1 -0
- package/dist/utils/repo-pairs.js +196 -0
- package/dist/utils/repo-pairs.js.map +1 -0
- package/dist/utils/route-inference.d.ts +81 -0
- package/dist/utils/route-inference.d.ts.map +1 -0
- package/dist/utils/route-inference.js +137 -0
- package/dist/utils/route-inference.js.map +1 -0
- package/dist/utils/sanitize.d.ts +27 -0
- package/dist/utils/sanitize.d.ts.map +1 -0
- package/dist/utils/sanitize.js +38 -0
- package/dist/utils/sanitize.js.map +1 -0
- package/dist/utils/setup-check.d.ts +48 -0
- package/dist/utils/setup-check.d.ts.map +1 -0
- package/dist/utils/setup-check.js +226 -0
- package/dist/utils/setup-check.js.map +1 -0
- package/dist/utils/shirokumaignore.d.ts +55 -0
- package/dist/utils/shirokumaignore.d.ts.map +1 -0
- package/dist/utils/shirokumaignore.js +94 -0
- package/dist/utils/shirokumaignore.js.map +1 -0
- package/dist/utils/skills-repo.d.ts +353 -0
- package/dist/utils/skills-repo.d.ts.map +1 -0
- package/dist/utils/skills-repo.js +793 -0
- package/dist/utils/skills-repo.js.map +1 -0
- package/dist/utils/status-workflow.d.ts +54 -0
- package/dist/utils/status-workflow.d.ts.map +1 -0
- package/dist/utils/status-workflow.js +103 -0
- package/dist/utils/status-workflow.js.map +1 -0
- package/dist/validators/frontmatter.d.ts +41 -0
- package/dist/validators/frontmatter.d.ts.map +1 -0
- package/dist/validators/frontmatter.js +117 -0
- package/dist/validators/frontmatter.js.map +1 -0
- package/dist/validators/link-checker.d.ts +48 -0
- package/dist/validators/link-checker.d.ts.map +1 -0
- package/dist/validators/link-checker.js +108 -0
- package/dist/validators/link-checker.js.map +1 -0
- package/dist/validators/markdown-structure.d.ts +50 -0
- package/dist/validators/markdown-structure.d.ts.map +1 -0
- package/dist/validators/markdown-structure.js +253 -0
- package/dist/validators/markdown-structure.js.map +1 -0
- package/i18n/cli/en.json +164 -0
- package/i18n/cli/ja.json +164 -0
- package/i18n/discussion/en.json +191 -0
- package/i18n/discussion/ja.json +191 -0
- package/package.json +113 -0
- package/portal/app/api-tools/api-tools-client.tsx +411 -0
- package/portal/app/api-tools/api-tools-document.tsx +240 -0
- package/portal/app/api-tools/page.tsx +56 -0
- package/portal/app/api-tools/swagger-view.tsx +114 -0
- package/portal/app/apps/[appId]/[type]/[module]/[item]/item-tabs-client.tsx +71 -0
- package/portal/app/apps/[appId]/[type]/[module]/[item]/page.tsx +1422 -0
- package/portal/app/apps/[appId]/[type]/[module]/page.tsx +373 -0
- package/portal/app/apps/[appId]/feature-map/feature-map-app-document.tsx +298 -0
- package/portal/app/apps/[appId]/feature-map/page.tsx +224 -0
- package/portal/app/apps/[appId]/i18n/page.tsx +139 -0
- package/portal/app/apps/[appId]/test-cases/page.tsx +840 -0
- package/portal/app/apps/[appId]/tools/[tool]/page.tsx +351 -0
- package/portal/app/apps/[appId]/tools/api-tools-client.tsx +429 -0
- package/portal/app/apps/[appId]/tools/page.tsx +119 -0
- package/portal/app/db-schema/[db]/[table]/page.tsx +235 -0
- package/portal/app/db-schema/[db]/diagram/page.tsx +81 -0
- package/portal/app/db-schema/[db]/page.tsx +148 -0
- package/portal/app/db-schema/db-schema-document.tsx +100 -0
- package/portal/app/db-schema/diagram/client.tsx +211 -0
- package/portal/app/db-schema/diagram/page.tsx +20 -0
- package/portal/app/db-schema/page.tsx +145 -0
- package/portal/app/db-schema/table-detail-document.tsx +710 -0
- package/portal/app/db-schema/table-detail.tsx +747 -0
- package/portal/app/db-schema/table-list-document.tsx +224 -0
- package/portal/app/db-schema/table-list.tsx +247 -0
- package/portal/app/details/[type]/[module]/[item]/item-tabs-client.tsx +71 -0
- package/portal/app/details/[type]/[module]/[item]/page.tsx +1286 -0
- package/portal/app/details/[type]/[module]/page.tsx +884 -0
- package/portal/app/feature-map/feature-map-client.tsx +681 -0
- package/portal/app/feature-map/feature-map-document.tsx +313 -0
- package/portal/app/feature-map/page.tsx +438 -0
- package/portal/app/globals.css +205 -0
- package/portal/app/i18n/[...namespace]/page.tsx +190 -0
- package/portal/app/i18n/i18n-client.tsx +369 -0
- package/portal/app/i18n/page.tsx +339 -0
- package/portal/app/layout.tsx +37 -0
- package/portal/app/overview/page.tsx +65 -0
- package/portal/app/packages/[packageId]/page.tsx +201 -0
- package/portal/app/packages/page.tsx +148 -0
- package/portal/app/page.tsx +568 -0
- package/portal/app/test-cases/[file]/[line]/page.tsx +455 -0
- package/portal/app/test-cases/[file]/[line]/test-detail-document.tsx +335 -0
- package/portal/app/test-cases/[file]/page.tsx +323 -0
- package/portal/app/test-cases/[file]/test-file-document.tsx +335 -0
- package/portal/app/test-cases/page.tsx +546 -0
- package/portal/app/test-cases/test-cases-document.tsx +384 -0
- package/portal/components/code-block.tsx +57 -0
- package/portal/components/document/doc-params-table.tsx +71 -0
- package/portal/components/document/doc-section.tsx +133 -0
- package/portal/components/document/doc-table.tsx +119 -0
- package/portal/components/document/index.ts +9 -0
- package/portal/components/drawflow-er-diagram.tsx +607 -0
- package/portal/components/interactive-er-diagram.tsx +228 -0
- package/portal/components/layout/app-sidebar.tsx +490 -0
- package/portal/components/layout/er-sidebar.tsx +116 -0
- package/portal/components/layout/global-header.tsx +117 -0
- package/portal/components/layout/layout-content.tsx +48 -0
- package/portal/components/markdown-content.tsx +120 -0
- package/portal/components/mermaid-diagram.tsx +83 -0
- package/portal/components/reactflow-er-diagram.tsx +475 -0
- package/portal/components/search-dialog.tsx +268 -0
- package/portal/components/shared/coverage-score-bar.tsx +144 -0
- package/portal/components/swagger/endpoint-accordion.tsx +117 -0
- package/portal/components/swagger/index.ts +7 -0
- package/portal/components/swagger/method-badge.tsx +55 -0
- package/portal/components/swagger/params-table.tsx +78 -0
- package/portal/components/tabs-with-hash.tsx +43 -0
- package/portal/components/test/index.ts +2 -0
- package/portal/components/test/test-bdd-card.tsx +192 -0
- package/portal/components/test/test-matrix.tsx +242 -0
- package/portal/components/ui/accordion.tsx +66 -0
- package/portal/components/ui/badge.tsx +46 -0
- package/portal/components/ui/breadcrumb.tsx +109 -0
- package/portal/components/ui/button.tsx +62 -0
- package/portal/components/ui/card.tsx +92 -0
- package/portal/components/ui/collapsible.tsx +33 -0
- package/portal/components/ui/dialog.tsx +118 -0
- package/portal/components/ui/progress.tsx +28 -0
- package/portal/components/ui/scroll-area.tsx +58 -0
- package/portal/components/ui/sheet.tsx +139 -0
- package/portal/components/ui/table.tsx +116 -0
- package/portal/components/ui/tabs.tsx +66 -0
- package/portal/components.json +21 -0
- package/portal/lib/constants/test-categories.ts +186 -0
- package/portal/lib/data-loader.ts +1181 -0
- package/portal/lib/db-schema-utils.ts +182 -0
- package/portal/lib/format.ts +43 -0
- package/portal/lib/hooks/use-hash-tab.ts +144 -0
- package/portal/lib/path-utils.ts +25 -0
- package/portal/lib/search-index-generator.ts +214 -0
- package/portal/lib/search.ts +126 -0
- package/portal/lib/sidebar-context.tsx +111 -0
- package/portal/lib/types.ts +740 -0
- package/portal/lib/utils.ts +6 -0
- package/portal/next.config.ts +18 -0
- package/portal/package.json +45 -0
- package/portal/postcss.config.mjs +8 -0
- package/portal/tsconfig.json +42 -0
- package/portal/types/drawflow.d.ts +80 -0
- package/templates/README.md +73 -0
- package/templates/coverage.html +367 -0
- package/templates/dark-theme.css +443 -0
- package/templates/discussion/adr.yml.hbs +65 -0
- package/templates/discussion/handovers.yml.hbs +57 -0
- package/templates/discussion/knowledge.yml.hbs +60 -0
- package/templates/discussion/reports.yml.hbs +68 -0
- package/templates/discussion/research.yml.hbs +61 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repo Pairs Utility
|
|
3
|
+
*
|
|
4
|
+
* Central utility for public/private repository pair management.
|
|
5
|
+
* Used by repo-pairs command, --public flag, and session management.
|
|
6
|
+
*/
|
|
7
|
+
import { type RepoPairConfig, type GhConfig } from "./gh-config.js";
|
|
8
|
+
/** Default files/directories to exclude from public release */
|
|
9
|
+
export declare const DEFAULT_EXCLUDE_PATTERNS: string[];
|
|
10
|
+
/**
|
|
11
|
+
* Parse "owner/name" into { owner, name }
|
|
12
|
+
*/
|
|
13
|
+
export declare function parseRepoFullName(fullName: string): {
|
|
14
|
+
owner: string;
|
|
15
|
+
name: string;
|
|
16
|
+
} | null;
|
|
17
|
+
/**
|
|
18
|
+
* Get all configured repo pairs
|
|
19
|
+
*/
|
|
20
|
+
export declare function getAllRepoPairs(config?: GhConfig): RepoPairConfig[];
|
|
21
|
+
/**
|
|
22
|
+
* Get a specific repo pair by alias
|
|
23
|
+
*/
|
|
24
|
+
export declare function getRepoPair(alias: string, config?: GhConfig): RepoPairConfig | null;
|
|
25
|
+
/**
|
|
26
|
+
* Detect which repo pair matches the current repository.
|
|
27
|
+
* Checks if current repo matches either the private or public side.
|
|
28
|
+
*/
|
|
29
|
+
export declare function detectCurrentRepoPair(config?: GhConfig): RepoPairConfig | null;
|
|
30
|
+
/**
|
|
31
|
+
* Resolve target repository for --public flag.
|
|
32
|
+
*
|
|
33
|
+
* When --public is passed, finds the matching repo pair for the current repo
|
|
34
|
+
* and returns the public counterpart.
|
|
35
|
+
*
|
|
36
|
+
* @returns { owner, name } of the target repo, or null if not found
|
|
37
|
+
*/
|
|
38
|
+
export declare function resolveTargetRepo(options: {
|
|
39
|
+
public?: boolean;
|
|
40
|
+
repo?: string;
|
|
41
|
+
}, config?: GhConfig): {
|
|
42
|
+
owner: string;
|
|
43
|
+
name: string;
|
|
44
|
+
} | null;
|
|
45
|
+
/**
|
|
46
|
+
* Resolve a cross-repo alias to { owner, name }
|
|
47
|
+
*/
|
|
48
|
+
export declare function resolveCrossRepo(alias: string, config?: GhConfig): {
|
|
49
|
+
owner: string;
|
|
50
|
+
name: string;
|
|
51
|
+
} | null;
|
|
52
|
+
/**
|
|
53
|
+
* Get all configured cross-repo aliases
|
|
54
|
+
*/
|
|
55
|
+
export declare function getAllCrossRepos(config?: GhConfig): Array<{
|
|
56
|
+
alias: string;
|
|
57
|
+
repo: string;
|
|
58
|
+
}>;
|
|
59
|
+
/**
|
|
60
|
+
* Validate a cross-repo alias and return detailed error info if invalid.
|
|
61
|
+
*
|
|
62
|
+
* Checks:
|
|
63
|
+
* 1. Is it a known alias?
|
|
64
|
+
* 2. Is it a full path (owner/repo) instead of an alias?
|
|
65
|
+
* 3. Are there any configured aliases at all?
|
|
66
|
+
*
|
|
67
|
+
* @returns null if valid, error message string if invalid
|
|
68
|
+
*/
|
|
69
|
+
export declare function validateCrossRepoAlias(alias: string, config?: GhConfig): string | null;
|
|
70
|
+
/**
|
|
71
|
+
* Check if a repo full name matches the private side of any pair
|
|
72
|
+
*/
|
|
73
|
+
export declare function isPrivateRepo(repoFullName: string, config?: GhConfig): boolean;
|
|
74
|
+
/**
|
|
75
|
+
* Check if a repo full name matches the public side of any pair
|
|
76
|
+
*/
|
|
77
|
+
export declare function isPublicRepo(repoFullName: string, config?: GhConfig): boolean;
|
|
78
|
+
/**
|
|
79
|
+
* Get merged exclude patterns for a repo pair release.
|
|
80
|
+
*
|
|
81
|
+
* Combines patterns from three sources (in order):
|
|
82
|
+
* 1. DEFAULT_EXCLUDE_PATTERNS (built-in base patterns)
|
|
83
|
+
* 2. Config patterns (repoPairs[alias].exclude in config YAML)
|
|
84
|
+
* 3. .shirokumaignore file patterns (project root)
|
|
85
|
+
*
|
|
86
|
+
* Patterns are deduplicated while preserving order.
|
|
87
|
+
*
|
|
88
|
+
* @param alias - Repo pair alias
|
|
89
|
+
* @param projectPath - Absolute path to the project root
|
|
90
|
+
* @param config - Optional pre-loaded config
|
|
91
|
+
* @returns Deduplicated array of all exclude patterns
|
|
92
|
+
*/
|
|
93
|
+
export declare function getMergedExcludePatterns(alias: string, projectPath: string, config?: GhConfig): string[];
|
|
94
|
+
//# sourceMappingURL=repo-pairs.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-pairs.d.ts","sourceRoot":"","sources":["../../src/utils/repo-pairs.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAgB,KAAK,cAAc,EAAE,KAAK,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAOlF,+DAA+D;AAC/D,eAAO,MAAM,wBAAwB,UAKpC,CAAC;AAMF;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAM1F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,cAAc,EAAE,CAWnE;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,cAAc,GAAG,IAAI,CAGnF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,cAAc,GAAG,IAAI,CAU9E;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5C,MAAM,CAAC,EAAE,QAAQ,GAChB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAkBxC;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQzG;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,CAAC,EAAE,QAAQ,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC,CAK1F;AAED;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,MAAM,GAAG,IAAI,CA8BtF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAG9E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,QAAQ,GAAG,OAAO,CAG7E;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,CAAC,EAAE,QAAQ,GAChB,MAAM,EAAE,CAmBV"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Repo Pairs Utility
|
|
3
|
+
*
|
|
4
|
+
* Central utility for public/private repository pair management.
|
|
5
|
+
* Used by repo-pairs command, --public flag, and session management.
|
|
6
|
+
*/
|
|
7
|
+
import { getRepoInfo } from "./github.js";
|
|
8
|
+
import { loadGhConfig } from "./gh-config.js";
|
|
9
|
+
import { loadShirokumaIgnoreFile, mergeExcludePatterns } from "./shirokumaignore.js";
|
|
10
|
+
// ========================================
|
|
11
|
+
// Default Patterns
|
|
12
|
+
// ========================================
|
|
13
|
+
/** Default files/directories to exclude from public release */
|
|
14
|
+
export const DEFAULT_EXCLUDE_PATTERNS = [
|
|
15
|
+
".claude/",
|
|
16
|
+
".github/DISCUSSION_TEMPLATE/",
|
|
17
|
+
"docs/internal/",
|
|
18
|
+
".shirokumaignore",
|
|
19
|
+
];
|
|
20
|
+
// ========================================
|
|
21
|
+
// Repo Pair Resolution
|
|
22
|
+
// ========================================
|
|
23
|
+
/**
|
|
24
|
+
* Parse "owner/name" into { owner, name }
|
|
25
|
+
*/
|
|
26
|
+
export function parseRepoFullName(fullName) {
|
|
27
|
+
const parts = fullName.split("/");
|
|
28
|
+
if (parts.length !== 2 || !parts[0] || !parts[1]) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
return { owner: parts[0], name: parts[1] };
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Get all configured repo pairs
|
|
35
|
+
*/
|
|
36
|
+
export function getAllRepoPairs(config) {
|
|
37
|
+
const cfg = config ?? loadGhConfig();
|
|
38
|
+
if (!cfg.repoPairs)
|
|
39
|
+
return [];
|
|
40
|
+
return Object.entries(cfg.repoPairs).map(([alias, pair]) => ({
|
|
41
|
+
alias,
|
|
42
|
+
private: pair.private,
|
|
43
|
+
public: pair.public,
|
|
44
|
+
exclude: pair.exclude ?? DEFAULT_EXCLUDE_PATTERNS,
|
|
45
|
+
defaultBranch: pair.defaultBranch ?? "main",
|
|
46
|
+
}));
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Get a specific repo pair by alias
|
|
50
|
+
*/
|
|
51
|
+
export function getRepoPair(alias, config) {
|
|
52
|
+
const pairs = getAllRepoPairs(config);
|
|
53
|
+
return pairs.find(p => p.alias === alias) ?? null;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Detect which repo pair matches the current repository.
|
|
57
|
+
* Checks if current repo matches either the private or public side.
|
|
58
|
+
*/
|
|
59
|
+
export function detectCurrentRepoPair(config) {
|
|
60
|
+
const repoInfo = getRepoInfo();
|
|
61
|
+
if (!repoInfo)
|
|
62
|
+
return null;
|
|
63
|
+
const currentFullName = `${repoInfo.owner}/${repoInfo.name}`;
|
|
64
|
+
const pairs = getAllRepoPairs(config);
|
|
65
|
+
return pairs.find(p => p.private === currentFullName || p.public === currentFullName) ?? null;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Resolve target repository for --public flag.
|
|
69
|
+
*
|
|
70
|
+
* When --public is passed, finds the matching repo pair for the current repo
|
|
71
|
+
* and returns the public counterpart.
|
|
72
|
+
*
|
|
73
|
+
* @returns { owner, name } of the target repo, or null if not found
|
|
74
|
+
*/
|
|
75
|
+
export function resolveTargetRepo(options, config) {
|
|
76
|
+
const cfg = config ?? loadGhConfig();
|
|
77
|
+
// If --repo alias is specified (cross-repo), resolve from crossRepos
|
|
78
|
+
if (options.repo) {
|
|
79
|
+
return resolveCrossRepo(options.repo, cfg);
|
|
80
|
+
}
|
|
81
|
+
// If --public is not set, return current repo
|
|
82
|
+
if (!options.public) {
|
|
83
|
+
return getRepoInfo();
|
|
84
|
+
}
|
|
85
|
+
// Find the repo pair for current repo
|
|
86
|
+
const pair = detectCurrentRepoPair(cfg);
|
|
87
|
+
if (!pair)
|
|
88
|
+
return null;
|
|
89
|
+
return parseRepoFullName(pair.public);
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Resolve a cross-repo alias to { owner, name }
|
|
93
|
+
*/
|
|
94
|
+
export function resolveCrossRepo(alias, config) {
|
|
95
|
+
const cfg = config ?? loadGhConfig();
|
|
96
|
+
if (!cfg.crossRepos)
|
|
97
|
+
return null;
|
|
98
|
+
const fullName = cfg.crossRepos[alias];
|
|
99
|
+
if (!fullName)
|
|
100
|
+
return null;
|
|
101
|
+
return parseRepoFullName(fullName);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Get all configured cross-repo aliases
|
|
105
|
+
*/
|
|
106
|
+
export function getAllCrossRepos(config) {
|
|
107
|
+
const cfg = config ?? loadGhConfig();
|
|
108
|
+
if (!cfg.crossRepos)
|
|
109
|
+
return [];
|
|
110
|
+
return Object.entries(cfg.crossRepos).map(([alias, repo]) => ({ alias, repo }));
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Validate a cross-repo alias and return detailed error info if invalid.
|
|
114
|
+
*
|
|
115
|
+
* Checks:
|
|
116
|
+
* 1. Is it a known alias?
|
|
117
|
+
* 2. Is it a full path (owner/repo) instead of an alias?
|
|
118
|
+
* 3. Are there any configured aliases at all?
|
|
119
|
+
*
|
|
120
|
+
* @returns null if valid, error message string if invalid
|
|
121
|
+
*/
|
|
122
|
+
export function validateCrossRepoAlias(alias, config) {
|
|
123
|
+
const cfg = config ?? loadGhConfig();
|
|
124
|
+
const crossRepos = cfg.crossRepos;
|
|
125
|
+
// No crossRepos configured at all
|
|
126
|
+
if (!crossRepos || Object.keys(crossRepos).length === 0) {
|
|
127
|
+
return `No cross-repo aliases configured.\nAdd crossRepos to shirokuma-docs.config.yaml:\n crossRepos:\n myalias: "owner/repo"`;
|
|
128
|
+
}
|
|
129
|
+
// Check if alias exists
|
|
130
|
+
if (crossRepos[alias]) {
|
|
131
|
+
return null; // Valid
|
|
132
|
+
}
|
|
133
|
+
const availableAliases = Object.entries(crossRepos)
|
|
134
|
+
.map(([a, repo]) => ` ${a} (${repo})`)
|
|
135
|
+
.join("\n");
|
|
136
|
+
// Check if input looks like a full path (owner/repo)
|
|
137
|
+
if (alias.includes("/")) {
|
|
138
|
+
// Check if this full path matches any configured repo
|
|
139
|
+
const matchingAlias = Object.entries(crossRepos).find(([, repo]) => repo === alias);
|
|
140
|
+
if (matchingAlias) {
|
|
141
|
+
return `Use the alias '${matchingAlias[0]}' instead of '${alias}'.\nAvailable aliases:\n${availableAliases}`;
|
|
142
|
+
}
|
|
143
|
+
return `Unknown repo '${alias}'.\nUse a configured alias instead of owner/repo.\nAvailable aliases:\n${availableAliases}\nSee crossRepos in shirokuma-docs.config.yaml`;
|
|
144
|
+
}
|
|
145
|
+
// Unknown alias
|
|
146
|
+
return `Unknown repo alias '${alias}'.\nAvailable aliases:\n${availableAliases}\nSee crossRepos in shirokuma-docs.config.yaml`;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Check if a repo full name matches the private side of any pair
|
|
150
|
+
*/
|
|
151
|
+
export function isPrivateRepo(repoFullName, config) {
|
|
152
|
+
const pairs = getAllRepoPairs(config);
|
|
153
|
+
return pairs.some(p => p.private === repoFullName);
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Check if a repo full name matches the public side of any pair
|
|
157
|
+
*/
|
|
158
|
+
export function isPublicRepo(repoFullName, config) {
|
|
159
|
+
const pairs = getAllRepoPairs(config);
|
|
160
|
+
return pairs.some(p => p.public === repoFullName);
|
|
161
|
+
}
|
|
162
|
+
// ========================================
|
|
163
|
+
// Merged Exclude Patterns
|
|
164
|
+
// ========================================
|
|
165
|
+
/**
|
|
166
|
+
* Get merged exclude patterns for a repo pair release.
|
|
167
|
+
*
|
|
168
|
+
* Combines patterns from three sources (in order):
|
|
169
|
+
* 1. DEFAULT_EXCLUDE_PATTERNS (built-in base patterns)
|
|
170
|
+
* 2. Config patterns (repoPairs[alias].exclude in config YAML)
|
|
171
|
+
* 3. .shirokumaignore file patterns (project root)
|
|
172
|
+
*
|
|
173
|
+
* Patterns are deduplicated while preserving order.
|
|
174
|
+
*
|
|
175
|
+
* @param alias - Repo pair alias
|
|
176
|
+
* @param projectPath - Absolute path to the project root
|
|
177
|
+
* @param config - Optional pre-loaded config
|
|
178
|
+
* @returns Deduplicated array of all exclude patterns
|
|
179
|
+
*/
|
|
180
|
+
export function getMergedExcludePatterns(alias, projectPath, config) {
|
|
181
|
+
const cfg = config ?? loadGhConfig();
|
|
182
|
+
// Access raw config to check if exclude was explicitly set.
|
|
183
|
+
// Note: getRepoPair() → getAllRepoPairs() applies fallback
|
|
184
|
+
// (pair.exclude ?? DEFAULT_EXCLUDE_PATTERNS), so pair.exclude
|
|
185
|
+
// is never undefined there. We need the raw config value.
|
|
186
|
+
const rawExclude = cfg.repoPairs?.[alias]?.exclude;
|
|
187
|
+
// .shirokumaignore file patterns
|
|
188
|
+
const filePatterns = loadShirokumaIgnoreFile(projectPath);
|
|
189
|
+
// If no explicit exclude config, use only defaults + file patterns
|
|
190
|
+
if (rawExclude === undefined) {
|
|
191
|
+
return mergeExcludePatterns(DEFAULT_EXCLUDE_PATTERNS, [], filePatterns);
|
|
192
|
+
}
|
|
193
|
+
// Explicit config: merge defaults + config + file patterns
|
|
194
|
+
return mergeExcludePatterns(DEFAULT_EXCLUDE_PATTERNS, rawExclude, filePatterns);
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=repo-pairs.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repo-pairs.js","sourceRoot":"","sources":["../../src/utils/repo-pairs.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route Inference Utility
|
|
3
|
+
*
|
|
4
|
+
* Utilities for inferring URL routes from Next.js App Router file paths
|
|
5
|
+
* and applying route parameter substitution.
|
|
6
|
+
*
|
|
7
|
+
* @module utils/route-inference
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Infer URL route from Next.js App Router file path.
|
|
11
|
+
*
|
|
12
|
+
* Extracts the route from a page.tsx file path by:
|
|
13
|
+
* 1. Finding the 'app' directory
|
|
14
|
+
* 2. Removing layout groups (parenthesized segments)
|
|
15
|
+
* 3. Removing the page.tsx filename
|
|
16
|
+
*
|
|
17
|
+
* @param filePath - Relative file path (e.g., "apps/web/app/[locale]/(dashboard)/page.tsx")
|
|
18
|
+
* @returns Inferred route (e.g., "/[locale]") or null if not a page file
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* inferRouteFromPath("apps/web/app/[locale]/(dashboard)/[orgSlug]/page.tsx")
|
|
23
|
+
* // Returns: "/[locale]/[orgSlug]"
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function inferRouteFromPath(filePath: string): string | null;
|
|
27
|
+
/**
|
|
28
|
+
* Apply route parameter substitution.
|
|
29
|
+
*
|
|
30
|
+
* Replaces dynamic route segments like [locale] with actual values
|
|
31
|
+
* from the routeParams configuration.
|
|
32
|
+
*
|
|
33
|
+
* @param route - Route with dynamic segments (e.g., "/[locale]/[orgSlug]")
|
|
34
|
+
* @param routeParams - Parameter mapping (e.g., { "[locale]": "ja", "[orgSlug]": "demo-org" })
|
|
35
|
+
* @returns Route with substituted values (e.g., "/ja/demo-org")
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* ```typescript
|
|
39
|
+
* applyRouteParams("/[locale]/[orgSlug]", { "[locale]": "ja", "[orgSlug]": "test" })
|
|
40
|
+
* // Returns: "/ja/test"
|
|
41
|
+
* ```
|
|
42
|
+
*/
|
|
43
|
+
export declare function applyRouteParams(route: string, routeParams: Record<string, string>): string;
|
|
44
|
+
/**
|
|
45
|
+
* Normalize route string.
|
|
46
|
+
*
|
|
47
|
+
* Ensures consistent route format:
|
|
48
|
+
* - Adds leading slash if missing
|
|
49
|
+
* - Removes trailing slash (except for root "/")
|
|
50
|
+
* - Collapses multiple consecutive slashes
|
|
51
|
+
*
|
|
52
|
+
* @param route - Route string to normalize
|
|
53
|
+
* @returns Normalized route string
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```typescript
|
|
57
|
+
* normalizeRoute("ja/dashboard/") // Returns: "/ja/dashboard"
|
|
58
|
+
* normalizeRoute("/ja//dashboard") // Returns: "/ja/dashboard"
|
|
59
|
+
* normalizeRoute("/") // Returns: "/"
|
|
60
|
+
* ```
|
|
61
|
+
*/
|
|
62
|
+
export declare function normalizeRoute(route: string): string;
|
|
63
|
+
/**
|
|
64
|
+
* Infer screen name from file path.
|
|
65
|
+
*
|
|
66
|
+
* Generates a screen name from the file path by:
|
|
67
|
+
* 1. Extracting the last meaningful segment before page.tsx
|
|
68
|
+
* 2. Converting to PascalCase
|
|
69
|
+
* 3. Appending "Screen" suffix
|
|
70
|
+
*
|
|
71
|
+
* @param filePath - File path to generate screen name from
|
|
72
|
+
* @returns Inferred screen name (e.g., "DashboardScreen")
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* ```typescript
|
|
76
|
+
* inferScreenNameFromPath("apps/web/app/[locale]/dashboard/page.tsx")
|
|
77
|
+
* // Returns: "DashboardScreen"
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare function inferScreenNameFromPath(filePath: string): string;
|
|
81
|
+
//# sourceMappingURL=route-inference.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-inference.d.ts","sourceRoot":"","sources":["../../src/utils/route-inference.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CA8BlE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAClC,MAAM,CAQR;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAapD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAqBhE"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route Inference Utility
|
|
3
|
+
*
|
|
4
|
+
* Utilities for inferring URL routes from Next.js App Router file paths
|
|
5
|
+
* and applying route parameter substitution.
|
|
6
|
+
*
|
|
7
|
+
* @module utils/route-inference
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Infer URL route from Next.js App Router file path.
|
|
11
|
+
*
|
|
12
|
+
* Extracts the route from a page.tsx file path by:
|
|
13
|
+
* 1. Finding the 'app' directory
|
|
14
|
+
* 2. Removing layout groups (parenthesized segments)
|
|
15
|
+
* 3. Removing the page.tsx filename
|
|
16
|
+
*
|
|
17
|
+
* @param filePath - Relative file path (e.g., "apps/web/app/[locale]/(dashboard)/page.tsx")
|
|
18
|
+
* @returns Inferred route (e.g., "/[locale]") or null if not a page file
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* inferRouteFromPath("apps/web/app/[locale]/(dashboard)/[orgSlug]/page.tsx")
|
|
23
|
+
* // Returns: "/[locale]/[orgSlug]"
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export function inferRouteFromPath(filePath) {
|
|
27
|
+
// Only process page.tsx files
|
|
28
|
+
if (!filePath.endsWith("page.tsx") && !filePath.endsWith("page.ts")) {
|
|
29
|
+
return null;
|
|
30
|
+
}
|
|
31
|
+
// Find the 'app' directory in the path
|
|
32
|
+
const appIndex = filePath.indexOf("/app/");
|
|
33
|
+
if (appIndex === -1) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
// Extract the route part (after 'app/')
|
|
37
|
+
const routePart = filePath.substring(appIndex + 5); // +5 for '/app/'
|
|
38
|
+
// Remove page.tsx filename (handles both /page.tsx and page.tsx at root)
|
|
39
|
+
const withoutFilename = routePart.replace(/\/?page\.(tsx|ts)$/, "");
|
|
40
|
+
// Split into segments
|
|
41
|
+
const segments = withoutFilename.split("/").filter((s) => s.length > 0);
|
|
42
|
+
// Filter out layout groups (segments in parentheses)
|
|
43
|
+
const filteredSegments = segments.filter((segment) => !segment.startsWith("("));
|
|
44
|
+
// Build the route
|
|
45
|
+
if (filteredSegments.length === 0) {
|
|
46
|
+
return "/";
|
|
47
|
+
}
|
|
48
|
+
return "/" + filteredSegments.join("/");
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Apply route parameter substitution.
|
|
52
|
+
*
|
|
53
|
+
* Replaces dynamic route segments like [locale] with actual values
|
|
54
|
+
* from the routeParams configuration.
|
|
55
|
+
*
|
|
56
|
+
* @param route - Route with dynamic segments (e.g., "/[locale]/[orgSlug]")
|
|
57
|
+
* @param routeParams - Parameter mapping (e.g., { "[locale]": "ja", "[orgSlug]": "demo-org" })
|
|
58
|
+
* @returns Route with substituted values (e.g., "/ja/demo-org")
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* applyRouteParams("/[locale]/[orgSlug]", { "[locale]": "ja", "[orgSlug]": "test" })
|
|
63
|
+
* // Returns: "/ja/test"
|
|
64
|
+
* ```
|
|
65
|
+
*/
|
|
66
|
+
export function applyRouteParams(route, routeParams) {
|
|
67
|
+
let result = route;
|
|
68
|
+
for (const [param, value] of Object.entries(routeParams)) {
|
|
69
|
+
result = result.replaceAll(param, value);
|
|
70
|
+
}
|
|
71
|
+
return result;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Normalize route string.
|
|
75
|
+
*
|
|
76
|
+
* Ensures consistent route format:
|
|
77
|
+
* - Adds leading slash if missing
|
|
78
|
+
* - Removes trailing slash (except for root "/")
|
|
79
|
+
* - Collapses multiple consecutive slashes
|
|
80
|
+
*
|
|
81
|
+
* @param route - Route string to normalize
|
|
82
|
+
* @returns Normalized route string
|
|
83
|
+
*
|
|
84
|
+
* @example
|
|
85
|
+
* ```typescript
|
|
86
|
+
* normalizeRoute("ja/dashboard/") // Returns: "/ja/dashboard"
|
|
87
|
+
* normalizeRoute("/ja//dashboard") // Returns: "/ja/dashboard"
|
|
88
|
+
* normalizeRoute("/") // Returns: "/"
|
|
89
|
+
* ```
|
|
90
|
+
*/
|
|
91
|
+
export function normalizeRoute(route) {
|
|
92
|
+
// Add leading slash if missing
|
|
93
|
+
let normalized = route.startsWith("/") ? route : "/" + route;
|
|
94
|
+
// Collapse multiple slashes
|
|
95
|
+
normalized = normalized.replace(/\/+/g, "/");
|
|
96
|
+
// Remove trailing slash (except for root)
|
|
97
|
+
if (normalized.length > 1 && normalized.endsWith("/")) {
|
|
98
|
+
normalized = normalized.slice(0, -1);
|
|
99
|
+
}
|
|
100
|
+
return normalized;
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Infer screen name from file path.
|
|
104
|
+
*
|
|
105
|
+
* Generates a screen name from the file path by:
|
|
106
|
+
* 1. Extracting the last meaningful segment before page.tsx
|
|
107
|
+
* 2. Converting to PascalCase
|
|
108
|
+
* 3. Appending "Screen" suffix
|
|
109
|
+
*
|
|
110
|
+
* @param filePath - File path to generate screen name from
|
|
111
|
+
* @returns Inferred screen name (e.g., "DashboardScreen")
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```typescript
|
|
115
|
+
* inferScreenNameFromPath("apps/web/app/[locale]/dashboard/page.tsx")
|
|
116
|
+
* // Returns: "DashboardScreen"
|
|
117
|
+
* ```
|
|
118
|
+
*/
|
|
119
|
+
export function inferScreenNameFromPath(filePath) {
|
|
120
|
+
// Extract route first
|
|
121
|
+
const route = inferRouteFromPath(filePath);
|
|
122
|
+
if (!route || route === "/") {
|
|
123
|
+
return "HomeScreen";
|
|
124
|
+
}
|
|
125
|
+
// Get the last segment
|
|
126
|
+
const segments = route.split("/").filter((s) => s.length > 0);
|
|
127
|
+
const lastSegment = segments[segments.length - 1];
|
|
128
|
+
// Remove brackets from dynamic segments
|
|
129
|
+
const cleanSegment = lastSegment.replace(/^\[|\]$/g, "");
|
|
130
|
+
// Convert to PascalCase
|
|
131
|
+
const pascalCase = cleanSegment
|
|
132
|
+
.split(/[-_]/)
|
|
133
|
+
.map((word) => word.charAt(0).toUpperCase() + word.slice(1))
|
|
134
|
+
.join("");
|
|
135
|
+
return pascalCase + "Screen";
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=route-inference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"route-inference.js","sourceRoot":"","sources":["../../src/utils/route-inference.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sanitize - 入力サニタイズユーティリティ
|
|
3
|
+
*
|
|
4
|
+
* 外部入力を安全に扱うための共通関数群。
|
|
5
|
+
* GitHub search クエリ構築、正規表現パターン構築で使用。
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* ダブルクォートを除去
|
|
9
|
+
*
|
|
10
|
+
* GitHub search の `category:"..."` 等、クォート内に埋め込む値から
|
|
11
|
+
* ダブルクォートを除去し、構文破壊を防ぐ。
|
|
12
|
+
*/
|
|
13
|
+
export declare function stripDoubleQuotes(str: string): string;
|
|
14
|
+
/**
|
|
15
|
+
* 正規表現の特殊文字をエスケープ
|
|
16
|
+
*
|
|
17
|
+
* 外部入力を `new RegExp()` のパターンに埋め込む際に使用。
|
|
18
|
+
*/
|
|
19
|
+
export declare function escapeRegExp(str: string): string;
|
|
20
|
+
/**
|
|
21
|
+
* 安全に RegExp を構築
|
|
22
|
+
*
|
|
23
|
+
* 設定ファイル等から意図的に正規表現パターンを受け取る場合に使用。
|
|
24
|
+
* 無効なパターンの場合は null を返す。
|
|
25
|
+
*/
|
|
26
|
+
export declare function safeRegExp(pattern: string, flags?: string): RegExp | null;
|
|
27
|
+
//# sourceMappingURL=sanitize.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.d.ts","sourceRoot":"","sources":["../../src/utils/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAErD;AAED;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAMzE"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* sanitize - 入力サニタイズユーティリティ
|
|
3
|
+
*
|
|
4
|
+
* 外部入力を安全に扱うための共通関数群。
|
|
5
|
+
* GitHub search クエリ構築、正規表現パターン構築で使用。
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* ダブルクォートを除去
|
|
9
|
+
*
|
|
10
|
+
* GitHub search の `category:"..."` 等、クォート内に埋め込む値から
|
|
11
|
+
* ダブルクォートを除去し、構文破壊を防ぐ。
|
|
12
|
+
*/
|
|
13
|
+
export function stripDoubleQuotes(str) {
|
|
14
|
+
return str.replace(/"/g, "");
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 正規表現の特殊文字をエスケープ
|
|
18
|
+
*
|
|
19
|
+
* 外部入力を `new RegExp()` のパターンに埋め込む際に使用。
|
|
20
|
+
*/
|
|
21
|
+
export function escapeRegExp(str) {
|
|
22
|
+
return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* 安全に RegExp を構築
|
|
26
|
+
*
|
|
27
|
+
* 設定ファイル等から意図的に正規表現パターンを受け取る場合に使用。
|
|
28
|
+
* 無効なパターンの場合は null を返す。
|
|
29
|
+
*/
|
|
30
|
+
export function safeRegExp(pattern, flags) {
|
|
31
|
+
try {
|
|
32
|
+
return new RegExp(pattern, flags);
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=sanitize.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sanitize.js","sourceRoot":"","sources":["../../src/utils/sanitize.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,GAAW;IAC3C,OAAO,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,OAAO,GAAG,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,KAAc;IACxD,IAAI,CAAC;QACH,OAAO,IAAI,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GitHub setup validation utility (#345, #527)
|
|
3
|
+
*
|
|
4
|
+
* Checks whether manual GitHub configuration steps have been completed:
|
|
5
|
+
* - Discussion categories (Handovers, ADR, Knowledge, Research) with recommended settings
|
|
6
|
+
* - Project existence and required fields (Status, Priority, Type, Size)
|
|
7
|
+
* - Project workflow automations (Item closed → Done, PR merged → Done)
|
|
8
|
+
* - Metrics text fields (if metrics enabled)
|
|
9
|
+
*/
|
|
10
|
+
import type { Logger } from "./logger.js";
|
|
11
|
+
/** Discussion カテゴリの推奨設定 */
|
|
12
|
+
export interface RecommendedCategorySetting {
|
|
13
|
+
description: string;
|
|
14
|
+
emoji: string;
|
|
15
|
+
format: "Open-ended discussion" | "Question / Answer";
|
|
16
|
+
}
|
|
17
|
+
export interface SetupCheckItem {
|
|
18
|
+
category: "discussions" | "workflows" | "metrics" | "project";
|
|
19
|
+
name: string;
|
|
20
|
+
ok: boolean;
|
|
21
|
+
hint?: string;
|
|
22
|
+
url?: string;
|
|
23
|
+
/** Discussion カテゴリの推奨設定(discussions カテゴリのみ) */
|
|
24
|
+
recommended?: RecommendedCategorySetting;
|
|
25
|
+
}
|
|
26
|
+
export interface SetupCheckResult {
|
|
27
|
+
repository: string;
|
|
28
|
+
items: SetupCheckItem[];
|
|
29
|
+
summary: {
|
|
30
|
+
total: number;
|
|
31
|
+
ok: number;
|
|
32
|
+
missing: number;
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* 各 Discussion カテゴリの推奨設定
|
|
37
|
+
* GitHub UI でカテゴリを作成する際に使用する値
|
|
38
|
+
*/
|
|
39
|
+
export declare const RECOMMENDED_CATEGORY_SETTINGS: Record<string, RecommendedCategorySetting>;
|
|
40
|
+
/**
|
|
41
|
+
* Validate GitHub setup and return results
|
|
42
|
+
*/
|
|
43
|
+
export declare function validateGitHubSetup(logger: Logger): SetupCheckResult | null;
|
|
44
|
+
/**
|
|
45
|
+
* Print setup check results to logger (human-friendly format)
|
|
46
|
+
*/
|
|
47
|
+
export declare function printSetupCheckResults(result: SetupCheckResult, logger: Logger): void;
|
|
48
|
+
//# sourceMappingURL=setup-check.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-check.d.ts","sourceRoot":"","sources":["../../src/utils/setup-check.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAWH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAM1C,2BAA2B;AAC3B,MAAM,WAAW,0BAA0B;IACzC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,uBAAuB,GAAG,mBAAmB,CAAC;CACvD;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,aAAa,GAAG,WAAW,GAAG,SAAS,GAAG,SAAS,CAAC;IAC9D,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+CAA+C;IAC/C,WAAW,CAAC,EAAE,0BAA0B,CAAC;CAC1C;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,EAAE,MAAM,CAAC;QACX,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAWD;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAqBpF,CAAC;AAgJF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,GAAG,IAAI,CAoC3E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,gBAAgB,EACxB,MAAM,EAAE,MAAM,GACb,IAAI,CAwCN"}
|