zyzz 0.0.0 → 0.0.2

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 (678) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +380 -0
  3. package/dist/Config.d.ts +170 -0
  4. package/dist/Config.d.ts.map +1 -0
  5. package/dist/Config.js +249 -0
  6. package/dist/Config.js.map +1 -0
  7. package/dist/Props.d.ts +7 -0
  8. package/dist/Props.d.ts.map +1 -0
  9. package/dist/Props.js +3 -0
  10. package/dist/Props.js.map +1 -0
  11. package/dist/Style.d.ts +167 -0
  12. package/dist/Style.d.ts.map +1 -0
  13. package/dist/Style.js +284 -0
  14. package/dist/Style.js.map +1 -0
  15. package/dist/Theme.d.ts +154 -0
  16. package/dist/Theme.d.ts.map +1 -0
  17. package/dist/Theme.js +257 -0
  18. package/dist/Theme.js.map +1 -0
  19. package/dist/babel/NativeEdits.d.ts +8 -0
  20. package/dist/babel/NativeEdits.d.ts.map +1 -0
  21. package/dist/babel/NativeEdits.js +233 -0
  22. package/dist/babel/NativeEdits.js.map +1 -0
  23. package/dist/babel/NativeJsx.d.ts +10 -0
  24. package/dist/babel/NativeJsx.d.ts.map +1 -0
  25. package/dist/babel/NativeJsx.js +204 -0
  26. package/dist/babel/NativeJsx.js.map +1 -0
  27. package/dist/babel/index.d.ts +51 -0
  28. package/dist/babel/index.d.ts.map +1 -0
  29. package/dist/babel/index.js +220 -0
  30. package/dist/babel/index.js.map +1 -0
  31. package/dist/cli/index.d.ts +3 -0
  32. package/dist/cli/index.d.ts.map +1 -0
  33. package/dist/cli/index.js +178 -0
  34. package/dist/cli/index.js.map +1 -0
  35. package/dist/compiler/Graph.d.ts +64 -0
  36. package/dist/compiler/Graph.d.ts.map +1 -0
  37. package/dist/compiler/Graph.js +1111 -0
  38. package/dist/compiler/Graph.js.map +1 -0
  39. package/dist/compiler/Native.d.ts +53 -0
  40. package/dist/compiler/Native.d.ts.map +1 -0
  41. package/dist/compiler/Native.js +617 -0
  42. package/dist/compiler/Native.js.map +1 -0
  43. package/dist/compiler/Source.d.ts +165 -0
  44. package/dist/compiler/Source.d.ts.map +1 -0
  45. package/dist/compiler/Source.js +990 -0
  46. package/dist/compiler/Source.js.map +1 -0
  47. package/dist/compiler/Transform.d.ts +57 -0
  48. package/dist/compiler/Transform.d.ts.map +1 -0
  49. package/dist/compiler/Transform.js +884 -0
  50. package/dist/compiler/Transform.js.map +1 -0
  51. package/dist/compiler/index.d.ts +13 -0
  52. package/dist/compiler/index.d.ts.map +1 -0
  53. package/dist/compiler/index.js +13 -0
  54. package/dist/compiler/index.js.map +1 -0
  55. package/dist/compiler/internal/Applications.d.ts +35 -0
  56. package/dist/compiler/internal/Applications.d.ts.map +1 -0
  57. package/dist/compiler/internal/Applications.js +248 -0
  58. package/dist/compiler/internal/Applications.js.map +1 -0
  59. package/dist/compiler/internal/AtRules.d.ts +8 -0
  60. package/dist/compiler/internal/AtRules.d.ts.map +1 -0
  61. package/dist/compiler/internal/AtRules.js +180 -0
  62. package/dist/compiler/internal/AtRules.js.map +1 -0
  63. package/dist/compiler/internal/Catalogs.d.ts +19 -0
  64. package/dist/compiler/internal/Catalogs.d.ts.map +1 -0
  65. package/dist/compiler/internal/Catalogs.js +68 -0
  66. package/dist/compiler/internal/Catalogs.js.map +1 -0
  67. package/dist/compiler/internal/ColorProfiles.d.ts +3 -0
  68. package/dist/compiler/internal/ColorProfiles.d.ts.map +1 -0
  69. package/dist/compiler/internal/ColorProfiles.js +84 -0
  70. package/dist/compiler/internal/ColorProfiles.js.map +1 -0
  71. package/dist/compiler/internal/CompositionBindings.d.ts +16 -0
  72. package/dist/compiler/internal/CompositionBindings.d.ts.map +1 -0
  73. package/dist/compiler/internal/CompositionBindings.js +89 -0
  74. package/dist/compiler/internal/CompositionBindings.js.map +1 -0
  75. package/dist/compiler/internal/Compositions.d.ts +32 -0
  76. package/dist/compiler/internal/Compositions.d.ts.map +1 -0
  77. package/dist/compiler/internal/Compositions.js +464 -0
  78. package/dist/compiler/internal/Compositions.js.map +1 -0
  79. package/dist/compiler/internal/Configurations.d.ts +21 -0
  80. package/dist/compiler/internal/Configurations.d.ts.map +1 -0
  81. package/dist/compiler/internal/Configurations.js +171 -0
  82. package/dist/compiler/internal/Configurations.js.map +1 -0
  83. package/dist/compiler/internal/Contract.d.ts +27 -0
  84. package/dist/compiler/internal/Contract.d.ts.map +1 -0
  85. package/dist/compiler/internal/Contract.js +600 -0
  86. package/dist/compiler/internal/Contract.js.map +1 -0
  87. package/dist/compiler/internal/Contributions.d.ts +54 -0
  88. package/dist/compiler/internal/Contributions.d.ts.map +1 -0
  89. package/dist/compiler/internal/Contributions.js +1109 -0
  90. package/dist/compiler/internal/Contributions.js.map +1 -0
  91. package/dist/compiler/internal/Descriptors.d.ts +15 -0
  92. package/dist/compiler/internal/Descriptors.d.ts.map +1 -0
  93. package/dist/compiler/internal/Descriptors.js +183 -0
  94. package/dist/compiler/internal/Descriptors.js.map +1 -0
  95. package/dist/compiler/internal/Dynamic.d.ts +14 -0
  96. package/dist/compiler/internal/Dynamic.d.ts.map +1 -0
  97. package/dist/compiler/internal/Dynamic.js +172 -0
  98. package/dist/compiler/internal/Dynamic.js.map +1 -0
  99. package/dist/compiler/internal/Edits.d.ts +12 -0
  100. package/dist/compiler/internal/Edits.d.ts.map +1 -0
  101. package/dist/compiler/internal/Edits.js +5 -0
  102. package/dist/compiler/internal/Edits.js.map +1 -0
  103. package/dist/compiler/internal/Expression.d.ts +12 -0
  104. package/dist/compiler/internal/Expression.d.ts.map +1 -0
  105. package/dist/compiler/internal/Expression.js +98 -0
  106. package/dist/compiler/internal/Expression.js.map +1 -0
  107. package/dist/compiler/internal/Functions.d.ts +5 -0
  108. package/dist/compiler/internal/Functions.d.ts.map +1 -0
  109. package/dist/compiler/internal/Functions.js +191 -0
  110. package/dist/compiler/internal/Functions.js.map +1 -0
  111. package/dist/compiler/internal/Identifiers.d.ts +9 -0
  112. package/dist/compiler/internal/Identifiers.d.ts.map +1 -0
  113. package/dist/compiler/internal/Identifiers.js +106 -0
  114. package/dist/compiler/internal/Identifiers.js.map +1 -0
  115. package/dist/compiler/internal/Keyframes.d.ts +5 -0
  116. package/dist/compiler/internal/Keyframes.d.ts.map +1 -0
  117. package/dist/compiler/internal/Keyframes.js +51 -0
  118. package/dist/compiler/internal/Keyframes.js.map +1 -0
  119. package/dist/compiler/internal/Namespaces.d.ts +17 -0
  120. package/dist/compiler/internal/Namespaces.d.ts.map +1 -0
  121. package/dist/compiler/internal/Namespaces.js +265 -0
  122. package/dist/compiler/internal/Namespaces.js.map +1 -0
  123. package/dist/compiler/internal/NativeBindings.d.ts +74 -0
  124. package/dist/compiler/internal/NativeBindings.d.ts.map +1 -0
  125. package/dist/compiler/internal/NativeBindings.js +117 -0
  126. package/dist/compiler/internal/NativeBindings.js.map +1 -0
  127. package/dist/compiler/internal/PackedStyles.d.ts +35 -0
  128. package/dist/compiler/internal/PackedStyles.d.ts.map +1 -0
  129. package/dist/compiler/internal/PackedStyles.js +345 -0
  130. package/dist/compiler/internal/PackedStyles.js.map +1 -0
  131. package/dist/compiler/internal/Properties.d.ts +5 -0
  132. package/dist/compiler/internal/Properties.d.ts.map +1 -0
  133. package/dist/compiler/internal/Properties.js +82 -0
  134. package/dist/compiler/internal/Properties.js.map +1 -0
  135. package/dist/compiler/internal/RecipeConditions.d.ts +41 -0
  136. package/dist/compiler/internal/RecipeConditions.d.ts.map +1 -0
  137. package/dist/compiler/internal/RecipeConditions.js +82 -0
  138. package/dist/compiler/internal/RecipeConditions.js.map +1 -0
  139. package/dist/compiler/internal/RecipePayloads.d.ts +31 -0
  140. package/dist/compiler/internal/RecipePayloads.d.ts.map +1 -0
  141. package/dist/compiler/internal/RecipePayloads.js +99 -0
  142. package/dist/compiler/internal/RecipePayloads.js.map +1 -0
  143. package/dist/compiler/internal/Recipes.d.ts +32 -0
  144. package/dist/compiler/internal/Recipes.d.ts.map +1 -0
  145. package/dist/compiler/internal/Recipes.js +339 -0
  146. package/dist/compiler/internal/Recipes.js.map +1 -0
  147. package/dist/compiler/internal/Relative.d.ts +19 -0
  148. package/dist/compiler/internal/Relative.d.ts.map +1 -0
  149. package/dist/compiler/internal/Relative.js +62 -0
  150. package/dist/compiler/internal/Relative.js.map +1 -0
  151. package/dist/compiler/internal/Scope.d.ts +10 -0
  152. package/dist/compiler/internal/Scope.d.ts.map +1 -0
  153. package/dist/compiler/internal/Scope.js +28 -0
  154. package/dist/compiler/internal/Scope.js.map +1 -0
  155. package/dist/compiler/internal/Selectors.d.ts +12 -0
  156. package/dist/compiler/internal/Selectors.d.ts.map +1 -0
  157. package/dist/compiler/internal/Selectors.js +265 -0
  158. package/dist/compiler/internal/Selectors.js.map +1 -0
  159. package/dist/compiler/internal/Static.d.ts +39 -0
  160. package/dist/compiler/internal/Static.d.ts.map +1 -0
  161. package/dist/compiler/internal/Static.js +532 -0
  162. package/dist/compiler/internal/Static.js.map +1 -0
  163. package/dist/compiler/internal/Stylesheets.d.ts +47 -0
  164. package/dist/compiler/internal/Stylesheets.d.ts.map +1 -0
  165. package/dist/compiler/internal/Stylesheets.js +272 -0
  166. package/dist/compiler/internal/Stylesheets.js.map +1 -0
  167. package/dist/compiler/internal/Syntax.d.ts +17 -0
  168. package/dist/compiler/internal/Syntax.d.ts.map +1 -0
  169. package/dist/compiler/internal/Syntax.js +19 -0
  170. package/dist/compiler/internal/Syntax.js.map +1 -0
  171. package/dist/compiler/internal/Themes.d.ts +158 -0
  172. package/dist/compiler/internal/Themes.d.ts.map +1 -0
  173. package/dist/compiler/internal/Themes.js +1169 -0
  174. package/dist/compiler/internal/Themes.js.map +1 -0
  175. package/dist/compiler/internal/Variables.d.ts +31 -0
  176. package/dist/compiler/internal/Variables.d.ts.map +1 -0
  177. package/dist/compiler/internal/Variables.js +376 -0
  178. package/dist/compiler/internal/Variables.js.map +1 -0
  179. package/dist/compiler/internal/ViewTransitions.d.ts +3 -0
  180. package/dist/compiler/internal/ViewTransitions.d.ts.map +1 -0
  181. package/dist/compiler/internal/ViewTransitions.js +68 -0
  182. package/dist/compiler/internal/ViewTransitions.js.map +1 -0
  183. package/dist/cx.d.ts +18 -0
  184. package/dist/cx.d.ts.map +1 -0
  185. package/dist/cx.js +60 -0
  186. package/dist/cx.js.map +1 -0
  187. package/dist/default.d.ts +2008 -0
  188. package/dist/default.d.ts.map +1 -0
  189. package/dist/default.js +243 -0
  190. package/dist/default.js.map +7 -0
  191. package/dist/default.js.zyzz.json +1 -0
  192. package/dist/index.d.ts +21 -0
  193. package/dist/index.d.ts.map +1 -0
  194. package/dist/index.js +19 -0
  195. package/dist/index.js.map +1 -0
  196. package/dist/internal/Authoring.d.ts +26 -0
  197. package/dist/internal/Authoring.d.ts.map +1 -0
  198. package/dist/internal/Authoring.js +134 -0
  199. package/dist/internal/Authoring.js.map +1 -0
  200. package/dist/internal/Binding.d.ts +64 -0
  201. package/dist/internal/Binding.d.ts.map +1 -0
  202. package/dist/internal/Binding.js +27 -0
  203. package/dist/internal/Binding.js.map +1 -0
  204. package/dist/internal/BindingDomains.d.ts +11 -0
  205. package/dist/internal/BindingDomains.d.ts.map +1 -0
  206. package/dist/internal/BindingDomains.js +459 -0
  207. package/dist/internal/BindingDomains.js.map +1 -0
  208. package/dist/internal/Cascade.d.ts +45 -0
  209. package/dist/internal/Cascade.d.ts.map +1 -0
  210. package/dist/internal/Cascade.js +165 -0
  211. package/dist/internal/Cascade.js.map +1 -0
  212. package/dist/internal/Compound.d.ts +132 -0
  213. package/dist/internal/Compound.d.ts.map +1 -0
  214. package/dist/internal/Compound.js +2 -0
  215. package/dist/internal/Compound.js.map +1 -0
  216. package/dist/internal/Condition.d.ts +33 -0
  217. package/dist/internal/Condition.d.ts.map +1 -0
  218. package/dist/internal/Condition.js +180 -0
  219. package/dist/internal/Condition.js.map +1 -0
  220. package/dist/internal/Corner.d.ts +9 -0
  221. package/dist/internal/Corner.d.ts.map +1 -0
  222. package/dist/internal/Corner.js +14 -0
  223. package/dist/internal/Corner.js.map +1 -0
  224. package/dist/internal/FunctionSyntax.d.ts +27 -0
  225. package/dist/internal/FunctionSyntax.d.ts.map +1 -0
  226. package/dist/internal/FunctionSyntax.js +91 -0
  227. package/dist/internal/FunctionSyntax.js.map +1 -0
  228. package/dist/internal/FunctionValue.d.ts +19 -0
  229. package/dist/internal/FunctionValue.d.ts.map +1 -0
  230. package/dist/internal/FunctionValue.js +2 -0
  231. package/dist/internal/FunctionValue.js.map +1 -0
  232. package/dist/internal/Geometry.d.ts +8 -0
  233. package/dist/internal/Geometry.d.ts.map +1 -0
  234. package/dist/internal/Geometry.js +2 -0
  235. package/dist/internal/Geometry.js.map +1 -0
  236. package/dist/internal/Grid.d.ts +15 -0
  237. package/dist/internal/Grid.d.ts.map +1 -0
  238. package/dist/internal/Grid.js +2 -0
  239. package/dist/internal/Grid.js.map +1 -0
  240. package/dist/internal/Identifier.d.ts +15 -0
  241. package/dist/internal/Identifier.d.ts.map +1 -0
  242. package/dist/internal/Identifier.js +2 -0
  243. package/dist/internal/Identifier.js.map +1 -0
  244. package/dist/internal/Identity.d.ts +16 -0
  245. package/dist/internal/Identity.d.ts.map +1 -0
  246. package/dist/internal/Identity.js +78 -0
  247. package/dist/internal/Identity.js.map +1 -0
  248. package/dist/internal/Lexical.d.ts +89 -0
  249. package/dist/internal/Lexical.d.ts.map +1 -0
  250. package/dist/internal/Lexical.js +15 -0
  251. package/dist/internal/Lexical.js.map +1 -0
  252. package/dist/internal/Literal.d.ts +3459 -0
  253. package/dist/internal/Literal.d.ts.map +1 -0
  254. package/dist/internal/Literal.js +3371 -0
  255. package/dist/internal/Literal.js.map +1 -0
  256. package/dist/internal/NativeProperties.d.ts +596 -0
  257. package/dist/internal/NativeProperties.d.ts.map +1 -0
  258. package/dist/internal/NativeProperties.js +2 -0
  259. package/dist/internal/NativeProperties.js.map +1 -0
  260. package/dist/internal/Numeric.d.ts +23 -0
  261. package/dist/internal/Numeric.d.ts.map +1 -0
  262. package/dist/internal/Numeric.js +2 -0
  263. package/dist/internal/Numeric.js.map +1 -0
  264. package/dist/internal/Query.d.ts +15 -0
  265. package/dist/internal/Query.d.ts.map +1 -0
  266. package/dist/internal/Query.js +58 -0
  267. package/dist/internal/Query.js.map +1 -0
  268. package/dist/internal/Recipe.d.ts +17 -0
  269. package/dist/internal/Recipe.d.ts.map +1 -0
  270. package/dist/internal/Recipe.js +2 -0
  271. package/dist/internal/Recipe.js.map +1 -0
  272. package/dist/internal/RuleReference.d.ts +23 -0
  273. package/dist/internal/RuleReference.d.ts.map +1 -0
  274. package/dist/internal/RuleReference.js +65 -0
  275. package/dist/internal/RuleReference.js.map +1 -0
  276. package/dist/internal/Scheme.d.ts +12 -0
  277. package/dist/internal/Scheme.d.ts.map +1 -0
  278. package/dist/internal/Scheme.js +16 -0
  279. package/dist/internal/Scheme.js.map +1 -0
  280. package/dist/internal/Shorthands.d.ts +20 -0
  281. package/dist/internal/Shorthands.d.ts.map +1 -0
  282. package/dist/internal/Shorthands.js +49 -0
  283. package/dist/internal/Shorthands.js.map +1 -0
  284. package/dist/internal/Targets.d.ts +43 -0
  285. package/dist/internal/Targets.d.ts.map +1 -0
  286. package/dist/internal/Targets.js +60 -0
  287. package/dist/internal/Targets.js.map +1 -0
  288. package/dist/internal/Token.d.ts +104 -0
  289. package/dist/internal/Token.d.ts.map +1 -0
  290. package/dist/internal/Token.js +162 -0
  291. package/dist/internal/Token.js.map +1 -0
  292. package/dist/internal/Tuple.d.ts +23 -0
  293. package/dist/internal/Tuple.d.ts.map +1 -0
  294. package/dist/internal/Tuple.js +2 -0
  295. package/dist/internal/Tuple.js.map +1 -0
  296. package/dist/internal/Value.d.ts +74 -0
  297. package/dist/internal/Value.d.ts.map +1 -0
  298. package/dist/internal/Value.js +60 -0
  299. package/dist/internal/Value.js.map +1 -0
  300. package/dist/metro/Graph.d.ts +8 -0
  301. package/dist/metro/Graph.d.ts.map +1 -0
  302. package/dist/metro/Graph.js +63 -0
  303. package/dist/metro/Graph.js.map +1 -0
  304. package/dist/metro/Watch.d.ts +21 -0
  305. package/dist/metro/Watch.d.ts.map +1 -0
  306. package/dist/metro/Watch.js +51 -0
  307. package/dist/metro/Watch.js.map +1 -0
  308. package/dist/metro/index.d.ts +30 -0
  309. package/dist/metro/index.d.ts.map +1 -0
  310. package/dist/metro/index.js +52 -0
  311. package/dist/metro/index.js.map +1 -0
  312. package/dist/metro/transformer.d.ts +21 -0
  313. package/dist/metro/transformer.d.ts.map +1 -0
  314. package/dist/metro/transformer.js +71 -0
  315. package/dist/metro/transformer.js.map +1 -0
  316. package/dist/next/index.d.ts +18 -0
  317. package/dist/next/index.d.ts.map +1 -0
  318. package/dist/next/index.js +92 -0
  319. package/dist/next/index.js.map +1 -0
  320. package/dist/next/loader.d.ts +16 -0
  321. package/dist/next/loader.d.ts.map +1 -0
  322. package/dist/next/loader.js +282 -0
  323. package/dist/next/loader.js.map +1 -0
  324. package/dist/node/Host.d.ts +80 -0
  325. package/dist/node/Host.d.ts.map +1 -0
  326. package/dist/node/Host.js +882 -0
  327. package/dist/node/Host.js.map +1 -0
  328. package/dist/node/index.d.ts +7 -0
  329. package/dist/node/index.d.ts.map +1 -0
  330. package/dist/node/index.js +7 -0
  331. package/dist/node/index.js.map +1 -0
  332. package/dist/react-native/Host.d.ts +76 -0
  333. package/dist/react-native/Host.d.ts.map +1 -0
  334. package/dist/react-native/Host.js +209 -0
  335. package/dist/react-native/Host.js.map +1 -0
  336. package/dist/react-native/StyleSheet.d.ts +226 -0
  337. package/dist/react-native/StyleSheet.d.ts.map +1 -0
  338. package/dist/react-native/StyleSheet.js +606 -0
  339. package/dist/react-native/StyleSheet.js.map +1 -0
  340. package/dist/react-native/Variants.d.ts +38 -0
  341. package/dist/react-native/Variants.d.ts.map +1 -0
  342. package/dist/react-native/Variants.js +66 -0
  343. package/dist/react-native/Variants.js.map +1 -0
  344. package/dist/react-native/index.d.ts +8 -0
  345. package/dist/react-native/index.d.ts.map +1 -0
  346. package/dist/react-native/index.js +8 -0
  347. package/dist/react-native/index.js.map +1 -0
  348. package/dist/react-native/internal/Color.d.ts +7 -0
  349. package/dist/react-native/internal/Color.d.ts.map +1 -0
  350. package/dist/react-native/internal/Color.js +93 -0
  351. package/dist/react-native/internal/Color.js.map +1 -0
  352. package/dist/react-native/internal/NativeSchema.d.ts +5138 -0
  353. package/dist/react-native/internal/NativeSchema.d.ts.map +1 -0
  354. package/dist/react-native/internal/NativeSchema.js +3097 -0
  355. package/dist/react-native/internal/NativeSchema.js.map +1 -0
  356. package/dist/react-native/internal/Scalar.d.ts +95 -0
  357. package/dist/react-native/internal/Scalar.d.ts.map +1 -0
  358. package/dist/react-native/internal/Scalar.js +199 -0
  359. package/dist/react-native/internal/Scalar.js.map +1 -0
  360. package/dist/react-native/internal/Values.d.ts +5 -0
  361. package/dist/react-native/internal/Values.d.ts.map +1 -0
  362. package/dist/react-native/internal/Values.js +65 -0
  363. package/dist/react-native/internal/Values.js.map +1 -0
  364. package/dist/react-native/react.d.ts +22 -0
  365. package/dist/react-native/react.d.ts.map +1 -0
  366. package/dist/react-native/react.js +26 -0
  367. package/dist/react-native/react.js.map +1 -0
  368. package/dist/reset.css +244 -0
  369. package/dist/runtime/Appearance.d.ts +55 -0
  370. package/dist/runtime/Appearance.d.ts.map +1 -0
  371. package/dist/runtime/Appearance.js +84 -0
  372. package/dist/runtime/Appearance.js.map +1 -0
  373. package/dist/runtime/Composition.d.ts +46 -0
  374. package/dist/runtime/Composition.d.ts.map +1 -0
  375. package/dist/runtime/Composition.js +52 -0
  376. package/dist/runtime/Composition.js.map +1 -0
  377. package/dist/runtime/CompositionHtml.d.ts +15 -0
  378. package/dist/runtime/CompositionHtml.d.ts.map +1 -0
  379. package/dist/runtime/CompositionHtml.js +20 -0
  380. package/dist/runtime/CompositionHtml.js.map +1 -0
  381. package/dist/runtime/ConditionalRecipe.d.ts +30 -0
  382. package/dist/runtime/ConditionalRecipe.d.ts.map +1 -0
  383. package/dist/runtime/ConditionalRecipe.js +39 -0
  384. package/dist/runtime/ConditionalRecipe.js.map +1 -0
  385. package/dist/runtime/Dynamic.d.ts +19 -0
  386. package/dist/runtime/Dynamic.d.ts.map +1 -0
  387. package/dist/runtime/Dynamic.js +22 -0
  388. package/dist/runtime/Dynamic.js.map +1 -0
  389. package/dist/runtime/Html.d.ts +32 -0
  390. package/dist/runtime/Html.d.ts.map +1 -0
  391. package/dist/runtime/Html.js +63 -0
  392. package/dist/runtime/Html.js.map +1 -0
  393. package/dist/runtime/Native.d.ts +48 -0
  394. package/dist/runtime/Native.d.ts.map +1 -0
  395. package/dist/runtime/Native.js +78 -0
  396. package/dist/runtime/Native.js.map +1 -0
  397. package/dist/runtime/NativeContext.d.ts +17 -0
  398. package/dist/runtime/NativeContext.d.ts.map +1 -0
  399. package/dist/runtime/NativeContext.js +47 -0
  400. package/dist/runtime/NativeContext.js.map +1 -0
  401. package/dist/runtime/NativeDynamic.d.ts +47 -0
  402. package/dist/runtime/NativeDynamic.d.ts.map +1 -0
  403. package/dist/runtime/NativeDynamic.js +141 -0
  404. package/dist/runtime/NativeDynamic.js.map +1 -0
  405. package/dist/runtime/PayloadRecipe.d.ts +22 -0
  406. package/dist/runtime/PayloadRecipe.d.ts.map +1 -0
  407. package/dist/runtime/PayloadRecipe.js +59 -0
  408. package/dist/runtime/PayloadRecipe.js.map +1 -0
  409. package/dist/runtime/Props.d.ts +21 -0
  410. package/dist/runtime/Props.d.ts.map +1 -0
  411. package/dist/runtime/Props.js +17 -0
  412. package/dist/runtime/Props.js.map +1 -0
  413. package/dist/runtime/Recipe.d.ts +52 -0
  414. package/dist/runtime/Recipe.d.ts.map +1 -0
  415. package/dist/runtime/Recipe.js +30 -0
  416. package/dist/runtime/Recipe.js.map +1 -0
  417. package/dist/runtime/Selection.d.ts +31 -0
  418. package/dist/runtime/Selection.d.ts.map +1 -0
  419. package/dist/runtime/Selection.js +30 -0
  420. package/dist/runtime/Selection.js.map +1 -0
  421. package/dist/runtime/Variable.d.ts +6 -0
  422. package/dist/runtime/Variable.d.ts.map +1 -0
  423. package/dist/runtime/Variable.js +10 -0
  424. package/dist/runtime/Variable.js.map +1 -0
  425. package/dist/runtime/index.d.ts +33 -0
  426. package/dist/runtime/index.d.ts.map +1 -0
  427. package/dist/runtime/index.js +33 -0
  428. package/dist/runtime/index.js.map +1 -0
  429. package/dist/styleFunction.d.ts +72 -0
  430. package/dist/styleFunction.d.ts.map +1 -0
  431. package/dist/styleFunction.js +18 -0
  432. package/dist/styleFunction.js.map +1 -0
  433. package/dist/themes/LICENSE.tailwind +21 -0
  434. package/dist/variable.d.ts +50 -0
  435. package/dist/variable.d.ts.map +1 -0
  436. package/dist/variable.js +20 -0
  437. package/dist/variable.js.map +1 -0
  438. package/dist/variants.d.ts +84 -0
  439. package/dist/variants.d.ts.map +1 -0
  440. package/dist/variants.js +21 -0
  441. package/dist/variants.js.map +1 -0
  442. package/dist/vite/index.d.ts +24 -0
  443. package/dist/vite/index.d.ts.map +1 -0
  444. package/dist/vite/index.js +1089 -0
  445. package/dist/vite/index.js.map +1 -0
  446. package/dist/web/Css.d.ts +81 -0
  447. package/dist/web/Css.d.ts.map +1 -0
  448. package/dist/web/Css.js +593 -0
  449. package/dist/web/Css.js.map +1 -0
  450. package/dist/web/colorProfile.d.ts +28 -0
  451. package/dist/web/colorProfile.d.ts.map +1 -0
  452. package/dist/web/colorProfile.js +8 -0
  453. package/dist/web/colorProfile.js.map +1 -0
  454. package/dist/web/counterStyle.d.ts +48 -0
  455. package/dist/web/counterStyle.d.ts.map +1 -0
  456. package/dist/web/counterStyle.js +8 -0
  457. package/dist/web/counterStyle.js.map +1 -0
  458. package/dist/web/cssFunction.d.ts +80 -0
  459. package/dist/web/cssFunction.d.ts.map +1 -0
  460. package/dist/web/cssFunction.js +18 -0
  461. package/dist/web/cssFunction.js.map +1 -0
  462. package/dist/web/customMedia.d.ts +12 -0
  463. package/dist/web/customMedia.d.ts.map +1 -0
  464. package/dist/web/customMedia.js +7 -0
  465. package/dist/web/customMedia.js.map +1 -0
  466. package/dist/web/fontFace.d.ts +26 -0
  467. package/dist/web/fontFace.d.ts.map +1 -0
  468. package/dist/web/fontFace.js +7 -0
  469. package/dist/web/fontFace.js.map +1 -0
  470. package/dist/web/fontFeatureValues.d.ts +40 -0
  471. package/dist/web/fontFeatureValues.d.ts.map +1 -0
  472. package/dist/web/fontFeatureValues.js +7 -0
  473. package/dist/web/fontFeatureValues.js.map +1 -0
  474. package/dist/web/fontPaletteValues.d.ts +21 -0
  475. package/dist/web/fontPaletteValues.d.ts.map +1 -0
  476. package/dist/web/fontPaletteValues.js +9 -0
  477. package/dist/web/fontPaletteValues.js.map +1 -0
  478. package/dist/web/global.d.ts +19 -0
  479. package/dist/web/global.d.ts.map +1 -0
  480. package/dist/web/global.js +6 -0
  481. package/dist/web/global.js.map +1 -0
  482. package/dist/web/importCss.d.ts +18 -0
  483. package/dist/web/importCss.d.ts.map +1 -0
  484. package/dist/web/importCss.js +7 -0
  485. package/dist/web/importCss.js.map +1 -0
  486. package/dist/web/index.d.ts +22 -0
  487. package/dist/web/index.d.ts.map +1 -0
  488. package/dist/web/index.js +22 -0
  489. package/dist/web/index.js.map +1 -0
  490. package/dist/web/internal/Block.d.ts +18 -0
  491. package/dist/web/internal/Block.d.ts.map +1 -0
  492. package/dist/web/internal/Block.js +13 -0
  493. package/dist/web/internal/Block.js.map +1 -0
  494. package/dist/web/internal/ClassName.d.ts +19 -0
  495. package/dist/web/internal/ClassName.d.ts.map +1 -0
  496. package/dist/web/internal/ClassName.js +77 -0
  497. package/dist/web/internal/ClassName.js.map +1 -0
  498. package/dist/web/internal/Context.d.ts +11 -0
  499. package/dist/web/internal/Context.d.ts.map +1 -0
  500. package/dist/web/internal/Context.js +2 -0
  501. package/dist/web/internal/Context.js.map +1 -0
  502. package/dist/web/internal/Contributions.d.ts +70 -0
  503. package/dist/web/internal/Contributions.d.ts.map +1 -0
  504. package/dist/web/internal/Contributions.js +109 -0
  505. package/dist/web/internal/Contributions.js.map +1 -0
  506. package/dist/web/internal/Namespace.d.ts +13 -0
  507. package/dist/web/internal/Namespace.d.ts.map +1 -0
  508. package/dist/web/internal/Namespace.js +13 -0
  509. package/dist/web/internal/Namespace.js.map +1 -0
  510. package/dist/web/internal/Themes.d.ts +13 -0
  511. package/dist/web/internal/Themes.d.ts.map +1 -0
  512. package/dist/web/internal/Themes.js +96 -0
  513. package/dist/web/internal/Themes.js.map +1 -0
  514. package/dist/web/keyframes.d.ts +14 -0
  515. package/dist/web/keyframes.d.ts.map +1 -0
  516. package/dist/web/keyframes.js +8 -0
  517. package/dist/web/keyframes.js.map +1 -0
  518. package/dist/web/layers.d.ts +4 -0
  519. package/dist/web/layers.d.ts.map +1 -0
  520. package/dist/web/layers.js +7 -0
  521. package/dist/web/layers.js.map +1 -0
  522. package/dist/web/namespace.d.ts +14 -0
  523. package/dist/web/namespace.d.ts.map +1 -0
  524. package/dist/web/namespace.js +7 -0
  525. package/dist/web/namespace.js.map +1 -0
  526. package/dist/web/page.d.ts +38 -0
  527. package/dist/web/page.d.ts.map +1 -0
  528. package/dist/web/page.js +7 -0
  529. package/dist/web/page.js.map +1 -0
  530. package/dist/web/positionTry.d.ts +14 -0
  531. package/dist/web/positionTry.d.ts.map +1 -0
  532. package/dist/web/positionTry.js +9 -0
  533. package/dist/web/positionTry.js.map +1 -0
  534. package/dist/web/property.d.ts +24 -0
  535. package/dist/web/property.d.ts.map +1 -0
  536. package/dist/web/property.js +7 -0
  537. package/dist/web/property.js.map +1 -0
  538. package/dist/web/viewTransition.d.ts +29 -0
  539. package/dist/web/viewTransition.d.ts.map +1 -0
  540. package/dist/web/viewTransition.js +7 -0
  541. package/dist/web/viewTransition.js.map +1 -0
  542. package/package.json +136 -10
  543. package/src/Config.ts +690 -0
  544. package/src/Props.ts +8 -0
  545. package/src/Style.ts +748 -0
  546. package/src/Theme.ts +713 -0
  547. package/src/babel/NativeEdits.ts +273 -0
  548. package/src/babel/NativeJsx.ts +260 -0
  549. package/src/babel/index.ts +332 -0
  550. package/src/cli/index.ts +196 -0
  551. package/src/compiler/Graph.ts +1586 -0
  552. package/src/compiler/Native.ts +801 -0
  553. package/src/compiler/Source.ts +1550 -0
  554. package/src/compiler/Transform.ts +1235 -0
  555. package/src/compiler/index.ts +12 -0
  556. package/src/compiler/internal/Applications.ts +378 -0
  557. package/src/compiler/internal/AtRules.ts +202 -0
  558. package/src/compiler/internal/Catalogs.ts +114 -0
  559. package/src/compiler/internal/ColorProfiles.ts +93 -0
  560. package/src/compiler/internal/CompositionBindings.ts +120 -0
  561. package/src/compiler/internal/Compositions.ts +629 -0
  562. package/src/compiler/internal/Configurations.ts +244 -0
  563. package/src/compiler/internal/Contract.ts +846 -0
  564. package/src/compiler/internal/Contributions.ts +1507 -0
  565. package/src/compiler/internal/Descriptors.ts +238 -0
  566. package/src/compiler/internal/Dynamic.ts +266 -0
  567. package/src/compiler/internal/Edits.ts +13 -0
  568. package/src/compiler/internal/Expression.ts +135 -0
  569. package/src/compiler/internal/Functions.ts +206 -0
  570. package/src/compiler/internal/Identifiers.ts +124 -0
  571. package/src/compiler/internal/Keyframes.ts +62 -0
  572. package/src/compiler/internal/Namespaces.ts +296 -0
  573. package/src/compiler/internal/NativeBindings.ts +151 -0
  574. package/src/compiler/internal/PackedStyles.ts +464 -0
  575. package/src/compiler/internal/Properties.ts +121 -0
  576. package/src/compiler/internal/RecipeConditions.ts +139 -0
  577. package/src/compiler/internal/RecipePayloads.ts +132 -0
  578. package/src/compiler/internal/Recipes.ts +531 -0
  579. package/src/compiler/internal/Relative.ts +87 -0
  580. package/src/compiler/internal/Scope.ts +36 -0
  581. package/src/compiler/internal/Selectors.ts +334 -0
  582. package/src/compiler/internal/Static.ts +783 -0
  583. package/src/compiler/internal/Stylesheets.ts +361 -0
  584. package/src/compiler/internal/Syntax.ts +31 -0
  585. package/src/compiler/internal/Themes.ts +1794 -0
  586. package/src/compiler/internal/Variables.ts +497 -0
  587. package/src/compiler/internal/ViewTransitions.ts +82 -0
  588. package/src/cx.ts +98 -0
  589. package/src/default.ts +484 -0
  590. package/src/index.ts +20 -0
  591. package/src/internal/Authoring.ts +199 -0
  592. package/src/internal/Binding.ts +187 -0
  593. package/src/internal/BindingDomains.ts +458 -0
  594. package/src/internal/Cascade.ts +165 -0
  595. package/src/internal/Compound.ts +522 -0
  596. package/src/internal/Condition.ts +283 -0
  597. package/src/internal/Corner.ts +17 -0
  598. package/src/internal/FunctionSyntax.ts +271 -0
  599. package/src/internal/FunctionValue.ts +96 -0
  600. package/src/internal/Geometry.ts +30 -0
  601. package/src/internal/Grid.ts +67 -0
  602. package/src/internal/Identifier.ts +14 -0
  603. package/src/internal/Identity.ts +89 -0
  604. package/src/internal/Lexical.ts +202 -0
  605. package/src/internal/Literal.ts +3820 -0
  606. package/src/internal/NativeProperties.ts +936 -0
  607. package/src/internal/Numeric.ts +77 -0
  608. package/src/internal/Query.ts +87 -0
  609. package/src/internal/Recipe.ts +17 -0
  610. package/src/internal/RuleReference.ts +102 -0
  611. package/src/internal/Scheme.ts +20 -0
  612. package/src/internal/Shorthands.ts +120 -0
  613. package/src/internal/Targets.ts +162 -0
  614. package/src/internal/Token.ts +380 -0
  615. package/src/internal/Tuple.ts +29 -0
  616. package/src/internal/Value.ts +320 -0
  617. package/src/metro/Graph.ts +78 -0
  618. package/src/metro/Watch.ts +88 -0
  619. package/src/metro/index.ts +99 -0
  620. package/src/metro/transformer.ts +97 -0
  621. package/src/next/index.ts +114 -0
  622. package/src/next/loader.ts +369 -0
  623. package/src/node/Host.ts +1204 -0
  624. package/src/node/index.ts +6 -0
  625. package/src/react-native/Host.ts +289 -0
  626. package/src/react-native/StyleSheet.ts +1084 -0
  627. package/src/react-native/Variants.ts +122 -0
  628. package/src/react-native/index.ts +7 -0
  629. package/src/react-native/internal/Color.ts +110 -0
  630. package/src/react-native/internal/NativeSchema.ts +3096 -0
  631. package/src/react-native/internal/Scalar.ts +253 -0
  632. package/src/react-native/internal/Values.ts +87 -0
  633. package/src/react-native/react.ts +47 -0
  634. package/src/reset.css +244 -0
  635. package/src/runtime/Appearance.ts +155 -0
  636. package/src/runtime/Composition.ts +87 -0
  637. package/src/runtime/CompositionHtml.ts +38 -0
  638. package/src/runtime/ConditionalRecipe.ts +70 -0
  639. package/src/runtime/Dynamic.ts +51 -0
  640. package/src/runtime/Html.ts +91 -0
  641. package/src/runtime/Native.ts +144 -0
  642. package/src/runtime/NativeContext.ts +74 -0
  643. package/src/runtime/NativeDynamic.ts +246 -0
  644. package/src/runtime/PayloadRecipe.ts +96 -0
  645. package/src/runtime/Props.ts +33 -0
  646. package/src/runtime/Recipe.ts +74 -0
  647. package/src/runtime/Selection.ts +82 -0
  648. package/src/runtime/Variable.ts +15 -0
  649. package/src/runtime/index.ts +45 -0
  650. package/src/styleFunction.ts +138 -0
  651. package/src/themes/LICENSE.tailwind +21 -0
  652. package/src/variable.ts +105 -0
  653. package/src/variants.ts +218 -0
  654. package/src/vite/index.ts +1473 -0
  655. package/src/web/Css.ts +801 -0
  656. package/src/web/colorProfile.ts +60 -0
  657. package/src/web/counterStyle.ts +82 -0
  658. package/src/web/cssFunction.ts +181 -0
  659. package/src/web/customMedia.ts +16 -0
  660. package/src/web/fontFace.ts +41 -0
  661. package/src/web/fontFeatureValues.ts +79 -0
  662. package/src/web/fontPaletteValues.ts +42 -0
  663. package/src/web/global.ts +39 -0
  664. package/src/web/importCss.ts +23 -0
  665. package/src/web/index.ts +22 -0
  666. package/src/web/internal/Block.ts +29 -0
  667. package/src/web/internal/ClassName.ts +112 -0
  668. package/src/web/internal/Context.ts +16 -0
  669. package/src/web/internal/Contributions.ts +219 -0
  670. package/src/web/internal/Namespace.ts +21 -0
  671. package/src/web/internal/Themes.ts +133 -0
  672. package/src/web/keyframes.ts +43 -0
  673. package/src/web/layers.ts +6 -0
  674. package/src/web/namespace.ts +19 -0
  675. package/src/web/page.ts +140 -0
  676. package/src/web/positionTry.ts +71 -0
  677. package/src/web/property.ts +35 -0
  678. package/src/web/viewTransition.ts +89 -0
