@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,38 @@
1
+ import { type Context } from '../context.js';
2
+ import { Node } from './node.js';
3
+ import { type PrintOptions } from './util/print.js';
4
+ import { type Operator } from './util/calculate.js';
5
+ export type ListOptions = {
6
+ /**
7
+ * Lists can be separated by comma, semi-colon,
8
+ * or slash, depending on the type of list.
9
+ *
10
+ * @todo - Is there a more CSS-y way to define this?
11
+ */
12
+ sep?: ',' | ';' | '/';
13
+ };
14
+ export interface List<T extends Node = Node> extends Node<T[], ListOptions> {
15
+ eval(context: Context): Promise<this>;
16
+ }
17
+ /**
18
+ * A list of expressions
19
+ *
20
+ * i.e. one, two, three
21
+ * or .sel, #id.class, [attr]
22
+ * or one / two / three
23
+ */
24
+ export declare class List<T extends Node = Node> extends Node<T[], ListOptions> {
25
+ type: string;
26
+ shortType: string;
27
+ get length(): number;
28
+ [Symbol.iterator](): Generator<[number, T], void, unknown>;
29
+ private _valueOf;
30
+ valueOf(): string;
31
+ toTrimmedString(options?: PrintOptions): string;
32
+ compare(other: Node): 0 | 1 | -1 | undefined;
33
+ operate(b: Node, op: Operator, context: Context): List<T>;
34
+ }
35
+ type Params = ConstructorParameters<typeof List>;
36
+ export declare const list: (value: Params[0], options?: Params[1], location?: Params[2], treeContext?: Params[3]) => List;
37
+ export {};
38
+ //# sourceMappingURL=list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../src/tree/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAc,IAAI,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,iBAAiB,CAAC;AAErE,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAGpD,MAAM,MAAM,WAAW,GAAG;IACxB;;;;;OAKG;IACH,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;CACvB,CAAC;AAEF,MAAM,WAAW,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,CAAE,SAAQ,IAAI,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC;IACzE,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACvC;AAED;;;;;;GAMG;AACH,qBAAa,IAAI,CAAC,CAAC,SAAS,IAAI,GAAG,IAAI,CAAE,SAAQ,IAAI,CAAC,CAAC,EAAE,EAAE,WAAW,CAAC;IACrE,IAAI,SAAU;IACd,SAAS,SAAU;IAEnB,IAAI,MAAM,WAET;IAEC,CAAC,MAAM,CAAC,QAAQ,CAAC;IAInB,OAAO,CAAC,QAAQ,CAAqB;IAE5B,OAAO;IAIP,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY;IA4BtC,OAAO,CAAC,KAAK,EAAE,IAAI;IAenB,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;CA2DnE;AAED,KAAK,MAAM,GAAG,qBAAqB,CAAC,OAAO,IAAI,CAAC,CAAC;AAEjD,eAAO,MAAM,IAAI,EAA+B,CAC9C,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,EAChB,OAAO,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EACnB,QAAQ,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,EACpB,WAAW,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC,KACpB,IAAI,CAAC"}
@@ -0,0 +1,83 @@
1
+ import { defineType, Node } from './node.js';
2
+ import { getPrintOptions } from './util/print.js';
3
+ import { compareNodeArray } from './util/compare.js';
4
+ import { LIST_ITEM_TRIM } from './util/regex.js';
5
+ /**
6
+ * A list of expressions
7
+ *
8
+ * i.e. one, two, three
9
+ * or .sel, #id.class, [attr]
10
+ * or one / two / three
11
+ */
12
+ export class List extends Node {
13
+ type = 'List';
14
+ shortType = 'list';
15
+ get length() {
16
+ return this.value.length;
17
+ }
18
+ *[Symbol.iterator]() {
19
+ yield* this.value.entries();
20
+ }
21
+ _valueOf;
22
+ valueOf() {
23
+ return (this._valueOf ??= this.value.map(v => v.valueOf()).join(';'));
24
+ }
25
+ toTrimmedString(options) {
26
+ options = getPrintOptions(options);
27
+ const w = options.writer;
28
+ let { sep = ',' } = this.options ?? {};
29
+ let { value } = this;
30
+ let length = value.length;
31
+ const mark = w.mark();
32
+ if (value.length === 0) {
33
+ return '';
34
+ }
35
+ // Print first item as-is
36
+ let item = value[0];
37
+ let out = w.capture(() => item.toString(options));
38
+ w.add(out.replace(LIST_ITEM_TRIM, ''), item);
39
+ // Subsequent items: emit sep; capture next item to decide spacing precisely
40
+ for (let i = 1; i < length; i++) {
41
+ item = value[i];
42
+ if (sep === '/') {
43
+ w.add(' / ');
44
+ }
45
+ else {
46
+ w.add(`${sep} `);
47
+ }
48
+ out = (w.capture(() => item.toString(options))).replace(LIST_ITEM_TRIM, '');
49
+ w.add(out);
50
+ }
51
+ return w.getSince(mark);
52
+ }
53
+ compare(other) {
54
+ if (other instanceof List) {
55
+ const equalityMode = this.treeContext?.equalityMode ?? 'coerce';
56
+ const result = compareNodeArray(this.value, other.value, equalityMode);
57
+ return result;
58
+ }
59
+ if (other.type === 'Any') {
60
+ const normalize = (s) => s.replace(/;\s*/g, ', ').replace(/\s+/g, ' ').trim();
61
+ const left = normalize(this.toString());
62
+ const right = normalize(other.toString());
63
+ return left === right ? 0 : undefined;
64
+ }
65
+ return undefined;
66
+ }
67
+ operate(b, op, context) {
68
+ if (op !== '+') {
69
+ throw new Error(`List operation "${op}" not supported`);
70
+ }
71
+ let newList = this.maybeClone(context);
72
+ if (b instanceof List) {
73
+ newList.value.push(...b.value);
74
+ }
75
+ else {
76
+ /** @todo - do we need to verify the list type? */
77
+ newList.value.push(b);
78
+ }
79
+ return newList;
80
+ }
81
+ }
82
+ export const list = defineType(List, 'List');
83
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../src/tree/list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ import { type Context } from '../context.js';
2
+ import { Node, type LocationInfo, type NodeOptions, type TreeContext } from './node.js';
3
+ import { Nil } from './nil.js';
4
+ import type { MaybePromise } from '@jesscss/awaitable-pipe';
5
+ export type LogLevel = 'debug' | 'warn' | 'error';
6
+ export type LogValue = {
7
+ level: LogLevel;
8
+ message: Node;
9
+ };
10
+ export interface Log extends Node<LogValue, NodeOptions> {
11
+ eval(context: Context): MaybePromise<Nil>;
12
+ }
13
+ /**
14
+ * A log node for diagnostic at-rules (@debug, @warn, @error).
15
+ * These are compile-time diagnostic directives that should not appear in CSS output.
16
+ */
17
+ export declare class Log extends Node<LogValue, NodeOptions> {
18
+ type: "Log";
19
+ shortType: "log";
20
+ allowRoot: boolean;
21
+ allowRuleRoot: boolean;
22
+ constructor(value: LogValue, options?: NodeOptions, location?: LocationInfo, treeContext?: TreeContext);
23
+ toTrimmedString(): string;
24
+ toString(): string;
25
+ evalNode(context: Context): MaybePromise<Nil>;
26
+ private _logMessage;
27
+ }
28
+ export declare const log: (value?: LogValue | undefined, options?: NodeOptions | undefined, location?: LocationInfo | undefined) => Log;
29
+ //# sourceMappingURL=log.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/tree/log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,IAAI,EAAyB,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,WAAW,CAAC;AAC/G,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAE/B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAE5D,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;AAElD,MAAM,MAAM,QAAQ,GAAG;IACrB,KAAK,EAAE,QAAQ,CAAC;IAChB,OAAO,EAAE,IAAI,CAAC;CACf,CAAC;AAEF,MAAM,WAAW,GAAI,SAAQ,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;IACtD,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;CAC3C;AAED;;;GAGG;AACH,qBAAa,GAAI,SAAQ,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC;IAClD,IAAI,EAAG,KAAK,CAAU;IACtB,SAAS,EAAG,KAAK,CAAU;IAClB,SAAS,UAAQ;IACjB,aAAa,UAAQ;gBAG5B,KAAK,EAAE,QAAQ,EACf,OAAO,CAAC,EAAE,WAAW,EACrB,QAAQ,CAAC,EAAE,YAAY,EACvB,WAAW,CAAC,EAAE,WAAW;IAOlB,eAAe;IAKf,QAAQ;IAIR,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC;IAiBtD,OAAO,CAAC,WAAW;CAgBpB;AAED,eAAO,MAAM,GAAG,+GAAyB,CAAC"}
@@ -0,0 +1,56 @@
1
+ import { Node, F_VISIBLE, defineType } from './node.js';
2
+ import { Nil } from './nil.js';
3
+ import { logger } from '../logger.js';
4
+ /**
5
+ * A log node for diagnostic at-rules (@debug, @warn, @error).
6
+ * These are compile-time diagnostic directives that should not appear in CSS output.
7
+ */
8
+ export class Log extends Node {
9
+ type = 'Log';
10
+ shortType = 'log';
11
+ allowRoot = true;
12
+ allowRuleRoot = true;
13
+ constructor(value, options, location, treeContext) {
14
+ super(value, options, location, treeContext);
15
+ // Log nodes should not be visible (they serialize to empty strings)
16
+ this.removeFlag(F_VISIBLE);
17
+ }
18
+ toTrimmedString() {
19
+ // Log nodes serialize to empty string since they're not supported in Jess syntax
20
+ return '';
21
+ }
22
+ toString() {
23
+ return '';
24
+ }
25
+ evalNode(context) {
26
+ // Evaluate the message expression
27
+ const messageResult = this.value.message.eval(context);
28
+ // Handle async evaluation if needed
29
+ if (messageResult && typeof messageResult.then === 'function') {
30
+ return messageResult.then((evaluatedMessage) => {
31
+ this._logMessage(evaluatedMessage);
32
+ return new Nil();
33
+ });
34
+ }
35
+ // Synchronous evaluation
36
+ this._logMessage(messageResult);
37
+ return new Nil();
38
+ }
39
+ _logMessage(message) {
40
+ const messageStr = String(message);
41
+ const { level } = this.value;
42
+ switch (level) {
43
+ case 'debug':
44
+ logger.log?.(messageStr);
45
+ break;
46
+ case 'warn':
47
+ logger.warn?.(messageStr);
48
+ break;
49
+ case 'error':
50
+ logger.error?.(messageStr);
51
+ break;
52
+ }
53
+ }
54
+ }
55
+ export const log = defineType(Log, 'Log');
56
+ //# sourceMappingURL=log.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"log.js","sourceRoot":"","sources":["../../src/tree/log.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAyD,MAAM,WAAW,CAAC;AAC/G,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AActC;;;GAGG;AACH,MAAM,OAAO,GAAI,SAAQ,IAA2B;IAClD,IAAI,GAAG,KAAc,CAAC;IACtB,SAAS,GAAG,KAAc,CAAC;IAClB,SAAS,GAAG,IAAI,CAAC;IACjB,aAAa,GAAG,IAAI,CAAC;IAE9B,YACE,KAAe,EACf,OAAqB,EACrB,QAAuB,EACvB,WAAyB;QAEzB,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC7C,oEAAoE;QACpE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAC7B,CAAC;IAEQ,eAAe;QACtB,iFAAiF;QACjF,OAAO,EAAE,CAAC;IACZ,CAAC;IAEQ,QAAQ;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;IAEQ,QAAQ,CAAC,OAAgB;QAChC,kCAAkC;QAClC,MAAM,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEvD,oCAAoC;QACpC,IAAI,aAAa,IAAI,OAAQ,aAAqB,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACvE,OAAQ,aAA+B,CAAC,IAAI,CAAC,CAAC,gBAAgB,EAAE,EAAE;gBAChE,IAAI,CAAC,WAAW,CAAC,gBAAgB,CAAC,CAAC;gBACnC,OAAO,IAAI,GAAG,EAAE,CAAC;YACnB,CAAC,CAAC,CAAC;QACL,CAAC;QAED,yBAAyB;QACzB,IAAI,CAAC,WAAW,CAAC,aAAqB,CAAC,CAAC;QACxC,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;IAEO,WAAW,CAAC,OAAa;QAC/B,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAE7B,QAAQ,KAAK,EAAE,CAAC;YACd,KAAK,OAAO;gBACV,MAAM,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,CAAC;gBACzB,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC;gBAC1B,MAAM;YACR,KAAK,OAAO;gBACV,MAAM,CAAC,KAAK,EAAE,CAAC,UAAU,CAAC,CAAC;gBAC3B,MAAM;QACV,CAAC;IACH,CAAC;CACF;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC"}
@@ -0,0 +1,87 @@
1
+ import { Node, type LocationInfo } from './node.js';
2
+ import type { Condition } from './condition.js';
3
+ import { type List } from './list.js';
4
+ import type { Any, AnyRole } from './any.js';
5
+ import type { Rules } from './rules.js';
6
+ import { Interpolated } from './interpolated.js';
7
+ import type { Context, TreeContext } from '../context.js';
8
+ import { type PrintOptions } from './util/print.js';
9
+ import { type MaybePromise } from '@jesscss/awaitable-pipe';
10
+ export interface MixinValue<Name extends AnyRole = 'name'> {
11
+ /**
12
+ * Mixin names can include . or # - in Sass they have to be escaped.
13
+ *
14
+ * Valid mixin names:
15
+ * foo
16
+ * foo.bar
17
+ * foo#bar
18
+ * foo.bar#baz
19
+ * foo#bar.baz
20
+ * -foo
21
+ * _foo (private, from Sass both -foo and _foo are parsed as _foo)
22
+ *
23
+ * @todo - Should anonymous mixins have a different class type?
24
+ */
25
+ name?: Any<Name> | Interpolated<Name>;
26
+ /**
27
+ * Functions can be assigned an expression when parsing,
28
+ * but it will be evaluated as a set of Rules with a scope
29
+ * and an implicit `return`
30
+ */
31
+ rules: Rules;
32
+ /**
33
+ * - A plain node is a kind of value guard.
34
+ * - A name is just a named variable.
35
+ * - A var declaration is a named variable with a default value.
36
+ * - A rest is a rest parameter.
37
+ */
38
+ params?: List<Node>;
39
+ guard?: Condition;
40
+ }
41
+ export type MixinOptions = {
42
+ /** This is a flag that will set during parsing */
43
+ hasDefault?: boolean;
44
+ /**
45
+ * Cannot be overloaded. Written as !my-mixin() in Jess.
46
+ * If multiple mixin matches are found with the same
47
+ * name in a scope, it will throw an error.
48
+ */
49
+ unique?: boolean;
50
+ };
51
+ /**
52
+ * someMixin (arg1; arg2: 10px) {
53
+ * color: black;
54
+ * background-color: white;
55
+ * border-radius: $arg2;
56
+ * }
57
+ *
58
+ *
59
+ * Note that mixin calls are called as JavaScript functions,
60
+ * with either only positional arguments, or a plain object
61
+ * as the first argument, representing named arguments,
62
+ * followed by positional arguments.
63
+ *
64
+ * e.g. `foo($a; $b) { ... }`
65
+ * can be called from JS like:
66
+ * foo(1, 2) or
67
+ * foo({ a: 1, b: 2 }) or
68
+ * foo({ b: 2 }, 1)
69
+ *
70
+ * @todo - Even though we allow a selector as a name.
71
+ */
72
+ export declare class Mixin extends Node<MixinValue, MixinOptions> {
73
+ type: string;
74
+ shortType: string;
75
+ constructor(value: MixinValue, options?: MixinOptions, location?: LocationInfo, context?: TreeContext);
76
+ /** Return a selector-like keySet */
77
+ private _keySet;
78
+ get keySet(): Set<string>;
79
+ toTrimmedString(options?: PrintOptions): string;
80
+ preEval(context: Context): MaybePromise<this>;
81
+ /** Since this is a mixin definition, it's not evaluated until it's called. */
82
+ evalNode(): this;
83
+ }
84
+ type MixinConstructorParams = ConstructorParameters<typeof Mixin>;
85
+ export declare const mixin: (value: MixinValue<AnyRole> | MixinConstructorParams[0], options?: MixinConstructorParams[1], location?: MixinConstructorParams[2], treeContext?: MixinConstructorParams[3]) => Mixin;
86
+ export {};
87
+ //# sourceMappingURL=mixin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mixin.d.ts","sourceRoot":"","sources":["../../src/tree/mixin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,IAAI,EAAc,KAAK,YAAY,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAChD,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,KAAK,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAC7C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACjD,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC1D,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,KAAK,YAAY,EAAc,MAAM,yBAAyB,CAAC;AAExE,MAAM,WAAW,UAAU,CAAC,IAAI,SAAS,OAAO,GAAG,MAAM;IACvD;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IACtC;;;;OAIG;IACH,KAAK,EAAE,KAAK,CAAC;IACb;;;;;OAKG;IACH,MAAM,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IACpB,KAAK,CAAC,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,MAAM,YAAY,GAAG;IACzB,kDAAkD;IAClD,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAGF;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,qBAAa,KAAM,SAAQ,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC;IACvD,IAAI,SAAW;IACf,SAAS,SAAW;gBAER,KAAK,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,YAAY,EAAE,QAAQ,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,EAAE,WAAW;IAOrG,oCAAoC;IACpC,OAAO,CAAC,OAAO,CAA0B;IACzC,IAAI,MAAM,gBAUT;IAEQ,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,MAAM;IAyB/C,OAAO,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC;IAmCtD,8EAA8E;IACrE,QAAQ;CAgDlB;AAED,KAAK,sBAAsB,GAAG,qBAAqB,CAAC,OAAO,KAAK,CAAC,CAAC;AAElE,eAAO,MAAM,KAAK,EAAiC,CACjD,KAAK,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,sBAAsB,CAAC,CAAC,CAAC,EACtD,OAAO,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,EACnC,QAAQ,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,EACpC,WAAW,CAAC,EAAE,sBAAsB,CAAC,CAAC,CAAC,KACpC,KAAK,CAAC"}
@@ -0,0 +1,112 @@
1
+ import { F_VISIBLE, Node, defineType } from './node.js';
2
+ import { Interpolated } from './interpolated.js';
3
+ import { getPrintOptions } from './util/print.js';
4
+ import { isThenable } from '@jesscss/awaitable-pipe';
5
+ // const COMPOUND_REGEX = /[#.]?[-_a-zA-Z\xA0-\uFFFF][-_a-zA-Z0-9\xA0-\uFFFF]*/ug;
6
+ /**
7
+ * someMixin (arg1; arg2: 10px) {
8
+ * color: black;
9
+ * background-color: white;
10
+ * border-radius: $arg2;
11
+ * }
12
+ *
13
+ *
14
+ * Note that mixin calls are called as JavaScript functions,
15
+ * with either only positional arguments, or a plain object
16
+ * as the first argument, representing named arguments,
17
+ * followed by positional arguments.
18
+ *
19
+ * e.g. `foo($a; $b) { ... }`
20
+ * can be called from JS like:
21
+ * foo(1, 2) or
22
+ * foo({ a: 1, b: 2 }) or
23
+ * foo({ b: 2 }, 1)
24
+ *
25
+ * @todo - Even though we allow a selector as a name.
26
+ */
27
+ export class Mixin extends Node {
28
+ type = 'Mixin';
29
+ shortType = 'mixin';
30
+ constructor(value, options, location, context) {
31
+ super(value, options, location, context);
32
+ this.removeFlag(F_VISIBLE);
33
+ }
34
+ // Mixin has preEval method but doesn't need to set flags - preEvaluated is tracked as boolean
35
+ /** Return a selector-like keySet */
36
+ _keySet;
37
+ get keySet() {
38
+ let keySet = this._keySet;
39
+ if (!keySet) {
40
+ let { name } = this.value;
41
+ if (!name) {
42
+ return (this._keySet = new Set());
43
+ }
44
+ keySet = this._keySet = new Set([name.valueOf()]);
45
+ }
46
+ return keySet;
47
+ }
48
+ toTrimmedString(options) {
49
+ options = getPrintOptions(options);
50
+ const w = options.writer;
51
+ let { name, rules, params, guard } = this.value;
52
+ const mark = w.mark();
53
+ w.add(name ? `${name}` : '@');
54
+ if (name || params || guard) {
55
+ w.add('(');
56
+ if (params) {
57
+ params.toString(options);
58
+ }
59
+ w.add(')');
60
+ }
61
+ if (guard) {
62
+ w.add(' when ');
63
+ w.add(`${guard}`);
64
+ }
65
+ if (name || params || guard) {
66
+ w.add(' ');
67
+ }
68
+ // Emit rules directly into shared writer; do not re-add return value
69
+ rules.toBraced(options);
70
+ return w.getSince(mark);
71
+ }
72
+ preEval(context) {
73
+ if (this.preEvaluated) {
74
+ return this;
75
+ }
76
+ // Mixins should NOT pre-evaluate their rules during initial registration.
77
+ // Rules inside mixins should only be pre-evaluated when the mixin is called.
78
+ // So we only handle the name (if interpolated) and mark as preEvaluated,
79
+ // but do NOT call super.preEval() which would pre-evaluate children.
80
+ let node = this.maybeClone(context);
81
+ node.preEvaluated = true;
82
+ node.sourceNode ??= this;
83
+ let { name, rules } = node.value;
84
+ if (context.leakyRules) {
85
+ rules.options.rulesVisibility.Mixin = 'public';
86
+ // Keep Less mixin-definition vars as fallback by default. Call-time scope
87
+ // controls for params/local vars are handled in mixin evaluation paths.
88
+ rules.options.rulesVisibility.VarDeclaration = 'optional';
89
+ }
90
+ else {
91
+ rules.options.rulesVisibility.Mixin = 'private';
92
+ rules.options.rulesVisibility.VarDeclaration = 'private';
93
+ }
94
+ if (name && name instanceof Interpolated) {
95
+ const maybeKey = name.eval(context);
96
+ if (isThenable(maybeKey)) {
97
+ return maybeKey.then((key) => {
98
+ node.value.name = key;
99
+ return node;
100
+ });
101
+ }
102
+ node.value.name = maybeKey;
103
+ }
104
+ return node;
105
+ }
106
+ /** Since this is a mixin definition, it's not evaluated until it's called. */
107
+ evalNode() {
108
+ return this;
109
+ }
110
+ }
111
+ export const mixin = defineType(Mixin, 'Mixin');
112
+ //# sourceMappingURL=mixin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mixin.js","sourceRoot":"","sources":["../../src/tree/mixin.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { Node } from './node.js';
2
+ import type { Context } from '../context.js';
3
+ import { type MaybePromise } from '@jesscss/awaitable-pipe';
4
+ /**
5
+ * The negative sign before a node
6
+ */
7
+ export interface Negative extends Node<Node> {
8
+ eval(context: Context): MaybePromise<Node>;
9
+ }
10
+ export declare class Negative extends Node<Node> {
11
+ type: "Negative";
12
+ shortType: "negative";
13
+ constructor(value: Node, options?: any, location?: any, treeContext?: any);
14
+ evalNode(context: Context): MaybePromise<Node>;
15
+ }
16
+ export declare const negative: (value?: Node<unknown, import("./node-base.js").NodeOptions> | undefined, options?: any, location?: any) => Negative;
17
+ //# sourceMappingURL=negative.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"negative.d.ts","sourceRoot":"","sources":["../../src/tree/negative.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAuC,MAAM,WAAW,CAAC;AACtE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,KAAK,YAAY,EAAiB,MAAM,yBAAyB,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,QAAS,SAAQ,IAAI,CAAC,IAAI,CAAC;IAC1C,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;CAC5C;AAED,qBAAa,QAAS,SAAQ,IAAI,CAAC,IAAI,CAAC;IACtC,IAAI,EAAG,UAAU,CAAU;IAC3B,SAAS,EAAG,UAAU,CAAU;gBAEpB,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,EAAE,GAAG,EAAE,WAAW,CAAC,EAAE,GAAG;IAMhE,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,IAAI,CAAC;CAWxD;AAED,eAAO,MAAM,QAAQ,sHAAmC,CAAC"}
@@ -0,0 +1,22 @@
1
+ import { Node, defineType, F_VISIBLE, F_NON_STATIC } from './node.js';
2
+ import { Dimension } from './dimension.js';
3
+ import { pipe, tryStep } from '@jesscss/awaitable-pipe';
4
+ export class Negative extends Node {
5
+ type = 'Negative';
6
+ shortType = 'negative';
7
+ constructor(value, options, location, treeContext) {
8
+ super(value, options, location, treeContext);
9
+ // Negative operations are always non-static, but can inherit may_async from children
10
+ this.addFlags(F_VISIBLE, F_NON_STATIC);
11
+ }
12
+ evalNode(context) {
13
+ return pipe(() => this.value.eval(context), tryStep((value) => {
14
+ if (!value.operate) {
15
+ throw new TypeError(`Cannot operate on ${value.type}`);
16
+ }
17
+ return value.operate(new Dimension({ number: -1 }), '*', context);
18
+ }, { rethrow: true }));
19
+ }
20
+ }
21
+ export const negative = defineType(Negative, 'Negative');
22
+ //# sourceMappingURL=negative.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"negative.js","sourceRoot":"","sources":["../../src/tree/negative.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC;AAEtE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAqB,IAAI,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAS3E,MAAM,OAAO,QAAS,SAAQ,IAAU;IACtC,IAAI,GAAG,UAAmB,CAAC;IAC3B,SAAS,GAAG,UAAmB,CAAC;IAEhC,YAAY,KAAW,EAAE,OAAa,EAAE,QAAc,EAAE,WAAiB;QACvE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC7C,qFAAqF;QACrF,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;IACzC,CAAC;IAEQ,QAAQ,CAAC,OAAgB;QAChC,OAAO,IAAI,CACT,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAC9B,OAAO,CAAC,CAAC,KAAW,EAAE,EAAE;YACtB,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,IAAI,SAAS,CAAC,qBAAqB,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;YACzD,CAAC;YACD,OAAO,KAAK,CAAC,OAAO,CAAC,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QACpE,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CACtB,CAAC;IACJ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC"}
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Import from node-base to avoid circular dependency.
3
+ * The patching of Node.prototype.nil happens in node.ts
4
+ */
5
+ import { Node, type LocationInfo, type NodeOptions } from './node-base.js';
6
+ import type { Context, TreeContext } from '../context.js';
7
+ export interface Nil extends Node<''> {
8
+ valueOf(): '';
9
+ eval(context: Context): Nil;
10
+ }
11
+ /**
12
+ * A Node type that outputs nothing.
13
+ *
14
+ * We need this for things like rulesets,
15
+ * which need dynamically-linked nodes
16
+ *
17
+ * This is also the default value for declarations like:
18
+ * `$var:;`
19
+ */
20
+ export declare class Nil extends Node<''> {
21
+ type: string;
22
+ shortType: string;
23
+ allowRoot: boolean;
24
+ allowRuleRoot: boolean;
25
+ state: number;
26
+ constructor(value?: any, options?: NodeOptions, location?: LocationInfo, treeContext?: TreeContext);
27
+ toTrimmedString(): string;
28
+ toString(): string;
29
+ }
30
+ export declare const nil: (value?: any, options?: NodeOptions | undefined, location?: LocationInfo | undefined) => Nil;
31
+ //# sourceMappingURL=nil.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nil.d.ts","sourceRoot":"","sources":["../../src/tree/nil.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,IAAI,EAGJ,KAAK,YAAY,EACjB,KAAK,WAAW,EACjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE1D,MAAM,WAAW,GAAI,SAAQ,IAAI,CAAC,EAAE,CAAC;IACnC,OAAO,IAAI,EAAE,CAAC;IACd,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,GAAG,CAAC;CAC7B;AAED;;;;;;;;GAQG;AACH,qBAAa,GAAI,SAAQ,IAAI,CAAC,EAAE,CAAC;IAC/B,IAAI,SAAS;IACb,SAAS,SAAS;IACT,SAAS,UAAQ;IACjB,aAAa,UAAQ;IACrB,KAAK,SAAU;gBAGtB,KAAK,CAAC,EAAE,GAAG,EACX,OAAO,CAAC,EAAE,WAAW,EACrB,QAAQ,CAAC,EAAE,YAAY,EACvB,WAAW,CAAC,EAAE,WAAW;IAQlB,eAAe;IAIf,QAAQ;CAGlB;AAED,eAAO,MAAM,GAAG,8FAAyB,CAAC"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Import from node-base to avoid circular dependency.
3
+ * The patching of Node.prototype.nil happens in node.ts
4
+ */
5
+ import { Node, F_VISIBLE, defineType } from './node-base.js';
6
+ /**
7
+ * A Node type that outputs nothing.
8
+ *
9
+ * We need this for things like rulesets,
10
+ * which need dynamically-linked nodes
11
+ *
12
+ * This is also the default value for declarations like:
13
+ * `$var:;`
14
+ */
15
+ export class Nil extends Node {
16
+ type = 'Nil';
17
+ shortType = 'nil';
18
+ allowRoot = true;
19
+ allowRuleRoot = true;
20
+ state = 0b0000; // 0b0000 means no flags are set
21
+ constructor(value, options, location, treeContext) {
22
+ super('', options, location, treeContext);
23
+ // Nil nodes should not be visible (they serialize to empty strings)
24
+ this.removeFlag(F_VISIBLE);
25
+ // Nil nodes should never render, even if fullRender is set on prototype (e.g., in tests)
26
+ this.fullRender = false;
27
+ }
28
+ toTrimmedString() {
29
+ return '';
30
+ }
31
+ toString() {
32
+ return '';
33
+ }
34
+ }
35
+ export const nil = defineType(Nil, 'Nil');
36
+ //# sourceMappingURL=nil.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nil.js","sourceRoot":"","sources":["../../src/tree/nil.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,IAAI,EACJ,SAAS,EACT,UAAU,EAGX,MAAM,gBAAgB,CAAC;AAQxB;;;;;;;;GAQG;AACH,MAAM,OAAO,GAAI,SAAQ,IAAQ;IAC/B,IAAI,GAAG,KAAK,CAAC;IACb,SAAS,GAAG,KAAK,CAAC;IACT,SAAS,GAAG,IAAI,CAAC;IACjB,aAAa,GAAG,IAAI,CAAC;IACrB,KAAK,GAAG,MAAM,CAAC,CAAC,gCAAgC;IAEzD,YACE,KAAW,EACX,OAAqB,EACrB,QAAuB,EACvB,WAAyB;QACzB,KAAK,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAC1C,oEAAoE;QACpE,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAC3B,yFAAyF;QACzF,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC1B,CAAC;IAEQ,eAAe;QACtB,OAAO,EAAE,CAAC;IACZ,CAAC;IAEQ,QAAQ;QACf,OAAO,EAAE,CAAC;IACZ,CAAC;CACF;AAED,MAAM,CAAC,MAAM,GAAG,GAAG,UAAU,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC"}