@code-rag/core 0.1.0 → 0.1.2

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.
Files changed (205) hide show
  1. package/package.json +11 -11
  2. package/dist/auth/audit-log.js.map +0 -1
  3. package/dist/auth/audit-log.test.d.ts +0 -1
  4. package/dist/auth/audit-log.test.js +0 -261
  5. package/dist/auth/audit-log.test.js.map +0 -1
  6. package/dist/auth/index.js.map +0 -1
  7. package/dist/auth/oidc-provider.js.map +0 -1
  8. package/dist/auth/oidc-provider.test.d.ts +0 -1
  9. package/dist/auth/oidc-provider.test.js +0 -520
  10. package/dist/auth/oidc-provider.test.js.map +0 -1
  11. package/dist/auth/rbac.js.map +0 -1
  12. package/dist/auth/rbac.test.d.ts +0 -1
  13. package/dist/auth/rbac.test.js +0 -224
  14. package/dist/auth/rbac.test.js.map +0 -1
  15. package/dist/auth/saml-provider.js.map +0 -1
  16. package/dist/auth/saml-provider.test.d.ts +0 -1
  17. package/dist/auth/saml-provider.test.js +0 -422
  18. package/dist/auth/saml-provider.test.js.map +0 -1
  19. package/dist/auth/types.js.map +0 -1
  20. package/dist/auth/types.test.d.ts +0 -1
  21. package/dist/auth/types.test.js +0 -147
  22. package/dist/auth/types.test.js.map +0 -1
  23. package/dist/backlog/ab-reference-scanner.js.map +0 -1
  24. package/dist/backlog/ab-reference-scanner.test.d.ts +0 -1
  25. package/dist/backlog/ab-reference-scanner.test.js +0 -83
  26. package/dist/backlog/ab-reference-scanner.test.js.map +0 -1
  27. package/dist/backlog/azure-devops-provider.js.map +0 -1
  28. package/dist/backlog/backlog-provider.js.map +0 -1
  29. package/dist/backlog/backlog-provider.test.d.ts +0 -1
  30. package/dist/backlog/backlog-provider.test.js +0 -426
  31. package/dist/backlog/backlog-provider.test.js.map +0 -1
  32. package/dist/backlog/clickup-provider.js.map +0 -1
  33. package/dist/backlog/clickup-provider.test.d.ts +0 -1
  34. package/dist/backlog/clickup-provider.test.js +0 -426
  35. package/dist/backlog/clickup-provider.test.js.map +0 -1
  36. package/dist/backlog/clickup-reference-scanner.js.map +0 -1
  37. package/dist/backlog/clickup-reference-scanner.test.d.ts +0 -1
  38. package/dist/backlog/clickup-reference-scanner.test.js +0 -92
  39. package/dist/backlog/clickup-reference-scanner.test.js.map +0 -1
  40. package/dist/backlog/code-linker.js.map +0 -1
  41. package/dist/backlog/code-linker.test.d.ts +0 -1
  42. package/dist/backlog/code-linker.test.js +0 -325
  43. package/dist/backlog/code-linker.test.js.map +0 -1
  44. package/dist/backlog/index.js.map +0 -1
  45. package/dist/backlog/jira-provider.js.map +0 -1
  46. package/dist/backlog/jira-provider.test.d.ts +0 -1
  47. package/dist/backlog/jira-provider.test.js +0 -449
  48. package/dist/backlog/jira-provider.test.js.map +0 -1
  49. package/dist/backlog/jira-reference-scanner.js.map +0 -1
  50. package/dist/backlog/jira-reference-scanner.test.d.ts +0 -1
  51. package/dist/backlog/jira-reference-scanner.test.js +0 -127
  52. package/dist/backlog/jira-reference-scanner.test.js.map +0 -1
  53. package/dist/backlog/types.js.map +0 -1
  54. package/dist/chunker/ast-chunker.js.map +0 -1
  55. package/dist/chunker/ast-chunker.test.d.ts +0 -1
  56. package/dist/chunker/ast-chunker.test.js +0 -391
  57. package/dist/chunker/ast-chunker.test.js.map +0 -1
  58. package/dist/chunker/chunker.js.map +0 -1
  59. package/dist/chunker/index.js.map +0 -1
  60. package/dist/config/config-parser.js.map +0 -1
  61. package/dist/config/config-parser.test.d.ts +0 -1
  62. package/dist/config/config-parser.test.js +0 -699
  63. package/dist/config/config-parser.test.js.map +0 -1
  64. package/dist/docs/confluence-provider.js.map +0 -1
  65. package/dist/docs/confluence-provider.test.d.ts +0 -1
  66. package/dist/docs/confluence-provider.test.js +0 -765
  67. package/dist/docs/confluence-provider.test.js.map +0 -1
  68. package/dist/docs/index.js.map +0 -1
  69. package/dist/docs/sharepoint-provider.js.map +0 -1
  70. package/dist/docs/sharepoint-provider.test.d.ts +0 -1
  71. package/dist/docs/sharepoint-provider.test.js +0 -873
  72. package/dist/docs/sharepoint-provider.test.js.map +0 -1
  73. package/dist/embedding/bm25-index.js.map +0 -1
  74. package/dist/embedding/bm25-index.test.d.ts +0 -1
  75. package/dist/embedding/bm25-index.test.js +0 -289
  76. package/dist/embedding/bm25-index.test.js.map +0 -1
  77. package/dist/embedding/hybrid-search.js.map +0 -1
  78. package/dist/embedding/hybrid-search.test.d.ts +0 -1
  79. package/dist/embedding/hybrid-search.test.js +0 -266
  80. package/dist/embedding/hybrid-search.test.js.map +0 -1
  81. package/dist/embedding/index.js.map +0 -1
  82. package/dist/embedding/lancedb-store.js.map +0 -1
  83. package/dist/embedding/lancedb-store.test.d.ts +0 -1
  84. package/dist/embedding/lancedb-store.test.js +0 -268
  85. package/dist/embedding/lancedb-store.test.js.map +0 -1
  86. package/dist/embedding/model-lifecycle-manager.js.map +0 -1
  87. package/dist/embedding/model-lifecycle-manager.test.d.ts +0 -1
  88. package/dist/embedding/model-lifecycle-manager.test.js +0 -642
  89. package/dist/embedding/model-lifecycle-manager.test.js.map +0 -1
  90. package/dist/embedding/ollama-embedding-provider.js.map +0 -1
  91. package/dist/embedding/ollama-embedding-provider.test.d.ts +0 -1
  92. package/dist/embedding/ollama-embedding-provider.test.js +0 -198
  93. package/dist/embedding/ollama-embedding-provider.test.js.map +0 -1
  94. package/dist/embedding/openai-compatible-embedding-provider.js.map +0 -1
  95. package/dist/embedding/openai-compatible-embedding-provider.test.d.ts +0 -1
  96. package/dist/embedding/openai-compatible-embedding-provider.test.js +0 -456
  97. package/dist/embedding/openai-compatible-embedding-provider.test.js.map +0 -1
  98. package/dist/embedding/qdrant-store.js.map +0 -1
  99. package/dist/embedding/qdrant-store.test.d.ts +0 -1
  100. package/dist/embedding/qdrant-store.test.js +0 -359
  101. package/dist/embedding/qdrant-store.test.js.map +0 -1
  102. package/dist/enrichment/index.js.map +0 -1
  103. package/dist/enrichment/nl-enricher.js.map +0 -1
  104. package/dist/enrichment/nl-enricher.test.d.ts +0 -1
  105. package/dist/enrichment/nl-enricher.test.js +0 -154
  106. package/dist/enrichment/nl-enricher.test.js.map +0 -1
  107. package/dist/enrichment/ollama-client.js.map +0 -1
  108. package/dist/enrichment/ollama-client.test.d.ts +0 -1
  109. package/dist/enrichment/ollama-client.test.js +0 -129
  110. package/dist/enrichment/ollama-client.test.js.map +0 -1
  111. package/dist/git/git-client.js.map +0 -1
  112. package/dist/git/git-client.test.d.ts +0 -1
  113. package/dist/git/git-client.test.js +0 -200
  114. package/dist/git/git-client.test.js.map +0 -1
  115. package/dist/git/ignore-filter.js.map +0 -1
  116. package/dist/git/ignore-filter.test.d.ts +0 -1
  117. package/dist/git/ignore-filter.test.js +0 -87
  118. package/dist/git/ignore-filter.test.js.map +0 -1
  119. package/dist/git/index.js.map +0 -1
  120. package/dist/git/simple-git-client.js.map +0 -1
  121. package/dist/graph/cross-repo-resolver.js.map +0 -1
  122. package/dist/graph/cross-repo-resolver.test.d.ts +0 -1
  123. package/dist/graph/cross-repo-resolver.test.js +0 -548
  124. package/dist/graph/cross-repo-resolver.test.js.map +0 -1
  125. package/dist/graph/dependency-graph.js.map +0 -1
  126. package/dist/graph/dependency-graph.test.d.ts +0 -1
  127. package/dist/graph/dependency-graph.test.js +0 -276
  128. package/dist/graph/dependency-graph.test.js.map +0 -1
  129. package/dist/graph/graph-builder.js.map +0 -1
  130. package/dist/graph/graph-builder.test.d.ts +0 -1
  131. package/dist/graph/graph-builder.test.js +0 -178
  132. package/dist/graph/graph-builder.test.js.map +0 -1
  133. package/dist/graph/import-resolver.js.map +0 -1
  134. package/dist/graph/import-resolver.test.d.ts +0 -1
  135. package/dist/graph/import-resolver.test.js +0 -282
  136. package/dist/graph/import-resolver.test.js.map +0 -1
  137. package/dist/graph/index.js.map +0 -1
  138. package/dist/index.js.map +0 -1
  139. package/dist/indexer/file-scanner.js.map +0 -1
  140. package/dist/indexer/file-scanner.test.d.ts +0 -1
  141. package/dist/indexer/file-scanner.test.js +0 -110
  142. package/dist/indexer/file-scanner.test.js.map +0 -1
  143. package/dist/indexer/incremental-indexer.js.map +0 -1
  144. package/dist/indexer/incremental-indexer.test.d.ts +0 -1
  145. package/dist/indexer/incremental-indexer.test.js +0 -266
  146. package/dist/indexer/incremental-indexer.test.js.map +0 -1
  147. package/dist/indexer/index-check.js.map +0 -1
  148. package/dist/indexer/index-check.test.d.ts +0 -1
  149. package/dist/indexer/index-check.test.js +0 -100
  150. package/dist/indexer/index-check.test.js.map +0 -1
  151. package/dist/indexer/index-state.js.map +0 -1
  152. package/dist/indexer/index-state.test.d.ts +0 -1
  153. package/dist/indexer/index-state.test.js +0 -140
  154. package/dist/indexer/index-state.test.js.map +0 -1
  155. package/dist/indexer/index.js.map +0 -1
  156. package/dist/indexer/multi-repo-indexer.js.map +0 -1
  157. package/dist/indexer/multi-repo-indexer.test.d.ts +0 -1
  158. package/dist/indexer/multi-repo-indexer.test.js +0 -238
  159. package/dist/indexer/multi-repo-indexer.test.js.map +0 -1
  160. package/dist/parser/index.js.map +0 -1
  161. package/dist/parser/language-registry.js.map +0 -1
  162. package/dist/parser/language-registry.test.d.ts +0 -1
  163. package/dist/parser/language-registry.test.js +0 -225
  164. package/dist/parser/language-registry.test.js.map +0 -1
  165. package/dist/parser/markdown-parser.js.map +0 -1
  166. package/dist/parser/markdown-parser.test.d.ts +0 -1
  167. package/dist/parser/markdown-parser.test.js +0 -600
  168. package/dist/parser/markdown-parser.test.js.map +0 -1
  169. package/dist/parser/tree-sitter-parser.js.map +0 -1
  170. package/dist/retrieval/context-expander.js.map +0 -1
  171. package/dist/retrieval/context-expander.test.d.ts +0 -1
  172. package/dist/retrieval/context-expander.test.js +0 -339
  173. package/dist/retrieval/context-expander.test.js.map +0 -1
  174. package/dist/retrieval/cross-encoder-reranker.js.map +0 -1
  175. package/dist/retrieval/cross-encoder-reranker.test.d.ts +0 -1
  176. package/dist/retrieval/cross-encoder-reranker.test.js +0 -305
  177. package/dist/retrieval/cross-encoder-reranker.test.js.map +0 -1
  178. package/dist/retrieval/index.js.map +0 -1
  179. package/dist/retrieval/query-analyzer.js.map +0 -1
  180. package/dist/retrieval/query-analyzer.test.d.ts +0 -1
  181. package/dist/retrieval/query-analyzer.test.js +0 -236
  182. package/dist/retrieval/query-analyzer.test.js.map +0 -1
  183. package/dist/retrieval/token-budget.js.map +0 -1
  184. package/dist/retrieval/token-budget.test.d.ts +0 -1
  185. package/dist/retrieval/token-budget.test.js +0 -404
  186. package/dist/retrieval/token-budget.test.js.map +0 -1
  187. package/dist/storage/azure-blob-provider.js.map +0 -1
  188. package/dist/storage/azure-blob-provider.test.d.ts +0 -1
  189. package/dist/storage/azure-blob-provider.test.js +0 -250
  190. package/dist/storage/azure-blob-provider.test.js.map +0 -1
  191. package/dist/storage/gcs-provider.js.map +0 -1
  192. package/dist/storage/gcs-provider.test.d.ts +0 -1
  193. package/dist/storage/gcs-provider.test.js +0 -299
  194. package/dist/storage/gcs-provider.test.js.map +0 -1
  195. package/dist/storage/index.js.map +0 -1
  196. package/dist/storage/s3-provider.js.map +0 -1
  197. package/dist/storage/s3-provider.test.d.ts +0 -1
  198. package/dist/storage/s3-provider.test.js +0 -329
  199. package/dist/storage/s3-provider.test.js.map +0 -1
  200. package/dist/storage/types.js.map +0 -1
  201. package/dist/types/chunk.js.map +0 -1
  202. package/dist/types/config.js.map +0 -1
  203. package/dist/types/index.js.map +0 -1
  204. package/dist/types/provider.js.map +0 -1
  205. package/dist/types/search.js.map +0 -1