@@ -0,0 +1,990 @@
1
+ /**
2
+ * Extracts literal styles and local themes through lexical source analysis.
3
+ * @module
4
+ */
5
+ import * as Identity from '../internal/Identity.js';
6
+ import * as Identifiers from './internal/Identifiers.js';
7
+ import * as AtRules from './internal/AtRules.js';
8
+ import * as Binding from '../internal/Binding.js';
9
+ import * as Condition from '../internal/Condition.js';
10
+ import * as Compositions from './internal/Compositions.js';
11
+ import * as Contributions from './internal/Contributions.js';
12
+ import * as Css from '../web/Css.js';
13
+ import * as Dynamic from './internal/Dynamic.js';
14
+ import * as Expression from './internal/Expression.js';
15
+ import * as Selectors from './internal/Selectors.js';
16
+ import * as Syntax from './internal/Syntax.js';
17
+ import * as RuleReference from '../internal/RuleReference.js';
18
+ import * as Recipes from './internal/Recipes.js';
19
+ import * as PackedStyles from './internal/PackedStyles.js';
20
+ import * as Scope from './internal/Scope.js';
21
+ import * as Static from './internal/Static.js';
22
+ import * as Style from '../Style.js';
23
+ import * as Themes from './internal/Themes.js';
24
+ import * as ThemeValues from '../web/internal/Themes.js';
25
+ import * as Token from '../internal/Token.js';
26
+ import * as Variables from './internal/Variables.js';
27
+ import * as Walker from 'oxc-walker';
28
+ // JavaScript extraction supplies untyped values. Keep structural checks without
29
+ // asserting that those values already satisfy the TypeScript authoring contract.
30
+ const define = Style.define;
31
+ /**
32
+ * Extracts direct style calls and local Theme definitions imported from zyzz.
33
+ * Parses TypeScript and JSX without reading files, loading config, or evaluating source.
34
+ * @param options - Source text and a portable package-relative module identity.
35
+ * @returns Frozen style/theme definitions and rewrite spans. Source text is unchanged.
36
+ * @throws {ExtractError} For syntax errors, unsupported imported references, or invalid literals.
37
+ */
38
+ export function extract(options) {
39
+ const calls = [];
40
+ const diagnostics = [];
41
+ const pending = [];
42
+ const recipes = new Set();
43
+ const styles = [];
44
+ function report(code, message, node) {
45
+ diagnostics.push({
46
+ code,
47
+ end: node?.end ?? 0,
48
+ message,
49
+ source: options.moduleId,
50
+ start: node?.start ?? 0,
51
+ });
52
+ }
53
+ if (!options.moduleId ||
54
+ options.moduleId.includes('\\') ||
55
+ options.moduleId.includes(':') ||
56
+ options.moduleId
57
+ .split('/')
58
+ .some((part) => !part || part === '.' || part === '..')) {
59
+ report('invalid_module', 'Expected a portable package-relative module ID without absolute paths, backslashes, or traversal segments.');
60
+ throw new ExtractError(diagnostics);
61
+ }
62
+ const namespace = identity(options.moduleId);
63
+ const parsed = options[Themes.context]?.parsed ?? Syntax.parse(options);
64
+ if (parsed.errors.length) {
65
+ for (const error of parsed.errors) {
66
+ const span = error.labels[0];
67
+ report('syntax_error', error.message, span);
68
+ }
69
+ throw new ExtractError(diagnostics);
70
+ }
71
+ const program = parsed.program;
72
+ const scopeTracker = new Scope.Tracker({ preserveExitedScopes: true });
73
+ Walker.walk(program, { scopeTracker });
74
+ scopeTracker.freeze();
75
+ const staticData = Static.create(program, scopeTracker, options[Themes.context]?.constants);
76
+ const contributions = (() => {
77
+ try {
78
+ return Contributions.scan(program, scopeTracker, namespace, options[Themes.context]?.links, options[Themes.context]?.factories);
79
+ }
80
+ catch (error) {
81
+ if (!(error instanceof Themes.InvalidError))
82
+ throw error;
83
+ report('unsupported_syntax', error.message, error);
84
+ throw new ExtractError(diagnostics);
85
+ }
86
+ })();
87
+ const variables = (() => {
88
+ try {
89
+ return Variables.collect(program, namespace, scopeTracker, options[Themes.context]?.links, options.moduleId);
90
+ }
91
+ catch (error) {
92
+ if (!(error instanceof Themes.InvalidError))
93
+ throw error;
94
+ report('unsupported_syntax', error.message, error);
95
+ throw new ExtractError(diagnostics);
96
+ }
97
+ })();
98
+ const themes = (() => {
99
+ try {
100
+ return Themes.collect(program, {
101
+ staticBindings: staticData.bindings,
102
+ namespace,
103
+ contributionCalls: new Set(contributions.calls.map((call) => call.start)),
104
+ linked: options[Themes.context] !== undefined,
105
+ links: options[Themes.context]?.links,
106
+ });
107
+ }
108
+ catch (error) {
109
+ if (!(error instanceof Themes.InvalidError))
110
+ throw error;
111
+ report('unsupported_syntax', error.message, error);
112
+ throw new ExtractError(diagnostics);
113
+ }
114
+ })();
115
+ const ancestors = [];
116
+ const typeAncestors = new Set();
117
+ const typeNodes = new Set([
118
+ 'TSInterfaceDeclaration',
119
+ 'TSTypeAliasDeclaration',
120
+ 'TSTypeAnnotation',
121
+ 'TSTypeParameterDeclaration',
122
+ 'TSTypeParameterInstantiation',
123
+ 'TSTypeQuery',
124
+ ]);
125
+ Walker.walk(program, {
126
+ enter(node, parent) {
127
+ const declaration = staticData.visitor.enter(node, parent);
128
+ ancestors.push(node);
129
+ if ((parent &&
130
+ 'typeAnnotation' in parent &&
131
+ parent.typeAnnotation === node) ||
132
+ typeNodes.has(node.type) ||
133
+ (node.type === 'ExportNamedDeclaration' &&
134
+ (node.source !== null || node.exportKind === 'type')) ||
135
+ (node.type === 'ExportSpecifier' && node.exportKind === 'type'))
136
+ typeAncestors.add(node);
137
+ if ((node.type !== 'Identifier' && node.type !== 'JSXIdentifier') ||
138
+ !parent ||
139
+ (node.type === 'Identifier'
140
+ ? declaration === undefined
141
+ : !Walker.isReferenceIdentifier(node, parent)))
142
+ return;
143
+ // Both passes visit identical scopes; skipping type subtrees changes scope IDs.
144
+ if (typeAncestors.size)
145
+ return;
146
+ const binding = node.type === 'Identifier'
147
+ ? declaration ?? null
148
+ : scopeTracker.getDeclaration(node.name);
149
+ contributions.read(node, parent, binding);
150
+ try {
151
+ if (variables.reference(node, parent, binding))
152
+ return;
153
+ }
154
+ catch (error) {
155
+ if (!(error instanceof Themes.InvalidError))
156
+ throw error;
157
+ report('unsupported_syntax', error.message, error);
158
+ return;
159
+ }
160
+ if (themes)
161
+ try {
162
+ if (themes.reference(node, parent, ancestors, binding))
163
+ return;
164
+ }
165
+ catch (error) {
166
+ if (!(error instanceof Themes.InvalidError))
167
+ throw error;
168
+ report('unsupported_syntax', error.message, error);
169
+ return;
170
+ }
171
+ if (binding?.type !== 'Import' ||
172
+ binding.importNode.source.value !== 'zyzz' ||
173
+ binding.importNode.importKind === 'type')
174
+ return;
175
+ const specifier = binding.node;
176
+ if (specifier.type === 'ImportNamespaceSpecifier') {
177
+ if (parent.type === 'MemberExpression' && parent.object === node) {
178
+ const name = (() => {
179
+ if (parent.property.type === 'Identifier' && !parent.computed) {
180
+ return parent.property.name;
181
+ }
182
+ if (parent.property.type === 'Literal') {
183
+ return parent.property.value;
184
+ }
185
+ return undefined;
186
+ })();
187
+ if (name === 'Config' ||
188
+ name === 'cx' ||
189
+ name === 'style' ||
190
+ name === 'Theme' ||
191
+ name === 'variable' ||
192
+ name === 'variants')
193
+ report('unsupported_syntax', `Import ${name} by name; namespace authoring calls are not supported yet.`, parent);
194
+ }
195
+ return;
196
+ }
197
+ if (specifier.type !== 'ImportSpecifier' ||
198
+ specifier.importKind === 'type' ||
199
+ !['style', 'variants'].includes(specifier.imported.type === 'Identifier'
200
+ ? specifier.imported.name
201
+ : specifier.imported.value))
202
+ return;
203
+ // Follow only assignment targets; computed keys and default values are reads.
204
+ let target = node;
205
+ let write;
206
+ for (let index = ancestors.length - 2; index >= 0; index--) {
207
+ const ancestor = ancestors[index];
208
+ if ((ancestor.type === 'AssignmentExpression' &&
209
+ ancestor.left === target) ||
210
+ (ancestor.type === 'UpdateExpression' &&
211
+ ancestor.argument === target) ||
212
+ ((ancestor.type === 'ForInStatement' ||
213
+ ancestor.type === 'ForOfStatement') &&
214
+ ancestor.left === target)) {
215
+ write = ancestor;
216
+ break;
217
+ }
218
+ if ((ancestor.type === 'Property' && ancestor.value === target) ||
219
+ ancestor.type === 'ObjectPattern' ||
220
+ ancestor.type === 'ArrayPattern' ||
221
+ (ancestor.type === 'RestElement' && ancestor.argument === target) ||
222
+ (ancestor.type === 'AssignmentPattern' && ancestor.left === target))
223
+ target = ancestor;
224
+ else
225
+ break;
226
+ }
227
+ if (write)
228
+ report('unsupported_syntax', 'Imported style bindings cannot be reassigned.', write);
229
+ else if (parent.type === 'CallExpression' &&
230
+ parent.callee === node &&
231
+ !parent.optional) {
232
+ pending.push(parent);
233
+ if ((specifier.imported.type === 'Identifier'
234
+ ? specifier.imported.name
235
+ : specifier.imported.value) === 'variants')
236
+ recipes.add(parent.start);
237
+ }
238
+ else
239
+ report('unsupported_syntax', 'Use a direct style call; aliases, re-exports, and indirect references are not supported yet.', node);
240
+ },
241
+ leave(node) {
242
+ ancestors.pop();
243
+ typeAncestors.delete(node);
244
+ staticData.visitor.leave();
245
+ },
246
+ scopeTracker,
247
+ });
248
+ Contributions.resolve(contributions);
249
+ // Imports and reference lists can have a different order from authored calls.
250
+ if (themes)
251
+ for (const entry of themes.styles.values()) {
252
+ pending.push(entry.call);
253
+ if (entry.recipe)
254
+ recipes.add(entry.call.start);
255
+ }
256
+ pending.sort((a, b) => a.start - b.start);
257
+ const staticCalls = new Set(pending.map((call) => call.start));
258
+ const opaque = new Set(variables.references.keys());
259
+ const normalized = new Map();
260
+ const selectorKeys = new Set();
261
+ for (const call of pending) {
262
+ if (!call.arguments[0])
263
+ continue;
264
+ try {
265
+ const value = staticData.normalize(call.arguments[0], staticCalls, opaque);
266
+ normalized.set(call.start, value);
267
+ const body = value.type === 'ArrowFunctionExpression'
268
+ ? staticData.normalize(value.body, staticCalls, opaque)
269
+ : value;
270
+ Walker.walk(body, {
271
+ enter(node) {
272
+ if (node.type !== 'Property' ||
273
+ node.computed ||
274
+ node.value.type !== 'ObjectExpression' ||
275
+ !((node.key.type === 'Identifier' &&
276
+ node.key.name === 'selectors') ||
277
+ (node.key.type === 'Literal' && node.key.value === 'selectors')))
278
+ return;
279
+ for (const property of node.value.properties)
280
+ if (property.type === 'Property')
281
+ selectorKeys.add(property.key.start);
282
+ },
283
+ });
284
+ }
285
+ catch (error) {
286
+ if (!(error instanceof Themes.InvalidError))
287
+ throw error;
288
+ normalized.set(call.start, error);
289
+ }
290
+ }
291
+ for (const call of pending) {
292
+ try {
293
+ Identifiers.explicit(call);
294
+ }
295
+ catch (error) {
296
+ report('unsupported_syntax', error.message, call);
297
+ }
298
+ }
299
+ if (diagnostics.length)
300
+ throw new ExtractError(diagnostics);
301
+ const selectors = (() => {
302
+ try {
303
+ return Selectors.scan(program, scopeTracker, namespace, pending, options[Themes.context]?.links, selectorKeys);
304
+ }
305
+ catch (error) {
306
+ if (!(error instanceof Themes.InvalidError))
307
+ throw error;
308
+ report('unsupported_syntax', error.message, error);
309
+ throw new ExtractError(diagnostics);
310
+ }
311
+ })();
312
+ for (const call of pending) {
313
+ const explicitId = (() => {
314
+ try {
315
+ return Identifiers.explicit(call);
316
+ }
317
+ catch (error) {
318
+ report('unsupported_syntax', error.message, call);
319
+ return undefined;
320
+ }
321
+ })();
322
+ const definitionId = explicitId === undefined
323
+ ? `${namespace}-${call.start}`
324
+ : Identity.requireId(explicitId, 'style');
325
+ let argument = call.arguments[0];
326
+ if (call.arguments.length === 0)
327
+ argument = {
328
+ end: call.end - 1,
329
+ properties: [],
330
+ start: call.end - 1,
331
+ type: 'ObjectExpression',
332
+ };
333
+ while (argument?.type === 'TSAsExpression' ||
334
+ argument?.type === 'TSSatisfiesExpression')
335
+ argument = argument.expression;
336
+ const original = argument;
337
+ try {
338
+ const value = normalized.get(call.start);
339
+ if (value instanceof Error)
340
+ throw value;
341
+ if (value)
342
+ argument = value;
343
+ }
344
+ catch (error) {
345
+ if (!(error instanceof Themes.InvalidError))
346
+ throw error;
347
+ report('unsupported_syntax', error.message, error);
348
+ continue;
349
+ }
350
+ const diagnosticCount = diagnostics.length;
351
+ const dynamic = (() => {
352
+ if (!argument)
353
+ return undefined;
354
+ try {
355
+ return Dynamic.read(argument, definitionId, staticData.type);
356
+ }
357
+ catch (error) {
358
+ if (!(error instanceof Themes.InvalidError))
359
+ throw error;
360
+ report('unsupported_syntax', error.message, error);
361
+ return undefined;
362
+ }
363
+ })();
364
+ if (diagnostics.length !== diagnosticCount)
365
+ continue;
366
+ let dynamicValues = dynamic;
367
+ function resolveDynamic(node) {
368
+ try {
369
+ return dynamicValues?.resolve(node);
370
+ }
371
+ catch (error) {
372
+ if (!(error instanceof Themes.InvalidError))
373
+ throw error;
374
+ report('unsupported_syntax', error.message, error);
375
+ return undefined;
376
+ }
377
+ }
378
+ if (dynamic) {
379
+ try {
380
+ argument = staticData.normalize(dynamic.body, staticCalls, opaque);
381
+ }
382
+ catch (error) {
383
+ if (!(error instanceof Themes.InvalidError))
384
+ throw error;
385
+ report('unsupported_syntax', error.message, error);
386
+ continue;
387
+ }
388
+ }
389
+ if (call.arguments.length > 2 || argument?.type !== 'ObjectExpression') {
390
+ report('unsupported_syntax', 'Expected one literal object or typed callback; spreads and referenced definitions are not supported.', call);
391
+ continue;
392
+ }
393
+ const before = diagnostics.length;
394
+ let recipe;
395
+ let recipeTypes;
396
+ let staticRecipe;
397
+ let dynamicRecipe;
398
+ if (recipes.has(call.start)) {
399
+ try {
400
+ if (dynamic)
401
+ throw new Themes.InvalidError('Recipes require static top-level objects.', original ?? call);
402
+ const expanded = Recipes.expand(argument, {
403
+ identity: definitionId,
404
+ normalize: (node) => staticData.normalize(node, staticCalls, opaque),
405
+ queries: themes?.styles.get(call.start)?.theme[Token.definition]
406
+ .queries,
407
+ resolveType: staticData.type,
408
+ source: options.source,
409
+ });
410
+ argument = expanded.body;
411
+ recipe = expanded.recipe;
412
+ staticRecipe = expanded.staticRecipe;
413
+ dynamicRecipe = expanded.dynamicRecipe;
414
+ recipeTypes = expanded.types;
415
+ dynamicValues = expanded.bindings;
416
+ }
417
+ catch (error) {
418
+ if (!(error instanceof Themes.InvalidError))
419
+ throw error;
420
+ report('unsupported_syntax', error.message, error);
421
+ continue;
422
+ }
423
+ }
424
+ const name = `style-${namespace}-${call.start}`;
425
+ const locations = [];
426
+ const conditionKeys = new Map();
427
+ function object(argument, prefix = []) {
428
+ const values = Object.create(null);
429
+ const target = prefix.lastIndexOf('targets');
430
+ if (target !== -1 && prefix.length > 64) {
431
+ report('unsupported_syntax', 'Target nesting exceeds 64 levels.', argument);
432
+ return values;
433
+ }
434
+ const depth = prefix.length + 2;
435
+ function localSlot(node) {
436
+ const slot = resolveDynamic(node);
437
+ if (slot &&
438
+ prefix.some((key) => !Condition.local(key) && !selectors.localConditions.has(key))) {
439
+ report('unsupported_syntax', 'Dynamic values require conditions that select the styled element.', node);
440
+ return undefined;
441
+ }
442
+ return slot;
443
+ }
444
+ const properties = [];
445
+ for (const entry of argument.properties) {
446
+ const key = entry.type === 'Property' && !entry.computed
447
+ ? entry.key.type === 'Identifier'
448
+ ? entry.key.name
449
+ : entry.key.type === 'Literal'
450
+ ? entry.key.value
451
+ : undefined
452
+ : undefined;
453
+ if (key !== 'selectors' && key !== 'variables') {
454
+ properties.push(entry);
455
+ continue;
456
+ }
457
+ if (entry.type !== 'Property' ||
458
+ entry.kind !== 'init' ||
459
+ entry.method ||
460
+ entry.shorthand ||
461
+ entry.value.type !== 'ObjectExpression') {
462
+ report('unsupported_syntax', `${key} requires an explicit literal object.`, entry);
463
+ continue;
464
+ }
465
+ for (const property of entry.value.properties) {
466
+ if (property.type !== 'Property' ||
467
+ (key === 'selectors'
468
+ ? !selectors.conditions.has(property.key.start)
469
+ : !property.computed ||
470
+ !variables.references.has(property.key.start))) {
471
+ report('unsupported_syntax', key === 'selectors'
472
+ ? 'Selectors require explicit & targets.'
473
+ : 'Variable assignments require declared variable keys.', property);
474
+ continue;
475
+ }
476
+ properties.push(property);
477
+ }
478
+ }
479
+ for (const property of properties) {
480
+ if (property.type !== 'Property' ||
481
+ property.kind !== 'init' ||
482
+ property.method ||
483
+ (property.computed &&
484
+ !selectors.conditions.has(property.key.start) &&
485
+ !variables.references.has(property.key.start) &&
486
+ !contributions.queryKeys.has(property.key.start)) ||
487
+ property.shorthand ||
488
+ (!selectors.conditions.has(property.key.start) &&
489
+ !variables.references.has(property.key.start) &&
490
+ property.key.type !== 'Identifier' &&
491
+ (property.key.type !== 'Literal' ||
492
+ typeof property.key.value !== 'string'))) {
493
+ report('unsupported_syntax', 'Only explicit literal properties are supported; spreads, computed keys, shorthand, and methods are not evaluated.', property);
494
+ continue;
495
+ }
496
+ const key = variables.references.get(property.key.start)?.reference.name ??
497
+ selectors.conditions.get(property.key.start) ??
498
+ contributions.queryKeys.get(property.key.start) ??
499
+ (property.key.type === 'Identifier'
500
+ ? property.key.name
501
+ : property.key.type === 'Literal'
502
+ ? String(property.key.value)
503
+ : '');
504
+ if (Object.hasOwn(values, key)) {
505
+ report('unsupported_syntax', 'Duplicate properties are not supported in source definitions yet.', property);
506
+ continue;
507
+ }
508
+ if ((key === 'targets' || target !== -1) &&
509
+ staticData.absent(property.value))
510
+ continue;
511
+ if (key === 'targets' || prefix.at(-1) === 'targets') {
512
+ const input = Expression.unwrap(property.value);
513
+ if (input.type !== 'ObjectExpression') {
514
+ report('unsupported_syntax', 'Target branches require static declaration objects.', input);
515
+ continue;
516
+ }
517
+ values[key] = object(input, [...prefix, key]);
518
+ continue;
519
+ }
520
+ if (target !== -1 && prefix[target + 1] !== 'web') {
521
+ function nativeValue(input, depth = 0) {
522
+ const node = Expression.unwrap(input);
523
+ if (depth > 64) {
524
+ report('unsupported_syntax', 'Native value nesting exceeds 64 levels.', node);
525
+ return undefined;
526
+ }
527
+ if (node.type === 'ObjectExpression')
528
+ return object(node, [...prefix, key]);
529
+ if (node.type === 'ArrayExpression')
530
+ return node.elements.map((entry) => {
531
+ if (!entry || entry.type === 'SpreadElement') {
532
+ report('unsupported_syntax', 'Native arrays require dense static entries.', node);
533
+ return undefined;
534
+ }
535
+ return nativeValue(entry, depth + 1);
536
+ });
537
+ if (node.type === 'Literal' &&
538
+ (node.value === null ||
539
+ ['boolean', 'number', 'string'].includes(typeof node.value)))
540
+ return node.value;
541
+ if (node.type === 'UnaryExpression' &&
542
+ ['+', '-'].includes(node.operator) &&
543
+ node.argument.type === 'Literal' &&
544
+ typeof node.argument.value === 'number')
545
+ return (node.operator === '-' ? -1 : 1) * node.argument.value;
546
+ if (node.type === 'TemplateLiteral') {
547
+ const value = Expression.template(node);
548
+ if (typeof value === 'string')
549
+ return value;
550
+ }
551
+ report('unsupported_syntax', 'Native branches require static literal values.', node);
552
+ return undefined;
553
+ }
554
+ values[key] = nativeValue(property.value);
555
+ continue;
556
+ }
557
+ if (Condition.is(key)) {
558
+ conditionKeys.set(JSON.stringify([name, ...prefix, key]), property.key);
559
+ const input = Expression.unwrap(property.value);
560
+ if (input.type !== 'ObjectExpression') {
561
+ report('unsupported_syntax', 'Conditions require literal declaration objects.', input);
562
+ continue;
563
+ }
564
+ locations.push({
565
+ source: options.moduleId,
566
+ start: property.start,
567
+ end: property.end,
568
+ path: [name, ...prefix, key],
569
+ });
570
+ values[key] = object(input, [...prefix, key]);
571
+ continue;
572
+ }
573
+ const targets = themes?.styles.get(call.start)?.theme[Token.definition]
574
+ .contract.shorthands?.[key] ?? [key];
575
+ function value(node, path) {
576
+ const unwrapped = Expression.unwrap(node);
577
+ const token = variables.references.get(unwrapped.start) ??
578
+ themes?.tokens.get(unwrapped.start);
579
+ const reference = localSlot(node) ??
580
+ (token && token.end === unwrapped.end ? token.reference : undefined);
581
+ if (dynamicValues &&
582
+ reference &&
583
+ Object.values(dynamicValues.slots).includes(reference) &&
584
+ path.length > depth) {
585
+ report('unsupported_syntax', 'Dynamic fallback entries are not supported.', node);
586
+ return undefined;
587
+ }
588
+ node = Expression.unwrap(node);
589
+ const animation = contributions.references.get(node.start);
590
+ if (animation) {
591
+ const kind = contributions.kinds.get(animation);
592
+ if (kind &&
593
+ targets.some((target) => !RuleReference.accepts(kind, target))) {
594
+ report('unsupported_syntax', 'Named stylesheet reference is incompatible with this property.', node);
595
+ return undefined;
596
+ }
597
+ return animation;
598
+ }
599
+ const template = node.type === 'TemplateLiteral'
600
+ ? Expression.template(node, 0, (expression, prefix) => {
601
+ const animation = contributions.references.get(Expression.unwrap(expression).start);
602
+ if (animation) {
603
+ const kind = contributions.kinds.get(animation);
604
+ if (kind &&
605
+ targets.some((target) => !RuleReference.acceptsExpression(kind, target, prefix))) {
606
+ report('unsupported_syntax', 'Named stylesheet reference is incompatible with this property.', expression);
607
+ return undefined;
608
+ }
609
+ return animation;
610
+ }
611
+ const token = variables.references.get(expression.start) ??
612
+ themes?.tokens.get(expression.start);
613
+ const slot = localSlot(expression);
614
+ if (slot) {
615
+ if (path.length > depth) {
616
+ report('unsupported_syntax', 'Dynamic fallback entries are not supported.', expression);
617
+ return undefined;
618
+ }
619
+ return slot;
620
+ }
621
+ return token?.end === expression.end
622
+ ? token.reference
623
+ : undefined;
624
+ })
625
+ : undefined;
626
+ if (Token.isExpression(template)) {
627
+ for (const part of template.parts) {
628
+ if (typeof part !== 'string' &&
629
+ !(Binding.is(part)
630
+ ? (dynamicValues !== undefined &&
631
+ Object.values(dynamicValues.slots).includes(part)) ||
632
+ targets.every((target) => Binding.accepts(part.type, target))
633
+ : targets.every((target) => Token.accepts(part.group, target)))) {
634
+ report('unsupported_syntax', Binding.is(part)
635
+ ? 'Variable domain is incompatible with this property.'
636
+ : 'Theme variable domain is incompatible with this property.', node);
637
+ return undefined;
638
+ }
639
+ }
640
+ }
641
+ if (reference &&
642
+ Token.is(reference) &&
643
+ !targets.every((target) => Token.accepts(reference.group, target)) &&
644
+ !targets.every((target) => dynamicValues?.accepts(reference, target))) {
645
+ report('unsupported_syntax', 'Theme variable domain is incompatible with this property.', node);
646
+ return undefined;
647
+ }
648
+ if (reference &&
649
+ Binding.is(reference) &&
650
+ !(dynamicValues &&
651
+ Object.values(dynamicValues.slots).includes(reference) &&
652
+ reference.type !== 'number') &&
653
+ !targets.every((target) => Binding.accepts(reference.type, target) ||
654
+ dynamicValues?.accepts(reference, target))) {
655
+ report('unsupported_syntax', 'Variable domain is incompatible with this property.', node);
656
+ return undefined;
657
+ }
658
+ let result;
659
+ if (reference)
660
+ result = reference;
661
+ else if (template !== undefined)
662
+ result = template;
663
+ else if (node.type === 'Literal' &&
664
+ (typeof node.value === 'string' || typeof node.value === 'number'))
665
+ result = node.value;
666
+ else if (node.type === 'UnaryExpression' &&
667
+ (node.operator === '-' || node.operator === '+') &&
668
+ node.argument.type === 'Literal' &&
669
+ typeof node.argument.value === 'number')
670
+ result =
671
+ node.operator === '-' ? -node.argument.value : node.argument.value;
672
+ else if (node.type === 'ArrayExpression' && path.length === depth) {
673
+ result = node.elements.map((element, index) => {
674
+ if (!element || element.type === 'SpreadElement') {
675
+ report('unsupported_syntax', 'Fallback arrays require dense literal entries without spreads.', element ?? node);
676
+ return undefined;
677
+ }
678
+ return value(element, [...path, String(index)]);
679
+ });
680
+ }
681
+ else {
682
+ report('unsupported_syntax', 'Expected a literal string or number; expressions are not evaluated.', node);
683
+ return undefined;
684
+ }
685
+ locations.push({
686
+ end: node.end,
687
+ path,
688
+ source: options.moduleId,
689
+ start: node.start,
690
+ });
691
+ return result;
692
+ }
693
+ values[key] = value(property.value, [name, ...prefix, key]);
694
+ }
695
+ return values;
696
+ }
697
+ const values = object(argument);
698
+ if (diagnostics.length !== before)
699
+ continue;
700
+ try {
701
+ const definition = define({ [name]: values }, { locations, theme: themes?.styles.get(call.start)?.theme });
702
+ function validate(style, path) {
703
+ if (style.targets?.web)
704
+ validate(style.targets.web, [...path, 'targets', 'web']);
705
+ for (const rule of style.rules ?? []) {
706
+ if (rule.condition !== undefined) {
707
+ const location = conditionKeys.get(JSON.stringify([...path, rule.condition])) ??
708
+ call;
709
+ try {
710
+ AtRules.transform({
711
+ filename: options.moduleId,
712
+ code: Buffer.from(`.z{${rule.condition}{color:red;}}`),
713
+ errorRecovery: false,
714
+ });
715
+ }
716
+ catch (error) {
717
+ report('unsupported_syntax', `Invalid selector or condition: ${error.message}`, location);
718
+ }
719
+ }
720
+ validate(rule.style, rule.condition === undefined ? path : [...path, rule.condition]);
721
+ }
722
+ }
723
+ for (const style of definition.styles)
724
+ validate(style, [style.name]);
725
+ if (diagnostics.length !== before)
726
+ continue;
727
+ const cssOutput = themes?.styles.get(call.start)?.theme[Token.definition]
728
+ .contract.cssOutput;
729
+ styles.push(...definition.styles.map((style) => cssOutput ? Object.freeze({ ...style, cssOutput }) : style));
730
+ const shorthands = themes?.styles.get(call.start)?.theme[Token.definition]
731
+ .contract.shorthands;
732
+ const retained = staticRecipe ?? dynamicRecipe;
733
+ const targetRecipe = retained && {
734
+ ...retained,
735
+ rules: retained.rules.map(({ matches, value }, index) => ({
736
+ matches,
737
+ value: define({ [`${name}-${index}`]: object(value) }, { locations, theme: themes?.styles.get(call.start)?.theme }),
738
+ })),
739
+ };
740
+ calls.push({
741
+ ...(recipe ? { recipe, recipeTypes } : {}),
742
+ ...(staticRecipe
743
+ ? { staticRecipe: targetRecipe }
744
+ : dynamicRecipe
745
+ ? { dynamicRecipe: targetRecipe }
746
+ : {}),
747
+ ...(selectors.identities.has(call.start)
748
+ ? { identity: selectors.identities.get(call.start) }
749
+ : {}),
750
+ ...(argument !== (dynamic?.body ?? original) &&
751
+ argument.type === 'ObjectExpression'
752
+ ? { body: argument }
753
+ : {}),
754
+ ...(shorthands ? { shorthands } : {}),
755
+ ...(themes?.styles.get(call.start)?.output
756
+ ? { output: 'html' }
757
+ : {}),
758
+ ...(dynamic
759
+ ? {
760
+ slots: dynamic.slots,
761
+ valuesType: options.source.slice(dynamic.type.start, dynamic.type.end),
762
+ }
763
+ : {}),
764
+ ...(options.compiler === false
765
+ ? {
766
+ portable: (() => {
767
+ if (explicitId !== undefined)
768
+ return `z-style-${definitionId}`;
769
+ if (dynamic ||
770
+ recipe ||
771
+ (!definition.styles[0].declarations.length &&
772
+ !definition.styles[0].rules &&
773
+ !definition.styles[0].targets))
774
+ return undefined;
775
+ return Identity.style(definition.styles[0]);
776
+ })(),
777
+ }
778
+ : {}),
779
+ end: call.end,
780
+ name,
781
+ start: call.start,
782
+ });
783
+ }
784
+ catch (error) {
785
+ if (!(error instanceof Style.InvalidError))
786
+ throw error;
787
+ for (const diagnostic of error.diagnostics)
788
+ diagnostics.push({
789
+ code: 'invalid_literal',
790
+ end: diagnostic.location?.end ?? call.end,
791
+ message: diagnostic.message,
792
+ source: options.moduleId,
793
+ start: diagnostic.location?.start ?? call.start,
794
+ });
795
+ }
796
+ }
797
+ try {
798
+ for (const entry of options.target === 'native'
799
+ ? []
800
+ : Compositions.collect({
801
+ calls,
802
+ identity: namespace,
803
+ links: options[Themes.context]?.links,
804
+ program,
805
+ source: options.source,
806
+ styles,
807
+ })) {
808
+ calls.push(...(entry.cases ?? []).map((entry) => entry.call), entry.call);
809
+ styles.push(...(entry.cases ?? []).map((entry) => entry.style), entry.style);
810
+ }
811
+ }
812
+ catch (error) {
813
+ if (!(error instanceof Themes.InvalidError))
814
+ throw error;
815
+ report('unsupported_syntax', error.message, error);
816
+ }
817
+ if (themes && !diagnostics.length)
818
+ for (const [start, token] of themes.tokens) {
819
+ if (!staticData.used.has(start) &&
820
+ !themes.staticTokens.some((node) => node.start === start) &&
821
+ ![...calls, ...contributions.calls].some((call) => start >= call.start && token.end <= call.end))
822
+ report('unsupported_syntax', 'Theme references require a compiled style declaration.', { start, end: token.end });
823
+ }
824
+ let contributionData = [];
825
+ const contributionStarts = [...variables.registrationStarts];
826
+ try {
827
+ for (const [index, registration] of variables.registrations.entries()) {
828
+ try {
829
+ const css = Css.compile({
830
+ styles: { styles: [] },
831
+ contributions: [registration],
832
+ }).css;
833
+ AtRules.transform({
834
+ filename: options.moduleId,
835
+ code: new TextEncoder().encode(css),
836
+ errorRecovery: false,
837
+ });
838
+ }
839
+ catch (error) {
840
+ throw new Themes.InvalidError(error.message, variables.registrationLocations[index]);
841
+ }
842
+ }
843
+ contributionData = [
844
+ ...variables.registrations,
845
+ ...Contributions.extract(contributions, themes?.tokens ?? new Map(), contributionStarts),
846
+ ...(themes?.calls ?? []).flatMap((call) => call.options?.layers
847
+ ? [
848
+ {
849
+ kind: 'layers',
850
+ names: call.options.layers,
851
+ },
852
+ ]
853
+ : []),
854
+ ];
855
+ if (contributionData.length) {
856
+ const rendered = Css.compile({
857
+ styles: { styles: [] },
858
+ contributions: contributionData,
859
+ themes: themes?.themes,
860
+ }).css;
861
+ AtRules.transform({
862
+ filename: options.moduleId,
863
+ code: new TextEncoder().encode(rendered),
864
+ errorRecovery: false,
865
+ ...(!options[Themes.context]
866
+ ? {
867
+ visitor: {
868
+ Rule(rule) {
869
+ if (rule.type === 'import' &&
870
+ rule.value.url &&
871
+ !/^(?:\/|[?#]|[a-z][a-z\d+.-]*:)/i.test(rule.value.url))
872
+ throw new Error('Relative contribution assets require Graph.compile and a relocation host.');
873
+ },
874
+ Url(url) {
875
+ if (url.url &&
876
+ !/^(?:\/|[?#]|[a-z][a-z\d+.-]*:)/i.test(url.url))
877
+ throw new Error('Relative contribution assets require Graph.compile and a relocation host.');
878
+ },
879
+ },
880
+ }
881
+ : {}),
882
+ });
883
+ }
884
+ }
885
+ catch (error) {
886
+ report('unsupported_syntax', error.message, error instanceof Themes.InvalidError ? error : contributions.calls[0]);
887
+ }
888
+ for (const token of themes?.staticTokens ?? [])
889
+ if (!staticData.used.has(Expression.unwrap(token).start))
890
+ report('unsupported_syntax', 'Token references must be direct property values in bound theme style calls.', token);
891
+ if (diagnostics.length)
892
+ throw new ExtractError(diagnostics);
893
+ function exportedStyle(link) {
894
+ const call = calls.find((call) => call.identity === link.binding);
895
+ const style = call && styles.find((style) => style.name === call.name);
896
+ return {
897
+ ...link,
898
+ ...(call && style ? { style: PackedStyles.create(call, style) } : {}),
899
+ ...(link.members
900
+ ? {
901
+ members: Object.fromEntries(Object.entries(link.members).map(([name, member]) => [
902
+ name,
903
+ exportedStyle(member),
904
+ ])),
905
+ }
906
+ : {}),
907
+ };
908
+ }
909
+ return Object.freeze({
910
+ namespaces: contributionData.filter((value) => value.kind === 'namespace'),
911
+ ...(contributionData.length
912
+ ? { contributions: contributionData, contributionStarts }
913
+ : {}),
914
+ ...(contributions.calls.length
915
+ ? { contributionCalls: contributions.calls }
916
+ : {}),
917
+ ...(options[Themes.context]
918
+ ? {
919
+ themeExports: Object.freeze({
920
+ ...themes?.exports,
921
+ ...Object.fromEntries(Object.entries(selectors.exports).map(([name, link]) => [
922
+ name,
923
+ exportedStyle(link),
924
+ ])),
925
+ ...contributions.exports,
926
+ ...variables.exports,
927
+ }),
928
+ }
929
+ : {}),
930
+ calls: Object.freeze(calls
931
+ .sort((a, b) => a.start - b.start)
932
+ .map((call) => {
933
+ const nativeContext = options.target === 'native'
934
+ ? themes?.nativeContext(call.start, call.end)
935
+ : undefined;
936
+ return Object.freeze(nativeContext ? { ...call, nativeContext } : call);
937
+ })),
938
+ styles: Object.freeze({ styles: Object.freeze(styles) }),
939
+ ...(variables.calls.length
940
+ ? { variableCalls: Object.freeze(variables.calls) }
941
+ : {}),
942
+ themeAliases: Object.freeze(themes?.aliases ?? []),
943
+ ...(themes?.appearances.size
944
+ ? { themeAppearances: Object.freeze([...themes.appearances]) }
945
+ : {}),
946
+ ...(themes?.scripts.size
947
+ ? { themeScripts: Object.freeze([...themes.scripts]) }
948
+ : {}),
949
+ ...(themes?.selections.size
950
+ ? { themeSelections: Object.freeze([...themes.selections]) }
951
+ : {}),
952
+ themeCalls: Object.freeze(themes?.calls ?? []),
953
+ ...(themes?.staticTokens.length
954
+ ? {
955
+ staticThemeReferences: Object.freeze((themes?.staticTokens ?? []).map((node) => ({
956
+ start: node.start,
957
+ end: node.end,
958
+ value: ThemeValues.create().serialize(themes.tokens.get(node.start).reference),
959
+ }))),
960
+ }
961
+ : {}),
962
+ themeReferences: Object.freeze(themes?.references ?? []),
963
+ themes: themes?.themes ?? Object.freeze({}),
964
+ });
965
+ }
966
+ /** Aggregated source diagnostics; no partial result is returned. */
967
+ export class ExtractError extends Error {
968
+ /** Freezes source diagnostics in source order. */
969
+ constructor(diagnostics) {
970
+ const ordered = [...diagnostics].sort((a, b) => a.start - b.start);
971
+ super(ordered
972
+ .map((item) => `${item.source}:${item.start}: ${item.message}`)
973
+ .join('\n'));
974
+ this.diagnostics = Object.freeze(ordered.map((item) => Object.freeze({ ...item })));
975
+ }
976
+ /** Immutable source failures. */
977
+ diagnostics;
978
+ /** Stable namespaced error identifier. */
979
+ name = 'Source.ExtractError';
980
+ }
981
+ function identity(value) {
982
+ let first = 2166136261;
983
+ let second = 2246822507;
984
+ for (let index = 0; index < value.length; index++) {
985
+ first = Math.imul(first ^ value.charCodeAt(index), 16777619);
986
+ second = Math.imul(second ^ value.charCodeAt(index), 3266489909);
987
+ }
988
+ return `${(first >>> 0).toString(36)}${(second >>> 0).toString(36)}`;
989
+ }
990
+ //# sourceMappingURL=Source.js.map