@thethracian/oxlint-config 0.2.0 → 0.3.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 (279) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +125 -19
  3. package/dist/codemod-fix/cli.d.ts +3 -0
  4. package/dist/codemod-fix/cli.d.ts.map +1 -0
  5. package/dist/codemod-fix/cli.js +22 -0
  6. package/dist/codemod-fix/cli.js.map +1 -0
  7. package/dist/codemod-fix/index.d.ts +44 -0
  8. package/dist/codemod-fix/index.d.ts.map +1 -0
  9. package/dist/codemod-fix/index.js +110 -0
  10. package/dist/codemod-fix/index.js.map +1 -0
  11. package/dist/codemods/arrow-body-style.d.ts +7 -0
  12. package/dist/codemods/arrow-body-style.d.ts.map +1 -0
  13. package/dist/codemods/arrow-body-style.js +106 -0
  14. package/dist/codemods/arrow-body-style.js.map +1 -0
  15. package/dist/codemods/comment-format.d.ts +24 -0
  16. package/dist/codemods/comment-format.d.ts.map +1 -0
  17. package/dist/codemods/comment-format.js +100 -0
  18. package/dist/codemods/comment-format.js.map +1 -0
  19. package/dist/codemods/explicit-return-types.d.ts +7 -0
  20. package/dist/codemods/explicit-return-types.d.ts.map +1 -0
  21. package/dist/codemods/explicit-return-types.js +350 -0
  22. package/dist/codemods/explicit-return-types.js.map +1 -0
  23. package/dist/codemods/format-file-header.d.ts +7 -0
  24. package/dist/codemods/format-file-header.d.ts.map +1 -0
  25. package/dist/codemods/format-file-header.js +163 -0
  26. package/dist/codemods/format-file-header.js.map +1 -0
  27. package/dist/codemods/format-jsdoc-comments.d.ts +7 -0
  28. package/dist/codemods/format-jsdoc-comments.d.ts.map +1 -0
  29. package/dist/codemods/format-jsdoc-comments.js +129 -0
  30. package/dist/codemods/format-jsdoc-comments.js.map +1 -0
  31. package/dist/codemods/function-declarations.d.ts +7 -0
  32. package/dist/codemods/function-declarations.d.ts.map +1 -0
  33. package/dist/codemods/function-declarations.js +202 -0
  34. package/dist/codemods/function-declarations.js.map +1 -0
  35. package/dist/codemods/inline-export-lists.d.ts +7 -0
  36. package/dist/codemods/inline-export-lists.d.ts.map +1 -0
  37. package/dist/codemods/inline-export-lists.js +168 -0
  38. package/dist/codemods/inline-export-lists.js.map +1 -0
  39. package/dist/codemods/internal-export-docs.d.ts +7 -0
  40. package/dist/codemods/internal-export-docs.d.ts.map +1 -0
  41. package/dist/codemods/internal-export-docs.js +93 -0
  42. package/dist/codemods/internal-export-docs.js.map +1 -0
  43. package/dist/codemods/no-ternary-branch-initializers.d.ts +14 -0
  44. package/dist/codemods/no-ternary-branch-initializers.d.ts.map +1 -0
  45. package/dist/codemods/no-ternary-branch-initializers.js +240 -0
  46. package/dist/codemods/no-ternary-branch-initializers.js.map +1 -0
  47. package/dist/codemods/no-ternary-variable-initializers.d.ts +14 -0
  48. package/dist/codemods/no-ternary-variable-initializers.d.ts.map +1 -0
  49. package/dist/codemods/no-ternary-variable-initializers.js +235 -0
  50. package/dist/codemods/no-ternary-variable-initializers.js.map +1 -0
  51. package/dist/codemods/no-ternary.d.ts +7 -0
  52. package/dist/codemods/no-ternary.d.ts.map +1 -0
  53. package/dist/codemods/no-ternary.js +215 -0
  54. package/dist/codemods/no-ternary.js.map +1 -0
  55. package/dist/codemods/rename-acronyms.d.ts +8 -0
  56. package/dist/codemods/rename-acronyms.d.ts.map +1 -0
  57. package/dist/codemods/rename-acronyms.js +193 -0
  58. package/dist/codemods/rename-acronyms.js.map +1 -0
  59. package/dist/codemods/run.d.ts +2 -0
  60. package/dist/codemods/run.d.ts.map +1 -0
  61. package/dist/codemods/run.js +14 -0
  62. package/dist/codemods/run.js.map +1 -0
  63. package/dist/codemods/sort-imports.d.ts +7 -0
  64. package/dist/codemods/sort-imports.d.ts.map +1 -0
  65. package/dist/codemods/sort-imports.js +235 -0
  66. package/dist/codemods/sort-imports.js.map +1 -0
  67. package/dist/index.d.ts +30 -96
  68. package/dist/index.d.ts.map +1 -1
  69. package/dist/index.js +157 -95
  70. package/dist/index.js.map +1 -1
  71. package/dist/rules/acronym-case.d.ts +7 -3
  72. package/dist/rules/acronym-case.d.ts.map +1 -1
  73. package/dist/rules/acronym-case.js +129 -120
  74. package/dist/rules/acronym-case.js.map +1 -1
  75. package/dist/rules/acronyms-1.d.ts +3 -0
  76. package/dist/rules/acronyms-1.d.ts.map +1 -0
  77. package/dist/rules/acronyms-1.js +407 -0
  78. package/dist/rules/acronyms-1.js.map +1 -0
  79. package/dist/rules/acronyms-2.d.ts +3 -0
  80. package/dist/rules/acronyms-2.d.ts.map +1 -0
  81. package/dist/rules/acronyms-2.js +407 -0
  82. package/dist/rules/acronyms-2.js.map +1 -0
  83. package/dist/rules/acronyms-3.d.ts +3 -0
  84. package/dist/rules/acronyms-3.d.ts.map +1 -0
  85. package/dist/rules/acronyms-3.js +407 -0
  86. package/dist/rules/acronyms-3.js.map +1 -0
  87. package/dist/rules/acronyms-4.d.ts +3 -0
  88. package/dist/rules/acronyms-4.d.ts.map +1 -0
  89. package/dist/rules/acronyms-4.js +377 -0
  90. package/dist/rules/acronyms-4.js.map +1 -0
  91. package/dist/rules/acronyms.d.ts +1 -8
  92. package/dist/rules/acronyms.d.ts.map +1 -1
  93. package/dist/rules/acronyms.js +14 -1578
  94. package/dist/rules/acronyms.js.map +1 -1
  95. package/dist/rules/boolean-prefix.d.ts +11 -2
  96. package/dist/rules/boolean-prefix.d.ts.map +1 -1
  97. package/dist/rules/boolean-prefix.js +95 -59
  98. package/dist/rules/boolean-prefix.js.map +1 -1
  99. package/dist/rules/camel-case-identifiers.d.ts +3 -4
  100. package/dist/rules/camel-case-identifiers.d.ts.map +1 -1
  101. package/dist/rules/camel-case-identifiers.js +59 -40
  102. package/dist/rules/camel-case-identifiers.js.map +1 -1
  103. package/dist/rules/char-class.d.ts +26 -13
  104. package/dist/rules/char-class.d.ts.map +1 -1
  105. package/dist/rules/char-class.js +56 -24
  106. package/dist/rules/char-class.js.map +1 -1
  107. package/dist/rules/diagnostic-guidance.d.ts +91 -0
  108. package/dist/rules/diagnostic-guidance.d.ts.map +1 -0
  109. package/dist/rules/diagnostic-guidance.js +243 -0
  110. package/dist/rules/diagnostic-guidance.js.map +1 -0
  111. package/dist/rules/effect-default-ast.d.ts +89 -0
  112. package/dist/rules/effect-default-ast.d.ts.map +1 -0
  113. package/dist/rules/effect-default-ast.js +208 -0
  114. package/dist/rules/effect-default-ast.js.map +1 -0
  115. package/dist/rules/effect-default-compat-rules.d.ts +76 -0
  116. package/dist/rules/effect-default-compat-rules.d.ts.map +1 -0
  117. package/dist/rules/effect-default-compat-rules.js +270 -0
  118. package/dist/rules/effect-default-compat-rules.js.map +1 -0
  119. package/dist/rules/effect-default-env-rules.d.ts +60 -0
  120. package/dist/rules/effect-default-env-rules.d.ts.map +1 -0
  121. package/dist/rules/effect-default-env-rules.js +259 -0
  122. package/dist/rules/effect-default-env-rules.js.map +1 -0
  123. package/dist/rules/effect-default-fiber-helpers.d.ts +13 -0
  124. package/dist/rules/effect-default-fiber-helpers.d.ts.map +1 -0
  125. package/dist/rules/effect-default-fiber-helpers.js +76 -0
  126. package/dist/rules/effect-default-fiber-helpers.js.map +1 -0
  127. package/dist/rules/effect-default-floating-helpers.d.ts +7 -0
  128. package/dist/rules/effect-default-floating-helpers.d.ts.map +1 -0
  129. package/dist/rules/effect-default-floating-helpers.js +113 -0
  130. package/dist/rules/effect-default-floating-helpers.js.map +1 -0
  131. package/dist/rules/effect-default-helpers.d.ts +8 -32
  132. package/dist/rules/effect-default-helpers.d.ts.map +1 -1
  133. package/dist/rules/effect-default-helpers.js +11 -458
  134. package/dist/rules/effect-default-helpers.js.map +1 -1
  135. package/dist/rules/effect-default-resource-helpers.d.ts +18 -4
  136. package/dist/rules/effect-default-resource-helpers.d.ts.map +1 -1
  137. package/dist/rules/effect-default-resource-helpers.js +30 -13
  138. package/dist/rules/effect-default-resource-helpers.js.map +1 -1
  139. package/dist/rules/effect-default-safety-helpers.d.ts +43 -0
  140. package/dist/rules/effect-default-safety-helpers.d.ts.map +1 -0
  141. package/dist/rules/effect-default-safety-helpers.js +126 -0
  142. package/dist/rules/effect-default-safety-helpers.js.map +1 -0
  143. package/dist/rules/effect-default-scan-helpers.d.ts +43 -0
  144. package/dist/rules/effect-default-scan-helpers.d.ts.map +1 -0
  145. package/dist/rules/effect-default-scan-helpers.js +141 -0
  146. package/dist/rules/effect-default-scan-helpers.js.map +1 -0
  147. package/dist/rules/effect-default-schema-helpers.d.ts +37 -0
  148. package/dist/rules/effect-default-schema-helpers.d.ts.map +1 -0
  149. package/dist/rules/effect-default-schema-helpers.js +104 -0
  150. package/dist/rules/effect-default-schema-helpers.js.map +1 -0
  151. package/dist/rules/effect-default-test-helpers.d.ts +18 -4
  152. package/dist/rules/effect-default-test-helpers.d.ts.map +1 -1
  153. package/dist/rules/effect-default-test-helpers.js +41 -20
  154. package/dist/rules/effect-default-test-helpers.js.map +1 -1
  155. package/dist/rules/effect-default-workflow-helpers.d.ts +91 -0
  156. package/dist/rules/effect-default-workflow-helpers.d.ts.map +1 -0
  157. package/dist/rules/effect-default-workflow-helpers.js +247 -0
  158. package/dist/rules/effect-default-workflow-helpers.js.map +1 -0
  159. package/dist/rules/effect-default.d.ts +1 -1
  160. package/dist/rules/effect-default.d.ts.map +1 -1
  161. package/dist/rules/effect-default.js +198 -637
  162. package/dist/rules/effect-default.js.map +1 -1
  163. package/dist/rules/effect-exported-declarations.d.ts +19 -0
  164. package/dist/rules/effect-exported-declarations.d.ts.map +1 -0
  165. package/dist/rules/effect-exported-declarations.js +237 -0
  166. package/dist/rules/effect-exported-declarations.js.map +1 -0
  167. package/dist/rules/effect-path-options.d.ts +49 -11
  168. package/dist/rules/effect-path-options.d.ts.map +1 -1
  169. package/dist/rules/effect-path-options.js +85 -52
  170. package/dist/rules/effect-path-options.js.map +1 -1
  171. package/dist/rules/effect-rule-aliases.d.ts +55 -0
  172. package/dist/rules/effect-rule-aliases.d.ts.map +1 -0
  173. package/dist/rules/effect-rule-aliases.js +278 -0
  174. package/dist/rules/effect-rule-aliases.js.map +1 -0
  175. package/dist/rules/effect-rule-core.d.ts +46 -24
  176. package/dist/rules/effect-rule-core.d.ts.map +1 -1
  177. package/dist/rules/effect-rule-core.js +263 -303
  178. package/dist/rules/effect-rule-core.js.map +1 -1
  179. package/dist/rules/effect-rule-names.d.ts +12 -3
  180. package/dist/rules/effect-rule-names.d.ts.map +1 -1
  181. package/dist/rules/effect-rule-names.js +15 -3
  182. package/dist/rules/effect-rule-names.js.map +1 -1
  183. package/dist/rules/effect-source-comments.d.ts +7 -0
  184. package/dist/rules/effect-source-comments.d.ts.map +1 -0
  185. package/dist/rules/effect-source-comments.js +227 -0
  186. package/dist/rules/effect-source-comments.js.map +1 -0
  187. package/dist/rules/effect-source-helpers.d.ts +4 -9
  188. package/dist/rules/effect-source-helpers.d.ts.map +1 -1
  189. package/dist/rules/effect-source-helpers.js +7 -333
  190. package/dist/rules/effect-source-helpers.js.map +1 -1
  191. package/dist/rules/effect-source-navigation.d.ts +25 -0
  192. package/dist/rules/effect-source-navigation.d.ts.map +1 -0
  193. package/dist/rules/effect-source-navigation.js +244 -0
  194. package/dist/rules/effect-source-navigation.js.map +1 -0
  195. package/dist/rules/effect-source-scan.d.ts +30 -7
  196. package/dist/rules/effect-source-scan.d.ts.map +1 -1
  197. package/dist/rules/effect-source-scan.js +377 -297
  198. package/dist/rules/effect-source-scan.js.map +1 -1
  199. package/dist/rules/effect-strict-ast-specs.d.ts +8 -0
  200. package/dist/rules/effect-strict-ast-specs.d.ts.map +1 -0
  201. package/dist/rules/effect-strict-ast-specs.js +166 -0
  202. package/dist/rules/effect-strict-ast-specs.js.map +1 -0
  203. package/dist/rules/effect-strict-boundary-helpers.d.ts +25 -0
  204. package/dist/rules/effect-strict-boundary-helpers.d.ts.map +1 -0
  205. package/dist/rules/effect-strict-boundary-helpers.js +127 -0
  206. package/dist/rules/effect-strict-boundary-helpers.js.map +1 -0
  207. package/dist/rules/effect-strict-core-specs.d.ts +8 -0
  208. package/dist/rules/effect-strict-core-specs.d.ts.map +1 -0
  209. package/dist/rules/effect-strict-core-specs.js +334 -0
  210. package/dist/rules/effect-strict-core-specs.js.map +1 -0
  211. package/dist/rules/effect-strict-external-helpers.d.ts +25 -0
  212. package/dist/rules/effect-strict-external-helpers.d.ts.map +1 -0
  213. package/dist/rules/effect-strict-external-helpers.js +87 -0
  214. package/dist/rules/effect-strict-external-helpers.js.map +1 -0
  215. package/dist/rules/effect-strict-helpers.d.ts +75 -33
  216. package/dist/rules/effect-strict-helpers.d.ts.map +1 -1
  217. package/dist/rules/effect-strict-helpers.js +124 -246
  218. package/dist/rules/effect-strict-helpers.js.map +1 -1
  219. package/dist/rules/effect-strict-internals.d.ts +198 -0
  220. package/dist/rules/effect-strict-internals.d.ts.map +1 -0
  221. package/dist/rules/effect-strict-internals.js +477 -0
  222. package/dist/rules/effect-strict-internals.js.map +1 -0
  223. package/dist/rules/effect-strict-segment-helpers.d.ts +79 -0
  224. package/dist/rules/effect-strict-segment-helpers.d.ts.map +1 -0
  225. package/dist/rules/effect-strict-segment-helpers.js +308 -0
  226. package/dist/rules/effect-strict-segment-helpers.js.map +1 -0
  227. package/dist/rules/effect-strict.d.ts +1 -1
  228. package/dist/rules/effect-strict.d.ts.map +1 -1
  229. package/dist/rules/effect-strict.js +10 -661
  230. package/dist/rules/effect-strict.js.map +1 -1
  231. package/dist/rules/max-import-depth.d.ts +2 -2
  232. package/dist/rules/max-import-depth.d.ts.map +1 -1
  233. package/dist/rules/max-import-depth.js +52 -17
  234. package/dist/rules/max-import-depth.js.map +1 -1
  235. package/dist/rules/max-line-length.d.ts +9 -2
  236. package/dist/rules/max-line-length.d.ts.map +1 -1
  237. package/dist/rules/max-line-length.js +62 -7
  238. package/dist/rules/max-line-length.js.map +1 -1
  239. package/dist/rules/no-commented-out-code.d.ts +3 -7
  240. package/dist/rules/no-commented-out-code.d.ts.map +1 -1
  241. package/dist/rules/no-commented-out-code.js +157 -102
  242. package/dist/rules/no-commented-out-code.js.map +1 -1
  243. package/dist/rules/pascal-case-types.d.ts +1 -1
  244. package/dist/rules/pascal-case-types.d.ts.map +1 -1
  245. package/dist/rules/pascal-case-types.js +65 -46
  246. package/dist/rules/pascal-case-types.js.map +1 -1
  247. package/dist/rules/plugin-commented-out-code-rule.d.ts +32 -0
  248. package/dist/rules/plugin-commented-out-code-rule.d.ts.map +1 -0
  249. package/dist/rules/plugin-commented-out-code-rule.js +135 -0
  250. package/dist/rules/plugin-commented-out-code-rule.js.map +1 -0
  251. package/dist/rules/plugin.d.ts +3 -121
  252. package/dist/rules/plugin.d.ts.map +1 -1
  253. package/dist/rules/plugin.js +195 -201
  254. package/dist/rules/plugin.js.map +1 -1
  255. package/dist/rules/private-underscore.d.ts +1 -1
  256. package/dist/rules/private-underscore.d.ts.map +1 -1
  257. package/dist/rules/private-underscore.js +11 -4
  258. package/dist/rules/private-underscore.js.map +1 -1
  259. package/dist/rules/require-file-doc.d.ts +5 -6
  260. package/dist/rules/require-file-doc.d.ts.map +1 -1
  261. package/dist/rules/require-file-doc.js +127 -78
  262. package/dist/rules/require-file-doc.js.map +1 -1
  263. package/dist/rules/require-function-doc-ignored-text.d.ts +7 -0
  264. package/dist/rules/require-function-doc-ignored-text.d.ts.map +1 -0
  265. package/dist/rules/require-function-doc-ignored-text.js +67 -0
  266. package/dist/rules/require-function-doc-ignored-text.js.map +1 -0
  267. package/dist/rules/require-function-doc-local-exports.d.ts +7 -0
  268. package/dist/rules/require-function-doc-local-exports.d.ts.map +1 -0
  269. package/dist/rules/require-function-doc-local-exports.js +114 -0
  270. package/dist/rules/require-function-doc-local-exports.js.map +1 -0
  271. package/dist/rules/require-function-doc.d.ts +3 -18
  272. package/dist/rules/require-function-doc.d.ts.map +1 -1
  273. package/dist/rules/require-function-doc.js +404 -218
  274. package/dist/rules/require-function-doc.js.map +1 -1
  275. package/dist/rules/source-cache.d.ts +19 -0
  276. package/dist/rules/source-cache.d.ts.map +1 -0
  277. package/dist/rules/source-cache.js +63 -0
  278. package/dist/rules/source-cache.js.map +1 -0
  279. package/package.json +15 -10
