@jesscss/core 2.0.0-alpha.1

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 (423) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +9 -0
  3. package/lib/context.d.ts +352 -0
  4. package/lib/context.d.ts.map +1 -0
  5. package/lib/context.js +636 -0
  6. package/lib/context.js.map +1 -0
  7. package/lib/conversions.d.ts +73 -0
  8. package/lib/conversions.d.ts.map +1 -0
  9. package/lib/conversions.js +253 -0
  10. package/lib/conversions.js.map +1 -0
  11. package/lib/debug-log.d.ts +2 -0
  12. package/lib/debug-log.d.ts.map +1 -0
  13. package/lib/debug-log.js +27 -0
  14. package/lib/debug-log.js.map +1 -0
  15. package/lib/define-function.d.ts +587 -0
  16. package/lib/define-function.d.ts.map +1 -0
  17. package/lib/define-function.js +726 -0
  18. package/lib/define-function.js.map +1 -0
  19. package/lib/deprecation.d.ts +34 -0
  20. package/lib/deprecation.d.ts.map +1 -0
  21. package/lib/deprecation.js +57 -0
  22. package/lib/deprecation.js.map +1 -0
  23. package/lib/index.d.ts +22 -0
  24. package/lib/index.d.ts.map +1 -0
  25. package/lib/index.js +23 -0
  26. package/lib/index.js.map +1 -0
  27. package/lib/jess-error.d.ts +343 -0
  28. package/lib/jess-error.d.ts.map +1 -0
  29. package/lib/jess-error.js +508 -0
  30. package/lib/jess-error.js.map +1 -0
  31. package/lib/logger/deprecation-processing.d.ts +41 -0
  32. package/lib/logger/deprecation-processing.d.ts.map +1 -0
  33. package/lib/logger/deprecation-processing.js +81 -0
  34. package/lib/logger/deprecation-processing.js.map +1 -0
  35. package/lib/logger.d.ts +10 -0
  36. package/lib/logger.d.ts.map +1 -0
  37. package/lib/logger.js +20 -0
  38. package/lib/logger.js.map +1 -0
  39. package/lib/plugin.d.ts +94 -0
  40. package/lib/plugin.d.ts.map +1 -0
  41. package/lib/plugin.js +174 -0
  42. package/lib/plugin.js.map +1 -0
  43. package/lib/tree/ampersand.d.ts +94 -0
  44. package/lib/tree/ampersand.d.ts.map +1 -0
  45. package/lib/tree/ampersand.js +269 -0
  46. package/lib/tree/ampersand.js.map +1 -0
  47. package/lib/tree/any.d.ts +58 -0
  48. package/lib/tree/any.d.ts.map +1 -0
  49. package/lib/tree/any.js +101 -0
  50. package/lib/tree/any.js.map +1 -0
  51. package/lib/tree/at-rule.d.ts +53 -0
  52. package/lib/tree/at-rule.d.ts.map +1 -0
  53. package/lib/tree/at-rule.js +503 -0
  54. package/lib/tree/at-rule.js.map +1 -0
  55. package/lib/tree/block.d.ts +22 -0
  56. package/lib/tree/block.d.ts.map +1 -0
  57. package/lib/tree/block.js +24 -0
  58. package/lib/tree/block.js.map +1 -0
  59. package/lib/tree/bool.d.ts +17 -0
  60. package/lib/tree/bool.d.ts.map +1 -0
  61. package/lib/tree/bool.js +24 -0
  62. package/lib/tree/bool.js.map +1 -0
  63. package/lib/tree/call.d.ts +66 -0
  64. package/lib/tree/call.d.ts.map +1 -0
  65. package/lib/tree/call.js +306 -0
  66. package/lib/tree/call.js.map +1 -0
  67. package/lib/tree/collection.d.ts +30 -0
  68. package/lib/tree/collection.d.ts.map +1 -0
  69. package/lib/tree/collection.js +37 -0
  70. package/lib/tree/collection.js.map +1 -0
  71. package/lib/tree/color.d.ts +101 -0
  72. package/lib/tree/color.d.ts.map +1 -0
  73. package/lib/tree/color.js +513 -0
  74. package/lib/tree/color.js.map +1 -0
  75. package/lib/tree/combinator.d.ts +12 -0
  76. package/lib/tree/combinator.d.ts.map +1 -0
  77. package/lib/tree/combinator.js +8 -0
  78. package/lib/tree/combinator.js.map +1 -0
  79. package/lib/tree/comment.d.ts +20 -0
  80. package/lib/tree/comment.d.ts.map +1 -0
  81. package/lib/tree/comment.js +18 -0
  82. package/lib/tree/comment.js.map +1 -0
  83. package/lib/tree/condition.d.ts +31 -0
  84. package/lib/tree/condition.d.ts.map +1 -0
  85. package/lib/tree/condition.js +103 -0
  86. package/lib/tree/condition.js.map +1 -0
  87. package/lib/tree/control.d.ts +104 -0
  88. package/lib/tree/control.d.ts.map +1 -0
  89. package/lib/tree/control.js +430 -0
  90. package/lib/tree/control.js.map +1 -0
  91. package/lib/tree/declaration-custom.d.ts +18 -0
  92. package/lib/tree/declaration-custom.d.ts.map +1 -0
  93. package/lib/tree/declaration-custom.js +24 -0
  94. package/lib/tree/declaration-custom.js.map +1 -0
  95. package/lib/tree/declaration-var.d.ts +36 -0
  96. package/lib/tree/declaration-var.d.ts.map +1 -0
  97. package/lib/tree/declaration-var.js +63 -0
  98. package/lib/tree/declaration-var.js.map +1 -0
  99. package/lib/tree/declaration.d.ts +78 -0
  100. package/lib/tree/declaration.d.ts.map +1 -0
  101. package/lib/tree/declaration.js +289 -0
  102. package/lib/tree/declaration.js.map +1 -0
  103. package/lib/tree/default-guard.d.ts +15 -0
  104. package/lib/tree/default-guard.d.ts.map +1 -0
  105. package/lib/tree/default-guard.js +19 -0
  106. package/lib/tree/default-guard.js.map +1 -0
  107. package/lib/tree/dimension.d.ts +33 -0
  108. package/lib/tree/dimension.d.ts.map +1 -0
  109. package/lib/tree/dimension.js +291 -0
  110. package/lib/tree/dimension.js.map +1 -0
  111. package/lib/tree/expression.d.ts +24 -0
  112. package/lib/tree/expression.d.ts.map +1 -0
  113. package/lib/tree/expression.js +28 -0
  114. package/lib/tree/expression.js.map +1 -0
  115. package/lib/tree/extend-list.d.ts +23 -0
  116. package/lib/tree/extend-list.d.ts.map +1 -0
  117. package/lib/tree/extend-list.js +20 -0
  118. package/lib/tree/extend-list.js.map +1 -0
  119. package/lib/tree/extend.d.ts +47 -0
  120. package/lib/tree/extend.d.ts.map +1 -0
  121. package/lib/tree/extend.js +292 -0
  122. package/lib/tree/extend.js.map +1 -0
  123. package/lib/tree/function.d.ts +48 -0
  124. package/lib/tree/function.d.ts.map +1 -0
  125. package/lib/tree/function.js +74 -0
  126. package/lib/tree/function.js.map +1 -0
  127. package/lib/tree/import-js.d.ts +35 -0
  128. package/lib/tree/import-js.d.ts.map +1 -0
  129. package/lib/tree/import-js.js +45 -0
  130. package/lib/tree/import-js.js.map +1 -0
  131. package/lib/tree/import-style.d.ts +156 -0
  132. package/lib/tree/import-style.d.ts.map +1 -0
  133. package/lib/tree/import-style.js +556 -0
  134. package/lib/tree/import-style.js.map +1 -0
  135. package/lib/tree/index.d.ts +71 -0
  136. package/lib/tree/index.d.ts.map +1 -0
  137. package/lib/tree/index.js +95 -0
  138. package/lib/tree/index.js.map +1 -0
  139. package/lib/tree/interpolated-reference.d.ts +24 -0
  140. package/lib/tree/interpolated-reference.d.ts.map +1 -0
  141. package/lib/tree/interpolated-reference.js +37 -0
  142. package/lib/tree/interpolated-reference.js.map +1 -0
  143. package/lib/tree/interpolated.d.ts +62 -0
  144. package/lib/tree/interpolated.d.ts.map +1 -0
  145. package/lib/tree/interpolated.js +204 -0
  146. package/lib/tree/interpolated.js.map +1 -0
  147. package/lib/tree/js-array.d.ts +10 -0
  148. package/lib/tree/js-array.d.ts.map +1 -0
  149. package/lib/tree/js-array.js +10 -0
  150. package/lib/tree/js-array.js.map +1 -0
  151. package/lib/tree/js-expr.d.ts +23 -0
  152. package/lib/tree/js-expr.d.ts.map +1 -0
  153. package/lib/tree/js-expr.js +28 -0
  154. package/lib/tree/js-expr.js.map +1 -0
  155. package/lib/tree/js-function.d.ts +20 -0
  156. package/lib/tree/js-function.d.ts.map +1 -0
  157. package/lib/tree/js-function.js +16 -0
  158. package/lib/tree/js-function.js.map +1 -0
  159. package/lib/tree/js-object.d.ts +10 -0
  160. package/lib/tree/js-object.d.ts.map +1 -0
  161. package/lib/tree/js-object.js +10 -0
  162. package/lib/tree/js-object.js.map +1 -0
  163. package/lib/tree/list.d.ts +38 -0
  164. package/lib/tree/list.d.ts.map +1 -0
  165. package/lib/tree/list.js +83 -0
  166. package/lib/tree/list.js.map +1 -0
  167. package/lib/tree/log.d.ts +29 -0
  168. package/lib/tree/log.d.ts.map +1 -0
  169. package/lib/tree/log.js +56 -0
  170. package/lib/tree/log.js.map +1 -0
  171. package/lib/tree/mixin.d.ts +87 -0
  172. package/lib/tree/mixin.d.ts.map +1 -0
  173. package/lib/tree/mixin.js +112 -0
  174. package/lib/tree/mixin.js.map +1 -0
  175. package/lib/tree/negative.d.ts +17 -0
  176. package/lib/tree/negative.d.ts.map +1 -0
  177. package/lib/tree/negative.js +22 -0
  178. package/lib/tree/negative.js.map +1 -0
  179. package/lib/tree/nil.d.ts +31 -0
  180. package/lib/tree/nil.d.ts.map +1 -0
  181. package/lib/tree/nil.js +36 -0
  182. package/lib/tree/nil.js.map +1 -0
  183. package/lib/tree/node-base.d.ts +359 -0
  184. package/lib/tree/node-base.d.ts.map +1 -0
  185. package/lib/tree/node-base.js +884 -0
  186. package/lib/tree/node-base.js.map +1 -0
  187. package/lib/tree/node.d.ts +10 -0
  188. package/lib/tree/node.d.ts.map +1 -0
  189. package/lib/tree/node.js +45 -0
  190. package/lib/tree/node.js.map +1 -0
  191. package/lib/tree/number.d.ts +21 -0
  192. package/lib/tree/number.d.ts.map +1 -0
  193. package/lib/tree/number.js +27 -0
  194. package/lib/tree/number.js.map +1 -0
  195. package/lib/tree/operation.d.ts +26 -0
  196. package/lib/tree/operation.d.ts.map +1 -0
  197. package/lib/tree/operation.js +103 -0
  198. package/lib/tree/operation.js.map +1 -0
  199. package/lib/tree/paren.d.ts +18 -0
  200. package/lib/tree/paren.d.ts.map +1 -0
  201. package/lib/tree/paren.js +86 -0
  202. package/lib/tree/paren.js.map +1 -0
  203. package/lib/tree/query-condition.d.ts +17 -0
  204. package/lib/tree/query-condition.d.ts.map +1 -0
  205. package/lib/tree/query-condition.js +39 -0
  206. package/lib/tree/query-condition.js.map +1 -0
  207. package/lib/tree/quoted.d.ts +27 -0
  208. package/lib/tree/quoted.d.ts.map +1 -0
  209. package/lib/tree/quoted.js +66 -0
  210. package/lib/tree/quoted.js.map +1 -0
  211. package/lib/tree/range.d.ts +33 -0
  212. package/lib/tree/range.d.ts.map +1 -0
  213. package/lib/tree/range.js +47 -0
  214. package/lib/tree/range.js.map +1 -0
  215. package/lib/tree/reference.d.ts +76 -0
  216. package/lib/tree/reference.d.ts.map +1 -0
  217. package/lib/tree/reference.js +521 -0
  218. package/lib/tree/reference.js.map +1 -0
  219. package/lib/tree/rest.d.ts +15 -0
  220. package/lib/tree/rest.d.ts.map +1 -0
  221. package/lib/tree/rest.js +32 -0
  222. package/lib/tree/rest.js.map +1 -0
  223. package/lib/tree/rules-raw.d.ts +17 -0
  224. package/lib/tree/rules-raw.d.ts.map +1 -0
  225. package/lib/tree/rules-raw.js +37 -0
  226. package/lib/tree/rules-raw.js.map +1 -0
  227. package/lib/tree/rules.d.ts +255 -0
  228. package/lib/tree/rules.d.ts.map +1 -0
  229. package/lib/tree/rules.js +2293 -0
  230. package/lib/tree/rules.js.map +1 -0
  231. package/lib/tree/ruleset.d.ts +91 -0
  232. package/lib/tree/ruleset.d.ts.map +1 -0
  233. package/lib/tree/ruleset.js +506 -0
  234. package/lib/tree/ruleset.js.map +1 -0
  235. package/lib/tree/selector-attr.d.ts +31 -0
  236. package/lib/tree/selector-attr.d.ts.map +1 -0
  237. package/lib/tree/selector-attr.js +99 -0
  238. package/lib/tree/selector-attr.js.map +1 -0
  239. package/lib/tree/selector-basic.d.ts +23 -0
  240. package/lib/tree/selector-basic.d.ts.map +1 -0
  241. package/lib/tree/selector-basic.js +34 -0
  242. package/lib/tree/selector-basic.js.map +1 -0
  243. package/lib/tree/selector-capture.d.ts +23 -0
  244. package/lib/tree/selector-capture.d.ts.map +1 -0
  245. package/lib/tree/selector-capture.js +34 -0
  246. package/lib/tree/selector-capture.js.map +1 -0
  247. package/lib/tree/selector-complex.d.ts +40 -0
  248. package/lib/tree/selector-complex.d.ts.map +1 -0
  249. package/lib/tree/selector-complex.js +143 -0
  250. package/lib/tree/selector-complex.js.map +1 -0
  251. package/lib/tree/selector-compound.d.ts +16 -0
  252. package/lib/tree/selector-compound.d.ts.map +1 -0
  253. package/lib/tree/selector-compound.js +114 -0
  254. package/lib/tree/selector-compound.js.map +1 -0
  255. package/lib/tree/selector-interpolated.d.ts +23 -0
  256. package/lib/tree/selector-interpolated.d.ts.map +1 -0
  257. package/lib/tree/selector-interpolated.js +27 -0
  258. package/lib/tree/selector-interpolated.js.map +1 -0
  259. package/lib/tree/selector-list.d.ts +17 -0
  260. package/lib/tree/selector-list.d.ts.map +1 -0
  261. package/lib/tree/selector-list.js +184 -0
  262. package/lib/tree/selector-list.js.map +1 -0
  263. package/lib/tree/selector-pseudo.d.ts +42 -0
  264. package/lib/tree/selector-pseudo.d.ts.map +1 -0
  265. package/lib/tree/selector-pseudo.js +191 -0
  266. package/lib/tree/selector-pseudo.js.map +1 -0
  267. package/lib/tree/selector-simple.d.ts +5 -0
  268. package/lib/tree/selector-simple.d.ts.map +1 -0
  269. package/lib/tree/selector-simple.js +6 -0
  270. package/lib/tree/selector-simple.js.map +1 -0
  271. package/lib/tree/selector.d.ts +43 -0
  272. package/lib/tree/selector.d.ts.map +1 -0
  273. package/lib/tree/selector.js +56 -0
  274. package/lib/tree/selector.js.map +1 -0
  275. package/lib/tree/sequence.d.ts +43 -0
  276. package/lib/tree/sequence.d.ts.map +1 -0
  277. package/lib/tree/sequence.js +148 -0
  278. package/lib/tree/sequence.js.map +1 -0
  279. package/lib/tree/tree.d.ts +87 -0
  280. package/lib/tree/tree.d.ts.map +1 -0
  281. package/lib/tree/tree.js +2 -0
  282. package/lib/tree/tree.js.map +1 -0
  283. package/lib/tree/url.d.ts +18 -0
  284. package/lib/tree/url.d.ts.map +1 -0
  285. package/lib/tree/url.js +35 -0
  286. package/lib/tree/url.js.map +1 -0
  287. package/lib/tree/util/__tests__/debug-log.d.ts +1 -0
  288. package/lib/tree/util/__tests__/debug-log.d.ts.map +1 -0
  289. package/lib/tree/util/__tests__/debug-log.js +36 -0
  290. package/lib/tree/util/__tests__/debug-log.js.map +1 -0
  291. package/lib/tree/util/calculate.d.ts +3 -0
  292. package/lib/tree/util/calculate.d.ts.map +1 -0
  293. package/lib/tree/util/calculate.js +10 -0
  294. package/lib/tree/util/calculate.js.map +1 -0
  295. package/lib/tree/util/cast.d.ts +10 -0
  296. package/lib/tree/util/cast.d.ts.map +1 -0
  297. package/lib/tree/util/cast.js +87 -0
  298. package/lib/tree/util/cast.js.map +1 -0
  299. package/lib/tree/util/cloning.d.ts +4 -0
  300. package/lib/tree/util/cloning.d.ts.map +1 -0
  301. package/lib/tree/util/cloning.js +8 -0
  302. package/lib/tree/util/cloning.js.map +1 -0
  303. package/lib/tree/util/collections.d.ts +57 -0
  304. package/lib/tree/util/collections.d.ts.map +1 -0
  305. package/lib/tree/util/collections.js +136 -0
  306. package/lib/tree/util/collections.js.map +1 -0
  307. package/lib/tree/util/compare.d.ts +11 -0
  308. package/lib/tree/util/compare.d.ts.map +1 -0
  309. package/lib/tree/util/compare.js +89 -0
  310. package/lib/tree/util/compare.js.map +1 -0
  311. package/lib/tree/util/extend-helpers.d.ts +2 -0
  312. package/lib/tree/util/extend-helpers.d.ts.map +1 -0
  313. package/lib/tree/util/extend-helpers.js +2 -0
  314. package/lib/tree/util/extend-helpers.js.map +1 -0
  315. package/lib/tree/util/extend-roots.d.ts +37 -0
  316. package/lib/tree/util/extend-roots.d.ts.map +1 -0
  317. package/lib/tree/util/extend-roots.js +682 -0
  318. package/lib/tree/util/extend-roots.js.map +1 -0
  319. package/lib/tree/util/extend-roots.old.d.ts +132 -0
  320. package/lib/tree/util/extend-roots.old.d.ts.map +1 -0
  321. package/lib/tree/util/extend-roots.old.js +2272 -0
  322. package/lib/tree/util/extend-roots.old.js.map +1 -0
  323. package/lib/tree/util/extend-trace-debug.d.ts +13 -0
  324. package/lib/tree/util/extend-trace-debug.d.ts.map +1 -0
  325. package/lib/tree/util/extend-trace-debug.js +34 -0
  326. package/lib/tree/util/extend-trace-debug.js.map +1 -0
  327. package/lib/tree/util/extend.d.ts +218 -0
  328. package/lib/tree/util/extend.d.ts.map +1 -0
  329. package/lib/tree/util/extend.js +3033 -0
  330. package/lib/tree/util/extend.js.map +1 -0
  331. package/lib/tree/util/find-extendable-locations.d.ts +2 -0
  332. package/lib/tree/util/find-extendable-locations.d.ts.map +1 -0
  333. package/lib/tree/util/find-extendable-locations.js +2 -0
  334. package/lib/tree/util/find-extendable-locations.js.map +1 -0
  335. package/lib/tree/util/format.d.ts +20 -0
  336. package/lib/tree/util/format.d.ts.map +1 -0
  337. package/lib/tree/util/format.js +67 -0
  338. package/lib/tree/util/format.js.map +1 -0
  339. package/lib/tree/util/is-node.d.ts +13 -0
  340. package/lib/tree/util/is-node.d.ts.map +1 -0
  341. package/lib/tree/util/is-node.js +43 -0
  342. package/lib/tree/util/is-node.js.map +1 -0
  343. package/lib/tree/util/print.d.ts +80 -0
  344. package/lib/tree/util/print.d.ts.map +1 -0
  345. package/lib/tree/util/print.js +205 -0
  346. package/lib/tree/util/print.js.map +1 -0
  347. package/lib/tree/util/process-leading-is.d.ts +25 -0
  348. package/lib/tree/util/process-leading-is.d.ts.map +1 -0
  349. package/lib/tree/util/process-leading-is.js +364 -0
  350. package/lib/tree/util/process-leading-is.js.map +1 -0
  351. package/lib/tree/util/recursion-helper.d.ts +15 -0
  352. package/lib/tree/util/recursion-helper.d.ts.map +1 -0
  353. package/lib/tree/util/recursion-helper.js +43 -0
  354. package/lib/tree/util/recursion-helper.js.map +1 -0
  355. package/lib/tree/util/regex.d.ts +4 -0
  356. package/lib/tree/util/regex.d.ts.map +1 -0
  357. package/lib/tree/util/regex.js +4 -0
  358. package/lib/tree/util/regex.js.map +1 -0
  359. package/lib/tree/util/registry-utils.d.ts +192 -0
  360. package/lib/tree/util/registry-utils.d.ts.map +1 -0
  361. package/lib/tree/util/registry-utils.js +1242 -0
  362. package/lib/tree/util/registry-utils.js.map +1 -0
  363. package/lib/tree/util/ruleset-trace.d.ts +4 -0
  364. package/lib/tree/util/ruleset-trace.d.ts.map +1 -0
  365. package/lib/tree/util/ruleset-trace.js +14 -0
  366. package/lib/tree/util/ruleset-trace.js.map +1 -0
  367. package/lib/tree/util/selector-compare.d.ts +2 -0
  368. package/lib/tree/util/selector-compare.d.ts.map +1 -0
  369. package/lib/tree/util/selector-compare.js +2 -0
  370. package/lib/tree/util/selector-compare.js.map +1 -0
  371. package/lib/tree/util/selector-match-core.d.ts +171 -0
  372. package/lib/tree/util/selector-match-core.d.ts.map +1 -0
  373. package/lib/tree/util/selector-match-core.js +1578 -0
  374. package/lib/tree/util/selector-match-core.js.map +1 -0
  375. package/lib/tree/util/selector-utils.d.ts +30 -0
  376. package/lib/tree/util/selector-utils.d.ts.map +1 -0
  377. package/lib/tree/util/selector-utils.js +100 -0
  378. package/lib/tree/util/selector-utils.js.map +1 -0
  379. package/lib/tree/util/serialize-helper.d.ts +13 -0
  380. package/lib/tree/util/serialize-helper.d.ts.map +1 -0
  381. package/lib/tree/util/serialize-helper.js +387 -0
  382. package/lib/tree/util/serialize-helper.js.map +1 -0
  383. package/lib/tree/util/serialize-types.d.ts +9 -0
  384. package/lib/tree/util/serialize-types.d.ts.map +1 -0
  385. package/lib/tree/util/serialize-types.js +216 -0
  386. package/lib/tree/util/serialize-types.js.map +1 -0
  387. package/lib/tree/util/should-operate.d.ts +23 -0
  388. package/lib/tree/util/should-operate.d.ts.map +1 -0
  389. package/lib/tree/util/should-operate.js +46 -0
  390. package/lib/tree/util/should-operate.js.map +1 -0
  391. package/lib/tree/util/sourcemap.d.ts +7 -0
  392. package/lib/tree/util/sourcemap.d.ts.map +1 -0
  393. package/lib/tree/util/sourcemap.js +25 -0
  394. package/lib/tree/util/sourcemap.js.map +1 -0
  395. package/lib/types/config.d.ts +205 -0
  396. package/lib/types/config.d.ts.map +1 -0
  397. package/lib/types/config.js +2 -0
  398. package/lib/types/config.js.map +1 -0
  399. package/lib/types/index.d.ts +15 -0
  400. package/lib/types/index.d.ts.map +1 -0
  401. package/lib/types/index.js +3 -0
  402. package/lib/types/index.js.map +1 -0
  403. package/lib/types/modes.d.ts +24 -0
  404. package/lib/types/modes.d.ts.map +1 -0
  405. package/lib/types/modes.js +2 -0
  406. package/lib/types/modes.js.map +1 -0
  407. package/lib/types.d.ts +61 -0
  408. package/lib/types.d.ts.map +1 -0
  409. package/lib/types.js +2 -0
  410. package/lib/types.js.map +1 -0
  411. package/lib/use-webpack-resolver.d.ts +9 -0
  412. package/lib/use-webpack-resolver.d.ts.map +1 -0
  413. package/lib/use-webpack-resolver.js +41 -0
  414. package/lib/use-webpack-resolver.js.map +1 -0
  415. package/lib/visitor/index.d.ts +136 -0
  416. package/lib/visitor/index.d.ts.map +1 -0
  417. package/lib/visitor/index.js +135 -0
  418. package/lib/visitor/index.js.map +1 -0
  419. package/lib/visitor/less-visitor.d.ts +7 -0
  420. package/lib/visitor/less-visitor.d.ts.map +1 -0
  421. package/lib/visitor/less-visitor.js +7 -0
  422. package/lib/visitor/less-visitor.js.map +1 -0
  423. package/package.json +66 -0
