driftdetect-core 0.1.3 → 0.4.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 (209) hide show
  1. package/dist/boundaries/boundary-store.d.ts +92 -0
  2. package/dist/boundaries/boundary-store.d.ts.map +1 -0
  3. package/dist/boundaries/boundary-store.js +458 -0
  4. package/dist/boundaries/boundary-store.js.map +1 -0
  5. package/dist/boundaries/index.d.ts +8 -0
  6. package/dist/boundaries/index.d.ts.map +1 -0
  7. package/dist/boundaries/index.js +8 -0
  8. package/dist/boundaries/index.js.map +1 -0
  9. package/dist/boundaries/types.d.ts +237 -0
  10. package/dist/boundaries/types.d.ts.map +1 -0
  11. package/dist/boundaries/types.js +8 -0
  12. package/dist/boundaries/types.js.map +1 -0
  13. package/dist/dna/ai-context.d.ts +10 -0
  14. package/dist/dna/ai-context.d.ts.map +1 -0
  15. package/dist/dna/ai-context.js +46 -0
  16. package/dist/dna/ai-context.js.map +1 -0
  17. package/dist/dna/dna-analyzer.d.ts +34 -0
  18. package/dist/dna/dna-analyzer.d.ts.map +1 -0
  19. package/dist/dna/dna-analyzer.js +110 -0
  20. package/dist/dna/dna-analyzer.js.map +1 -0
  21. package/dist/dna/dna-store.d.ts +13 -0
  22. package/dist/dna/dna-store.d.ts.map +1 -0
  23. package/dist/dna/dna-store.js +43 -0
  24. package/dist/dna/dna-store.js.map +1 -0
  25. package/dist/dna/gene-extractors/animation-approach.d.ts +15 -0
  26. package/dist/dna/gene-extractors/animation-approach.d.ts.map +1 -0
  27. package/dist/dna/gene-extractors/animation-approach.js +97 -0
  28. package/dist/dna/gene-extractors/animation-approach.js.map +1 -0
  29. package/dist/dna/gene-extractors/base-extractor.d.ts +53 -0
  30. package/dist/dna/gene-extractors/base-extractor.d.ts.map +1 -0
  31. package/dist/dna/gene-extractors/base-extractor.js +76 -0
  32. package/dist/dna/gene-extractors/base-extractor.js.map +1 -0
  33. package/dist/dna/gene-extractors/index.d.ts +16 -0
  34. package/dist/dna/gene-extractors/index.d.ts.map +1 -0
  35. package/dist/dna/gene-extractors/index.js +38 -0
  36. package/dist/dna/gene-extractors/index.js.map +1 -0
  37. package/dist/dna/gene-extractors/responsive-approach.d.ts +10 -0
  38. package/dist/dna/gene-extractors/responsive-approach.d.ts.map +1 -0
  39. package/dist/dna/gene-extractors/responsive-approach.js +30 -0
  40. package/dist/dna/gene-extractors/responsive-approach.js.map +1 -0
  41. package/dist/dna/gene-extractors/spacing-philosophy.d.ts +10 -0
  42. package/dist/dna/gene-extractors/spacing-philosophy.d.ts.map +1 -0
  43. package/dist/dna/gene-extractors/spacing-philosophy.js +30 -0
  44. package/dist/dna/gene-extractors/spacing-philosophy.js.map +1 -0
  45. package/dist/dna/gene-extractors/state-styling.d.ts +10 -0
  46. package/dist/dna/gene-extractors/state-styling.d.ts.map +1 -0
  47. package/dist/dna/gene-extractors/state-styling.js +29 -0
  48. package/dist/dna/gene-extractors/state-styling.js.map +1 -0
  49. package/dist/dna/gene-extractors/theming.d.ts +10 -0
  50. package/dist/dna/gene-extractors/theming.d.ts.map +1 -0
  51. package/dist/dna/gene-extractors/theming.js +30 -0
  52. package/dist/dna/gene-extractors/theming.js.map +1 -0
  53. package/dist/dna/gene-extractors/variant-handling.d.ts +13 -0
  54. package/dist/dna/gene-extractors/variant-handling.d.ts.map +1 -0
  55. package/dist/dna/gene-extractors/variant-handling.js +38 -0
  56. package/dist/dna/gene-extractors/variant-handling.js.map +1 -0
  57. package/dist/dna/health-calculator.d.ts +21 -0
  58. package/dist/dna/health-calculator.d.ts.map +1 -0
  59. package/dist/dna/health-calculator.js +113 -0
  60. package/dist/dna/health-calculator.js.map +1 -0
  61. package/dist/dna/index.d.ts +21 -0
  62. package/dist/dna/index.d.ts.map +1 -0
  63. package/dist/dna/index.js +19 -0
  64. package/dist/dna/index.js.map +1 -0
  65. package/dist/dna/mutation-detector.d.ts +10 -0
  66. package/dist/dna/mutation-detector.d.ts.map +1 -0
  67. package/dist/dna/mutation-detector.js +39 -0
  68. package/dist/dna/mutation-detector.js.map +1 -0
  69. package/dist/dna/playbook-generator.d.ts +6 -0
  70. package/dist/dna/playbook-generator.d.ts.map +1 -0
  71. package/dist/dna/playbook-generator.js +53 -0
  72. package/dist/dna/playbook-generator.js.map +1 -0
  73. package/dist/dna/types.d.ts +95 -0
  74. package/dist/dna/types.d.ts.map +1 -0
  75. package/dist/dna/types.js +8 -0
  76. package/dist/dna/types.js.map +1 -0
  77. package/dist/index.d.ts +7 -0
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +10 -0
  80. package/dist/index.js.map +1 -1
  81. package/dist/parsers/parser-manager.d.ts.map +1 -1
  82. package/dist/parsers/parser-manager.js +2 -0
  83. package/dist/parsers/parser-manager.js.map +1 -1
  84. package/dist/parsers/tree-sitter/config.d.ts +82 -0
  85. package/dist/parsers/tree-sitter/config.d.ts.map +1 -0
  86. package/dist/parsers/tree-sitter/config.js +200 -0
  87. package/dist/parsers/tree-sitter/config.js.map +1 -0
  88. package/dist/parsers/tree-sitter/csharp-ast-converter.d.ts +64 -0
  89. package/dist/parsers/tree-sitter/csharp-ast-converter.d.ts.map +1 -0
  90. package/dist/parsers/tree-sitter/csharp-ast-converter.js +271 -0
  91. package/dist/parsers/tree-sitter/csharp-ast-converter.js.map +1 -0
  92. package/dist/parsers/tree-sitter/csharp-loader.d.ts +43 -0
  93. package/dist/parsers/tree-sitter/csharp-loader.d.ts.map +1 -0
  94. package/dist/parsers/tree-sitter/csharp-loader.js +146 -0
  95. package/dist/parsers/tree-sitter/csharp-loader.js.map +1 -0
  96. package/dist/parsers/tree-sitter/index.d.ts +31 -0
  97. package/dist/parsers/tree-sitter/index.d.ts.map +1 -0
  98. package/dist/parsers/tree-sitter/index.js +63 -0
  99. package/dist/parsers/tree-sitter/index.js.map +1 -0
  100. package/dist/parsers/tree-sitter/java/annotation-extractor.d.ts +79 -0
  101. package/dist/parsers/tree-sitter/java/annotation-extractor.d.ts.map +1 -0
  102. package/dist/parsers/tree-sitter/java/annotation-extractor.js +540 -0
  103. package/dist/parsers/tree-sitter/java/annotation-extractor.js.map +1 -0
  104. package/dist/parsers/tree-sitter/java/class-extractor.d.ts +40 -0
  105. package/dist/parsers/tree-sitter/java/class-extractor.d.ts.map +1 -0
  106. package/dist/parsers/tree-sitter/java/class-extractor.js +770 -0
  107. package/dist/parsers/tree-sitter/java/class-extractor.js.map +1 -0
  108. package/dist/parsers/tree-sitter/java/index.d.ts +14 -0
  109. package/dist/parsers/tree-sitter/java/index.d.ts.map +1 -0
  110. package/dist/parsers/tree-sitter/java/index.js +25 -0
  111. package/dist/parsers/tree-sitter/java/index.js.map +1 -0
  112. package/dist/parsers/tree-sitter/java/method-extractor.d.ts +88 -0
  113. package/dist/parsers/tree-sitter/java/method-extractor.d.ts.map +1 -0
  114. package/dist/parsers/tree-sitter/java/method-extractor.js +551 -0
  115. package/dist/parsers/tree-sitter/java/method-extractor.js.map +1 -0
  116. package/dist/parsers/tree-sitter/java/types.d.ts +545 -0
  117. package/dist/parsers/tree-sitter/java/types.d.ts.map +1 -0
  118. package/dist/parsers/tree-sitter/java/types.js +81 -0
  119. package/dist/parsers/tree-sitter/java/types.js.map +1 -0
  120. package/dist/parsers/tree-sitter/java-loader.d.ts +50 -0
  121. package/dist/parsers/tree-sitter/java-loader.d.ts.map +1 -0
  122. package/dist/parsers/tree-sitter/java-loader.js +161 -0
  123. package/dist/parsers/tree-sitter/java-loader.js.map +1 -0
  124. package/dist/parsers/tree-sitter/loader.d.ts +50 -0
  125. package/dist/parsers/tree-sitter/loader.d.ts.map +1 -0
  126. package/dist/parsers/tree-sitter/loader.js +156 -0
  127. package/dist/parsers/tree-sitter/loader.js.map +1 -0
  128. package/dist/parsers/tree-sitter/php-loader.d.ts +50 -0
  129. package/dist/parsers/tree-sitter/php-loader.d.ts.map +1 -0
  130. package/dist/parsers/tree-sitter/php-loader.js +164 -0
  131. package/dist/parsers/tree-sitter/php-loader.js.map +1 -0
  132. package/dist/parsers/tree-sitter/pydantic/config-extractor.d.ts +78 -0
  133. package/dist/parsers/tree-sitter/pydantic/config-extractor.d.ts.map +1 -0
  134. package/dist/parsers/tree-sitter/pydantic/config-extractor.js +278 -0
  135. package/dist/parsers/tree-sitter/pydantic/config-extractor.js.map +1 -0
  136. package/dist/parsers/tree-sitter/pydantic/constraint-parser.d.ts +84 -0
  137. package/dist/parsers/tree-sitter/pydantic/constraint-parser.d.ts.map +1 -0
  138. package/dist/parsers/tree-sitter/pydantic/constraint-parser.js +321 -0
  139. package/dist/parsers/tree-sitter/pydantic/constraint-parser.js.map +1 -0
  140. package/dist/parsers/tree-sitter/pydantic/field-extractor.d.ts +74 -0
  141. package/dist/parsers/tree-sitter/pydantic/field-extractor.d.ts.map +1 -0
  142. package/dist/parsers/tree-sitter/pydantic/field-extractor.js +285 -0
  143. package/dist/parsers/tree-sitter/pydantic/field-extractor.js.map +1 -0
  144. package/dist/parsers/tree-sitter/pydantic/index.d.ts +18 -0
  145. package/dist/parsers/tree-sitter/pydantic/index.d.ts.map +1 -0
  146. package/dist/parsers/tree-sitter/pydantic/index.js +23 -0
  147. package/dist/parsers/tree-sitter/pydantic/index.js.map +1 -0
  148. package/dist/parsers/tree-sitter/pydantic/inheritance-resolver.d.ts +70 -0
  149. package/dist/parsers/tree-sitter/pydantic/inheritance-resolver.d.ts.map +1 -0
  150. package/dist/parsers/tree-sitter/pydantic/inheritance-resolver.js +251 -0
  151. package/dist/parsers/tree-sitter/pydantic/inheritance-resolver.js.map +1 -0
  152. package/dist/parsers/tree-sitter/pydantic/pydantic-extractor.d.ts +102 -0
  153. package/dist/parsers/tree-sitter/pydantic/pydantic-extractor.d.ts.map +1 -0
  154. package/dist/parsers/tree-sitter/pydantic/pydantic-extractor.js +399 -0
  155. package/dist/parsers/tree-sitter/pydantic/pydantic-extractor.js.map +1 -0
  156. package/dist/parsers/tree-sitter/pydantic/type-resolver.d.ts +89 -0
  157. package/dist/parsers/tree-sitter/pydantic/type-resolver.d.ts.map +1 -0
  158. package/dist/parsers/tree-sitter/pydantic/type-resolver.js +426 -0
  159. package/dist/parsers/tree-sitter/pydantic/type-resolver.js.map +1 -0
  160. package/dist/parsers/tree-sitter/pydantic/types.d.ts +177 -0
  161. package/dist/parsers/tree-sitter/pydantic/types.d.ts.map +1 -0
  162. package/dist/parsers/tree-sitter/pydantic/types.js +139 -0
  163. package/dist/parsers/tree-sitter/pydantic/types.js.map +1 -0
  164. package/dist/parsers/tree-sitter/pydantic/validator-extractor.d.ts +88 -0
  165. package/dist/parsers/tree-sitter/pydantic/validator-extractor.d.ts.map +1 -0
  166. package/dist/parsers/tree-sitter/pydantic/validator-extractor.js +315 -0
  167. package/dist/parsers/tree-sitter/pydantic/validator-extractor.js.map +1 -0
  168. package/dist/parsers/tree-sitter/python-ast-converter.d.ts +140 -0
  169. package/dist/parsers/tree-sitter/python-ast-converter.d.ts.map +1 -0
  170. package/dist/parsers/tree-sitter/python-ast-converter.js +360 -0
  171. package/dist/parsers/tree-sitter/python-ast-converter.js.map +1 -0
  172. package/dist/parsers/tree-sitter/tree-sitter-csharp-parser.d.ts +465 -0
  173. package/dist/parsers/tree-sitter/tree-sitter-csharp-parser.d.ts.map +1 -0
  174. package/dist/parsers/tree-sitter/tree-sitter-csharp-parser.js +1146 -0
  175. package/dist/parsers/tree-sitter/tree-sitter-csharp-parser.js.map +1 -0
  176. package/dist/parsers/tree-sitter/tree-sitter-java-parser.d.ts +90 -0
  177. package/dist/parsers/tree-sitter/tree-sitter-java-parser.d.ts.map +1 -0
  178. package/dist/parsers/tree-sitter/tree-sitter-java-parser.js +298 -0
  179. package/dist/parsers/tree-sitter/tree-sitter-java-parser.js.map +1 -0
  180. package/dist/parsers/tree-sitter/tree-sitter-php-parser.d.ts +177 -0
  181. package/dist/parsers/tree-sitter/tree-sitter-php-parser.d.ts.map +1 -0
  182. package/dist/parsers/tree-sitter/tree-sitter-php-parser.js +585 -0
  183. package/dist/parsers/tree-sitter/tree-sitter-php-parser.js.map +1 -0
  184. package/dist/parsers/tree-sitter/tree-sitter-python-parser.d.ts +86 -0
  185. package/dist/parsers/tree-sitter/tree-sitter-python-parser.d.ts.map +1 -0
  186. package/dist/parsers/tree-sitter/tree-sitter-python-parser.js +177 -0
  187. package/dist/parsers/tree-sitter/tree-sitter-python-parser.js.map +1 -0
  188. package/dist/parsers/tree-sitter/types.d.ts +399 -0
  189. package/dist/parsers/tree-sitter/types.d.ts.map +1 -0
  190. package/dist/parsers/tree-sitter/types.js +20 -0
  191. package/dist/parsers/tree-sitter/types.js.map +1 -0
  192. package/dist/parsers/types.d.ts +1 -1
  193. package/dist/parsers/types.d.ts.map +1 -1
  194. package/dist/scanner/file-walker.d.ts.map +1 -1
  195. package/dist/scanner/file-walker.js +5 -0
  196. package/dist/scanner/file-walker.js.map +1 -1
  197. package/dist/store/history-store.d.ts +85 -269
  198. package/dist/store/history-store.d.ts.map +1 -1
  199. package/dist/store/history-store.js +272 -624
  200. package/dist/store/history-store.js.map +1 -1
  201. package/dist/types/index.d.ts +1 -0
  202. package/dist/types/index.d.ts.map +1 -1
  203. package/dist/types/index.js +2 -0
  204. package/dist/types/index.js.map +1 -1
  205. package/dist/types/java-type-mapping.d.ts +79 -0
  206. package/dist/types/java-type-mapping.d.ts.map +1 -0
  207. package/dist/types/java-type-mapping.js +290 -0
  208. package/dist/types/java-type-mapping.js.map +1 -0
  209. package/package.json +9 -2
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Tree-sitter Java Loader
3
+ *
4
+ * Handles loading tree-sitter and tree-sitter-java with graceful fallback.
5
+ * Provides functions to check availability and access the parser/language.
6
+ *
7
+ * @requirements Java/Spring Boot Language Support
8
+ */
9
+ import type { TreeSitterParser, TreeSitterLanguage } from './types.js';
10
+ /**
11
+ * Check if tree-sitter-java is available.
12
+ *
13
+ * This function attempts to load tree-sitter and tree-sitter-java
14
+ * on first call and caches the result.
15
+ *
16
+ * @returns true if tree-sitter-java is available and working
17
+ */
18
+ export declare function isJavaTreeSitterAvailable(): boolean;
19
+ /**
20
+ * Get the Java language for tree-sitter.
21
+ *
22
+ * @returns TreeSitter Java language
23
+ * @throws Error if tree-sitter-java is not available
24
+ */
25
+ export declare function getJavaLanguage(): TreeSitterLanguage;
26
+ /**
27
+ * Get the tree-sitter Parser constructor for Java.
28
+ *
29
+ * @returns TreeSitter Parser constructor
30
+ * @throws Error if tree-sitter is not available
31
+ */
32
+ export declare function getJavaTreeSitter(): new () => TreeSitterParser;
33
+ /**
34
+ * Create a new tree-sitter parser instance configured for Java.
35
+ *
36
+ * @returns Configured TreeSitter parser
37
+ * @throws Error if tree-sitter-java is not available
38
+ */
39
+ export declare function createJavaParser(): TreeSitterParser;
40
+ /**
41
+ * Get the loading error message if tree-sitter-java failed to load.
42
+ *
43
+ * @returns Error message or null if no error
44
+ */
45
+ export declare function getJavaLoadingError(): string | null;
46
+ /**
47
+ * Reset the loader state (useful for testing).
48
+ */
49
+ export declare function resetJavaLoader(): void;
50
+ //# sourceMappingURL=java-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"java-loader.d.ts","sourceRoot":"","sources":["../../../src/parsers/tree-sitter/java-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAyBvE;;;;;;;GAOG;AACH,wBAAgB,yBAAyB,IAAI,OAAO,CAenD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,kBAAkB,CAUpD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,UAAU,gBAAgB,CAU9D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,gBAAgB,CAgBnD;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAInD;AAED;;GAEG;AACH,wBAAgB,eAAe,IAAI,IAAI,CAKtC"}
@@ -0,0 +1,161 @@
1
+ /**
2
+ * Tree-sitter Java Loader
3
+ *
4
+ * Handles loading tree-sitter and tree-sitter-java with graceful fallback.
5
+ * Provides functions to check availability and access the parser/language.
6
+ *
7
+ * @requirements Java/Spring Boot Language Support
8
+ */
9
+ import { createRequire } from 'node:module';
10
+ // Create require function for ESM compatibility
11
+ const require = createRequire(import.meta.url);
12
+ // ============================================
13
+ // Module State
14
+ // ============================================
15
+ /** Whether tree-sitter-java is available */
16
+ let javaAvailable = null;
17
+ /** Cached tree-sitter module */
18
+ let cachedTreeSitter = null;
19
+ /** Cached Java language */
20
+ let cachedJavaLanguage = null;
21
+ /** Loading error message if any */
22
+ let loadingError = null;
23
+ // ============================================
24
+ // Public API
25
+ // ============================================
26
+ /**
27
+ * Check if tree-sitter-java is available.
28
+ *
29
+ * This function attempts to load tree-sitter and tree-sitter-java
30
+ * on first call and caches the result.
31
+ *
32
+ * @returns true if tree-sitter-java is available and working
33
+ */
34
+ export function isJavaTreeSitterAvailable() {
35
+ if (javaAvailable !== null) {
36
+ return javaAvailable;
37
+ }
38
+ try {
39
+ loadJavaTreeSitter();
40
+ javaAvailable = true;
41
+ }
42
+ catch (error) {
43
+ javaAvailable = false;
44
+ loadingError = error instanceof Error ? error.message : 'Unknown error loading tree-sitter-java';
45
+ logDebug(`tree-sitter-java not available: ${loadingError}`);
46
+ }
47
+ return javaAvailable;
48
+ }
49
+ /**
50
+ * Get the Java language for tree-sitter.
51
+ *
52
+ * @returns TreeSitter Java language
53
+ * @throws Error if tree-sitter-java is not available
54
+ */
55
+ export function getJavaLanguage() {
56
+ if (!isJavaTreeSitterAvailable()) {
57
+ throw new Error(`tree-sitter-java is not available: ${loadingError ?? 'unknown error'}`);
58
+ }
59
+ if (!cachedJavaLanguage) {
60
+ throw new Error('tree-sitter-java language not loaded');
61
+ }
62
+ return cachedJavaLanguage;
63
+ }
64
+ /**
65
+ * Get the tree-sitter Parser constructor for Java.
66
+ *
67
+ * @returns TreeSitter Parser constructor
68
+ * @throws Error if tree-sitter is not available
69
+ */
70
+ export function getJavaTreeSitter() {
71
+ if (!isJavaTreeSitterAvailable()) {
72
+ throw new Error(`tree-sitter-java is not available: ${loadingError ?? 'unknown error'}`);
73
+ }
74
+ if (!cachedTreeSitter) {
75
+ throw new Error('tree-sitter module not loaded');
76
+ }
77
+ return cachedTreeSitter;
78
+ }
79
+ /**
80
+ * Create a new tree-sitter parser instance configured for Java.
81
+ *
82
+ * @returns Configured TreeSitter parser
83
+ * @throws Error if tree-sitter-java is not available
84
+ */
85
+ export function createJavaParser() {
86
+ if (!isJavaTreeSitterAvailable()) {
87
+ throw new Error(`tree-sitter-java is not available: ${loadingError ?? 'unknown error'}`);
88
+ }
89
+ if (!cachedTreeSitter) {
90
+ throw new Error('tree-sitter module not loaded');
91
+ }
92
+ const Parser = cachedTreeSitter;
93
+ const language = getJavaLanguage();
94
+ const parser = new Parser();
95
+ parser.setLanguage(language);
96
+ return parser;
97
+ }
98
+ /**
99
+ * Get the loading error message if tree-sitter-java failed to load.
100
+ *
101
+ * @returns Error message or null if no error
102
+ */
103
+ export function getJavaLoadingError() {
104
+ // Ensure we've attempted to load
105
+ isJavaTreeSitterAvailable();
106
+ return loadingError;
107
+ }
108
+ /**
109
+ * Reset the loader state (useful for testing).
110
+ */
111
+ export function resetJavaLoader() {
112
+ javaAvailable = null;
113
+ cachedTreeSitter = null;
114
+ cachedJavaLanguage = null;
115
+ loadingError = null;
116
+ }
117
+ // ============================================
118
+ // Internal Functions
119
+ // ============================================
120
+ /**
121
+ * Attempt to load tree-sitter and tree-sitter-java.
122
+ *
123
+ * @throws Error if loading fails
124
+ */
125
+ function loadJavaTreeSitter() {
126
+ // Skip if already loaded
127
+ if (cachedTreeSitter && cachedJavaLanguage) {
128
+ return;
129
+ }
130
+ try {
131
+ // Dynamic require for optional dependencies
132
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
133
+ cachedTreeSitter = require('tree-sitter');
134
+ }
135
+ catch (error) {
136
+ throw new Error(`Failed to load tree-sitter: ${error instanceof Error ? error.message : 'unknown error'}. ` +
137
+ 'Install with: pnpm add tree-sitter tree-sitter-java');
138
+ }
139
+ try {
140
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
141
+ cachedJavaLanguage = require('tree-sitter-java');
142
+ }
143
+ catch (error) {
144
+ // Clear tree-sitter cache since we can't use it without Java
145
+ cachedTreeSitter = null;
146
+ throw new Error(`Failed to load tree-sitter-java: ${error instanceof Error ? error.message : 'unknown error'}. ` +
147
+ 'Install with: pnpm add tree-sitter-java');
148
+ }
149
+ logDebug('tree-sitter and tree-sitter-java loaded successfully');
150
+ }
151
+ /**
152
+ * Log debug message if debug mode is enabled.
153
+ *
154
+ * @param message - Message to log
155
+ */
156
+ function logDebug(message) {
157
+ if (process.env['DRIFT_PARSER_DEBUG'] === 'true') {
158
+ console.debug(`[java-loader] ${message}`);
159
+ }
160
+ }
161
+ //# sourceMappingURL=java-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"java-loader.js","sourceRoot":"","sources":["../../../src/parsers/tree-sitter/java-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Tree-sitter Loader
3
+ *
4
+ * Handles loading tree-sitter and tree-sitter-python with graceful fallback.
5
+ * Provides functions to check availability and access the parser/language.
6
+ *
7
+ * @requirements 3.5 - Unified AST query interface
8
+ */
9
+ import type { TreeSitterParser, TreeSitterLanguage } from './types.js';
10
+ /**
11
+ * Check if tree-sitter is available.
12
+ *
13
+ * This function attempts to load tree-sitter and tree-sitter-python
14
+ * on first call and caches the result.
15
+ *
16
+ * @returns true if tree-sitter is available and working
17
+ */
18
+ export declare function isTreeSitterAvailable(): boolean;
19
+ /**
20
+ * Get the tree-sitter Parser constructor.
21
+ *
22
+ * @returns TreeSitter Parser constructor
23
+ * @throws Error if tree-sitter is not available
24
+ */
25
+ export declare function getTreeSitter(): new () => TreeSitterParser;
26
+ /**
27
+ * Get the Python language for tree-sitter.
28
+ *
29
+ * @returns TreeSitter Python language
30
+ * @throws Error if tree-sitter-python is not available
31
+ */
32
+ export declare function getPythonLanguage(): TreeSitterLanguage;
33
+ /**
34
+ * Create a new tree-sitter parser instance configured for Python.
35
+ *
36
+ * @returns Configured TreeSitter parser
37
+ * @throws Error if tree-sitter is not available
38
+ */
39
+ export declare function createPythonParser(): TreeSitterParser;
40
+ /**
41
+ * Get the loading error message if tree-sitter failed to load.
42
+ *
43
+ * @returns Error message or null if no error
44
+ */
45
+ export declare function getLoadingError(): string | null;
46
+ /**
47
+ * Reset the loader state (useful for testing).
48
+ */
49
+ export declare function resetLoader(): void;
50
+ //# sourceMappingURL=loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../../src/parsers/tree-sitter/loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAyBvE;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,IAAI,OAAO,CAe/C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,IAAI,UAAU,gBAAgB,CAU1D;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,IAAI,kBAAkB,CAUtD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,IAAI,gBAAgB,CAQrD;AAED;;;;GAIG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,IAAI,CAI/C;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAKlC"}
@@ -0,0 +1,156 @@
1
+ /**
2
+ * Tree-sitter Loader
3
+ *
4
+ * Handles loading tree-sitter and tree-sitter-python with graceful fallback.
5
+ * Provides functions to check availability and access the parser/language.
6
+ *
7
+ * @requirements 3.5 - Unified AST query interface
8
+ */
9
+ import { createRequire } from 'node:module';
10
+ // Create require function for ESM compatibility
11
+ const require = createRequire(import.meta.url);
12
+ // ============================================
13
+ // Module State
14
+ // ============================================
15
+ /** Whether tree-sitter is available */
16
+ let treeSitterAvailable = null;
17
+ /** Cached tree-sitter Parser constructor */
18
+ let cachedTreeSitter = null;
19
+ /** Cached Python language */
20
+ let cachedPythonLanguage = null;
21
+ /** Loading error message if any */
22
+ let loadingError = null;
23
+ // ============================================
24
+ // Public API
25
+ // ============================================
26
+ /**
27
+ * Check if tree-sitter is available.
28
+ *
29
+ * This function attempts to load tree-sitter and tree-sitter-python
30
+ * on first call and caches the result.
31
+ *
32
+ * @returns true if tree-sitter is available and working
33
+ */
34
+ export function isTreeSitterAvailable() {
35
+ if (treeSitterAvailable !== null) {
36
+ return treeSitterAvailable;
37
+ }
38
+ try {
39
+ loadTreeSitter();
40
+ treeSitterAvailable = true;
41
+ }
42
+ catch (error) {
43
+ treeSitterAvailable = false;
44
+ loadingError = error instanceof Error ? error.message : 'Unknown error loading tree-sitter';
45
+ logDebug(`tree-sitter not available: ${loadingError}`);
46
+ }
47
+ return treeSitterAvailable;
48
+ }
49
+ /**
50
+ * Get the tree-sitter Parser constructor.
51
+ *
52
+ * @returns TreeSitter Parser constructor
53
+ * @throws Error if tree-sitter is not available
54
+ */
55
+ export function getTreeSitter() {
56
+ if (!isTreeSitterAvailable()) {
57
+ throw new Error(`tree-sitter is not available: ${loadingError ?? 'unknown error'}`);
58
+ }
59
+ if (!cachedTreeSitter) {
60
+ throw new Error('tree-sitter module not loaded');
61
+ }
62
+ return cachedTreeSitter;
63
+ }
64
+ /**
65
+ * Get the Python language for tree-sitter.
66
+ *
67
+ * @returns TreeSitter Python language
68
+ * @throws Error if tree-sitter-python is not available
69
+ */
70
+ export function getPythonLanguage() {
71
+ if (!isTreeSitterAvailable()) {
72
+ throw new Error(`tree-sitter-python is not available: ${loadingError ?? 'unknown error'}`);
73
+ }
74
+ if (!cachedPythonLanguage) {
75
+ throw new Error('tree-sitter-python language not loaded');
76
+ }
77
+ return cachedPythonLanguage;
78
+ }
79
+ /**
80
+ * Create a new tree-sitter parser instance configured for Python.
81
+ *
82
+ * @returns Configured TreeSitter parser
83
+ * @throws Error if tree-sitter is not available
84
+ */
85
+ export function createPythonParser() {
86
+ const Parser = getTreeSitter();
87
+ const language = getPythonLanguage();
88
+ const parser = new Parser();
89
+ parser.setLanguage(language);
90
+ return parser;
91
+ }
92
+ /**
93
+ * Get the loading error message if tree-sitter failed to load.
94
+ *
95
+ * @returns Error message or null if no error
96
+ */
97
+ export function getLoadingError() {
98
+ // Ensure we've attempted to load
99
+ isTreeSitterAvailable();
100
+ return loadingError;
101
+ }
102
+ /**
103
+ * Reset the loader state (useful for testing).
104
+ */
105
+ export function resetLoader() {
106
+ treeSitterAvailable = null;
107
+ cachedTreeSitter = null;
108
+ cachedPythonLanguage = null;
109
+ loadingError = null;
110
+ }
111
+ // ============================================
112
+ // Internal Functions
113
+ // ============================================
114
+ /**
115
+ * Attempt to load tree-sitter and tree-sitter-python.
116
+ *
117
+ * @throws Error if loading fails
118
+ */
119
+ function loadTreeSitter() {
120
+ // Skip if already loaded
121
+ if (cachedTreeSitter && cachedPythonLanguage) {
122
+ return;
123
+ }
124
+ try {
125
+ // Dynamic require for optional dependencies
126
+ // tree-sitter exports the Parser constructor directly
127
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
128
+ cachedTreeSitter = require('tree-sitter');
129
+ }
130
+ catch (error) {
131
+ throw new Error(`Failed to load tree-sitter: ${error instanceof Error ? error.message : 'unknown error'}. ` +
132
+ 'Install with: pnpm add tree-sitter tree-sitter-python');
133
+ }
134
+ try {
135
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
136
+ cachedPythonLanguage = require('tree-sitter-python');
137
+ }
138
+ catch (error) {
139
+ // Clear tree-sitter cache since we can't use it without Python
140
+ cachedTreeSitter = null;
141
+ throw new Error(`Failed to load tree-sitter-python: ${error instanceof Error ? error.message : 'unknown error'}. ` +
142
+ 'Install with: pnpm add tree-sitter-python');
143
+ }
144
+ logDebug('tree-sitter and tree-sitter-python loaded successfully');
145
+ }
146
+ /**
147
+ * Log debug message if debug mode is enabled.
148
+ *
149
+ * @param message - Message to log
150
+ */
151
+ function logDebug(message) {
152
+ if (process.env['DRIFT_PARSER_DEBUG'] === 'true') {
153
+ console.debug(`[tree-sitter-loader] ${message}`);
154
+ }
155
+ }
156
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../../src/parsers/tree-sitter/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,50 @@
1
+ /**
2
+ * Tree-sitter PHP Loader
3
+ *
4
+ * Handles loading tree-sitter and tree-sitter-php with graceful fallback.
5
+ * Provides functions to check availability and access the parser/language.
6
+ *
7
+ * @requirements PHP/Laravel Language Support
8
+ */
9
+ import type { TreeSitterParser, TreeSitterLanguage } from './types.js';
10
+ /**
11
+ * Check if tree-sitter-php is available.
12
+ *
13
+ * This function attempts to load tree-sitter and tree-sitter-php
14
+ * on first call and caches the result.
15
+ *
16
+ * @returns true if tree-sitter-php is available and working
17
+ */
18
+ export declare function isPhpTreeSitterAvailable(): boolean;
19
+ /**
20
+ * Get the PHP language for tree-sitter.
21
+ *
22
+ * @returns TreeSitter PHP language
23
+ * @throws Error if tree-sitter-php is not available
24
+ */
25
+ export declare function getPhpLanguage(): TreeSitterLanguage;
26
+ /**
27
+ * Get the tree-sitter Parser constructor for PHP.
28
+ *
29
+ * @returns TreeSitter Parser constructor
30
+ * @throws Error if tree-sitter is not available
31
+ */
32
+ export declare function getPhpTreeSitter(): new () => TreeSitterParser;
33
+ /**
34
+ * Create a new tree-sitter parser instance configured for PHP.
35
+ *
36
+ * @returns Configured TreeSitter parser
37
+ * @throws Error if tree-sitter-php is not available
38
+ */
39
+ export declare function createPhpParser(): TreeSitterParser;
40
+ /**
41
+ * Get the loading error message if tree-sitter-php failed to load.
42
+ *
43
+ * @returns Error message or null if no error
44
+ */
45
+ export declare function getPhpLoadingError(): string | null;
46
+ /**
47
+ * Reset the loader state (useful for testing).
48
+ */
49
+ export declare function resetPhpLoader(): void;
50
+ //# sourceMappingURL=php-loader.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"php-loader.d.ts","sourceRoot":"","sources":["../../../src/parsers/tree-sitter/php-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAyBvE;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,IAAI,OAAO,CAelD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,IAAI,kBAAkB,CAUnD;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,IAAI,UAAU,gBAAgB,CAU7D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,gBAAgB,CAgBlD;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAIlD;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAKrC"}
@@ -0,0 +1,164 @@
1
+ /**
2
+ * Tree-sitter PHP Loader
3
+ *
4
+ * Handles loading tree-sitter and tree-sitter-php with graceful fallback.
5
+ * Provides functions to check availability and access the parser/language.
6
+ *
7
+ * @requirements PHP/Laravel Language Support
8
+ */
9
+ import { createRequire } from 'node:module';
10
+ // Create require function for ESM compatibility
11
+ const require = createRequire(import.meta.url);
12
+ // ============================================
13
+ // Module State
14
+ // ============================================
15
+ /** Whether tree-sitter-php is available */
16
+ let phpAvailable = null;
17
+ /** Cached tree-sitter module */
18
+ let cachedTreeSitter = null;
19
+ /** Cached PHP language */
20
+ let cachedPhpLanguage = null;
21
+ /** Loading error message if any */
22
+ let loadingError = null;
23
+ // ============================================
24
+ // Public API
25
+ // ============================================
26
+ /**
27
+ * Check if tree-sitter-php is available.
28
+ *
29
+ * This function attempts to load tree-sitter and tree-sitter-php
30
+ * on first call and caches the result.
31
+ *
32
+ * @returns true if tree-sitter-php is available and working
33
+ */
34
+ export function isPhpTreeSitterAvailable() {
35
+ if (phpAvailable !== null) {
36
+ return phpAvailable;
37
+ }
38
+ try {
39
+ loadPhpTreeSitter();
40
+ phpAvailable = true;
41
+ }
42
+ catch (error) {
43
+ phpAvailable = false;
44
+ loadingError = error instanceof Error ? error.message : 'Unknown error loading tree-sitter-php';
45
+ logDebug(`tree-sitter-php not available: ${loadingError}`);
46
+ }
47
+ return phpAvailable;
48
+ }
49
+ /**
50
+ * Get the PHP language for tree-sitter.
51
+ *
52
+ * @returns TreeSitter PHP language
53
+ * @throws Error if tree-sitter-php is not available
54
+ */
55
+ export function getPhpLanguage() {
56
+ if (!isPhpTreeSitterAvailable()) {
57
+ throw new Error(`tree-sitter-php is not available: ${loadingError ?? 'unknown error'}`);
58
+ }
59
+ if (!cachedPhpLanguage) {
60
+ throw new Error('tree-sitter-php language not loaded');
61
+ }
62
+ return cachedPhpLanguage;
63
+ }
64
+ /**
65
+ * Get the tree-sitter Parser constructor for PHP.
66
+ *
67
+ * @returns TreeSitter Parser constructor
68
+ * @throws Error if tree-sitter is not available
69
+ */
70
+ export function getPhpTreeSitter() {
71
+ if (!isPhpTreeSitterAvailable()) {
72
+ throw new Error(`tree-sitter-php is not available: ${loadingError ?? 'unknown error'}`);
73
+ }
74
+ if (!cachedTreeSitter) {
75
+ throw new Error('tree-sitter module not loaded');
76
+ }
77
+ return cachedTreeSitter;
78
+ }
79
+ /**
80
+ * Create a new tree-sitter parser instance configured for PHP.
81
+ *
82
+ * @returns Configured TreeSitter parser
83
+ * @throws Error if tree-sitter-php is not available
84
+ */
85
+ export function createPhpParser() {
86
+ if (!isPhpTreeSitterAvailable()) {
87
+ throw new Error(`tree-sitter-php is not available: ${loadingError ?? 'unknown error'}`);
88
+ }
89
+ if (!cachedTreeSitter) {
90
+ throw new Error('tree-sitter module not loaded');
91
+ }
92
+ const Parser = cachedTreeSitter;
93
+ const language = getPhpLanguage();
94
+ const parser = new Parser();
95
+ parser.setLanguage(language);
96
+ return parser;
97
+ }
98
+ /**
99
+ * Get the loading error message if tree-sitter-php failed to load.
100
+ *
101
+ * @returns Error message or null if no error
102
+ */
103
+ export function getPhpLoadingError() {
104
+ // Ensure we've attempted to load
105
+ isPhpTreeSitterAvailable();
106
+ return loadingError;
107
+ }
108
+ /**
109
+ * Reset the loader state (useful for testing).
110
+ */
111
+ export function resetPhpLoader() {
112
+ phpAvailable = null;
113
+ cachedTreeSitter = null;
114
+ cachedPhpLanguage = null;
115
+ loadingError = null;
116
+ }
117
+ // ============================================
118
+ // Internal Functions
119
+ // ============================================
120
+ /**
121
+ * Attempt to load tree-sitter and tree-sitter-php.
122
+ *
123
+ * @throws Error if loading fails
124
+ */
125
+ function loadPhpTreeSitter() {
126
+ // Skip if already loaded
127
+ if (cachedTreeSitter && cachedPhpLanguage) {
128
+ return;
129
+ }
130
+ try {
131
+ // Dynamic require for optional dependencies
132
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
133
+ cachedTreeSitter = require('tree-sitter');
134
+ }
135
+ catch (error) {
136
+ throw new Error(`Failed to load tree-sitter: ${error instanceof Error ? error.message : 'unknown error'}. ` +
137
+ 'Install with: pnpm add tree-sitter tree-sitter-php');
138
+ }
139
+ try {
140
+ // tree-sitter-php exports an object with php and php_only languages
141
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
142
+ const phpModule = require('tree-sitter-php');
143
+ // Use the 'php' language which includes HTML support
144
+ cachedPhpLanguage = phpModule.php ?? phpModule;
145
+ }
146
+ catch (error) {
147
+ // Clear tree-sitter cache since we can't use it without PHP
148
+ cachedTreeSitter = null;
149
+ throw new Error(`Failed to load tree-sitter-php: ${error instanceof Error ? error.message : 'unknown error'}. ` +
150
+ 'Install with: pnpm add tree-sitter-php');
151
+ }
152
+ logDebug('tree-sitter and tree-sitter-php loaded successfully');
153
+ }
154
+ /**
155
+ * Log debug message if debug mode is enabled.
156
+ *
157
+ * @param message - Message to log
158
+ */
159
+ function logDebug(message) {
160
+ if (process.env['DRIFT_PARSER_DEBUG'] === 'true') {
161
+ console.debug(`[php-loader] ${message}`);
162
+ }
163
+ }
164
+ //# sourceMappingURL=php-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"php-loader.js","sourceRoot":"","sources":["../../../src/parsers/tree-sitter/php-loader.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAG5C,gDAAgD;AAChD,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AAE/C,+CAA+C;AAC/C,eAAe;AACf,+CAA+C;AAE/C,2CAA2C;AAC3C,IAAI,YAAY,GAAmB,IAAI,CAAC;AAExC,gCAAgC;AAChC,IAAI,gBAAgB,GAAwC,IAAI,CAAC;AAEjE,0BAA0B;AAC1B,IAAI,iBAAiB,GAA8B,IAAI,CAAC;AAExD,mCAAmC;AACnC,IAAI,YAAY,GAAkB,IAAI,CAAC;AAEvC,+CAA+C;AAC/C,aAAa;AACb,+CAA+C;AAE/C;;;;;;;GAOG;AACH,MAAM,UAAU,wBAAwB;IACtC,IAAI,YAAY,KAAK,IAAI,EAAE,CAAC;QAC1B,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,IAAI,CAAC;QACH,iBAAiB,EAAE,CAAC;QACpB,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,YAAY,GAAG,KAAK,CAAC;QACrB,YAAY,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,uCAAuC,CAAC;QAChG,QAAQ,CAAC,kCAAkC,YAAY,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,CAAC,wBAAwB,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,qCAAqC,YAAY,IAAI,eAAe,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB;IAC9B,IAAI,CAAC,wBAAwB,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,qCAAqC,YAAY,IAAI,eAAe,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,CAAC,wBAAwB,EAAE,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,qCAAqC,YAAY,IAAI,eAAe,EAAE,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACtB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC;IAChC,MAAM,QAAQ,GAAG,cAAc,EAAE,CAAC;IAElC,MAAM,MAAM,GAAG,IAAI,MAAM,EAAE,CAAC;IAC5B,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAE7B,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,iCAAiC;IACjC,wBAAwB,EAAE,CAAC;IAC3B,OAAO,YAAY,CAAC;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,YAAY,GAAG,IAAI,CAAC;IACpB,gBAAgB,GAAG,IAAI,CAAC;IACxB,iBAAiB,GAAG,IAAI,CAAC;IACzB,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC;AAED,+CAA+C;AAC/C,qBAAqB;AACrB,+CAA+C;AAE/C;;;;GAIG;AACH,SAAS,iBAAiB;IACxB,yBAAyB;IACzB,IAAI,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;QAC1C,OAAO;IACT,CAAC;IAED,IAAI,CAAC;QACH,4CAA4C;QAC5C,iEAAiE;QACjE,gBAAgB,GAAG,OAAO,CAAC,aAAa,CAA+B,CAAC;IAC1E,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CACb,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,IAAI;YACzF,oDAAoD,CACvD,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,oEAAoE;QACpE,iEAAiE;QACjE,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,CAA+D,CAAC;QAC3G,qDAAqD;QACrD,iBAAiB,GAAG,SAAS,CAAC,GAAG,IAAI,SAA0C,CAAC;IAClF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,4DAA4D;QAC5D,gBAAgB,GAAG,IAAI,CAAC;QACxB,MAAM,IAAI,KAAK,CACb,mCAAmC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,IAAI;YAC7F,wCAAwC,CAC3C,CAAC;IACJ,CAAC;IAED,QAAQ,CAAC,qDAAqD,CAAC,CAAC;AAClE,CAAC;AAED;;;;GAIG;AACH,SAAS,QAAQ,CAAC,OAAe;IAC/B,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,KAAK,MAAM,EAAE,CAAC;QACjD,OAAO,CAAC,KAAK,CAAC,gBAAgB,OAAO,EAAE,CAAC,CAAC;IAC3C,CAAC;AACH,CAAC"}