@jesscss/core 2.0.0-alpha.4 → 2.0.0-alpha.6

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 (637) hide show
  1. package/lib/index.cjs +20159 -0
  2. package/lib/index.d.cts +5993 -0
  3. package/lib/index.d.cts.map +1 -0
  4. package/lib/index.d.ts +5992 -21
  5. package/lib/index.d.ts.map +1 -1
  6. package/lib/index.js +19926 -22
  7. package/lib/index.js.map +1 -1
  8. package/package.json +15 -14
  9. package/src/__tests__/define-function-record.test.ts +58 -0
  10. package/src/__tests__/define-function-simple.test.ts +55 -0
  11. package/src/__tests__/define-function-split-sequence.test.ts +547 -0
  12. package/src/__tests__/define-function-type-parity.test.ts +9 -0
  13. package/src/__tests__/define-function.test.ts +763 -0
  14. package/src/__tests__/num-operations.test.ts +91 -0
  15. package/src/__tests__/safe-parse.test.ts +374 -0
  16. package/src/context.ts +896 -0
  17. package/src/conversions.ts +282 -0
  18. package/src/debug-log.ts +29 -0
  19. package/src/define-function.ts +1006 -0
  20. package/src/deprecation.ts +67 -0
  21. package/src/globals.d.ts +26 -0
  22. package/src/index.ts +31 -0
  23. package/src/jess-error.ts +773 -0
  24. package/src/logger/deprecation-processing.ts +109 -0
  25. package/src/logger.ts +31 -0
  26. package/src/plugin.ts +292 -0
  27. package/src/tree/LOOKUP_CHAINS.md +35 -0
  28. package/src/tree/README.md +18 -0
  29. package/src/tree/__tests__/__snapshots__/extend-eval-integration.test.ts.snap +1455 -0
  30. package/src/tree/__tests__/ampersand.test.ts +382 -0
  31. package/src/tree/__tests__/at-rule.test.ts +2047 -0
  32. package/src/tree/__tests__/basic-render.test.ts +212 -0
  33. package/src/tree/__tests__/block.test.ts +40 -0
  34. package/src/tree/__tests__/call.test.ts +346 -0
  35. package/src/tree/__tests__/color.test.ts +537 -0
  36. package/src/tree/__tests__/condition.test.ts +186 -0
  37. package/src/tree/__tests__/control.test.ts +564 -0
  38. package/src/tree/__tests__/declaration.test.ts +253 -0
  39. package/src/tree/__tests__/dependency-graph.test.ts +177 -0
  40. package/src/tree/__tests__/detached-rulesets.test.ts +213 -0
  41. package/src/tree/__tests__/dimension.test.ts +236 -0
  42. package/src/tree/__tests__/expression.test.ts +73 -0
  43. package/src/tree/__tests__/ext-node.test.ts +31 -0
  44. package/src/tree/__tests__/extend-eval-integration.test.ts +1033 -0
  45. package/src/tree/__tests__/extend-import-style.test.ts +929 -0
  46. package/src/tree/__tests__/extend-less-fixtures.test.ts +851 -0
  47. package/src/tree/__tests__/extend-list.test.ts +31 -0
  48. package/src/tree/__tests__/extend-roots.test.ts +1045 -0
  49. package/src/tree/__tests__/extend-rules.test.ts +740 -0
  50. package/src/tree/__tests__/func.test.ts +171 -0
  51. package/src/tree/__tests__/import-js.test.ts +33 -0
  52. package/src/tree/__tests__/import-style-test-helpers.ts +56 -0
  53. package/src/tree/__tests__/import-style.test.ts +1967 -0
  54. package/src/tree/__tests__/interpolated-reference.test.ts +44 -0
  55. package/src/tree/__tests__/interpolated.test.ts +41 -0
  56. package/src/tree/__tests__/list.test.ts +177 -0
  57. package/src/tree/__tests__/log.test.ts +83 -0
  58. package/src/tree/__tests__/mixin-recursion.test.ts +639 -0
  59. package/src/tree/__tests__/mixin.test.ts +2171 -0
  60. package/src/tree/__tests__/negative.test.ts +45 -0
  61. package/src/tree/__tests__/nesting-collapse.test.ts +519 -0
  62. package/src/tree/__tests__/node-flags-perf.test.ts +195 -0
  63. package/src/tree/__tests__/node-flags.test.ts +410 -0
  64. package/src/tree/__tests__/node-graph.test.ts +598 -0
  65. package/src/tree/__tests__/node-mutation.test.ts +182 -0
  66. package/src/tree/__tests__/operation.test.ts +18 -0
  67. package/src/tree/__tests__/paren.test.ts +90 -0
  68. package/src/tree/__tests__/preserve-mode-output.test.ts +50 -0
  69. package/src/tree/__tests__/quoted.test.ts +72 -0
  70. package/src/tree/__tests__/range.test.ts +59 -0
  71. package/src/tree/__tests__/reference.test.ts +743 -0
  72. package/src/tree/__tests__/rest.test.ts +29 -0
  73. package/src/tree/__tests__/rules-raw.test.ts +14 -0
  74. package/src/tree/__tests__/rules.test.ts +1271 -0
  75. package/src/tree/__tests__/ruleset.test.ts +597 -0
  76. package/src/tree/__tests__/selector-attr.test.ts +50 -0
  77. package/src/tree/__tests__/selector-basic.test.ts +44 -0
  78. package/src/tree/__tests__/selector-capture.test.ts +22 -0
  79. package/src/tree/__tests__/selector-complex.test.ts +120 -0
  80. package/src/tree/__tests__/selector-compound.test.ts +74 -0
  81. package/src/tree/__tests__/selector-interpolated.test.ts +50 -0
  82. package/src/tree/__tests__/selector-list.test.ts +59 -0
  83. package/src/tree/__tests__/selector-pseudo.test.ts +23 -0
  84. package/src/tree/__tests__/selector.test.ts +182 -0
  85. package/src/tree/__tests__/sequence.test.ts +226 -0
  86. package/src/tree/__tests__/serialize-types.test.ts +529 -0
  87. package/src/tree/__tests__/spaced.test.ts +8 -0
  88. package/src/tree/__tests__/url.test.ts +72 -0
  89. package/src/tree/__tests__/var-declaration.test.ts +90 -0
  90. package/src/tree/ampersand.ts +538 -0
  91. package/src/tree/any.ts +169 -0
  92. package/src/tree/at-rule.ts +760 -0
  93. package/src/tree/block.ts +72 -0
  94. package/src/tree/bool.ts +46 -0
  95. package/src/tree/call.ts +593 -0
  96. package/src/tree/collection.ts +52 -0
  97. package/src/tree/color.ts +629 -0
  98. package/src/tree/combinator.ts +30 -0
  99. package/src/tree/comment.ts +36 -0
  100. package/src/tree/condition.ts +194 -0
  101. package/src/tree/control.ts +452 -0
  102. package/src/tree/declaration-custom.ts +56 -0
  103. package/src/tree/declaration-var.ts +87 -0
  104. package/src/tree/declaration.ts +742 -0
  105. package/src/tree/default-guard.ts +35 -0
  106. package/src/tree/dimension.ts +392 -0
  107. package/src/tree/expression.ts +97 -0
  108. package/src/tree/extend-list.ts +51 -0
  109. package/src/tree/extend.ts +391 -0
  110. package/src/tree/function.ts +254 -0
  111. package/src/tree/import-js.ts +130 -0
  112. package/src/tree/import-style.ts +875 -0
  113. package/{lib/tree/index.js → src/tree/index.ts} +49 -22
  114. package/src/tree/interpolated.ts +346 -0
  115. package/src/tree/js-array.ts +21 -0
  116. package/src/tree/js-expr.ts +50 -0
  117. package/src/tree/js-function.ts +31 -0
  118. package/src/tree/js-object.ts +22 -0
  119. package/src/tree/list.ts +415 -0
  120. package/src/tree/log.ts +89 -0
  121. package/src/tree/mixin.ts +331 -0
  122. package/src/tree/negative.ts +58 -0
  123. package/src/tree/nil.ts +57 -0
  124. package/src/tree/node-base.ts +1716 -0
  125. package/src/tree/node-type.ts +122 -0
  126. package/src/tree/node.ts +118 -0
  127. package/src/tree/number.ts +54 -0
  128. package/src/tree/operation.ts +187 -0
  129. package/src/tree/paren.ts +132 -0
  130. package/src/tree/query-condition.ts +47 -0
  131. package/src/tree/quoted.ts +119 -0
  132. package/src/tree/range.ts +101 -0
  133. package/src/tree/reference.ts +1099 -0
  134. package/src/tree/rest.ts +55 -0
  135. package/src/tree/rules-raw.ts +52 -0
  136. package/src/tree/rules.ts +2896 -0
  137. package/src/tree/ruleset.ts +1217 -0
  138. package/src/tree/selector-attr.ts +172 -0
  139. package/src/tree/selector-basic.ts +75 -0
  140. package/src/tree/selector-capture.ts +85 -0
  141. package/src/tree/selector-complex.ts +189 -0
  142. package/src/tree/selector-compound.ts +205 -0
  143. package/src/tree/selector-interpolated.ts +95 -0
  144. package/src/tree/selector-list.ts +245 -0
  145. package/src/tree/selector-pseudo.ts +173 -0
  146. package/src/tree/selector-simple.ts +10 -0
  147. package/src/tree/selector.ts +152 -0
  148. package/src/tree/sequence.ts +463 -0
  149. package/src/tree/tree.ts +130 -0
  150. package/src/tree/url.ts +95 -0
  151. package/src/tree/util/EXTEND_ARCHITECTURE_ANALYSIS.md +215 -0
  152. package/src/tree/util/EXTEND_AUDIT.md +233 -0
  153. package/src/tree/util/EXTEND_BASELINE.md +64 -0
  154. package/src/tree/util/EXTEND_CALL_GRAPH_ANALYSIS.md +244 -0
  155. package/src/tree/util/EXTEND_DOCS.md +24 -0
  156. package/src/tree/util/EXTEND_FINAL_SUMMARY.md +95 -0
  157. package/src/tree/util/EXTEND_FUNCTION_AUDIT.md +1433 -0
  158. package/src/tree/util/EXTEND_OPTIMIZATION_PLAN.md +114 -0
  159. package/src/tree/util/EXTEND_REFACTORING_SUMMARY.md +152 -0
  160. package/src/tree/util/EXTEND_RULES.md +74 -0
  161. package/src/tree/util/EXTEND_UNUSED_FUNCTIONS.md +127 -0
  162. package/src/tree/util/EXTEND_UNUSED_FUNCTIONS_ANALYSIS.md +227 -0
  163. package/src/tree/util/NODE_COPY_REDUCTION_PLAN.md +12 -0
  164. package/src/tree/util/__tests__/EXTEND_TEST_INDEX.md +59 -0
  165. package/src/tree/util/__tests__/OPTIMIZATION-ANALYSIS.md +130 -0
  166. package/src/tree/util/__tests__/WALK_AND_CONSUME_DESIGN.md +138 -0
  167. package/src/tree/util/__tests__/_archive/2026-02-09__OPTIMIZATION-ANALYSIS.md +9 -0
  168. package/src/tree/util/__tests__/_archive/README.md +4 -0
  169. package/src/tree/util/__tests__/bitset.test.ts +142 -0
  170. package/src/tree/util/__tests__/debug-log.ts +50 -0
  171. package/src/tree/util/__tests__/extend-comment-handling.test.ts +187 -0
  172. package/src/tree/util/__tests__/extend-core-unit.test.ts +941 -0
  173. package/src/tree/util/__tests__/extend-pipeline-bench.test.ts +154 -0
  174. package/src/tree/util/__tests__/extend-pipeline-bench.ts +190 -0
  175. package/src/tree/util/__tests__/fast-reject.test.ts +377 -0
  176. package/src/tree/util/__tests__/is-node.test.ts +63 -0
  177. package/src/tree/util/__tests__/list-like.test.ts +63 -0
  178. package/src/tree/util/__tests__/outputwriter.test.ts +523 -0
  179. package/src/tree/util/__tests__/print.test.ts +183 -0
  180. package/src/tree/util/__tests__/process-extends.test.ts +226 -0
  181. package/src/tree/util/__tests__/process-leading-is.test.ts +205 -0
  182. package/src/tree/util/__tests__/recursion-helper.test.ts +184 -0
  183. package/src/tree/util/__tests__/selector-match-unit.test.ts +1427 -0
  184. package/src/tree/util/__tests__/sourcemap.test.ts +117 -0
  185. package/src/tree/util/ampersand-template.ts +9 -0
  186. package/src/tree/util/bitset.ts +194 -0
  187. package/src/tree/util/calculate.ts +11 -0
  188. package/src/tree/util/cast.ts +89 -0
  189. package/src/tree/util/cloning.ts +8 -0
  190. package/src/tree/util/collections.ts +299 -0
  191. package/src/tree/util/compare.ts +90 -0
  192. package/src/tree/util/cursor.ts +171 -0
  193. package/src/tree/util/extend-core.ts +2139 -0
  194. package/src/tree/util/extend-roots.ts +1108 -0
  195. package/src/tree/util/field-helpers.ts +354 -0
  196. package/src/tree/util/is-node.ts +43 -0
  197. package/src/tree/util/list-like.ts +93 -0
  198. package/src/tree/util/mixin-instance-primitives.ts +2020 -0
  199. package/src/tree/util/print.ts +303 -0
  200. package/src/tree/util/process-leading-is.ts +421 -0
  201. package/src/tree/util/recursion-helper.ts +54 -0
  202. package/src/tree/util/regex.ts +2 -0
  203. package/src/tree/util/registry-utils.ts +1953 -0
  204. package/src/tree/util/ruleset-trace.ts +17 -0
  205. package/src/tree/util/scoped-body-eval.ts +320 -0
  206. package/src/tree/util/selector-match-core.ts +2005 -0
  207. package/src/tree/util/selector-utils.ts +757 -0
  208. package/src/tree/util/serialize-helper.ts +535 -0
  209. package/src/tree/util/serialize-types.ts +318 -0
  210. package/src/tree/util/should-operate.ts +78 -0
  211. package/src/tree/util/sourcemap.ts +37 -0
  212. package/src/types/config.ts +247 -0
  213. package/src/types/index.ts +12 -0
  214. package/{lib/types/modes.d.ts → src/types/modes.ts} +2 -1
  215. package/src/types.d.ts +9 -0
  216. package/src/types.ts +68 -0
  217. package/src/use-webpack-resolver.ts +56 -0
  218. package/src/visitor/__tests__/visitor.test.ts +136 -0
  219. package/src/visitor/index.ts +263 -0
  220. package/{lib/visitor/less-visitor.js → src/visitor/less-visitor.ts} +3 -2
  221. package/lib/context.d.ts +0 -352
  222. package/lib/context.d.ts.map +0 -1
  223. package/lib/context.js +0 -636
  224. package/lib/context.js.map +0 -1
  225. package/lib/conversions.d.ts +0 -73
  226. package/lib/conversions.d.ts.map +0 -1
  227. package/lib/conversions.js +0 -253
  228. package/lib/conversions.js.map +0 -1
  229. package/lib/debug-log.d.ts +0 -2
  230. package/lib/debug-log.d.ts.map +0 -1
  231. package/lib/debug-log.js +0 -27
  232. package/lib/debug-log.js.map +0 -1
  233. package/lib/define-function.d.ts +0 -587
  234. package/lib/define-function.d.ts.map +0 -1
  235. package/lib/define-function.js +0 -726
  236. package/lib/define-function.js.map +0 -1
  237. package/lib/deprecation.d.ts +0 -34
  238. package/lib/deprecation.d.ts.map +0 -1
  239. package/lib/deprecation.js +0 -57
  240. package/lib/deprecation.js.map +0 -1
  241. package/lib/jess-error.d.ts +0 -343
  242. package/lib/jess-error.d.ts.map +0 -1
  243. package/lib/jess-error.js +0 -508
  244. package/lib/jess-error.js.map +0 -1
  245. package/lib/logger/deprecation-processing.d.ts +0 -41
  246. package/lib/logger/deprecation-processing.d.ts.map +0 -1
  247. package/lib/logger/deprecation-processing.js +0 -81
  248. package/lib/logger/deprecation-processing.js.map +0 -1
  249. package/lib/logger.d.ts +0 -10
  250. package/lib/logger.d.ts.map +0 -1
  251. package/lib/logger.js +0 -20
  252. package/lib/logger.js.map +0 -1
  253. package/lib/plugin.d.ts +0 -94
  254. package/lib/plugin.d.ts.map +0 -1
  255. package/lib/plugin.js +0 -174
  256. package/lib/plugin.js.map +0 -1
  257. package/lib/tree/ampersand.d.ts +0 -94
  258. package/lib/tree/ampersand.d.ts.map +0 -1
  259. package/lib/tree/ampersand.js +0 -269
  260. package/lib/tree/ampersand.js.map +0 -1
  261. package/lib/tree/any.d.ts +0 -58
  262. package/lib/tree/any.d.ts.map +0 -1
  263. package/lib/tree/any.js +0 -104
  264. package/lib/tree/any.js.map +0 -1
  265. package/lib/tree/at-rule.d.ts +0 -53
  266. package/lib/tree/at-rule.d.ts.map +0 -1
  267. package/lib/tree/at-rule.js +0 -503
  268. package/lib/tree/at-rule.js.map +0 -1
  269. package/lib/tree/block.d.ts +0 -22
  270. package/lib/tree/block.d.ts.map +0 -1
  271. package/lib/tree/block.js +0 -24
  272. package/lib/tree/block.js.map +0 -1
  273. package/lib/tree/bool.d.ts +0 -18
  274. package/lib/tree/bool.d.ts.map +0 -1
  275. package/lib/tree/bool.js +0 -28
  276. package/lib/tree/bool.js.map +0 -1
  277. package/lib/tree/call.d.ts +0 -66
  278. package/lib/tree/call.d.ts.map +0 -1
  279. package/lib/tree/call.js +0 -306
  280. package/lib/tree/call.js.map +0 -1
  281. package/lib/tree/collection.d.ts +0 -30
  282. package/lib/tree/collection.d.ts.map +0 -1
  283. package/lib/tree/collection.js +0 -37
  284. package/lib/tree/collection.js.map +0 -1
  285. package/lib/tree/color.d.ts +0 -101
  286. package/lib/tree/color.d.ts.map +0 -1
  287. package/lib/tree/color.js +0 -513
  288. package/lib/tree/color.js.map +0 -1
  289. package/lib/tree/combinator.d.ts +0 -13
  290. package/lib/tree/combinator.d.ts.map +0 -1
  291. package/lib/tree/combinator.js +0 -12
  292. package/lib/tree/combinator.js.map +0 -1
  293. package/lib/tree/comment.d.ts +0 -20
  294. package/lib/tree/comment.d.ts.map +0 -1
  295. package/lib/tree/comment.js +0 -19
  296. package/lib/tree/comment.js.map +0 -1
  297. package/lib/tree/condition.d.ts +0 -31
  298. package/lib/tree/condition.d.ts.map +0 -1
  299. package/lib/tree/condition.js +0 -103
  300. package/lib/tree/condition.js.map +0 -1
  301. package/lib/tree/control.d.ts +0 -104
  302. package/lib/tree/control.d.ts.map +0 -1
  303. package/lib/tree/control.js +0 -430
  304. package/lib/tree/control.js.map +0 -1
  305. package/lib/tree/declaration-custom.d.ts +0 -18
  306. package/lib/tree/declaration-custom.d.ts.map +0 -1
  307. package/lib/tree/declaration-custom.js +0 -24
  308. package/lib/tree/declaration-custom.js.map +0 -1
  309. package/lib/tree/declaration-var.d.ts +0 -35
  310. package/lib/tree/declaration-var.d.ts.map +0 -1
  311. package/lib/tree/declaration-var.js +0 -63
  312. package/lib/tree/declaration-var.js.map +0 -1
  313. package/lib/tree/declaration.d.ts +0 -78
  314. package/lib/tree/declaration.d.ts.map +0 -1
  315. package/lib/tree/declaration.js +0 -286
  316. package/lib/tree/declaration.js.map +0 -1
  317. package/lib/tree/default-guard.d.ts +0 -15
  318. package/lib/tree/default-guard.d.ts.map +0 -1
  319. package/lib/tree/default-guard.js +0 -19
  320. package/lib/tree/default-guard.js.map +0 -1
  321. package/lib/tree/dimension.d.ts +0 -34
  322. package/lib/tree/dimension.d.ts.map +0 -1
  323. package/lib/tree/dimension.js +0 -294
  324. package/lib/tree/dimension.js.map +0 -1
  325. package/lib/tree/expression.d.ts +0 -25
  326. package/lib/tree/expression.d.ts.map +0 -1
  327. package/lib/tree/expression.js +0 -32
  328. package/lib/tree/expression.js.map +0 -1
  329. package/lib/tree/extend-list.d.ts +0 -23
  330. package/lib/tree/extend-list.d.ts.map +0 -1
  331. package/lib/tree/extend-list.js +0 -23
  332. package/lib/tree/extend-list.js.map +0 -1
  333. package/lib/tree/extend.d.ts +0 -47
  334. package/lib/tree/extend.d.ts.map +0 -1
  335. package/lib/tree/extend.js +0 -296
  336. package/lib/tree/extend.js.map +0 -1
  337. package/lib/tree/function.d.ts +0 -48
  338. package/lib/tree/function.d.ts.map +0 -1
  339. package/lib/tree/function.js +0 -74
  340. package/lib/tree/function.js.map +0 -1
  341. package/lib/tree/import-js.d.ts +0 -35
  342. package/lib/tree/import-js.d.ts.map +0 -1
  343. package/lib/tree/import-js.js +0 -45
  344. package/lib/tree/import-js.js.map +0 -1
  345. package/lib/tree/import-style.d.ts +0 -156
  346. package/lib/tree/import-style.d.ts.map +0 -1
  347. package/lib/tree/import-style.js +0 -566
  348. package/lib/tree/import-style.js.map +0 -1
  349. package/lib/tree/index.d.ts +0 -71
  350. package/lib/tree/index.d.ts.map +0 -1
  351. package/lib/tree/index.js.map +0 -1
  352. package/lib/tree/interpolated-reference.d.ts +0 -24
  353. package/lib/tree/interpolated-reference.d.ts.map +0 -1
  354. package/lib/tree/interpolated-reference.js +0 -37
  355. package/lib/tree/interpolated-reference.js.map +0 -1
  356. package/lib/tree/interpolated.d.ts +0 -62
  357. package/lib/tree/interpolated.d.ts.map +0 -1
  358. package/lib/tree/interpolated.js +0 -204
  359. package/lib/tree/interpolated.js.map +0 -1
  360. package/lib/tree/js-array.d.ts +0 -10
  361. package/lib/tree/js-array.d.ts.map +0 -1
  362. package/lib/tree/js-array.js +0 -10
  363. package/lib/tree/js-array.js.map +0 -1
  364. package/lib/tree/js-expr.d.ts +0 -23
  365. package/lib/tree/js-expr.d.ts.map +0 -1
  366. package/lib/tree/js-expr.js +0 -28
  367. package/lib/tree/js-expr.js.map +0 -1
  368. package/lib/tree/js-function.d.ts +0 -20
  369. package/lib/tree/js-function.d.ts.map +0 -1
  370. package/lib/tree/js-function.js +0 -16
  371. package/lib/tree/js-function.js.map +0 -1
  372. package/lib/tree/js-object.d.ts +0 -10
  373. package/lib/tree/js-object.d.ts.map +0 -1
  374. package/lib/tree/js-object.js +0 -10
  375. package/lib/tree/js-object.js.map +0 -1
  376. package/lib/tree/list.d.ts +0 -38
  377. package/lib/tree/list.d.ts.map +0 -1
  378. package/lib/tree/list.js +0 -83
  379. package/lib/tree/list.js.map +0 -1
  380. package/lib/tree/log.d.ts +0 -29
  381. package/lib/tree/log.d.ts.map +0 -1
  382. package/lib/tree/log.js +0 -56
  383. package/lib/tree/log.js.map +0 -1
  384. package/lib/tree/mixin.d.ts +0 -87
  385. package/lib/tree/mixin.d.ts.map +0 -1
  386. package/lib/tree/mixin.js +0 -112
  387. package/lib/tree/mixin.js.map +0 -1
  388. package/lib/tree/negative.d.ts +0 -17
  389. package/lib/tree/negative.d.ts.map +0 -1
  390. package/lib/tree/negative.js +0 -22
  391. package/lib/tree/negative.js.map +0 -1
  392. package/lib/tree/nil.d.ts +0 -30
  393. package/lib/tree/nil.d.ts.map +0 -1
  394. package/lib/tree/nil.js +0 -35
  395. package/lib/tree/nil.js.map +0 -1
  396. package/lib/tree/node-base.d.ts +0 -361
  397. package/lib/tree/node-base.d.ts.map +0 -1
  398. package/lib/tree/node-base.js +0 -930
  399. package/lib/tree/node-base.js.map +0 -1
  400. package/lib/tree/node.d.ts +0 -10
  401. package/lib/tree/node.d.ts.map +0 -1
  402. package/lib/tree/node.js +0 -45
  403. package/lib/tree/node.js.map +0 -1
  404. package/lib/tree/number.d.ts +0 -21
  405. package/lib/tree/number.d.ts.map +0 -1
  406. package/lib/tree/number.js +0 -27
  407. package/lib/tree/number.js.map +0 -1
  408. package/lib/tree/operation.d.ts +0 -26
  409. package/lib/tree/operation.d.ts.map +0 -1
  410. package/lib/tree/operation.js +0 -103
  411. package/lib/tree/operation.js.map +0 -1
  412. package/lib/tree/paren.d.ts +0 -19
  413. package/lib/tree/paren.d.ts.map +0 -1
  414. package/lib/tree/paren.js +0 -92
  415. package/lib/tree/paren.js.map +0 -1
  416. package/lib/tree/query-condition.d.ts +0 -17
  417. package/lib/tree/query-condition.d.ts.map +0 -1
  418. package/lib/tree/query-condition.js +0 -39
  419. package/lib/tree/query-condition.js.map +0 -1
  420. package/lib/tree/quoted.d.ts +0 -28
  421. package/lib/tree/quoted.d.ts.map +0 -1
  422. package/lib/tree/quoted.js +0 -75
  423. package/lib/tree/quoted.js.map +0 -1
  424. package/lib/tree/range.d.ts +0 -33
  425. package/lib/tree/range.d.ts.map +0 -1
  426. package/lib/tree/range.js +0 -47
  427. package/lib/tree/range.js.map +0 -1
  428. package/lib/tree/reference.d.ts +0 -76
  429. package/lib/tree/reference.d.ts.map +0 -1
  430. package/lib/tree/reference.js +0 -521
  431. package/lib/tree/reference.js.map +0 -1
  432. package/lib/tree/rest.d.ts +0 -15
  433. package/lib/tree/rest.d.ts.map +0 -1
  434. package/lib/tree/rest.js +0 -32
  435. package/lib/tree/rest.js.map +0 -1
  436. package/lib/tree/rules-raw.d.ts +0 -17
  437. package/lib/tree/rules-raw.d.ts.map +0 -1
  438. package/lib/tree/rules-raw.js +0 -37
  439. package/lib/tree/rules-raw.js.map +0 -1
  440. package/lib/tree/rules.d.ts +0 -262
  441. package/lib/tree/rules.d.ts.map +0 -1
  442. package/lib/tree/rules.js +0 -2359
  443. package/lib/tree/rules.js.map +0 -1
  444. package/lib/tree/ruleset.d.ts +0 -92
  445. package/lib/tree/ruleset.d.ts.map +0 -1
  446. package/lib/tree/ruleset.js +0 -528
  447. package/lib/tree/ruleset.js.map +0 -1
  448. package/lib/tree/selector-attr.d.ts +0 -31
  449. package/lib/tree/selector-attr.d.ts.map +0 -1
  450. package/lib/tree/selector-attr.js +0 -99
  451. package/lib/tree/selector-attr.js.map +0 -1
  452. package/lib/tree/selector-basic.d.ts +0 -24
  453. package/lib/tree/selector-basic.d.ts.map +0 -1
  454. package/lib/tree/selector-basic.js +0 -38
  455. package/lib/tree/selector-basic.js.map +0 -1
  456. package/lib/tree/selector-capture.d.ts +0 -23
  457. package/lib/tree/selector-capture.d.ts.map +0 -1
  458. package/lib/tree/selector-capture.js +0 -34
  459. package/lib/tree/selector-capture.js.map +0 -1
  460. package/lib/tree/selector-complex.d.ts +0 -40
  461. package/lib/tree/selector-complex.d.ts.map +0 -1
  462. package/lib/tree/selector-complex.js +0 -143
  463. package/lib/tree/selector-complex.js.map +0 -1
  464. package/lib/tree/selector-compound.d.ts +0 -16
  465. package/lib/tree/selector-compound.d.ts.map +0 -1
  466. package/lib/tree/selector-compound.js +0 -114
  467. package/lib/tree/selector-compound.js.map +0 -1
  468. package/lib/tree/selector-interpolated.d.ts +0 -23
  469. package/lib/tree/selector-interpolated.d.ts.map +0 -1
  470. package/lib/tree/selector-interpolated.js +0 -27
  471. package/lib/tree/selector-interpolated.js.map +0 -1
  472. package/lib/tree/selector-list.d.ts +0 -17
  473. package/lib/tree/selector-list.d.ts.map +0 -1
  474. package/lib/tree/selector-list.js +0 -174
  475. package/lib/tree/selector-list.js.map +0 -1
  476. package/lib/tree/selector-pseudo.d.ts +0 -42
  477. package/lib/tree/selector-pseudo.d.ts.map +0 -1
  478. package/lib/tree/selector-pseudo.js +0 -204
  479. package/lib/tree/selector-pseudo.js.map +0 -1
  480. package/lib/tree/selector-simple.d.ts +0 -5
  481. package/lib/tree/selector-simple.d.ts.map +0 -1
  482. package/lib/tree/selector-simple.js +0 -6
  483. package/lib/tree/selector-simple.js.map +0 -1
  484. package/lib/tree/selector.d.ts +0 -43
  485. package/lib/tree/selector.d.ts.map +0 -1
  486. package/lib/tree/selector.js +0 -56
  487. package/lib/tree/selector.js.map +0 -1
  488. package/lib/tree/sequence.d.ts +0 -43
  489. package/lib/tree/sequence.d.ts.map +0 -1
  490. package/lib/tree/sequence.js +0 -151
  491. package/lib/tree/sequence.js.map +0 -1
  492. package/lib/tree/tree.d.ts +0 -87
  493. package/lib/tree/tree.d.ts.map +0 -1
  494. package/lib/tree/tree.js +0 -2
  495. package/lib/tree/tree.js.map +0 -1
  496. package/lib/tree/url.d.ts +0 -18
  497. package/lib/tree/url.d.ts.map +0 -1
  498. package/lib/tree/url.js +0 -35
  499. package/lib/tree/url.js.map +0 -1
  500. package/lib/tree/util/__tests__/debug-log.d.ts +0 -1
  501. package/lib/tree/util/__tests__/debug-log.d.ts.map +0 -1
  502. package/lib/tree/util/__tests__/debug-log.js +0 -36
  503. package/lib/tree/util/__tests__/debug-log.js.map +0 -1
  504. package/lib/tree/util/calculate.d.ts +0 -3
  505. package/lib/tree/util/calculate.d.ts.map +0 -1
  506. package/lib/tree/util/calculate.js +0 -10
  507. package/lib/tree/util/calculate.js.map +0 -1
  508. package/lib/tree/util/cast.d.ts +0 -10
  509. package/lib/tree/util/cast.d.ts.map +0 -1
  510. package/lib/tree/util/cast.js +0 -87
  511. package/lib/tree/util/cast.js.map +0 -1
  512. package/lib/tree/util/cloning.d.ts +0 -4
  513. package/lib/tree/util/cloning.d.ts.map +0 -1
  514. package/lib/tree/util/cloning.js +0 -8
  515. package/lib/tree/util/cloning.js.map +0 -1
  516. package/lib/tree/util/collections.d.ts +0 -57
  517. package/lib/tree/util/collections.d.ts.map +0 -1
  518. package/lib/tree/util/collections.js +0 -136
  519. package/lib/tree/util/collections.js.map +0 -1
  520. package/lib/tree/util/compare.d.ts +0 -11
  521. package/lib/tree/util/compare.d.ts.map +0 -1
  522. package/lib/tree/util/compare.js +0 -89
  523. package/lib/tree/util/compare.js.map +0 -1
  524. package/lib/tree/util/extend-helpers.d.ts +0 -2
  525. package/lib/tree/util/extend-helpers.d.ts.map +0 -1
  526. package/lib/tree/util/extend-helpers.js +0 -2
  527. package/lib/tree/util/extend-helpers.js.map +0 -1
  528. package/lib/tree/util/extend-roots.d.ts +0 -37
  529. package/lib/tree/util/extend-roots.d.ts.map +0 -1
  530. package/lib/tree/util/extend-roots.js +0 -700
  531. package/lib/tree/util/extend-roots.js.map +0 -1
  532. package/lib/tree/util/extend-roots.old.d.ts +0 -132
  533. package/lib/tree/util/extend-roots.old.d.ts.map +0 -1
  534. package/lib/tree/util/extend-roots.old.js +0 -2272
  535. package/lib/tree/util/extend-roots.old.js.map +0 -1
  536. package/lib/tree/util/extend-trace-debug.d.ts +0 -13
  537. package/lib/tree/util/extend-trace-debug.d.ts.map +0 -1
  538. package/lib/tree/util/extend-trace-debug.js +0 -34
  539. package/lib/tree/util/extend-trace-debug.js.map +0 -1
  540. package/lib/tree/util/extend-walk.d.ts +0 -53
  541. package/lib/tree/util/extend-walk.d.ts.map +0 -1
  542. package/lib/tree/util/extend-walk.js +0 -881
  543. package/lib/tree/util/extend-walk.js.map +0 -1
  544. package/lib/tree/util/extend.d.ts +0 -218
  545. package/lib/tree/util/extend.d.ts.map +0 -1
  546. package/lib/tree/util/extend.js +0 -3182
  547. package/lib/tree/util/extend.js.map +0 -1
  548. package/lib/tree/util/find-extendable-locations.d.ts +0 -2
  549. package/lib/tree/util/find-extendable-locations.d.ts.map +0 -1
  550. package/lib/tree/util/find-extendable-locations.js +0 -2
  551. package/lib/tree/util/find-extendable-locations.js.map +0 -1
  552. package/lib/tree/util/format.d.ts +0 -20
  553. package/lib/tree/util/format.d.ts.map +0 -1
  554. package/lib/tree/util/format.js +0 -67
  555. package/lib/tree/util/format.js.map +0 -1
  556. package/lib/tree/util/is-node.d.ts +0 -13
  557. package/lib/tree/util/is-node.d.ts.map +0 -1
  558. package/lib/tree/util/is-node.js +0 -43
  559. package/lib/tree/util/is-node.js.map +0 -1
  560. package/lib/tree/util/print.d.ts +0 -80
  561. package/lib/tree/util/print.d.ts.map +0 -1
  562. package/lib/tree/util/print.js +0 -205
  563. package/lib/tree/util/print.js.map +0 -1
  564. package/lib/tree/util/process-leading-is.d.ts +0 -25
  565. package/lib/tree/util/process-leading-is.d.ts.map +0 -1
  566. package/lib/tree/util/process-leading-is.js +0 -364
  567. package/lib/tree/util/process-leading-is.js.map +0 -1
  568. package/lib/tree/util/recursion-helper.d.ts +0 -15
  569. package/lib/tree/util/recursion-helper.d.ts.map +0 -1
  570. package/lib/tree/util/recursion-helper.js +0 -43
  571. package/lib/tree/util/recursion-helper.js.map +0 -1
  572. package/lib/tree/util/regex.d.ts +0 -4
  573. package/lib/tree/util/regex.d.ts.map +0 -1
  574. package/lib/tree/util/regex.js +0 -4
  575. package/lib/tree/util/regex.js.map +0 -1
  576. package/lib/tree/util/registry-utils.d.ts +0 -192
  577. package/lib/tree/util/registry-utils.d.ts.map +0 -1
  578. package/lib/tree/util/registry-utils.js +0 -1214
  579. package/lib/tree/util/registry-utils.js.map +0 -1
  580. package/lib/tree/util/ruleset-trace.d.ts +0 -4
  581. package/lib/tree/util/ruleset-trace.d.ts.map +0 -1
  582. package/lib/tree/util/ruleset-trace.js +0 -14
  583. package/lib/tree/util/ruleset-trace.js.map +0 -1
  584. package/lib/tree/util/selector-compare.d.ts +0 -2
  585. package/lib/tree/util/selector-compare.d.ts.map +0 -1
  586. package/lib/tree/util/selector-compare.js +0 -2
  587. package/lib/tree/util/selector-compare.js.map +0 -1
  588. package/lib/tree/util/selector-match-core.d.ts +0 -184
  589. package/lib/tree/util/selector-match-core.d.ts.map +0 -1
  590. package/lib/tree/util/selector-match-core.js +0 -1603
  591. package/lib/tree/util/selector-match-core.js.map +0 -1
  592. package/lib/tree/util/selector-utils.d.ts +0 -30
  593. package/lib/tree/util/selector-utils.d.ts.map +0 -1
  594. package/lib/tree/util/selector-utils.js +0 -100
  595. package/lib/tree/util/selector-utils.js.map +0 -1
  596. package/lib/tree/util/serialize-helper.d.ts +0 -13
  597. package/lib/tree/util/serialize-helper.d.ts.map +0 -1
  598. package/lib/tree/util/serialize-helper.js +0 -387
  599. package/lib/tree/util/serialize-helper.js.map +0 -1
  600. package/lib/tree/util/serialize-types.d.ts +0 -9
  601. package/lib/tree/util/serialize-types.d.ts.map +0 -1
  602. package/lib/tree/util/serialize-types.js +0 -216
  603. package/lib/tree/util/serialize-types.js.map +0 -1
  604. package/lib/tree/util/should-operate.d.ts +0 -23
  605. package/lib/tree/util/should-operate.d.ts.map +0 -1
  606. package/lib/tree/util/should-operate.js +0 -46
  607. package/lib/tree/util/should-operate.js.map +0 -1
  608. package/lib/tree/util/sourcemap.d.ts +0 -7
  609. package/lib/tree/util/sourcemap.d.ts.map +0 -1
  610. package/lib/tree/util/sourcemap.js +0 -25
  611. package/lib/tree/util/sourcemap.js.map +0 -1
  612. package/lib/types/config.d.ts +0 -205
  613. package/lib/types/config.d.ts.map +0 -1
  614. package/lib/types/config.js +0 -2
  615. package/lib/types/config.js.map +0 -1
  616. package/lib/types/index.d.ts +0 -15
  617. package/lib/types/index.d.ts.map +0 -1
  618. package/lib/types/index.js +0 -3
  619. package/lib/types/index.js.map +0 -1
  620. package/lib/types/modes.d.ts.map +0 -1
  621. package/lib/types/modes.js +0 -2
  622. package/lib/types/modes.js.map +0 -1
  623. package/lib/types.d.ts +0 -61
  624. package/lib/types.d.ts.map +0 -1
  625. package/lib/types.js +0 -2
  626. package/lib/types.js.map +0 -1
  627. package/lib/use-webpack-resolver.d.ts +0 -9
  628. package/lib/use-webpack-resolver.d.ts.map +0 -1
  629. package/lib/use-webpack-resolver.js +0 -41
  630. package/lib/use-webpack-resolver.js.map +0 -1
  631. package/lib/visitor/index.d.ts +0 -136
  632. package/lib/visitor/index.d.ts.map +0 -1
  633. package/lib/visitor/index.js +0 -135
  634. package/lib/visitor/index.js.map +0 -1
  635. package/lib/visitor/less-visitor.d.ts +0 -7
  636. package/lib/visitor/less-visitor.d.ts.map +0 -1
  637. package/lib/visitor/less-visitor.js.map +0 -1
