zyzz 0.0.0 → 0.0.3

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 (683) 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 +170 -0
  12. package/dist/Style.d.ts.map +1 -0
  13. package/dist/Style.js +325 -0
  14. package/dist/Style.js.map +1 -0
  15. package/dist/Theme.d.ts +157 -0
  16. package/dist/Theme.d.ts.map +1 -0
  17. package/dist/Theme.js +273 -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 +167 -0
  44. package/dist/compiler/Source.d.ts.map +1 -0
  45. package/dist/compiler/Source.js +1012 -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 +886 -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 +607 -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 +3225 -0
  188. package/dist/default.d.ts.map +1 -0
  189. package/dist/default.js +547 -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 +50 -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/Typography.d.ts +23 -0
  297. package/dist/internal/Typography.d.ts.map +1 -0
  298. package/dist/internal/Typography.js +18 -0
  299. package/dist/internal/Typography.js.map +1 -0
  300. package/dist/internal/Value.d.ts +74 -0
  301. package/dist/internal/Value.d.ts.map +1 -0
  302. package/dist/internal/Value.js +60 -0
  303. package/dist/internal/Value.js.map +1 -0
  304. package/dist/metro/Graph.d.ts +8 -0
  305. package/dist/metro/Graph.d.ts.map +1 -0
  306. package/dist/metro/Graph.js +63 -0
  307. package/dist/metro/Graph.js.map +1 -0
  308. package/dist/metro/Watch.d.ts +21 -0
  309. package/dist/metro/Watch.d.ts.map +1 -0
  310. package/dist/metro/Watch.js +51 -0
  311. package/dist/metro/Watch.js.map +1 -0
  312. package/dist/metro/index.d.ts +30 -0
  313. package/dist/metro/index.d.ts.map +1 -0
  314. package/dist/metro/index.js +52 -0
  315. package/dist/metro/index.js.map +1 -0
  316. package/dist/metro/transformer.d.ts +21 -0
  317. package/dist/metro/transformer.d.ts.map +1 -0
  318. package/dist/metro/transformer.js +71 -0
  319. package/dist/metro/transformer.js.map +1 -0
  320. package/dist/next/index.d.ts +18 -0
  321. package/dist/next/index.d.ts.map +1 -0
  322. package/dist/next/index.js +92 -0
  323. package/dist/next/index.js.map +1 -0
  324. package/dist/next/loader.d.ts +16 -0
  325. package/dist/next/loader.d.ts.map +1 -0
  326. package/dist/next/loader.js +282 -0
  327. package/dist/next/loader.js.map +1 -0
  328. package/dist/node/Host.d.ts +80 -0
  329. package/dist/node/Host.d.ts.map +1 -0
  330. package/dist/node/Host.js +882 -0
  331. package/dist/node/Host.js.map +1 -0
  332. package/dist/node/index.d.ts +7 -0
  333. package/dist/node/index.d.ts.map +1 -0
  334. package/dist/node/index.js +7 -0
  335. package/dist/node/index.js.map +1 -0
  336. package/dist/react-native/Host.d.ts +76 -0
  337. package/dist/react-native/Host.d.ts.map +1 -0
  338. package/dist/react-native/Host.js +209 -0
  339. package/dist/react-native/Host.js.map +1 -0
  340. package/dist/react-native/StyleSheet.d.ts +226 -0
  341. package/dist/react-native/StyleSheet.d.ts.map +1 -0
  342. package/dist/react-native/StyleSheet.js +606 -0
  343. package/dist/react-native/StyleSheet.js.map +1 -0
  344. package/dist/react-native/Variants.d.ts +38 -0
  345. package/dist/react-native/Variants.d.ts.map +1 -0
  346. package/dist/react-native/Variants.js +66 -0
  347. package/dist/react-native/Variants.js.map +1 -0
  348. package/dist/react-native/index.d.ts +8 -0
  349. package/dist/react-native/index.d.ts.map +1 -0
  350. package/dist/react-native/index.js +8 -0
  351. package/dist/react-native/index.js.map +1 -0
  352. package/dist/react-native/internal/Color.d.ts +7 -0
  353. package/dist/react-native/internal/Color.d.ts.map +1 -0
  354. package/dist/react-native/internal/Color.js +93 -0
  355. package/dist/react-native/internal/Color.js.map +1 -0
  356. package/dist/react-native/internal/NativeSchema.d.ts +5138 -0
  357. package/dist/react-native/internal/NativeSchema.d.ts.map +1 -0
  358. package/dist/react-native/internal/NativeSchema.js +3097 -0
  359. package/dist/react-native/internal/NativeSchema.js.map +1 -0
  360. package/dist/react-native/internal/Scalar.d.ts +95 -0
  361. package/dist/react-native/internal/Scalar.d.ts.map +1 -0
  362. package/dist/react-native/internal/Scalar.js +199 -0
  363. package/dist/react-native/internal/Scalar.js.map +1 -0
  364. package/dist/react-native/internal/Values.d.ts +5 -0
  365. package/dist/react-native/internal/Values.d.ts.map +1 -0
  366. package/dist/react-native/internal/Values.js +65 -0
  367. package/dist/react-native/internal/Values.js.map +1 -0
  368. package/dist/react-native/react.d.ts +22 -0
  369. package/dist/react-native/react.d.ts.map +1 -0
  370. package/dist/react-native/react.js +26 -0
  371. package/dist/react-native/react.js.map +1 -0
  372. package/dist/reset.css +244 -0
  373. package/dist/runtime/Appearance.d.ts +55 -0
  374. package/dist/runtime/Appearance.d.ts.map +1 -0
  375. package/dist/runtime/Appearance.js +84 -0
  376. package/dist/runtime/Appearance.js.map +1 -0
  377. package/dist/runtime/Composition.d.ts +46 -0
  378. package/dist/runtime/Composition.d.ts.map +1 -0
  379. package/dist/runtime/Composition.js +52 -0
  380. package/dist/runtime/Composition.js.map +1 -0
  381. package/dist/runtime/CompositionHtml.d.ts +15 -0
  382. package/dist/runtime/CompositionHtml.d.ts.map +1 -0
  383. package/dist/runtime/CompositionHtml.js +20 -0
  384. package/dist/runtime/CompositionHtml.js.map +1 -0
  385. package/dist/runtime/ConditionalRecipe.d.ts +30 -0
  386. package/dist/runtime/ConditionalRecipe.d.ts.map +1 -0
  387. package/dist/runtime/ConditionalRecipe.js +39 -0
  388. package/dist/runtime/ConditionalRecipe.js.map +1 -0
  389. package/dist/runtime/Dynamic.d.ts +19 -0
  390. package/dist/runtime/Dynamic.d.ts.map +1 -0
  391. package/dist/runtime/Dynamic.js +22 -0
  392. package/dist/runtime/Dynamic.js.map +1 -0
  393. package/dist/runtime/Html.d.ts +32 -0
  394. package/dist/runtime/Html.d.ts.map +1 -0
  395. package/dist/runtime/Html.js +63 -0
  396. package/dist/runtime/Html.js.map +1 -0
  397. package/dist/runtime/Native.d.ts +48 -0
  398. package/dist/runtime/Native.d.ts.map +1 -0
  399. package/dist/runtime/Native.js +78 -0
  400. package/dist/runtime/Native.js.map +1 -0
  401. package/dist/runtime/NativeContext.d.ts +17 -0
  402. package/dist/runtime/NativeContext.d.ts.map +1 -0
  403. package/dist/runtime/NativeContext.js +47 -0
  404. package/dist/runtime/NativeContext.js.map +1 -0
  405. package/dist/runtime/NativeDynamic.d.ts +47 -0
  406. package/dist/runtime/NativeDynamic.d.ts.map +1 -0
  407. package/dist/runtime/NativeDynamic.js +141 -0
  408. package/dist/runtime/NativeDynamic.js.map +1 -0
  409. package/dist/runtime/PayloadRecipe.d.ts +22 -0
  410. package/dist/runtime/PayloadRecipe.d.ts.map +1 -0
  411. package/dist/runtime/PayloadRecipe.js +59 -0
  412. package/dist/runtime/PayloadRecipe.js.map +1 -0
  413. package/dist/runtime/Props.d.ts +21 -0
  414. package/dist/runtime/Props.d.ts.map +1 -0
  415. package/dist/runtime/Props.js +17 -0
  416. package/dist/runtime/Props.js.map +1 -0
  417. package/dist/runtime/Recipe.d.ts +52 -0
  418. package/dist/runtime/Recipe.d.ts.map +1 -0
  419. package/dist/runtime/Recipe.js +30 -0
  420. package/dist/runtime/Recipe.js.map +1 -0
  421. package/dist/runtime/Selection.d.ts +31 -0
  422. package/dist/runtime/Selection.d.ts.map +1 -0
  423. package/dist/runtime/Selection.js +30 -0
  424. package/dist/runtime/Selection.js.map +1 -0
  425. package/dist/runtime/Variable.d.ts +6 -0
  426. package/dist/runtime/Variable.d.ts.map +1 -0
  427. package/dist/runtime/Variable.js +10 -0
  428. package/dist/runtime/Variable.js.map +1 -0
  429. package/dist/runtime/index.d.ts +33 -0
  430. package/dist/runtime/index.d.ts.map +1 -0
  431. package/dist/runtime/index.js +33 -0
  432. package/dist/runtime/index.js.map +1 -0
  433. package/dist/styleFunction.d.ts +72 -0
  434. package/dist/styleFunction.d.ts.map +1 -0
  435. package/dist/styleFunction.js +18 -0
  436. package/dist/styleFunction.js.map +1 -0
  437. package/dist/themes/LICENSE.tailwind +21 -0
  438. package/dist/variable.d.ts +50 -0
  439. package/dist/variable.d.ts.map +1 -0
  440. package/dist/variable.js +20 -0
  441. package/dist/variable.js.map +1 -0
  442. package/dist/variants.d.ts +84 -0
  443. package/dist/variants.d.ts.map +1 -0
  444. package/dist/variants.js +21 -0
  445. package/dist/variants.js.map +1 -0
  446. package/dist/vite/index.d.ts +24 -0
  447. package/dist/vite/index.d.ts.map +1 -0
  448. package/dist/vite/index.js +1089 -0
  449. package/dist/vite/index.js.map +1 -0
  450. package/dist/web/Css.d.ts +81 -0
  451. package/dist/web/Css.d.ts.map +1 -0
  452. package/dist/web/Css.js +593 -0
  453. package/dist/web/Css.js.map +1 -0
  454. package/dist/web/colorProfile.d.ts +28 -0
  455. package/dist/web/colorProfile.d.ts.map +1 -0
  456. package/dist/web/colorProfile.js +8 -0
  457. package/dist/web/colorProfile.js.map +1 -0
  458. package/dist/web/counterStyle.d.ts +48 -0
  459. package/dist/web/counterStyle.d.ts.map +1 -0
  460. package/dist/web/counterStyle.js +8 -0
  461. package/dist/web/counterStyle.js.map +1 -0
  462. package/dist/web/cssFunction.d.ts +80 -0
  463. package/dist/web/cssFunction.d.ts.map +1 -0
  464. package/dist/web/cssFunction.js +18 -0
  465. package/dist/web/cssFunction.js.map +1 -0
  466. package/dist/web/customMedia.d.ts +12 -0
  467. package/dist/web/customMedia.d.ts.map +1 -0
  468. package/dist/web/customMedia.js +7 -0
  469. package/dist/web/customMedia.js.map +1 -0
  470. package/dist/web/fontFace.d.ts +26 -0
  471. package/dist/web/fontFace.d.ts.map +1 -0
  472. package/dist/web/fontFace.js +7 -0
  473. package/dist/web/fontFace.js.map +1 -0
  474. package/dist/web/fontFeatureValues.d.ts +40 -0
  475. package/dist/web/fontFeatureValues.d.ts.map +1 -0
  476. package/dist/web/fontFeatureValues.js +7 -0
  477. package/dist/web/fontFeatureValues.js.map +1 -0
  478. package/dist/web/fontPaletteValues.d.ts +21 -0
  479. package/dist/web/fontPaletteValues.d.ts.map +1 -0
  480. package/dist/web/fontPaletteValues.js +9 -0
  481. package/dist/web/fontPaletteValues.js.map +1 -0
  482. package/dist/web/global.d.ts +19 -0
  483. package/dist/web/global.d.ts.map +1 -0
  484. package/dist/web/global.js +6 -0
  485. package/dist/web/global.js.map +1 -0
  486. package/dist/web/importCss.d.ts +18 -0
  487. package/dist/web/importCss.d.ts.map +1 -0
  488. package/dist/web/importCss.js +7 -0
  489. package/dist/web/importCss.js.map +1 -0
  490. package/dist/web/index.d.ts +22 -0
  491. package/dist/web/index.d.ts.map +1 -0
  492. package/dist/web/index.js +22 -0
  493. package/dist/web/index.js.map +1 -0
  494. package/dist/web/internal/Block.d.ts +18 -0
  495. package/dist/web/internal/Block.d.ts.map +1 -0
  496. package/dist/web/internal/Block.js +13 -0
  497. package/dist/web/internal/Block.js.map +1 -0
  498. package/dist/web/internal/ClassName.d.ts +19 -0
  499. package/dist/web/internal/ClassName.d.ts.map +1 -0
  500. package/dist/web/internal/ClassName.js +77 -0
  501. package/dist/web/internal/ClassName.js.map +1 -0
  502. package/dist/web/internal/Context.d.ts +11 -0
  503. package/dist/web/internal/Context.d.ts.map +1 -0
  504. package/dist/web/internal/Context.js +2 -0
  505. package/dist/web/internal/Context.js.map +1 -0
  506. package/dist/web/internal/Contributions.d.ts +70 -0
  507. package/dist/web/internal/Contributions.d.ts.map +1 -0
  508. package/dist/web/internal/Contributions.js +109 -0
  509. package/dist/web/internal/Contributions.js.map +1 -0
  510. package/dist/web/internal/Namespace.d.ts +13 -0
  511. package/dist/web/internal/Namespace.d.ts.map +1 -0
  512. package/dist/web/internal/Namespace.js +13 -0
  513. package/dist/web/internal/Namespace.js.map +1 -0
  514. package/dist/web/internal/Themes.d.ts +13 -0
  515. package/dist/web/internal/Themes.d.ts.map +1 -0
  516. package/dist/web/internal/Themes.js +96 -0
  517. package/dist/web/internal/Themes.js.map +1 -0
  518. package/dist/web/keyframes.d.ts +14 -0
  519. package/dist/web/keyframes.d.ts.map +1 -0
  520. package/dist/web/keyframes.js +8 -0
  521. package/dist/web/keyframes.js.map +1 -0
  522. package/dist/web/layers.d.ts +4 -0
  523. package/dist/web/layers.d.ts.map +1 -0
  524. package/dist/web/layers.js +7 -0
  525. package/dist/web/layers.js.map +1 -0
  526. package/dist/web/namespace.d.ts +14 -0
  527. package/dist/web/namespace.d.ts.map +1 -0
  528. package/dist/web/namespace.js +7 -0
  529. package/dist/web/namespace.js.map +1 -0
  530. package/dist/web/page.d.ts +38 -0
  531. package/dist/web/page.d.ts.map +1 -0
  532. package/dist/web/page.js +7 -0
  533. package/dist/web/page.js.map +1 -0
  534. package/dist/web/positionTry.d.ts +14 -0
  535. package/dist/web/positionTry.d.ts.map +1 -0
  536. package/dist/web/positionTry.js +9 -0
  537. package/dist/web/positionTry.js.map +1 -0
  538. package/dist/web/property.d.ts +24 -0
  539. package/dist/web/property.d.ts.map +1 -0
  540. package/dist/web/property.js +7 -0
  541. package/dist/web/property.js.map +1 -0
  542. package/dist/web/viewTransition.d.ts +29 -0
  543. package/dist/web/viewTransition.d.ts.map +1 -0
  544. package/dist/web/viewTransition.js +7 -0
  545. package/dist/web/viewTransition.js.map +1 -0
  546. package/package.json +136 -10
  547. package/src/Config.ts +691 -0
  548. package/src/Props.ts +8 -0
  549. package/src/Style.ts +812 -0
  550. package/src/Theme.ts +784 -0
  551. package/src/babel/NativeEdits.ts +273 -0
  552. package/src/babel/NativeJsx.ts +260 -0
  553. package/src/babel/index.ts +332 -0
  554. package/src/cli/index.ts +196 -0
  555. package/src/compiler/Graph.ts +1586 -0
  556. package/src/compiler/Native.ts +801 -0
  557. package/src/compiler/Source.ts +1579 -0
  558. package/src/compiler/Transform.ts +1241 -0
  559. package/src/compiler/index.ts +12 -0
  560. package/src/compiler/internal/Applications.ts +378 -0
  561. package/src/compiler/internal/AtRules.ts +202 -0
  562. package/src/compiler/internal/Catalogs.ts +114 -0
  563. package/src/compiler/internal/ColorProfiles.ts +93 -0
  564. package/src/compiler/internal/CompositionBindings.ts +120 -0
  565. package/src/compiler/internal/Compositions.ts +629 -0
  566. package/src/compiler/internal/Configurations.ts +244 -0
  567. package/src/compiler/internal/Contract.ts +860 -0
  568. package/src/compiler/internal/Contributions.ts +1507 -0
  569. package/src/compiler/internal/Descriptors.ts +238 -0
  570. package/src/compiler/internal/Dynamic.ts +266 -0
  571. package/src/compiler/internal/Edits.ts +13 -0
  572. package/src/compiler/internal/Expression.ts +135 -0
  573. package/src/compiler/internal/Functions.ts +206 -0
  574. package/src/compiler/internal/Identifiers.ts +124 -0
  575. package/src/compiler/internal/Keyframes.ts +62 -0
  576. package/src/compiler/internal/Namespaces.ts +296 -0
  577. package/src/compiler/internal/NativeBindings.ts +151 -0
  578. package/src/compiler/internal/PackedStyles.ts +464 -0
  579. package/src/compiler/internal/Properties.ts +121 -0
  580. package/src/compiler/internal/RecipeConditions.ts +139 -0
  581. package/src/compiler/internal/RecipePayloads.ts +132 -0
  582. package/src/compiler/internal/Recipes.ts +531 -0
  583. package/src/compiler/internal/Relative.ts +87 -0
  584. package/src/compiler/internal/Scope.ts +36 -0
  585. package/src/compiler/internal/Selectors.ts +334 -0
  586. package/src/compiler/internal/Static.ts +783 -0
  587. package/src/compiler/internal/Stylesheets.ts +361 -0
  588. package/src/compiler/internal/Syntax.ts +31 -0
  589. package/src/compiler/internal/Themes.ts +1794 -0
  590. package/src/compiler/internal/Variables.ts +497 -0
  591. package/src/compiler/internal/ViewTransitions.ts +82 -0
  592. package/src/cx.ts +98 -0
  593. package/src/default.ts +1177 -0
  594. package/src/index.ts +20 -0
  595. package/src/internal/Authoring.ts +199 -0
  596. package/src/internal/Binding.ts +187 -0
  597. package/src/internal/BindingDomains.ts +458 -0
  598. package/src/internal/Cascade.ts +165 -0
  599. package/src/internal/Compound.ts +522 -0
  600. package/src/internal/Condition.ts +283 -0
  601. package/src/internal/Corner.ts +17 -0
  602. package/src/internal/FunctionSyntax.ts +271 -0
  603. package/src/internal/FunctionValue.ts +96 -0
  604. package/src/internal/Geometry.ts +30 -0
  605. package/src/internal/Grid.ts +67 -0
  606. package/src/internal/Identifier.ts +14 -0
  607. package/src/internal/Identity.ts +89 -0
  608. package/src/internal/Lexical.ts +202 -0
  609. package/src/internal/Literal.ts +3820 -0
  610. package/src/internal/NativeProperties.ts +936 -0
  611. package/src/internal/Numeric.ts +77 -0
  612. package/src/internal/Query.ts +87 -0
  613. package/src/internal/Recipe.ts +17 -0
  614. package/src/internal/RuleReference.ts +102 -0
  615. package/src/internal/Scheme.ts +20 -0
  616. package/src/internal/Shorthands.ts +122 -0
  617. package/src/internal/Targets.ts +162 -0
  618. package/src/internal/Token.ts +380 -0
  619. package/src/internal/Tuple.ts +29 -0
  620. package/src/internal/Typography.ts +51 -0
  621. package/src/internal/Value.ts +320 -0
  622. package/src/metro/Graph.ts +78 -0
  623. package/src/metro/Watch.ts +88 -0
  624. package/src/metro/index.ts +99 -0
  625. package/src/metro/transformer.ts +97 -0
  626. package/src/next/index.ts +114 -0
  627. package/src/next/loader.ts +369 -0
  628. package/src/node/Host.ts +1204 -0
  629. package/src/node/index.ts +6 -0
  630. package/src/react-native/Host.ts +289 -0
  631. package/src/react-native/StyleSheet.ts +1084 -0
  632. package/src/react-native/Variants.ts +122 -0
  633. package/src/react-native/index.ts +7 -0
  634. package/src/react-native/internal/Color.ts +110 -0
  635. package/src/react-native/internal/NativeSchema.ts +3096 -0
  636. package/src/react-native/internal/Scalar.ts +253 -0
  637. package/src/react-native/internal/Values.ts +87 -0
  638. package/src/react-native/react.ts +47 -0
  639. package/src/reset.css +244 -0
  640. package/src/runtime/Appearance.ts +155 -0
  641. package/src/runtime/Composition.ts +87 -0
  642. package/src/runtime/CompositionHtml.ts +38 -0
  643. package/src/runtime/ConditionalRecipe.ts +70 -0
  644. package/src/runtime/Dynamic.ts +51 -0
  645. package/src/runtime/Html.ts +91 -0
  646. package/src/runtime/Native.ts +144 -0
  647. package/src/runtime/NativeContext.ts +74 -0
  648. package/src/runtime/NativeDynamic.ts +246 -0
  649. package/src/runtime/PayloadRecipe.ts +96 -0
  650. package/src/runtime/Props.ts +33 -0
  651. package/src/runtime/Recipe.ts +74 -0
  652. package/src/runtime/Selection.ts +82 -0
  653. package/src/runtime/Variable.ts +15 -0
  654. package/src/runtime/index.ts +45 -0
  655. package/src/styleFunction.ts +138 -0
  656. package/src/themes/LICENSE.tailwind +21 -0
  657. package/src/variable.ts +105 -0
  658. package/src/variants.ts +218 -0
  659. package/src/vite/index.ts +1473 -0
  660. package/src/web/Css.ts +801 -0
  661. package/src/web/colorProfile.ts +60 -0
  662. package/src/web/counterStyle.ts +82 -0
  663. package/src/web/cssFunction.ts +181 -0
  664. package/src/web/customMedia.ts +16 -0
  665. package/src/web/fontFace.ts +41 -0
  666. package/src/web/fontFeatureValues.ts +79 -0
  667. package/src/web/fontPaletteValues.ts +42 -0
  668. package/src/web/global.ts +39 -0
  669. package/src/web/importCss.ts +23 -0
  670. package/src/web/index.ts +22 -0
  671. package/src/web/internal/Block.ts +29 -0
  672. package/src/web/internal/ClassName.ts +112 -0
  673. package/src/web/internal/Context.ts +16 -0
  674. package/src/web/internal/Contributions.ts +219 -0
  675. package/src/web/internal/Namespace.ts +21 -0
  676. package/src/web/internal/Themes.ts +133 -0
  677. package/src/web/keyframes.ts +43 -0
  678. package/src/web/layers.ts +6 -0
  679. package/src/web/namespace.ts +19 -0
  680. package/src/web/page.ts +140 -0
  681. package/src/web/positionTry.ts +71 -0
  682. package/src/web/property.ts +35 -0
  683. package/src/web/viewTransition.ts +89 -0
