@shirokuma-library/shirokuma-docs 0.1.0-alpha.5
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 +308 -0
- package/README.md +308 -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 +172 -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 +193 -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 +743 -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 +429 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/issues-pr.d.ts +74 -0
- package/dist/commands/issues-pr.d.ts.map +1 -0
- package/dist/commands/issues-pr.js +417 -0
- package/dist/commands/issues-pr.js.map +1 -0
- package/dist/commands/issues.d.ts +76 -0
- package/dist/commands/issues.d.ts.map +1 -0
- package/dist/commands/issues.js +1285 -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 +969 -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/session.d.ts +153 -0
- package/dist/commands/session.d.ts.map +1 -0
- package/dist/commands/session.js +1243 -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 +620 -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 +517 -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 +151 -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 +615 -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 +359 -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 +412 -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 +289 -0
- package/dist/md/validator/index.js.map +1 -0
- package/dist/parsers/details-jsdoc.d.ts +46 -0
- package/dist/parsers/details-jsdoc.d.ts.map +1 -0
- package/dist/parsers/details-jsdoc.js +262 -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 +145 -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 +655 -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 +270 -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 +111 -0
- package/dist/utils/formatters.d.ts.map +1 -0
- package/dist/utils/formatters.js +164 -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 +98 -0
- package/dist/utils/github.d.ts.map +1 -0
- package/dist/utils/github.js +295 -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/setup-check.d.ts +34 -0
- package/dist/utils/setup-check.d.ts.map +1 -0
- package/dist/utils/setup-check.js +136 -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 +155 -0
- package/i18n/cli/ja.json +155 -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 +21 -0
- package/portal/package.json +45 -0
- package/portal/postcss.config.mjs +8 -0
- package/portal/tsconfig.json +41 -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 @@
|
|
|
1
|
+
{"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/md/plugins/loader.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,SAAS,EAAE,CAAC;IACxB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,EAAE,QAAQ,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA6FxE"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
import * as path from 'path';
|
|
2
|
+
/**
|
|
3
|
+
* Load plugins from configuration
|
|
4
|
+
*/
|
|
5
|
+
export async function loadPlugins(config) {
|
|
6
|
+
const loaded = {
|
|
7
|
+
validators: [],
|
|
8
|
+
linters: [],
|
|
9
|
+
analyzers: [],
|
|
10
|
+
};
|
|
11
|
+
if (!config.plugins || config.plugins.length === 0) {
|
|
12
|
+
return loaded;
|
|
13
|
+
}
|
|
14
|
+
for (const pluginConfig of config.plugins) {
|
|
15
|
+
// Skip disabled plugins
|
|
16
|
+
if (pluginConfig.enabled === false) {
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
try {
|
|
20
|
+
// Resolve plugin module path
|
|
21
|
+
const modulePath = path.resolve(pluginConfig.module);
|
|
22
|
+
// Security: Validate plugin path to prevent path traversal
|
|
23
|
+
// Only allow:
|
|
24
|
+
// 1. Scoped npm packages (@org/package)
|
|
25
|
+
// 2. Unscoped npm packages (package-name)
|
|
26
|
+
// 3. Relative paths within project (./plugins/*, ../plugins/*)
|
|
27
|
+
const normalized = path.normalize(modulePath);
|
|
28
|
+
const isNpmPackage = !pluginConfig.module.startsWith('.') && !pluginConfig.module.startsWith('/');
|
|
29
|
+
const isRelativeWithinProject = pluginConfig.module.startsWith('./') || pluginConfig.module.startsWith('../');
|
|
30
|
+
if (!isNpmPackage && !isRelativeWithinProject) {
|
|
31
|
+
throw new Error(`Plugin path "${pluginConfig.module}" is not allowed. ` +
|
|
32
|
+
`Use npm package names (e.g., "my-plugin") or relative paths (e.g., "./plugins/my-plugin")`);
|
|
33
|
+
}
|
|
34
|
+
// Prevent path traversal beyond project root
|
|
35
|
+
const projectRoot = process.cwd();
|
|
36
|
+
if (isRelativeWithinProject && !normalized.startsWith(projectRoot)) {
|
|
37
|
+
throw new Error(`Plugin path "${pluginConfig.module}" attempts to access files outside project root. ` +
|
|
38
|
+
`This is not allowed for security reasons.`);
|
|
39
|
+
}
|
|
40
|
+
// Dynamic import
|
|
41
|
+
const pluginModule = await import(modulePath);
|
|
42
|
+
// Load validators
|
|
43
|
+
if (pluginConfig.validators && Array.isArray(pluginConfig.validators)) {
|
|
44
|
+
for (const validatorName of pluginConfig.validators) {
|
|
45
|
+
if (pluginModule[validatorName]) {
|
|
46
|
+
const ValidatorClass = pluginModule[validatorName];
|
|
47
|
+
const validator = new ValidatorClass(pluginConfig.config || {});
|
|
48
|
+
// Validate interface
|
|
49
|
+
if (!validator.name || typeof validator.validate !== 'function') {
|
|
50
|
+
throw new Error(`Validator ${validatorName} does not implement Validator interface`);
|
|
51
|
+
}
|
|
52
|
+
loaded.validators.push(validator);
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
throw new Error(`Validator ${validatorName} not found in ${pluginConfig.module}`);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// Load default export if it's a validator/linter/analyzer
|
|
60
|
+
if (pluginModule.default) {
|
|
61
|
+
const plugin = pluginModule.default;
|
|
62
|
+
if (plugin.validate && typeof plugin.validate === 'function') {
|
|
63
|
+
loaded.validators.push(plugin);
|
|
64
|
+
}
|
|
65
|
+
if (plugin.lint && typeof plugin.lint === 'function') {
|
|
66
|
+
loaded.linters.push(plugin);
|
|
67
|
+
}
|
|
68
|
+
if (plugin.analyze && typeof plugin.analyze === 'function') {
|
|
69
|
+
loaded.analyzers.push(plugin);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
catch (error) {
|
|
74
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
75
|
+
throw new Error(`Failed to load plugin ${pluginConfig.module}: ${message}`);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return loaded;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/md/plugins/loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAa7B;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,MAAc;IAC9C,MAAM,MAAM,GAAkB;QAC5B,UAAU,EAAE,EAAE;QACd,OAAO,EAAE,EAAE;QACX,SAAS,EAAE,EAAE;KACd,CAAC;IAEF,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;QAC1C,wBAAwB;QACxB,IAAI,YAAY,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;YACnC,SAAS;QACX,CAAC;QAED,IAAI,CAAC;YACH,6BAA6B;YAC7B,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAErD,2DAA2D;YAC3D,cAAc;YACd,wCAAwC;YACxC,0CAA0C;YAC1C,+DAA+D;YAC/D,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC9C,MAAM,YAAY,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAClG,MAAM,uBAAuB,GAAG,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAE9G,IAAI,CAAC,YAAY,IAAI,CAAC,uBAAuB,EAAE,CAAC;gBAC9C,MAAM,IAAI,KAAK,CACb,gBAAgB,YAAY,CAAC,MAAM,oBAAoB;oBACvD,2FAA2F,CAC5F,CAAC;YACJ,CAAC;YAED,6CAA6C;YAC7C,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;YAClC,IAAI,uBAAuB,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACnE,MAAM,IAAI,KAAK,CACb,gBAAgB,YAAY,CAAC,MAAM,mDAAmD;oBACtF,2CAA2C,CAC5C,CAAC;YACJ,CAAC;YAED,iBAAiB;YACjB,MAAM,YAAY,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;YAE9C,kBAAkB;YAClB,IAAI,YAAY,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,UAAU,CAAC,EAAE,CAAC;gBACtE,KAAK,MAAM,aAAa,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;oBACpD,IAAI,YAAY,CAAC,aAAa,CAAC,EAAE,CAAC;wBAChC,MAAM,cAAc,GAAG,YAAY,CAAC,aAAa,CAAC,CAAC;wBACnD,MAAM,SAAS,GAAG,IAAI,cAAc,CAAC,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;wBAEhE,qBAAqB;wBACrB,IAAI,CAAC,SAAS,CAAC,IAAI,IAAI,OAAO,SAAS,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;4BAChE,MAAM,IAAI,KAAK,CACb,aAAa,aAAa,yCAAyC,CACpE,CAAC;wBACJ,CAAC;wBAED,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACpC,CAAC;yBAAM,CAAC;wBACN,MAAM,IAAI,KAAK,CAAC,aAAa,aAAa,iBAAiB,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC;oBACpF,CAAC;gBACH,CAAC;YACH,CAAC;YAED,0DAA0D;YAC1D,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;gBACzB,MAAM,MAAM,GAAG,YAAY,CAAC,OAAO,CAAC;gBAEpC,IAAI,MAAM,CAAC,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;oBAC7D,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACjC,CAAC;gBAED,IAAI,MAAM,CAAC,IAAI,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;oBACrD,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9B,CAAC;gBAED,IAAI,MAAM,CAAC,OAAO,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;oBAC3D,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,yBAAyB,YAAY,CAAC,MAAM,KAAK,OAAO,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { Root } from 'mdast';
|
|
2
|
+
/**
|
|
3
|
+
* Options for hierarchical heading normalization
|
|
4
|
+
*/
|
|
5
|
+
export interface NormalizeHeadingsOptions {
|
|
6
|
+
/**
|
|
7
|
+
* Separator between heading levels
|
|
8
|
+
* @default " / "
|
|
9
|
+
*/
|
|
10
|
+
separator?: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Remark plugin to normalize headings hierarchically for RAG systems
|
|
14
|
+
*
|
|
15
|
+
* Converts flat headings into hierarchical context-aware headings:
|
|
16
|
+
* ## Configuration
|
|
17
|
+
* ### Consumer Settings
|
|
18
|
+
* #### auto_offset_reset
|
|
19
|
+
*
|
|
20
|
+
* Becomes:
|
|
21
|
+
* ## Configuration
|
|
22
|
+
* ### Configuration / Consumer Settings
|
|
23
|
+
* #### Configuration / Consumer Settings / auto_offset_reset
|
|
24
|
+
*
|
|
25
|
+
* This preserves context when documents are chunked for RAG retrieval.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* ```typescript
|
|
29
|
+
* import { unified } from 'unified';
|
|
30
|
+
* import remarkParse from 'remark-parse';
|
|
31
|
+
* import remarkStringify from 'remark-stringify';
|
|
32
|
+
* import { remarkNormalizeHeadings } from './plugins/normalize-headings.js';
|
|
33
|
+
*
|
|
34
|
+
* const processor = unified()
|
|
35
|
+
* .use(remarkParse)
|
|
36
|
+
* .use(remarkNormalizeHeadings, { separator: ' / ' })
|
|
37
|
+
* .use(remarkStringify);
|
|
38
|
+
*
|
|
39
|
+
* const result = await processor.process(markdown);
|
|
40
|
+
* ```
|
|
41
|
+
*/
|
|
42
|
+
export declare function remarkNormalizeHeadings(options?: NormalizeHeadingsOptions): (tree: Root) => void;
|
|
43
|
+
//# sourceMappingURL=normalize-headings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-headings.d.ts","sourceRoot":"","sources":["../../../src/md/plugins/normalize-headings.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAW,IAAI,EAAE,MAAM,OAAO,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,GAAE,wBAA6B,IAI9B,MAAM,IAAI,UAmBnB"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { visit } from 'unist-util-visit';
|
|
2
|
+
import { toString } from 'mdast-util-to-string';
|
|
3
|
+
/**
|
|
4
|
+
* Remark plugin to normalize headings hierarchically for RAG systems
|
|
5
|
+
*
|
|
6
|
+
* Converts flat headings into hierarchical context-aware headings:
|
|
7
|
+
* ## Configuration
|
|
8
|
+
* ### Consumer Settings
|
|
9
|
+
* #### auto_offset_reset
|
|
10
|
+
*
|
|
11
|
+
* Becomes:
|
|
12
|
+
* ## Configuration
|
|
13
|
+
* ### Configuration / Consumer Settings
|
|
14
|
+
* #### Configuration / Consumer Settings / auto_offset_reset
|
|
15
|
+
*
|
|
16
|
+
* This preserves context when documents are chunked for RAG retrieval.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import { unified } from 'unified';
|
|
21
|
+
* import remarkParse from 'remark-parse';
|
|
22
|
+
* import remarkStringify from 'remark-stringify';
|
|
23
|
+
* import { remarkNormalizeHeadings } from './plugins/normalize-headings.js';
|
|
24
|
+
*
|
|
25
|
+
* const processor = unified()
|
|
26
|
+
* .use(remarkParse)
|
|
27
|
+
* .use(remarkNormalizeHeadings, { separator: ' / ' })
|
|
28
|
+
* .use(remarkStringify);
|
|
29
|
+
*
|
|
30
|
+
* const result = await processor.process(markdown);
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
export function remarkNormalizeHeadings(options = {}) {
|
|
34
|
+
const separator = options.separator || ' / ';
|
|
35
|
+
return (tree) => {
|
|
36
|
+
const headingStack = [];
|
|
37
|
+
visit(tree, 'heading', (node) => {
|
|
38
|
+
const level = node.depth;
|
|
39
|
+
const text = toString(node);
|
|
40
|
+
// Update stack for current level
|
|
41
|
+
headingStack[level - 1] = text;
|
|
42
|
+
// Clear deeper levels
|
|
43
|
+
headingStack.splice(level);
|
|
44
|
+
// Build hierarchical text
|
|
45
|
+
const hierarchy = headingStack.slice(0, level).join(separator);
|
|
46
|
+
// Replace heading text with hierarchical version
|
|
47
|
+
node.children = [{ type: 'text', value: hierarchy }];
|
|
48
|
+
});
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=normalize-headings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-headings.js","sourceRoot":"","sources":["../../../src/md/plugins/normalize-headings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AACzC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAchD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,UAAU,uBAAuB,CACrC,UAAoC,EAAE;IAEtC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,KAAK,CAAC;IAE7C,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,MAAM,YAAY,GAAa,EAAE,CAAC;QAElC,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC,IAAa,EAAE,EAAE;YACvC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACzB,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;YAE5B,iCAAiC;YACjC,YAAY,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC;YAC/B,sBAAsB;YACtB,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAE3B,0BAA0B;YAC1B,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAE/D,iDAAiD;YACjD,IAAI,CAAC,QAAQ,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { Root } from 'mdast';
|
|
2
|
+
import type { VFile } from 'vfile';
|
|
3
|
+
/**
|
|
4
|
+
* Remark plugin to normalize whitespace in markdown
|
|
5
|
+
*
|
|
6
|
+
* Normalizes excessive whitespace:
|
|
7
|
+
* - Replaces 3+ consecutive blank lines with 2 blank lines
|
|
8
|
+
* - Removes trailing spaces from lines
|
|
9
|
+
*
|
|
10
|
+
* Token savings: ~5-20 tokens per document
|
|
11
|
+
*
|
|
12
|
+
* This plugin operates on text nodes and the final stringified output.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* ```typescript
|
|
16
|
+
* import { unified } from 'unified';
|
|
17
|
+
* import remarkParse from 'remark-parse';
|
|
18
|
+
* import remarkStringify from 'remark-stringify';
|
|
19
|
+
* import { remarkNormalizeWhitespace } from './plugins/normalize-whitespace.js';
|
|
20
|
+
*
|
|
21
|
+
* const processor = unified()
|
|
22
|
+
* .use(remarkParse)
|
|
23
|
+
* .use(remarkNormalizeWhitespace)
|
|
24
|
+
* .use(remarkStringify);
|
|
25
|
+
*
|
|
26
|
+
* const result = await processor.process(markdown);
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare function remarkNormalizeWhitespace(): (tree: Root, file?: VFile) => void;
|
|
30
|
+
/**
|
|
31
|
+
* Post-process stringified markdown to normalize whitespace
|
|
32
|
+
* This should be called after remark-stringify
|
|
33
|
+
*
|
|
34
|
+
* @param content - Stringified markdown content
|
|
35
|
+
* @returns Normalized content
|
|
36
|
+
*/
|
|
37
|
+
export declare function normalizeWhitespaceContent(content: string): string;
|
|
38
|
+
/**
|
|
39
|
+
* Check if content has excessive whitespace
|
|
40
|
+
* Useful for validation and detection
|
|
41
|
+
*
|
|
42
|
+
* @param content - Markdown content
|
|
43
|
+
* @returns True if excessive whitespace is found
|
|
44
|
+
*/
|
|
45
|
+
export declare function hasExcessiveWhitespace(content: string): boolean;
|
|
46
|
+
//# sourceMappingURL=normalize-whitespace.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-whitespace.d.ts","sourceRoot":"","sources":["../../../src/md/plugins/normalize-whitespace.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAQ,MAAM,OAAO,CAAC;AACxC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAEnC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,yBAAyB,KAC/B,MAAM,IAAI,EAAE,OAAO,KAAK,UAoBjC;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAWlE;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAe/D"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
import { visit } from 'unist-util-visit';
|
|
2
|
+
/**
|
|
3
|
+
* Remark plugin to normalize whitespace in markdown
|
|
4
|
+
*
|
|
5
|
+
* Normalizes excessive whitespace:
|
|
6
|
+
* - Replaces 3+ consecutive blank lines with 2 blank lines
|
|
7
|
+
* - Removes trailing spaces from lines
|
|
8
|
+
*
|
|
9
|
+
* Token savings: ~5-20 tokens per document
|
|
10
|
+
*
|
|
11
|
+
* This plugin operates on text nodes and the final stringified output.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```typescript
|
|
15
|
+
* import { unified } from 'unified';
|
|
16
|
+
* import remarkParse from 'remark-parse';
|
|
17
|
+
* import remarkStringify from 'remark-stringify';
|
|
18
|
+
* import { remarkNormalizeWhitespace } from './plugins/normalize-whitespace.js';
|
|
19
|
+
*
|
|
20
|
+
* const processor = unified()
|
|
21
|
+
* .use(remarkParse)
|
|
22
|
+
* .use(remarkNormalizeWhitespace)
|
|
23
|
+
* .use(remarkStringify);
|
|
24
|
+
*
|
|
25
|
+
* const result = await processor.process(markdown);
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export function remarkNormalizeWhitespace() {
|
|
29
|
+
return (tree, file) => {
|
|
30
|
+
// This plugin primarily works during stringify phase
|
|
31
|
+
// We'll use the stringify option to normalize whitespace
|
|
32
|
+
// Clean up text nodes (remove trailing spaces in text content)
|
|
33
|
+
visit(tree, 'text', (node) => {
|
|
34
|
+
// Trim trailing spaces from text values
|
|
35
|
+
// Note: This is conservative - only affects text nodes
|
|
36
|
+
if (node.value) {
|
|
37
|
+
// Remove trailing spaces at end of text nodes
|
|
38
|
+
node.value = node.value.replace(/ +$/gm, '');
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
// The main whitespace normalization happens in post-processing
|
|
42
|
+
// We'll attach a compiler to handle this after stringify
|
|
43
|
+
if (file && file.data) {
|
|
44
|
+
file.data.normalizeWhitespace = true;
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Post-process stringified markdown to normalize whitespace
|
|
50
|
+
* This should be called after remark-stringify
|
|
51
|
+
*
|
|
52
|
+
* @param content - Stringified markdown content
|
|
53
|
+
* @returns Normalized content
|
|
54
|
+
*/
|
|
55
|
+
export function normalizeWhitespaceContent(content) {
|
|
56
|
+
// Replace 3+ consecutive blank lines with 2 blank lines
|
|
57
|
+
let normalized = content.replace(/\n{3,}/g, '\n\n');
|
|
58
|
+
// Remove trailing spaces from each line
|
|
59
|
+
normalized = normalized
|
|
60
|
+
.split('\n')
|
|
61
|
+
.map(line => line.trimEnd())
|
|
62
|
+
.join('\n');
|
|
63
|
+
return normalized;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Check if content has excessive whitespace
|
|
67
|
+
* Useful for validation and detection
|
|
68
|
+
*
|
|
69
|
+
* @param content - Markdown content
|
|
70
|
+
* @returns True if excessive whitespace is found
|
|
71
|
+
*/
|
|
72
|
+
export function hasExcessiveWhitespace(content) {
|
|
73
|
+
// Check for 3+ consecutive blank lines
|
|
74
|
+
if (content.match(/\n{3,}/)) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
// Check for trailing spaces
|
|
78
|
+
const lines = content.split('\n');
|
|
79
|
+
for (const line of lines) {
|
|
80
|
+
if (line !== line.trimEnd() && line.trim() !== '') {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return false;
|
|
85
|
+
}
|
|
86
|
+
//# sourceMappingURL=normalize-whitespace.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"normalize-whitespace.js","sourceRoot":"","sources":["../../../src/md/plugins/normalize-whitespace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAIzC;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO,CAAC,IAAU,EAAE,IAAY,EAAE,EAAE;QAClC,qDAAqD;QACrD,yDAAyD;QAEzD,+DAA+D;QAC/D,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,IAAU,EAAE,EAAE;YACjC,wCAAwC;YACxC,uDAAuD;YACvD,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBACf,8CAA8C;gBAC9C,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,+DAA+D;QAC/D,yDAAyD;QACzD,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QACvC,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CAAC,OAAe;IACxD,wDAAwD;IACxD,IAAI,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAEpD,wCAAwC;IACxC,UAAU,GAAG,UAAU;SACpB,KAAK,CAAC,IAAI,CAAC;SACX,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;SAC3B,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAe;IACpD,uCAAuC;IACvC,IAAI,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,4BAA4B;IAC5B,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;YAClD,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Root } from 'mdast';
|
|
2
|
+
/**
|
|
3
|
+
* Remark plugin to remove badge images from markdown
|
|
4
|
+
*
|
|
5
|
+
* Removes build badges, status images, and other visual noise:
|
|
6
|
+
* 
|
|
7
|
+
* 
|
|
8
|
+
* 
|
|
9
|
+
*
|
|
10
|
+
* Token savings: ~20-100 tokens per badge
|
|
11
|
+
*
|
|
12
|
+
* Detects common badge patterns:
|
|
13
|
+
* - shields.io badges
|
|
14
|
+
* - Travis CI badges
|
|
15
|
+
* - CircleCI badges
|
|
16
|
+
* - GitHub Actions badges
|
|
17
|
+
* - Codecov badges
|
|
18
|
+
* - npm version badges
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* import { unified } from 'unified';
|
|
23
|
+
* import remarkParse from 'remark-parse';
|
|
24
|
+
* import remarkStringify from 'remark-stringify';
|
|
25
|
+
* import { remarkRemoveBadges } from './plugins/remove-badges.js';
|
|
26
|
+
*
|
|
27
|
+
* const processor = unified()
|
|
28
|
+
* .use(remarkParse)
|
|
29
|
+
* .use(remarkRemoveBadges)
|
|
30
|
+
* .use(remarkStringify);
|
|
31
|
+
*
|
|
32
|
+
* const result = await processor.process(markdown);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export declare function remarkRemoveBadges(): (tree: Root) => void;
|
|
36
|
+
//# sourceMappingURL=remove-badges.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-badges.d.ts","sourceRoot":"","sources":["../../../src/md/plugins/remove-badges.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAS,MAAM,OAAO,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,kBAAkB,KAYxB,MAAM,IAAI,UAYnB"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { visit, SKIP } from 'unist-util-visit';
|
|
2
|
+
/**
|
|
3
|
+
* Remark plugin to remove badge images from markdown
|
|
4
|
+
*
|
|
5
|
+
* Removes build badges, status images, and other visual noise:
|
|
6
|
+
* 
|
|
7
|
+
* 
|
|
8
|
+
* 
|
|
9
|
+
*
|
|
10
|
+
* Token savings: ~20-100 tokens per badge
|
|
11
|
+
*
|
|
12
|
+
* Detects common badge patterns:
|
|
13
|
+
* - shields.io badges
|
|
14
|
+
* - Travis CI badges
|
|
15
|
+
* - CircleCI badges
|
|
16
|
+
* - GitHub Actions badges
|
|
17
|
+
* - Codecov badges
|
|
18
|
+
* - npm version badges
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* ```typescript
|
|
22
|
+
* import { unified } from 'unified';
|
|
23
|
+
* import remarkParse from 'remark-parse';
|
|
24
|
+
* import remarkStringify from 'remark-stringify';
|
|
25
|
+
* import { remarkRemoveBadges } from './plugins/remove-badges.js';
|
|
26
|
+
*
|
|
27
|
+
* const processor = unified()
|
|
28
|
+
* .use(remarkParse)
|
|
29
|
+
* .use(remarkRemoveBadges)
|
|
30
|
+
* .use(remarkStringify);
|
|
31
|
+
*
|
|
32
|
+
* const result = await processor.process(markdown);
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
export function remarkRemoveBadges() {
|
|
36
|
+
const badgePatterns = [
|
|
37
|
+
/shields\.io/i,
|
|
38
|
+
/badge/i,
|
|
39
|
+
/travis-ci/i,
|
|
40
|
+
/circleci/i,
|
|
41
|
+
/github\.com\/.*\/workflows\/.*\/badge\.svg/i,
|
|
42
|
+
/codecov\.io/i,
|
|
43
|
+
/img\.shields\.io/i,
|
|
44
|
+
/badgen\.net/i,
|
|
45
|
+
];
|
|
46
|
+
return (tree) => {
|
|
47
|
+
visit(tree, 'image', (node, index, parent) => {
|
|
48
|
+
// Check if image URL matches any badge pattern
|
|
49
|
+
if (badgePatterns.some(pattern => pattern.test(node.url))) {
|
|
50
|
+
// Remove badge image
|
|
51
|
+
if (parent && typeof index === 'number') {
|
|
52
|
+
parent.children.splice(index, 1);
|
|
53
|
+
return [SKIP, index];
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=remove-badges.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-badges.js","sourceRoot":"","sources":["../../../src/md/plugins/remove-badges.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG/C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,aAAa,GAAG;QACpB,cAAc;QACd,QAAQ;QACR,YAAY;QACZ,WAAW;QACX,6CAA6C;QAC7C,cAAc;QACd,mBAAmB;QACnB,cAAc;KACf,CAAC;IAEF,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,CAAC,IAAW,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAClD,+CAA+C;YAC/C,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC1D,qBAAqB;gBACrB,IAAI,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACjC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Root } from 'mdast';
|
|
2
|
+
/**
|
|
3
|
+
* Remark plugin to remove HTML comments from markdown
|
|
4
|
+
*
|
|
5
|
+
* Removes development comments and TODOs from LLM output:
|
|
6
|
+
* <!-- TODO: Update this section -->
|
|
7
|
+
* <!-- Author: John Doe, 2024-01-15 -->
|
|
8
|
+
*
|
|
9
|
+
* Token savings: ~10-50 tokens per document
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { unified } from 'unified';
|
|
14
|
+
* import remarkParse from 'remark-parse';
|
|
15
|
+
* import remarkStringify from 'remark-stringify';
|
|
16
|
+
* import { remarkRemoveComments } from './plugins/remove-comments.js';
|
|
17
|
+
*
|
|
18
|
+
* const processor = unified()
|
|
19
|
+
* .use(remarkParse)
|
|
20
|
+
* .use(remarkRemoveComments)
|
|
21
|
+
* .use(remarkStringify);
|
|
22
|
+
*
|
|
23
|
+
* const result = await processor.process(markdown);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export declare function remarkRemoveComments(): (tree: Root) => void;
|
|
27
|
+
//# sourceMappingURL=remove-comments.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-comments.d.ts","sourceRoot":"","sources":["../../../src/md/plugins/remove-comments.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,IAAI,EAAQ,MAAM,OAAO,CAAC;AAExC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,oBAAoB,KAC1B,MAAM,IAAI,UAYnB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { visit, SKIP } from 'unist-util-visit';
|
|
2
|
+
/**
|
|
3
|
+
* Remark plugin to remove HTML comments from markdown
|
|
4
|
+
*
|
|
5
|
+
* Removes development comments and TODOs from LLM output:
|
|
6
|
+
* <!-- TODO: Update this section -->
|
|
7
|
+
* <!-- Author: John Doe, 2024-01-15 -->
|
|
8
|
+
*
|
|
9
|
+
* Token savings: ~10-50 tokens per document
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* import { unified } from 'unified';
|
|
14
|
+
* import remarkParse from 'remark-parse';
|
|
15
|
+
* import remarkStringify from 'remark-stringify';
|
|
16
|
+
* import { remarkRemoveComments } from './plugins/remove-comments.js';
|
|
17
|
+
*
|
|
18
|
+
* const processor = unified()
|
|
19
|
+
* .use(remarkParse)
|
|
20
|
+
* .use(remarkRemoveComments)
|
|
21
|
+
* .use(remarkStringify);
|
|
22
|
+
*
|
|
23
|
+
* const result = await processor.process(markdown);
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export function remarkRemoveComments() {
|
|
27
|
+
return (tree) => {
|
|
28
|
+
visit(tree, 'html', (node, index, parent) => {
|
|
29
|
+
// Check if this is an HTML comment
|
|
30
|
+
if (node.value.match(/^<!--[\s\S]*?-->$/)) {
|
|
31
|
+
// Remove HTML comment
|
|
32
|
+
if (parent && typeof index === 'number') {
|
|
33
|
+
parent.children.splice(index, 1);
|
|
34
|
+
return [SKIP, index];
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=remove-comments.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-comments.js","sourceRoot":"","sources":["../../../src/md/plugins/remove-comments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAG/C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,IAAU,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAChD,mCAAmC;YACnC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC1C,sBAAsB;gBACtB,IAAI,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACjC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { Root } from 'mdast';
|
|
2
|
+
/**
|
|
3
|
+
* Remark plugin to remove duplicate paragraphs from markdown
|
|
4
|
+
*
|
|
5
|
+
* Removes repeated paragraph content (common in auto-generated docs):
|
|
6
|
+
* This library provides Markdown processing.
|
|
7
|
+
*
|
|
8
|
+
* ## Features
|
|
9
|
+
* This library provides Markdown processing. ← Removed
|
|
10
|
+
*
|
|
11
|
+
* Token savings: Varies (50-500 tokens per document for auto-generated content)
|
|
12
|
+
*
|
|
13
|
+
* Warning: Use with caution - legitimate repetition exists in natural writing.
|
|
14
|
+
* Recommended for auto-generated documentation only.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* import { unified } from 'unified';
|
|
19
|
+
* import remarkParse from 'remark-parse';
|
|
20
|
+
* import remarkStringify from 'remark-stringify';
|
|
21
|
+
* import { remarkRemoveDuplicates } from './plugins/remove-duplicates.js';
|
|
22
|
+
*
|
|
23
|
+
* const processor = unified()
|
|
24
|
+
* .use(remarkParse)
|
|
25
|
+
* .use(remarkRemoveDuplicates)
|
|
26
|
+
* .use(remarkStringify);
|
|
27
|
+
*
|
|
28
|
+
* const result = await processor.process(markdown);
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
export declare function remarkRemoveDuplicates(): (tree: Root) => void;
|
|
32
|
+
/**
|
|
33
|
+
* Count duplicate paragraphs without removing them
|
|
34
|
+
* Useful for analysis and reporting
|
|
35
|
+
*
|
|
36
|
+
* @param tree - Markdown AST
|
|
37
|
+
* @returns Number of duplicate paragraphs found
|
|
38
|
+
*/
|
|
39
|
+
export declare function countDuplicates(tree: Root): number;
|
|
40
|
+
//# sourceMappingURL=remove-duplicates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-duplicates.d.ts","sourceRoot":"","sources":["../../../src/md/plugins/remove-duplicates.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAa,MAAM,OAAO,CAAC;AAE7C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,sBAAsB,KAC5B,MAAM,IAAI,UAmBnB;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,CAkBlD"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { visit, SKIP } from 'unist-util-visit';
|
|
2
|
+
import { toString } from 'mdast-util-to-string';
|
|
3
|
+
/**
|
|
4
|
+
* Remark plugin to remove duplicate paragraphs from markdown
|
|
5
|
+
*
|
|
6
|
+
* Removes repeated paragraph content (common in auto-generated docs):
|
|
7
|
+
* This library provides Markdown processing.
|
|
8
|
+
*
|
|
9
|
+
* ## Features
|
|
10
|
+
* This library provides Markdown processing. ← Removed
|
|
11
|
+
*
|
|
12
|
+
* Token savings: Varies (50-500 tokens per document for auto-generated content)
|
|
13
|
+
*
|
|
14
|
+
* Warning: Use with caution - legitimate repetition exists in natural writing.
|
|
15
|
+
* Recommended for auto-generated documentation only.
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```typescript
|
|
19
|
+
* import { unified } from 'unified';
|
|
20
|
+
* import remarkParse from 'remark-parse';
|
|
21
|
+
* import remarkStringify from 'remark-stringify';
|
|
22
|
+
* import { remarkRemoveDuplicates } from './plugins/remove-duplicates.js';
|
|
23
|
+
*
|
|
24
|
+
* const processor = unified()
|
|
25
|
+
* .use(remarkParse)
|
|
26
|
+
* .use(remarkRemoveDuplicates)
|
|
27
|
+
* .use(remarkStringify);
|
|
28
|
+
*
|
|
29
|
+
* const result = await processor.process(markdown);
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
export function remarkRemoveDuplicates() {
|
|
33
|
+
return (tree) => {
|
|
34
|
+
const seen = new Set();
|
|
35
|
+
visit(tree, 'paragraph', (node, index, parent) => {
|
|
36
|
+
const text = toString(node).trim();
|
|
37
|
+
if (text && seen.has(text)) {
|
|
38
|
+
// Remove duplicate paragraph
|
|
39
|
+
if (parent && typeof index === 'number') {
|
|
40
|
+
parent.children.splice(index, 1);
|
|
41
|
+
return [SKIP, index];
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (text) {
|
|
45
|
+
seen.add(text);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Count duplicate paragraphs without removing them
|
|
52
|
+
* Useful for analysis and reporting
|
|
53
|
+
*
|
|
54
|
+
* @param tree - Markdown AST
|
|
55
|
+
* @returns Number of duplicate paragraphs found
|
|
56
|
+
*/
|
|
57
|
+
export function countDuplicates(tree) {
|
|
58
|
+
const seen = new Map();
|
|
59
|
+
let duplicates = 0;
|
|
60
|
+
visit(tree, 'paragraph', (node) => {
|
|
61
|
+
const text = toString(node).trim();
|
|
62
|
+
if (text) {
|
|
63
|
+
const count = seen.get(text) || 0;
|
|
64
|
+
seen.set(text, count + 1);
|
|
65
|
+
if (count > 0) {
|
|
66
|
+
duplicates++;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
return duplicates;
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=remove-duplicates.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"remove-duplicates.js","sourceRoot":"","sources":["../../../src/md/plugins/remove-duplicates.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,sBAAsB;IACpC,OAAO,CAAC,IAAU,EAAE,EAAE;QACpB,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAE/B,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,IAAe,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;YAC1D,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;YAEnC,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC3B,6BAA6B;gBAC7B,IAAI,MAAM,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;oBACxC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;oBACjC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;gBACvB,CAAC;YACH,CAAC;YAED,IAAI,IAAI,EAAE,CAAC;gBACT,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACjB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,eAAe,CAAC,IAAU;IACxC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,IAAe,EAAE,EAAE;QAC3C,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;QAEnC,IAAI,IAAI,EAAE,CAAC;YACT,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;YAE1B,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;gBACd,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC"}
|