@@ -1,548 +0,0 @@
1
- import { describe, it, expect } from 'vitest';
2
- import { DependencyGraph } from './dependency-graph.js';
3
- import { CrossRepoResolver, parsePackageJson, parseGoMod, parseCargoToml, } from './cross-repo-resolver.js';
4
- // ---------------------------------------------------------------------------
5
- // Helpers
6
- // ---------------------------------------------------------------------------
7
- function makeGraph(nodes) {
8
- const graph = new DependencyGraph();
9
- for (const n of nodes) {
10
- graph.addNode({
11
- id: n.id,
12
- filePath: n.filePath,
13
- symbols: n.symbols ?? [],
14
- type: 'module',
15
- });
16
- }
17
- return graph;
18
- }
19
- // ---------------------------------------------------------------------------
20
- // parsePackageJson
21
- // ---------------------------------------------------------------------------
22
- describe('parsePackageJson', () => {
23
- it('should extract package name and dependencies', () => {
24
- const content = JSON.stringify({
25
- name: '@myorg/shared-utils',
26
- version: '1.0.0',
27
- dependencies: {
28
- lodash: '^4.17.21',
29
- neverthrow: '^6.0.0',
30
- },
31
- devDependencies: {
32
- vitest: '^1.0.0',
33
- },
34
- });
35
- const result = parsePackageJson(content, 'shared-utils');
36
- expect(result.isOk()).toBe(true);
37
- if (result.isOk()) {
38
- expect(result.value.repoName).toBe('shared-utils');
39
- expect(result.value.packageName).toBe('@myorg/shared-utils');
40
- expect(result.value.dependencies).toEqual(['lodash', 'neverthrow']);
41
- expect(result.value.devDependencies).toEqual(['vitest']);
42
- }
43
- });
44
- it('should handle missing dependencies field', () => {
45
- const content = JSON.stringify({ name: 'bare-package' });
46
- const result = parsePackageJson(content, 'bare');
47
- expect(result.isOk()).toBe(true);
48
- if (result.isOk()) {
49
- expect(result.value.packageName).toBe('bare-package');
50
- expect(result.value.dependencies).toEqual([]);
51
- expect(result.value.devDependencies).toEqual([]);
52
- }
53
- });
54
- it('should handle missing name field', () => {
55
- const content = JSON.stringify({
56
- dependencies: { foo: '1.0.0' },
57
- });
58
- const result = parsePackageJson(content, 'unnamed');
59
- expect(result.isOk()).toBe(true);
60
- if (result.isOk()) {
61
- expect(result.value.packageName).toBe('');
62
- expect(result.value.dependencies).toEqual(['foo']);
63
- }
64
- });
65
- it('should return error for invalid JSON', () => {
66
- const result = parsePackageJson('not valid json', 'bad');
67
- expect(result.isErr()).toBe(true);
68
- if (result.isErr()) {
69
- expect(result.error.name).toBe('CrossRepoError');
70
- expect(result.error.message).toContain('Failed to parse package.json');
71
- }
72
- });
73
- it('should return error for non-object JSON', () => {
74
- const result = parsePackageJson('"just a string"', 'bad');
75
- expect(result.isErr()).toBe(true);
76
- if (result.isErr()) {
77
- expect(result.error.message).toContain('must be a JSON object');
78
- }
79
- });
80
- });
81
- // ---------------------------------------------------------------------------
82
- // parseGoMod
83
- // ---------------------------------------------------------------------------
84
- describe('parseGoMod', () => {
85
- it('should extract module name and require directives', () => {
86
- const content = [
87
- 'module github.com/myorg/my-service',
88
- '',
89
- 'go 1.21',
90
- '',
91
- 'require (',
92
- '\tgithub.com/gin-gonic/gin v1.9.1',
93
- '\tgithub.com/myorg/shared-lib v0.2.0',
94
- ')',
95
- ].join('\n');
96
- const result = parseGoMod(content, 'my-service');
97
- expect(result.isOk()).toBe(true);
98
- if (result.isOk()) {
99
- expect(result.value.repoName).toBe('my-service');
100
- expect(result.value.packageName).toBe('github.com/myorg/my-service');
101
- expect(result.value.dependencies).toEqual([
102
- 'github.com/gin-gonic/gin',
103
- 'github.com/myorg/shared-lib',
104
- ]);
105
- expect(result.value.devDependencies).toEqual([]);
106
- }
107
- });
108
- it('should handle single-line require', () => {
109
- const content = [
110
- 'module github.com/foo/bar',
111
- '',
112
- 'require github.com/baz/qux v1.0.0',
113
- ].join('\n');
114
- const result = parseGoMod(content, 'bar');
115
- expect(result.isOk()).toBe(true);
116
- if (result.isOk()) {
117
- expect(result.value.dependencies).toEqual(['github.com/baz/qux']);
118
- }
119
- });
120
- it('should skip comments inside require block', () => {
121
- const content = [
122
- 'module github.com/foo/bar',
123
- '',
124
- 'require (',
125
- '\t// indirect dependency',
126
- '\tgithub.com/real/dep v1.0.0',
127
- ')',
128
- ].join('\n');
129
- const result = parseGoMod(content, 'bar');
130
- expect(result.isOk()).toBe(true);
131
- if (result.isOk()) {
132
- expect(result.value.dependencies).toEqual(['github.com/real/dep']);
133
- }
134
- });
135
- it('should handle empty go.mod', () => {
136
- const result = parseGoMod('module github.com/empty/mod', 'empty');
137
- expect(result.isOk()).toBe(true);
138
- if (result.isOk()) {
139
- expect(result.value.packageName).toBe('github.com/empty/mod');
140
- expect(result.value.dependencies).toEqual([]);
141
- }
142
- });
143
- });
144
- // ---------------------------------------------------------------------------
145
- // parseCargoToml
146
- // ---------------------------------------------------------------------------
147
- describe('parseCargoToml', () => {
148
- it('should extract package name and dependencies', () => {
149
- const content = [
150
- '[package]',
151
- 'name = "my-crate"',
152
- 'version = "0.1.0"',
153
- '',
154
- '[dependencies]',
155
- 'serde = "1.0"',
156
- 'tokio = { version = "1", features = ["full"] }',
157
- '',
158
- '[dev-dependencies]',
159
- 'criterion = "0.5"',
160
- ].join('\n');
161
- const result = parseCargoToml(content, 'my-crate-repo');
162
- expect(result.isOk()).toBe(true);
163
- if (result.isOk()) {
164
- expect(result.value.repoName).toBe('my-crate-repo');
165
- expect(result.value.packageName).toBe('my-crate');
166
- expect(result.value.dependencies).toEqual(['serde', 'tokio']);
167
- expect(result.value.devDependencies).toEqual(['criterion']);
168
- }
169
- });
170
- it('should handle inline table dependencies section', () => {
171
- const content = [
172
- '[package]',
173
- 'name = "foo"',
174
- '',
175
- '[dependencies.serde]',
176
- 'version = "1.0"',
177
- 'features = ["derive"]',
178
- ].join('\n');
179
- const result = parseCargoToml(content, 'foo-repo');
180
- expect(result.isOk()).toBe(true);
181
- if (result.isOk()) {
182
- expect(result.value.dependencies).toContain('serde');
183
- }
184
- });
185
- it('should handle Cargo.toml with no dependencies', () => {
186
- const content = [
187
- '[package]',
188
- 'name = "minimal"',
189
- 'version = "0.1.0"',
190
- ].join('\n');
191
- const result = parseCargoToml(content, 'minimal');
192
- expect(result.isOk()).toBe(true);
193
- if (result.isOk()) {
194
- expect(result.value.packageName).toBe('minimal');
195
- expect(result.value.dependencies).toEqual([]);
196
- expect(result.value.devDependencies).toEqual([]);
197
- }
198
- });
199
- it('should skip comments', () => {
200
- const content = [
201
- '[package]',
202
- '# This is a comment',
203
- 'name = "commented"',
204
- '',
205
- '[dependencies]',
206
- '# serde is great',
207
- 'serde = "1.0"',
208
- ].join('\n');
209
- const result = parseCargoToml(content, 'commented');
210
- expect(result.isOk()).toBe(true);
211
- if (result.isOk()) {
212
- expect(result.value.packageName).toBe('commented');
213
- expect(result.value.dependencies).toEqual(['serde']);
214
- }
215
- });
216
- });
217
- // ---------------------------------------------------------------------------
218
- // CrossRepoResolver.resolveCrossRepoDependencies
219
- // ---------------------------------------------------------------------------
220
- describe('CrossRepoResolver', () => {
221
- describe('resolveCrossRepoDependencies', () => {
222
- it('should find inter-repo dependencies when repo A depends on repo B package', () => {
223
- const resolver = new CrossRepoResolver();
224
- const graphA = makeGraph([{ id: 'src/index.ts', filePath: 'src/index.ts' }]);
225
- const graphB = makeGraph([{ id: 'src/lib.ts', filePath: 'src/lib.ts' }]);
226
- const repoGraphs = new Map([
227
- ['repo-a', graphA],
228
- ['repo-b', graphB],
229
- ]);
230
- const manifestA = {
231
- repoName: 'repo-a',
232
- packageName: '@myorg/frontend',
233
- dependencies: ['@myorg/shared-lib', 'lodash'],
234
- devDependencies: [],
235
- };
236
- const manifestB = {
237
- repoName: 'repo-b',
238
- packageName: '@myorg/shared-lib',
239
- dependencies: [],
240
- devDependencies: [],
241
- };
242
- const repoManifests = new Map([
243
- ['repo-a', manifestA],
244
- ['repo-b', manifestB],
245
- ]);
246
- const result = resolver.resolveCrossRepoDependencies(repoGraphs, repoManifests);
247
- expect(result.isOk()).toBe(true);
248
- if (result.isOk()) {
249
- expect(result.value).toHaveLength(1);
250
- expect(result.value[0]).toEqual({
251
- sourceRepo: 'repo-a',
252
- targetRepo: 'repo-b',
253
- sourceChunkId: 'src/index.ts',
254
- targetPackage: '@myorg/shared-lib',
255
- dependencyType: 'npm',
256
- });
257
- }
258
- });
259
- it('should return empty array for independent repos (no cross-repo deps)', () => {
260
- const resolver = new CrossRepoResolver();
261
- const graphA = makeGraph([{ id: 'src/a.ts', filePath: 'src/a.ts' }]);
262
- const graphB = makeGraph([{ id: 'src/b.ts', filePath: 'src/b.ts' }]);
263
- const repoGraphs = new Map([
264
- ['repo-a', graphA],
265
- ['repo-b', graphB],
266
- ]);
267
- const manifestA = {
268
- repoName: 'repo-a',
269
- packageName: '@org/alpha',
270
- dependencies: ['express'],
271
- devDependencies: [],
272
- };
273
- const manifestB = {
274
- repoName: 'repo-b',
275
- packageName: '@org/beta',
276
- dependencies: ['fastify'],
277
- devDependencies: [],
278
- };
279
- const repoManifests = new Map([
280
- ['repo-a', manifestA],
281
- ['repo-b', manifestB],
282
- ]);
283
- const result = resolver.resolveCrossRepoDependencies(repoGraphs, repoManifests);
284
- expect(result.isOk()).toBe(true);
285
- if (result.isOk()) {
286
- expect(result.value).toHaveLength(0);
287
- }
288
- });
289
- it('should find multiple cross-repo dependencies', () => {
290
- const resolver = new CrossRepoResolver();
291
- const graphA = makeGraph([{ id: 'src/app.ts', filePath: 'src/app.ts' }]);
292
- const graphB = makeGraph([{ id: 'src/utils.ts', filePath: 'src/utils.ts' }]);
293
- const graphC = makeGraph([{ id: 'src/models.ts', filePath: 'src/models.ts' }]);
294
- const repoGraphs = new Map([
295
- ['frontend', graphA],
296
- ['utils', graphB],
297
- ['models', graphC],
298
- ]);
299
- const manifestA = {
300
- repoName: 'frontend',
301
- packageName: '@org/frontend',
302
- dependencies: ['@org/utils', '@org/models'],
303
- devDependencies: [],
304
- };
305
- const manifestB = {
306
- repoName: 'utils',
307
- packageName: '@org/utils',
308
- dependencies: ['@org/models'],
309
- devDependencies: [],
310
- };
311
- const manifestC = {
312
- repoName: 'models',
313
- packageName: '@org/models',
314
- dependencies: [],
315
- devDependencies: [],
316
- };
317
- const repoManifests = new Map([
318
- ['frontend', manifestA],
319
- ['utils', manifestB],
320
- ['models', manifestC],
321
- ]);
322
- const result = resolver.resolveCrossRepoDependencies(repoGraphs, repoManifests);
323
- expect(result.isOk()).toBe(true);
324
- if (result.isOk()) {
325
- expect(result.value).toHaveLength(3);
326
- // frontend -> utils
327
- expect(result.value).toContainEqual(expect.objectContaining({
328
- sourceRepo: 'frontend',
329
- targetRepo: 'utils',
330
- targetPackage: '@org/utils',
331
- }));
332
- // frontend -> models
333
- expect(result.value).toContainEqual(expect.objectContaining({
334
- sourceRepo: 'frontend',
335
- targetRepo: 'models',
336
- targetPackage: '@org/models',
337
- }));
338
- // utils -> models
339
- expect(result.value).toContainEqual(expect.objectContaining({
340
- sourceRepo: 'utils',
341
- targetRepo: 'models',
342
- targetPackage: '@org/models',
343
- }));
344
- }
345
- });
346
- it('should not create self-referencing dependencies', () => {
347
- const resolver = new CrossRepoResolver();
348
- const graph = makeGraph([{ id: 'src/index.ts', filePath: 'src/index.ts' }]);
349
- const repoGraphs = new Map([
350
- ['my-repo', graph],
351
- ]);
352
- const manifest = {
353
- repoName: 'my-repo',
354
- packageName: '@org/my-package',
355
- dependencies: ['@org/my-package'], // self-reference (e.g. workspaces)
356
- devDependencies: [],
357
- };
358
- const repoManifests = new Map([
359
- ['my-repo', manifest],
360
- ]);
361
- const result = resolver.resolveCrossRepoDependencies(repoGraphs, repoManifests);
362
- expect(result.isOk()).toBe(true);
363
- if (result.isOk()) {
364
- expect(result.value).toHaveLength(0);
365
- }
366
- });
367
- it('should include devDependencies in cross-repo resolution', () => {
368
- const resolver = new CrossRepoResolver();
369
- const graphA = makeGraph([{ id: 'src/a.ts', filePath: 'src/a.ts' }]);
370
- const graphB = makeGraph([{ id: 'src/b.ts', filePath: 'src/b.ts' }]);
371
- const repoGraphs = new Map([
372
- ['consumer', graphA],
373
- ['test-utils', graphB],
374
- ]);
375
- const manifestA = {
376
- repoName: 'consumer',
377
- packageName: '@org/consumer',
378
- dependencies: [],
379
- devDependencies: ['@org/test-utils'],
380
- };
381
- const manifestB = {
382
- repoName: 'test-utils',
383
- packageName: '@org/test-utils',
384
- dependencies: [],
385
- devDependencies: [],
386
- };
387
- const repoManifests = new Map([
388
- ['consumer', manifestA],
389
- ['test-utils', manifestB],
390
- ]);
391
- const result = resolver.resolveCrossRepoDependencies(repoGraphs, repoManifests);
392
- expect(result.isOk()).toBe(true);
393
- if (result.isOk()) {
394
- expect(result.value).toHaveLength(1);
395
- expect(result.value[0]?.targetPackage).toBe('@org/test-utils');
396
- }
397
- });
398
- it('should handle repos without graphs', () => {
399
- const resolver = new CrossRepoResolver();
400
- const repoGraphs = new Map();
401
- const manifestA = {
402
- repoName: 'repo-a',
403
- packageName: '@org/alpha',
404
- dependencies: ['@org/beta'],
405
- devDependencies: [],
406
- };
407
- const manifestB = {
408
- repoName: 'repo-b',
409
- packageName: '@org/beta',
410
- dependencies: [],
411
- devDependencies: [],
412
- };
413
- const repoManifests = new Map([
414
- ['repo-a', manifestA],
415
- ['repo-b', manifestB],
416
- ]);
417
- const result = resolver.resolveCrossRepoDependencies(repoGraphs, repoManifests);
418
- expect(result.isOk()).toBe(true);
419
- if (result.isOk()) {
420
- expect(result.value).toHaveLength(1);
421
- expect(result.value[0]?.sourceChunkId).toBe('repo-a:root');
422
- }
423
- });
424
- });
425
- // ---------------------------------------------------------------------------
426
- // mergeGraphs
427
- // ---------------------------------------------------------------------------
428
- describe('mergeGraphs', () => {
429
- it('should merge two graphs with cross-repo edges', () => {
430
- const resolver = new CrossRepoResolver();
431
- const graphA = makeGraph([
432
- { id: 'src/app.ts', filePath: 'src/app.ts', symbols: ['App'] },
433
- ]);
434
- const graphB = makeGraph([
435
- { id: 'src/lib.ts', filePath: 'src/lib.ts', symbols: ['helper'] },
436
- ]);
437
- const graphs = new Map([
438
- ['frontend', graphA],
439
- ['shared', graphB],
440
- ]);
441
- const crossDeps = [
442
- {
443
- sourceRepo: 'frontend',
444
- targetRepo: 'shared',
445
- sourceChunkId: 'src/app.ts',
446
- targetPackage: '@org/shared',
447
- dependencyType: 'npm',
448
- },
449
- ];
450
- const result = resolver.mergeGraphs(graphs, crossDeps);
451
- expect(result.isOk()).toBe(true);
452
- if (result.isOk()) {
453
- const merged = result.value;
454
- // Both graphs' nodes should be present, prefixed
455
- expect(merged.getNode('frontend::src/app.ts')).toBeDefined();
456
- expect(merged.getNode('shared::src/lib.ts')).toBeDefined();
457
- // Cross-repo edge should exist
458
- const edges = merged.getAllEdges();
459
- const crossEdge = edges.find((e) => e.source.startsWith('frontend::') &&
460
- e.target.startsWith('shared::'));
461
- expect(crossEdge).toBeDefined();
462
- expect(crossEdge?.type).toBe('imports');
463
- }
464
- });
465
- it('should preserve intra-repo edges after merge', () => {
466
- const resolver = new CrossRepoResolver();
467
- const graph = new DependencyGraph();
468
- graph.addNode({ id: 'src/a.ts', filePath: 'src/a.ts', symbols: [], type: 'module' });
469
- graph.addNode({ id: 'src/b.ts', filePath: 'src/b.ts', symbols: [], type: 'module' });
470
- graph.addEdge({ source: 'src/a.ts', target: 'src/b.ts', type: 'imports' });
471
- const graphs = new Map([
472
- ['my-repo', graph],
473
- ]);
474
- const result = resolver.mergeGraphs(graphs, []);
475
- expect(result.isOk()).toBe(true);
476
- if (result.isOk()) {
477
- const merged = result.value;
478
- expect(merged.nodeCount()).toBe(2);
479
- expect(merged.edgeCount()).toBe(1);
480
- const deps = merged.getDependencies('my-repo::src/a.ts');
481
- expect(deps).toContain('my-repo::src/b.ts');
482
- }
483
- });
484
- it('should handle empty graphs map', () => {
485
- const resolver = new CrossRepoResolver();
486
- const graphs = new Map();
487
- const result = resolver.mergeGraphs(graphs, []);
488
- expect(result.isOk()).toBe(true);
489
- if (result.isOk()) {
490
- expect(result.value.nodeCount()).toBe(0);
491
- expect(result.value.edgeCount()).toBe(0);
492
- }
493
- });
494
- it('should create placeholder nodes for missing graphs in cross-deps', () => {
495
- const resolver = new CrossRepoResolver();
496
- const graphs = new Map();
497
- const crossDeps = [
498
- {
499
- sourceRepo: 'missing-a',
500
- targetRepo: 'missing-b',
501
- sourceChunkId: 'root',
502
- targetPackage: '@org/missing-b',
503
- dependencyType: 'npm',
504
- },
505
- ];
506
- const result = resolver.mergeGraphs(graphs, crossDeps);
507
- expect(result.isOk()).toBe(true);
508
- if (result.isOk()) {
509
- const merged = result.value;
510
- // Placeholder nodes should have been created
511
- expect(merged.getNode('missing-a::root')).toBeDefined();
512
- expect(merged.getNode('missing-b::root')).toBeDefined();
513
- expect(merged.edgeCount()).toBe(1);
514
- }
515
- });
516
- it('should support graph expansion across cross-repo edges', () => {
517
- const resolver = new CrossRepoResolver();
518
- const graphA = makeGraph([
519
- { id: 'src/consumer.ts', filePath: 'src/consumer.ts' },
520
- ]);
521
- const graphB = makeGraph([
522
- { id: 'src/provider.ts', filePath: 'src/provider.ts' },
523
- ]);
524
- const graphs = new Map([
525
- ['consumer-repo', graphA],
526
- ['provider-repo', graphB],
527
- ]);
528
- const crossDeps = [
529
- {
530
- sourceRepo: 'consumer-repo',
531
- targetRepo: 'provider-repo',
532
- sourceChunkId: 'src/consumer.ts',
533
- targetPackage: '@org/provider',
534
- dependencyType: 'npm',
535
- },
536
- ];
537
- const result = resolver.mergeGraphs(graphs, crossDeps);
538
- expect(result.isOk()).toBe(true);
539
- if (result.isOk()) {
540
- const merged = result.value;
541
- // BFS from consumer should reach provider across repo boundary
542
- const related = merged.getRelatedNodes('consumer-repo::src/consumer.ts', 2);
543
- expect(related.has('provider-repo::src/provider.ts')).toBe(true);
544
- }
545
- });
546
- });
547
- });
548
- //# sourceMappingURL=cross-repo-resolver.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cross-repo-resolver.test.js","sourceRoot":"","sources":["../../src/graph/cross-repo-resolver.test.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"dependency-graph.js","sourceRoot":"","sources":["../../src/graph/dependency-graph.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- export {};