@@ -0,0 +1,55 @@
1
+ /**
2
+ * Internal helper exported for package-local composition.
3
+ *
4
+ * @internal
5
+ */
6
+ export declare const runtimeCallPattern: RegExp;
7
+ /**
8
+ * Internal helper exported for package-local composition.
9
+ *
10
+ * @internal
11
+ */
12
+ export declare const effectImportAliases: (source: string) => string[];
13
+ /**
14
+ * Internal helper exported for package-local composition.
15
+ *
16
+ * @internal
17
+ */
18
+ export declare const effectAPIAliases: (source: string, APIName: string) => string[];
19
+ /**
20
+ * Internal helper exported for package-local composition.
21
+ *
22
+ * @internal
23
+ */
24
+ export declare const effectFunctionAliases: (source: string, moduleName: string, functionName?: string) => string[];
25
+ /**
26
+ * Internal helper exported for package-local composition.
27
+ *
28
+ * @internal
29
+ */
30
+ export declare const canonicalizeEffectAPIAliases: (source: string) => string;
31
+ /**
32
+ * Internal helper exported for package-local composition.
33
+ *
34
+ * @internal
35
+ */
36
+ export declare const hasRuntimeCall: (source: string) => boolean;
37
+ /**
38
+ * Internal helper exported for package-local composition.
39
+ *
40
+ * @internal
41
+ */
42
+ export declare const hasEffectSignal: (source: string) => boolean;
43
+ /**
44
+ * Internal helper exported for package-local composition.
45
+ *
46
+ * @internal
47
+ */
48
+ export declare const isBoundaryFile: (filename: string | undefined) => boolean;
49
+ /**
50
+ * Internal helper exported for package-local composition.
51
+ *
52
+ * @internal
53
+ */
54
+ export declare const isTestFile: (filename: string | undefined) => boolean;
55
+ //# sourceMappingURL=effect-rule-aliases.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-rule-aliases.d.ts","sourceRoot":"","sources":["../../src/rules/effect-rule-aliases.ts"],"names":[],"mappings":"AAKA;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QACkF,CAAC;AA4IlH;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,GAAI,QAAQ,MAAM,KAAG,MAAM,EAiB1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,EAAE,SAAS,MAAM,KAAG,MAAM,EAqBxE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,GAChC,QAAQ,MAAM,EACd,YAAY,MAAM,EAClB,eAAe,MAAM,KACpB,MAAM,EAaR,CAAC;AAiEF;;;;GAIG;AACH,eAAO,MAAM,4BAA4B,GAAI,QAAQ,MAAM,KAAG,MAiB7D,CAAC;AAoBF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,OAuB/C,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,KAAG,OAmBhD,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,cAAc,GAAI,UAAU,MAAM,GAAG,SAAS,KAAG,OACL,CAAC;AAE1D;;;;GAIG;AACH,eAAO,MAAM,UAAU,GAAI,UAAU,MAAM,GAAG,SAAS,KAAG,OACL,CAAC"}
@@ -0,0 +1,278 @@
1
+ /* -------------------------------------------------------------------------- */
2
+ /* Effect import, alias, and runtime-call helpers for source-backed rules. */
3
+ /* -------------------------------------------------------------------------- */
4
+ import { stripComments, stripCommentsAndStrings } from './effect-source-helpers.js';
5
+ /**
6
+ * Internal helper exported for package-local composition.
7
+ *
8
+ * @internal
9
+ */
10
+ export const runtimeCallPattern = /\b(?:Effect\.(?:runPromise|runPromiseExit|runSync|runSyncExit|runFork)|[A-Za-z_$][\w$]*Runtime\.runMain)\s*\(/;
11
+ const boundaryFilePattern = /(?:^|\/)src\/(?:main|server|cli)\.ts$|\.entry\.ts$/;
12
+ const testFilePattern = /\.(?:test|spec)\.tsx?$/;
13
+ const ALIAS_CACHE_MAX = 256;
14
+ const BOOLEAN_CACHE_MAX = 512;
15
+ const effectAliasCache = new Map();
16
+ const runtimeFunctionAliasCache = new Map();
17
+ const canonicalSourceCache = new Map();
18
+ const effectSignalCache = new Map();
19
+ const runtimeCallCache = new Map();
20
+ const cachedAliases = (cache, source) => cache.get(source);
21
+ const cacheAliases = (cache, source, value) => {
22
+ if (cache.size >= ALIAS_CACHE_MAX) {
23
+ const firstKey = cache.keys().next().value;
24
+ if (firstKey !== undefined) {
25
+ cache.delete(firstKey);
26
+ }
27
+ }
28
+ cache.set(source, value);
29
+ return value;
30
+ };
31
+ const cachedBoolean = (cache, source) => cache.get(source);
32
+ const cacheBoolean = (cache, source, value) => {
33
+ if (cache.size >= BOOLEAN_CACHE_MAX) {
34
+ const firstKey = cache.keys().next().value;
35
+ if (firstKey !== undefined) {
36
+ cache.delete(firstKey);
37
+ }
38
+ }
39
+ cache.set(source, value);
40
+ return value;
41
+ };
42
+ const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/g, String.raw `\$&`);
43
+ const hasLocalEffectBinding = (source) => /\b(?:const|let|var|function|class|namespace)\s+Effect\b/.test(stripCommentsAndStrings(source));
44
+ const importSpecifierNames = (specifier) => {
45
+ const trimmed = specifier.trim();
46
+ if (trimmed.startsWith('type ')) {
47
+ return undefined;
48
+ }
49
+ const parts = trimmed.split(/\s+as\s+/);
50
+ const importedName = parts[0]?.trim();
51
+ const localName = parts[1]?.trim() ?? importedName;
52
+ if (importedName && localName) {
53
+ return { importedName, localName };
54
+ }
55
+ return undefined;
56
+ };
57
+ const namedEffectImportLists = (source, modulePath = 'effect') => {
58
+ const escapedModule = escapeRegExp(modulePath);
59
+ return [
60
+ ...source.matchAll(new RegExp(`(?:^|\\n)\\s*import\\s+(?!type\\b)\\s*{([^}]+)}\\s*from\\s*['"]${escapedModule}['"]`, 'g')),
61
+ ].map((match) => match[1] ?? '');
62
+ };
63
+ const addMatchingNamedImports = (aliases, importList, predicate) => {
64
+ for (const specifier of importList.split(',')) {
65
+ const names = importSpecifierNames(specifier);
66
+ if (names && predicate(names)) {
67
+ aliases.add(names.localName);
68
+ }
69
+ }
70
+ };
71
+ const effectNamespaceImportPattern = (APIName) => new RegExp(`(?:^|\\n)\\s*import\\s+(?!type\\b)\\*\\s+as\\s+([A-Za-z_$][\\w$]*)\\s+from\\s*['"]effect/${escapeRegExp(APIName)}['"]`, 'g');
72
+ const addRootEffectAliases = (aliases, source) => {
73
+ for (const importList of namedEffectImportLists(source)) {
74
+ addMatchingNamedImports(aliases, importList, (names) => names.importedName === 'Effect');
75
+ if (aliases.size > 0) {
76
+ aliases.add('Effect');
77
+ }
78
+ }
79
+ };
80
+ const addNamespaceEffectAliases = (aliases, source) => {
81
+ for (const match of source.matchAll(/(?:^|\n)\s*import\s+(?!type\b)\*\s+as\s+([A-Za-z_$][\w$]*)\s+from\s*['"]effect(?:\/Effect)?['"]/g)) {
82
+ aliases.add('Effect');
83
+ aliases.add(match[1]);
84
+ }
85
+ };
86
+ const hasAnyEffectImport = (source) => /(?:^|\n)\s*import(?:\s+type)?(?:[\s\S]*?\s+from\s*)?['"](?:effect(?:\/[^'"]+)?|@effect\/[^'"]+)['"]/.test(stripComments(source));
87
+ const hasEffectValueImport = (source) => {
88
+ const commentFreeSource = stripComments(source);
89
+ for (const match of commentFreeSource.matchAll(/(?:^|\n)\s*import\s+(?!type\b)\s*{([^}]+)}\s*from\s*['"]effect['"]/g)) {
90
+ if (match[1]
91
+ .split(',')
92
+ .some((specifier) => importSpecifierNames(specifier)?.importedName === 'Effect')) {
93
+ return true;
94
+ }
95
+ }
96
+ return (/(?:^|\n)\s*import\s+(?!type\b)\*\s+as\s+[A-Za-z_$][\w$]*\s+from\s*['"]effect(?:\/Effect)?['"]/.test(commentFreeSource) || effectFunctionAliases(source, 'Effect').length > 0);
97
+ };
98
+ /**
99
+ * Internal helper exported for package-local composition.
100
+ *
101
+ * @internal
102
+ */
103
+ export const effectImportAliases = (source) => {
104
+ const cachedValue = cachedAliases(effectAliasCache, source);
105
+ if (cachedValue) {
106
+ return cachedValue;
107
+ }
108
+ const aliases = new Set();
109
+ const commentFreeSource = stripComments(source);
110
+ addRootEffectAliases(aliases, commentFreeSource);
111
+ addNamespaceEffectAliases(aliases, commentFreeSource);
112
+ if (aliases.size === 0 && !hasAnyEffectImport(source) && !hasLocalEffectBinding(source)) {
113
+ aliases.add('Effect');
114
+ }
115
+ return cacheAliases(effectAliasCache, source, [...aliases]);
116
+ };
117
+ /**
118
+ * Internal helper exported for package-local composition.
119
+ *
120
+ * @internal
121
+ */
122
+ export const effectAPIAliases = (source, APIName) => {
123
+ const aliases = new Set();
124
+ const commentFreeSource = stripComments(source);
125
+ for (const importList of namedEffectImportLists(commentFreeSource)) {
126
+ addMatchingNamedImports(aliases, importList, (names) => names.importedName === APIName);
127
+ }
128
+ for (const match of commentFreeSource.matchAll(effectNamespaceImportPattern(APIName))) {
129
+ aliases.add(match[1]);
130
+ }
131
+ if (aliases.size === 0 && !hasAnyEffectImport(source)) {
132
+ aliases.add(APIName);
133
+ }
134
+ return [...aliases];
135
+ };
136
+ /**
137
+ * Internal helper exported for package-local composition.
138
+ *
139
+ * @internal
140
+ */
141
+ export const effectFunctionAliases = (source, moduleName, functionName) => {
142
+ const aliases = new Set();
143
+ const commentFreeSource = stripComments(source);
144
+ for (const importList of namedEffectImportLists(commentFreeSource, `effect/${moduleName}`)) {
145
+ addMatchingNamedImports(aliases, importList, (names) => !functionName || names.importedName === functionName);
146
+ }
147
+ return [...aliases];
148
+ };
149
+ const canonicalNames = new Set([
150
+ 'Config',
151
+ 'Context',
152
+ 'Effect',
153
+ 'Fiber',
154
+ 'Layer',
155
+ 'Queue',
156
+ 'Schedule',
157
+ 'Schema',
158
+ 'Scope',
159
+ 'Stream',
160
+ 'TestClock',
161
+ ]);
162
+ const addCanonicalNamedImportAliases = (aliases, importList) => {
163
+ for (const specifier of importList.split(',')) {
164
+ const names = importSpecifierNames(specifier);
165
+ const importedName = names?.importedName;
166
+ const localName = names?.localName;
167
+ if (importedName &&
168
+ localName &&
169
+ canonicalNames.has(importedName) &&
170
+ localName !== importedName) {
171
+ aliases.set(localName, importedName);
172
+ }
173
+ }
174
+ };
175
+ const addCanonicalNamespaceAliases = (aliases, source) => {
176
+ for (const match of source.matchAll(/(?:^|\n)\s*import\s+(?!type\b)\*\s+as\s+([A-Za-z_$][\w$]*)\s+from\s*['"]effect\/([A-Za-z]+)['"]/g)) {
177
+ const [, localName, moduleName] = match;
178
+ if (canonicalNames.has(moduleName) && localName !== moduleName) {
179
+ aliases.set(localName, moduleName);
180
+ }
181
+ }
182
+ };
183
+ const canonicalImportAliases = (source) => {
184
+ const aliases = new Map();
185
+ const commentFreeSource = stripComments(source);
186
+ for (const importList of namedEffectImportLists(commentFreeSource)) {
187
+ addCanonicalNamedImportAliases(aliases, importList);
188
+ }
189
+ addCanonicalNamespaceAliases(aliases, commentFreeSource);
190
+ return aliases;
191
+ };
192
+ const evictCanonicalSourceCache = () => {
193
+ if (canonicalSourceCache.size < ALIAS_CACHE_MAX) {
194
+ return;
195
+ }
196
+ const firstKey = canonicalSourceCache.keys().next().value;
197
+ if (firstKey !== undefined) {
198
+ canonicalSourceCache.delete(firstKey);
199
+ }
200
+ };
201
+ /**
202
+ * Internal helper exported for package-local composition.
203
+ *
204
+ * @internal
205
+ */
206
+ export const canonicalizeEffectAPIAliases = (source) => {
207
+ const cachedValue = canonicalSourceCache.get(source);
208
+ if (cachedValue !== undefined) {
209
+ return cachedValue;
210
+ }
211
+ let canonicalSource = source;
212
+ for (const [localName, canonicalName] of canonicalImportAliases(source)) {
213
+ canonicalSource = canonicalSource.replace(new RegExp(`\\b${escapeRegExp(localName)}\\.`, 'g'), `${canonicalName}.`);
214
+ }
215
+ evictCanonicalSourceCache();
216
+ canonicalSourceCache.set(source, canonicalSource);
217
+ return canonicalSource;
218
+ };
219
+ const runtimeNames = new Set(['runFork', 'runPromise', 'runPromiseExit', 'runSync', 'runSyncExit']);
220
+ const effectRuntimeFunctionAliases = (source) => {
221
+ const cachedValue = cachedAliases(runtimeFunctionAliasCache, source);
222
+ if (cachedValue) {
223
+ return cachedValue;
224
+ }
225
+ const aliases = new Set();
226
+ const commentFreeSource = stripComments(source);
227
+ for (const importList of namedEffectImportLists(commentFreeSource, 'effect/Effect')) {
228
+ addMatchingNamedImports(aliases, importList, (names) => runtimeNames.has(names.importedName));
229
+ }
230
+ return cacheAliases(runtimeFunctionAliasCache, source, [...aliases]);
231
+ };
232
+ /**
233
+ * Internal helper exported for package-local composition.
234
+ *
235
+ * @internal
236
+ */
237
+ export const hasRuntimeCall = (source) => {
238
+ const cachedValue = cachedBoolean(runtimeCallCache, source);
239
+ if (cachedValue !== undefined) {
240
+ return cachedValue;
241
+ }
242
+ const code = stripCommentsAndStrings(source);
243
+ if (runtimeCallPattern.test(code)) {
244
+ return cacheBoolean(runtimeCallCache, source, true);
245
+ }
246
+ return cacheBoolean(runtimeCallCache, source, effectImportAliases(source).some((alias) => new RegExp(`\\b${alias}\\.(?:runPromise|runPromiseExit|runSync|runSyncExit|runFork)\\s*\\(`).test(code)) ||
247
+ effectRuntimeFunctionAliases(source).some((alias) => new RegExp(`\\b${alias}\\s*\\(`).test(code)));
248
+ };
249
+ /**
250
+ * Internal helper exported for package-local composition.
251
+ *
252
+ * @internal
253
+ */
254
+ export const hasEffectSignal = (source) => {
255
+ const cachedValue = cachedBoolean(effectSignalCache, source);
256
+ if (cachedValue !== undefined) {
257
+ return cachedValue;
258
+ }
259
+ if (!source.includes('Effect') && !source.includes('effect')) {
260
+ return cacheBoolean(effectSignalCache, source, false);
261
+ }
262
+ const codeOnly = stripCommentsAndStrings(source);
263
+ return cacheBoolean(effectSignalCache, source, hasEffectValueImport(source) ||
264
+ effectImportAliases(source).some((alias) => new RegExp(`\\b${escapeRegExp(alias)}\\.`, 'u').test(codeOnly)));
265
+ };
266
+ /**
267
+ * Internal helper exported for package-local composition.
268
+ *
269
+ * @internal
270
+ */
271
+ export const isBoundaryFile = (filename) => Boolean(filename && boundaryFilePattern.test(filename));
272
+ /**
273
+ * Internal helper exported for package-local composition.
274
+ *
275
+ * @internal
276
+ */
277
+ export const isTestFile = (filename) => Boolean(filename && testFilePattern.test(filename));
278
+ //# sourceMappingURL=effect-rule-aliases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"effect-rule-aliases.js","sourceRoot":"","sources":["../../src/rules/effect-rule-aliases.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,9 @@
1
- type Context = {
1
+ /**
2
+ * Internal helper exported for package-local composition.
3
+ *
4
+ * @internal
5
+ */
6
+ export interface Context {
2
7
  report: (descriptor: {
3
8
  loc?: {
4
9
  column: number;
@@ -8,45 +13,62 @@ type Context = {
8
13
  node: object;
9
14
  }) => void;
10
15
  filename?: string;
11
- options?: unknown[];
16
+ options?: object[];
12
17
  sourceCode?: {
13
18
  getText?: () => string;
14
19
  text?: string;
15
20
  };
16
- };
17
- type SourceRule = {
21
+ }
22
+ /**
23
+ * Internal helper exported for package-local composition.
24
+ *
25
+ * @internal
26
+ */
27
+ export interface SourceRule {
18
28
  meta?: {
19
- schema?: unknown;
29
+ docs?: {
30
+ description: string;
31
+ };
32
+ schema?: object;
20
33
  type: 'problem';
21
34
  };
22
35
  create: (context: Context) => {
23
36
  [nodeType: string]: ((node: object) => void) | undefined;
24
37
  Program: (node: object) => void;
25
38
  };
26
- };
39
+ createOnce?: (context: Context) => {
40
+ [nodeType: string]: ((node: object) => void) | undefined;
41
+ before?: () => false | void;
42
+ Program: (node: object) => void;
43
+ };
44
+ }
27
45
  type VisitorMap = Record<string, ((node: object) => void) | undefined>;
28
- type RuleSpec = {
46
+ /**
47
+ * Internal helper exported for package-local composition.
48
+ *
49
+ * @internal
50
+ */
51
+ export interface RuleSpec {
29
52
  ast?: (context: Context, source: string) => VisitorMap;
30
53
  name: string;
31
54
  message: string;
32
- countPatterns?: RegExp[];
33
- patterns?: RegExp[];
55
+ countPatterns?: readonly RegExp[];
56
+ patterns?: readonly RegExp[];
57
+ tokenGroups?: readonly (readonly string[])[];
58
+ tokens?: readonly string[];
34
59
  check?: (source: string, context: Context) => boolean | number | {
35
60
  index: number;
36
61
  };
37
- };
38
- type MakeRulesOptions = {
39
- schema?: unknown;
40
- };
41
- declare function makeRules(specs: readonly RuleSpec[], options?: MakeRulesOptions): Record<string, SourceRule>;
42
- declare function hasEffectSignal(source: string): boolean;
43
- declare const runtimeCallPattern: RegExp;
44
- declare function effectImportAliases(source: string): string[];
45
- declare function effectApiAliases(source: string, apiName: string): string[];
46
- declare function effectFunctionAliases(source: string, moduleName: string, functionName?: string): string[];
47
- declare function hasRuntimeCall(source: string): boolean;
48
- declare function isBoundaryFile(filename: string | undefined): boolean;
49
- declare function isTestFile(filename: string | undefined): boolean;
50
- export { hasEffectSignal, effectApiAliases, effectFunctionAliases, effectImportAliases, hasRuntimeCall, isBoundaryFile, isTestFile, makeRules, runtimeCallPattern, };
51
- export type { Context, RuleSpec, SourceRule };
62
+ }
63
+ interface MakeRulesOptions {
64
+ defaultTokens?: readonly string[];
65
+ schema?: object;
66
+ }
67
+ /**
68
+ * Internal helper exported for package-local composition.
69
+ *
70
+ * @internal
71
+ */
72
+ export declare const makeRules: (specs: readonly RuleSpec[], options?: MakeRulesOptions) => Record<string, SourceRule>;
73
+ export { effectAPIAliases, effectFunctionAliases, effectImportAliases, hasEffectSignal, hasRuntimeCall, isBoundaryFile, isTestFile, runtimeCallPattern, } from './effect-rule-aliases';
52
74
  //# sourceMappingURL=effect-rule-core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"effect-rule-core.d.ts","sourceRoot":"","sources":["../../src/rules/effect-rule-core.ts"],"names":[],"mappings":"AAGA,KAAK,OAAO,GAAG;IACb,MAAM,EAAE,CAAC,UAAU,EAAE;QACnB,GAAG,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACvC,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC;QACvB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH,CAAC;AAEF,KAAK,UAAU,GAAG;IAChB,IAAI,CAAC,EAAE;QACL,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,IAAI,EAAE,SAAS,CAAC;KACjB,CAAC;IACF,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK;QAC5B,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;QACzD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;KACjC,CAAC;CACH,CAAC;AAEF,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AAEvE,KAAK,QAAQ,GAAG;IACd,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,UAAU,CAAC;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACpF,CAAC;AAEF,KAAK,gBAAgB,GAAG;IACtB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAyKF,iBAAS,SAAS,CAChB,KAAK,EAAE,SAAS,QAAQ,EAAE,EAC1B,OAAO,GAAE,gBAAqB,GAC7B,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAE5B;AAED,iBAAS,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAQhD;AAED,QAAA,MAAM,kBAAkB,QACyF,CAAC;AAqFlH,iBAAS,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAoCrD;AAED,iBAAS,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,CA6BnE;AAED,iBAAS,qBAAqB,CAC5B,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,EAAE,CAmBV;AA2GD,iBAAS,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAgB/C;AAED,iBAAS,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE7D;AAED,iBAAS,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAEzD;AAED,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,cAAc,EACd,cAAc,EACd,UAAU,EACV,SAAS,EACT,kBAAkB,GACnB,CAAC;AAEF,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"effect-rule-core.d.ts","sourceRoot":"","sources":["../../src/rules/effect-rule-core.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,WAAW,OAAO;IACtB,MAAM,EAAE,CAAC,UAAU,EAAE;QACnB,GAAG,CAAC,EAAE;YAAE,MAAM,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QACvC,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;KACd,KAAK,IAAI,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,UAAU,CAAC,EAAE;QACX,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC;QACvB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE;YACL,WAAW,EAAE,MAAM,CAAC;SACrB,CAAC;QACF,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,SAAS,CAAC;KACjB,CAAC;IACF,MAAM,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK;QAC5B,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;QACzD,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;KACjC,CAAC;IACF,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK;QACjC,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;QACzD,MAAM,CAAC,EAAE,MAAM,KAAK,GAAG,IAAI,CAAC;QAC5B,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;KACjC,CAAC;CACH;AAED,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC,CAAC;AAEvE;;;;GAIG;AACH,MAAM,WAAW,QAAQ;IACvB,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,KAAK,UAAU,CAAC;IACvD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC7B,WAAW,CAAC,EAAE,SAAS,CAAC,SAAS,MAAM,EAAE,CAAC,EAAE,CAAC;IAC7C,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC3B,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,OAAO,GAAG,MAAM,GAAG;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CACpF;AAID,UAAU,gBAAgB;IACxB,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAuYD;;;;GAIG;AACH,eAAO,MAAM,SAAS,GACpB,OAAO,SAAS,QAAQ,EAAE,EAC1B,UAAS,gBAAqB,KAC7B,MAAM,CAAC,MAAM,EAAE,UAAU,CAC0D,CAAC;AAEvF,OAAO,EACL,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,GACnB,MAAM,uBAAuB,CAAC"}