@@ -0,0 +1,508 @@
1
+ // errors.ts
2
+ import path from 'node:path';
3
+ import chalk from 'chalk';
4
+ const TEMPLATES = {
5
+ // Parse/Lex
6
+ 'parse/unexpected-token': {
7
+ summary: 'Unexpected token',
8
+ reason: 'Token "${token}" is not valid here.',
9
+ fix: 'Check for a missing quote/comma or wrong operator.'
10
+ },
11
+ 'parse/unterminated-string': {
12
+ summary: 'Unterminated string',
13
+ reason: 'Missing closing quote.',
14
+ fix: 'Close the string, e.g. url("hero.jpg").'
15
+ },
16
+ 'parse/unexpected-syntax': {
17
+ summary: 'Unexpected syntax',
18
+ reason: 'Expected ${expected}, got ${got}.',
19
+ fix: 'Add the expected token or remove the unexpected one.'
20
+ },
21
+ 'parse/syntax-error': {
22
+ summary: 'Syntax error',
23
+ reason: '${message}',
24
+ fix: 'Check surrounding tokens near this location.'
25
+ },
26
+ // Resolve/Import
27
+ 'resolve/name-not-found': {
28
+ summary: 'Name not found',
29
+ reason: 'Symbol "${symbol}" is undefined in this scope.',
30
+ fix: 'Define "${symbol}" or import a file that provides it.'
31
+ },
32
+ 'import/circular-compose': {
33
+ summary: 'Circular @-compose detected',
34
+ reason: '${chain}',
35
+ fix: 'Break the cycle (extract shared bits and compose that).'
36
+ },
37
+ // Eval
38
+ 'eval/bad-call-arity': {
39
+ summary: 'Bad call: wrong arity',
40
+ reason: '${callee} expects ${expectedCount} args, got ${gotCount}.',
41
+ fix: 'Add/remove arguments to match the signature.'
42
+ },
43
+ 'eval/type-mismatch': {
44
+ summary: 'Type mismatch',
45
+ reason: '${callee} expects ${expected}, got ${got}.',
46
+ fix: 'Pass a ${expected}; convert or choose a compatible value.'
47
+ },
48
+ // Extend
49
+ 'extend/protected-boundary': {
50
+ summary: 'Extend blocked by protected boundary',
51
+ reason: '"${target}" is defined behind a protected compose boundary.',
52
+ fix: 'Move "${target}" to a shared file or create a local shim.'
53
+ },
54
+ 'extend/not-found': {
55
+ summary: 'Extend target "${target}" not found',
56
+ reason: 'No ruleset found matching "${target}" in accessible extend roots.',
57
+ fix: 'Ensure "${target}" exists and is accessible from the current extend root.'
58
+ },
59
+ 'extend/not-accessible': {
60
+ summary: 'Extend target "${target}" not accessible',
61
+ reason: '"${target}" exists but is not accessible from the current extend root (blocked by at-rule or compose boundary).',
62
+ fix: 'Move the extend or the target to a shared extend root, or use a different approach.'
63
+ },
64
+ // Plugin
65
+ 'plugin/unsupported-feature': {
66
+ summary: 'Unsupported feature',
67
+ reason: 'Plugin "${plugin}" does not implement ${feature}.',
68
+ fix: 'Use a supported alternative or enable a fallback.'
69
+ },
70
+ // ---------- Warnings (examples you can expand) ----------
71
+ 'eval/deprecated': {
72
+ summary: 'Deprecated feature',
73
+ reason: '"${what}" is deprecated.',
74
+ fix: 'Use "${use}" instead.'
75
+ },
76
+ 'resolve/unused-variable': {
77
+ summary: 'Unused variable',
78
+ reason: '"${symbol}" is declared but its value is never used.',
79
+ fix: 'Remove it or prefix with "_" to silence.'
80
+ },
81
+ 'selector/duplicate': {
82
+ summary: 'Duplicate selector',
83
+ reason: 'Selector "${selector}" is defined multiple times.',
84
+ fix: 'Consolidate rules or remove the duplicate.'
85
+ }
86
+ };
87
+ /**
88
+ * Replaces `${key}` with values from `meta`. Unset keys render as `<key>`.
89
+ */
90
+ function interpolate(s, meta) {
91
+ return s.replace(/\$\{(\w+)\}/g, (_, k) => String(meta[k] ?? `<${k}>`));
92
+ }
93
+ /* =========================
94
+ * OSC-8 hyperlinks
95
+ * ========================= */
96
+ function osc8(uri, label) {
97
+ return `\x1b]8;;${uri}\x1b\\${label}\x1b]8;;\x1b\\`;
98
+ }
99
+ function supportsLinks() {
100
+ const tty = process.stderr.isTTY && process.env.TERM !== 'dumb';
101
+ if (!tty) {
102
+ return false;
103
+ }
104
+ return Boolean(process.env.TERM_PROGRAM === 'vscode'
105
+ || process.env.ITERM_SESSION_ID
106
+ || process.env.WT_SESSION);
107
+ }
108
+ function linkFor(abs, line, col, label) {
109
+ const uri = `vscode://file/${abs}:${line}:${col}`;
110
+ return supportsLinks() ? osc8(uri, label) : label;
111
+ }
112
+ /* =========================
113
+ * Path labeling (human-short)
114
+ * ========================= */
115
+ function trail(p, n) {
116
+ const parts = p.split(path.sep).filter(Boolean);
117
+ return (parts.length <= n ? parts : ['…', ...parts.slice(parts.length - n)]).join(path.sep);
118
+ }
119
+ function prettyLabel(abs, line, col) {
120
+ const rel = path.relative(process.cwd(), abs);
121
+ const shown = (!rel.startsWith('..') && !path.isAbsolute(rel)) ? rel : trail(abs, 3);
122
+ return `${shown}:${line}:${col}`;
123
+ }
124
+ /* =========================
125
+ * Code-frame utilities
126
+ * ========================= */
127
+ function buildLineStarts(src) {
128
+ const starts = [0];
129
+ for (let i = 0; i < src.length; i++) {
130
+ const ch = src.charCodeAt(i);
131
+ if (ch === 10) {
132
+ starts.push(i + 1);
133
+ }
134
+ else if (ch === 13) {
135
+ if (src.charCodeAt(i + 1) === 10) {
136
+ i++;
137
+ }
138
+ starts.push(i + 1);
139
+ }
140
+ }
141
+ return Uint32Array.from(starts);
142
+ }
143
+ /**
144
+ * Extracts relevant source lines for code frame display.
145
+ * Returns an object with line numbers as keys (1-indexed) and line content as values.
146
+ * Includes the target line and context lines (before/after).
147
+ * @param source - Full source code
148
+ * @param line - Target line number (1-indexed)
149
+ * @param contextLines - Number of context lines before/after (default: 1)
150
+ * @returns Object with line numbers as keys, e.g. { 55: 'before', 56: 'error', 57: 'after' }
151
+ */
152
+ export function extractRelevantLines(source, line, contextLines = 1) {
153
+ if (!source) {
154
+ return undefined;
155
+ }
156
+ // Split source into lines once
157
+ const lines = source.split(/\r?\n/);
158
+ const totalLines = lines.length;
159
+ const targetLine = Math.max(1, Math.min(line, totalLines));
160
+ // Calculate line range (1-indexed)
161
+ const startLine = Math.max(1, targetLine - contextLines);
162
+ const endLine = Math.min(totalLines, targetLine + contextLines);
163
+ // Extract relevant lines
164
+ const result = {};
165
+ for (let i = startLine; i <= endLine; i++) {
166
+ result[i] = lines[i - 1]; // Convert to 0-indexed for array access
167
+ }
168
+ return result;
169
+ }
170
+ function ensureLineStarts(file) {
171
+ if (!file?.source) {
172
+ return undefined;
173
+ }
174
+ // Your file type may already have `lines`; if not, store it there.
175
+ if (!file.lines) {
176
+ file.lines = buildLineStarts(file.source);
177
+ }
178
+ return file.lines;
179
+ }
180
+ function getLine(file, line) {
181
+ const src = file?.source;
182
+ const idx = ensureLineStarts(file);
183
+ if (!src || !idx || line < 1 || line > idx.length) {
184
+ return '';
185
+ }
186
+ const start = idx[line - 1];
187
+ const end = line < idx.length ? idx[line] - 1 : src.length;
188
+ const last = src.charCodeAt(end - 1);
189
+ const realEnd = last === 13 ? end - 1 : end; // trim trailing \r
190
+ return src.slice(start, realEnd);
191
+ }
192
+ function codeFrameFromFile(file, line = 1, col = 1) {
193
+ if (!file?.source) {
194
+ return '';
195
+ }
196
+ ensureLineStarts(file);
197
+ const width = String(line).length;
198
+ const num = (n) => String(n).padStart(width, ' ');
199
+ const caret = ' '.repeat(Math.max(0, col - 1)) + '^';
200
+ const prev = getLine(file, line - 1);
201
+ const curr = getLine(file, line);
202
+ const next = getLine(file, line + 1);
203
+ let out = '';
204
+ if (prev) {
205
+ out += chalk.gray(`${num(line - 1)} | ${prev}\n`);
206
+ }
207
+ out += chalk.bold(`${num(line)} | ${curr}\n`);
208
+ out += chalk.gray(` ${' '.repeat(width)} | `) + chalk.red(caret) + '\n';
209
+ if (next) {
210
+ out += chalk.gray(`${num(line + 1)} | ${next}\n`);
211
+ }
212
+ return out;
213
+ }
214
+ /* =========================
215
+ * Diagnostic (error or warn)
216
+ * ========================= */
217
+ export class JessError extends Error {
218
+ severity = 'error';
219
+ code = 'parse/syntax-error';
220
+ phase = 'parse';
221
+ // Resolved source context (fileObj preferred; filePath is legacy)
222
+ fileObj;
223
+ filePath;
224
+ line = 1;
225
+ column = 1;
226
+ source;
227
+ node; // Store node to extract endLine/endColumn
228
+ reason = '';
229
+ fix = '';
230
+ note;
231
+ errors;
232
+ lexerErrors;
233
+ constructor(init) {
234
+ // Resolve context from ctx/node first, else from explicit fields.
235
+ const fileObj = init.ctx?.file;
236
+ const abs = fileObj?.fullPath ?? init.filePath;
237
+ const line = init.node?.location?.[1] ?? init.line ?? 1;
238
+ const column = init.node?.location?.[2] ?? init.column ?? 1;
239
+ const source = fileObj?.source ?? init.source;
240
+ const meta = init.meta ?? {};
241
+ const t = TEMPLATES[init.code] ?? TEMPLATES['parse/syntax-error'];
242
+ const summary = init.summary ?? interpolate(t.summary, meta);
243
+ const reason = init.reason ?? interpolate(t.reason, meta);
244
+ const fix = init.fix ?? interpolate(t.fix, meta);
245
+ super(summary);
246
+ this.name = 'JessError';
247
+ this.severity = init.severity ?? 'error';
248
+ this.code = init.code;
249
+ this.phase = init.phase;
250
+ this.fileObj = fileObj;
251
+ this.filePath = abs;
252
+ this.line = line;
253
+ this.column = column;
254
+ this.source = source;
255
+ this.node = init.node; // Store node for endLine/endColumn extraction
256
+ this.reason = reason;
257
+ this.fix = fix;
258
+ this.note = init.note;
259
+ this.errors = init.errors;
260
+ this.lexerErrors = init.lexerErrors;
261
+ }
262
+ /** Pretty, clickable string for terminal/Problems panel. */
263
+ toString() {
264
+ const abs = this.fileObj?.fullPath ?? this.filePath;
265
+ const l = this.line ?? 1;
266
+ const c = this.column ?? 1;
267
+ const label = abs ? prettyLabel(abs, l, c) : '(unknown)';
268
+ const clickable = abs ? linkFor(abs, l, c, label) : label;
269
+ const color = this.severity === 'warn' ? chalk.yellow : chalk.red;
270
+ const header = `${color(this.severity)} ${color(this.code)} `
271
+ + `${chalk.gray(`[${this.phase}]`)} ${chalk.cyan(clickable)} `
272
+ + `${chalk.white('— ' + this.message)}`;
273
+ let frame = '';
274
+ if (this.fileObj?.source) {
275
+ frame = codeFrameFromFile(this.fileObj, l, c);
276
+ }
277
+ else if (this.source) {
278
+ // Legacy, slower fallback
279
+ const lines = this.source.split(/\r?\n/);
280
+ const prev = lines[l - 2];
281
+ const curr = lines[l - 1] ?? '';
282
+ const next = lines[l];
283
+ const width = String(l).length;
284
+ const num = (n) => String(n).padStart(width, ' ');
285
+ const caret = ' '.repeat(Math.max(0, c - 1)) + '^';
286
+ if (prev) {
287
+ frame += chalk.gray(`${num(l - 1)} | ${prev}\n`);
288
+ }
289
+ frame += chalk.bold(`${num(l)} | ${curr}\n`);
290
+ frame += chalk.gray(` ${' '.repeat(width)} | `) + chalk.red(caret) + '\n';
291
+ if (next) {
292
+ frame += chalk.gray(`${num(l + 1)} | ${next}\n`);
293
+ }
294
+ }
295
+ const out = [
296
+ header,
297
+ frame && frame.trimEnd(),
298
+ '',
299
+ `Reason: ${this.reason}`,
300
+ `Fix: ${this.fix}`,
301
+ this.note ? `Note: ${this.note}` : undefined,
302
+ (!supportsLinks() && abs) ? chalk.dim(`Path: ${abs}:${l}:${c}`) : undefined
303
+ ]
304
+ .filter(Boolean)
305
+ .join('\n');
306
+ return out;
307
+ }
308
+ }
309
+ /* =========================
310
+ * Printing helpers
311
+ * ========================= */
312
+ // eslint-disable-next-line @typescript-eslint/naming-convention
313
+ const _seen = new Set();
314
+ /**
315
+ * Emits a diagnostic to stderr (or a custom stream).
316
+ * Set `dedupe: true` to suppress repeats from the same location/message.
317
+ */
318
+ export function emit(diag, opts) {
319
+ const stream = opts?.stream ?? process.stderr;
320
+ if (opts?.dedupe) {
321
+ const abs = diag.fileObj?.fullPath ?? diag.filePath ?? '';
322
+ const key = `${diag.severity}|${diag.code}|${abs}|${diag.line}|${diag.column}|${diag.message}`;
323
+ if (_seen.has(key)) {
324
+ return;
325
+ }
326
+ _seen.add(key);
327
+ }
328
+ stream.write(String(diag) + '\n');
329
+ }
330
+ /** Clears the in-process de-duplication set. Useful for tests. */
331
+ export function resetDedupe() {
332
+ _seen.clear();
333
+ }
334
+ /* =========================
335
+ * Factories / Public API
336
+ * ========================= */
337
+ export function makeJessError(init) {
338
+ return new JessError(init);
339
+ }
340
+ /**
341
+ * Primary **error** helpers.
342
+ * Each function returns a `JessError` ready to be thrown or emitted.
343
+ */
344
+ export const ERR = {
345
+ // Parse/Lex
346
+ unexpectedToken(args) {
347
+ return makeJessError({ code: 'parse/unexpected-token', phase: 'parse', ...args });
348
+ },
349
+ unterminatedString(args = {}) {
350
+ return makeJessError({ code: 'parse/unterminated-string', phase: 'parse', ...args });
351
+ },
352
+ // Resolve/Import
353
+ nameNotFound(args) {
354
+ return makeJessError({ code: 'resolve/name-not-found', phase: 'resolve', ...args });
355
+ },
356
+ circularCompose(args) {
357
+ return makeJessError({ code: 'import/circular-compose', phase: 'import', ...args });
358
+ },
359
+ // Eval
360
+ arity(args) {
361
+ return makeJessError({ code: 'eval/bad-call-arity', phase: 'eval', ...args });
362
+ },
363
+ typeMismatch(args) {
364
+ return makeJessError({ code: 'eval/type-mismatch', phase: 'eval', ...args });
365
+ },
366
+ // Extend
367
+ extendBoundary(args) {
368
+ return makeJessError({ code: 'extend/protected-boundary', phase: 'extend', ...args });
369
+ },
370
+ extendNotFound(args) {
371
+ return makeJessError({ code: 'extend/not-found', phase: 'extend', ...args });
372
+ },
373
+ extendNotAccessible(args) {
374
+ return makeJessError({ code: 'extend/not-accessible', phase: 'extend', ...args });
375
+ },
376
+ // Plugin
377
+ pluginUnsupported(args) {
378
+ return makeJessError({ code: 'plugin/unsupported-feature', phase: 'plugin', ...args });
379
+ }
380
+ };
381
+ /**
382
+ * Primary **warning** helpers.
383
+ * Same API shape as `ERR`, but default `severity: 'warn'`.
384
+ * Call `emit(WARN.*(...))` to log without throwing.
385
+ */
386
+ export const WARN = {
387
+ deprecated(args) {
388
+ return makeJessError({ severity: 'warn', code: 'eval/deprecated', phase: 'eval', ...args });
389
+ },
390
+ unusedVar(args) {
391
+ return makeJessError({ severity: 'warn', code: 'resolve/unused-variable', phase: 'resolve', ...args });
392
+ },
393
+ duplicateSelector(args) {
394
+ return makeJessError({ severity: 'warn', code: 'selector/duplicate', phase: 'extend', ...args });
395
+ },
396
+ extendNotFound(args) {
397
+ return makeJessError({ severity: 'warn', code: 'extend/not-found', phase: 'extend', ...args });
398
+ },
399
+ extendNotAccessible(args) {
400
+ return makeJessError({ severity: 'warn', code: 'extend/not-accessible', phase: 'extend', ...args });
401
+ }
402
+ };
403
+ /* =========================
404
+ * Chevrotain adapter
405
+ * ========================= */
406
+ /**
407
+ * Converts a Chevrotain parser/lexer error into a friendly diagnostic.
408
+ * If you pass `ctx`, the error will be clickable and include a code-frame.
409
+ *
410
+ * @param errors Chevrotain recognition errors
411
+ * @param lexerResult Chevrotain lexing result
412
+ * @param filePath Absolute path to the file (legacy fallback)
413
+ * @param source File contents (legacy fallback)
414
+ * @param ctx Optional TreeContext to auto-fill file/line/col/source
415
+ */
416
+ export function getErrorFromParser(errors, lexerErrors, filePath, source, ctx) {
417
+ const error = lexerErrors?.[0] ?? errors[0];
418
+ if (!error) {
419
+ return new JessError({ code: 'parse/syntax-error', phase: 'parse', filePath, source, ctx });
420
+ }
421
+ const isLex = error.name === 'LexerError'
422
+ || ('token' in error && error.lexer);
423
+ const line = 'token' in error
424
+ ? error.token?.startLine ?? error.line
425
+ : error.line;
426
+ const column = 'token' in error
427
+ ? error.token?.startColumn ?? error.column
428
+ : error.column;
429
+ const message = error.message || '';
430
+ let code = 'parse/syntax-error';
431
+ let meta = {};
432
+ if (isLex) {
433
+ code = 'parse/unexpected-token';
434
+ meta = { token: error.char ?? '/' };
435
+ }
436
+ else if (/unterminated|string not closed/i.test(message)) {
437
+ code = 'parse/unterminated-string';
438
+ }
439
+ else if (/expecting/i.test(message)) {
440
+ code = 'parse/unexpected-syntax';
441
+ const m = message.match(/expecting\s+([^,]+).*?but found\s+'?([^']+)'?/i);
442
+ meta = m ? { expected: m[1], got: m[2] } : { expected: 'token', got: 'other' };
443
+ }
444
+ return new JessError({
445
+ code,
446
+ phase: 'parse',
447
+ meta,
448
+ ctx,
449
+ filePath,
450
+ source,
451
+ line: line ?? 1,
452
+ column: column ?? 1,
453
+ errors,
454
+ lexerErrors
455
+ });
456
+ }
457
+ /**
458
+ * Converts a JessError to a normalized ErrorDiagnostic or WarningDiagnostic.
459
+ * Extracts relevant source lines for code frame display.
460
+ */
461
+ export function toDiagnostic(error) {
462
+ // Extract relevant lines from source (error line + context)
463
+ const lines = extractRelevantLines(error.source ?? error.fileObj?.source, error.line);
464
+ // Extract endLine/endColumn from node location if available
465
+ // Location format: [startOffset, startLine, startColumn, endOffset, endLine, endColumn]
466
+ const nodeLocation = error.node?.location;
467
+ const endLine = nodeLocation && nodeLocation.length >= 6
468
+ ? nodeLocation[4]
469
+ : undefined;
470
+ const endColumn = nodeLocation && nodeLocation.length >= 6
471
+ ? nodeLocation[5]
472
+ : undefined;
473
+ // Create file object without source (we only use 'lines' for code frames)
474
+ const file = error.fileObj
475
+ ? {
476
+ name: error.fileObj.name,
477
+ path: error.fileObj.path,
478
+ fullPath: error.fileObj.fullPath
479
+ // Explicitly exclude source - we use 'lines' property instead
480
+ }
481
+ : undefined;
482
+ const base = {
483
+ code: error.code,
484
+ phase: error.phase,
485
+ message: error.message,
486
+ reason: error.reason,
487
+ fix: error.fix,
488
+ note: error.note,
489
+ file,
490
+ filePath: error.filePath,
491
+ line: error.line,
492
+ column: error.column,
493
+ endLine,
494
+ endColumn,
495
+ lines
496
+ };
497
+ if (error.severity === 'error') {
498
+ return {
499
+ ...base,
500
+ errors: error.errors,
501
+ lexerErrors: error.lexerErrors
502
+ };
503
+ }
504
+ else {
505
+ return base;
506
+ }
507
+ }
508
+ //# sourceMappingURL=jess-error.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jess-error.js","sourceRoot":"","sources":["../src/jess-error.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,41 @@
1
+ import type { Deprecation } from '../deprecation.js';
2
+ import type { Logger } from '../logger.js';
3
+ import type { WarningDiagnostic } from '../jess-error.js';
4
+ /**
5
+ * A logger wrapper that provides special handling for deprecation warnings:
6
+ * - Making deprecations fatal (throwing errors)
7
+ * - Limiting repetition (max 5 per deprecation)
8
+ */
9
+ export declare class DeprecationProcessingLogger implements Logger {
10
+ /** A map of how many times each deprecation has been emitted */
11
+ private readonly _warningCounts;
12
+ /** The inner logger to delegate to */
13
+ private readonly _inner;
14
+ /** Deprecation warnings of these types will cause an error to be thrown */
15
+ readonly fatalDeprecations: Set<Deprecation>;
16
+ /** Whether repetitions of the same warning should be limited */
17
+ readonly limitRepetition: boolean;
18
+ constructor(inner: Logger, options?: {
19
+ fatalDeprecations?: Iterable<Deprecation>;
20
+ limitRepetition?: boolean;
21
+ });
22
+ /**
23
+ * Processes a deprecation warning.
24
+ *
25
+ * If the deprecation is in fatalDeprecations, this throws an error.
26
+ * If it's already been warned for MAX_REPETITIONS times and limitRepetition is true, the warning is dropped.
27
+ * Otherwise, this is passed on to the inner logger.
28
+ */
29
+ warnForDeprecation(deprecation: Deprecation, warning: WarningDiagnostic): void;
30
+ /**
31
+ * Prints a warning indicating the number of deprecation warnings that were
32
+ * omitted due to repetition.
33
+ */
34
+ summarize(): void;
35
+ configure?(log: Logger): void;
36
+ log?(...args: any[]): void;
37
+ info?(...args: any[]): void;
38
+ warn?(...args: any[]): void;
39
+ error?(...args: any[]): void;
40
+ }
41
+ //# sourceMappingURL=deprecation-processing.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deprecation-processing.d.ts","sourceRoot":"","sources":["../../src/logger/deprecation-processing.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAQ1D;;;;GAIG;AACH,qBAAa,2BAA4B,YAAW,MAAM;IACxD,gEAAgE;IAChE,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAkC;IAEjE,sCAAsC;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,2EAA2E;IAC3E,QAAQ,CAAC,iBAAiB,EAAE,GAAG,CAAC,WAAW,CAAC,CAAC;IAE7C,gEAAgE;IAChE,QAAQ,CAAC,eAAe,EAAE,OAAO,CAAC;gBAGhC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE;QACP,iBAAiB,CAAC,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC;QAC1C,eAAe,CAAC,EAAE,OAAO,CAAC;KACtB;IAOR;;;;;;OAMG;IACH,kBAAkB,CAChB,WAAW,EAAE,WAAW,EACxB,OAAO,EAAE,iBAAiB,GACzB,IAAI;IAoBP;;;OAGG;IACH,SAAS,IAAI,IAAI;IAejB,SAAS,CAAC,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAI7B,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI1B,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3B,IAAI,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;IAI3B,KAAK,CAAC,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI;CAG7B"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * The maximum number of repetitions of the same deprecation warning
3
+ * that will be emitted before hiding the rest.
4
+ */
5
+ const MAX_REPETITIONS = 5;
6
+ /**
7
+ * A logger wrapper that provides special handling for deprecation warnings:
8
+ * - Making deprecations fatal (throwing errors)
9
+ * - Limiting repetition (max 5 per deprecation)
10
+ */
11
+ export class DeprecationProcessingLogger {
12
+ /** A map of how many times each deprecation has been emitted */
13
+ _warningCounts = new Map();
14
+ /** The inner logger to delegate to */
15
+ _inner;
16
+ /** Deprecation warnings of these types will cause an error to be thrown */
17
+ fatalDeprecations;
18
+ /** Whether repetitions of the same warning should be limited */
19
+ limitRepetition;
20
+ constructor(inner, options = {}) {
21
+ this._inner = inner;
22
+ this.fatalDeprecations = new Set(options.fatalDeprecations ?? []);
23
+ this.limitRepetition = options.limitRepetition ?? true;
24
+ }
25
+ /**
26
+ * Processes a deprecation warning.
27
+ *
28
+ * If the deprecation is in fatalDeprecations, this throws an error.
29
+ * If it's already been warned for MAX_REPETITIONS times and limitRepetition is true, the warning is dropped.
30
+ * Otherwise, this is passed on to the inner logger.
31
+ */
32
+ warnForDeprecation(deprecation, warning) {
33
+ if (this.fatalDeprecations.has(deprecation)) {
34
+ const message = `${warning.message}\n\nThis is only an error because you've set the ${deprecation.id} deprecation to be fatal.\nRemove this setting if you need to keep using this feature.`;
35
+ const error = new Error(message);
36
+ error.name = 'DeprecationError';
37
+ throw error;
38
+ }
39
+ if (this.limitRepetition) {
40
+ const count = (this._warningCounts.get(deprecation) ?? 0) + 1;
41
+ this._warningCounts.set(deprecation, count);
42
+ if (count > MAX_REPETITIONS) {
43
+ return;
44
+ }
45
+ }
46
+ // Pass to inner logger
47
+ this._inner.warn?.(warning.message);
48
+ }
49
+ /**
50
+ * Prints a warning indicating the number of deprecation warnings that were
51
+ * omitted due to repetition.
52
+ */
53
+ summarize() {
54
+ let total = 0;
55
+ for (const [deprecation, count] of this._warningCounts.entries()) {
56
+ if (count > MAX_REPETITIONS) {
57
+ total += count - MAX_REPETITIONS;
58
+ }
59
+ }
60
+ if (total > 0) {
61
+ this._inner.warn?.(`${total} repetitive deprecation warnings omitted.\nRun in verbose mode to see all warnings.`);
62
+ }
63
+ }
64
+ // Delegate other logger methods to inner logger
65
+ configure(log) {
66
+ this._inner.configure?.(log);
67
+ }
68
+ log(...args) {
69
+ this._inner.log?.(...args);
70
+ }
71
+ info(...args) {
72
+ this._inner.info?.(...args);
73
+ }
74
+ warn(...args) {
75
+ this._inner.warn?.(...args);
76
+ }
77
+ error(...args) {
78
+ this._inner.error?.(...args);
79
+ }
80
+ }
81
+ //# sourceMappingURL=deprecation-processing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deprecation-processing.js","sourceRoot":"","sources":["../../src/logger/deprecation-processing.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,eAAe,GAAG,CAAC,CAAC;AAE1B;;;;GAIG;AACH,MAAM,OAAO,2BAA2B;IACtC,gEAAgE;IAC/C,cAAc,GAAG,IAAI,GAAG,EAAuB,CAAC;IAEjE,sCAAsC;IACrB,MAAM,CAAS;IAEhC,2EAA2E;IAClE,iBAAiB,CAAmB;IAE7C,gEAAgE;IACvD,eAAe,CAAU;IAElC,YACE,KAAa,EACb,UAGI,EAAE;QAEN,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,iBAAiB,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAClE,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC;IACzD,CAAC;IAED;;;;;;OAMG;IACH,kBAAkB,CAChB,WAAwB,EACxB,OAA0B;QAE1B,IAAI,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;YAC5C,MAAM,OAAO,GAAG,GAAG,OAAO,CAAC,OAAO,oDAAoD,WAAW,CAAC,EAAE,wFAAwF,CAAC;YAC7L,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,GAAG,kBAAkB,CAAC;YAChC,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;YAC9D,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;YAC5C,IAAI,KAAK,GAAG,eAAe,EAAE,CAAC;gBAC5B,OAAO;YACT,CAAC;QACH,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;IAED;;;OAGG;IACH,SAAS;QACP,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,EAAE,CAAC;YACjE,IAAI,KAAK,GAAG,eAAe,EAAE,CAAC;gBAC5B,KAAK,IAAI,KAAK,GAAG,eAAe,CAAC;YACnC,CAAC;QACH,CAAC;QACD,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAChB,GAAG,KAAK,qFAAqF,CAC9F,CAAC;QACJ,CAAC;IACH,CAAC;IAED,gDAAgD;IAChD,SAAS,CAAE,GAAW;QACpB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;IAC/B,CAAC;IAED,GAAG,CAAE,GAAG,IAAW;QACjB,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC7B,CAAC;IAED,IAAI,CAAE,GAAG,IAAW;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,CAAE,GAAG,IAAW;QAClB,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC9B,CAAC;IAED,KAAK,CAAE,GAAG,IAAW;QACnB,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;IAC/B,CAAC;CACF"}