@cairn-tool/cairn 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.markdownlintrc +7 -0
- package/LICENSE +21 -0
- package/README.md +1431 -0
- package/dist/agent/audit/baseline.d.ts +69 -0
- package/dist/agent/audit/baseline.js +128 -0
- package/dist/agent/audit/baseline.js.map +1 -0
- package/dist/agent/audit/index.d.ts +126 -0
- package/dist/agent/audit/index.js +625 -0
- package/dist/agent/audit/index.js.map +1 -0
- package/dist/agent/import/detect.d.ts +49 -0
- package/dist/agent/import/detect.js +159 -0
- package/dist/agent/import/detect.js.map +1 -0
- package/dist/agent/import/normalize.d.ts +72 -0
- package/dist/agent/import/normalize.js +475 -0
- package/dist/agent/import/normalize.js.map +1 -0
- package/dist/agent/install/index.d.ts +211 -0
- package/dist/agent/install/index.js +907 -0
- package/dist/agent/install/index.js.map +1 -0
- package/dist/agent/manifest.d.ts +75 -0
- package/dist/agent/manifest.js +210 -0
- package/dist/agent/manifest.js.map +1 -0
- package/dist/agent/marketplace/index.d.ts +69 -0
- package/dist/agent/marketplace/index.js +212 -0
- package/dist/agent/marketplace/index.js.map +1 -0
- package/dist/agent/marketplace/spec.d.ts +48 -0
- package/dist/agent/marketplace/spec.js +237 -0
- package/dist/agent/marketplace/spec.js.map +1 -0
- package/dist/agent/output.d.ts +36 -0
- package/dist/agent/output.js +56 -0
- package/dist/agent/output.js.map +1 -0
- package/dist/agent/overlays.d.ts +38 -0
- package/dist/agent/overlays.js +223 -0
- package/dist/agent/overlays.js.map +1 -0
- package/dist/agent/package/index.d.ts +105 -0
- package/dist/agent/package/index.js +339 -0
- package/dist/agent/package/index.js.map +1 -0
- package/dist/agent/package/tar.d.ts +36 -0
- package/dist/agent/package/tar.js +137 -0
- package/dist/agent/package/tar.js.map +1 -0
- package/dist/agent/parser.d.ts +13 -0
- package/dist/agent/parser.js +559 -0
- package/dist/agent/parser.js.map +1 -0
- package/dist/agent/render.d.ts +16 -0
- package/dist/agent/render.js +721 -0
- package/dist/agent/render.js.map +1 -0
- package/dist/agent/sarif.d.ts +18 -0
- package/dist/agent/sarif.js +56 -0
- package/dist/agent/sarif.js.map +1 -0
- package/dist/agent/scaffold.d.ts +86 -0
- package/dist/agent/scaffold.js +250 -0
- package/dist/agent/scaffold.js.map +1 -0
- package/dist/agent/targets/antigravity.d.ts +17 -0
- package/dist/agent/targets/antigravity.js +218 -0
- package/dist/agent/targets/antigravity.js.map +1 -0
- package/dist/agent/targets/claude-code.d.ts +2 -0
- package/dist/agent/targets/claude-code.js +220 -0
- package/dist/agent/targets/claude-code.js.map +1 -0
- package/dist/agent/targets/codex.d.ts +2 -0
- package/dist/agent/targets/codex.js +212 -0
- package/dist/agent/targets/codex.js.map +1 -0
- package/dist/agent/targets/cursor.d.ts +2 -0
- package/dist/agent/targets/cursor.js +210 -0
- package/dist/agent/targets/cursor.js.map +1 -0
- package/dist/agent/targets/index.d.ts +31 -0
- package/dist/agent/targets/index.js +64 -0
- package/dist/agent/targets/index.js.map +1 -0
- package/dist/agent/targets/opencode.d.ts +15 -0
- package/dist/agent/targets/opencode.js +215 -0
- package/dist/agent/targets/opencode.js.map +1 -0
- package/dist/agent/targets/schema.d.ts +315 -0
- package/dist/agent/targets/schema.js +179 -0
- package/dist/agent/targets/schema.js.map +1 -0
- package/dist/agent/test/assert.d.ts +46 -0
- package/dist/agent/test/assert.js +288 -0
- package/dist/agent/test/assert.js.map +1 -0
- package/dist/agent/test/index.d.ts +73 -0
- package/dist/agent/test/index.js +181 -0
- package/dist/agent/test/index.js.map +1 -0
- package/dist/agent/test/schema.d.ts +81 -0
- package/dist/agent/test/schema.js +235 -0
- package/dist/agent/test/schema.js.map +1 -0
- package/dist/agent/types.d.ts +204 -0
- package/dist/agent/types.js +11 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agent/upgrade.d.ts +29 -0
- package/dist/agent/upgrade.js +72 -0
- package/dist/agent/upgrade.js.map +1 -0
- package/dist/agent/writer.d.ts +30 -0
- package/dist/agent/writer.js +73 -0
- package/dist/agent/writer.js.map +1 -0
- package/dist/archive/db.d.ts +20 -0
- package/dist/archive/db.js +98 -0
- package/dist/archive/db.js.map +1 -0
- package/dist/archive/progress.d.ts +62 -0
- package/dist/archive/progress.js +151 -0
- package/dist/archive/progress.js.map +1 -0
- package/dist/archive/query.d.ts +86 -0
- package/dist/archive/query.js +241 -0
- package/dist/archive/query.js.map +1 -0
- package/dist/archive/run.d.ts +91 -0
- package/dist/archive/run.js +331 -0
- package/dist/archive/run.js.map +1 -0
- package/dist/archive/segments.d.ts +89 -0
- package/dist/archive/segments.js +144 -0
- package/dist/archive/segments.js.map +1 -0
- package/dist/archive/sets.d.ts +58 -0
- package/dist/archive/sets.js +344 -0
- package/dist/archive/sets.js.map +1 -0
- package/dist/archive/tar-read.d.ts +35 -0
- package/dist/archive/tar-read.js +90 -0
- package/dist/archive/tar-read.js.map +1 -0
- package/dist/audit-baseline.d.ts +66 -0
- package/dist/audit-baseline.js +124 -0
- package/dist/audit-baseline.js.map +1 -0
- package/dist/automation.d.ts +16 -0
- package/dist/automation.js +38 -0
- package/dist/automation.js.map +1 -0
- package/dist/backlinks.d.ts +15 -0
- package/dist/backlinks.js +30 -0
- package/dist/backlinks.js.map +1 -0
- package/dist/checkers/katex.d.ts +3 -0
- package/dist/checkers/katex.js +71 -0
- package/dist/checkers/katex.js.map +1 -0
- package/dist/checkers/markdown-lint.d.ts +28 -0
- package/dist/checkers/markdown-lint.js +53 -0
- package/dist/checkers/markdown-lint.js.map +1 -0
- package/dist/checkers/mermaid.d.ts +6 -0
- package/dist/checkers/mermaid.js +53 -0
- package/dist/checkers/mermaid.js.map +1 -0
- package/dist/checkers/references.d.ts +3 -0
- package/dist/checkers/references.js +55 -0
- package/dist/checkers/references.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +1117 -0
- package/dist/cli.js.map +1 -0
- package/dist/command-result.d.ts +6 -0
- package/dist/command-result.js +13 -0
- package/dist/command-result.js.map +1 -0
- package/dist/commands/agent-audit.d.ts +21 -0
- package/dist/commands/agent-audit.js +119 -0
- package/dist/commands/agent-audit.js.map +1 -0
- package/dist/commands/agent-doctor.d.ts +25 -0
- package/dist/commands/agent-doctor.js +217 -0
- package/dist/commands/agent-doctor.js.map +1 -0
- package/dist/commands/agent-import.d.ts +21 -0
- package/dist/commands/agent-import.js +212 -0
- package/dist/commands/agent-import.js.map +1 -0
- package/dist/commands/agent-install.d.ts +18 -0
- package/dist/commands/agent-install.js +59 -0
- package/dist/commands/agent-install.js.map +1 -0
- package/dist/commands/agent-installed.d.ts +6 -0
- package/dist/commands/agent-installed.js +17 -0
- package/dist/commands/agent-installed.js.map +1 -0
- package/dist/commands/agent-marketplace.d.ts +11 -0
- package/dist/commands/agent-marketplace.js +178 -0
- package/dist/commands/agent-marketplace.js.map +1 -0
- package/dist/commands/agent-package.d.ts +16 -0
- package/dist/commands/agent-package.js +159 -0
- package/dist/commands/agent-package.js.map +1 -0
- package/dist/commands/agent-scaffold.d.ts +17 -0
- package/dist/commands/agent-scaffold.js +181 -0
- package/dist/commands/agent-scaffold.js.map +1 -0
- package/dist/commands/agent-specs.d.ts +7 -0
- package/dist/commands/agent-specs.js +20 -0
- package/dist/commands/agent-specs.js.map +1 -0
- package/dist/commands/agent-test.d.ts +21 -0
- package/dist/commands/agent-test.js +50 -0
- package/dist/commands/agent-test.js.map +1 -0
- package/dist/commands/agent-uninstall.d.ts +6 -0
- package/dist/commands/agent-uninstall.js +45 -0
- package/dist/commands/agent-uninstall.js.map +1 -0
- package/dist/commands/agent-upgrade.d.ts +5 -0
- package/dist/commands/agent-upgrade.js +105 -0
- package/dist/commands/agent-upgrade.js.map +1 -0
- package/dist/commands/agent.d.ts +27 -0
- package/dist/commands/agent.js +549 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/archive.d.ts +47 -0
- package/dist/commands/archive.js +311 -0
- package/dist/commands/archive.js.map +1 -0
- package/dist/commands/audit.d.ts +25 -0
- package/dist/commands/audit.js +325 -0
- package/dist/commands/audit.js.map +1 -0
- package/dist/commands/check-snippets.d.ts +58 -0
- package/dist/commands/check-snippets.js +247 -0
- package/dist/commands/check-snippets.js.map +1 -0
- package/dist/commands/check-urls.d.ts +52 -0
- package/dist/commands/check-urls.js +205 -0
- package/dist/commands/check-urls.js.map +1 -0
- package/dist/commands/code-blocks.d.ts +8 -0
- package/dist/commands/code-blocks.js +66 -0
- package/dist/commands/code-blocks.js.map +1 -0
- package/dist/commands/completion.d.ts +15 -0
- package/dist/commands/completion.js +20 -0
- package/dist/commands/completion.js.map +1 -0
- package/dist/commands/context.d.ts +16 -0
- package/dist/commands/context.js +131 -0
- package/dist/commands/context.js.map +1 -0
- package/dist/commands/describe.d.ts +12 -0
- package/dist/commands/describe.js +62 -0
- package/dist/commands/describe.js.map +1 -0
- package/dist/commands/diff.d.ts +11 -0
- package/dist/commands/diff.js +185 -0
- package/dist/commands/diff.js.map +1 -0
- package/dist/commands/fix.d.ts +59 -0
- package/dist/commands/fix.js +173 -0
- package/dist/commands/fix.js.map +1 -0
- package/dist/commands/frontmatter.d.ts +7 -0
- package/dist/commands/frontmatter.js +84 -0
- package/dist/commands/frontmatter.js.map +1 -0
- package/dist/commands/graph.d.ts +12 -0
- package/dist/commands/graph.js +122 -0
- package/dist/commands/graph.js.map +1 -0
- package/dist/commands/headers.d.ts +7 -0
- package/dist/commands/headers.js +48 -0
- package/dist/commands/headers.js.map +1 -0
- package/dist/commands/index.d.ts +8 -0
- package/dist/commands/index.js +32 -0
- package/dist/commands/index.js.map +1 -0
- package/dist/commands/links.d.ts +9 -0
- package/dist/commands/links.js +123 -0
- package/dist/commands/links.js.map +1 -0
- package/dist/commands/lint-dir.d.ts +15 -0
- package/dist/commands/lint-dir.js +156 -0
- package/dist/commands/lint-dir.js.map +1 -0
- package/dist/commands/lint.d.ts +14 -0
- package/dist/commands/lint.js +45 -0
- package/dist/commands/lint.js.map +1 -0
- package/dist/commands/orphans.d.ts +10 -0
- package/dist/commands/orphans.js +74 -0
- package/dist/commands/orphans.js.map +1 -0
- package/dist/commands/outline.d.ts +7 -0
- package/dist/commands/outline.js +54 -0
- package/dist/commands/outline.js.map +1 -0
- package/dist/commands/query.d.ts +18 -0
- package/dist/commands/query.js +341 -0
- package/dist/commands/query.js.map +1 -0
- package/dist/commands/refs-to.d.ts +8 -0
- package/dist/commands/refs-to.js +65 -0
- package/dist/commands/refs-to.js.map +1 -0
- package/dist/commands/refs.d.ts +10 -0
- package/dist/commands/refs.js +103 -0
- package/dist/commands/refs.js.map +1 -0
- package/dist/commands/rename-file.d.ts +16 -0
- package/dist/commands/rename-file.js +215 -0
- package/dist/commands/rename-file.js.map +1 -0
- package/dist/commands/rename-heading.d.ts +10 -0
- package/dist/commands/rename-heading.js +182 -0
- package/dist/commands/rename-heading.js.map +1 -0
- package/dist/commands/schema.d.ts +10 -0
- package/dist/commands/schema.js +34 -0
- package/dist/commands/schema.js.map +1 -0
- package/dist/commands/scripts.d.ts +59 -0
- package/dist/commands/scripts.js +222 -0
- package/dist/commands/scripts.js.map +1 -0
- package/dist/commands/section.d.ts +9 -0
- package/dist/commands/section.js +49 -0
- package/dist/commands/section.js.map +1 -0
- package/dist/commands/serve.d.ts +6 -0
- package/dist/commands/serve.js +48 -0
- package/dist/commands/serve.js.map +1 -0
- package/dist/commands/stats.d.ts +6 -0
- package/dist/commands/stats.js +109 -0
- package/dist/commands/stats.js.map +1 -0
- package/dist/commands/structure.d.ts +6 -0
- package/dist/commands/structure.js +130 -0
- package/dist/commands/structure.js.map +1 -0
- package/dist/commands/tables.d.ts +8 -0
- package/dist/commands/tables.js +77 -0
- package/dist/commands/tables.js.map +1 -0
- package/dist/commands/tasks.d.ts +8 -0
- package/dist/commands/tasks.js +59 -0
- package/dist/commands/tasks.js.map +1 -0
- package/dist/commands/toc.d.ts +18 -0
- package/dist/commands/toc.js +105 -0
- package/dist/commands/toc.js.map +1 -0
- package/dist/commands/update-check.d.ts +36 -0
- package/dist/commands/update-check.js +119 -0
- package/dist/commands/update-check.js.map +1 -0
- package/dist/commands/usage.d.ts +56 -0
- package/dist/commands/usage.js +883 -0
- package/dist/commands/usage.js.map +1 -0
- package/dist/commands/validate-frontmatter.d.ts +13 -0
- package/dist/commands/validate-frontmatter.js +34 -0
- package/dist/commands/validate-frontmatter.js.map +1 -0
- package/dist/completion/model.d.ts +49 -0
- package/dist/completion/model.js +194 -0
- package/dist/completion/model.js.map +1 -0
- package/dist/completion/shells.d.ts +2 -0
- package/dist/completion/shells.js +280 -0
- package/dist/completion/shells.js.map +1 -0
- package/dist/config-schema.d.ts +15 -0
- package/dist/config-schema.js +44 -0
- package/dist/config-schema.js.map +1 -0
- package/dist/config.d.ts +102 -0
- package/dist/config.js +614 -0
- package/dist/config.js.map +1 -0
- package/dist/context.d.ts +106 -0
- package/dist/context.js +202 -0
- package/dist/context.js.map +1 -0
- package/dist/contract/describe.d.ts +84 -0
- package/dist/contract/describe.js +104 -0
- package/dist/contract/describe.js.map +1 -0
- package/dist/contract/registry.d.ts +2 -0
- package/dist/contract/registry.js +622 -0
- package/dist/contract/registry.js.map +1 -0
- package/dist/contract/schemas/agent.d.ts +2 -0
- package/dist/contract/schemas/agent.js +572 -0
- package/dist/contract/schemas/agent.js.map +1 -0
- package/dist/contract/schemas/archive.d.ts +3 -0
- package/dist/contract/schemas/archive.js +227 -0
- package/dist/contract/schemas/archive.js.map +1 -0
- package/dist/contract/schemas/index.d.ts +11 -0
- package/dist/contract/schemas/index.js +49 -0
- package/dist/contract/schemas/index.js.map +1 -0
- package/dist/contract/schemas/markdown.d.ts +15 -0
- package/dist/contract/schemas/markdown.js +1035 -0
- package/dist/contract/schemas/markdown.js.map +1 -0
- package/dist/contract/schemas/meta.d.ts +5 -0
- package/dist/contract/schemas/meta.js +233 -0
- package/dist/contract/schemas/meta.js.map +1 -0
- package/dist/contract/schemas/scripts.d.ts +4 -0
- package/dist/contract/schemas/scripts.js +183 -0
- package/dist/contract/schemas/scripts.js.map +1 -0
- package/dist/contract/schemas/shared.d.ts +11 -0
- package/dist/contract/schemas/shared.js +26 -0
- package/dist/contract/schemas/shared.js.map +1 -0
- package/dist/contract/schemas/usage.d.ts +6 -0
- package/dist/contract/schemas/usage.js +489 -0
- package/dist/contract/schemas/usage.js.map +1 -0
- package/dist/contract/types.d.ts +63 -0
- package/dist/contract/types.js +2 -0
- package/dist/contract/types.js.map +1 -0
- package/dist/contract/version.d.ts +20 -0
- package/dist/contract/version.js +21 -0
- package/dist/contract/version.js.map +1 -0
- package/dist/diff.d.ts +156 -0
- package/dist/diff.js +500 -0
- package/dist/diff.js.map +1 -0
- package/dist/edit-plan.d.ts +133 -0
- package/dist/edit-plan.js +245 -0
- package/dist/edit-plan.js.map +1 -0
- package/dist/fix/markdownlint-fixer.d.ts +34 -0
- package/dist/fix/markdownlint-fixer.js +125 -0
- package/dist/fix/markdownlint-fixer.js.map +1 -0
- package/dist/fix/registry.d.ts +48 -0
- package/dist/fix/registry.js +28 -0
- package/dist/fix/registry.js.map +1 -0
- package/dist/fix/relative-links-fixer.d.ts +21 -0
- package/dist/fix/relative-links-fixer.js +96 -0
- package/dist/fix/relative-links-fixer.js.map +1 -0
- package/dist/fix/snippets-fixer.d.ts +2 -0
- package/dist/fix/snippets-fixer.js +64 -0
- package/dist/fix/snippets-fixer.js.map +1 -0
- package/dist/fix/toc-fixer.d.ts +2 -0
- package/dist/fix/toc-fixer.js +94 -0
- package/dist/fix/toc-fixer.js.map +1 -0
- package/dist/formats.d.ts +22 -0
- package/dist/formats.js +34 -0
- package/dist/formats.js.map +1 -0
- package/dist/formatters.d.ts +11 -0
- package/dist/formatters.js +48 -0
- package/dist/formatters.js.map +1 -0
- package/dist/frontmatter-validation.d.ts +11 -0
- package/dist/frontmatter-validation.js +188 -0
- package/dist/frontmatter-validation.js.map +1 -0
- package/dist/git.d.ts +40 -0
- package/dist/git.js +124 -0
- package/dist/git.js.map +1 -0
- package/dist/graph.d.ts +50 -0
- package/dist/graph.js +200 -0
- package/dist/graph.js.map +1 -0
- package/dist/input-selection.d.ts +9 -0
- package/dist/input-selection.js +122 -0
- package/dist/input-selection.js.map +1 -0
- package/dist/input.d.ts +2 -0
- package/dist/input.js +32 -0
- package/dist/input.js.map +1 -0
- package/dist/link-target.d.ts +39 -0
- package/dist/link-target.js +68 -0
- package/dist/link-target.js.map +1 -0
- package/dist/lint.d.ts +13 -0
- package/dist/lint.js +27 -0
- package/dist/lint.js.map +1 -0
- package/dist/markdown-ast.d.ts +73 -0
- package/dist/markdown-ast.js +187 -0
- package/dist/markdown-ast.js.map +1 -0
- package/dist/object-path.d.ts +14 -0
- package/dist/object-path.js +14 -0
- package/dist/object-path.js.map +1 -0
- package/dist/option-utils.d.ts +13 -0
- package/dist/option-utils.js +25 -0
- package/dist/option-utils.js.map +1 -0
- package/dist/outline.d.ts +16 -0
- package/dist/outline.js +32 -0
- package/dist/outline.js.map +1 -0
- package/dist/query/entities.d.ts +60 -0
- package/dist/query/entities.js +219 -0
- package/dist/query/entities.js.map +1 -0
- package/dist/query/execute.d.ts +22 -0
- package/dist/query/execute.js +0 -0
- package/dist/query/execute.js.map +1 -0
- package/dist/query/plan.d.ts +76 -0
- package/dist/query/plan.js +183 -0
- package/dist/query/plan.js.map +1 -0
- package/dist/query/render.d.ts +3 -0
- package/dist/query/render.js +39 -0
- package/dist/query/render.js.map +1 -0
- package/dist/refs.d.ts +19 -0
- package/dist/refs.js +10 -0
- package/dist/refs.js.map +1 -0
- package/dist/result.d.ts +49 -0
- package/dist/result.js +47 -0
- package/dist/result.js.map +1 -0
- package/dist/runtime.d.ts +35 -0
- package/dist/runtime.js +77 -0
- package/dist/runtime.js.map +1 -0
- package/dist/sarif.d.ts +36 -0
- package/dist/sarif.js +30 -0
- package/dist/sarif.js.map +1 -0
- package/dist/scripts/execute.d.ts +65 -0
- package/dist/scripts/execute.js +235 -0
- package/dist/scripts/execute.js.map +1 -0
- package/dist/scripts/registry.d.ts +55 -0
- package/dist/scripts/registry.js +103 -0
- package/dist/scripts/registry.js.map +1 -0
- package/dist/scripts/resolve.d.ts +90 -0
- package/dist/scripts/resolve.js +288 -0
- package/dist/scripts/resolve.js.map +1 -0
- package/dist/sections.d.ts +53 -0
- package/dist/sections.js +100 -0
- package/dist/sections.js.map +1 -0
- package/dist/serve/errors.d.ts +25 -0
- package/dist/serve/errors.js +45 -0
- package/dist/serve/errors.js.map +1 -0
- package/dist/serve/paths.d.ts +32 -0
- package/dist/serve/paths.js +71 -0
- package/dist/serve/paths.js.map +1 -0
- package/dist/serve/server.d.ts +31 -0
- package/dist/serve/server.js +123 -0
- package/dist/serve/server.js.map +1 -0
- package/dist/serve/tools.d.ts +19 -0
- package/dist/serve/tools.js +597 -0
- package/dist/serve/tools.js.map +1 -0
- package/dist/snippets.d.ts +184 -0
- package/dist/snippets.js +454 -0
- package/dist/snippets.js.map +1 -0
- package/dist/sqlite-store.d.ts +62 -0
- package/dist/sqlite-store.js +104 -0
- package/dist/sqlite-store.js.map +1 -0
- package/dist/sqlite.d.ts +59 -0
- package/dist/sqlite.js +51 -0
- package/dist/sqlite.js.map +1 -0
- package/dist/toc.d.ts +58 -0
- package/dist/toc.js +83 -0
- package/dist/toc.js.map +1 -0
- package/dist/types.d.ts +7 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/update-notifier.d.ts +95 -0
- package/dist/update-notifier.js +301 -0
- package/dist/update-notifier.js.map +1 -0
- package/dist/url-cache.d.ts +14 -0
- package/dist/url-cache.js +70 -0
- package/dist/url-cache.js.map +1 -0
- package/dist/usage/aggregate.d.ts +107 -0
- package/dist/usage/aggregate.js +435 -0
- package/dist/usage/aggregate.js.map +1 -0
- package/dist/usage/db/index.d.ts +49 -0
- package/dist/usage/db/index.js +118 -0
- package/dist/usage/db/index.js.map +1 -0
- package/dist/usage/db/migrations.d.ts +29 -0
- package/dist/usage/db/migrations.js +38 -0
- package/dist/usage/db/migrations.js.map +1 -0
- package/dist/usage/db/open.d.ts +33 -0
- package/dist/usage/db/open.js +37 -0
- package/dist/usage/db/open.js.map +1 -0
- package/dist/usage/db/schema.d.ts +18 -0
- package/dist/usage/db/schema.js +147 -0
- package/dist/usage/db/schema.js.map +1 -0
- package/dist/usage/db/store.d.ts +74 -0
- package/dist/usage/db/store.js +280 -0
- package/dist/usage/db/store.js.map +1 -0
- package/dist/usage/events.d.ts +202 -0
- package/dist/usage/events.js +243 -0
- package/dist/usage/events.js.map +1 -0
- package/dist/usage/filter.d.ts +43 -0
- package/dist/usage/filter.js +97 -0
- package/dist/usage/filter.js.map +1 -0
- package/dist/usage/providers/antigravity.d.ts +2 -0
- package/dist/usage/providers/antigravity.js +431 -0
- package/dist/usage/providers/antigravity.js.map +1 -0
- package/dist/usage/providers/claude-code.d.ts +2 -0
- package/dist/usage/providers/claude-code.js +400 -0
- package/dist/usage/providers/claude-code.js.map +1 -0
- package/dist/usage/providers/codex.d.ts +2 -0
- package/dist/usage/providers/codex.js +387 -0
- package/dist/usage/providers/codex.js.map +1 -0
- package/dist/usage/providers/gemini-cli.d.ts +2 -0
- package/dist/usage/providers/gemini-cli.js +466 -0
- package/dist/usage/providers/gemini-cli.js.map +1 -0
- package/dist/usage/providers/index.d.ts +23 -0
- package/dist/usage/providers/index.js +46 -0
- package/dist/usage/providers/index.js.map +1 -0
- package/dist/usage/providers/opencode.d.ts +2 -0
- package/dist/usage/providers/opencode.js +422 -0
- package/dist/usage/providers/opencode.js.map +1 -0
- package/dist/usage/providers/protobuf.d.ts +35 -0
- package/dist/usage/providers/protobuf.js +125 -0
- package/dist/usage/providers/protobuf.js.map +1 -0
- package/dist/usage/providers/types.d.ts +74 -0
- package/dist/usage/providers/types.js +2 -0
- package/dist/usage/providers/types.js.map +1 -0
- package/dist/usage/scan.d.ts +54 -0
- package/dist/usage/scan.js +216 -0
- package/dist/usage/scan.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.js +8 -0
- package/dist/version.js.map +1 -0
- package/dist/workspace-index.d.ts +39 -0
- package/dist/workspace-index.js +265 -0
- package/dist/workspace-index.js.map +1 -0
- package/dist/workspace.d.ts +89 -0
- package/dist/workspace.js +219 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +92 -0
package/dist/diff.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"diff.js","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
import { type FileFingerprint } from "./workspace-index.js";
|
|
2
|
+
/**
|
|
3
|
+
* A replacement of `[start, end)` with `value`.
|
|
4
|
+
*
|
|
5
|
+
* Offsets are UTF-16 code-unit indices into the utf-8-decoded file — exactly what
|
|
6
|
+
* `content.slice(start, end)` uses, and the same unit mdast positions and
|
|
7
|
+
* `MdLink.destinationStart` already carry. They are not byte offsets.
|
|
8
|
+
*/
|
|
9
|
+
export interface TextEdit {
|
|
10
|
+
start: number;
|
|
11
|
+
/** Exclusive. `start === end` is a pure insertion. */
|
|
12
|
+
end: number;
|
|
13
|
+
value: string;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Applies edits back to front so earlier offsets stay valid.
|
|
17
|
+
*
|
|
18
|
+
* Overlapping edits are not detected here; the caller owns that, because the
|
|
19
|
+
* right response depends on whether the overlap is a planner bug or a genuine
|
|
20
|
+
* collision between two rules.
|
|
21
|
+
*/
|
|
22
|
+
export declare function applyEdits(content: string, edits: readonly TextEdit[]): string;
|
|
23
|
+
/**
|
|
24
|
+
* An unused path beside `file`, for staging a write that is committed by rename.
|
|
25
|
+
*
|
|
26
|
+
* A sibling rather than a temp directory so the rename stays within one
|
|
27
|
+
* filesystem and is therefore atomic.
|
|
28
|
+
*/
|
|
29
|
+
export declare function temporarySibling(file: string): string;
|
|
30
|
+
/** Where an edit came from, so a plan can be reviewed rule by rule. */
|
|
31
|
+
export interface EditDiagnostic {
|
|
32
|
+
/** Stable fixer identity, e.g. "toc" or "markdownlint/MD009". */
|
|
33
|
+
rule: string;
|
|
34
|
+
/** 1-based line the diagnostic anchors to. */
|
|
35
|
+
line: number;
|
|
36
|
+
message: string;
|
|
37
|
+
}
|
|
38
|
+
export interface PlannedEdit extends TextEdit {
|
|
39
|
+
/** Absolute path of the file the edit applies to. */
|
|
40
|
+
file: string;
|
|
41
|
+
/**
|
|
42
|
+
* The exact text currently occupying `[start, end)`.
|
|
43
|
+
*
|
|
44
|
+
* Mandatory, and revalidated immediately before any write. Offsets are
|
|
45
|
+
* UTF-16 code units rather than bytes, so this is what lets a consumer apply
|
|
46
|
+
* an edit without having to trust the unit — a mismatch aborts instead of
|
|
47
|
+
* corrupting a document containing astral-plane characters.
|
|
48
|
+
*/
|
|
49
|
+
expected: string;
|
|
50
|
+
/** `value` under its role-specific name. */
|
|
51
|
+
replacement: string;
|
|
52
|
+
diagnostic: EditDiagnostic;
|
|
53
|
+
}
|
|
54
|
+
export interface FileSnapshot {
|
|
55
|
+
file: string;
|
|
56
|
+
content: string;
|
|
57
|
+
fingerprint: FileFingerprint;
|
|
58
|
+
}
|
|
59
|
+
export interface FileEditPlan {
|
|
60
|
+
file: string;
|
|
61
|
+
/** Captured when the file was read for planning; rechecked before applying. */
|
|
62
|
+
fingerprint: FileFingerprint;
|
|
63
|
+
/** Non-overlapping, sorted ascending by start. */
|
|
64
|
+
edits: PlannedEdit[];
|
|
65
|
+
}
|
|
66
|
+
export type PlanConflictKind = "overlap" | "outside-workspace" | "stale-input" | "expectation-mismatch";
|
|
67
|
+
export interface PlanConflict {
|
|
68
|
+
kind: PlanConflictKind;
|
|
69
|
+
file: string;
|
|
70
|
+
message: string;
|
|
71
|
+
/** Rules involved, sorted. Two for an overlap, one otherwise. */
|
|
72
|
+
rules: string[];
|
|
73
|
+
}
|
|
74
|
+
export interface EditPlan {
|
|
75
|
+
root: string;
|
|
76
|
+
/** Sorted by path. Files with no surviving edits are omitted. */
|
|
77
|
+
files: FileEditPlan[];
|
|
78
|
+
/** Non-empty means applyPlan will refuse. Never thrown while planning. */
|
|
79
|
+
conflicts: PlanConflict[];
|
|
80
|
+
}
|
|
81
|
+
export interface AppliedFile {
|
|
82
|
+
file: string;
|
|
83
|
+
edits: number;
|
|
84
|
+
/** False when the edits collapsed to a no-op and the file was left alone. */
|
|
85
|
+
changed: boolean;
|
|
86
|
+
}
|
|
87
|
+
export interface AppliedPlan {
|
|
88
|
+
files: AppliedFile[];
|
|
89
|
+
edits: number;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Reads a file, checking its fingerprint on both sides.
|
|
93
|
+
*
|
|
94
|
+
* A write landing between the two stats is caught here rather than silently
|
|
95
|
+
* absorbed into a plan built from half-old content.
|
|
96
|
+
*/
|
|
97
|
+
export declare function snapshot(file: string): FileSnapshot;
|
|
98
|
+
/**
|
|
99
|
+
* Groups edits per file and records every reason the plan must not be applied.
|
|
100
|
+
*
|
|
101
|
+
* Never throws and never silently drops a conflicting edit: `--check` and
|
|
102
|
+
* `--dry-run` have to be able to report exactly which rules collided, so the
|
|
103
|
+
* user knows which one to leave out.
|
|
104
|
+
*/
|
|
105
|
+
export declare function buildPlan(root: string, edits: readonly PlannedEdit[], snapshots: ReadonlyMap<string, FileSnapshot>): EditPlan;
|
|
106
|
+
export interface ApplyOptions {
|
|
107
|
+
/** Called for every file whose bytes changed, and on the rollback path. */
|
|
108
|
+
invalidate?: (file: string) => void;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Applies a whole plan as one transaction.
|
|
112
|
+
*
|
|
113
|
+
* Every file is rechecked before any file is staged, so a stale input costs
|
|
114
|
+
* zero writes. Each file is then written to a sibling and committed by rename,
|
|
115
|
+
* which is atomic per file. The multi-file commit is not atomic: a failure
|
|
116
|
+
* part way through restores already-committed files by rewriting their original
|
|
117
|
+
* bytes, which is best-effort and not crash-safe.
|
|
118
|
+
*/
|
|
119
|
+
export declare function applyPlan(plan: EditPlan, options?: ApplyOptions): AppliedPlan;
|
|
120
|
+
/**
|
|
121
|
+
* The root every edit in a plan must stay inside.
|
|
122
|
+
*
|
|
123
|
+
* A configured workspace is the authority when there is one. Without a config
|
|
124
|
+
* file `config.root` is only the working directory, and refusing an absolute
|
|
125
|
+
* path outside it would reject `cairn md fix /elsewhere/docs` for no
|
|
126
|
+
* benefit — so the boundary becomes the directory containing the files the
|
|
127
|
+
* caller actually selected. Either way an edit cannot reach beyond what was
|
|
128
|
+
* asked for, which is what the guard is for.
|
|
129
|
+
*/
|
|
130
|
+
export declare function containmentRoot(files: readonly string[], config: {
|
|
131
|
+
root: string;
|
|
132
|
+
configPath?: string;
|
|
133
|
+
}): string;
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
import fs from "node:fs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { fingerprint } from "./workspace-index.js";
|
|
4
|
+
import { inside } from "./workspace.js";
|
|
5
|
+
/**
|
|
6
|
+
* Applies edits back to front so earlier offsets stay valid.
|
|
7
|
+
*
|
|
8
|
+
* Overlapping edits are not detected here; the caller owns that, because the
|
|
9
|
+
* right response depends on whether the overlap is a planner bug or a genuine
|
|
10
|
+
* collision between two rules.
|
|
11
|
+
*/
|
|
12
|
+
export function applyEdits(content, edits) {
|
|
13
|
+
let result = content;
|
|
14
|
+
for (const edit of [...edits].sort((a, b) => b.start - a.start)) {
|
|
15
|
+
result = result.slice(0, edit.start) + edit.value + result.slice(edit.end);
|
|
16
|
+
}
|
|
17
|
+
return result;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* An unused path beside `file`, for staging a write that is committed by rename.
|
|
21
|
+
*
|
|
22
|
+
* A sibling rather than a temp directory so the rename stays within one
|
|
23
|
+
* filesystem and is therefore atomic.
|
|
24
|
+
*/
|
|
25
|
+
export function temporarySibling(file) {
|
|
26
|
+
for (let index = 0; index < 100; index++) {
|
|
27
|
+
const candidate = path.join(path.dirname(file), `.${path.basename(file)}.cairn-${process.pid}-${index}.tmp`);
|
|
28
|
+
if (!fs.existsSync(candidate))
|
|
29
|
+
return candidate;
|
|
30
|
+
}
|
|
31
|
+
throw new Error(`Unable to allocate temporary file beside ${file}`);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Reads a file, checking its fingerprint on both sides.
|
|
35
|
+
*
|
|
36
|
+
* A write landing between the two stats is caught here rather than silently
|
|
37
|
+
* absorbed into a plan built from half-old content.
|
|
38
|
+
*/
|
|
39
|
+
export function snapshot(file) {
|
|
40
|
+
const before = fingerprint(file);
|
|
41
|
+
const content = fs.readFileSync(file, "utf-8");
|
|
42
|
+
const after = fingerprint(file);
|
|
43
|
+
if (before.size !== after.size || before.mtimeMs !== after.mtimeMs) {
|
|
44
|
+
throw new Error(`File changed while it was being read: ${file}`);
|
|
45
|
+
}
|
|
46
|
+
return { file, content, fingerprint: after };
|
|
47
|
+
}
|
|
48
|
+
/** True when `file` is inside `root` both lexically and after resolving symlinks. */
|
|
49
|
+
function contained(root, file) {
|
|
50
|
+
if (!inside(root, file))
|
|
51
|
+
return false;
|
|
52
|
+
try {
|
|
53
|
+
// The parent, not the file: the file may not exist yet, and a symlinked
|
|
54
|
+
// directory is the way an edit would otherwise escape the workspace.
|
|
55
|
+
return inside(fs.realpathSync(root), fs.realpathSync(path.dirname(file)));
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return false;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Groups edits per file and records every reason the plan must not be applied.
|
|
63
|
+
*
|
|
64
|
+
* Never throws and never silently drops a conflicting edit: `--check` and
|
|
65
|
+
* `--dry-run` have to be able to report exactly which rules collided, so the
|
|
66
|
+
* user knows which one to leave out.
|
|
67
|
+
*/
|
|
68
|
+
export function buildPlan(root, edits, snapshots) {
|
|
69
|
+
const conflicts = [];
|
|
70
|
+
const byFile = new Map();
|
|
71
|
+
for (const edit of edits) {
|
|
72
|
+
const file = path.resolve(edit.file);
|
|
73
|
+
if (!contained(root, file)) {
|
|
74
|
+
conflicts.push({
|
|
75
|
+
kind: "outside-workspace",
|
|
76
|
+
file,
|
|
77
|
+
message: `Edit target is outside the workspace root: ${file}`,
|
|
78
|
+
rules: [edit.diagnostic.rule],
|
|
79
|
+
});
|
|
80
|
+
continue;
|
|
81
|
+
}
|
|
82
|
+
const snap = snapshots.get(file);
|
|
83
|
+
if (!snap) {
|
|
84
|
+
conflicts.push({
|
|
85
|
+
kind: "stale-input",
|
|
86
|
+
file,
|
|
87
|
+
message: `No snapshot was taken for ${file}`,
|
|
88
|
+
rules: [edit.diagnostic.rule],
|
|
89
|
+
});
|
|
90
|
+
continue;
|
|
91
|
+
}
|
|
92
|
+
// A planner emitting the wrong `expected` is a bug, surfaced as a conflict
|
|
93
|
+
// rather than allowed to corrupt the file.
|
|
94
|
+
if (snap.content.slice(edit.start, edit.end) !== edit.expected) {
|
|
95
|
+
conflicts.push({
|
|
96
|
+
kind: "expectation-mismatch",
|
|
97
|
+
file,
|
|
98
|
+
message: `${edit.diagnostic.rule} expected ${JSON.stringify(edit.expected)} at [${edit.start},${edit.end})`,
|
|
99
|
+
rules: [edit.diagnostic.rule],
|
|
100
|
+
});
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
byFile.set(file, [...(byFile.get(file) ?? []), edit]);
|
|
104
|
+
}
|
|
105
|
+
const files = [];
|
|
106
|
+
for (const file of [...byFile.keys()].sort()) {
|
|
107
|
+
const list = byFile.get(file);
|
|
108
|
+
list.sort((a, b) => a.start - b.start ||
|
|
109
|
+
a.end - b.end ||
|
|
110
|
+
(a.diagnostic.rule < b.diagnostic.rule
|
|
111
|
+
? -1
|
|
112
|
+
: a.diagnostic.rule > b.diagnostic.rule
|
|
113
|
+
? 1
|
|
114
|
+
: 0));
|
|
115
|
+
for (let index = 1; index < list.length; index++) {
|
|
116
|
+
const previous = list[index - 1];
|
|
117
|
+
const current = list[index];
|
|
118
|
+
const overlaps = previous.end > current.start;
|
|
119
|
+
// Two insertions at one offset do not overlap, but their order is
|
|
120
|
+
// undefined, which is the same hazard.
|
|
121
|
+
const ambiguous = previous.start === previous.end &&
|
|
122
|
+
current.start === current.end &&
|
|
123
|
+
previous.start === current.start;
|
|
124
|
+
if (!overlaps && !ambiguous)
|
|
125
|
+
continue;
|
|
126
|
+
conflicts.push({
|
|
127
|
+
kind: "overlap",
|
|
128
|
+
file,
|
|
129
|
+
message: `${previous.diagnostic.rule} [${previous.start},${previous.end}) and ` +
|
|
130
|
+
`${current.diagnostic.rule} [${current.start},${current.end}) edit the same span`,
|
|
131
|
+
rules: [previous.diagnostic.rule, current.diagnostic.rule].sort(),
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
files.push({ file, fingerprint: snapshots.get(file).fingerprint, edits: list });
|
|
135
|
+
}
|
|
136
|
+
return { root, files, conflicts };
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Applies a whole plan as one transaction.
|
|
140
|
+
*
|
|
141
|
+
* Every file is rechecked before any file is staged, so a stale input costs
|
|
142
|
+
* zero writes. Each file is then written to a sibling and committed by rename,
|
|
143
|
+
* which is atomic per file. The multi-file commit is not atomic: a failure
|
|
144
|
+
* part way through restores already-committed files by rewriting their original
|
|
145
|
+
* bytes, which is best-effort and not crash-safe.
|
|
146
|
+
*/
|
|
147
|
+
export function applyPlan(plan, options = {}) {
|
|
148
|
+
if (plan.conflicts.length) {
|
|
149
|
+
throw new Error(`Refusing to write: ${plan.conflicts.length} conflict(s) in the edit plan`);
|
|
150
|
+
}
|
|
151
|
+
const pending = [];
|
|
152
|
+
for (const entry of plan.files) {
|
|
153
|
+
const current = snapshot(entry.file);
|
|
154
|
+
if (current.fingerprint.size !== entry.fingerprint.size ||
|
|
155
|
+
current.fingerprint.mtimeMs !== entry.fingerprint.mtimeMs) {
|
|
156
|
+
throw new Error(`Aborted: ${entry.file} changed after the plan was built`);
|
|
157
|
+
}
|
|
158
|
+
// The fingerprint is the cheap check; re-verifying every expectation is the
|
|
159
|
+
// authoritative one, and closes the coarse-mtime hole.
|
|
160
|
+
for (const edit of entry.edits) {
|
|
161
|
+
if (current.content.slice(edit.start, edit.end) !== edit.expected) {
|
|
162
|
+
throw new Error(`Aborted: ${entry.file} no longer matches the plan at [${edit.start},${edit.end})`);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
const next = applyEdits(current.content, entry.edits);
|
|
166
|
+
if (next === current.content)
|
|
167
|
+
continue;
|
|
168
|
+
pending.push({
|
|
169
|
+
file: entry.file,
|
|
170
|
+
original: fs.readFileSync(entry.file),
|
|
171
|
+
next,
|
|
172
|
+
mode: fs.statSync(entry.file).mode,
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
const staged = new Map();
|
|
176
|
+
const committed = [];
|
|
177
|
+
try {
|
|
178
|
+
for (const item of pending) {
|
|
179
|
+
const temporary = temporarySibling(item.file);
|
|
180
|
+
fs.writeFileSync(temporary, item.next, { encoding: "utf-8", flag: "wx" });
|
|
181
|
+
fs.chmodSync(temporary, item.mode);
|
|
182
|
+
staged.set(item.file, temporary);
|
|
183
|
+
}
|
|
184
|
+
for (const item of pending) {
|
|
185
|
+
fs.renameSync(staged.get(item.file), item.file);
|
|
186
|
+
staged.delete(item.file);
|
|
187
|
+
committed.push({ file: item.file, original: item.original });
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
catch (error) {
|
|
191
|
+
for (const temporary of staged.values()) {
|
|
192
|
+
try {
|
|
193
|
+
fs.rmSync(temporary, { force: true });
|
|
194
|
+
}
|
|
195
|
+
catch {
|
|
196
|
+
// Best-effort cleanup.
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
for (const item of committed) {
|
|
200
|
+
try {
|
|
201
|
+
fs.writeFileSync(item.file, item.original);
|
|
202
|
+
}
|
|
203
|
+
catch {
|
|
204
|
+
// Best-effort rollback.
|
|
205
|
+
}
|
|
206
|
+
options.invalidate?.(item.file);
|
|
207
|
+
}
|
|
208
|
+
throw error;
|
|
209
|
+
}
|
|
210
|
+
const changed = new Set(pending.map((item) => item.file));
|
|
211
|
+
for (const file of changed)
|
|
212
|
+
options.invalidate?.(file);
|
|
213
|
+
return {
|
|
214
|
+
files: plan.files.map((entry) => ({
|
|
215
|
+
file: entry.file,
|
|
216
|
+
edits: entry.edits.length,
|
|
217
|
+
changed: changed.has(entry.file),
|
|
218
|
+
})),
|
|
219
|
+
edits: plan.files.reduce((total, entry) => total + entry.edits.length, 0),
|
|
220
|
+
};
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* The root every edit in a plan must stay inside.
|
|
224
|
+
*
|
|
225
|
+
* A configured workspace is the authority when there is one. Without a config
|
|
226
|
+
* file `config.root` is only the working directory, and refusing an absolute
|
|
227
|
+
* path outside it would reject `cairn md fix /elsewhere/docs` for no
|
|
228
|
+
* benefit — so the boundary becomes the directory containing the files the
|
|
229
|
+
* caller actually selected. Either way an edit cannot reach beyond what was
|
|
230
|
+
* asked for, which is what the guard is for.
|
|
231
|
+
*/
|
|
232
|
+
export function containmentRoot(files, config) {
|
|
233
|
+
if (config.configPath || !files.length)
|
|
234
|
+
return config.root;
|
|
235
|
+
const segments = files.map((file) => path.dirname(path.resolve(file)).split(path.sep));
|
|
236
|
+
const common = [];
|
|
237
|
+
for (let index = 0; index < segments[0].length; index++) {
|
|
238
|
+
const part = segments[0][index];
|
|
239
|
+
if (!segments.every((candidate) => candidate[index] === part))
|
|
240
|
+
break;
|
|
241
|
+
common.push(part);
|
|
242
|
+
}
|
|
243
|
+
return common.join(path.sep) || path.sep;
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=edit-plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"edit-plan.js","sourceRoot":"","sources":["../src/edit-plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,WAAW,EAAwB,MAAM,sBAAsB,CAAC;AACzE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAgBxC;;;;;;GAMG;AACH,MAAM,UAAU,UAAU,CAAC,OAAe,EAAE,KAA0B;IACpE,IAAI,MAAM,GAAG,OAAO,CAAC;IACrB,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,IAAY;IAC3C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC;QACzC,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CACzB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAClB,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,OAAO,CAAC,GAAG,IAAI,KAAK,MAAM,CAC5D,CAAC;QACF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;IAClD,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,4CAA4C,IAAI,EAAE,CAAC,CAAC;AACtE,CAAC;AAyED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IACjC,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC/C,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC;QACnE,MAAM,IAAI,KAAK,CAAC,yCAAyC,IAAI,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC;AAC/C,CAAC;AAED,qFAAqF;AACrF,SAAS,SAAS,CAAC,IAAY,EAAE,IAAY;IAC3C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACtC,IAAI,CAAC;QACH,wEAAwE;QACxE,qEAAqE;QACrE,OAAO,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,KAA6B,EAC7B,SAA4C;IAE5C,MAAM,SAAS,GAAmB,EAAE,CAAC;IACrC,MAAM,MAAM,GAAG,IAAI,GAAG,EAAyB,CAAC;IAEhD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YAC3B,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,mBAAmB;gBACzB,IAAI;gBACJ,OAAO,EAAE,8CAA8C,IAAI,EAAE;gBAC7D,KAAK,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;aAC9B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,aAAa;gBACnB,IAAI;gBACJ,OAAO,EAAE,6BAA6B,IAAI,EAAE;gBAC5C,KAAK,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;aAC9B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,2EAA2E;QAC3E,2CAA2C;QAC3C,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/D,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,sBAAsB;gBAC5B,IAAI;gBACJ,OAAO,EAAE,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,aAAa,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG;gBAC3G,KAAK,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;aAC9B,CAAC,CAAC;YACH,SAAS;QACX,CAAC;QACD,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,GAAmB,EAAE,CAAC;IACjC,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QAC7C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CACP,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CACP,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK;YACjB,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG;YACb,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI;gBACpC,CAAC,CAAC,CAAC,CAAC;gBACJ,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,GAAG,CAAC,CAAC,UAAU,CAAC,IAAI;oBACrC,CAAC,CAAC,CAAC;oBACH,CAAC,CAAC,CAAC,CAAC,CACX,CAAC;QACF,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;YACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC;YAC9C,kEAAkE;YAClE,uCAAuC;YACvC,MAAM,SAAS,GACb,QAAQ,CAAC,KAAK,KAAK,QAAQ,CAAC,GAAG;gBAC/B,OAAO,CAAC,KAAK,KAAK,OAAO,CAAC,GAAG;gBAC7B,QAAQ,CAAC,KAAK,KAAK,OAAO,CAAC,KAAK,CAAC;YACnC,IAAI,CAAC,QAAQ,IAAI,CAAC,SAAS;gBAAE,SAAS;YACtC,SAAS,CAAC,IAAI,CAAC;gBACb,IAAI,EAAE,SAAS;gBACf,IAAI;gBACJ,OAAO,EACL,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,GAAG,QAAQ;oBACtE,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,KAAK,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,sBAAsB;gBACnF,KAAK,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE;aAClE,CAAC,CAAC;QACL,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACpC,CAAC;AAOD;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CAAC,IAAc,EAAE,UAAwB,EAAE;IAClE,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,sBAAsB,IAAI,CAAC,SAAS,CAAC,MAAM,+BAA+B,CAAC,CAAC;IAC9F,CAAC;IAED,MAAM,OAAO,GAA0E,EAAE,CAAC;IAC1F,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC/B,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrC,IACE,OAAO,CAAC,WAAW,CAAC,IAAI,KAAK,KAAK,CAAC,WAAW,CAAC,IAAI;YACnD,OAAO,CAAC,WAAW,CAAC,OAAO,KAAK,KAAK,CAAC,WAAW,CAAC,OAAO,EACzD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,IAAI,mCAAmC,CAAC,CAAC;QAC7E,CAAC;QACD,4EAA4E;QAC5E,uDAAuD;QACvD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC/B,IAAI,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;gBAClE,MAAM,IAAI,KAAK,CACb,YAAY,KAAK,CAAC,IAAI,mCAAmC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,GAAG,CACnF,CAAC;YACJ,CAAC;QACH,CAAC;QACD,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,IAAI,KAAK,OAAO,CAAC,OAAO;YAAE,SAAS;QACvC,OAAO,CAAC,IAAI,CAAC;YACX,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,QAAQ,EAAE,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC;YACrC,IAAI;YACJ,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI;SACnC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,MAAM,SAAS,GAA8C,EAAE,CAAC;IAChE,IAAI,CAAC;QACH,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,MAAM,SAAS,GAAG,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9C,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;YAC1E,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACnC,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;YAC3B,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACzB,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACxC,CAAC;YAAC,MAAM,CAAC;gBACP,uBAAuB;YACzB,CAAC;QACH,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,SAAS,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,CAAC;YAAC,MAAM,CAAC;gBACP,wBAAwB;YAC1B,CAAC;YACD,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1D,KAAK,MAAM,IAAI,IAAI,OAAO;QAAE,OAAO,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO;QACL,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAChC,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,MAAM;YACzB,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;SACjC,CAAC,CAAC;QACH,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;KAC1E,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAwB,EACxB,MAA6C;IAE7C,IAAI,MAAM,CAAC,UAAU,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC,IAAI,CAAC;IAC3D,MAAM,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACvF,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE,CAAC;QACxD,MAAM,IAAI,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,IAAI,CAAC;YAAE,MAAM;QACrE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type MarkdownlintFixInfo } from "../checkers/markdown-lint.js";
|
|
2
|
+
import type { Fixer } from "./registry.js";
|
|
3
|
+
/**
|
|
4
|
+
* Rules whose fixes are unambiguous.
|
|
5
|
+
*
|
|
6
|
+
* Every entry is whitespace- or punctuation-local and rewrites at most one span
|
|
7
|
+
* per line. Rules excluded despite offering a fix, with the reason:
|
|
8
|
+
*
|
|
9
|
+
* - MD004, MD029, MD035, MD048, MD049, MD050 — config-dependent *style*
|
|
10
|
+
* choices that rewrite prose markers to match a preference.
|
|
11
|
+
* - MD044 — substring replacement inside prose.
|
|
12
|
+
* - MD005, MD007 — list indentation, where fixes interact across lines.
|
|
13
|
+
* - MD034 — turning a bare URL into an autolink changes how it renders.
|
|
14
|
+
*/
|
|
15
|
+
export declare const ALLOWED_RULES: Set<string>;
|
|
16
|
+
export interface FixRange {
|
|
17
|
+
start: number;
|
|
18
|
+
end: number;
|
|
19
|
+
replacement: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Maps one `fixInfo` onto an offset range.
|
|
23
|
+
*
|
|
24
|
+
* Three details a naive translation gets wrong, all of which markdownlint's own
|
|
25
|
+
* `applyFix` handles: `deleteCount === -1` removes the whole line *including*
|
|
26
|
+
* its terminator; `editColumn` and `deleteCount` index the line with its
|
|
27
|
+
* terminator stripped, so a range must never cross that bound; and `insertText`
|
|
28
|
+
* may contain newlines, which have to be written in the file's own line ending.
|
|
29
|
+
*
|
|
30
|
+
* Returns undefined when the fix cannot be mapped, in which case it is skipped
|
|
31
|
+
* rather than guessed at.
|
|
32
|
+
*/
|
|
33
|
+
export declare function fixInfoRange(content: string, starts: readonly number[], errorLine: number, info: MarkdownlintFixInfo, eol: string): FixRange | undefined;
|
|
34
|
+
export declare const markdownlintFixer: Fixer;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { loadMarkdownlintConfig, lintContent, } from "../checkers/markdown-lint.js";
|
|
2
|
+
import { runtime } from "../runtime.js";
|
|
3
|
+
/**
|
|
4
|
+
* Rules whose fixes are unambiguous.
|
|
5
|
+
*
|
|
6
|
+
* Every entry is whitespace- or punctuation-local and rewrites at most one span
|
|
7
|
+
* per line. Rules excluded despite offering a fix, with the reason:
|
|
8
|
+
*
|
|
9
|
+
* - MD004, MD029, MD035, MD048, MD049, MD050 — config-dependent *style*
|
|
10
|
+
* choices that rewrite prose markers to match a preference.
|
|
11
|
+
* - MD044 — substring replacement inside prose.
|
|
12
|
+
* - MD005, MD007 — list indentation, where fixes interact across lines.
|
|
13
|
+
* - MD034 — turning a bare URL into an autolink changes how it renders.
|
|
14
|
+
*/
|
|
15
|
+
export const ALLOWED_RULES = new Set([
|
|
16
|
+
"MD009", // Trailing spaces
|
|
17
|
+
"MD010", // Hard tabs
|
|
18
|
+
"MD012", // Multiple consecutive blank lines
|
|
19
|
+
"MD018", // No space after hash on ATX heading
|
|
20
|
+
"MD019", // Multiple spaces after hash on ATX heading
|
|
21
|
+
"MD020", // No space inside hashes on closed ATX heading
|
|
22
|
+
"MD021", // Multiple spaces inside hashes on closed ATX heading
|
|
23
|
+
"MD023", // Headings must start at the beginning of the line
|
|
24
|
+
"MD027", // Multiple spaces after blockquote symbol
|
|
25
|
+
"MD030", // Spaces after list markers
|
|
26
|
+
"MD037", // Spaces inside emphasis markers
|
|
27
|
+
"MD038", // Spaces inside code span elements
|
|
28
|
+
"MD039", // Spaces inside link text
|
|
29
|
+
"MD047", // Files should end with a single newline
|
|
30
|
+
]);
|
|
31
|
+
/** Offset of the start of every line. */
|
|
32
|
+
function lineStarts(content) {
|
|
33
|
+
const starts = [0];
|
|
34
|
+
for (let index = 0; index < content.length; index++) {
|
|
35
|
+
if (content[index] === "\n")
|
|
36
|
+
starts.push(index + 1);
|
|
37
|
+
}
|
|
38
|
+
return starts;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Maps one `fixInfo` onto an offset range.
|
|
42
|
+
*
|
|
43
|
+
* Three details a naive translation gets wrong, all of which markdownlint's own
|
|
44
|
+
* `applyFix` handles: `deleteCount === -1` removes the whole line *including*
|
|
45
|
+
* its terminator; `editColumn` and `deleteCount` index the line with its
|
|
46
|
+
* terminator stripped, so a range must never cross that bound; and `insertText`
|
|
47
|
+
* may contain newlines, which have to be written in the file's own line ending.
|
|
48
|
+
*
|
|
49
|
+
* Returns undefined when the fix cannot be mapped, in which case it is skipped
|
|
50
|
+
* rather than guessed at.
|
|
51
|
+
*/
|
|
52
|
+
export function fixInfoRange(content, starts, errorLine, info, eol) {
|
|
53
|
+
const lineNumber = info.lineNumber ?? errorLine;
|
|
54
|
+
const base = starts[lineNumber - 1];
|
|
55
|
+
if (base === undefined)
|
|
56
|
+
return undefined;
|
|
57
|
+
const lineEnd = starts[lineNumber] ?? content.length;
|
|
58
|
+
if (info.deleteCount === -1)
|
|
59
|
+
return { start: base, end: lineEnd, replacement: "" };
|
|
60
|
+
const terminator = /\r?\n$/.exec(content.slice(base, lineEnd))?.[0].length ?? 0;
|
|
61
|
+
const textEnd = lineEnd - terminator;
|
|
62
|
+
const start = base + (info.editColumn ?? 1) - 1;
|
|
63
|
+
const end = start + (info.deleteCount ?? 0);
|
|
64
|
+
if (start < base || start > textEnd || end > textEnd)
|
|
65
|
+
return undefined;
|
|
66
|
+
return { start, end, replacement: (info.insertText ?? "").replace(/\n/g, eol) };
|
|
67
|
+
}
|
|
68
|
+
/** markdownlint's own de-duplication: identical fixes on a line collapse to one. */
|
|
69
|
+
function distinct(errors) {
|
|
70
|
+
const seen = new Set();
|
|
71
|
+
const kept = [];
|
|
72
|
+
for (const error of errors) {
|
|
73
|
+
const info = error.fixInfo;
|
|
74
|
+
if (!info)
|
|
75
|
+
continue;
|
|
76
|
+
const key = [
|
|
77
|
+
info.lineNumber ?? error.lineNumber,
|
|
78
|
+
info.editColumn ?? "",
|
|
79
|
+
info.deleteCount ?? "",
|
|
80
|
+
info.insertText ?? "",
|
|
81
|
+
].join("\0");
|
|
82
|
+
if (seen.has(key))
|
|
83
|
+
continue;
|
|
84
|
+
seen.add(key);
|
|
85
|
+
kept.push(error);
|
|
86
|
+
}
|
|
87
|
+
return kept;
|
|
88
|
+
}
|
|
89
|
+
export const markdownlintFixer = {
|
|
90
|
+
name: "markdownlint",
|
|
91
|
+
description: "Apply markdownlint fixes for rules with an unambiguous repair",
|
|
92
|
+
network: false,
|
|
93
|
+
default: true,
|
|
94
|
+
async plan(files, context) {
|
|
95
|
+
const config = await loadMarkdownlintConfig(runtime().config.markdownlint.config);
|
|
96
|
+
const edits = [];
|
|
97
|
+
for (const file of files) {
|
|
98
|
+
const snapshot = context.snapshot(file);
|
|
99
|
+
const content = snapshot.content;
|
|
100
|
+
const eol = content.includes("\r\n") ? "\r\n" : "\n";
|
|
101
|
+
const starts = lineStarts(content);
|
|
102
|
+
const errors = distinct(await lintContent(file, content, config)).filter((error) => ALLOWED_RULES.has(error.ruleNames[0]));
|
|
103
|
+
for (const error of errors) {
|
|
104
|
+
const range = fixInfoRange(content, starts, error.lineNumber, error.fixInfo, eol);
|
|
105
|
+
if (!range)
|
|
106
|
+
continue;
|
|
107
|
+
edits.push({
|
|
108
|
+
file,
|
|
109
|
+
start: range.start,
|
|
110
|
+
end: range.end,
|
|
111
|
+
expected: content.slice(range.start, range.end),
|
|
112
|
+
replacement: range.replacement,
|
|
113
|
+
value: range.replacement,
|
|
114
|
+
diagnostic: {
|
|
115
|
+
rule: `markdownlint/${error.ruleNames[0]}`,
|
|
116
|
+
line: error.lineNumber,
|
|
117
|
+
message: `${error.ruleDescription}${error.errorDetail ? `: ${error.errorDetail}` : ""}`,
|
|
118
|
+
},
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return { edits, unfixable: [] };
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
//# sourceMappingURL=markdownlint-fixer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdownlint-fixer.js","sourceRoot":"","sources":["../../src/fix/markdownlint-fixer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { FileSnapshot, PlannedEdit } from "../edit-plan.js";
|
|
2
|
+
/** A finding a fixer recognized but deliberately did not act on. */
|
|
3
|
+
export interface UnfixableFinding {
|
|
4
|
+
file: string;
|
|
5
|
+
line: number;
|
|
6
|
+
rule: string;
|
|
7
|
+
message: string;
|
|
8
|
+
/** Why no edit was produced, e.g. "malformed markers". */
|
|
9
|
+
reason: string;
|
|
10
|
+
}
|
|
11
|
+
export interface FixerResult {
|
|
12
|
+
edits: PlannedEdit[];
|
|
13
|
+
unfixable: UnfixableFinding[];
|
|
14
|
+
}
|
|
15
|
+
export interface FixerContext {
|
|
16
|
+
root: string;
|
|
17
|
+
/** Memoized per run; the single source of truth for content and fingerprint. */
|
|
18
|
+
snapshot: (file: string) => FileSnapshot;
|
|
19
|
+
/** TOC generation settings, taken from the project's `md toc` defaults. */
|
|
20
|
+
toc: {
|
|
21
|
+
maxDepth: string;
|
|
22
|
+
minDepth: string;
|
|
23
|
+
ordered: boolean;
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export interface Fixer {
|
|
27
|
+
name: string;
|
|
28
|
+
description: string;
|
|
29
|
+
/** True when the fixer performs network I/O. */
|
|
30
|
+
network: boolean;
|
|
31
|
+
/**
|
|
32
|
+
* True when a bare `md fix` runs this fixer.
|
|
33
|
+
*
|
|
34
|
+
* False is for a fixer whose edits reach beyond the Markdown being fixed —
|
|
35
|
+
* one that reads other files to decide what to write — because a broadly-run
|
|
36
|
+
* command must not acquire that reach without being asked.
|
|
37
|
+
*/
|
|
38
|
+
default: boolean;
|
|
39
|
+
plan(files: readonly string[], context: FixerContext): Promise<FixerResult>;
|
|
40
|
+
}
|
|
41
|
+
export declare const FIXERS: readonly Fixer[];
|
|
42
|
+
/**
|
|
43
|
+
* Resolves `--rule` names, defaulting to every offline default fixer.
|
|
44
|
+
*
|
|
45
|
+
* An unknown name is a usage error rather than a silent no-op, so
|
|
46
|
+
* `md fix --rule typo --check` can never exit 0 and look like a pass.
|
|
47
|
+
*/
|
|
48
|
+
export declare function selectFixers(names: readonly string[]): Fixer[];
|