driftdetect-core 0.4.6 → 0.5.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 (325) hide show
  1. package/dist/call-graph/extractors/csharp-data-access-extractor.d.ts +8 -0
  2. package/dist/call-graph/extractors/csharp-data-access-extractor.d.ts.map +1 -1
  3. package/dist/call-graph/extractors/csharp-data-access-extractor.js +8 -0
  4. package/dist/call-graph/extractors/csharp-data-access-extractor.js.map +1 -1
  5. package/dist/call-graph/extractors/csharp-extractor.d.ts +35 -0
  6. package/dist/call-graph/extractors/csharp-extractor.d.ts.map +1 -1
  7. package/dist/call-graph/extractors/csharp-extractor.js +362 -4
  8. package/dist/call-graph/extractors/csharp-extractor.js.map +1 -1
  9. package/dist/call-graph/extractors/csharp-hybrid-extractor.d.ts +37 -0
  10. package/dist/call-graph/extractors/csharp-hybrid-extractor.d.ts.map +1 -0
  11. package/dist/call-graph/extractors/csharp-hybrid-extractor.js +408 -0
  12. package/dist/call-graph/extractors/csharp-hybrid-extractor.js.map +1 -0
  13. package/dist/call-graph/extractors/hybrid-extractor-base.d.ts +102 -0
  14. package/dist/call-graph/extractors/hybrid-extractor-base.d.ts.map +1 -0
  15. package/dist/call-graph/extractors/hybrid-extractor-base.js +289 -0
  16. package/dist/call-graph/extractors/hybrid-extractor-base.js.map +1 -0
  17. package/dist/call-graph/extractors/index.d.ts +17 -13
  18. package/dist/call-graph/extractors/index.d.ts.map +1 -1
  19. package/dist/call-graph/extractors/index.js +24 -23
  20. package/dist/call-graph/extractors/index.js.map +1 -1
  21. package/dist/call-graph/extractors/java-data-access-extractor.d.ts +8 -0
  22. package/dist/call-graph/extractors/java-data-access-extractor.d.ts.map +1 -1
  23. package/dist/call-graph/extractors/java-data-access-extractor.js +8 -0
  24. package/dist/call-graph/extractors/java-data-access-extractor.js.map +1 -1
  25. package/dist/call-graph/extractors/java-extractor.d.ts +15 -0
  26. package/dist/call-graph/extractors/java-extractor.d.ts.map +1 -1
  27. package/dist/call-graph/extractors/java-extractor.js +120 -4
  28. package/dist/call-graph/extractors/java-extractor.js.map +1 -1
  29. package/dist/call-graph/extractors/java-hybrid-extractor.d.ts +36 -0
  30. package/dist/call-graph/extractors/java-hybrid-extractor.d.ts.map +1 -0
  31. package/dist/call-graph/extractors/java-hybrid-extractor.js +426 -0
  32. package/dist/call-graph/extractors/java-hybrid-extractor.js.map +1 -0
  33. package/dist/call-graph/extractors/php-data-access-extractor.d.ts +8 -0
  34. package/dist/call-graph/extractors/php-data-access-extractor.d.ts.map +1 -1
  35. package/dist/call-graph/extractors/php-data-access-extractor.js +8 -0
  36. package/dist/call-graph/extractors/php-data-access-extractor.js.map +1 -1
  37. package/dist/call-graph/extractors/php-extractor.d.ts +48 -1
  38. package/dist/call-graph/extractors/php-extractor.d.ts.map +1 -1
  39. package/dist/call-graph/extractors/php-extractor.js +460 -6
  40. package/dist/call-graph/extractors/php-extractor.js.map +1 -1
  41. package/dist/call-graph/extractors/php-hybrid-extractor.d.ts +35 -0
  42. package/dist/call-graph/extractors/php-hybrid-extractor.d.ts.map +1 -0
  43. package/dist/call-graph/extractors/php-hybrid-extractor.js +393 -0
  44. package/dist/call-graph/extractors/php-hybrid-extractor.js.map +1 -0
  45. package/dist/call-graph/extractors/python-data-access-extractor.d.ts +8 -0
  46. package/dist/call-graph/extractors/python-data-access-extractor.d.ts.map +1 -1
  47. package/dist/call-graph/extractors/python-data-access-extractor.js +8 -0
  48. package/dist/call-graph/extractors/python-data-access-extractor.js.map +1 -1
  49. package/dist/call-graph/extractors/python-hybrid-extractor.d.ts +85 -0
  50. package/dist/call-graph/extractors/python-hybrid-extractor.d.ts.map +1 -0
  51. package/dist/call-graph/extractors/python-hybrid-extractor.js +462 -0
  52. package/dist/call-graph/extractors/python-hybrid-extractor.js.map +1 -0
  53. package/dist/call-graph/extractors/regex/base-regex-extractor.d.ts +154 -0
  54. package/dist/call-graph/extractors/regex/base-regex-extractor.d.ts.map +1 -0
  55. package/dist/call-graph/extractors/regex/base-regex-extractor.js +346 -0
  56. package/dist/call-graph/extractors/regex/base-regex-extractor.js.map +1 -0
  57. package/dist/call-graph/extractors/regex/csharp-regex.d.ts +34 -0
  58. package/dist/call-graph/extractors/regex/csharp-regex.d.ts.map +1 -0
  59. package/dist/call-graph/extractors/regex/csharp-regex.js +393 -0
  60. package/dist/call-graph/extractors/regex/csharp-regex.js.map +1 -0
  61. package/dist/call-graph/extractors/regex/index.d.ts +25 -0
  62. package/dist/call-graph/extractors/regex/index.d.ts.map +1 -0
  63. package/dist/call-graph/extractors/regex/index.js +66 -0
  64. package/dist/call-graph/extractors/regex/index.js.map +1 -0
  65. package/dist/call-graph/extractors/regex/java-regex.d.ts +34 -0
  66. package/dist/call-graph/extractors/regex/java-regex.d.ts.map +1 -0
  67. package/dist/call-graph/extractors/regex/java-regex.js +327 -0
  68. package/dist/call-graph/extractors/regex/java-regex.js.map +1 -0
  69. package/dist/call-graph/extractors/regex/php-regex.d.ts +30 -0
  70. package/dist/call-graph/extractors/regex/php-regex.d.ts.map +1 -0
  71. package/dist/call-graph/extractors/regex/php-regex.js +333 -0
  72. package/dist/call-graph/extractors/regex/php-regex.js.map +1 -0
  73. package/dist/call-graph/extractors/regex/python-regex.d.ts +46 -0
  74. package/dist/call-graph/extractors/regex/python-regex.d.ts.map +1 -0
  75. package/dist/call-graph/extractors/regex/python-regex.js +380 -0
  76. package/dist/call-graph/extractors/regex/python-regex.js.map +1 -0
  77. package/dist/call-graph/extractors/regex/typescript-regex.d.ts +27 -0
  78. package/dist/call-graph/extractors/regex/typescript-regex.d.ts.map +1 -0
  79. package/dist/call-graph/extractors/regex/typescript-regex.js +349 -0
  80. package/dist/call-graph/extractors/regex/typescript-regex.js.map +1 -0
  81. package/dist/call-graph/extractors/semantic-data-access-scanner.d.ts +7 -0
  82. package/dist/call-graph/extractors/semantic-data-access-scanner.d.ts.map +1 -1
  83. package/dist/call-graph/extractors/semantic-data-access-scanner.js +7 -0
  84. package/dist/call-graph/extractors/semantic-data-access-scanner.js.map +1 -1
  85. package/dist/call-graph/extractors/types.d.ts +111 -0
  86. package/dist/call-graph/extractors/types.d.ts.map +1 -0
  87. package/dist/call-graph/extractors/types.js +68 -0
  88. package/dist/call-graph/extractors/types.js.map +1 -0
  89. package/dist/call-graph/extractors/typescript-data-access-extractor.d.ts +8 -0
  90. package/dist/call-graph/extractors/typescript-data-access-extractor.d.ts.map +1 -1
  91. package/dist/call-graph/extractors/typescript-data-access-extractor.js +8 -0
  92. package/dist/call-graph/extractors/typescript-data-access-extractor.js.map +1 -1
  93. package/dist/call-graph/extractors/typescript-hybrid-extractor.d.ts +116 -0
  94. package/dist/call-graph/extractors/typescript-hybrid-extractor.d.ts.map +1 -0
  95. package/dist/call-graph/extractors/typescript-hybrid-extractor.js +635 -0
  96. package/dist/call-graph/extractors/typescript-hybrid-extractor.js.map +1 -0
  97. package/dist/error-handling/error-handling-analyzer.d.ts +73 -0
  98. package/dist/error-handling/error-handling-analyzer.d.ts.map +1 -0
  99. package/dist/error-handling/error-handling-analyzer.js +706 -0
  100. package/dist/error-handling/error-handling-analyzer.js.map +1 -0
  101. package/dist/error-handling/index.d.ts +8 -0
  102. package/dist/error-handling/index.d.ts.map +1 -0
  103. package/dist/error-handling/index.js +8 -0
  104. package/dist/error-handling/index.js.map +1 -0
  105. package/dist/error-handling/types.d.ts +307 -0
  106. package/dist/error-handling/types.d.ts.map +1 -0
  107. package/dist/error-handling/types.js +7 -0
  108. package/dist/error-handling/types.js.map +1 -0
  109. package/dist/index.d.ts +14 -0
  110. package/dist/index.d.ts.map +1 -1
  111. package/dist/index.js +29 -0
  112. package/dist/index.js.map +1 -1
  113. package/dist/lake/pattern-shard-store.d.ts +6 -0
  114. package/dist/lake/pattern-shard-store.d.ts.map +1 -1
  115. package/dist/lake/pattern-shard-store.js +6 -0
  116. package/dist/lake/pattern-shard-store.js.map +1 -1
  117. package/dist/module-coupling/coupling-analyzer.d.ts +73 -0
  118. package/dist/module-coupling/coupling-analyzer.d.ts.map +1 -0
  119. package/dist/module-coupling/coupling-analyzer.js +668 -0
  120. package/dist/module-coupling/coupling-analyzer.js.map +1 -0
  121. package/dist/module-coupling/index.d.ts +9 -0
  122. package/dist/module-coupling/index.d.ts.map +1 -0
  123. package/dist/module-coupling/index.js +9 -0
  124. package/dist/module-coupling/index.js.map +1 -0
  125. package/dist/module-coupling/types.d.ts +273 -0
  126. package/dist/module-coupling/types.d.ts.map +1 -0
  127. package/dist/module-coupling/types.js +8 -0
  128. package/dist/module-coupling/types.js.map +1 -0
  129. package/dist/patterns/adapters/index.d.ts +11 -0
  130. package/dist/patterns/adapters/index.d.ts.map +1 -0
  131. package/dist/patterns/adapters/index.js +11 -0
  132. package/dist/patterns/adapters/index.js.map +1 -0
  133. package/dist/patterns/adapters/pattern-store-adapter.d.ts +59 -0
  134. package/dist/patterns/adapters/pattern-store-adapter.d.ts.map +1 -0
  135. package/dist/patterns/adapters/pattern-store-adapter.js +468 -0
  136. package/dist/patterns/adapters/pattern-store-adapter.js.map +1 -0
  137. package/dist/patterns/adapters/service-factory.d.ts +40 -0
  138. package/dist/patterns/adapters/service-factory.d.ts.map +1 -0
  139. package/dist/patterns/adapters/service-factory.js +144 -0
  140. package/dist/patterns/adapters/service-factory.js.map +1 -0
  141. package/dist/patterns/errors.d.ts +32 -0
  142. package/dist/patterns/errors.d.ts.map +1 -0
  143. package/dist/patterns/errors.js +45 -0
  144. package/dist/patterns/errors.js.map +1 -0
  145. package/dist/patterns/impl/cached-repository.d.ts +79 -0
  146. package/dist/patterns/impl/cached-repository.d.ts.map +1 -0
  147. package/dist/patterns/impl/cached-repository.js +296 -0
  148. package/dist/patterns/impl/cached-repository.js.map +1 -0
  149. package/dist/patterns/impl/file-repository.d.ts +75 -0
  150. package/dist/patterns/impl/file-repository.d.ts.map +1 -0
  151. package/dist/patterns/impl/file-repository.js +507 -0
  152. package/dist/patterns/impl/file-repository.js.map +1 -0
  153. package/dist/patterns/impl/index.d.ts +16 -0
  154. package/dist/patterns/impl/index.d.ts.map +1 -0
  155. package/dist/patterns/impl/index.js +21 -0
  156. package/dist/patterns/impl/index.js.map +1 -0
  157. package/dist/patterns/impl/memory-repository.d.ts +56 -0
  158. package/dist/patterns/impl/memory-repository.d.ts.map +1 -0
  159. package/dist/patterns/impl/memory-repository.js +323 -0
  160. package/dist/patterns/impl/memory-repository.js.map +1 -0
  161. package/dist/patterns/impl/pattern-service.d.ts +52 -0
  162. package/dist/patterns/impl/pattern-service.d.ts.map +1 -0
  163. package/dist/patterns/impl/pattern-service.js +382 -0
  164. package/dist/patterns/impl/pattern-service.js.map +1 -0
  165. package/dist/patterns/impl/repository-factory.d.ts +44 -0
  166. package/dist/patterns/impl/repository-factory.d.ts.map +1 -0
  167. package/dist/patterns/impl/repository-factory.js +140 -0
  168. package/dist/patterns/impl/repository-factory.js.map +1 -0
  169. package/dist/patterns/impl/unified-file-repository.d.ts +111 -0
  170. package/dist/patterns/impl/unified-file-repository.d.ts.map +1 -0
  171. package/dist/patterns/impl/unified-file-repository.js +677 -0
  172. package/dist/patterns/impl/unified-file-repository.js.map +1 -0
  173. package/dist/patterns/index.d.ts +23 -0
  174. package/dist/patterns/index.d.ts.map +1 -0
  175. package/dist/patterns/index.js +41 -0
  176. package/dist/patterns/index.js.map +1 -0
  177. package/dist/patterns/repository.d.ts +241 -0
  178. package/dist/patterns/repository.d.ts.map +1 -0
  179. package/dist/patterns/repository.js +23 -0
  180. package/dist/patterns/repository.js.map +1 -0
  181. package/dist/patterns/service.d.ts +245 -0
  182. package/dist/patterns/service.d.ts.map +1 -0
  183. package/dist/patterns/service.js +25 -0
  184. package/dist/patterns/service.js.map +1 -0
  185. package/dist/patterns/types.d.ts +227 -0
  186. package/dist/patterns/types.d.ts.map +1 -0
  187. package/dist/patterns/types.js +117 -0
  188. package/dist/patterns/types.js.map +1 -0
  189. package/dist/store/pattern-store.d.ts +6 -0
  190. package/dist/store/pattern-store.d.ts.map +1 -1
  191. package/dist/store/pattern-store.js +6 -0
  192. package/dist/store/pattern-store.js.map +1 -1
  193. package/dist/test-topology/extractors/base-test-extractor.d.ts +89 -0
  194. package/dist/test-topology/extractors/base-test-extractor.d.ts.map +1 -0
  195. package/dist/test-topology/extractors/base-test-extractor.js +187 -0
  196. package/dist/test-topology/extractors/base-test-extractor.js.map +1 -0
  197. package/dist/test-topology/extractors/csharp-test-extractor.d.ts +23 -0
  198. package/dist/test-topology/extractors/csharp-test-extractor.d.ts.map +1 -0
  199. package/dist/test-topology/extractors/csharp-test-extractor.js +367 -0
  200. package/dist/test-topology/extractors/csharp-test-extractor.js.map +1 -0
  201. package/dist/test-topology/extractors/index.d.ts +12 -0
  202. package/dist/test-topology/extractors/index.d.ts.map +1 -0
  203. package/dist/test-topology/extractors/index.js +12 -0
  204. package/dist/test-topology/extractors/index.js.map +1 -0
  205. package/dist/test-topology/extractors/java-test-extractor.d.ts +20 -0
  206. package/dist/test-topology/extractors/java-test-extractor.d.ts.map +1 -0
  207. package/dist/test-topology/extractors/java-test-extractor.js +275 -0
  208. package/dist/test-topology/extractors/java-test-extractor.js.map +1 -0
  209. package/dist/test-topology/extractors/php-test-extractor.d.ts +24 -0
  210. package/dist/test-topology/extractors/php-test-extractor.d.ts.map +1 -0
  211. package/dist/test-topology/extractors/php-test-extractor.js +409 -0
  212. package/dist/test-topology/extractors/php-test-extractor.js.map +1 -0
  213. package/dist/test-topology/extractors/python-test-extractor.d.ts +23 -0
  214. package/dist/test-topology/extractors/python-test-extractor.d.ts.map +1 -0
  215. package/dist/test-topology/extractors/python-test-extractor.js +342 -0
  216. package/dist/test-topology/extractors/python-test-extractor.js.map +1 -0
  217. package/dist/test-topology/extractors/regex/csharp-test-regex.d.ts +51 -0
  218. package/dist/test-topology/extractors/regex/csharp-test-regex.d.ts.map +1 -0
  219. package/dist/test-topology/extractors/regex/csharp-test-regex.js +383 -0
  220. package/dist/test-topology/extractors/regex/csharp-test-regex.js.map +1 -0
  221. package/dist/test-topology/extractors/regex/index.d.ts +18 -0
  222. package/dist/test-topology/extractors/regex/index.d.ts.map +1 -0
  223. package/dist/test-topology/extractors/regex/index.js +43 -0
  224. package/dist/test-topology/extractors/regex/index.js.map +1 -0
  225. package/dist/test-topology/extractors/regex/java-test-regex.d.ts +50 -0
  226. package/dist/test-topology/extractors/regex/java-test-regex.d.ts.map +1 -0
  227. package/dist/test-topology/extractors/regex/java-test-regex.js +370 -0
  228. package/dist/test-topology/extractors/regex/java-test-regex.js.map +1 -0
  229. package/dist/test-topology/extractors/regex/php-test-regex.d.ts +56 -0
  230. package/dist/test-topology/extractors/regex/php-test-regex.d.ts.map +1 -0
  231. package/dist/test-topology/extractors/regex/php-test-regex.js +503 -0
  232. package/dist/test-topology/extractors/regex/php-test-regex.js.map +1 -0
  233. package/dist/test-topology/extractors/regex/python-test-regex.d.ts +57 -0
  234. package/dist/test-topology/extractors/regex/python-test-regex.d.ts.map +1 -0
  235. package/dist/test-topology/extractors/regex/python-test-regex.js +381 -0
  236. package/dist/test-topology/extractors/regex/python-test-regex.js.map +1 -0
  237. package/dist/test-topology/extractors/regex/typescript-test-regex.d.ts +60 -0
  238. package/dist/test-topology/extractors/regex/typescript-test-regex.d.ts.map +1 -0
  239. package/dist/test-topology/extractors/regex/typescript-test-regex.js +368 -0
  240. package/dist/test-topology/extractors/regex/typescript-test-regex.js.map +1 -0
  241. package/dist/test-topology/extractors/typescript-test-extractor.d.ts +24 -0
  242. package/dist/test-topology/extractors/typescript-test-extractor.d.ts.map +1 -0
  243. package/dist/test-topology/extractors/typescript-test-extractor.js +266 -0
  244. package/dist/test-topology/extractors/typescript-test-extractor.js.map +1 -0
  245. package/dist/test-topology/hybrid-test-topology-analyzer.d.ts +98 -0
  246. package/dist/test-topology/hybrid-test-topology-analyzer.d.ts.map +1 -0
  247. package/dist/test-topology/hybrid-test-topology-analyzer.js +555 -0
  248. package/dist/test-topology/hybrid-test-topology-analyzer.js.map +1 -0
  249. package/dist/test-topology/index.d.ts +16 -0
  250. package/dist/test-topology/index.d.ts.map +1 -0
  251. package/dist/test-topology/index.js +19 -0
  252. package/dist/test-topology/index.js.map +1 -0
  253. package/dist/test-topology/test-topology-analyzer.d.ts +85 -0
  254. package/dist/test-topology/test-topology-analyzer.d.ts.map +1 -0
  255. package/dist/test-topology/test-topology-analyzer.js +538 -0
  256. package/dist/test-topology/test-topology-analyzer.js.map +1 -0
  257. package/dist/test-topology/types.d.ts +300 -0
  258. package/dist/test-topology/types.d.ts.map +1 -0
  259. package/dist/test-topology/types.js +7 -0
  260. package/dist/test-topology/types.js.map +1 -0
  261. package/dist/wrappers/clustering/clusterer.d.ts +43 -0
  262. package/dist/wrappers/clustering/clusterer.d.ts.map +1 -0
  263. package/dist/wrappers/clustering/clusterer.js +374 -0
  264. package/dist/wrappers/clustering/clusterer.js.map +1 -0
  265. package/dist/wrappers/clustering/exclusions.d.ts +47 -0
  266. package/dist/wrappers/clustering/exclusions.d.ts.map +1 -0
  267. package/dist/wrappers/clustering/exclusions.js +318 -0
  268. package/dist/wrappers/clustering/exclusions.js.map +1 -0
  269. package/dist/wrappers/clustering/index.d.ts +6 -0
  270. package/dist/wrappers/clustering/index.d.ts.map +1 -0
  271. package/dist/wrappers/clustering/index.js +6 -0
  272. package/dist/wrappers/clustering/index.js.map +1 -0
  273. package/dist/wrappers/detection/detector.d.ts +69 -0
  274. package/dist/wrappers/detection/detector.d.ts.map +1 -0
  275. package/dist/wrappers/detection/detector.js +279 -0
  276. package/dist/wrappers/detection/detector.js.map +1 -0
  277. package/dist/wrappers/detection/index.d.ts +5 -0
  278. package/dist/wrappers/detection/index.d.ts.map +1 -0
  279. package/dist/wrappers/detection/index.js +5 -0
  280. package/dist/wrappers/detection/index.js.map +1 -0
  281. package/dist/wrappers/export/index.d.ts +5 -0
  282. package/dist/wrappers/export/index.d.ts.map +1 -0
  283. package/dist/wrappers/export/index.js +5 -0
  284. package/dist/wrappers/export/index.js.map +1 -0
  285. package/dist/wrappers/export/json.d.ts +127 -0
  286. package/dist/wrappers/export/json.d.ts.map +1 -0
  287. package/dist/wrappers/export/json.js +160 -0
  288. package/dist/wrappers/export/json.js.map +1 -0
  289. package/dist/wrappers/index.d.ts +56 -0
  290. package/dist/wrappers/index.d.ts.map +1 -0
  291. package/dist/wrappers/index.js +159 -0
  292. package/dist/wrappers/index.js.map +1 -0
  293. package/dist/wrappers/integration/adapter.d.ts +52 -0
  294. package/dist/wrappers/integration/adapter.d.ts.map +1 -0
  295. package/dist/wrappers/integration/adapter.js +209 -0
  296. package/dist/wrappers/integration/adapter.js.map +1 -0
  297. package/dist/wrappers/integration/index.d.ts +9 -0
  298. package/dist/wrappers/integration/index.d.ts.map +1 -0
  299. package/dist/wrappers/integration/index.js +12 -0
  300. package/dist/wrappers/integration/index.js.map +1 -0
  301. package/dist/wrappers/integration/pattern-adapter.d.ts +52 -0
  302. package/dist/wrappers/integration/pattern-adapter.d.ts.map +1 -0
  303. package/dist/wrappers/integration/pattern-adapter.js +192 -0
  304. package/dist/wrappers/integration/pattern-adapter.js.map +1 -0
  305. package/dist/wrappers/integration/scanner.d.ts +85 -0
  306. package/dist/wrappers/integration/scanner.d.ts.map +1 -0
  307. package/dist/wrappers/integration/scanner.js +367 -0
  308. package/dist/wrappers/integration/scanner.js.map +1 -0
  309. package/dist/wrappers/primitives/discovery.d.ts +57 -0
  310. package/dist/wrappers/primitives/discovery.d.ts.map +1 -0
  311. package/dist/wrappers/primitives/discovery.js +389 -0
  312. package/dist/wrappers/primitives/discovery.js.map +1 -0
  313. package/dist/wrappers/primitives/index.d.ts +6 -0
  314. package/dist/wrappers/primitives/index.d.ts.map +1 -0
  315. package/dist/wrappers/primitives/index.js +6 -0
  316. package/dist/wrappers/primitives/index.js.map +1 -0
  317. package/dist/wrappers/primitives/registry.d.ts +63 -0
  318. package/dist/wrappers/primitives/registry.d.ts.map +1 -0
  319. package/dist/wrappers/primitives/registry.js +447 -0
  320. package/dist/wrappers/primitives/registry.js.map +1 -0
  321. package/dist/wrappers/types.d.ts +137 -0
  322. package/dist/wrappers/types.d.ts.map +1 -0
  323. package/dist/wrappers/types.js +7 -0
  324. package/dist/wrappers/types.js.map +1 -0
  325. package/package.json +5 -1
