@skillsmith/core 0.2.0 → 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.
Files changed (233) hide show
  1. package/README.md +233 -2
  2. package/dist/.tsbuildinfo +1 -1
  3. package/dist/src/analysis/__tests__/incremental.test.d.ts +13 -0
  4. package/dist/src/analysis/__tests__/incremental.test.d.ts.map +1 -0
  5. package/dist/src/analysis/__tests__/incremental.test.js +515 -0
  6. package/dist/src/analysis/__tests__/incremental.test.js.map +1 -0
  7. package/dist/src/analysis/__tests__/integration.test.d.ts +14 -0
  8. package/dist/src/analysis/__tests__/integration.test.d.ts.map +1 -0
  9. package/dist/src/analysis/__tests__/integration.test.js +1059 -0
  10. package/dist/src/analysis/__tests__/integration.test.js.map +1 -0
  11. package/dist/src/analysis/__tests__/metrics.test.d.ts +9 -0
  12. package/dist/src/analysis/__tests__/metrics.test.d.ts.map +1 -0
  13. package/dist/src/analysis/__tests__/metrics.test.js +369 -0
  14. package/dist/src/analysis/__tests__/metrics.test.js.map +1 -0
  15. package/dist/src/analysis/__tests__/performance.test.d.ts +15 -0
  16. package/dist/src/analysis/__tests__/performance.test.d.ts.map +1 -0
  17. package/dist/src/analysis/__tests__/performance.test.js +402 -0
  18. package/dist/src/analysis/__tests__/performance.test.js.map +1 -0
  19. package/dist/src/analysis/adapters/__tests__/go.test.d.ts +12 -0
  20. package/dist/src/analysis/adapters/__tests__/go.test.d.ts.map +1 -0
  21. package/dist/src/analysis/adapters/__tests__/go.test.js +561 -0
  22. package/dist/src/analysis/adapters/__tests__/go.test.js.map +1 -0
  23. package/dist/src/analysis/adapters/__tests__/python.test.d.ts +11 -0
  24. package/dist/src/analysis/adapters/__tests__/python.test.d.ts.map +1 -0
  25. package/dist/src/analysis/adapters/__tests__/python.test.js +669 -0
  26. package/dist/src/analysis/adapters/__tests__/python.test.js.map +1 -0
  27. package/dist/src/analysis/adapters/__tests__/rust.test.d.ts +12 -0
  28. package/dist/src/analysis/adapters/__tests__/rust.test.d.ts.map +1 -0
  29. package/dist/src/analysis/adapters/__tests__/rust.test.js +676 -0
  30. package/dist/src/analysis/adapters/__tests__/rust.test.js.map +1 -0
  31. package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts +14 -0
  32. package/dist/src/analysis/adapters/__tests__/typescript.test.d.ts.map +1 -0
  33. package/dist/src/analysis/adapters/__tests__/typescript.test.js +381 -0
  34. package/dist/src/analysis/adapters/__tests__/typescript.test.js.map +1 -0
  35. package/dist/src/analysis/adapters/base.d.ts +83 -0
  36. package/dist/src/analysis/adapters/base.d.ts.map +1 -0
  37. package/dist/src/analysis/adapters/base.js +40 -0
  38. package/dist/src/analysis/adapters/base.js.map +1 -0
  39. package/dist/src/analysis/adapters/factory.d.ts +150 -0
  40. package/dist/src/analysis/adapters/factory.d.ts.map +1 -0
  41. package/dist/src/analysis/adapters/factory.js +244 -0
  42. package/dist/src/analysis/adapters/factory.js.map +1 -0
  43. package/dist/src/analysis/adapters/go.d.ts +131 -0
  44. package/dist/src/analysis/adapters/go.d.ts.map +1 -0
  45. package/dist/src/analysis/adapters/go.js +414 -0
  46. package/dist/src/analysis/adapters/go.js.map +1 -0
  47. package/dist/src/analysis/adapters/index.d.ts +20 -0
  48. package/dist/src/analysis/adapters/index.d.ts.map +1 -0
  49. package/dist/src/analysis/adapters/index.js +23 -0
  50. package/dist/src/analysis/adapters/index.js.map +1 -0
  51. package/dist/src/analysis/adapters/java.d.ts +154 -0
  52. package/dist/src/analysis/adapters/java.d.ts.map +1 -0
  53. package/dist/src/analysis/adapters/java.js +407 -0
  54. package/dist/src/analysis/adapters/java.js.map +1 -0
  55. package/dist/src/analysis/adapters/python.d.ts +165 -0
  56. package/dist/src/analysis/adapters/python.d.ts.map +1 -0
  57. package/dist/src/analysis/adapters/python.js +475 -0
  58. package/dist/src/analysis/adapters/python.js.map +1 -0
  59. package/dist/src/analysis/adapters/rust.d.ts +116 -0
  60. package/dist/src/analysis/adapters/rust.d.ts.map +1 -0
  61. package/dist/src/analysis/adapters/rust.js +476 -0
  62. package/dist/src/analysis/adapters/rust.js.map +1 -0
  63. package/dist/src/analysis/adapters/typescript.d.ts +68 -0
  64. package/dist/src/analysis/adapters/typescript.d.ts.map +1 -0
  65. package/dist/src/analysis/adapters/typescript.js +79 -0
  66. package/dist/src/analysis/adapters/typescript.js.map +1 -0
  67. package/dist/src/analysis/aggregator.d.ts +193 -0
  68. package/dist/src/analysis/aggregator.d.ts.map +1 -0
  69. package/dist/src/analysis/aggregator.js +283 -0
  70. package/dist/src/analysis/aggregator.js.map +1 -0
  71. package/dist/src/analysis/cache.d.ts +180 -0
  72. package/dist/src/analysis/cache.d.ts.map +1 -0
  73. package/dist/src/analysis/cache.js +279 -0
  74. package/dist/src/analysis/cache.js.map +1 -0
  75. package/dist/src/analysis/file-streamer.d.ts +136 -0
  76. package/dist/src/analysis/file-streamer.d.ts.map +1 -0
  77. package/dist/src/analysis/file-streamer.js +291 -0
  78. package/dist/src/analysis/file-streamer.js.map +1 -0
  79. package/dist/src/analysis/incremental-parser.d.ts +186 -0
  80. package/dist/src/analysis/incremental-parser.d.ts.map +1 -0
  81. package/dist/src/analysis/incremental-parser.js +291 -0
  82. package/dist/src/analysis/incremental-parser.js.map +1 -0
  83. package/dist/src/analysis/incremental.d.ts +186 -0
  84. package/dist/src/analysis/incremental.d.ts.map +1 -0
  85. package/dist/src/analysis/incremental.js +247 -0
  86. package/dist/src/analysis/incremental.js.map +1 -0
  87. package/dist/src/analysis/index.d.ts +25 -3
  88. package/dist/src/analysis/index.d.ts.map +1 -1
  89. package/dist/src/analysis/index.js +45 -3
  90. package/dist/src/analysis/index.js.map +1 -1
  91. package/dist/src/analysis/language-detector.d.ts +92 -0
  92. package/dist/src/analysis/language-detector.d.ts.map +1 -0
  93. package/dist/src/analysis/language-detector.js +602 -0
  94. package/dist/src/analysis/language-detector.js.map +1 -0
  95. package/dist/src/analysis/memory-monitor.d.ts +199 -0
  96. package/dist/src/analysis/memory-monitor.d.ts.map +1 -0
  97. package/dist/src/analysis/memory-monitor.js +271 -0
  98. package/dist/src/analysis/memory-monitor.js.map +1 -0
  99. package/dist/src/analysis/metrics.d.ts +300 -0
  100. package/dist/src/analysis/metrics.d.ts.map +1 -0
  101. package/dist/src/analysis/metrics.js +537 -0
  102. package/dist/src/analysis/metrics.js.map +1 -0
  103. package/dist/src/analysis/router.d.ts +264 -0
  104. package/dist/src/analysis/router.d.ts.map +1 -0
  105. package/dist/src/analysis/router.js +398 -0
  106. package/dist/src/analysis/router.js.map +1 -0
  107. package/dist/src/analysis/tree-cache.d.ts +208 -0
  108. package/dist/src/analysis/tree-cache.d.ts.map +1 -0
  109. package/dist/src/analysis/tree-cache.js +288 -0
  110. package/dist/src/analysis/tree-cache.js.map +1 -0
  111. package/dist/src/analysis/tree-sitter/manager.d.ts +141 -0
  112. package/dist/src/analysis/tree-sitter/manager.d.ts.map +1 -0
  113. package/dist/src/analysis/tree-sitter/manager.js +239 -0
  114. package/dist/src/analysis/tree-sitter/manager.js.map +1 -0
  115. package/dist/src/analysis/types.d.ts +69 -6
  116. package/dist/src/analysis/types.d.ts.map +1 -1
  117. package/dist/src/analysis/types.js +23 -2
  118. package/dist/src/analysis/types.js.map +1 -1
  119. package/dist/src/analysis/worker-pool.d.ts +141 -0
  120. package/dist/src/analysis/worker-pool.d.ts.map +1 -0
  121. package/dist/src/analysis/worker-pool.js +418 -0
  122. package/dist/src/analysis/worker-pool.js.map +1 -0
  123. package/dist/src/analytics/schema.d.ts +1 -1
  124. package/dist/src/analytics/schema.d.ts.map +1 -1
  125. package/dist/src/analytics/schema.js +72 -0
  126. package/dist/src/analytics/schema.js.map +1 -1
  127. package/dist/src/api/cache.d.ts +24 -1
  128. package/dist/src/api/cache.d.ts.map +1 -1
  129. package/dist/src/api/cache.js +50 -2
  130. package/dist/src/api/cache.js.map +1 -1
  131. package/dist/src/api/client.d.ts +132 -2
  132. package/dist/src/api/client.d.ts.map +1 -1
  133. package/dist/src/api/client.js +214 -18
  134. package/dist/src/api/client.js.map +1 -1
  135. package/dist/src/api/index.d.ts +2 -0
  136. package/dist/src/api/index.d.ts.map +1 -1
  137. package/dist/src/api/index.js +7 -0
  138. package/dist/src/api/index.js.map +1 -1
  139. package/dist/src/api/types.d.ts +251 -0
  140. package/dist/src/api/types.d.ts.map +1 -0
  141. package/dist/src/api/types.js +9 -0
  142. package/dist/src/api/types.js.map +1 -0
  143. package/dist/src/benchmarks/memory/MemoryProfiler.d.ts.map +1 -1
  144. package/dist/src/benchmarks/memory/MemoryProfiler.js.map +1 -1
  145. package/dist/src/embeddings/index.d.ts.map +1 -1
  146. package/dist/src/embeddings/index.js.map +1 -1
  147. package/dist/src/errors.d.ts +1 -0
  148. package/dist/src/errors.d.ts.map +1 -1
  149. package/dist/src/errors.js +1 -0
  150. package/dist/src/errors.js.map +1 -1
  151. package/dist/src/index.d.ts +3 -3
  152. package/dist/src/index.d.ts.map +1 -1
  153. package/dist/src/index.js +4 -4
  154. package/dist/src/index.js.map +1 -1
  155. package/dist/src/repositories/IndexerRepository.d.ts.map +1 -1
  156. package/dist/src/repositories/IndexerRepository.js +1 -0
  157. package/dist/src/repositories/IndexerRepository.js.map +1 -1
  158. package/dist/src/repositories/SkillRepository.d.ts.map +1 -1
  159. package/dist/src/repositories/SkillRepository.js +1 -0
  160. package/dist/src/repositories/SkillRepository.js.map +1 -1
  161. package/dist/src/repositories/quarantine/QuarantineRepository.d.ts.map +1 -1
  162. package/dist/src/repositories/quarantine/QuarantineRepository.js.map +1 -1
  163. package/dist/src/repositories/quarantine/query-builder.d.ts.map +1 -1
  164. package/dist/src/repositories/quarantine/query-builder.js +1 -1
  165. package/dist/src/repositories/quarantine/query-builder.js.map +1 -1
  166. package/dist/src/scripts/__tests__/scan-imported-skills.test.js +3 -3
  167. package/dist/src/scripts/__tests__/scan-imported-skills.test.js.map +1 -1
  168. package/dist/src/scripts/github-import/index.js.map +1 -1
  169. package/dist/src/scripts/import-github-skills.js +1 -1
  170. package/dist/src/scripts/import-github-skills.js.map +1 -1
  171. package/dist/src/scripts/skill-scanner/reporter.d.ts.map +1 -1
  172. package/dist/src/scripts/skill-scanner/reporter.js.map +1 -1
  173. package/dist/src/scripts/skill-scanner/scanner.d.ts.map +1 -1
  174. package/dist/src/scripts/skill-scanner/scanner.js.map +1 -1
  175. package/dist/src/scripts/skill-scanner/trust-scorer.d.ts.map +1 -1
  176. package/dist/src/scripts/skill-scanner/trust-scorer.js.map +1 -1
  177. package/dist/src/scripts/validation/index.js +1 -2
  178. package/dist/src/scripts/validation/index.js.map +1 -1
  179. package/dist/src/scripts/validation/pipeline.d.ts.map +1 -1
  180. package/dist/src/scripts/validation/pipeline.js.map +1 -1
  181. package/dist/src/scripts/validation/types.d.ts +2 -2
  182. package/dist/src/security/scanner/SecurityScanner.d.ts.map +1 -1
  183. package/dist/src/security/scanner/SecurityScanner.js.map +1 -1
  184. package/dist/src/services/SearchService.d.ts.map +1 -1
  185. package/dist/src/services/SearchService.js +1 -0
  186. package/dist/src/services/SearchService.js.map +1 -1
  187. package/dist/src/session/SessionHealthMonitor.d.ts +1 -1
  188. package/dist/src/session/SessionHealthMonitor.d.ts.map +1 -1
  189. package/dist/src/session/SessionHealthMonitor.js +1 -1
  190. package/dist/src/session/SessionHealthMonitor.js.map +1 -1
  191. package/dist/src/telemetry/index.d.ts +1 -1
  192. package/dist/src/telemetry/index.d.ts.map +1 -1
  193. package/dist/src/telemetry/index.js +2 -2
  194. package/dist/src/telemetry/index.js.map +1 -1
  195. package/dist/src/telemetry/posthog.d.ts +27 -5
  196. package/dist/src/telemetry/posthog.d.ts.map +1 -1
  197. package/dist/src/telemetry/posthog.js +20 -5
  198. package/dist/src/telemetry/posthog.js.map +1 -1
  199. package/dist/src/types/skill.d.ts +3 -0
  200. package/dist/src/types/skill.d.ts.map +1 -1
  201. package/dist/src/types.d.ts +2 -1
  202. package/dist/src/types.d.ts.map +1 -1
  203. package/dist/src/types.js +2 -2
  204. package/dist/src/types.js.map +1 -1
  205. package/dist/tests/adapters-factory.test.d.ts +13 -0
  206. package/dist/tests/adapters-factory.test.d.ts.map +1 -0
  207. package/dist/tests/adapters-factory.test.js +308 -0
  208. package/dist/tests/adapters-factory.test.js.map +1 -0
  209. package/dist/tests/adapters-java.test.d.ts +13 -0
  210. package/dist/tests/adapters-java.test.d.ts.map +1 -0
  211. package/dist/tests/adapters-java.test.js +925 -0
  212. package/dist/tests/adapters-java.test.js.map +1 -0
  213. package/dist/tests/api/client.validation.test.d.ts +7 -0
  214. package/dist/tests/api/client.validation.test.d.ts.map +1 -0
  215. package/dist/tests/api/client.validation.test.js +183 -0
  216. package/dist/tests/api/client.validation.test.js.map +1 -0
  217. package/dist/tests/language-detector.test.d.ts +13 -0
  218. package/dist/tests/language-detector.test.d.ts.map +1 -0
  219. package/dist/tests/language-detector.test.js +674 -0
  220. package/dist/tests/language-detector.test.js.map +1 -0
  221. package/dist/tests/telemetry/posthog.test.d.ts +13 -0
  222. package/dist/tests/telemetry/posthog.test.d.ts.map +1 -0
  223. package/dist/tests/telemetry/posthog.test.js +600 -0
  224. package/dist/tests/telemetry/posthog.test.js.map +1 -0
  225. package/package.json +5 -6
  226. package/dist/src/security/RateLimiter.d.ts +0 -337
  227. package/dist/src/security/RateLimiter.d.ts.map +0 -1
  228. package/dist/src/security/RateLimiter.js +0 -782
  229. package/dist/src/security/RateLimiter.js.map +0 -1
  230. package/dist/src/security/scanner.d.ts +0 -151
  231. package/dist/src/security/scanner.d.ts.map +0 -1
  232. package/dist/src/security/scanner.js +0 -599
  233. package/dist/src/security/scanner.js.map +0 -1
