@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 @@
1
+ {"version":3,"file":"selector-interpolated.js","sourceRoot":"","sources":["../../src/tree/selector-interpolated.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAStD;;;GAGG;AACH,MAAM,OAAO,oBAAqB,SAAQ,cAA4B;IACpE,IAAI,GAAG,sBAA+B,CAAC;IACvC,SAAS,GAAG,uBAAgC,CAAC;IAE7C,IAAI,OAAO;QACT,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,IAAI;QACN,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC;IAEQ,QAAQ,CAAC,OAAgB;QAChC,OAAO,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAC5C,CAAC;IAEQ,OAAO;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;IAC9B,CAAC;CACF;AAED,MAAM,CAAC,MAAM,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,EAAE,sBAAsB,EAAE,uBAAuB,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { type Context } from '../context.js';
2
+ import { Selector } from './selector.js';
3
+ import { type PrintOptions } from './util/print.js';
4
+ import { type MaybePromise } from '@jesscss/awaitable-pipe';
5
+ /** Constructs */
6
+ export declare class SelectorList extends Selector<Selector[]> {
7
+ type: string;
8
+ shortType: string;
9
+ protected _computeKeySetAndFastReject(): void;
10
+ /** Normalize selectors on separate lines with indentation */
11
+ toTrimmedString(options?: PrintOptions): string;
12
+ valueOf(): string;
13
+ compare(b: Selector): 0 | 1 | -1 | undefined;
14
+ evalNode(context: Context): MaybePromise<SelectorList | Selector>;
15
+ }
16
+ export declare const sellist: (value?: Selector<any, import("./node-base.js").NodeOptions>[] | undefined, options?: import("./node-base.js").NodeOptions | undefined, location?: import("./node-base.js").LocationInfo | undefined) => SelectorList;
17
+ //# sourceMappingURL=selector-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector-list.d.ts","sourceRoot":"","sources":["../../src/tree/selector-list.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,KAAK,YAAY,EAAmC,MAAM,yBAAyB,CAAC;AAI7F,iBAAiB;AACjB,qBAAa,YAAa,SAAQ,QAAQ,CAAC,QAAQ,EAAE,CAAC;IACpD,IAAI,SAAkB;IACtB,SAAS,SAAa;cAEH,2BAA2B,IAAI,IAAI;IAkBtD,6DAA6D;IACpD,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY;IAgFtC,OAAO;IAKP,OAAO,CAAC,CAAC,EAAE,QAAQ,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS;IAW5C,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,YAAY,GAAG,QAAQ,CAAC;CAkE3E;AAED,eAAO,MAAM,OAAO,uNAAsD,CAAC"}
@@ -0,0 +1,184 @@
1
+ import { defineType, F_EXTENDED, F_EXTEND_TARGET } from './node.js';
2
+ import { Selector } from './selector.js';
3
+ import { getEntries } from './util/collections.js';
4
+ import { getPrintOptions } from './util/print.js';
5
+ import { pipe, isThenable, serialForEach } from '@jesscss/awaitable-pipe';
6
+ import { isNode } from './util/is-node.js';
7
+ import { selectorCompare } from './util/compare.js';
8
+ /** Constructs */
9
+ export class SelectorList extends Selector {
10
+ type = 'SelectorList';
11
+ shortType = 'sellist';
12
+ _computeKeySetAndFastReject() {
13
+ let combinedKeySet = new Set();
14
+ let combinedVisibleKeySet = new Set();
15
+ for (const selector of this.value) {
16
+ for (const key of selector.keySet) {
17
+ combinedKeySet.add(key);
18
+ }
19
+ for (const key of selector.visibleKeySet) {
20
+ combinedVisibleKeySet.add(key);
21
+ }
22
+ }
23
+ this._keySet = combinedKeySet;
24
+ this._visibleKeySet = combinedVisibleKeySet;
25
+ // SelectorLists represent alternatives - can't use fast rejection
26
+ this._canFastReject = false;
27
+ }
28
+ /** Normalize selectors on separate lines with indentation */
29
+ toTrimmedString(options) {
30
+ options = getPrintOptions(options);
31
+ const w = options.writer;
32
+ let depth = options.depth;
33
+ let space = ''.padStart(depth * 2);
34
+ // Flatten generated top-level `:is(...)` items into the selector list.
35
+ // This matches Less output expectations when an extend created an :is() and it ended up being
36
+ // the whole selector-list item.
37
+ const value = [];
38
+ for (const item of this.value) {
39
+ // Flatten `:is(a, b)` selector-list items into `a, b`.
40
+ // Also handle `:is(...)` wrapped in a single-item CompoundSelector.
41
+ if (isNode(item, 'PseudoSelector') && item.value.name === ':is') {
42
+ const arg = item.value.arg;
43
+ if (arg && isNode(arg, 'SelectorList')) {
44
+ value.push(...arg.value);
45
+ continue;
46
+ }
47
+ }
48
+ if (isNode(item, 'CompoundSelector') && item.value.length === 1) {
49
+ const only = item.value[0];
50
+ if (isNode(only, 'PseudoSelector') && only.value.name === ':is') {
51
+ const arg = only.value.arg;
52
+ if (arg && isNode(arg, 'SelectorList')) {
53
+ value.push(...arg.value);
54
+ continue;
55
+ }
56
+ }
57
+ }
58
+ if (isNode(item, 'ComplexSelector') && item.value.length === 1) {
59
+ const only = item.value[0];
60
+ if (isNode(only, 'PseudoSelector') && only.value.name === ':is') {
61
+ const arg = only.value.arg;
62
+ if (arg && isNode(arg, 'SelectorList')) {
63
+ value.push(...arg.value);
64
+ continue;
65
+ }
66
+ }
67
+ }
68
+ value.push(item);
69
+ }
70
+ if (options.referenceMode === true
71
+ && options.referenceRenderEnabled === true
72
+ && options.referenceFilterTargets === true) {
73
+ const hasTargetItems = value.some(item => item.hasFlag(F_EXTEND_TARGET));
74
+ if (hasTargetItems) {
75
+ const filtered = value.filter(item => !item.hasFlag(F_EXTEND_TARGET));
76
+ if (filtered.length > 0) {
77
+ value.splice(0, value.length, ...filtered);
78
+ }
79
+ }
80
+ else {
81
+ // Fallback for wrappers that only carry "extended" provenance.
82
+ const extendedOnly = value.filter(item => item.hasFlag(F_EXTENDED));
83
+ if (extendedOnly.length > 0) {
84
+ value.splice(0, value.length, ...extendedOnly);
85
+ }
86
+ }
87
+ }
88
+ let length = value.length;
89
+ if (length === 0) {
90
+ return '';
91
+ }
92
+ const mark = w.mark();
93
+ let item = value[0];
94
+ let out = w.capture(() => item.toString(options));
95
+ w.add(out.trim(), item);
96
+ // Subsequent items: emit sep; capture next item to decide spacing precisely
97
+ for (let i = 1; i < length; i++) {
98
+ item = value[i];
99
+ w.add(`,\n${space}`);
100
+ out = (w.capture(() => item.toString(options))).trim();
101
+ w.add(out);
102
+ }
103
+ return w.getSince(mark);
104
+ }
105
+ valueOf() {
106
+ const itemValues = this.value.map(item => item.valueOf());
107
+ return itemValues.join(',');
108
+ }
109
+ compare(b) {
110
+ if (!isNode(b, 'Selector')) {
111
+ return super.compare(b);
112
+ }
113
+ const semantic = selectorCompare(this, b);
114
+ if (semantic.isEquivalent) {
115
+ return 0;
116
+ }
117
+ return super.compare(b);
118
+ }
119
+ evalNode(context) {
120
+ return pipe(() => {
121
+ const list = this;
122
+ const { value } = list;
123
+ const maybe = serialForEach(Array.from(getEntries(value)), ([item, i]) => {
124
+ const out = item.eval(context);
125
+ if (isThenable(out)) {
126
+ return out.then((res) => {
127
+ value[i] = res;
128
+ return undefined;
129
+ });
130
+ }
131
+ value[i] = out;
132
+ return undefined;
133
+ });
134
+ if (isThenable(maybe)) {
135
+ return maybe.then(() => list);
136
+ }
137
+ return list;
138
+ }, (list) => {
139
+ const { value } = list;
140
+ // Flatten top-level `:is(a, b)` items into the selector list.
141
+ // This is safe in SelectorList context (it is equivalent to `a, b`).
142
+ const flattened = [];
143
+ for (const item of value) {
144
+ if (isNode(item, 'PseudoSelector') && item.value.name === ':is') {
145
+ const arg = item.value.arg;
146
+ if (arg && isNode(arg, 'SelectorList')) {
147
+ flattened.push(...arg.value);
148
+ continue;
149
+ }
150
+ }
151
+ if (isNode(item, 'CompoundSelector') && item.value.length === 1) {
152
+ const only = item.value[0];
153
+ if (isNode(only, 'PseudoSelector') && only.value.name === ':is') {
154
+ const arg = only.value.arg;
155
+ if (arg && isNode(arg, 'SelectorList')) {
156
+ flattened.push(...arg.value);
157
+ continue;
158
+ }
159
+ }
160
+ }
161
+ if (isNode(item, 'ComplexSelector') && item.value.length === 1) {
162
+ const only = item.value[0];
163
+ if (isNode(only, 'PseudoSelector') && only.value.name === ':is') {
164
+ const arg = only.value.arg;
165
+ if (arg && isNode(arg, 'SelectorList')) {
166
+ flattened.push(...arg.value);
167
+ continue;
168
+ }
169
+ }
170
+ }
171
+ flattened.push(item);
172
+ }
173
+ if (flattened.length !== value.length) {
174
+ list.value = flattened;
175
+ }
176
+ if (value.length === 1) {
177
+ return value[0];
178
+ }
179
+ return list;
180
+ });
181
+ }
182
+ }
183
+ export const sellist = defineType(SelectorList, 'SelectorList', 'sellist');
184
+ //# sourceMappingURL=selector-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector-list.js","sourceRoot":"","sources":["../../src/tree/selector-list.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import { type Node } from './node.js';
2
+ import { SimpleSelector } from './selector-simple.js';
3
+ import { type Context } from '../context.js';
4
+ import { Selector } from './selector.js';
5
+ import { type PrintOptions } from './util/print.js';
6
+ import { type MaybePromise } from '@jesscss/awaitable-pipe';
7
+ export type PseudoSelectorValue = {
8
+ /**
9
+ * The name of the pseudo-selector
10
+ * @note - this will contain the `:` prefix,
11
+ * to support `::before` and `::after`
12
+ */
13
+ name: string;
14
+ arg?: Node;
15
+ };
16
+ /**
17
+ * A pseudo selector
18
+ * @see https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements
19
+ * e.g. :hover, :focus, :active
20
+ */
21
+ export declare class PseudoSelector extends SimpleSelector<PseudoSelectorValue> {
22
+ type: string;
23
+ shortType: string;
24
+ get keySet(): Set<string>;
25
+ protected _computeKeySetAndFastReject(): void;
26
+ toTrimmedString(options?: PrintOptions): string;
27
+ /**
28
+ * @todo - This should be vastly simplifiable. For
29
+ *
30
+ * Also, :is()
31
+ */
32
+ valueOf(): string;
33
+ evalNode(context: Context): MaybePromise<PseudoSelector>;
34
+ }
35
+ export declare const pseudo: (value?: PseudoSelectorValue | undefined, options?: import("./node-base.js").NodeOptions | undefined, location?: import("./node-base.js").LocationInfo | undefined) => PseudoSelector;
36
+ /**
37
+ * Convenience function to create a :is() pseudo-selector
38
+ * @param arg The selector that goes inside :is()
39
+ * @returns A PseudoSelector with name ":is" and the provided selector as argument
40
+ */
41
+ export declare function is(arg: Selector): PseudoSelector;
42
+ //# sourceMappingURL=selector-pseudo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector-pseudo.d.ts","sourceRoot":"","sources":["../../src/tree/selector-pseudo.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,IAAI,EACV,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,KAAK,OAAO,EAAE,MAAM,eAAe,CAAC;AAE7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,KAAK,YAAY,EAAmB,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAE,KAAK,YAAY,EAAQ,MAAM,yBAAyB,CAAC;AAMlE,MAAM,MAAM,mBAAmB,GAAG;IAChC;;;;OAIG;IACH,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,IAAI,CAAC;CACZ,CAAC;AAEF;;;;EAIE;AACF,qBAAa,cAAe,SAAQ,cAAc,CAAC,mBAAmB,CAAC;IACrE,IAAI,SAAoB;IACxB,SAAS,SAAY;IAErB,IAAa,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAKjC;cAEkB,2BAA2B,IAAI,IAAI;IAoC7C,eAAe,CAAC,OAAO,CAAC,EAAE,YAAY;IAoB/C;;;;OAIG;IA2CM,OAAO,IAAI,MAAM;IAoBjB,QAAQ,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,cAAc,CAAC;CAkBlE;AA8BD,eAAO,MAAM,MAAM,uLAAqG,CAAC;AAEzH;;;;GAIG;AACH,wBAAgB,EAAE,CAAC,GAAG,EAAE,QAAQ,GAAG,cAAc,CAKhD"}
@@ -0,0 +1,191 @@
1
+ import { defineType } from './node.js';
2
+ import { SimpleSelector } from './selector-simple.js';
3
+ import { isNode } from './util/is-node.js';
4
+ import { getPrintOptions } from './util/print.js';
5
+ import { pipe } from '@jesscss/awaitable-pipe';
6
+ function isSelectorNode(value) {
7
+ return !!value && typeof value === 'object' && value.isSelector === true;
8
+ }
9
+ /**
10
+ * A pseudo selector
11
+ * @see https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors/Pseudo-classes_and_pseudo-elements
12
+ * e.g. :hover, :focus, :active
13
+ */
14
+ export class PseudoSelector extends SimpleSelector {
15
+ type = 'PseudoSelector';
16
+ shortType = 'pseudo';
17
+ get keySet() {
18
+ if (this._keySet === undefined) {
19
+ this._computeKeySetAndFastReject();
20
+ }
21
+ return this._keySet;
22
+ }
23
+ _computeKeySetAndFastReject() {
24
+ const { name, arg } = this.value;
25
+ // Check if this is a pseudo-selector that contains selectors
26
+ const hasSelectorListArg = isNode(arg, 'SelectorList');
27
+ const hasSelectorArg = isSelectorNode(arg);
28
+ if (hasSelectorArg || hasSelectorListArg) {
29
+ if (hasSelectorListArg) {
30
+ // SelectorList argument - union all selector keySets
31
+ let combinedKeySet = new Set();
32
+ let combinedVisibleKeySet = new Set();
33
+ for (const selector of arg.value) {
34
+ combinedKeySet = combinedKeySet.union(selector.keySet);
35
+ combinedVisibleKeySet = combinedVisibleKeySet.union(selector.visibleKeySet);
36
+ }
37
+ // Trust the SelectorList's canFastReject (should be false for alternatives)
38
+ this._keySet = combinedKeySet;
39
+ this._visibleKeySet = combinedVisibleKeySet;
40
+ this._canFastReject = arg.canFastReject;
41
+ }
42
+ else if (hasSelectorArg) {
43
+ // Single Selector argument - use its keySet
44
+ this._keySet = arg.keySet;
45
+ this._visibleKeySet = arg.visibleKeySet;
46
+ // Trust the selector's canFastReject
47
+ this._canFastReject = arg.canFastReject;
48
+ }
49
+ }
50
+ else {
51
+ // For other pseudo-selectors (like :hover, :focus), use valueOf
52
+ this._keySet = new Set([this.valueOf()]);
53
+ this._visibleKeySet = this._keySet;
54
+ // Other pseudo-selectors are safe for fast rejection
55
+ this._canFastReject = true;
56
+ }
57
+ }
58
+ toTrimmedString(options) {
59
+ options = getPrintOptions(options);
60
+ const w = options.writer;
61
+ let { name, arg } = this.value;
62
+ const mark = w.mark();
63
+ w.add(name, this);
64
+ if (arg) {
65
+ w.add('(');
66
+ if (isNode(arg, 'SelectorList')) {
67
+ let out = w.capture(() => arg.toString(options));
68
+ out = out.replace(/\n\s*/g, ' ');
69
+ w.add(out, arg);
70
+ }
71
+ else {
72
+ arg.toString(options);
73
+ }
74
+ w.add(')');
75
+ }
76
+ return w.getSince(mark);
77
+ }
78
+ /**
79
+ * @todo - This should be vastly simplifiable. For
80
+ *
81
+ * Also, :is()
82
+ */
83
+ // get keys() {
84
+ // let keys = this._keys
85
+ // if (!keys) {
86
+ // let { arg } = this
87
+ // if (arg && (arg instanceof Selector || isNode(arg, 'SelectorList'))) {
88
+ // if (isNode(arg, 'SelectorList')) {
89
+ // /**
90
+ // * If an :is starts with an ampersand with no eval'd selector,
91
+ // * it's relative, and can't be flattened.
92
+ // *
93
+ // * @note As far as I can tell, starting with a combinator
94
+ // * is allowed / legal for :is() and :where() but won't
95
+ // * actually apply to anything.
96
+ // */
97
+ // /**
98
+ // * Push the first selectors of the inner list to an array
99
+ // * at the front of the return array.
100
+ // */
101
+ // const selKeys = arg.value.map(sel => {
102
+ // const childKeys = sel.keys
103
+ // return isArray(childKeys) ? childKeys.flat(Infinity) : [childKeys]
104
+ // }) as string[][]
105
+ // const returnKeys: [string[], ...string[]] = [[]]
106
+ // selKeys.forEach(keys => {
107
+ // const [first, ...rest] = keys
108
+ // returnKeys[0].push(first!)
109
+ // returnKeys.push(...rest)
110
+ // })
111
+ // keys = returnKeys
112
+ // } else {
113
+ // keys = arg.keys
114
+ // }
115
+ // Object.defineProperty(this, '_keys', { value: keys })
116
+ // return keys
117
+ // } else {
118
+ // keys = this.valueOf()
119
+ // }
120
+ // Object.defineProperty(this, '_keys', { value: keys })
121
+ // }
122
+ // return keys
123
+ // }
124
+ valueOf() {
125
+ let valueOf = this._valueOf;
126
+ if (!valueOf) {
127
+ let { name, arg } = this.value;
128
+ // For :is() with SelectorList, use valueOf() to avoid newlines
129
+ /**
130
+ * Normalizes :nth-child(n + 1) to match :nth-child(n+1)
131
+ * That is, anything that doesn't hold a selector as a value
132
+ * is, by definition, not space-sensitive.
133
+ *
134
+ * @todo 1n === n, 2n + 0 === 2n
135
+ */
136
+ valueOf = `${name}${arg ? `(${arg.valueOf()})` : ''}`;
137
+ this._valueOf = valueOf;
138
+ }
139
+ return valueOf;
140
+ }
141
+ evalNode(context) {
142
+ const currentArg = this.value.arg;
143
+ const node = this;
144
+ if (!currentArg) {
145
+ return node;
146
+ }
147
+ return pipe(() => {
148
+ context.parenFrames.push(false);
149
+ return currentArg.eval(context);
150
+ }, (evaluatedArg) => {
151
+ context.parenFrames.pop();
152
+ node.value.arg = evaluatedArg;
153
+ return node;
154
+ });
155
+ }
156
+ }
157
+ // Some experiments with type narrowing
158
+ // type SelectorValue = {
159
+ // value: ':is' | ':where'
160
+ // arg: Selector
161
+ // }
162
+ // type PseudoFunctionValue = {
163
+ // value: string
164
+ // arg: Node
165
+ // }
166
+ // type GetType<T extends Array<[string, any]>> = TupleToUnion<{
167
+ // [K in keyof T]: T[K][0] extends 'arg'
168
+ // ? T[K][1]
169
+ // : never
170
+ // }>
171
+ // type PseudoFunctionClass<T extends PseudoFunctionValue = PseudoFunctionValue> =
172
+ // Class<PseudoSelector<T>, ConstructorParameters<typeof PseudoSelector<T>>>
173
+ // export const PseudoFunction = PseudoSelector as unknown as (new<const T extends Array<[string, any]>>(value: T, opts?: NodeOptions) => Omit<PseudoFunctionClass, 'arg'> & { arg: GetType<T> }) // Omit<PseudoFunctionClass, 'arg'> & GetType<T>)
174
+ // const foo = new PseudoFunction([
175
+ // ['value', ':is'],
176
+ // ['arg', new BasicSelector([['value', 'div']])]
177
+ // ])
178
+ // foo.arg
179
+ export const pseudo = defineType(PseudoSelector, 'PseudoSelector', 'pseudo');
180
+ /**
181
+ * Convenience function to create a :is() pseudo-selector
182
+ * @param arg The selector that goes inside :is()
183
+ * @returns A PseudoSelector with name ":is" and the provided selector as argument
184
+ */
185
+ export function is(arg) {
186
+ return pseudo({
187
+ name: ':is',
188
+ arg: arg
189
+ });
190
+ }
191
+ //# sourceMappingURL=selector-pseudo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector-pseudo.js","sourceRoot":"","sources":["../../src/tree/selector-pseudo.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EAEX,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAEtD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAE3C,OAAO,EAAqB,eAAe,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EAAqB,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAElE,SAAS,cAAc,CAAC,KAAuB;IAC7C,OAAO,CAAC,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAK,KAAa,CAAC,UAAU,KAAK,IAAI,CAAC;AACpF,CAAC;AAYD;;;;EAIE;AACF,MAAM,OAAO,cAAe,SAAQ,cAAmC;IACrE,IAAI,GAAG,gBAAgB,CAAC;IACxB,SAAS,GAAG,QAAQ,CAAC;IAErB,IAAa,MAAM;QACjB,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC,OAAQ,CAAC;IACvB,CAAC;IAEkB,2BAA2B;QAC5C,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAEjC,6DAA6D;QAC7D,MAAM,kBAAkB,GAAG,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACvD,MAAM,cAAc,GAAG,cAAc,CAAC,GAAG,CAAC,CAAC;QAE3C,IAAI,cAAc,IAAI,kBAAkB,EAAE,CAAC;YACzC,IAAI,kBAAkB,EAAE,CAAC;gBACvB,qDAAqD;gBACrD,IAAI,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;gBACvC,IAAI,qBAAqB,GAAG,IAAI,GAAG,EAAU,CAAC;gBAC9C,KAAK,MAAM,QAAQ,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;oBACjC,cAAc,GAAG,cAAc,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACvD,qBAAqB,GAAG,qBAAqB,CAAC,KAAK,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;gBAC9E,CAAC;gBACD,4EAA4E;gBAC5E,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC;gBAC9B,IAAI,CAAC,cAAc,GAAG,qBAAqB,CAAC;gBAC5C,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,aAAa,CAAC;YAC1C,CAAC;iBAAM,IAAI,cAAc,EAAE,CAAC;gBAC1B,4CAA4C;gBAC5C,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC;gBAC1B,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,aAAa,CAAC;gBACxC,qCAAqC;gBACrC,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,aAAa,CAAC;YAC1C,CAAC;QACH,CAAC;aAAM,CAAC;YACN,gEAAgE;YAChE,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YACzC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC;YACnC,qDAAqD;YACrD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;IACH,CAAC;IAEQ,eAAe,CAAC,OAAsB;QAC7C,OAAO,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;QACnC,MAAM,CAAC,GAAG,OAAO,CAAC,MAAO,CAAC;QAC1B,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;QAC/B,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;QACtB,CAAC,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAClB,IAAI,GAAG,EAAE,CAAC;YACR,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACX,IAAI,MAAM,CAAC,GAAG,EAAE,cAAc,CAAC,EAAE,CAAC;gBAChC,IAAI,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC;gBACjD,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBACjC,CAAC,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;YAClB,CAAC;iBAAM,CAAC;gBACN,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACxB,CAAC;YACD,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACb,CAAC;QACD,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED;;;;OAIG;IACH,eAAe;IACf,0BAA0B;IAC1B,iBAAiB;IACjB,yBAAyB;IACzB,6EAA6E;IAC7E,2CAA2C;IAC3C,cAAc;IACd,yEAAyE;IACzE,oDAAoD;IACpD,aAAa;IACb,oEAAoE;IACpE,iEAAiE;IACjE,yCAAyC;IACzC,cAAc;IACd,cAAc;IACd,oEAAoE;IACpE,+CAA+C;IAC/C,cAAc;IACd,iDAAiD;IACjD,uCAAuC;IACvC,+EAA+E;IAC/E,2BAA2B;IAC3B,2DAA2D;IAC3D,oCAAoC;IACpC,0CAA0C;IAC1C,uCAAuC;IACvC,qCAAqC;IACrC,aAAa;IACb,4BAA4B;IAC5B,iBAAiB;IACjB,0BAA0B;IAC1B,UAAU;IACV,8DAA8D;IAC9D,oBAAoB;IACpB,eAAe;IACf,8BAA8B;IAC9B,QAAQ;IACR,4DAA4D;IAC5D,MAAM;IACN,gBAAgB;IAChB,IAAI;IAEK,OAAO;QACd,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YAC/B,+DAA+D;YAE/D;;;;;;eAMG;YACH,OAAO,GAAG,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAEtD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QAC1B,CAAC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEQ,QAAQ,CAAC,OAAgB;QAChC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CACT,GAAG,EAAE;YACH,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAClC,CAAC,EACD,CAAC,YAAY,EAAE,EAAE;YACf,OAAO,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC;YAC9B,OAAO,IAAI,CAAC;QACd,CAAC,CACF,CAAC;IACJ,CAAC;CACF;AAED,uCAAuC;AACvC,yBAAyB;AACzB,4BAA4B;AAC5B,kBAAkB;AAClB,IAAI;AAEJ,+BAA+B;AAC/B,kBAAkB;AAClB,cAAc;AACd,IAAI;AAEJ,gEAAgE;AAChE,0CAA0C;AAC1C,gBAAgB;AAChB,cAAc;AACd,KAAK;AAEL,kFAAkF;AAClF,8EAA8E;AAE9E,mPAAmP;AAEnP,mCAAmC;AACnC,sBAAsB;AACtB,mDAAmD;AACnD,KAAK;AACL,UAAU;AAEV,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,CAA6C,cAAc,EAAE,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AAEzH;;;;GAIG;AACH,MAAM,UAAU,EAAE,CAAC,GAAa;IAC9B,OAAO,MAAM,CAAC;QACZ,IAAI,EAAE,KAAK;QACX,GAAG,EAAE,GAAG;KACT,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type NodeOptions } from './node.js';
2
+ import { Selector } from './selector.js';
3
+ export declare abstract class SimpleSelector<T = any, O extends NodeOptions = NodeOptions> extends Selector<T, O> {
4
+ }
5
+ //# sourceMappingURL=selector-simple.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector-simple.d.ts","sourceRoot":"","sources":["../../src/tree/selector-simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,WAAW,EAAc,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,8BAAsB,cAAc,CAClC,CAAC,GAAG,GAAG,EACP,CAAC,SAAS,WAAW,GAAG,WAAW,CACnC,SAAQ,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;CAAG"}
@@ -0,0 +1,6 @@
1
+ import { defineType } from './node.js';
2
+ import { Selector } from './selector.js';
3
+ export class SimpleSelector extends Selector {
4
+ }
5
+ defineType(SimpleSelector, 'SimpleSelector');
6
+ //# sourceMappingURL=selector-simple.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector-simple.js","sourceRoot":"","sources":["../../src/tree/selector-simple.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,UAAU,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,OAAgB,cAGpB,SAAQ,QAAc;CAAG;AAE3B,UAAU,CAAC,cAAc,EAAE,gBAAgB,CAAC,CAAC"}
@@ -0,0 +1,43 @@
1
+ import type { MaybePromise } from 'awaitable-pipe';
2
+ import { Node, type NodeOptions, type NodeValue } from './node.js';
3
+ import type { IfAny } from 'type-fest';
4
+ import type { Context } from '../context.js';
5
+ import type { Nil } from './nil.js';
6
+ /**
7
+ * This represents anything that is valid in a selector
8
+ *
9
+ * @todo - Add Sass private / placeholder selectors?
10
+ * e.g. `\\foo` instead of `%foo`
11
+ * private = `\\_foo`
12
+ */
13
+ export interface Selector<T = any, O extends NodeOptions = NodeOptions> extends Node<IfAny<T, NodeValue, T>, O> {
14
+ valueOf(): string;
15
+ eval(context: Context): MaybePromise<Selector<T>> | MaybePromise<Nil>;
16
+ }
17
+ export declare abstract class Selector<T = any, O extends NodeOptions = NodeOptions> extends Node<IfAny<T, NodeValue, T>, O> {
18
+ isSelector: boolean;
19
+ protected _valueOf: string | undefined;
20
+ /**
21
+ * A set of all simplified (valueOf) selectors,
22
+ * for easy lookup to see if the selector is extendable
23
+ * by the key sets in the extend scope.
24
+ */
25
+ protected _keySet: Set<string> | undefined;
26
+ /** Used for mixin registry indexing - only includes visible selectors */
27
+ protected _visibleKeySet: Set<string> | undefined;
28
+ get keySet(): Set<string>;
29
+ get visibleKeySet(): Set<string>;
30
+ /**
31
+ * Cached computation: can this selector's keySet be trusted for disjoint rejection?
32
+ * True = keySet represents exact requirements (no alternatives)
33
+ * False = keySet contains alternatives/unions, disjoint check unreliable
34
+ */
35
+ protected _canFastReject: boolean | undefined;
36
+ get canFastReject(): boolean;
37
+ /**
38
+ * Computes both keySet and canFastReject in one pass for efficiency.
39
+ * Subclasses should override this to implement their specific logic.
40
+ */
41
+ protected _computeKeySetAndFastReject(): void;
42
+ }
43
+ //# sourceMappingURL=selector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector.d.ts","sourceRoot":"","sources":["../../src/tree/selector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EAAa,IAAI,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAc,MAAM,WAAW,CAAC;AAC1F,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,WAAW,CAAC;AACvC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAC7C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAEpC;;;;;;GAMG;AAEH,MAAM,WAAW,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAC7G,OAAO,IAAI,MAAM,CAAC;IAClB,IAAI,CAAC,OAAO,EAAE,OAAO,GAAG,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;CACvE;AAED,8BAAsB,QAAQ,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,SAAS,WAAW,GAAG,WAAW,CAAE,SAAQ,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC;IAClH,UAAU,UAAQ;IAElB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAEvC;;;;OAIG;IACH,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAC3C,yEAAyE;IACzE,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC;IAClD,IAAI,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,CAKxB;IAED,IAAI,aAAa,IAAI,GAAG,CAAC,MAAM,CAAC,CAK/B;IAED;;;;OAIG;IACH,SAAS,CAAC,cAAc,EAAE,OAAO,GAAG,SAAS,CAAC;IAE9C,IAAI,aAAa,IAAI,OAAO,CAM3B;IAED;;;OAGG;IACH,SAAS,CAAC,2BAA2B,IAAI,IAAI;CAW9C"}
@@ -0,0 +1,56 @@
1
+ import { F_VISIBLE, Node, defineType } from './node.js';
2
+ export class Selector extends Node {
3
+ isSelector = true;
4
+ _valueOf;
5
+ /**
6
+ * A set of all simplified (valueOf) selectors,
7
+ * for easy lookup to see if the selector is extendable
8
+ * by the key sets in the extend scope.
9
+ */
10
+ _keySet;
11
+ /** Used for mixin registry indexing - only includes visible selectors */
12
+ _visibleKeySet;
13
+ get keySet() {
14
+ if (!this._keySet) {
15
+ this._computeKeySetAndFastReject();
16
+ }
17
+ return this._keySet;
18
+ }
19
+ get visibleKeySet() {
20
+ if (!this._visibleKeySet) {
21
+ this._computeKeySetAndFastReject();
22
+ }
23
+ return this._visibleKeySet;
24
+ }
25
+ /**
26
+ * Cached computation: can this selector's keySet be trusted for disjoint rejection?
27
+ * True = keySet represents exact requirements (no alternatives)
28
+ * False = keySet contains alternatives/unions, disjoint check unreliable
29
+ */
30
+ _canFastReject;
31
+ get canFastReject() {
32
+ if (this._canFastReject === undefined) {
33
+ // Trigger computation of both keySet and canFastReject together
34
+ this._computeKeySetAndFastReject();
35
+ }
36
+ return this._canFastReject;
37
+ }
38
+ /**
39
+ * Computes both keySet and canFastReject in one pass for efficiency.
40
+ * Subclasses should override this to implement their specific logic.
41
+ */
42
+ _computeKeySetAndFastReject() {
43
+ // Default implementation - subclasses override
44
+ let value = String(this.valueOf());
45
+ this._keySet = new Set([value]);
46
+ if (this.hasFlag(F_VISIBLE)) {
47
+ this._visibleKeySet = this._keySet;
48
+ }
49
+ else {
50
+ this._visibleKeySet = new Set();
51
+ }
52
+ this._canFastReject = true;
53
+ }
54
+ }
55
+ defineType(Selector, 'Selector');
56
+ //# sourceMappingURL=selector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selector.js","sourceRoot":"","sources":["../../src/tree/selector.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,IAAI,EAAoC,UAAU,EAAE,MAAM,WAAW,CAAC;AAkB1F,MAAM,OAAgB,QAAuD,SAAQ,IAA+B;IAClH,UAAU,GAAG,IAAI,CAAC;IAER,QAAQ,CAAqB;IAEvC;;;;OAIG;IACO,OAAO,CAA0B;IAC3C,yEAAyE;IAC/D,cAAc,CAA0B;IAClD,IAAI,MAAM;QACR,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC,OAAQ,CAAC;IACvB,CAAC;IAED,IAAI,aAAa;QACf,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACzB,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC,cAAe,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACO,cAAc,CAAsB;IAE9C,IAAI,aAAa;QACf,IAAI,IAAI,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;YACtC,gEAAgE;YAChE,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC;QACD,OAAO,IAAI,CAAC,cAAe,CAAC;IAC9B,CAAC;IAED;;;OAGG;IACO,2BAA2B;QACnC,+CAA+C;QAC/C,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;QACnC,IAAI,CAAC,OAAO,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAChC,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC;QACrC,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;QAClC,CAAC;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC7B,CAAC;CACF;AAED,UAAU,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC"}
@@ -0,0 +1,43 @@
1
+ import { Node } from './node.js';
2
+ import { List } from './list.js';
3
+ import type { Context } from '../context.js';
4
+ import { type MaybePromise } from '@jesscss/awaitable-pipe';
5
+ import { type PrintOptions } from './util/print.js';
6
+ export type SequenceOptions = {
7
+ /**
8
+ * CSS values are typically spaced,
9
+ * because of how they're parsed.
10
+ */
11
+ /** Used with custom properties */
12
+ preserveWhitespace?: boolean;
13
+ };
14
+ /**
15
+ * A continuous collection of nodes. Historically in Less,
16
+ * these were termed "expressions", but in computer science,
17
+ * an expression will yield a value, and a CSS value can
18
+ * actually be a sequence of values (like for shorthand)
19
+ */
20
+ export declare class Sequence extends Node<Node[], SequenceOptions> {
21
+ type: string;
22
+ shortType: string;
23
+ compare(other: Node): 0 | 1 | -1 | undefined;
24
+ toTrimmedString(options?: PrintOptions): string;
25
+ operate(b: Node, op: string, context: Context): Sequence | List;
26
+ /**
27
+ * During evaluation of sequences,
28
+ * Jess may find values that are lists.
29
+ *
30
+ * In this case, we need to create a single
31
+ * list that contains members of the expanded lists.
32
+ *
33
+ * @todo - If this is a selector sequence, and we've
34
+ * evaluated an expression to an inner sequence,
35
+ * then we should be inserting white-space combinators?
36
+ *
37
+ * @todo - REWRITE
38
+ */
39
+ evalNode(context: Context): MaybePromise<Node>;
40
+ }
41
+ export declare const seq: (value?: Node<unknown, import("./node-base.js").NodeOptions>[] | undefined, options?: SequenceOptions | undefined, location?: import("./node-base.js").LocationInfo | undefined) => Sequence;
42
+ export declare const spaced: (value: Node[], options?: SequenceOptions) => Sequence;
43
+ //# sourceMappingURL=sequence.d.ts.map