@@ -0,0 +1,468 @@
1
+ /**
2
+ * Pattern Store Adapter
3
+ *
4
+ * Adapts the existing PatternStore to the new IPatternRepository interface.
5
+ * This enables gradual migration of consumers to the new pattern system
6
+ * while maintaining backward compatibility.
7
+ *
8
+ * @module patterns/adapters/pattern-store-adapter
9
+ */
10
+ import { EventEmitter } from 'node:events';
11
+ import { computeConfidenceLevel, toPatternSummary } from '../types.js';
12
+ import { PatternNotFoundError, InvalidStatusTransitionError, PatternAlreadyExistsError, } from '../errors.js';
13
+ // ============================================================================
14
+ // Type Conversion Helpers
15
+ // ============================================================================
16
+ /**
17
+ * Convert a legacy Pattern to the unified Pattern type
18
+ */
19
+ function legacyToUnified(legacy) {
20
+ return {
21
+ id: legacy.id,
22
+ category: legacy.category,
23
+ subcategory: legacy.subcategory,
24
+ name: legacy.name,
25
+ description: legacy.description,
26
+ detectorId: legacy.detector?.config?.['detectorId'] ?? 'unknown',
27
+ detectorName: legacy.name,
28
+ detectionMethod: (legacy.detector?.type ?? 'ast'),
29
+ detector: {
30
+ type: (legacy.detector?.type ?? 'ast'),
31
+ config: legacy.detector?.config ?? {},
32
+ },
33
+ confidence: legacy.confidence.score,
34
+ confidenceLevel: legacy.confidence.level,
35
+ locations: legacy.locations.map((loc) => ({
36
+ file: loc.file,
37
+ line: loc.line,
38
+ column: loc.column,
39
+ endLine: loc.endLine,
40
+ endColumn: loc.endColumn,
41
+ })),
42
+ outliers: legacy.outliers.map((out) => ({
43
+ file: out.file,
44
+ line: out.line,
45
+ column: out.column,
46
+ endLine: out.endLine,
47
+ endColumn: out.endColumn,
48
+ reason: out.reason,
49
+ deviationScore: out.deviationScore,
50
+ })),
51
+ status: legacy.status,
52
+ severity: legacy.severity,
53
+ firstSeen: legacy.metadata.firstSeen,
54
+ lastSeen: legacy.metadata.lastSeen,
55
+ approvedAt: legacy.metadata.approvedAt,
56
+ approvedBy: legacy.metadata.approvedBy,
57
+ tags: legacy.metadata.tags ?? [],
58
+ autoFixable: legacy.autoFixable,
59
+ metadata: {
60
+ firstSeen: legacy.metadata.firstSeen,
61
+ lastSeen: legacy.metadata.lastSeen,
62
+ approvedAt: legacy.metadata.approvedAt,
63
+ approvedBy: legacy.metadata.approvedBy,
64
+ version: legacy.metadata.version,
65
+ tags: legacy.metadata.tags,
66
+ relatedPatterns: legacy.metadata.relatedPatterns,
67
+ source: legacy.metadata.source,
68
+ custom: legacy.metadata.custom,
69
+ },
70
+ };
71
+ }
72
+ /**
73
+ * Convert a unified Pattern to the legacy Pattern type
74
+ */
75
+ function unifiedToLegacy(unified) {
76
+ return {
77
+ id: unified.id,
78
+ category: unified.category,
79
+ subcategory: unified.subcategory,
80
+ name: unified.name,
81
+ description: unified.description,
82
+ detector: {
83
+ type: unified.detectionMethod,
84
+ config: {
85
+ ...unified.detector.config,
86
+ detectorId: unified.detectorId,
87
+ },
88
+ },
89
+ confidence: {
90
+ score: unified.confidence,
91
+ level: unified.confidenceLevel,
92
+ frequency: unified.confidence,
93
+ consistency: 1,
94
+ age: 0,
95
+ spread: unified.locations.length,
96
+ },
97
+ locations: unified.locations.map((loc) => ({
98
+ file: loc.file,
99
+ line: loc.line,
100
+ column: loc.column,
101
+ endLine: loc.endLine,
102
+ endColumn: loc.endColumn,
103
+ })),
104
+ outliers: unified.outliers.map((out) => ({
105
+ file: out.file,
106
+ line: out.line,
107
+ column: out.column,
108
+ endLine: out.endLine,
109
+ endColumn: out.endColumn,
110
+ reason: out.reason,
111
+ deviationScore: out.deviationScore,
112
+ })),
113
+ status: unified.status,
114
+ severity: unified.severity,
115
+ autoFixable: unified.autoFixable,
116
+ metadata: {
117
+ firstSeen: unified.firstSeen,
118
+ lastSeen: unified.lastSeen,
119
+ approvedAt: unified.approvedAt,
120
+ approvedBy: unified.approvedBy,
121
+ version: unified.metadata.version,
122
+ tags: unified.tags,
123
+ relatedPatterns: unified.metadata.relatedPatterns,
124
+ source: unified.metadata.source,
125
+ custom: unified.metadata.custom,
126
+ },
127
+ };
128
+ }
129
+ // ============================================================================
130
+ // Pattern Store Adapter
131
+ // ============================================================================
132
+ /**
133
+ * Adapter that wraps the existing PatternStore and exposes it
134
+ * through the IPatternRepository interface.
135
+ *
136
+ * This enables gradual migration of consumers to the new pattern system.
137
+ */
138
+ export class PatternStoreAdapter extends EventEmitter {
139
+ store;
140
+ initialized = false;
141
+ constructor(store) {
142
+ super();
143
+ this.store = store;
144
+ // Forward events from the underlying store
145
+ this.setupEventForwarding();
146
+ }
147
+ setupEventForwarding() {
148
+ // Map legacy events to new event types
149
+ this.store.on('pattern:created', (pattern) => {
150
+ this.emit('pattern:added', legacyToUnified(pattern));
151
+ });
152
+ this.store.on('pattern:updated', (pattern) => {
153
+ this.emit('pattern:updated', legacyToUnified(pattern));
154
+ });
155
+ this.store.on('pattern:deleted', (pattern) => {
156
+ this.emit('pattern:deleted', legacyToUnified(pattern));
157
+ });
158
+ this.store.on('pattern:approved', (pattern) => {
159
+ this.emit('pattern:approved', legacyToUnified(pattern));
160
+ });
161
+ this.store.on('pattern:ignored', (pattern) => {
162
+ this.emit('pattern:ignored', legacyToUnified(pattern));
163
+ });
164
+ }
165
+ // ==========================================================================
166
+ // Lifecycle
167
+ // ==========================================================================
168
+ async initialize() {
169
+ if (this.initialized)
170
+ return;
171
+ await this.store.initialize();
172
+ this.initialized = true;
173
+ this.emit('patterns:loaded', undefined, { count: this.store.getAll().length });
174
+ }
175
+ async close() {
176
+ // PatternStore doesn't have a close method, but we can save
177
+ await this.store.saveAll();
178
+ this.initialized = false;
179
+ }
180
+ // ==========================================================================
181
+ // CRUD Operations
182
+ // ==========================================================================
183
+ async add(pattern) {
184
+ this.ensureInitialized();
185
+ if (this.store.get(pattern.id)) {
186
+ throw new PatternAlreadyExistsError(pattern.id);
187
+ }
188
+ const legacy = unifiedToLegacy(pattern);
189
+ this.store.add(legacy);
190
+ }
191
+ async addMany(patterns) {
192
+ for (const pattern of patterns) {
193
+ await this.add(pattern);
194
+ }
195
+ }
196
+ async get(id) {
197
+ this.ensureInitialized();
198
+ const legacy = this.store.get(id);
199
+ if (!legacy)
200
+ return null;
201
+ return legacyToUnified(legacy);
202
+ }
203
+ async update(id, updates) {
204
+ this.ensureInitialized();
205
+ const existing = this.store.get(id);
206
+ if (!existing) {
207
+ throw new PatternNotFoundError(id);
208
+ }
209
+ // Convert updates to legacy format and apply
210
+ const unified = legacyToUnified(existing);
211
+ const updated = {
212
+ ...unified,
213
+ ...updates,
214
+ id: unified.id, // Prevent ID change
215
+ lastSeen: new Date().toISOString(),
216
+ };
217
+ // Recompute confidence level if confidence changed
218
+ if (updates.confidence !== undefined) {
219
+ updated.confidenceLevel = computeConfidenceLevel(updates.confidence);
220
+ }
221
+ const legacy = unifiedToLegacy(updated);
222
+ this.store.update(id, legacy);
223
+ return updated;
224
+ }
225
+ async delete(id) {
226
+ this.ensureInitialized();
227
+ const existing = this.store.get(id);
228
+ if (!existing)
229
+ return false;
230
+ this.store.delete(id);
231
+ return true;
232
+ }
233
+ // ==========================================================================
234
+ // Querying
235
+ // ==========================================================================
236
+ async query(options) {
237
+ this.ensureInitialized();
238
+ let patterns = this.store.getAll().map(legacyToUnified);
239
+ // Apply filters
240
+ if (options.filter) {
241
+ patterns = this.applyFilter(patterns, options.filter);
242
+ }
243
+ const total = patterns.length;
244
+ // Apply sorting
245
+ if (options.sort) {
246
+ patterns = this.applySort(patterns, options.sort);
247
+ }
248
+ // Apply pagination
249
+ if (options.pagination) {
250
+ const { offset, limit } = options.pagination;
251
+ patterns = patterns.slice(offset, offset + limit);
252
+ }
253
+ return {
254
+ patterns,
255
+ total,
256
+ hasMore: options.pagination
257
+ ? options.pagination.offset + patterns.length < total
258
+ : false,
259
+ };
260
+ }
261
+ applyFilter(patterns, filter) {
262
+ return patterns.filter((p) => {
263
+ if (filter.ids && !filter.ids.includes(p.id))
264
+ return false;
265
+ if (filter.categories && !filter.categories.includes(p.category))
266
+ return false;
267
+ if (filter.statuses && !filter.statuses.includes(p.status))
268
+ return false;
269
+ if (filter.minConfidence !== undefined && p.confidence < filter.minConfidence)
270
+ return false;
271
+ if (filter.maxConfidence !== undefined && p.confidence > filter.maxConfidence)
272
+ return false;
273
+ if (filter.confidenceLevels && !filter.confidenceLevels.includes(p.confidenceLevel))
274
+ return false;
275
+ if (filter.severities && !filter.severities.includes(p.severity))
276
+ return false;
277
+ if (filter.files) {
278
+ const hasFile = p.locations.some((loc) => filter.files.includes(loc.file));
279
+ if (!hasFile)
280
+ return false;
281
+ }
282
+ if (filter.hasOutliers !== undefined) {
283
+ const hasOutliers = p.outliers.length > 0;
284
+ if (filter.hasOutliers !== hasOutliers)
285
+ return false;
286
+ }
287
+ if (filter.tags) {
288
+ const hasTags = filter.tags.some((tag) => p.tags.includes(tag));
289
+ if (!hasTags)
290
+ return false;
291
+ }
292
+ if (filter.search) {
293
+ const searchLower = filter.search.toLowerCase();
294
+ const matches = p.name.toLowerCase().includes(searchLower) ||
295
+ p.description.toLowerCase().includes(searchLower);
296
+ if (!matches)
297
+ return false;
298
+ }
299
+ if (filter.createdAfter) {
300
+ const firstSeen = new Date(p.firstSeen);
301
+ if (firstSeen < filter.createdAfter)
302
+ return false;
303
+ }
304
+ if (filter.createdBefore) {
305
+ const firstSeen = new Date(p.firstSeen);
306
+ if (firstSeen > filter.createdBefore)
307
+ return false;
308
+ }
309
+ return true;
310
+ });
311
+ }
312
+ applySort(patterns, sort) {
313
+ const sorted = [...patterns];
314
+ const direction = sort.direction === 'asc' ? 1 : -1;
315
+ sorted.sort((a, b) => {
316
+ let comparison = 0;
317
+ switch (sort.field) {
318
+ case 'name':
319
+ comparison = a.name.localeCompare(b.name);
320
+ break;
321
+ case 'confidence':
322
+ comparison = a.confidence - b.confidence;
323
+ break;
324
+ case 'severity':
325
+ const severityOrder = { error: 4, warning: 3, info: 2, hint: 1 };
326
+ comparison = severityOrder[a.severity] - severityOrder[b.severity];
327
+ break;
328
+ case 'firstSeen':
329
+ comparison = new Date(a.firstSeen).getTime() - new Date(b.firstSeen).getTime();
330
+ break;
331
+ case 'lastSeen':
332
+ comparison = new Date(a.lastSeen).getTime() - new Date(b.lastSeen).getTime();
333
+ break;
334
+ case 'locationCount':
335
+ comparison = a.locations.length - b.locations.length;
336
+ break;
337
+ }
338
+ return comparison * direction;
339
+ });
340
+ return sorted;
341
+ }
342
+ async getByCategory(category) {
343
+ const result = await this.query({
344
+ filter: { categories: [category] },
345
+ });
346
+ return result.patterns;
347
+ }
348
+ async getByStatus(status) {
349
+ const result = await this.query({
350
+ filter: { statuses: [status] },
351
+ });
352
+ return result.patterns;
353
+ }
354
+ async getByFile(file) {
355
+ const result = await this.query({
356
+ filter: { files: [file] },
357
+ });
358
+ return result.patterns;
359
+ }
360
+ async getAll() {
361
+ this.ensureInitialized();
362
+ return this.store.getAll().map(legacyToUnified);
363
+ }
364
+ async count(filter) {
365
+ if (!filter) {
366
+ return this.store.getAll().length;
367
+ }
368
+ const result = await this.query({ filter });
369
+ return result.total;
370
+ }
371
+ // ==========================================================================
372
+ // Status Transitions
373
+ // ==========================================================================
374
+ async approve(id, approvedBy) {
375
+ this.ensureInitialized();
376
+ const existing = this.store.get(id);
377
+ if (!existing) {
378
+ throw new PatternNotFoundError(id);
379
+ }
380
+ try {
381
+ this.store.approve(id, approvedBy);
382
+ }
383
+ catch (error) {
384
+ if (error.name === 'InvalidStateTransitionError') {
385
+ throw new InvalidStatusTransitionError(id, existing.status, 'approved');
386
+ }
387
+ throw error;
388
+ }
389
+ const updated = this.store.get(id);
390
+ return legacyToUnified(updated);
391
+ }
392
+ async ignore(id) {
393
+ this.ensureInitialized();
394
+ const existing = this.store.get(id);
395
+ if (!existing) {
396
+ throw new PatternNotFoundError(id);
397
+ }
398
+ try {
399
+ this.store.ignore(id);
400
+ }
401
+ catch (error) {
402
+ if (error.name === 'InvalidStateTransitionError') {
403
+ throw new InvalidStatusTransitionError(id, existing.status, 'ignored');
404
+ }
405
+ throw error;
406
+ }
407
+ const updated = this.store.get(id);
408
+ return legacyToUnified(updated);
409
+ }
410
+ // ==========================================================================
411
+ // Batch Operations
412
+ // ==========================================================================
413
+ async saveAll() {
414
+ await this.store.saveAll();
415
+ this.emit('patterns:saved', undefined, { count: this.store.getAll().length });
416
+ }
417
+ async clear() {
418
+ this.ensureInitialized();
419
+ // PatternStore doesn't have a clear method, so we delete all patterns
420
+ const patterns = this.store.getAll();
421
+ for (const pattern of patterns) {
422
+ this.store.delete(pattern.id);
423
+ }
424
+ await this.store.saveAll();
425
+ }
426
+ // ==========================================================================
427
+ // Events
428
+ // ==========================================================================
429
+ on(event, handler) {
430
+ return super.on(event, handler);
431
+ }
432
+ off(event, handler) {
433
+ return super.off(event, handler);
434
+ }
435
+ // ==========================================================================
436
+ // Utilities
437
+ // ==========================================================================
438
+ async exists(id) {
439
+ this.ensureInitialized();
440
+ return this.store.get(id) !== undefined;
441
+ }
442
+ async getSummaries(options) {
443
+ const result = await this.query(options ?? {});
444
+ return result.patterns.map(toPatternSummary);
445
+ }
446
+ ensureInitialized() {
447
+ if (!this.initialized) {
448
+ throw new Error('Adapter not initialized. Call initialize() first.');
449
+ }
450
+ }
451
+ // ==========================================================================
452
+ // Legacy Access
453
+ // ==========================================================================
454
+ /**
455
+ * Get the underlying PatternStore for legacy code that needs direct access.
456
+ * @deprecated Use the IPatternRepository interface instead.
457
+ */
458
+ getLegacyStore() {
459
+ return this.store;
460
+ }
461
+ }
462
+ /**
463
+ * Create a PatternStoreAdapter from an existing PatternStore
464
+ */
465
+ export function createPatternStoreAdapter(store) {
466
+ return new PatternStoreAdapter(store);
467
+ }
468
+ //# sourceMappingURL=pattern-store-adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-store-adapter.js","sourceRoot":"","sources":["../../../src/patterns/adapters/pattern-store-adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * Service Factory
3
+ *
4
+ * Factory functions for creating PatternService instances from legacy stores.
5
+ * This is the recommended way to migrate consumers to the new pattern system.
6
+ *
7
+ * @module patterns/adapters/service-factory
8
+ */
9
+ import type { PatternStore } from '../../store/pattern-store.js';
10
+ import type { IPatternService, PatternServiceConfig } from '../service.js';
11
+ /**
12
+ * Create a PatternService from an existing PatternStore.
13
+ *
14
+ * This is the recommended migration path for consumers currently using
15
+ * PatternStore directly. The service provides a higher-level API with
16
+ * caching, metrics, and business logic.
17
+ *
18
+ * The returned service auto-initializes on first use, so you don't need
19
+ * to call initialize() manually.
20
+ *
21
+ * @example
22
+ * ```typescript
23
+ * // Before (direct PatternStore usage)
24
+ * const store = new PatternStore({ rootDir });
25
+ * await store.initialize();
26
+ * const patterns = store.getAll();
27
+ *
28
+ * // After (using PatternService)
29
+ * const store = new PatternStore({ rootDir });
30
+ * const service = createPatternServiceFromStore(store, rootDir);
31
+ * const result = await service.listPatterns(); // Auto-initializes
32
+ * ```
33
+ *
34
+ * @param store The existing PatternStore instance
35
+ * @param rootDir The project root directory (for reading code examples)
36
+ * @param config Optional service configuration
37
+ * @returns A PatternService instance wrapping the store
38
+ */
39
+ export declare function createPatternServiceFromStore(store: PatternStore, rootDir: string, config?: Partial<PatternServiceConfig>): IPatternService;
40
+ //# sourceMappingURL=service-factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service-factory.d.ts","sourceRoot":"","sources":["../../../src/patterns/adapters/service-factory.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,KAAK,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAkI3E;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,YAAY,EACnB,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,OAAO,CAAC,oBAAoB,CAAC,GACrC,eAAe,CAGjB"}
@@ -0,0 +1,144 @@
1
+ /**
2
+ * Service Factory
3
+ *
4
+ * Factory functions for creating PatternService instances from legacy stores.
5
+ * This is the recommended way to migrate consumers to the new pattern system.
6
+ *
7
+ * @module patterns/adapters/service-factory
8
+ */
9
+ import { PatternStoreAdapter } from './pattern-store-adapter.js';
10
+ import { PatternService } from '../impl/pattern-service.js';
11
+ /**
12
+ * A wrapper that auto-initializes the repository on first use.
13
+ * This provides a seamless experience for consumers who don't want
14
+ * to manually call initialize().
15
+ */
16
+ class AutoInitPatternService {
17
+ inner;
18
+ repository;
19
+ initPromise = null;
20
+ constructor(repository, rootDir, config) {
21
+ this.repository = repository;
22
+ this.inner = new PatternService(repository, rootDir, config);
23
+ }
24
+ async ensureInitialized() {
25
+ if (!this.initPromise) {
26
+ this.initPromise = this.repository.initialize();
27
+ }
28
+ await this.initPromise;
29
+ }
30
+ async getStatus() {
31
+ await this.ensureInitialized();
32
+ return this.inner.getStatus();
33
+ }
34
+ async getCategories() {
35
+ await this.ensureInitialized();
36
+ return this.inner.getCategories();
37
+ }
38
+ async listPatterns(options) {
39
+ await this.ensureInitialized();
40
+ return this.inner.listPatterns(options);
41
+ }
42
+ async listByCategory(...args) {
43
+ await this.ensureInitialized();
44
+ return this.inner.listByCategory(...args);
45
+ }
46
+ async listByStatus(...args) {
47
+ await this.ensureInitialized();
48
+ return this.inner.listByStatus(...args);
49
+ }
50
+ async getPattern(id) {
51
+ await this.ensureInitialized();
52
+ return this.inner.getPattern(id);
53
+ }
54
+ async getPatternWithExamples(id, maxExamples) {
55
+ await this.ensureInitialized();
56
+ return this.inner.getPatternWithExamples(id, maxExamples);
57
+ }
58
+ async getPatternsByFile(file) {
59
+ await this.ensureInitialized();
60
+ return this.inner.getPatternsByFile(file);
61
+ }
62
+ async approvePattern(id, approvedBy) {
63
+ await this.ensureInitialized();
64
+ return this.inner.approvePattern(id, approvedBy);
65
+ }
66
+ async ignorePattern(id) {
67
+ await this.ensureInitialized();
68
+ return this.inner.ignorePattern(id);
69
+ }
70
+ async approveMany(ids, approvedBy) {
71
+ await this.ensureInitialized();
72
+ return this.inner.approveMany(ids, approvedBy);
73
+ }
74
+ async ignoreMany(ids) {
75
+ await this.ensureInitialized();
76
+ return this.inner.ignoreMany(ids);
77
+ }
78
+ async search(...args) {
79
+ await this.ensureInitialized();
80
+ return this.inner.search(...args);
81
+ }
82
+ async query(...args) {
83
+ await this.ensureInitialized();
84
+ return this.inner.query(...args);
85
+ }
86
+ // === Write Operations ===
87
+ async addPattern(...args) {
88
+ await this.ensureInitialized();
89
+ return this.inner.addPattern(...args);
90
+ }
91
+ async addPatterns(...args) {
92
+ await this.ensureInitialized();
93
+ return this.inner.addPatterns(...args);
94
+ }
95
+ async updatePattern(...args) {
96
+ await this.ensureInitialized();
97
+ return this.inner.updatePattern(...args);
98
+ }
99
+ async deletePattern(...args) {
100
+ await this.ensureInitialized();
101
+ return this.inner.deletePattern(...args);
102
+ }
103
+ async save() {
104
+ await this.ensureInitialized();
105
+ return this.inner.save();
106
+ }
107
+ async clear() {
108
+ await this.ensureInitialized();
109
+ return this.inner.clear();
110
+ }
111
+ }
112
+ /**
113
+ * Create a PatternService from an existing PatternStore.
114
+ *
115
+ * This is the recommended migration path for consumers currently using
116
+ * PatternStore directly. The service provides a higher-level API with
117
+ * caching, metrics, and business logic.
118
+ *
119
+ * The returned service auto-initializes on first use, so you don't need
120
+ * to call initialize() manually.
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * // Before (direct PatternStore usage)
125
+ * const store = new PatternStore({ rootDir });
126
+ * await store.initialize();
127
+ * const patterns = store.getAll();
128
+ *
129
+ * // After (using PatternService)
130
+ * const store = new PatternStore({ rootDir });
131
+ * const service = createPatternServiceFromStore(store, rootDir);
132
+ * const result = await service.listPatterns(); // Auto-initializes
133
+ * ```
134
+ *
135
+ * @param store The existing PatternStore instance
136
+ * @param rootDir The project root directory (for reading code examples)
137
+ * @param config Optional service configuration
138
+ * @returns A PatternService instance wrapping the store
139
+ */
140
+ export function createPatternServiceFromStore(store, rootDir, config) {
141
+ const adapter = new PatternStoreAdapter(store);
142
+ return new AutoInitPatternService(adapter, rootDir, config);
143
+ }
144
+ //# sourceMappingURL=service-factory.js.map