@code-rag/core 0.1.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/LICENSE +21 -0
- package/README.md +19 -0
- package/dist/auth/audit-log.d.ts +35 -0
- package/dist/auth/audit-log.js +110 -0
- package/dist/auth/audit-log.js.map +1 -0
- package/dist/auth/audit-log.test.d.ts +1 -0
- package/dist/auth/audit-log.test.js +261 -0
- package/dist/auth/audit-log.test.js.map +1 -0
- package/dist/auth/index.d.ts +6 -0
- package/dist/auth/index.js +5 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/oidc-provider.d.ts +49 -0
- package/dist/auth/oidc-provider.js +358 -0
- package/dist/auth/oidc-provider.js.map +1 -0
- package/dist/auth/oidc-provider.test.d.ts +1 -0
- package/dist/auth/oidc-provider.test.js +520 -0
- package/dist/auth/oidc-provider.test.js.map +1 -0
- package/dist/auth/rbac.d.ts +29 -0
- package/dist/auth/rbac.js +75 -0
- package/dist/auth/rbac.js.map +1 -0
- package/dist/auth/rbac.test.d.ts +1 -0
- package/dist/auth/rbac.test.js +224 -0
- package/dist/auth/rbac.test.js.map +1 -0
- package/dist/auth/saml-provider.d.ts +51 -0
- package/dist/auth/saml-provider.js +355 -0
- package/dist/auth/saml-provider.js.map +1 -0
- package/dist/auth/saml-provider.test.d.ts +1 -0
- package/dist/auth/saml-provider.test.js +422 -0
- package/dist/auth/saml-provider.test.js.map +1 -0
- package/dist/auth/types.d.ts +81 -0
- package/dist/auth/types.js +11 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/auth/types.test.d.ts +1 -0
- package/dist/auth/types.test.js +147 -0
- package/dist/auth/types.test.js.map +1 -0
- package/dist/backlog/ab-reference-scanner.d.ts +10 -0
- package/dist/backlog/ab-reference-scanner.js +22 -0
- package/dist/backlog/ab-reference-scanner.js.map +1 -0
- package/dist/backlog/ab-reference-scanner.test.d.ts +1 -0
- package/dist/backlog/ab-reference-scanner.test.js +83 -0
- package/dist/backlog/ab-reference-scanner.test.js.map +1 -0
- package/dist/backlog/azure-devops-provider.d.ts +59 -0
- package/dist/backlog/azure-devops-provider.js +283 -0
- package/dist/backlog/azure-devops-provider.js.map +1 -0
- package/dist/backlog/backlog-provider.d.ts +13 -0
- package/dist/backlog/backlog-provider.js +6 -0
- package/dist/backlog/backlog-provider.js.map +1 -0
- package/dist/backlog/backlog-provider.test.d.ts +1 -0
- package/dist/backlog/backlog-provider.test.js +426 -0
- package/dist/backlog/backlog-provider.test.js.map +1 -0
- package/dist/backlog/clickup-provider.d.ts +55 -0
- package/dist/backlog/clickup-provider.js +301 -0
- package/dist/backlog/clickup-provider.js.map +1 -0
- package/dist/backlog/clickup-provider.test.d.ts +1 -0
- package/dist/backlog/clickup-provider.test.js +426 -0
- package/dist/backlog/clickup-provider.test.js.map +1 -0
- package/dist/backlog/clickup-reference-scanner.d.ts +10 -0
- package/dist/backlog/clickup-reference-scanner.js +32 -0
- package/dist/backlog/clickup-reference-scanner.js.map +1 -0
- package/dist/backlog/clickup-reference-scanner.test.d.ts +1 -0
- package/dist/backlog/clickup-reference-scanner.test.js +92 -0
- package/dist/backlog/clickup-reference-scanner.test.js.map +1 -0
- package/dist/backlog/code-linker.d.ts +63 -0
- package/dist/backlog/code-linker.js +90 -0
- package/dist/backlog/code-linker.js.map +1 -0
- package/dist/backlog/code-linker.test.d.ts +1 -0
- package/dist/backlog/code-linker.test.js +325 -0
- package/dist/backlog/code-linker.test.js.map +1 -0
- package/dist/backlog/index.d.ts +14 -0
- package/dist/backlog/index.js +8 -0
- package/dist/backlog/index.js.map +1 -0
- package/dist/backlog/jira-provider.d.ts +60 -0
- package/dist/backlog/jira-provider.js +272 -0
- package/dist/backlog/jira-provider.js.map +1 -0
- package/dist/backlog/jira-provider.test.d.ts +1 -0
- package/dist/backlog/jira-provider.test.js +449 -0
- package/dist/backlog/jira-provider.test.js.map +1 -0
- package/dist/backlog/jira-reference-scanner.d.ts +11 -0
- package/dist/backlog/jira-reference-scanner.js +26 -0
- package/dist/backlog/jira-reference-scanner.js.map +1 -0
- package/dist/backlog/jira-reference-scanner.test.d.ts +1 -0
- package/dist/backlog/jira-reference-scanner.test.js +127 -0
- package/dist/backlog/jira-reference-scanner.test.js.map +1 -0
- package/dist/backlog/types.d.ts +22 -0
- package/dist/backlog/types.js +1 -0
- package/dist/backlog/types.js.map +1 -0
- package/dist/chunker/ast-chunker.d.ts +45 -0
- package/dist/chunker/ast-chunker.js +292 -0
- package/dist/chunker/ast-chunker.js.map +1 -0
- package/dist/chunker/ast-chunker.test.d.ts +1 -0
- package/dist/chunker/ast-chunker.test.js +391 -0
- package/dist/chunker/ast-chunker.test.js.map +1 -0
- package/dist/chunker/chunker.d.ts +8 -0
- package/dist/chunker/chunker.js +1 -0
- package/dist/chunker/chunker.js.map +1 -0
- package/dist/chunker/index.d.ts +3 -0
- package/dist/chunker/index.js +2 -0
- package/dist/chunker/index.js.map +1 -0
- package/dist/config/config-parser.d.ts +15 -0
- package/dist/config/config-parser.js +283 -0
- package/dist/config/config-parser.js.map +1 -0
- package/dist/config/config-parser.test.d.ts +1 -0
- package/dist/config/config-parser.test.js +699 -0
- package/dist/config/config-parser.test.js.map +1 -0
- package/dist/docs/confluence-provider.d.ts +121 -0
- package/dist/docs/confluence-provider.js +459 -0
- package/dist/docs/confluence-provider.js.map +1 -0
- package/dist/docs/confluence-provider.test.d.ts +1 -0
- package/dist/docs/confluence-provider.test.js +765 -0
- package/dist/docs/confluence-provider.test.js.map +1 -0
- package/dist/docs/index.d.ts +4 -0
- package/dist/docs/index.js +2 -0
- package/dist/docs/index.js.map +1 -0
- package/dist/docs/sharepoint-provider.d.ts +150 -0
- package/dist/docs/sharepoint-provider.js +637 -0
- package/dist/docs/sharepoint-provider.js.map +1 -0
- package/dist/docs/sharepoint-provider.test.d.ts +1 -0
- package/dist/docs/sharepoint-provider.test.js +873 -0
- package/dist/docs/sharepoint-provider.test.js.map +1 -0
- package/dist/embedding/bm25-index.d.ts +12 -0
- package/dist/embedding/bm25-index.js +89 -0
- package/dist/embedding/bm25-index.js.map +1 -0
- package/dist/embedding/bm25-index.test.d.ts +1 -0
- package/dist/embedding/bm25-index.test.js +289 -0
- package/dist/embedding/bm25-index.test.js.map +1 -0
- package/dist/embedding/hybrid-search.d.ts +13 -0
- package/dist/embedding/hybrid-search.js +124 -0
- package/dist/embedding/hybrid-search.js.map +1 -0
- package/dist/embedding/hybrid-search.test.d.ts +1 -0
- package/dist/embedding/hybrid-search.test.js +266 -0
- package/dist/embedding/hybrid-search.test.js.map +1 -0
- package/dist/embedding/index.d.ts +11 -0
- package/dist/embedding/index.js +7 -0
- package/dist/embedding/index.js.map +1 -0
- package/dist/embedding/lancedb-store.d.ts +21 -0
- package/dist/embedding/lancedb-store.js +172 -0
- package/dist/embedding/lancedb-store.js.map +1 -0
- package/dist/embedding/lancedb-store.test.d.ts +1 -0
- package/dist/embedding/lancedb-store.test.js +268 -0
- package/dist/embedding/lancedb-store.test.js.map +1 -0
- package/dist/embedding/model-lifecycle-manager.d.ts +83 -0
- package/dist/embedding/model-lifecycle-manager.js +419 -0
- package/dist/embedding/model-lifecycle-manager.js.map +1 -0
- package/dist/embedding/model-lifecycle-manager.test.d.ts +1 -0
- package/dist/embedding/model-lifecycle-manager.test.js +642 -0
- package/dist/embedding/model-lifecycle-manager.test.js.map +1 -0
- package/dist/embedding/ollama-embedding-provider.d.ts +16 -0
- package/dist/embedding/ollama-embedding-provider.js +74 -0
- package/dist/embedding/ollama-embedding-provider.js.map +1 -0
- package/dist/embedding/ollama-embedding-provider.test.d.ts +1 -0
- package/dist/embedding/ollama-embedding-provider.test.js +198 -0
- package/dist/embedding/ollama-embedding-provider.test.js.map +1 -0
- package/dist/embedding/openai-compatible-embedding-provider.d.ts +19 -0
- package/dist/embedding/openai-compatible-embedding-provider.js +108 -0
- package/dist/embedding/openai-compatible-embedding-provider.js.map +1 -0
- package/dist/embedding/openai-compatible-embedding-provider.test.d.ts +1 -0
- package/dist/embedding/openai-compatible-embedding-provider.test.js +456 -0
- package/dist/embedding/openai-compatible-embedding-provider.test.js.map +1 -0
- package/dist/embedding/qdrant-store.d.ts +28 -0
- package/dist/embedding/qdrant-store.js +174 -0
- package/dist/embedding/qdrant-store.js.map +1 -0
- package/dist/embedding/qdrant-store.test.d.ts +1 -0
- package/dist/embedding/qdrant-store.test.js +359 -0
- package/dist/embedding/qdrant-store.test.js.map +1 -0
- package/dist/enrichment/index.d.ts +4 -0
- package/dist/enrichment/index.js +2 -0
- package/dist/enrichment/index.js.map +1 -0
- package/dist/enrichment/nl-enricher.d.ts +16 -0
- package/dist/enrichment/nl-enricher.js +47 -0
- package/dist/enrichment/nl-enricher.js.map +1 -0
- package/dist/enrichment/nl-enricher.test.d.ts +1 -0
- package/dist/enrichment/nl-enricher.test.js +154 -0
- package/dist/enrichment/nl-enricher.test.js.map +1 -0
- package/dist/enrichment/ollama-client.d.ts +18 -0
- package/dist/enrichment/ollama-client.js +55 -0
- package/dist/enrichment/ollama-client.js.map +1 -0
- package/dist/enrichment/ollama-client.test.d.ts +1 -0
- package/dist/enrichment/ollama-client.test.js +129 -0
- package/dist/enrichment/ollama-client.test.js.map +1 -0
- package/dist/git/git-client.d.ts +22 -0
- package/dist/git/git-client.js +6 -0
- package/dist/git/git-client.js.map +1 -0
- package/dist/git/git-client.test.d.ts +1 -0
- package/dist/git/git-client.test.js +200 -0
- package/dist/git/git-client.test.js.map +1 -0
- package/dist/git/ignore-filter.d.ts +2 -0
- package/dist/git/ignore-filter.js +31 -0
- package/dist/git/ignore-filter.js.map +1 -0
- package/dist/git/ignore-filter.test.d.ts +1 -0
- package/dist/git/ignore-filter.test.js +87 -0
- package/dist/git/ignore-filter.test.js.map +1 -0
- package/dist/git/index.d.ts +4 -0
- package/dist/git/index.js +3 -0
- package/dist/git/index.js.map +1 -0
- package/dist/git/simple-git-client.d.ts +12 -0
- package/dist/git/simple-git-client.js +138 -0
- package/dist/git/simple-git-client.js.map +1 -0
- package/dist/graph/cross-repo-resolver.d.ts +50 -0
- package/dist/graph/cross-repo-resolver.js +315 -0
- package/dist/graph/cross-repo-resolver.js.map +1 -0
- package/dist/graph/cross-repo-resolver.test.d.ts +1 -0
- package/dist/graph/cross-repo-resolver.test.js +548 -0
- package/dist/graph/cross-repo-resolver.test.js.map +1 -0
- package/dist/graph/dependency-graph.d.ts +44 -0
- package/dist/graph/dependency-graph.js +108 -0
- package/dist/graph/dependency-graph.js.map +1 -0
- package/dist/graph/dependency-graph.test.d.ts +1 -0
- package/dist/graph/dependency-graph.test.js +276 -0
- package/dist/graph/dependency-graph.test.js.map +1 -0
- package/dist/graph/graph-builder.d.ts +11 -0
- package/dist/graph/graph-builder.js +113 -0
- package/dist/graph/graph-builder.js.map +1 -0
- package/dist/graph/graph-builder.test.d.ts +1 -0
- package/dist/graph/graph-builder.test.js +178 -0
- package/dist/graph/graph-builder.test.js.map +1 -0
- package/dist/graph/import-resolver.d.ts +11 -0
- package/dist/graph/import-resolver.js +199 -0
- package/dist/graph/import-resolver.js.map +1 -0
- package/dist/graph/import-resolver.test.d.ts +1 -0
- package/dist/graph/import-resolver.test.js +282 -0
- package/dist/graph/import-resolver.test.js.map +1 -0
- package/dist/graph/index.d.ts +7 -0
- package/dist/graph/index.js +4 -0
- package/dist/graph/index.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.js +15 -0
- package/dist/index.js.map +1 -0
- package/dist/indexer/file-scanner.d.ts +34 -0
- package/dist/indexer/file-scanner.js +69 -0
- package/dist/indexer/file-scanner.js.map +1 -0
- package/dist/indexer/file-scanner.test.d.ts +1 -0
- package/dist/indexer/file-scanner.test.js +110 -0
- package/dist/indexer/file-scanner.test.js.map +1 -0
- package/dist/indexer/file-watcher.d.ts +79 -0
- package/dist/indexer/file-watcher.js +148 -0
- package/dist/indexer/incremental-indexer.d.ts +67 -0
- package/dist/indexer/incremental-indexer.js +142 -0
- package/dist/indexer/incremental-indexer.js.map +1 -0
- package/dist/indexer/incremental-indexer.test.d.ts +1 -0
- package/dist/indexer/incremental-indexer.test.js +266 -0
- package/dist/indexer/incremental-indexer.test.js.map +1 -0
- package/dist/indexer/index-check.d.ts +22 -0
- package/dist/indexer/index-check.js +74 -0
- package/dist/indexer/index-check.js.map +1 -0
- package/dist/indexer/index-check.test.d.ts +1 -0
- package/dist/indexer/index-check.test.js +100 -0
- package/dist/indexer/index-check.test.js.map +1 -0
- package/dist/indexer/index-state.d.ts +61 -0
- package/dist/indexer/index-state.js +82 -0
- package/dist/indexer/index-state.js.map +1 -0
- package/dist/indexer/index-state.test.d.ts +1 -0
- package/dist/indexer/index-state.test.js +140 -0
- package/dist/indexer/index-state.test.js.map +1 -0
- package/dist/indexer/index.d.ts +12 -0
- package/dist/indexer/index.js +6 -0
- package/dist/indexer/index.js.map +1 -0
- package/dist/indexer/multi-repo-indexer.d.ts +63 -0
- package/dist/indexer/multi-repo-indexer.js +144 -0
- package/dist/indexer/multi-repo-indexer.js.map +1 -0
- package/dist/indexer/multi-repo-indexer.test.d.ts +1 -0
- package/dist/indexer/multi-repo-indexer.test.js +238 -0
- package/dist/indexer/multi-repo-indexer.test.js.map +1 -0
- package/dist/parser/index.d.ts +4 -0
- package/dist/parser/index.js +3 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/language-registry.d.ts +46 -0
- package/dist/parser/language-registry.js +219 -0
- package/dist/parser/language-registry.js.map +1 -0
- package/dist/parser/language-registry.test.d.ts +1 -0
- package/dist/parser/language-registry.test.js +225 -0
- package/dist/parser/language-registry.test.js.map +1 -0
- package/dist/parser/markdown-parser.d.ts +124 -0
- package/dist/parser/markdown-parser.js +487 -0
- package/dist/parser/markdown-parser.js.map +1 -0
- package/dist/parser/markdown-parser.test.d.ts +1 -0
- package/dist/parser/markdown-parser.test.js +600 -0
- package/dist/parser/markdown-parser.test.js.map +1 -0
- package/dist/parser/tree-sitter-parser.d.ts +32 -0
- package/dist/parser/tree-sitter-parser.js +146 -0
- package/dist/parser/tree-sitter-parser.js.map +1 -0
- package/dist/retrieval/context-expander.d.ts +51 -0
- package/dist/retrieval/context-expander.js +218 -0
- package/dist/retrieval/context-expander.js.map +1 -0
- package/dist/retrieval/context-expander.test.d.ts +1 -0
- package/dist/retrieval/context-expander.test.js +339 -0
- package/dist/retrieval/context-expander.test.js.map +1 -0
- package/dist/retrieval/cross-encoder-reranker.d.ts +16 -0
- package/dist/retrieval/cross-encoder-reranker.js +90 -0
- package/dist/retrieval/cross-encoder-reranker.js.map +1 -0
- package/dist/retrieval/cross-encoder-reranker.test.d.ts +1 -0
- package/dist/retrieval/cross-encoder-reranker.test.js +305 -0
- package/dist/retrieval/cross-encoder-reranker.test.js.map +1 -0
- package/dist/retrieval/index.d.ts +8 -0
- package/dist/retrieval/index.js +4 -0
- package/dist/retrieval/index.js.map +1 -0
- package/dist/retrieval/query-analyzer.d.ts +29 -0
- package/dist/retrieval/query-analyzer.js +238 -0
- package/dist/retrieval/query-analyzer.js.map +1 -0
- package/dist/retrieval/query-analyzer.test.d.ts +1 -0
- package/dist/retrieval/query-analyzer.test.js +236 -0
- package/dist/retrieval/query-analyzer.test.js.map +1 -0
- package/dist/retrieval/token-budget.d.ts +51 -0
- package/dist/retrieval/token-budget.js +141 -0
- package/dist/retrieval/token-budget.js.map +1 -0
- package/dist/retrieval/token-budget.test.d.ts +1 -0
- package/dist/retrieval/token-budget.test.js +404 -0
- package/dist/retrieval/token-budget.test.js.map +1 -0
- package/dist/storage/azure-blob-provider.d.ts +19 -0
- package/dist/storage/azure-blob-provider.js +199 -0
- package/dist/storage/azure-blob-provider.js.map +1 -0
- package/dist/storage/azure-blob-provider.test.d.ts +1 -0
- package/dist/storage/azure-blob-provider.test.js +250 -0
- package/dist/storage/azure-blob-provider.test.js.map +1 -0
- package/dist/storage/gcs-provider.d.ts +22 -0
- package/dist/storage/gcs-provider.js +241 -0
- package/dist/storage/gcs-provider.js.map +1 -0
- package/dist/storage/gcs-provider.test.d.ts +1 -0
- package/dist/storage/gcs-provider.test.js +299 -0
- package/dist/storage/gcs-provider.test.js.map +1 -0
- package/dist/storage/index.d.ts +5 -0
- package/dist/storage/index.js +4 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/storage/s3-provider.d.ts +21 -0
- package/dist/storage/s3-provider.js +220 -0
- package/dist/storage/s3-provider.js.map +1 -0
- package/dist/storage/s3-provider.test.d.ts +1 -0
- package/dist/storage/s3-provider.test.js +329 -0
- package/dist/storage/s3-provider.test.js.map +1 -0
- package/dist/storage/types.d.ts +65 -0
- package/dist/storage/types.js +12 -0
- package/dist/storage/types.js.map +1 -0
- package/dist/types/chunk.d.ts +32 -0
- package/dist/types/chunk.js +1 -0
- package/dist/types/chunk.js.map +1 -0
- package/dist/types/config.d.ts +71 -0
- package/dist/types/config.js +1 -0
- package/dist/types/config.js.map +1 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/index.js +1 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/provider.d.ts +54 -0
- package/dist/types/provider.js +36 -0
- package/dist/types/provider.js.map +1 -0
- package/dist/types/search.d.ts +27 -0
- package/dist/types/search.js +1 -0
- package/dist/types/search.js.map +1 -0
- package/package.json +70 -0
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { type Result } from 'neverthrow';
|
|
2
|
+
import type { Chunk } from '../types/chunk.js';
|
|
3
|
+
import { ParseError } from '../types/provider.js';
|
|
4
|
+
/**
|
|
5
|
+
* Parsed frontmatter from a Markdown file.
|
|
6
|
+
*/
|
|
7
|
+
export interface MarkdownFrontmatter {
|
|
8
|
+
readonly title?: string;
|
|
9
|
+
readonly tags?: readonly string[];
|
|
10
|
+
readonly aliases?: readonly string[];
|
|
11
|
+
readonly raw: Readonly<Record<string, unknown>>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* A structured section extracted from a Markdown document.
|
|
15
|
+
*/
|
|
16
|
+
interface MarkdownSection {
|
|
17
|
+
readonly heading: string;
|
|
18
|
+
readonly headingLevel: number;
|
|
19
|
+
readonly content: string;
|
|
20
|
+
readonly startLine: number;
|
|
21
|
+
readonly endLine: number;
|
|
22
|
+
readonly codeBlocks: readonly CodeBlock[];
|
|
23
|
+
readonly wikilinks: readonly string[];
|
|
24
|
+
readonly tags: readonly string[];
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* A fenced code block extracted from Markdown content.
|
|
28
|
+
*/
|
|
29
|
+
interface CodeBlock {
|
|
30
|
+
readonly language: string;
|
|
31
|
+
readonly content: string;
|
|
32
|
+
readonly startLine: number;
|
|
33
|
+
readonly endLine: number;
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Result of parsing a Markdown file.
|
|
37
|
+
*/
|
|
38
|
+
export interface ParsedMarkdown {
|
|
39
|
+
readonly filePath: string;
|
|
40
|
+
readonly frontmatter: MarkdownFrontmatter;
|
|
41
|
+
readonly sections: readonly MarkdownSection[];
|
|
42
|
+
readonly chunks: readonly Chunk[];
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Configuration for the MarkdownParser.
|
|
46
|
+
*/
|
|
47
|
+
export interface MarkdownParserConfig {
|
|
48
|
+
/** Maximum number of tokens per chunk (approximated as content.length / 4). */
|
|
49
|
+
readonly maxTokensPerChunk: number;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Extract YAML frontmatter from the beginning of a Markdown file.
|
|
53
|
+
*
|
|
54
|
+
* Frontmatter is delimited by `---` at the very start of the file.
|
|
55
|
+
* We parse it manually (no YAML library dependency) to extract
|
|
56
|
+
* simple key-value pairs, arrays, and tags.
|
|
57
|
+
*/
|
|
58
|
+
export declare function parseFrontmatter(content: string): {
|
|
59
|
+
frontmatter: MarkdownFrontmatter;
|
|
60
|
+
bodyStartLine: number;
|
|
61
|
+
};
|
|
62
|
+
/**
|
|
63
|
+
* Extract all [[wikilinks]] from Markdown content.
|
|
64
|
+
* Supports [[link]] and [[link|display text]] syntax.
|
|
65
|
+
*/
|
|
66
|
+
export declare function extractWikilinks(content: string): string[];
|
|
67
|
+
/**
|
|
68
|
+
* Extract all #tags from Markdown content.
|
|
69
|
+
* Tags must start with # followed by word characters (and may contain /).
|
|
70
|
+
* Excludes headings (# at line start followed by space) and code blocks.
|
|
71
|
+
*/
|
|
72
|
+
export declare function extractTags(content: string): string[];
|
|
73
|
+
/**
|
|
74
|
+
* MarkdownParser parses Markdown and Obsidian vault files into structured
|
|
75
|
+
* chunks suitable for indexing by CodeRAG.
|
|
76
|
+
*
|
|
77
|
+
* Features:
|
|
78
|
+
* - YAML frontmatter extraction (title, tags, aliases)
|
|
79
|
+
* - Heading-based section splitting (h1-h6)
|
|
80
|
+
* - [[wikilink]] extraction (Obsidian syntax)
|
|
81
|
+
* - #tag extraction
|
|
82
|
+
* - Fenced code block extraction
|
|
83
|
+
* - Chunk type 'doc' for all documentation chunks
|
|
84
|
+
*/
|
|
85
|
+
export declare class MarkdownParser {
|
|
86
|
+
private readonly config;
|
|
87
|
+
constructor(config?: Partial<MarkdownParserConfig>);
|
|
88
|
+
/**
|
|
89
|
+
* Parse a Markdown file into structured chunks.
|
|
90
|
+
*
|
|
91
|
+
* Returns a Result containing the parsed chunks or a ParseError.
|
|
92
|
+
*/
|
|
93
|
+
parse(filePath: string, content: string): Result<ParsedMarkdown, ParseError>;
|
|
94
|
+
/**
|
|
95
|
+
* Check if a file path is a Markdown file.
|
|
96
|
+
*/
|
|
97
|
+
static isMarkdownFile(filePath: string): boolean;
|
|
98
|
+
/**
|
|
99
|
+
* Internal parsing logic.
|
|
100
|
+
*/
|
|
101
|
+
private parseInternal;
|
|
102
|
+
/**
|
|
103
|
+
* Create a single section from the entire body when no headings are present.
|
|
104
|
+
*/
|
|
105
|
+
private createSingleSection;
|
|
106
|
+
/**
|
|
107
|
+
* Convert parsed sections into Chunk objects.
|
|
108
|
+
*/
|
|
109
|
+
private sectionsToChunks;
|
|
110
|
+
/**
|
|
111
|
+
* Convert a single section into one or more chunks,
|
|
112
|
+
* splitting if the section exceeds the token budget.
|
|
113
|
+
*/
|
|
114
|
+
private sectionToChunks;
|
|
115
|
+
/**
|
|
116
|
+
* Split a large section into multiple chunks at paragraph boundaries.
|
|
117
|
+
*/
|
|
118
|
+
private splitSection;
|
|
119
|
+
/**
|
|
120
|
+
* Construct a single Chunk with doc type and enriched metadata.
|
|
121
|
+
*/
|
|
122
|
+
private makeChunk;
|
|
123
|
+
}
|
|
124
|
+
export {};
|
|
@@ -0,0 +1,487 @@
|
|
|
1
|
+
import { createHash } from 'node:crypto';
|
|
2
|
+
import { ok, err } from 'neverthrow';
|
|
3
|
+
import { ParseError } from '../types/provider.js';
|
|
4
|
+
const DEFAULT_CONFIG = {
|
|
5
|
+
maxTokensPerChunk: 1024,
|
|
6
|
+
};
|
|
7
|
+
/**
|
|
8
|
+
* Generate a deterministic chunk ID from file path, start line, and content.
|
|
9
|
+
*/
|
|
10
|
+
function generateChunkId(filePath, startLine, content) {
|
|
11
|
+
return createHash('sha256')
|
|
12
|
+
.update(`${filePath}${startLine}${content}`)
|
|
13
|
+
.digest('hex');
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Approximate token count using the heuristic content.length / 4.
|
|
17
|
+
*/
|
|
18
|
+
function approximateTokens(content) {
|
|
19
|
+
return Math.ceil(content.length / 4);
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Extract YAML frontmatter from the beginning of a Markdown file.
|
|
23
|
+
*
|
|
24
|
+
* Frontmatter is delimited by `---` at the very start of the file.
|
|
25
|
+
* We parse it manually (no YAML library dependency) to extract
|
|
26
|
+
* simple key-value pairs, arrays, and tags.
|
|
27
|
+
*/
|
|
28
|
+
export function parseFrontmatter(content) {
|
|
29
|
+
const lines = content.split('\n');
|
|
30
|
+
if (lines[0]?.trim() !== '---') {
|
|
31
|
+
return {
|
|
32
|
+
frontmatter: { raw: {} },
|
|
33
|
+
bodyStartLine: 0,
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
let endIndex = -1;
|
|
37
|
+
for (let i = 1; i < lines.length; i++) {
|
|
38
|
+
if (lines[i]?.trim() === '---') {
|
|
39
|
+
endIndex = i;
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
if (endIndex === -1) {
|
|
44
|
+
return {
|
|
45
|
+
frontmatter: { raw: {} },
|
|
46
|
+
bodyStartLine: 0,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
const frontmatterLines = lines.slice(1, endIndex);
|
|
50
|
+
const raw = {};
|
|
51
|
+
let currentKey = '';
|
|
52
|
+
let currentArray = null;
|
|
53
|
+
for (const line of frontmatterLines) {
|
|
54
|
+
// Array item continuation
|
|
55
|
+
if (currentArray !== null && /^\s+-\s+/.test(line)) {
|
|
56
|
+
const value = line.replace(/^\s+-\s+/, '').trim();
|
|
57
|
+
currentArray.push(stripQuotes(value));
|
|
58
|
+
continue;
|
|
59
|
+
}
|
|
60
|
+
// If we were building an array, finalize it
|
|
61
|
+
if (currentArray !== null) {
|
|
62
|
+
raw[currentKey] = currentArray;
|
|
63
|
+
currentArray = null;
|
|
64
|
+
}
|
|
65
|
+
// Key: value pair
|
|
66
|
+
const kvMatch = line.match(/^(\w[\w-]*)\s*:\s*(.*)/);
|
|
67
|
+
if (kvMatch) {
|
|
68
|
+
const key = kvMatch[1];
|
|
69
|
+
const value = kvMatch[2].trim();
|
|
70
|
+
if (value === '') {
|
|
71
|
+
// Could be start of an array
|
|
72
|
+
currentKey = key;
|
|
73
|
+
currentArray = [];
|
|
74
|
+
}
|
|
75
|
+
else if (value.startsWith('[') && value.endsWith(']')) {
|
|
76
|
+
// Inline array: [item1, item2]
|
|
77
|
+
const items = value
|
|
78
|
+
.slice(1, -1)
|
|
79
|
+
.split(',')
|
|
80
|
+
.map((s) => stripQuotes(s.trim()))
|
|
81
|
+
.filter((s) => s.length > 0);
|
|
82
|
+
raw[key] = items;
|
|
83
|
+
}
|
|
84
|
+
else {
|
|
85
|
+
raw[key] = stripQuotes(value);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Finalize any trailing array
|
|
90
|
+
if (currentArray !== null) {
|
|
91
|
+
raw[currentKey] = currentArray;
|
|
92
|
+
}
|
|
93
|
+
const title = typeof raw['title'] === 'string' ? raw['title'] : undefined;
|
|
94
|
+
const tags = extractStringArray(raw['tags']);
|
|
95
|
+
const aliases = extractStringArray(raw['aliases']);
|
|
96
|
+
return {
|
|
97
|
+
frontmatter: { title, tags, aliases, raw },
|
|
98
|
+
bodyStartLine: endIndex + 1,
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Strip surrounding quotes from a string value.
|
|
103
|
+
*/
|
|
104
|
+
function stripQuotes(value) {
|
|
105
|
+
if ((value.startsWith('"') && value.endsWith('"')) ||
|
|
106
|
+
(value.startsWith("'") && value.endsWith("'"))) {
|
|
107
|
+
return value.slice(1, -1);
|
|
108
|
+
}
|
|
109
|
+
return value;
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Safely extract a string array from a frontmatter value.
|
|
113
|
+
*/
|
|
114
|
+
function extractStringArray(value) {
|
|
115
|
+
if (!Array.isArray(value))
|
|
116
|
+
return undefined;
|
|
117
|
+
const result = [];
|
|
118
|
+
for (const item of value) {
|
|
119
|
+
if (typeof item === 'string') {
|
|
120
|
+
result.push(item);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
return result.length > 0 ? result : undefined;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Extract all [[wikilinks]] from Markdown content.
|
|
127
|
+
* Supports [[link]] and [[link|display text]] syntax.
|
|
128
|
+
*/
|
|
129
|
+
export function extractWikilinks(content) {
|
|
130
|
+
const pattern = /\[\[([^\]|]+)(?:\|[^\]]+)?\]\]/g;
|
|
131
|
+
const links = [];
|
|
132
|
+
let match;
|
|
133
|
+
while ((match = pattern.exec(content)) !== null) {
|
|
134
|
+
const link = match[1];
|
|
135
|
+
if (link) {
|
|
136
|
+
links.push(link.trim());
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return [...new Set(links)];
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Extract all #tags from Markdown content.
|
|
143
|
+
* Tags must start with # followed by word characters (and may contain /).
|
|
144
|
+
* Excludes headings (# at line start followed by space) and code blocks.
|
|
145
|
+
*/
|
|
146
|
+
export function extractTags(content) {
|
|
147
|
+
// Remove code blocks to avoid false matches
|
|
148
|
+
const withoutCode = content.replace(/```[\s\S]*?```/g, '');
|
|
149
|
+
const withoutInlineCode = withoutCode.replace(/`[^`]+`/g, '');
|
|
150
|
+
const pattern = /(?:^|[\s,(])#([\w][\w/.-]*[\w]|[\w])/gm;
|
|
151
|
+
const tags = [];
|
|
152
|
+
let match;
|
|
153
|
+
while ((match = pattern.exec(withoutInlineCode)) !== null) {
|
|
154
|
+
const tag = match[1];
|
|
155
|
+
if (tag) {
|
|
156
|
+
tags.push(tag);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
return [...new Set(tags)];
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Extract fenced code blocks from Markdown content.
|
|
163
|
+
*/
|
|
164
|
+
function extractCodeBlocks(lines, baseLineOffset) {
|
|
165
|
+
const blocks = [];
|
|
166
|
+
let inCodeBlock = false;
|
|
167
|
+
let codeStartLine = 0;
|
|
168
|
+
let codeLanguage = '';
|
|
169
|
+
let codeLines = [];
|
|
170
|
+
for (let i = 0; i < lines.length; i++) {
|
|
171
|
+
const line = lines[i];
|
|
172
|
+
if (!inCodeBlock && line.trimStart().startsWith('```')) {
|
|
173
|
+
inCodeBlock = true;
|
|
174
|
+
codeStartLine = i;
|
|
175
|
+
codeLanguage = line.trimStart().slice(3).trim();
|
|
176
|
+
codeLines = [];
|
|
177
|
+
}
|
|
178
|
+
else if (inCodeBlock && line.trimStart().startsWith('```')) {
|
|
179
|
+
blocks.push({
|
|
180
|
+
language: codeLanguage,
|
|
181
|
+
content: codeLines.join('\n'),
|
|
182
|
+
startLine: baseLineOffset + codeStartLine,
|
|
183
|
+
endLine: baseLineOffset + i,
|
|
184
|
+
});
|
|
185
|
+
inCodeBlock = false;
|
|
186
|
+
codeLines = [];
|
|
187
|
+
}
|
|
188
|
+
else if (inCodeBlock) {
|
|
189
|
+
codeLines.push(line);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
return blocks;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Split Markdown content into sections based on heading hierarchy.
|
|
196
|
+
*/
|
|
197
|
+
function splitIntoSections(lines, bodyStartLine) {
|
|
198
|
+
const sections = [];
|
|
199
|
+
let currentHeading = '';
|
|
200
|
+
let currentLevel = 0;
|
|
201
|
+
let currentStartLine = bodyStartLine;
|
|
202
|
+
let sectionLines = [];
|
|
203
|
+
for (let i = 0; i < lines.length; i++) {
|
|
204
|
+
const line = lines[i];
|
|
205
|
+
const headingMatch = line.match(/^(#{1,6})\s+(.+)/);
|
|
206
|
+
if (headingMatch) {
|
|
207
|
+
// Save previous section if it has content
|
|
208
|
+
if (sectionLines.length > 0 || currentHeading !== '') {
|
|
209
|
+
const content = sectionLines.join('\n');
|
|
210
|
+
const sectionContent = currentHeading
|
|
211
|
+
? `${'#'.repeat(currentLevel)} ${currentHeading}\n${content}`
|
|
212
|
+
: content;
|
|
213
|
+
if (sectionContent.trim().length > 0) {
|
|
214
|
+
const sectionAllLines = sectionContent.split('\n');
|
|
215
|
+
const codeBlocks = extractCodeBlocks(sectionAllLines, currentStartLine);
|
|
216
|
+
const wikilinks = extractWikilinks(sectionContent);
|
|
217
|
+
const tags = extractTags(sectionContent);
|
|
218
|
+
sections.push({
|
|
219
|
+
heading: currentHeading,
|
|
220
|
+
headingLevel: currentLevel,
|
|
221
|
+
content: sectionContent,
|
|
222
|
+
startLine: currentStartLine,
|
|
223
|
+
endLine: bodyStartLine + i - 1,
|
|
224
|
+
codeBlocks,
|
|
225
|
+
wikilinks,
|
|
226
|
+
tags,
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
currentHeading = headingMatch[2].trim();
|
|
231
|
+
currentLevel = headingMatch[1].length;
|
|
232
|
+
currentStartLine = bodyStartLine + i;
|
|
233
|
+
sectionLines = [];
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
sectionLines.push(line);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
// Final section
|
|
240
|
+
if (sectionLines.length > 0 || currentHeading !== '') {
|
|
241
|
+
const content = sectionLines.join('\n');
|
|
242
|
+
const sectionContent = currentHeading
|
|
243
|
+
? `${'#'.repeat(currentLevel)} ${currentHeading}\n${content}`
|
|
244
|
+
: content;
|
|
245
|
+
if (sectionContent.trim().length > 0) {
|
|
246
|
+
const sectionAllLines = sectionContent.split('\n');
|
|
247
|
+
const codeBlocks = extractCodeBlocks(sectionAllLines, currentStartLine);
|
|
248
|
+
const wikilinks = extractWikilinks(sectionContent);
|
|
249
|
+
const tags = extractTags(sectionContent);
|
|
250
|
+
sections.push({
|
|
251
|
+
heading: currentHeading,
|
|
252
|
+
headingLevel: currentLevel,
|
|
253
|
+
content: sectionContent,
|
|
254
|
+
startLine: currentStartLine,
|
|
255
|
+
endLine: bodyStartLine + lines.length - 1,
|
|
256
|
+
codeBlocks,
|
|
257
|
+
wikilinks,
|
|
258
|
+
tags,
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
return sections;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* MarkdownParser parses Markdown and Obsidian vault files into structured
|
|
266
|
+
* chunks suitable for indexing by CodeRAG.
|
|
267
|
+
*
|
|
268
|
+
* Features:
|
|
269
|
+
* - YAML frontmatter extraction (title, tags, aliases)
|
|
270
|
+
* - Heading-based section splitting (h1-h6)
|
|
271
|
+
* - [[wikilink]] extraction (Obsidian syntax)
|
|
272
|
+
* - #tag extraction
|
|
273
|
+
* - Fenced code block extraction
|
|
274
|
+
* - Chunk type 'doc' for all documentation chunks
|
|
275
|
+
*/
|
|
276
|
+
export class MarkdownParser {
|
|
277
|
+
config;
|
|
278
|
+
constructor(config) {
|
|
279
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Parse a Markdown file into structured chunks.
|
|
283
|
+
*
|
|
284
|
+
* Returns a Result containing the parsed chunks or a ParseError.
|
|
285
|
+
*/
|
|
286
|
+
parse(filePath, content) {
|
|
287
|
+
try {
|
|
288
|
+
const result = this.parseInternal(filePath, content);
|
|
289
|
+
return ok(result);
|
|
290
|
+
}
|
|
291
|
+
catch (error) {
|
|
292
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
293
|
+
return err(new ParseError(`Failed to parse markdown ${filePath}: ${message}`));
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Check if a file path is a Markdown file.
|
|
298
|
+
*/
|
|
299
|
+
static isMarkdownFile(filePath) {
|
|
300
|
+
const lower = filePath.toLowerCase();
|
|
301
|
+
return lower.endsWith('.md') || lower.endsWith('.mdx') || lower.endsWith('.markdown');
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* Internal parsing logic.
|
|
305
|
+
*/
|
|
306
|
+
parseInternal(filePath, content) {
|
|
307
|
+
if (content.trim().length === 0) {
|
|
308
|
+
return {
|
|
309
|
+
filePath,
|
|
310
|
+
frontmatter: { raw: {} },
|
|
311
|
+
sections: [],
|
|
312
|
+
chunks: [],
|
|
313
|
+
};
|
|
314
|
+
}
|
|
315
|
+
const { frontmatter, bodyStartLine } = parseFrontmatter(content);
|
|
316
|
+
const allLines = content.split('\n');
|
|
317
|
+
const bodyLines = allLines.slice(bodyStartLine);
|
|
318
|
+
const sections = splitIntoSections(bodyLines, bodyStartLine);
|
|
319
|
+
// If no sections were found (no headings), treat the whole body as one section
|
|
320
|
+
const effectiveSections = sections.length > 0
|
|
321
|
+
? sections
|
|
322
|
+
: this.createSingleSection(bodyLines, bodyStartLine);
|
|
323
|
+
const chunks = this.sectionsToChunks(filePath, frontmatter, effectiveSections);
|
|
324
|
+
return {
|
|
325
|
+
filePath,
|
|
326
|
+
frontmatter,
|
|
327
|
+
sections: effectiveSections,
|
|
328
|
+
chunks,
|
|
329
|
+
};
|
|
330
|
+
}
|
|
331
|
+
/**
|
|
332
|
+
* Create a single section from the entire body when no headings are present.
|
|
333
|
+
*/
|
|
334
|
+
createSingleSection(bodyLines, bodyStartLine) {
|
|
335
|
+
const content = bodyLines.join('\n');
|
|
336
|
+
if (content.trim().length === 0)
|
|
337
|
+
return [];
|
|
338
|
+
const codeBlocks = extractCodeBlocks(bodyLines, bodyStartLine);
|
|
339
|
+
const wikilinks = extractWikilinks(content);
|
|
340
|
+
const tags = extractTags(content);
|
|
341
|
+
return [
|
|
342
|
+
{
|
|
343
|
+
heading: '',
|
|
344
|
+
headingLevel: 0,
|
|
345
|
+
content,
|
|
346
|
+
startLine: bodyStartLine,
|
|
347
|
+
endLine: bodyStartLine + bodyLines.length - 1,
|
|
348
|
+
codeBlocks,
|
|
349
|
+
wikilinks,
|
|
350
|
+
tags,
|
|
351
|
+
},
|
|
352
|
+
];
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Convert parsed sections into Chunk objects.
|
|
356
|
+
*/
|
|
357
|
+
sectionsToChunks(filePath, frontmatter, sections) {
|
|
358
|
+
const chunks = [];
|
|
359
|
+
for (const section of sections) {
|
|
360
|
+
const sectionChunks = this.sectionToChunks(filePath, frontmatter, section);
|
|
361
|
+
chunks.push(...sectionChunks);
|
|
362
|
+
}
|
|
363
|
+
return chunks;
|
|
364
|
+
}
|
|
365
|
+
/**
|
|
366
|
+
* Convert a single section into one or more chunks,
|
|
367
|
+
* splitting if the section exceeds the token budget.
|
|
368
|
+
*/
|
|
369
|
+
sectionToChunks(filePath, frontmatter, section) {
|
|
370
|
+
const content = section.content;
|
|
371
|
+
const tokens = approximateTokens(content);
|
|
372
|
+
// Merge frontmatter tags with section tags
|
|
373
|
+
const allTags = mergeStringArrays(frontmatter.tags, section.tags);
|
|
374
|
+
const chunkType = 'doc';
|
|
375
|
+
const name = section.heading || frontmatter.title || '(document)';
|
|
376
|
+
// Build doc-specific metadata fields
|
|
377
|
+
const docLinks = section.wikilinks.length > 0
|
|
378
|
+
? [...section.wikilinks]
|
|
379
|
+
: undefined;
|
|
380
|
+
const docTags = allTags.length > 0
|
|
381
|
+
? allTags
|
|
382
|
+
: undefined;
|
|
383
|
+
const docAliases = frontmatter.aliases && frontmatter.aliases.length > 0
|
|
384
|
+
? [...frontmatter.aliases]
|
|
385
|
+
: undefined;
|
|
386
|
+
const docTitle = frontmatter.title ?? undefined;
|
|
387
|
+
if (tokens <= this.config.maxTokensPerChunk) {
|
|
388
|
+
return [
|
|
389
|
+
this.makeChunk(filePath, content, section.startLine, section.endLine, name, chunkType, docLinks, docTags, docAliases, docTitle),
|
|
390
|
+
];
|
|
391
|
+
}
|
|
392
|
+
// Split oversized sections at paragraph boundaries
|
|
393
|
+
return this.splitSection(filePath, content, section.startLine, name, chunkType, docLinks, docTags, docAliases, docTitle);
|
|
394
|
+
}
|
|
395
|
+
/**
|
|
396
|
+
* Split a large section into multiple chunks at paragraph boundaries.
|
|
397
|
+
*/
|
|
398
|
+
splitSection(filePath, content, baseStartLine, name, chunkType, docLinks, docTags, docAliases, docTitle) {
|
|
399
|
+
const lines = content.split('\n');
|
|
400
|
+
const chunks = [];
|
|
401
|
+
let currentLines = [];
|
|
402
|
+
let currentStartLine = baseStartLine;
|
|
403
|
+
for (let i = 0; i < lines.length; i++) {
|
|
404
|
+
const line = lines[i];
|
|
405
|
+
currentLines.push(line);
|
|
406
|
+
const currentContent = currentLines.join('\n');
|
|
407
|
+
if (approximateTokens(currentContent) >= this.config.maxTokensPerChunk) {
|
|
408
|
+
// Try to split at a blank line
|
|
409
|
+
let splitIndex = -1;
|
|
410
|
+
for (let j = currentLines.length - 2; j >= 0; j--) {
|
|
411
|
+
if (currentLines[j].trim() === '') {
|
|
412
|
+
splitIndex = j;
|
|
413
|
+
break;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
if (splitIndex > 0) {
|
|
417
|
+
const part = currentLines.slice(0, splitIndex + 1).join('\n');
|
|
418
|
+
if (part.trim().length > 0) {
|
|
419
|
+
const endLine = currentStartLine + splitIndex;
|
|
420
|
+
chunks.push(this.makeChunk(filePath, part, currentStartLine, endLine, name, chunkType, docLinks, docTags, docAliases, docTitle));
|
|
421
|
+
}
|
|
422
|
+
currentStartLine = currentStartLine + splitIndex + 1;
|
|
423
|
+
currentLines = currentLines.slice(splitIndex + 1);
|
|
424
|
+
}
|
|
425
|
+
else {
|
|
426
|
+
// Force split
|
|
427
|
+
if (currentContent.trim().length > 0) {
|
|
428
|
+
const endLine = currentStartLine + currentLines.length - 1;
|
|
429
|
+
chunks.push(this.makeChunk(filePath, currentContent, currentStartLine, endLine, name, chunkType, docLinks, docTags, docAliases, docTitle));
|
|
430
|
+
}
|
|
431
|
+
currentStartLine = baseStartLine + i + 1;
|
|
432
|
+
currentLines = [];
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
// Remaining lines
|
|
437
|
+
if (currentLines.length > 0) {
|
|
438
|
+
const remaining = currentLines.join('\n');
|
|
439
|
+
if (remaining.trim().length > 0) {
|
|
440
|
+
const endLine = currentStartLine + currentLines.length - 1;
|
|
441
|
+
chunks.push(this.makeChunk(filePath, remaining, currentStartLine, endLine, name, chunkType, docLinks, docTags, docAliases, docTitle));
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
return chunks;
|
|
445
|
+
}
|
|
446
|
+
/**
|
|
447
|
+
* Construct a single Chunk with doc type and enriched metadata.
|
|
448
|
+
*/
|
|
449
|
+
makeChunk(filePath, content, startLine, endLine, name, chunkType, docLinks, docTags, docAliases, docTitle) {
|
|
450
|
+
const id = generateChunkId(filePath, startLine, content);
|
|
451
|
+
return {
|
|
452
|
+
id,
|
|
453
|
+
content,
|
|
454
|
+
nlSummary: '',
|
|
455
|
+
filePath,
|
|
456
|
+
startLine,
|
|
457
|
+
endLine,
|
|
458
|
+
language: 'markdown',
|
|
459
|
+
metadata: {
|
|
460
|
+
chunkType,
|
|
461
|
+
name,
|
|
462
|
+
declarations: [],
|
|
463
|
+
imports: [],
|
|
464
|
+
exports: [],
|
|
465
|
+
links: docLinks,
|
|
466
|
+
tags: docTags,
|
|
467
|
+
aliases: docAliases,
|
|
468
|
+
docTitle,
|
|
469
|
+
},
|
|
470
|
+
};
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
/**
|
|
474
|
+
* Merge two optional string arrays, deduplicating.
|
|
475
|
+
*/
|
|
476
|
+
function mergeStringArrays(a, b) {
|
|
477
|
+
const set = new Set();
|
|
478
|
+
if (a) {
|
|
479
|
+
for (const item of a)
|
|
480
|
+
set.add(item);
|
|
481
|
+
}
|
|
482
|
+
if (b) {
|
|
483
|
+
for (const item of b)
|
|
484
|
+
set.add(item);
|
|
485
|
+
}
|
|
486
|
+
return [...set];
|
|
487
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"markdown-parser.js","sourceRoot":"","sources":["../../src/parser/markdown-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|