@@ -0,0 +1,629 @@
1
+ /** Resolves known applications into ordered compiler-owned composition groups. @module */
2
+ import * as Identity from '../../internal/Identity.js'
3
+ import type * as Ast from '@oxc-project/types'
4
+ import * as Walker from 'oxc-walker'
5
+ import * as ConditionalRecipe from '../../runtime/ConditionalRecipe.js'
6
+ import type * as Composition from '../../runtime/Composition.js'
7
+ import type * as Style from '../../Style.js'
8
+ import type * as Source from '../Source.js'
9
+ import * as Applications from './Applications.js'
10
+ import * as CompositionBindings from './CompositionBindings.js'
11
+ import * as Expression from './Expression.js'
12
+ import * as Scope from './Scope.js'
13
+ import * as Themes from './Themes.js'
14
+
15
+ /** Collects ordered compositions without evaluating expressions or changing binding reads. */
16
+ export function collect(options: collect.Options) {
17
+ if (
18
+ !options.program.body.some(
19
+ (node) =>
20
+ node.type === 'ImportDeclaration' &&
21
+ node.source.value === 'zyzz' &&
22
+ node.importKind !== 'type' &&
23
+ node.specifiers.some(
24
+ (specifier) =>
25
+ specifier.type === 'ImportSpecifier' &&
26
+ (specifier.imported.type === 'Identifier'
27
+ ? specifier.imported.name
28
+ : specifier.imported.value) === 'cx',
29
+ ),
30
+ )
31
+ )
32
+ return []
33
+
34
+ const bodies = new Map<number, Ast.ObjectExpression>()
35
+ const undefinedReads = new Set<number>()
36
+ const applications = Applications.create(options.program, options.calls, {
37
+ dynamic: true,
38
+ })
39
+ const scope = new Scope.Tracker()
40
+ const bindings = CompositionBindings.create({
41
+ declaration: (name) => scope.getDeclaration(name)?.node,
42
+ })
43
+ const nodes: Ast.CallExpression[] = []
44
+ const aliases = new Map<Ast.Node, Themes.Link>()
45
+ const externalCalls = new Map<string, Source.Call>()
46
+ const externalStyles = new Map<string, Style.NamedStyle>()
47
+ const externalApplications = new Map<
48
+ number,
49
+ { calleeEnd: number; end: number; name: string; start: number }
50
+ >()
51
+
52
+ function external(node: Ast.Node): Themes.Link | undefined {
53
+ if (node.type === 'Identifier') {
54
+ const binding = scope.getDeclaration(node.name)
55
+ const alias = binding?.node && aliases.get(binding.node)
56
+ if (alias) return alias
57
+
58
+ if (
59
+ binding?.type === 'Import' &&
60
+ binding.importNode.importKind !== 'type'
61
+ )
62
+ return options.links?.[node.name]
63
+ }
64
+ if (
65
+ node.type === 'MemberExpression' &&
66
+ !node.computed &&
67
+ !node.optional &&
68
+ node.property.type === 'Identifier'
69
+ )
70
+ return external(node.object)?.members?.[node.property.name]
71
+ return undefined
72
+ }
73
+
74
+ Walker.walk(options.program, {
75
+ scopeTracker: scope,
76
+ enter(node, parent) {
77
+ applications?.enter(node, parent)
78
+ bindings.enter(node, parent)
79
+ if (
80
+ node.type === 'VariableDeclarator' &&
81
+ node.init &&
82
+ parent?.type === 'VariableDeclaration' &&
83
+ parent.kind === 'const'
84
+ ) {
85
+ const link = external(node.init)
86
+ if (link && node.id.type === 'Identifier') aliases.set(node.id, link)
87
+ if (link && node.id.type === 'ObjectPattern')
88
+ for (const property of node.id.properties)
89
+ if (
90
+ property.type === 'Property' &&
91
+ !property.computed &&
92
+ property.key.type === 'Identifier' &&
93
+ property.value.type === 'Identifier'
94
+ ) {
95
+ const member = link.members?.[property.key.name]
96
+ if (member) aliases.set(property.value, member)
97
+ }
98
+ }
99
+
100
+ if (node.type === 'CallExpression') {
101
+ const link = external(node.callee)
102
+ if (link?.style && !node.optional) {
103
+ const name = link.binding
104
+ externalCalls.set(name, {
105
+ end: -1,
106
+ identity: name,
107
+ portable: link.style.className,
108
+ name,
109
+ ...(link.style.output ? { output: link.style.output } : {}),
110
+ ownership: {
111
+ attributes: link.style.attributes,
112
+ identity: name,
113
+ slots: link.style.slots,
114
+ },
115
+ start: node.start,
116
+ })
117
+ externalStyles.set(name, { ...link.style.style, name })
118
+ externalApplications.set(node.start, {
119
+ calleeEnd: node.callee.end,
120
+ end: node.end,
121
+ name,
122
+ start: node.start,
123
+ })
124
+ }
125
+ const call = options.calls.find((call) => call.start === node.start)
126
+ const argument = node.arguments[0]
127
+ const body =
128
+ call?.body ??
129
+ (argument?.type === 'ArrowFunctionExpression'
130
+ ? Expression.unwrap(argument.body)
131
+ : argument)
132
+ if (call && body?.type === 'ObjectExpression')
133
+ bodies.set(call.start, body)
134
+ }
135
+ if (
136
+ node.type === 'Identifier' &&
137
+ node.name === 'undefined' &&
138
+ !scope.getDeclaration(node.name)
139
+ )
140
+ undefinedReads.add(node.start)
141
+ if (node.type !== 'CallExpression' || node.callee.type !== 'Identifier')
142
+ return
143
+ const binding = scope.getDeclaration(node.callee.name)
144
+ if (
145
+ binding?.type !== 'Import' ||
146
+ binding.importNode.source.value !== 'zyzz' ||
147
+ binding.node.type !== 'ImportSpecifier' ||
148
+ binding.importNode.importKind === 'type' ||
149
+ binding.node.importKind === 'type'
150
+ )
151
+ return
152
+ const imported = binding.node.imported
153
+ if (
154
+ (imported.type === 'Identifier' ? imported.name : imported.value) ===
155
+ 'cx'
156
+ )
157
+ nodes.push(node)
158
+ },
159
+ })
160
+ const applied = new Map(
161
+ [...(applications?.find() ?? []), ...externalApplications.values()].map(
162
+ (application) => [application.start, application],
163
+ ),
164
+ )
165
+ const calls = new Map(options.calls.map((call) => [call.start, call]))
166
+ const byName = new Map(
167
+ [...options.calls, ...externalCalls.values()].map((call) => [
168
+ call.name,
169
+ call,
170
+ ]),
171
+ )
172
+ const styles = new Map(
173
+ [...options.styles, ...externalStyles.values()].map((style) => [
174
+ style.name,
175
+ style,
176
+ ]),
177
+ )
178
+ type Entry = {
179
+ call: Source.Call
180
+ style: Style.NamedStyle
181
+ cases?:
182
+ | readonly { call: Source.Call; style: Style.NamedStyle }[]
183
+ | undefined
184
+ }
185
+ const result: Entry[] = []
186
+
187
+ for (const node of nodes.sort((a, b) =>
188
+ a.start < b.start && a.end >= b.end
189
+ ? 1
190
+ : b.start < a.start && b.end >= a.end
191
+ ? -1
192
+ : a.start - b.start,
193
+ )) {
194
+ const selected: Source.Call[] = []
195
+ const inputs: NonNullable<Source.Call['runtimeComposition']>[number][] = []
196
+ let runtime = false
197
+ let conditions = 0
198
+ const attributes = new Map<string, string>()
199
+
200
+ function owners(call: Source.Call): readonly Composition.Owner[] {
201
+ if (call.ownership) return [call.ownership]
202
+ if (call.runtimeComposition)
203
+ return call.runtimeComposition.flatMap((input) => input.owners)
204
+ return [
205
+ {
206
+ identity: call.name,
207
+ attributes: Object.keys(call.recipe?.axes ?? {}).flatMap((axis) => [
208
+ `data-${axis}`,
209
+ ...(call.recipe?.conditions ?? []).map((_, condition) =>
210
+ ConditionalRecipe.attribute({ axis, condition }),
211
+ ),
212
+ ]),
213
+ slots: [
214
+ ...Object.values(call.slots ?? {}).map((slot) => slot.name),
215
+ ...(call.recipe?.payloads ?? []).flatMap((payload) =>
216
+ payload.slots.flatMap((slots) => Object.values(slots)),
217
+ ),
218
+ ],
219
+ },
220
+ ]
221
+ }
222
+ function input(
223
+ call: Source.Call,
224
+ value: Ast.Node,
225
+ condition?: number,
226
+ applicationStart = value.start,
227
+ ) {
228
+ const owned = owners(call)
229
+ for (const owner of owned)
230
+ for (const attribute of owner.attributes) {
231
+ const previous = attributes.get(attribute)
232
+ if (previous && previous !== owner.identity)
233
+ throw new Themes.InvalidError(
234
+ `Recipe attribute ${attribute} has conflicting owners.`,
235
+ value,
236
+ )
237
+ attributes.set(attribute, owner.identity)
238
+ }
239
+ inputs.push({
240
+ applicationStart,
241
+ end: value.end,
242
+ name: call.name,
243
+ owners: owned,
244
+ start: value.start,
245
+ ...(condition !== undefined ? { condition } : {}),
246
+ })
247
+ }
248
+ const guards: string[] = []
249
+ if (node.optional)
250
+ throw new Themes.InvalidError(
251
+ 'Composition does not support optional calls.',
252
+ node,
253
+ )
254
+ for (const argument of node.arguments) {
255
+ const expression = Expression.unwrap(argument)
256
+ const resolved = bindings.resolve(expression, nodes)
257
+ const conditional =
258
+ resolved.type === 'LogicalExpression' && resolved.operator === '&&'
259
+ const condition = conditional ? conditions++ : undefined
260
+ const value = conditional
261
+ ? bindings.resolve(resolved.right, nodes)
262
+ : resolved
263
+ runtime ||= conditional || resolved !== expression
264
+ if (
265
+ conditional &&
266
+ (undefinedReads.has(value.start) ||
267
+ (value.type === 'Literal' &&
268
+ (value.value === false || value.value === null)) ||
269
+ (value.type === 'UnaryExpression' &&
270
+ value.operator === 'void' &&
271
+ value.argument.type === 'Literal'))
272
+ )
273
+ throw new Themes.InvalidError(
274
+ 'Conditional omissions must be evaluated outside composition.',
275
+ expression,
276
+ )
277
+ const omitted =
278
+ undefinedReads.has(value.start) ||
279
+ (value.type === 'Literal' &&
280
+ (value.value === false || value.value === null)) ||
281
+ (value.type === 'UnaryExpression' &&
282
+ value.operator === 'void' &&
283
+ value.argument.type === 'Literal')
284
+ if (omitted && resolved !== expression)
285
+ inputs.push({
286
+ end: expression.end,
287
+ name: '',
288
+ owners: [],
289
+ start: expression.start,
290
+ })
291
+ if (undefinedReads.has(value.start)) continue
292
+ if (
293
+ value.type === 'Literal' &&
294
+ (value.value === false || value.value === null)
295
+ )
296
+ continue
297
+ if (
298
+ value.type === 'UnaryExpression' &&
299
+ value.operator === 'void' &&
300
+ value.argument.type === 'Literal'
301
+ )
302
+ continue
303
+ if (value.type !== 'CallExpression' || value.optional)
304
+ throw new Themes.InvalidError(
305
+ 'Composition requires statically known local style applications.',
306
+ value,
307
+ )
308
+ const nested = calls.get(value.start)
309
+ if (nested?.compositionCases && resolved !== expression)
310
+ throw new Themes.InvalidError(
311
+ 'Conditional composition results must remain direct arguments.',
312
+ expression,
313
+ )
314
+ if (nested?.compositionCases && nested.end === value.end) {
315
+ if (conditional)
316
+ throw new Themes.InvalidError(
317
+ 'Conditional nested compositions require flattening into one cx call.',
318
+ expression,
319
+ )
320
+ for (const child of nested.runtimeComposition!) {
321
+ if (child.name === '') {
322
+ inputs.push(child)
323
+ continue
324
+ }
325
+ const call =
326
+ byName.get(child.name) ??
327
+ [...calls.values()].find((call) => call.name === child.name)
328
+ if (!call)
329
+ throw new Themes.InvalidError(
330
+ 'Nested composition has an unresolved definition.',
331
+ expression,
332
+ )
333
+ selected.push(call)
334
+ input(
335
+ call,
336
+ { ...node, start: child.start, end: child.end },
337
+ child.condition === undefined ? undefined : conditions++,
338
+ child.applicationStart,
339
+ )
340
+ }
341
+ runtime = true
342
+ continue
343
+ }
344
+ if (
345
+ nested?.end === value.end &&
346
+ (nested.composition || nested.runtimeComposition)
347
+ ) {
348
+ selected.push(nested)
349
+ guards.push(...(nested.composition ?? []))
350
+ input(nested, expression, condition, value.start)
351
+ runtime ||= !!nested.runtimeComposition
352
+ continue
353
+ }
354
+ const found = applied.get(value.start)
355
+ const application = found?.end === value.end ? found : undefined
356
+ const call = application
357
+ ? byName.get(application.name)
358
+ : value.callee.type === 'CallExpression'
359
+ ? (() => {
360
+ const call = calls.get(value.callee.start)
361
+ return call?.end === value.callee.end ? call : undefined
362
+ })()
363
+ : undefined
364
+ if (!call || call.composition || call.runtimeComposition)
365
+ throw new Themes.InvalidError(
366
+ 'Composition requires statically known local style applications.',
367
+ value,
368
+ )
369
+ selected.push(call.ownership ? { ...call, start: value.start } : call)
370
+ input(call, expression, condition, value.start)
371
+ runtime ||= !!(
372
+ call.ownership ||
373
+ call.recipe ||
374
+ call.slots ||
375
+ value.arguments.length
376
+ )
377
+ if (application)
378
+ guards.push(
379
+ options.source.slice(application.start, application.calleeEnd),
380
+ )
381
+ }
382
+ if (selected.some((call) => call.output !== selected[0]?.output))
383
+ throw new Themes.InvalidError(
384
+ 'Composition cannot mix HTML and React props.',
385
+ node,
386
+ )
387
+
388
+ if (conditions > 8)
389
+ throw new Themes.InvalidError(
390
+ 'Composition supports at most eight conditional arguments.',
391
+ node,
392
+ )
393
+ const name = `composition-${options.identity}-${node.start}`
394
+ const style: Style.NamedStyle = {
395
+ cssOutput: 'atomic',
396
+ name,
397
+ declarations: [],
398
+ rules: selected.flatMap((call) => {
399
+ const style = styles.get(call.name)!
400
+ return (
401
+ style.rules?.map((rule) => ({
402
+ ...rule,
403
+ style: {
404
+ ...rule.style,
405
+ cssOutput: rule.style.cssOutput ?? style.cssOutput,
406
+ },
407
+ })) ?? [{ style }]
408
+ )
409
+ }),
410
+ }
411
+ const identities = selected.flatMap((call) =>
412
+ call.identity ? [call.identity] : [],
413
+ )
414
+ function properties(
415
+ call: Source.Call,
416
+ body = call.body ?? bodies.get(call.start),
417
+ ): Ast.ObjectExpression['properties'] {
418
+ // Imported declarations map to the application; publisher maps retain authored locations.
419
+ if (call.ownership) {
420
+ function declarations(
421
+ style: Style.NamedStyle,
422
+ ): readonly Style.Declaration[] {
423
+ return style.rules
424
+ ? style.rules.flatMap((rule) => declarations(rule.style))
425
+ : style.declarations
426
+ }
427
+
428
+ return declarations(styles.get(call.name)!).map((declaration) => ({
429
+ type: 'Property',
430
+ computed: false,
431
+ kind: 'init',
432
+ method: false,
433
+ shorthand: false,
434
+ start: call.start,
435
+ end: call.start,
436
+ key: {
437
+ type: 'Literal',
438
+ value: declaration.property,
439
+ raw: JSON.stringify(declaration.property),
440
+ start: call.start,
441
+ end: call.start,
442
+ },
443
+ value: {
444
+ type: 'Literal',
445
+ value: '',
446
+ raw: '""',
447
+ start: call.start,
448
+ end: call.start,
449
+ },
450
+ }))
451
+ }
452
+
453
+ return (
454
+ body?.properties.flatMap<Ast.ObjectExpression['properties'][number]>(
455
+ (property) => {
456
+ if (property.type !== 'Property') return [property]
457
+ const value = Expression.unwrap(property.value)
458
+ if (value.type === 'ObjectExpression')
459
+ return [
460
+ {
461
+ ...property,
462
+ value: { ...value, properties: properties(call, value) },
463
+ },
464
+ ]
465
+ const key =
466
+ property.key.type === 'Identifier'
467
+ ? property.key.name
468
+ : property.key.type === 'Literal'
469
+ ? String(property.key.value)
470
+ : ''
471
+ return (call.shorthands?.[key] ?? [key]).map((key) => ({
472
+ ...property,
473
+ key: {
474
+ type: 'Literal' as const,
475
+ raw: JSON.stringify(key),
476
+ value: key,
477
+ start: property.key.start,
478
+ end: property.key.end,
479
+ },
480
+ }))
481
+ },
482
+ ) ?? []
483
+ )
484
+ }
485
+ const portable = (calls: readonly Source.Call[]) =>
486
+ calls.every((call) => call.portable)
487
+ ? Identity.composition(
488
+ calls.flatMap((call) => call.portableInputs ?? [call.portable!]),
489
+ )
490
+ : undefined
491
+ const call: Source.Call = {
492
+ ...(portable(selected)
493
+ ? {
494
+ portable: portable(selected),
495
+ portableInputs: selected.flatMap(
496
+ (call) => call.portableInputs ?? [call.portable!],
497
+ ),
498
+ }
499
+ : {}),
500
+ name,
501
+ start: node.start,
502
+ end: node.end,
503
+ ...(runtime ? { runtimeComposition: inputs } : { composition: guards }),
504
+ body: {
505
+ type: 'ObjectExpression',
506
+ start: node.start,
507
+ end: node.end,
508
+ properties: selected.flatMap((call) => properties(call)),
509
+ },
510
+ ...(selected[0]?.output ? { output: selected[0].output } : {}),
511
+ ...(identities.length ? { identity: identities.join(' ') } : {}),
512
+ }
513
+ calls.set(node.start, call)
514
+ styles.set(name, style)
515
+ const cases: NonNullable<Entry['cases']>[number][] = []
516
+ const names: string[] = []
517
+ // Omitted bindings retain evaluation but own no selected style.
518
+ const selectedInputs = inputs.filter((input) => input.name !== '')
519
+ for (let mask = 0; mask < 2 ** conditions - 1; mask++) {
520
+ const included = selected.filter(
521
+ (_, index) =>
522
+ selectedInputs[index]!.condition === undefined ||
523
+ mask & (1 << selectedInputs[index]!.condition!),
524
+ )
525
+ const name = `${call.name}-${mask}`
526
+ names.push(name)
527
+ cases.push({
528
+ call: {
529
+ ...(portable(included)
530
+ ? {
531
+ portable: portable(included),
532
+ portableInputs: included.flatMap(
533
+ (call) => call.portableInputs ?? [call.portable!],
534
+ ),
535
+ }
536
+ : {}),
537
+ name,
538
+ start: call.start,
539
+ end: call.end,
540
+ compositionCase: true,
541
+ body: {
542
+ ...call.body!,
543
+ properties: included.flatMap((call) => properties(call)),
544
+ },
545
+ identity: included
546
+ .flatMap((call) => (call.identity ? [call.identity] : []))
547
+ .join(' '),
548
+ },
549
+ style: {
550
+ cssOutput: 'atomic',
551
+ name,
552
+ declarations: [],
553
+ rules: included.flatMap((call) => {
554
+ const style = styles.get(call.name)!
555
+ return (
556
+ style.rules?.map((rule) => ({
557
+ ...rule,
558
+ style: {
559
+ ...rule.style,
560
+ cssOutput: rule.style.cssOutput ?? style.cssOutput,
561
+ },
562
+ })) ?? [{ style }]
563
+ )
564
+ }),
565
+ },
566
+ })
567
+ }
568
+ names.push(call.name)
569
+ const composed = conditions ? { ...call, compositionCases: names } : call
570
+ calls.set(node.start, composed)
571
+ result.push({
572
+ call: composed,
573
+ style: immutable(style),
574
+ ...(cases.length
575
+ ? {
576
+ cases: cases.map((entry) => ({
577
+ ...entry,
578
+ style: immutable(entry.style),
579
+ })),
580
+ }
581
+ : {}),
582
+ })
583
+ }
584
+ return result.filter(
585
+ ({ call }) =>
586
+ !result.some(
587
+ ({ call: other }) =>
588
+ !!other.composition &&
589
+ other.start < call.start &&
590
+ other.end >= call.end,
591
+ ),
592
+ )
593
+ }
594
+
595
+ /** Static composition extraction inputs. */
596
+ export declare namespace collect {
597
+ /** Parsed source and previously validated style applications. */
598
+ type Options = {
599
+ /** Extracted authoring calls. */
600
+ readonly calls: readonly Source.Call[]
601
+ /** Stable module identity. */
602
+ readonly identity: string
603
+ /** Immutable imported style definitions supplied by the source or package graph. */
604
+ readonly links?: Readonly<Record<string, Themes.Link>> | undefined
605
+ /** Parsed module with lexical binding scopes. */
606
+ readonly program: Ast.Program
607
+ /** Source used to preserve initialization-sensitive binding reads. */
608
+ readonly source: string
609
+ /** Validated ordered style bodies. */
610
+ readonly styles: readonly Style.NamedStyle[]
611
+ }
612
+ }
613
+
614
+ function immutable(style: Style.NamedStyle): Style.NamedStyle {
615
+ if (Object.isFrozen(style)) return style
616
+ return Object.freeze({
617
+ ...style,
618
+ declarations: Object.freeze([...style.declarations]),
619
+ ...(style.rules
620
+ ? {
621
+ rules: Object.freeze(
622
+ style.rules.map((rule) =>
623
+ Object.freeze({ ...rule, style: immutable(rule.style) }),
624
+ ),
625
+ ),
626
+ }
627
+ : {}),
628
+ })
629
+ }