@@ -0,0 +1,150 @@
1
+ /**
2
+ * SMI-1339: Adapter Factory Pattern
3
+ *
4
+ * Factory class for creating language adapters with lazy instantiation.
5
+ * Avoids unnecessary adapter creation and provides centralized adapter management.
6
+ *
7
+ * @see docs/architecture/multi-language-analysis.md
8
+ * @module analysis/adapters/factory
9
+ */
10
+ import type { LanguageAdapter } from './base.js';
11
+ import type { SupportedLanguage } from '../types.js';
12
+ /**
13
+ * Factory class for creating language adapters
14
+ *
15
+ * Provides lazy instantiation of adapters to avoid creating
16
+ * unused adapter instances and reduce startup overhead.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * // Create a single adapter
21
+ * const pythonAdapter = AdapterFactory.createAdapter('python')
22
+ *
23
+ * // Create all adapters
24
+ * const allAdapters = AdapterFactory.createAll()
25
+ *
26
+ * // Create specific adapters
27
+ * const adapters = AdapterFactory.createAdapters(['typescript', 'python'])
28
+ * ```
29
+ */
30
+ export declare class AdapterFactory {
31
+ /** Cache of created adapters for reuse */
32
+ private static adapterCache;
33
+ /**
34
+ * Create an adapter for a specific language
35
+ *
36
+ * Creates a new adapter instance for the given language.
37
+ * Use createCachedAdapter() if you want to reuse adapter instances.
38
+ *
39
+ * @param language - Language to create adapter for
40
+ * @returns New adapter instance
41
+ * @throws Error if language is not supported
42
+ *
43
+ * @example
44
+ * ```typescript
45
+ * const adapter = AdapterFactory.createAdapter('python')
46
+ * const result = adapter.parseFile(content, 'main.py')
47
+ * adapter.dispose()
48
+ * ```
49
+ */
50
+ static createAdapter(language: SupportedLanguage): LanguageAdapter;
51
+ /**
52
+ * Get or create a cached adapter for a specific language
53
+ *
54
+ * Returns an existing adapter if one was previously created,
55
+ * otherwise creates and caches a new adapter instance.
56
+ *
57
+ * @param language - Language to get adapter for
58
+ * @returns Cached or new adapter instance
59
+ * @throws Error if language is not supported
60
+ *
61
+ * @example
62
+ * ```typescript
63
+ * // Reuses same instance
64
+ * const adapter1 = AdapterFactory.createCachedAdapter('typescript')
65
+ * const adapter2 = AdapterFactory.createCachedAdapter('typescript')
66
+ * console.log(adapter1 === adapter2) // true
67
+ * ```
68
+ */
69
+ static createCachedAdapter(language: SupportedLanguage): LanguageAdapter;
70
+ /**
71
+ * Create adapters for all supported languages
72
+ *
73
+ * Returns a Map of language to adapter for all supported languages.
74
+ * Each adapter is created lazily (new instance per call).
75
+ *
76
+ * @returns Map of language to adapter
77
+ *
78
+ * @example
79
+ * ```typescript
80
+ * const adapters = AdapterFactory.createAll()
81
+ * for (const [lang, adapter] of adapters) {
82
+ * console.log(`${lang}: ${adapter.extensions.join(', ')}`)
83
+ * }
84
+ * ```
85
+ */
86
+ static createAll(): Map<SupportedLanguage, LanguageAdapter>;
87
+ /**
88
+ * Create adapters for specific languages
89
+ *
90
+ * @param languages - Array of languages to create adapters for
91
+ * @returns Map of language to adapter
92
+ * @throws Error if any language is not supported
93
+ *
94
+ * @example
95
+ * ```typescript
96
+ * const adapters = AdapterFactory.createAdapters(['typescript', 'python'])
97
+ * ```
98
+ */
99
+ static createAdapters(languages: SupportedLanguage[]): Map<SupportedLanguage, LanguageAdapter>;
100
+ /**
101
+ * Get list of supported languages
102
+ *
103
+ * @returns Array of supported language identifiers
104
+ */
105
+ static getSupportedLanguages(): SupportedLanguage[];
106
+ /**
107
+ * Check if a language is supported
108
+ *
109
+ * @param language - Language to check
110
+ * @returns True if language is supported
111
+ */
112
+ static isSupported(language: string): language is SupportedLanguage;
113
+ /**
114
+ * Get file extensions for a language
115
+ *
116
+ * Returns the file extensions handled by the adapter for a given language,
117
+ * without needing to instantiate the adapter.
118
+ *
119
+ * @param language - Language to get extensions for
120
+ * @returns Array of file extensions (with dot prefix)
121
+ */
122
+ static getExtensions(language: SupportedLanguage): string[];
123
+ /**
124
+ * Get all file extensions from all adapters
125
+ *
126
+ * Returns a map of file extension to language.
127
+ * Note: TypeScript-specific extensions (.ts, .tsx) map to 'typescript',
128
+ * while JavaScript-specific extensions (.js, .jsx, etc.) map to 'javascript'.
129
+ *
130
+ * @returns Map of extension to language
131
+ */
132
+ static getAllExtensions(): Map<string, SupportedLanguage>;
133
+ /**
134
+ * Clear the adapter cache
135
+ *
136
+ * Disposes all cached adapters and clears the cache.
137
+ * Call this when you want to free resources or reset state.
138
+ */
139
+ static clearCache(): void;
140
+ /**
141
+ * Get cache statistics
142
+ *
143
+ * @returns Object with cache stats
144
+ */
145
+ static getCacheStats(): {
146
+ size: number;
147
+ languages: SupportedLanguage[];
148
+ };
149
+ }
150
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../src/analysis/adapters/factory.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAA;AAChD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAwBpD;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,cAAc;IACzB,0CAA0C;IAC1C,OAAO,CAAC,MAAM,CAAC,YAAY,CAAqD;IAEhF;;;;;;;;;;;;;;;;OAgBG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe;IAalE;;;;;;;;;;;;;;;;;OAiBG;IACH,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,eAAe;IAWxE;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,SAAS,IAAI,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC;IAU3D;;;;;;;;;;;OAWG;IACH,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,iBAAiB,EAAE,GAAG,GAAG,CAAC,iBAAiB,EAAE,eAAe,CAAC;IAU9F;;;;OAIG;IACH,MAAM,CAAC,qBAAqB,IAAI,iBAAiB,EAAE;IAInD;;;;;OAKG;IACH,MAAM,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,IAAI,iBAAiB;IAInE;;;;;;;;OAQG;IACH,MAAM,CAAC,aAAa,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,EAAE;IAc3D;;;;;;;;OAQG;IACH,MAAM,CAAC,gBAAgB,IAAI,GAAG,CAAC,MAAM,EAAE,iBAAiB,CAAC;IA+BzD;;;;;OAKG;IACH,MAAM,CAAC,UAAU,IAAI,IAAI;IAWzB;;;;OAIG;IACH,MAAM,CAAC,aAAa,IAAI;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,iBAAiB,EAAE,CAAA;KAAE;CAMzE"}
@@ -0,0 +1,244 @@
1
+ /**
2
+ * SMI-1339: Adapter Factory Pattern
3
+ *
4
+ * Factory class for creating language adapters with lazy instantiation.
5
+ * Avoids unnecessary adapter creation and provides centralized adapter management.
6
+ *
7
+ * @see docs/architecture/multi-language-analysis.md
8
+ * @module analysis/adapters/factory
9
+ */
10
+ import { TypeScriptAdapter } from './typescript.js';
11
+ import { PythonAdapter } from './python.js';
12
+ import { GoAdapter } from './go.js';
13
+ import { RustAdapter } from './rust.js';
14
+ import { JavaAdapter } from './java.js';
15
+ /**
16
+ * Registry of adapter factory functions by language
17
+ */
18
+ const ADAPTER_FACTORIES = {
19
+ typescript: () => new TypeScriptAdapter(),
20
+ javascript: () => new TypeScriptAdapter(), // TypeScript adapter handles JS
21
+ python: () => new PythonAdapter(),
22
+ go: () => new GoAdapter(),
23
+ rust: () => new RustAdapter(),
24
+ java: () => new JavaAdapter(),
25
+ };
26
+ /**
27
+ * Factory class for creating language adapters
28
+ *
29
+ * Provides lazy instantiation of adapters to avoid creating
30
+ * unused adapter instances and reduce startup overhead.
31
+ *
32
+ * @example
33
+ * ```typescript
34
+ * // Create a single adapter
35
+ * const pythonAdapter = AdapterFactory.createAdapter('python')
36
+ *
37
+ * // Create all adapters
38
+ * const allAdapters = AdapterFactory.createAll()
39
+ *
40
+ * // Create specific adapters
41
+ * const adapters = AdapterFactory.createAdapters(['typescript', 'python'])
42
+ * ```
43
+ */
44
+ export class AdapterFactory {
45
+ /** Cache of created adapters for reuse */
46
+ static adapterCache = new Map();
47
+ /**
48
+ * Create an adapter for a specific language
49
+ *
50
+ * Creates a new adapter instance for the given language.
51
+ * Use createCachedAdapter() if you want to reuse adapter instances.
52
+ *
53
+ * @param language - Language to create adapter for
54
+ * @returns New adapter instance
55
+ * @throws Error if language is not supported
56
+ *
57
+ * @example
58
+ * ```typescript
59
+ * const adapter = AdapterFactory.createAdapter('python')
60
+ * const result = adapter.parseFile(content, 'main.py')
61
+ * adapter.dispose()
62
+ * ```
63
+ */
64
+ static createAdapter(language) {
65
+ const factory = ADAPTER_FACTORIES[language];
66
+ if (!factory) {
67
+ const supported = AdapterFactory.getSupportedLanguages();
68
+ throw new Error(`Unsupported language: ${language}. ` + `Supported languages: ${supported.join(', ')}`);
69
+ }
70
+ return factory();
71
+ }
72
+ /**
73
+ * Get or create a cached adapter for a specific language
74
+ *
75
+ * Returns an existing adapter if one was previously created,
76
+ * otherwise creates and caches a new adapter instance.
77
+ *
78
+ * @param language - Language to get adapter for
79
+ * @returns Cached or new adapter instance
80
+ * @throws Error if language is not supported
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * // Reuses same instance
85
+ * const adapter1 = AdapterFactory.createCachedAdapter('typescript')
86
+ * const adapter2 = AdapterFactory.createCachedAdapter('typescript')
87
+ * console.log(adapter1 === adapter2) // true
88
+ * ```
89
+ */
90
+ static createCachedAdapter(language) {
91
+ const cached = this.adapterCache.get(language);
92
+ if (cached) {
93
+ return cached;
94
+ }
95
+ const adapter = this.createAdapter(language);
96
+ this.adapterCache.set(language, adapter);
97
+ return adapter;
98
+ }
99
+ /**
100
+ * Create adapters for all supported languages
101
+ *
102
+ * Returns a Map of language to adapter for all supported languages.
103
+ * Each adapter is created lazily (new instance per call).
104
+ *
105
+ * @returns Map of language to adapter
106
+ *
107
+ * @example
108
+ * ```typescript
109
+ * const adapters = AdapterFactory.createAll()
110
+ * for (const [lang, adapter] of adapters) {
111
+ * console.log(`${lang}: ${adapter.extensions.join(', ')}`)
112
+ * }
113
+ * ```
114
+ */
115
+ static createAll() {
116
+ const adapters = new Map();
117
+ for (const language of AdapterFactory.getSupportedLanguages()) {
118
+ adapters.set(language, this.createAdapter(language));
119
+ }
120
+ return adapters;
121
+ }
122
+ /**
123
+ * Create adapters for specific languages
124
+ *
125
+ * @param languages - Array of languages to create adapters for
126
+ * @returns Map of language to adapter
127
+ * @throws Error if any language is not supported
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * const adapters = AdapterFactory.createAdapters(['typescript', 'python'])
132
+ * ```
133
+ */
134
+ static createAdapters(languages) {
135
+ const adapters = new Map();
136
+ for (const language of languages) {
137
+ adapters.set(language, this.createAdapter(language));
138
+ }
139
+ return adapters;
140
+ }
141
+ /**
142
+ * Get list of supported languages
143
+ *
144
+ * @returns Array of supported language identifiers
145
+ */
146
+ static getSupportedLanguages() {
147
+ return Object.keys(ADAPTER_FACTORIES);
148
+ }
149
+ /**
150
+ * Check if a language is supported
151
+ *
152
+ * @param language - Language to check
153
+ * @returns True if language is supported
154
+ */
155
+ static isSupported(language) {
156
+ return language in ADAPTER_FACTORIES;
157
+ }
158
+ /**
159
+ * Get file extensions for a language
160
+ *
161
+ * Returns the file extensions handled by the adapter for a given language,
162
+ * without needing to instantiate the adapter.
163
+ *
164
+ * @param language - Language to get extensions for
165
+ * @returns Array of file extensions (with dot prefix)
166
+ */
167
+ static getExtensions(language) {
168
+ // Use cached adapter if available, otherwise create temporary one
169
+ const cached = this.adapterCache.get(language);
170
+ if (cached) {
171
+ return [...cached.extensions];
172
+ }
173
+ // Create temporary adapter to get extensions
174
+ const adapter = this.createAdapter(language);
175
+ const extensions = [...adapter.extensions];
176
+ adapter.dispose();
177
+ return extensions;
178
+ }
179
+ /**
180
+ * Get all file extensions from all adapters
181
+ *
182
+ * Returns a map of file extension to language.
183
+ * Note: TypeScript-specific extensions (.ts, .tsx) map to 'typescript',
184
+ * while JavaScript-specific extensions (.js, .jsx, etc.) map to 'javascript'.
185
+ *
186
+ * @returns Map of extension to language
187
+ */
188
+ static getAllExtensions() {
189
+ const extensionMap = new Map();
190
+ // Define canonical mappings - TypeScript-specific extensions should map to typescript
191
+ const canonicalMappings = {
192
+ '.ts': 'typescript',
193
+ '.tsx': 'typescript',
194
+ '.mts': 'typescript',
195
+ '.cts': 'typescript',
196
+ '.js': 'javascript',
197
+ '.jsx': 'javascript',
198
+ '.mjs': 'javascript',
199
+ '.cjs': 'javascript',
200
+ };
201
+ for (const language of this.getSupportedLanguages()) {
202
+ const extensions = this.getExtensions(language);
203
+ for (const ext of extensions) {
204
+ const normalizedExt = ext.toLowerCase();
205
+ // Use canonical mapping if available, otherwise use the adapter's language
206
+ const mappedLanguage = canonicalMappings[normalizedExt] ?? language;
207
+ // Only set if not already defined (first definition wins for non-canonical)
208
+ if (!extensionMap.has(normalizedExt)) {
209
+ extensionMap.set(normalizedExt, mappedLanguage);
210
+ }
211
+ }
212
+ }
213
+ return extensionMap;
214
+ }
215
+ /**
216
+ * Clear the adapter cache
217
+ *
218
+ * Disposes all cached adapters and clears the cache.
219
+ * Call this when you want to free resources or reset state.
220
+ */
221
+ static clearCache() {
222
+ for (const adapter of this.adapterCache.values()) {
223
+ try {
224
+ adapter.dispose();
225
+ }
226
+ catch {
227
+ // Ignore errors during cleanup
228
+ }
229
+ }
230
+ this.adapterCache.clear();
231
+ }
232
+ /**
233
+ * Get cache statistics
234
+ *
235
+ * @returns Object with cache stats
236
+ */
237
+ static getCacheStats() {
238
+ return {
239
+ size: this.adapterCache.size,
240
+ languages: Array.from(this.adapterCache.keys()),
241
+ };
242
+ }
243
+ }
244
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../src/analysis/adapters/factory.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,131 @@
1
+ /**
2
+ * SMI-1305: Go Language Adapter
3
+ *
4
+ * Parses Go source files and extracts imports, exports, and functions
5
+ * using regex-based parsing. Go uses capitalization-based visibility:
6
+ * identifiers starting with uppercase are exported (public).
7
+ *
8
+ * @see docs/architecture/multi-language-analysis.md
9
+ */
10
+ import { LanguageAdapter, type SupportedLanguage } from './base.js';
11
+ import type { ParseResult, ExportInfo, FunctionInfo, FrameworkRule } from './base.js';
12
+ /**
13
+ * Extended ExportInfo for Go with visibility support
14
+ */
15
+ export interface GoExportInfo extends ExportInfo {
16
+ /** Go exports via capitalization */
17
+ visibility: 'public' | 'private';
18
+ /** Line number in source */
19
+ line: number;
20
+ }
21
+ /**
22
+ * Extended FunctionInfo for Go with receiver support
23
+ */
24
+ export interface GoFunctionInfo extends FunctionInfo {
25
+ /** Method receiver type (e.g., "*MyStruct") */
26
+ receiver?: string;
27
+ }
28
+ /**
29
+ * Go module information from go.mod
30
+ */
31
+ export interface GoModInfo {
32
+ /** Module path (e.g., "github.com/user/project") */
33
+ module: string;
34
+ /** Go version (e.g., "1.21") */
35
+ goVersion?: string;
36
+ /** Direct dependencies */
37
+ require: Array<{
38
+ path: string;
39
+ version: string;
40
+ }>;
41
+ /** Replaced dependencies */
42
+ replace: Array<{
43
+ old: string;
44
+ new: string;
45
+ version?: string;
46
+ }>;
47
+ }
48
+ /**
49
+ * Go Language Adapter
50
+ *
51
+ * Parses Go source files using regex-based parsing.
52
+ * Handles Go's capitalization-based visibility rules.
53
+ *
54
+ * @example
55
+ * ```typescript
56
+ * const adapter = new GoAdapter()
57
+ * const result = adapter.parseFile(goCode, 'main.go')
58
+ * console.log(result.exports) // Uppercase identifiers only
59
+ * ```
60
+ */
61
+ export declare class GoAdapter extends LanguageAdapter {
62
+ readonly language: SupportedLanguage;
63
+ readonly extensions: string[];
64
+ /**
65
+ * Parse a Go source file and extract information
66
+ */
67
+ parseFile(content: string, filePath: string): ParseResult;
68
+ /**
69
+ * Parse file incrementally (currently same as full parse)
70
+ */
71
+ parseIncremental(content: string, filePath: string, _previousTree?: unknown): ParseResult;
72
+ /**
73
+ * Get Go framework detection rules
74
+ */
75
+ getFrameworkRules(): FrameworkRule[];
76
+ /**
77
+ * Clean up resources (no-op for regex-based parsing)
78
+ */
79
+ dispose(): void;
80
+ /**
81
+ * Check if an identifier is exported (starts with uppercase)
82
+ *
83
+ * In Go, identifiers starting with uppercase are exported (public)
84
+ * and can be accessed from other packages.
85
+ *
86
+ * @param name - Identifier name
87
+ * @returns True if the identifier is exported
88
+ */
89
+ private isExported;
90
+ /**
91
+ * Extract import statements from Go source
92
+ *
93
+ * Handles both single imports and import blocks:
94
+ * - import "fmt"
95
+ * - import ( "fmt" \n "os" )
96
+ * - import alias "path/to/package"
97
+ */
98
+ private extractImports;
99
+ /**
100
+ * Extract exports (public declarations) from Go source
101
+ *
102
+ * In Go, any top-level declaration starting with uppercase is exported:
103
+ * - type Foo struct/interface
104
+ * - func Foo() or func (r *Receiver) Foo()
105
+ * - const/var Foo
106
+ */
107
+ private extractExports;
108
+ /**
109
+ * Extract function definitions from Go source
110
+ *
111
+ * Handles both regular functions and methods:
112
+ * - func name(params) return
113
+ * - func (r *Receiver) name(params) return
114
+ */
115
+ private extractFunctions;
116
+ }
117
+ /**
118
+ * Parse go.mod file to extract module info and dependencies
119
+ *
120
+ * @param content - Content of go.mod file
121
+ * @returns Parsed go.mod information
122
+ *
123
+ * @example
124
+ * ```typescript
125
+ * const modInfo = parseGoMod(goModContent)
126
+ * console.log(modInfo.module) // "github.com/user/project"
127
+ * console.log(modInfo.require) // [{ path: "...", version: "..." }]
128
+ * ```
129
+ */
130
+ export declare function parseGoMod(content: string): GoModInfo;
131
+ //# sourceMappingURL=go.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"go.d.ts","sourceRoot":"","sources":["../../../../src/analysis/adapters/go.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAE,KAAK,iBAAiB,EAAE,MAAM,WAAW,CAAA;AACnE,OAAO,KAAK,EAAE,WAAW,EAAc,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AAEjG;;GAEG;AACH,MAAM,WAAW,YAAa,SAAQ,UAAU;IAC9C,oCAAoC;IACpC,UAAU,EAAE,QAAQ,GAAG,SAAS,CAAA;IAChC,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAA;CACb;AAED;;GAEG;AACH,MAAM,WAAW,cAAe,SAAQ,YAAY;IAClD,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,SAAS;IACxB,oDAAoD;IACpD,MAAM,EAAE,MAAM,CAAA;IACd,gCAAgC;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0BAA0B;IAC1B,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;IACjD,4BAA4B;IAC5B,OAAO,EAAE,KAAK,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC/D;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,SAAU,SAAQ,eAAe;IAC5C,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAO;IAC3C,QAAQ,CAAC,UAAU,WAAU;IAE7B;;OAEG;IACH,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,WAAW;IAOzD;;OAEG;IACH,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,CAAC,EAAE,OAAO,GAAG,WAAW;IAMzF;;OAEG;IACH,iBAAiB,IAAI,aAAa,EAAE;IA2DpC;;OAEG;IACH,OAAO,IAAI,IAAI;IAIf;;;;;;;;OAQG;IACH,OAAO,CAAC,UAAU;IAIlB;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAsCtB;;;;;;;OAOG;IACH,OAAO,CAAC,cAAc;IAyHtB;;;;;;OAMG;IACH,OAAO,CAAC,gBAAgB;CAwCzB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAmFrD"}