@@ -1,566 +0,0 @@
1
- import { Node, F_MAY_ASYNC, F_NON_STATIC, F_VISIBLE, defineType } from './node.js';
2
- import { Rules } from './rules.js';
3
- import { isThenable } from '@jesscss/awaitable-pipe';
4
- import { isNode } from './util/is-node.js';
5
- import { AtRule } from './at-rule.js';
6
- import { Any } from './any.js';
7
- /**
8
- * This is a generic class for:
9
- * - Sass+ `@use` (for stylesheets)
10
- * - Jess `@-compose` and Less `@compose`
11
- * - Less, Sass+, and Jess `@import` / `@-import` that are indicated
12
- * to be processed by the engine
13
- *
14
- * @see https://sass-lang.com/documentation/at-rules/import/
15
- */
16
- export class StyleImport extends Node {
17
- type = 'StyleImport';
18
- shortType = 'style';
19
- constructor(value, options, location, treeContext) {
20
- super(value, options, location, treeContext);
21
- // Style imports are always non-static and may be async
22
- this.addFlags(F_MAY_ASYNC, F_NON_STATIC);
23
- }
24
- getFinalRules(evaluatedRules) {
25
- let { importOptions, type } = this.options;
26
- const reference = importOptions.reference;
27
- const isForward = importOptions.forward === true;
28
- // For compose type, default is protected (not mutable). For import type, default is mutable.
29
- // mutable: false on @import explicitly makes it protected.
30
- const isProtected = type === 'compose'
31
- ? !importOptions.mutable // compose: protected unless mutable: true
32
- : importOptions.mutable === false; // import: mutable unless explicitly mutable: false
33
- let Ruleset = 'public';
34
- let Declaration = 'public';
35
- let Mixin = 'public';
36
- let VarDeclaration = 'public';
37
- if (isProtected) {
38
- Ruleset = 'private';
39
- }
40
- else if (reference) {
41
- /**
42
- * Not sure if this is true.
43
- * They won't be output, but that's not the same as being optional,
44
- * UNLESS we're extending the word 'optional' to mean "not output".
45
- *
46
- * I think what we mean here by "optional" it "not ouptut unless extended".
47
- * Our test for reference therefore should mimic Less behavior.
48
- */
49
- Ruleset = 'optional';
50
- }
51
- /**
52
- * Create a rules wrapper so we can set visibility.
53
- * The inner rules may be static, but the import may
54
- * have different import settings.
55
- *
56
- * For compose type:
57
- * - Variables and mixins are visible to the direct parent (the file that imports them)
58
- * - If 'export' flag is set, variables and mixins are also forwarded to downstream stylesheets
59
- * - The 'local' flag means: visible to direct parent, but not re-exported to parent's parent
60
- */
61
- const isReferenceMode = ((type === 'import' && (importOptions?._dedupe === true || reference))
62
- || (type === 'compose' && reference));
63
- // De-duped imports mutate node options during markReferenceMode; use deep clone so
64
- // repeated imports do not retroactively mutate previously emitted import trees.
65
- // Keep explicit reference imports on shallow clone to preserve existing extend wiring.
66
- const useDeepClone = Boolean(type === 'import'
67
- && (importOptions.multiple === true || importOptions._dedupe === true));
68
- let out = (useDeepClone ? evaluatedRules.clone(true) : evaluatedRules.clone());
69
- // Import type: variables are visible and re-exported (not local)
70
- // Compose type: variables are visible to parent but not transitive by default (`local: true`)
71
- // Forward: not visible locally but *is* transitive (`local: false`)
72
- const isLocal = type === 'compose' && !isForward;
73
- out.options = {
74
- rulesVisibility: { Ruleset, Declaration, Mixin, VarDeclaration },
75
- local: isLocal,
76
- forward: isForward,
77
- referenceMode: isReferenceMode,
78
- readonly: importOptions.readonly ?? (type === 'compose' ? true : false)
79
- };
80
- if (isReferenceMode) {
81
- const markReferenceMode = (node) => {
82
- const nodeOptions = node.options;
83
- nodeOptions.referenceMode = true;
84
- const maybeRulesValue = node.value;
85
- const rules = maybeRulesValue?.rules;
86
- if (rules && isNode(rules, 'Rules')) {
87
- markReferenceMode(rules);
88
- }
89
- const children = node.value;
90
- if (Array.isArray(children)) {
91
- for (const child of children) {
92
- if (isNode(child, ['Rules', 'Ruleset', 'AtRule'])) {
93
- markReferenceMode(child);
94
- }
95
- }
96
- }
97
- };
98
- markReferenceMode(out);
99
- }
100
- // Forwarded modules should never render output at this scope.
101
- if (isForward) {
102
- out.removeFlag(F_VISIBLE);
103
- }
104
- // Set sourceNode so variable lookups know they can cross import boundaries
105
- out.sourceNode = this;
106
- this.adopt(out);
107
- return out;
108
- }
109
- /**
110
- * Defer import-path interpolation to evalNode so unresolved vars can be retried
111
- * after later imports/assignments in the same Rules scope have evaluated.
112
- */
113
- preEval(_context) {
114
- return this;
115
- }
116
- /**
117
- * @note
118
- * When imports are evaluated, they should be deeply cloned. The reason is that
119
- * they can be used in multiple places, and can be evaluated differently
120
- * each time, so they are more like a function call.
121
- *
122
- * @todo
123
- * How do extends work then?
124
- */
125
- evalNode(context) {
126
- let node = this;
127
- const { path, with: withValues } = node.value;
128
- const { options } = node;
129
- options.importOptions ??= {};
130
- const { type, importOptions } = options;
131
- let maybePath;
132
- try {
133
- maybePath = path.eval(context);
134
- }
135
- catch (e) {
136
- // Tag path-resolution errors so the eval-queue retry policy can
137
- // distinguish "path interpolation not ready" (cheap, worth retrying)
138
- // from "content evaluation failed" (expensive clone, not worth retrying).
139
- e._isPathResolutionError = true;
140
- throw e;
141
- }
142
- let originalDepth = context.depth;
143
- context.depth = this.depth;
144
- /**
145
- * @todo - Add options
146
- *
147
- * Note that the Less plugin should trigger a unique default behavior
148
- * for `@import` which is that it is de-duplicated by default. Meaning
149
- * that it won't render rulesets twice per compilation. I think that
150
- * means that it's just kind of ignored without an explicit `multiple`
151
- * option. Since all vars are global per compilation, it should just
152
- * work.
153
- */
154
- const finalize = async (finalPath) => {
155
- const previousTreeContext = context.treeContext;
156
- // Inherit "reference branch" semantics lexically for nested imports unless
157
- // `multiple` explicitly opts into fresh output.
158
- const inheritedReferenceMode = context.inReferenceImportScope;
159
- const previousExplicitReference = importOptions.reference;
160
- let pushedImportScope = false;
161
- if (inheritedReferenceMode && !importOptions.multiple) {
162
- importOptions.reference = true;
163
- }
164
- if (node.treeContext) {
165
- context.treeContext = node.treeContext;
166
- }
167
- if (importOptions.multiple || importOptions.reference) {
168
- // Scope push/pop is intentionally paired in this method's try/finally.
169
- // This keeps branch semantics local to this import evaluation path.
170
- context.pushImportScope({
171
- multiple: importOptions.multiple === true,
172
- reference: importOptions.reference === true
173
- });
174
- pushedImportScope = true;
175
- }
176
- try {
177
- const isInlineImport = importOptions.inline === true;
178
- let rules;
179
- let resolvedPath;
180
- if (isInlineImport) {
181
- const resolved = await context.resolveImportPath(finalPath);
182
- resolvedPath = resolved.resolvedPath;
183
- const sourceGetter = context.plugins.find(plugin => plugin.getSource);
184
- if (!sourceGetter) {
185
- throw new Error('No source getter found');
186
- }
187
- const source = await sourceGetter.getSource(resolvedPath);
188
- const sourceNode = new Any(source, { role: 'any' });
189
- rules = this.wrapInlineSourceWithPostlude(sourceNode, importOptions.postlude);
190
- }
191
- else {
192
- try {
193
- ({ node: rules, resolvedPath } = await context.getTree(finalPath, importOptions));
194
- }
195
- catch (error) {
196
- if (importOptions.optional) {
197
- return Rules.create([]);
198
- }
199
- if (importOptions.reference && (error?.phase === 'parse' || String(error?.code ?? '').startsWith('parse/'))) {
200
- return Rules.create([]);
201
- }
202
- throw error;
203
- }
204
- }
205
- // Set sourceNode immediately after getting the Rules, before any evaluation
206
- // This ensures that when preEval clones the Rules, the cloned Rules will have sourceNode set
207
- // and registerNode can detect this is an imported Rules
208
- rules.sourceNode = node;
209
- let evaldRules = context.evaldTrees.get(resolvedPath);
210
- // Compose caching semantics:
211
- // - The first time a module is composed, we evaluate and cache the evaluated Rules.
212
- // - Subsequent compose imports reuse the cached evaluated Rules (so re-imports don't re-run evaluation).
213
- // - Subsequent compose imports default to "reference" mode unless `multiple: true` is set,
214
- // so rulesets / at-rules are not output again.
215
- if (type === 'compose' && evaldRules) {
216
- if (withValues) {
217
- // Sass-style: once configured, cannot be configured again.
218
- // (We keep parsing show/hide/prefix metadata elsewhere; this is for with/set configs.)
219
- throw new Error('Cannot configure a stylesheet more than once.');
220
- }
221
- // Reuse cached evaluated rules tree.
222
- rules = evaldRules;
223
- // Default: de-dupe output for compose re-imports unless explicitly multiple.
224
- if (!importOptions.multiple) {
225
- importOptions.reference = true;
226
- }
227
- }
228
- const inMultipleImportBranch = context.inMultipleImportScope;
229
- if (type === 'import' && importOptions.once !== false && !importOptions.multiple && !inMultipleImportBranch && evaldRules) {
230
- rules = evaldRules;
231
- importOptions._dedupe = true;
232
- }
233
- if (withValues) {
234
- // Once configured, cannot be configured again (handled above for compose+cache).
235
- if (withValues.type === 'set' && evaldRules) {
236
- throw new Error('Cannot configure a stylesheet more than once.');
237
- }
238
- // Clone the imported rules BEFORE evaluation so registries are populated on the clone
239
- let modifiedRules = rules.clone(true);
240
- // withValues.node might be a Reference, so evaluate it first to get Rules
241
- let withRulesNode = withValues.node;
242
- if (isNode(withRulesNode, 'Reference')) {
243
- // Evaluate the reference to get the actual Rules
244
- const evaluated = await withRulesNode.eval(context);
245
- if (!isNode(evaluated, 'Collection')) {
246
- throw new Error('with/set node must evaluate to a Collection');
247
- }
248
- withRulesNode = evaluated;
249
- }
250
- // withRules don't need to be cloned because they are used once
251
- let withRules = withRulesNode;
252
- // Build the declaration registry for efficient lookups
253
- // This avoids O(n*m) complexity when we have many injected variables
254
- // First, register all nodes in modifiedRules so they're in the registry
255
- for (const node of modifiedRules.value) {
256
- modifiedRules.registerNode(node);
257
- }
258
- const declarationRegistry = modifiedRules.getRegistry('declaration');
259
- declarationRegistry.indexPendingItems();
260
- // Separate injected variables into two groups:
261
- // 1. Variables that replace existing ones (found in imported rules)
262
- // 2. Variables that are new (not found in imported rules)
263
- const newVariables = [];
264
- // For each injected variable, find and replace the first matching declaration
265
- // in the imported rules, OR if not found, add it to newVariables to inject at the top.
266
- // This ensures the injected value "overrides" the original.
267
- // Works correctly for both scope lookup ($var) and linear lookup ($^var):
268
- // - For linear lookup: injected vars come first, so they're found first
269
- // - For scope lookup: original is replaced, so injected value wins
270
- for (const injectedNode of withRules.value) {
271
- if (isNode(injectedNode, 'VarDeclaration')) {
272
- const varName = injectedNode.value.name?.toString();
273
- if (varName) {
274
- // Use the registry for efficient lookup instead of linear search
275
- const declarations = declarationRegistry.index.get(varName);
276
- if (declarations) {
277
- // Find the first VarDeclaration in the set (sorted by index)
278
- const existingDecl = Array.from(declarations).find(decl => isNode(decl, 'VarDeclaration'));
279
- if (existingDecl) {
280
- // Remove the old declaration from the registry
281
- declarations.delete(existingDecl);
282
- // Find its index in the array and replace it
283
- const index = modifiedRules.value.indexOf(existingDecl);
284
- if (index !== -1) {
285
- // Adopt the new node and replace in array
286
- modifiedRules.adopt(injectedNode);
287
- modifiedRules.value[index] = injectedNode;
288
- // Add the new declaration to the registry
289
- declarations.add(injectedNode);
290
- // Register the new node so it's properly indexed
291
- modifiedRules.registerNode(injectedNode);
292
- }
293
- }
294
- else {
295
- // Not found, add to newVariables to inject at the top
296
- newVariables.push(injectedNode);
297
- }
298
- }
299
- else {
300
- // Not found in registry, add to newVariables to inject at the top
301
- newVariables.push(injectedNode);
302
- }
303
- }
304
- else {
305
- // Non-variable nodes (if any) are kept as-is
306
- newVariables.push(injectedNode);
307
- }
308
- }
309
- else {
310
- // Non-VarDeclaration nodes are kept as-is
311
- newVariables.push(injectedNode);
312
- }
313
- }
314
- // Create the final rules structure:
315
- // [new injected variables (not found in imported), ...all nodes from modified imported rules (with replacements)]
316
- // Injected variables that aren't found should be at the TOP so they're found first
317
- // for linear lookup ($^var)
318
- // We flatten the structure so all variables are in the same Rules scope
319
- const finalRules = Rules.create([]);
320
- // First, add new injected variables that weren't found in imported rules (at the top)
321
- for (const newNode of newVariables) {
322
- finalRules.adopt(newNode);
323
- finalRules.value.push(newNode);
324
- }
325
- // Then, add all nodes from the modified imported rules (flattened, with replacements)
326
- for (const node of modifiedRules.value) {
327
- finalRules.adopt(node);
328
- finalRules.value.push(node);
329
- }
330
- rules = finalRules;
331
- }
332
- // For compose type, register and push extend root BEFORE evaluation
333
- // so extends inside the import use the correct root
334
- const parentExtendRoot = context.extendRoots.getCurrentExtendRoot();
335
- let pushedExtendRoot = false;
336
- if (type === 'compose') {
337
- // Register the Rules as an extend root (use rules before cloning/evaluation)
338
- // We'll update the registration after evaluation if the Rules changes
339
- // For compose type, default is protected (not mutable)
340
- const isComposeProtected = !importOptions.mutable;
341
- context.extendRoots.registerRoot(rules, parentExtendRoot, {
342
- isProtected: isComposeProtected,
343
- isCompose: true,
344
- namespace: node.options.namespace
345
- });
346
- context.extendRoots.pushExtendRoot(rules);
347
- pushedExtendRoot = true;
348
- }
349
- /** Freshly evaluate the rules in these circumstances
350
- * - `with` (or `set`) values are present
351
- * - the rules have not been evaluated yet
352
- * - the import type is `import`
353
- */
354
- let evaluatedInImplicitReferenceMode = false;
355
- if (withValues || !evaldRules || type === 'import') {
356
- const preserveOriginalNodes = context.preserveOriginalNodes;
357
- context.preserveOriginalNodes = true;
358
- let pushedImplicitReferenceEvalScope = false;
359
- const isImplicitReferenceModeForEval = (type === 'import'
360
- && importOptions.reference !== true
361
- && importOptions._dedupe === true
362
- && !importOptions.multiple);
363
- if (isImplicitReferenceModeForEval) {
364
- evaluatedInImplicitReferenceMode = true;
365
- // Dedupe re-imports behave like an implicit reference traversal:
366
- // evaluate for symbol availability, but avoid outward extend side effects.
367
- context.pushImportScope({ reference: true });
368
- pushedImplicitReferenceEvalScope = true;
369
- }
370
- // For protected imports (mutable: false), push the rules to extend root stack
371
- // so rulesets register in the import's registry, not the parent's
372
- const isImportProtected = type === 'import' && importOptions.mutable === false;
373
- const shouldUseLocalExtendRoot = isImportProtected || isImplicitReferenceModeForEval;
374
- if (isImplicitReferenceModeForEval) {
375
- // Link local in-eval root so external extends can still target deduped imports.
376
- context.extendRoots.registerRoot(rules, parentExtendRoot, {
377
- isProtected: isImportProtected,
378
- namespace: node.options.namespace
379
- });
380
- }
381
- if (shouldUseLocalExtendRoot) {
382
- context.extendRoots.pushExtendRoot(rules);
383
- }
384
- try {
385
- // Call preEval first to get the cloned Rules (if cloning occurs)
386
- // sourceNode is already set above, so the cloned Rules will have it
387
- rules = await rules.preEval(context);
388
- if (type === 'import') {
389
- /** Needed at evaluation time for older import type */
390
- node.adopt(rules);
391
- }
392
- rules = await rules.eval(context);
393
- }
394
- finally {
395
- context.preserveOriginalNodes = preserveOriginalNodes;
396
- if (pushedImplicitReferenceEvalScope) {
397
- context.popImportScope();
398
- }
399
- if (shouldUseLocalExtendRoot) {
400
- context.extendRoots.popExtendRoot();
401
- }
402
- }
403
- // Cache compose modules (and configured modules) after first evaluation.
404
- if (type === 'compose'
405
- || withValues?.type === 'set'
406
- || (type === 'import' && importOptions.once !== false)) {
407
- context.evaldTrees.set(resolvedPath, rules);
408
- }
409
- }
410
- else {
411
- // Clone the unevaluated rules BEFORE evaluation so registries are populated on the clone
412
- // This ensures registration happens post-clone, not on the cached evaldRules
413
- // sourceNode is already set above, so the cloned Rules will have it
414
- rules = rules.clone(true);
415
- let preserveOriginalNodes = context.preserveOriginalNodes;
416
- context.preserveOriginalNodes = true;
417
- // Note: For compose type, we don't set rules.parent = node
418
- // (only import type needs this for older import behavior)
419
- rules = await rules.eval(context);
420
- context.preserveOriginalNodes = preserveOriginalNodes;
421
- }
422
- // Pop extend root if we pushed one
423
- if (pushedExtendRoot) {
424
- context.extendRoots.popExtendRoot();
425
- }
426
- if (evaluatedInImplicitReferenceMode) {
427
- rules.options.referenceMode = false;
428
- }
429
- let finalRules = node.getFinalRules(rules);
430
- if (evaluatedInImplicitReferenceMode) {
431
- finalRules.options.referenceMode = false;
432
- }
433
- if (importOptions.postlude && !isInlineImport) {
434
- finalRules = this.wrapEvaluatedRulesWithPostlude(finalRules, importOptions.postlude);
435
- }
436
- // For import type, register the final Rules as a child root of the parent
437
- // so extends from the parent can find rulesets in the imported Rules
438
- // Do this AFTER getFinalRules because it returns a cloned Rules
439
- if (type === 'import') {
440
- const currentParentExtendRoot = context.extendRoots.getCurrentExtendRoot();
441
- // Import type is mutable by default (unless explicitly mutable: false)
442
- const isImportProtected = importOptions.mutable === false;
443
- const isImplicitReferenceModeForRegistration = (importOptions._dedupe === true
444
- && importOptions.reference !== true
445
- && !importOptions.multiple);
446
- const shouldReRegisterLocalRootRulesets = isImportProtected || isImplicitReferenceModeForRegistration;
447
- context.extendRoots.registerRoot(finalRules, currentParentExtendRoot, {
448
- isProtected: isImportProtected,
449
- namespace: node.options.namespace
450
- });
451
- // For imports that evaluated under a local extend root (protected import or implicit _dedupe
452
- // reference traversal), rulesets were registered in the pre-finalized Rules root. Since
453
- // getFinalRules can clone, re-register all descendant rulesets under finalRules.
454
- // during preEval (when we pushed rules to the stack). Since getFinalRules clones,
455
- // we need to re-register rulesets in finalRules' registry.
456
- if (shouldReRegisterLocalRootRulesets) {
457
- const finalRulesRegistry = finalRules.getRegistry('ruleset');
458
- for (const maybeRuleset of finalRules.nodes()) {
459
- if (isNode(maybeRuleset, 'Ruleset')) {
460
- finalRulesRegistry.add(maybeRuleset);
461
- }
462
- }
463
- }
464
- // Don't push to stack - import type uses parent's root for extends inside the import
465
- // But we register it so extends from parent can find rulesets in the imported Rules
466
- }
467
- return finalRules;
468
- }
469
- finally {
470
- context.treeContext = previousTreeContext;
471
- if (pushedImportScope) {
472
- context.popImportScope();
473
- }
474
- importOptions.reference = previousExplicitReference;
475
- }
476
- };
477
- if (isThenable(maybePath)) {
478
- return maybePath.then(async (p) => {
479
- const finalPath = p.valueOf();
480
- context.depth = originalDepth;
481
- return finalize(finalPath);
482
- });
483
- }
484
- const finalPath = maybePath.valueOf();
485
- context.depth = originalDepth;
486
- return finalize(finalPath);
487
- }
488
- /**
489
- * Applies CSS import postlude wrappers around inline source content.
490
- * Falls back to `@media <postlude>` for plain query nodes.
491
- */
492
- wrapInlineSourceWithPostlude(sourceNode, postlude) {
493
- if (!postlude) {
494
- return Rules.create([sourceNode]);
495
- }
496
- let wrapped = sourceNode;
497
- const postludeNodes = isNode(postlude, ['Sequence', 'List']) ? postlude.value : [postlude];
498
- for (let i = postludeNodes.length - 1; i >= 0; i--) {
499
- const current = postludeNodes[i];
500
- const body = Rules.create([wrapped]);
501
- if (isNode(current, 'Call')) {
502
- const callName = String(current.value.name).toLowerCase();
503
- if (callName === 'media' || callName === 'supports' || callName === 'layer') {
504
- const args = current.value.args?.value ?? [];
505
- const prelude = args.length <= 1 ? args[0] : current.value.args;
506
- if (prelude) {
507
- wrapped = new AtRule({
508
- name: new Any(`@${callName}`, { role: 'atkeyword' }),
509
- prelude,
510
- rules: body
511
- });
512
- continue;
513
- }
514
- }
515
- }
516
- wrapped = new AtRule({
517
- name: new Any('@media', { role: 'atkeyword' }),
518
- prelude: current,
519
- rules: body
520
- });
521
- }
522
- return Rules.create([wrapped]);
523
- }
524
- /**
525
- * Applies CSS import postlude wrappers around evaluated stylesheet rules.
526
- * Used for Less-style imports with media/layer/supports postludes.
527
- */
528
- wrapEvaluatedRulesWithPostlude(rules, postlude) {
529
- if (!postlude) {
530
- return rules;
531
- }
532
- const postludeNodes = isNode(postlude, ['Sequence', 'List']) ? postlude.value : [postlude];
533
- let wrappedRules = rules;
534
- for (let i = postludeNodes.length - 1; i >= 0; i--) {
535
- const current = postludeNodes[i];
536
- if (isNode(current, 'Call')) {
537
- const callName = String(current.value.name).toLowerCase();
538
- if (callName === 'media' || callName === 'supports' || callName === 'layer') {
539
- const args = current.value.args?.value ?? [];
540
- const prelude = args.length <= 1 ? args[0] : current.value.args;
541
- if (prelude) {
542
- const wrappedAtRule = new AtRule({
543
- name: new Any(`@${callName}`, { role: 'atkeyword' }),
544
- prelude,
545
- rules: wrappedRules
546
- });
547
- wrappedRules = Rules.create([wrappedAtRule]);
548
- continue;
549
- }
550
- }
551
- }
552
- const mediaAtRule = new AtRule({
553
- name: new Any('@media', { role: 'atkeyword' }),
554
- prelude: current,
555
- rules: wrappedRules
556
- });
557
- wrappedRules = Rules.create([mediaAtRule]);
558
- }
559
- return wrappedRules;
560
- }
561
- }
562
- defineType(StyleImport, 'StyleImport', 'style');
563
- export const style = (...args) => {
564
- return new StyleImport(...args);
565
- };
566
- //# sourceMappingURL=import-style.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"import-style.js","sourceRoot":"","sources":["../../src/tree/import-style.ts"],"names":[],"mappings":"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"}