zyzz 0.0.28 → 0.0.30

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 (302) hide show
  1. package/binding/wasi/wasi-worker.mjs +186 -0
  2. package/binding/wasi/zyzz.wasi.cjs +2302 -0
  3. package/binding/wasi/zyzz.wasm32-wasi.wasm +0 -0
  4. package/binding/zyzz.linux-x64-gnu.node +0 -0
  5. package/dist/babel/index.d.ts.map +1 -1
  6. package/dist/babel/index.js +2 -4
  7. package/dist/babel/index.js.map +1 -1
  8. package/dist/babel/internal/Compilation.d.ts +0 -1
  9. package/dist/babel/internal/Compilation.d.ts.map +1 -1
  10. package/dist/compiler/Graph.d.ts +14 -11
  11. package/dist/compiler/Graph.d.ts.map +1 -1
  12. package/dist/compiler/Graph.js +57 -1442
  13. package/dist/compiler/Graph.js.map +1 -1
  14. package/dist/compiler/Native.d.ts +7 -9
  15. package/dist/compiler/Native.d.ts.map +1 -1
  16. package/dist/compiler/Native.js +12 -716
  17. package/dist/compiler/Native.js.map +1 -1
  18. package/dist/compiler/Source.d.ts +122 -24
  19. package/dist/compiler/Source.d.ts.map +1 -1
  20. package/dist/compiler/Source.js +10 -1267
  21. package/dist/compiler/Source.js.map +1 -1
  22. package/dist/compiler/Transform.d.ts +4 -3
  23. package/dist/compiler/Transform.d.ts.map +1 -1
  24. package/dist/compiler/Transform.js +13 -961
  25. package/dist/compiler/Transform.js.map +1 -1
  26. package/dist/compiler/internal/AtRules.d.ts +5 -1
  27. package/dist/compiler/internal/AtRules.d.ts.map +1 -1
  28. package/dist/compiler/internal/AtRules.js +12 -106
  29. package/dist/compiler/internal/AtRules.js.map +1 -1
  30. package/dist/compiler/internal/Context.d.ts +11 -0
  31. package/dist/compiler/internal/Context.d.ts.map +1 -0
  32. package/dist/compiler/internal/Context.js +11 -0
  33. package/dist/compiler/internal/Context.js.map +1 -0
  34. package/dist/compiler/internal/Results.d.ts +148 -0
  35. package/dist/compiler/internal/Results.d.ts.map +1 -0
  36. package/dist/compiler/internal/Results.js +259 -0
  37. package/dist/compiler/internal/Results.js.map +1 -0
  38. package/dist/compiler/internal/Syntax.d.ts +0 -2
  39. package/dist/compiler/internal/Syntax.d.ts.map +1 -1
  40. package/dist/compiler/internal/Syntax.js +0 -2
  41. package/dist/compiler/internal/Syntax.js.map +1 -1
  42. package/dist/compiler/internal/Wire.d.ts +17 -0
  43. package/dist/compiler/internal/Wire.d.ts.map +1 -0
  44. package/dist/compiler/internal/Wire.js +795 -0
  45. package/dist/compiler/internal/Wire.js.map +1 -0
  46. package/dist/internal/Addon.d.ts +28 -0
  47. package/dist/internal/Addon.d.ts.map +1 -0
  48. package/dist/internal/Addon.js +87 -0
  49. package/dist/internal/Addon.js.map +1 -0
  50. package/dist/internal/Literal.d.ts +4 -1
  51. package/dist/internal/Literal.d.ts.map +1 -1
  52. package/dist/internal/Literal.js +4 -2
  53. package/dist/internal/Literal.js.map +1 -1
  54. package/dist/internal/Token.d.ts +2 -1
  55. package/dist/internal/Token.d.ts.map +1 -1
  56. package/dist/internal/Token.js +2 -2
  57. package/dist/internal/Token.js.map +1 -1
  58. package/dist/internal/Vlq.d.ts +14 -0
  59. package/dist/internal/Vlq.d.ts.map +1 -0
  60. package/dist/internal/Vlq.js +47 -0
  61. package/dist/internal/Vlq.js.map +1 -0
  62. package/dist/internal/Wasm.d.ts +22 -0
  63. package/dist/internal/Wasm.d.ts.map +1 -0
  64. package/dist/internal/Wasm.js +83 -0
  65. package/dist/internal/Wasm.js.map +1 -0
  66. package/dist/metro/Graph.d.ts +0 -1
  67. package/dist/metro/Graph.d.ts.map +1 -1
  68. package/dist/metro/transformer.d.ts.map +1 -1
  69. package/dist/metro/transformer.js +0 -1
  70. package/dist/metro/transformer.js.map +1 -1
  71. package/dist/next/internal/Project.d.ts.map +1 -1
  72. package/dist/next/internal/Project.js +2 -5
  73. package/dist/next/internal/Project.js.map +1 -1
  74. package/dist/node/Host.d.ts.map +1 -1
  75. package/dist/node/Host.js +0 -2
  76. package/dist/node/Host.js.map +1 -1
  77. package/dist/node/internal/Contracts.d.ts.map +1 -1
  78. package/dist/node/internal/Contracts.js +3 -7
  79. package/dist/node/internal/Contracts.js.map +1 -1
  80. package/dist/node/internal/Snapshot.d.ts +0 -1
  81. package/dist/node/internal/Snapshot.d.ts.map +1 -1
  82. package/dist/node/internal/Snapshot.js +0 -6
  83. package/dist/node/internal/Snapshot.js.map +1 -1
  84. package/dist/runtime/Composition.d.ts +2 -3
  85. package/dist/runtime/Composition.d.ts.map +1 -1
  86. package/dist/runtime/Composition.js +51 -30
  87. package/dist/runtime/Composition.js.map +1 -1
  88. package/dist/runtime/Recipe.d.ts.map +1 -1
  89. package/dist/runtime/Recipe.js +16 -12
  90. package/dist/runtime/Recipe.js.map +1 -1
  91. package/dist/unplugin/index.d.ts.map +1 -1
  92. package/dist/unplugin/index.js +3 -6
  93. package/dist/unplugin/index.js.map +1 -1
  94. package/dist/vite/index.d.ts.map +1 -1
  95. package/dist/vite/index.js +696 -201
  96. package/dist/vite/index.js.map +1 -1
  97. package/dist/web/Css.d.ts +8 -3
  98. package/dist/web/Css.d.ts.map +1 -1
  99. package/dist/web/Css.js +5 -721
  100. package/dist/web/Css.js.map +1 -1
  101. package/dist/web/internal/Block.d.ts +0 -2
  102. package/dist/web/internal/Block.d.ts.map +1 -1
  103. package/dist/web/internal/Block.js +1 -12
  104. package/dist/web/internal/Block.js.map +1 -1
  105. package/dist/web/internal/ClassName.d.ts +23 -18
  106. package/dist/web/internal/ClassName.d.ts.map +1 -1
  107. package/dist/web/internal/ClassName.js +26 -55
  108. package/dist/web/internal/ClassName.js.map +1 -1
  109. package/dist/web/internal/Contributions.d.ts +3 -5
  110. package/dist/web/internal/Contributions.d.ts.map +1 -1
  111. package/dist/web/internal/Contributions.js +0 -45
  112. package/dist/web/internal/Contributions.js.map +1 -1
  113. package/dist/web/internal/Engine.browser.d.ts +8 -0
  114. package/dist/web/internal/Engine.browser.d.ts.map +1 -0
  115. package/dist/web/internal/Engine.browser.js +42 -0
  116. package/dist/web/internal/Engine.browser.js.map +1 -0
  117. package/dist/web/internal/Engine.d.ts +9 -0
  118. package/dist/web/internal/Engine.d.ts.map +1 -0
  119. package/dist/web/internal/Engine.js +14 -0
  120. package/dist/web/internal/Engine.js.map +1 -0
  121. package/dist/web/internal/Themes.d.ts +1 -9
  122. package/dist/web/internal/Themes.d.ts.map +1 -1
  123. package/dist/web/internal/Themes.js +3 -221
  124. package/dist/web/internal/Themes.js.map +1 -1
  125. package/dist/web/internal/Wasm.generated.d.ts +4 -0
  126. package/dist/web/internal/Wasm.generated.d.ts.map +1 -0
  127. package/dist/web/internal/Wasm.generated.js +4 -0
  128. package/dist/web/internal/Wasm.generated.js.map +1 -0
  129. package/dist/web/internal/Wire.d.ts +19 -0
  130. package/dist/web/internal/Wire.d.ts.map +1 -0
  131. package/dist/web/internal/Wire.js +387 -0
  132. package/dist/web/internal/Wire.js.map +1 -0
  133. package/package.json +20 -1
  134. package/src/babel/index.ts +2 -5
  135. package/src/babel/internal/Compilation.ts +0 -1
  136. package/src/compiler/Graph.ts +89 -1930
  137. package/src/compiler/Native.ts +18 -871
  138. package/src/compiler/Source.ts +144 -1803
  139. package/src/compiler/Transform.ts +16 -1315
  140. package/src/compiler/internal/AtRules.ts +27 -115
  141. package/src/compiler/internal/Context.ts +11 -0
  142. package/src/compiler/internal/Results.ts +406 -0
  143. package/src/compiler/internal/Syntax.ts +0 -3
  144. package/src/compiler/internal/Wire.ts +1045 -0
  145. package/src/internal/Addon.ts +118 -0
  146. package/src/internal/Literal.ts +4 -2
  147. package/src/internal/Token.ts +2 -2
  148. package/src/internal/Vlq.ts +59 -0
  149. package/src/internal/Wasm.ts +111 -0
  150. package/src/metro/transformer.ts +0 -1
  151. package/src/next/internal/Project.ts +2 -9
  152. package/src/node/Host.ts +0 -2
  153. package/src/node/internal/Contracts.ts +3 -7
  154. package/src/node/internal/Snapshot.ts +0 -8
  155. package/src/runtime/Composition.ts +48 -25
  156. package/src/runtime/Recipe.ts +21 -14
  157. package/src/unplugin/index.ts +6 -6
  158. package/src/vite/index.ts +922 -221
  159. package/src/web/Css.ts +12 -908
  160. package/src/web/internal/Block.ts +0 -14
  161. package/src/web/internal/ClassName.ts +52 -85
  162. package/src/web/internal/Contributions.ts +3 -59
  163. package/src/web/internal/Engine.browser.ts +51 -0
  164. package/src/web/internal/Engine.ts +17 -0
  165. package/src/web/internal/Themes.ts +3 -279
  166. package/src/web/internal/Wasm.generated.ts +3 -0
  167. package/src/web/internal/Wire.ts +466 -0
  168. package/src/web/internal/wasm.d.ts +9 -0
  169. package/dist/compiler/internal/Applications.d.ts +0 -55
  170. package/dist/compiler/internal/Applications.d.ts.map +0 -1
  171. package/dist/compiler/internal/Applications.js +0 -393
  172. package/dist/compiler/internal/Applications.js.map +0 -1
  173. package/dist/compiler/internal/ColorProfiles.d.ts +0 -3
  174. package/dist/compiler/internal/ColorProfiles.d.ts.map +0 -1
  175. package/dist/compiler/internal/ColorProfiles.js +0 -84
  176. package/dist/compiler/internal/ColorProfiles.js.map +0 -1
  177. package/dist/compiler/internal/CompositionBindings.d.ts +0 -16
  178. package/dist/compiler/internal/CompositionBindings.d.ts.map +0 -1
  179. package/dist/compiler/internal/CompositionBindings.js +0 -89
  180. package/dist/compiler/internal/CompositionBindings.js.map +0 -1
  181. package/dist/compiler/internal/Compositions.d.ts +0 -37
  182. package/dist/compiler/internal/Compositions.d.ts.map +0 -1
  183. package/dist/compiler/internal/Compositions.js +0 -494
  184. package/dist/compiler/internal/Compositions.js.map +0 -1
  185. package/dist/compiler/internal/Configurations.d.ts +0 -26
  186. package/dist/compiler/internal/Configurations.d.ts.map +0 -1
  187. package/dist/compiler/internal/Configurations.js +0 -259
  188. package/dist/compiler/internal/Configurations.js.map +0 -1
  189. package/dist/compiler/internal/Contract.d.ts +0 -30
  190. package/dist/compiler/internal/Contract.d.ts.map +0 -1
  191. package/dist/compiler/internal/Contract.js +0 -753
  192. package/dist/compiler/internal/Contract.js.map +0 -1
  193. package/dist/compiler/internal/Contributions.d.ts +0 -54
  194. package/dist/compiler/internal/Contributions.d.ts.map +0 -1
  195. package/dist/compiler/internal/Contributions.js +0 -1151
  196. package/dist/compiler/internal/Contributions.js.map +0 -1
  197. package/dist/compiler/internal/Descriptors.d.ts +0 -15
  198. package/dist/compiler/internal/Descriptors.d.ts.map +0 -1
  199. package/dist/compiler/internal/Descriptors.js +0 -192
  200. package/dist/compiler/internal/Descriptors.js.map +0 -1
  201. package/dist/compiler/internal/Dynamic.d.ts +0 -14
  202. package/dist/compiler/internal/Dynamic.d.ts.map +0 -1
  203. package/dist/compiler/internal/Dynamic.js +0 -175
  204. package/dist/compiler/internal/Dynamic.js.map +0 -1
  205. package/dist/compiler/internal/Expression.d.ts +0 -19
  206. package/dist/compiler/internal/Expression.d.ts.map +0 -1
  207. package/dist/compiler/internal/Expression.js +0 -164
  208. package/dist/compiler/internal/Expression.js.map +0 -1
  209. package/dist/compiler/internal/Functions.d.ts +0 -5
  210. package/dist/compiler/internal/Functions.d.ts.map +0 -1
  211. package/dist/compiler/internal/Functions.js +0 -191
  212. package/dist/compiler/internal/Functions.js.map +0 -1
  213. package/dist/compiler/internal/Keyframes.d.ts +0 -5
  214. package/dist/compiler/internal/Keyframes.d.ts.map +0 -1
  215. package/dist/compiler/internal/Keyframes.js +0 -51
  216. package/dist/compiler/internal/Keyframes.js.map +0 -1
  217. package/dist/compiler/internal/Names.d.ts +0 -5
  218. package/dist/compiler/internal/Names.d.ts.map +0 -1
  219. package/dist/compiler/internal/Names.js +0 -37
  220. package/dist/compiler/internal/Names.js.map +0 -1
  221. package/dist/compiler/internal/NativeBindings.d.ts +0 -72
  222. package/dist/compiler/internal/NativeBindings.d.ts.map +0 -1
  223. package/dist/compiler/internal/NativeBindings.js +0 -171
  224. package/dist/compiler/internal/NativeBindings.js.map +0 -1
  225. package/dist/compiler/internal/NativeMedia.d.ts +0 -14
  226. package/dist/compiler/internal/NativeMedia.d.ts.map +0 -1
  227. package/dist/compiler/internal/NativeMedia.js +0 -287
  228. package/dist/compiler/internal/NativeMedia.js.map +0 -1
  229. package/dist/compiler/internal/NativeVars.d.ts +0 -28
  230. package/dist/compiler/internal/NativeVars.d.ts.map +0 -1
  231. package/dist/compiler/internal/NativeVars.js +0 -160
  232. package/dist/compiler/internal/NativeVars.js.map +0 -1
  233. package/dist/compiler/internal/PackedStyles.d.ts +0 -37
  234. package/dist/compiler/internal/PackedStyles.d.ts.map +0 -1
  235. package/dist/compiler/internal/PackedStyles.js +0 -344
  236. package/dist/compiler/internal/PackedStyles.js.map +0 -1
  237. package/dist/compiler/internal/Properties.d.ts +0 -5
  238. package/dist/compiler/internal/Properties.d.ts.map +0 -1
  239. package/dist/compiler/internal/Properties.js +0 -82
  240. package/dist/compiler/internal/Properties.js.map +0 -1
  241. package/dist/compiler/internal/RecipeConditions.d.ts +0 -41
  242. package/dist/compiler/internal/RecipeConditions.d.ts.map +0 -1
  243. package/dist/compiler/internal/RecipeConditions.js +0 -82
  244. package/dist/compiler/internal/RecipeConditions.js.map +0 -1
  245. package/dist/compiler/internal/RecipePayloads.d.ts +0 -31
  246. package/dist/compiler/internal/RecipePayloads.d.ts.map +0 -1
  247. package/dist/compiler/internal/RecipePayloads.js +0 -99
  248. package/dist/compiler/internal/RecipePayloads.js.map +0 -1
  249. package/dist/compiler/internal/Recipes.d.ts +0 -32
  250. package/dist/compiler/internal/Recipes.d.ts.map +0 -1
  251. package/dist/compiler/internal/Recipes.js +0 -339
  252. package/dist/compiler/internal/Recipes.js.map +0 -1
  253. package/dist/compiler/internal/Selectors.d.ts +0 -13
  254. package/dist/compiler/internal/Selectors.d.ts.map +0 -1
  255. package/dist/compiler/internal/Selectors.js +0 -280
  256. package/dist/compiler/internal/Selectors.js.map +0 -1
  257. package/dist/compiler/internal/Static.d.ts +0 -39
  258. package/dist/compiler/internal/Static.d.ts.map +0 -1
  259. package/dist/compiler/internal/Static.js +0 -534
  260. package/dist/compiler/internal/Static.js.map +0 -1
  261. package/dist/compiler/internal/Themes.d.ts +0 -190
  262. package/dist/compiler/internal/Themes.d.ts.map +0 -1
  263. package/dist/compiler/internal/Themes.js +0 -1577
  264. package/dist/compiler/internal/Themes.js.map +0 -1
  265. package/dist/compiler/internal/Vars.d.ts +0 -33
  266. package/dist/compiler/internal/Vars.d.ts.map +0 -1
  267. package/dist/compiler/internal/Vars.js +0 -387
  268. package/dist/compiler/internal/Vars.js.map +0 -1
  269. package/dist/compiler/internal/ViewTransitions.d.ts +0 -3
  270. package/dist/compiler/internal/ViewTransitions.d.ts.map +0 -1
  271. package/dist/compiler/internal/ViewTransitions.js +0 -68
  272. package/dist/compiler/internal/ViewTransitions.js.map +0 -1
  273. package/dist/internal/Cascade.d.ts +0 -74
  274. package/dist/internal/Cascade.d.ts.map +0 -1
  275. package/dist/internal/Cascade.js +0 -210
  276. package/dist/internal/Cascade.js.map +0 -1
  277. package/src/compiler/internal/Applications.ts +0 -610
  278. package/src/compiler/internal/ColorProfiles.ts +0 -93
  279. package/src/compiler/internal/CompositionBindings.ts +0 -120
  280. package/src/compiler/internal/Compositions.ts +0 -678
  281. package/src/compiler/internal/Configurations.ts +0 -349
  282. package/src/compiler/internal/Contract.ts +0 -1028
  283. package/src/compiler/internal/Contributions.ts +0 -1561
  284. package/src/compiler/internal/Descriptors.ts +0 -242
  285. package/src/compiler/internal/Dynamic.ts +0 -275
  286. package/src/compiler/internal/Expression.ts +0 -218
  287. package/src/compiler/internal/Functions.ts +0 -206
  288. package/src/compiler/internal/Keyframes.ts +0 -62
  289. package/src/compiler/internal/Names.ts +0 -48
  290. package/src/compiler/internal/NativeBindings.ts +0 -235
  291. package/src/compiler/internal/NativeMedia.ts +0 -342
  292. package/src/compiler/internal/NativeVars.ts +0 -231
  293. package/src/compiler/internal/PackedStyles.ts +0 -473
  294. package/src/compiler/internal/Properties.ts +0 -121
  295. package/src/compiler/internal/RecipeConditions.ts +0 -139
  296. package/src/compiler/internal/RecipePayloads.ts +0 -132
  297. package/src/compiler/internal/Recipes.ts +0 -531
  298. package/src/compiler/internal/Selectors.ts +0 -353
  299. package/src/compiler/internal/Static.ts +0 -784
  300. package/src/compiler/internal/Themes.ts +0 -2398
  301. package/src/compiler/internal/Vars.ts +0 -516
  302. package/src/compiler/internal/ViewTransitions.ts +0 -82
@@ -1,349 +0,0 @@
1
- /**
2
- * Normalizes literal configuration syntax into linked theme members.
3
- * @module
4
- */
5
- import * as Identity from '../../internal/Identity.js'
6
- import type * as Ast from '@oxc-project/types'
7
- import * as Config from '../../internal/Configuration.js'
8
- import * as PublicConfig from '../../Config.js'
9
- import * as Shorthands from '../../internal/Shorthands.js'
10
- import * as Token from '../../internal/Token.js'
11
- import * as Theme from '../../internal/Theme.js'
12
- import * as VariableSets from '../../internal/VariableSets.js'
13
- import * as Vars from '../../Vars.js'
14
- import type * as Themes from './Themes.js'
15
-
16
- /** Reads a direct configuration factory without executing authored expressions. */
17
- export function collect(options: collect.Options): Themes.Link {
18
- function data(node: Ast.Node): unknown {
19
- const linked = options.resolve(node)
20
- if (
21
- linked?.kind === 'theme' ||
22
- (linked?.call.variableConfig && linked.call.selection)
23
- )
24
- return linked.definition[Token.definition].contract.variableSet
25
- ? VariableSets.from(linked.definition[Token.definition])
26
- : linked.definition
27
-
28
- if (node.type === 'TSAsExpression' || node.type === 'TSSatisfiesExpression')
29
- return data(node.expression)
30
-
31
- if (node.type === 'Literal' && node.value === false) return false
32
-
33
- if (node.type === 'ArrayExpression')
34
- return node.elements.map((node) => {
35
- if (!node || node.type === 'SpreadElement')
36
- throw new Config.InvalidError(
37
- 'Configuration arrays require literal entries.',
38
- )
39
-
40
- return data(node)
41
- })
42
-
43
- if (node.type === 'ObjectExpression') {
44
- const entries: Record<string, unknown> = Object.create(null)
45
-
46
- for (const property of node.properties) {
47
- if (
48
- property.type !== 'Property' ||
49
- property.computed ||
50
- property.method ||
51
- property.kind !== 'init'
52
- )
53
- throw new Config.InvalidError(
54
- 'Configuration requires static properties without spreads or methods.',
55
- )
56
-
57
- const key = (() => {
58
- if (property.key.type === 'Identifier') {
59
- return property.key.name
60
- }
61
-
62
- if (
63
- property.key.type === 'Literal' &&
64
- (typeof property.key.value === 'string' ||
65
- typeof property.key.value === 'number')
66
- ) {
67
- return String(property.key.value)
68
- }
69
-
70
- return undefined
71
- })()
72
- if (key === undefined || Object.hasOwn(entries, key))
73
- throw new Config.InvalidError(
74
- 'Configuration requires unique literal keys.',
75
- )
76
-
77
- entries[key] = data(property.value)
78
- }
79
-
80
- return entries
81
- }
82
-
83
- return options.data(node)
84
- }
85
-
86
- if (options.expression.arguments.length > 1)
87
- throw new Config.InvalidError(
88
- 'Config.create accepts one literal options object.',
89
- )
90
-
91
- let input = (
92
- options.expression.arguments.length
93
- ? data(options.expression.arguments[0]!)
94
- : {}
95
- ) as Config.create.Options
96
-
97
- PublicConfig.create(input as unknown as PublicConfig.create.Options)
98
-
99
- const authored = input as unknown as Config.VariableOptions
100
- const variableMode = authored.vars !== undefined
101
- if (variableMode) {
102
- Config.create(authored)
103
- const wrap = (value: Vars.Definition | Vars.Values) =>
104
- VariableSets.theme(
105
- Token.definition in value
106
- ? (value as Vars.Definition)
107
- : Vars.define(value as Vars.Values),
108
- authored.mappings,
109
- )
110
- const { vars, defaultVars, mappings: _mappings, ...rest } = authored
111
- input =
112
- defaultVars === undefined
113
- ? { ...rest, theme: wrap(vars as Vars.Definition) }
114
- : {
115
- ...rest,
116
- defaultTheme: defaultVars,
117
- themes: Object.fromEntries(
118
- Object.entries(vars).map(([key, value]) => [
119
- key,
120
- wrap(value as Vars.Definition),
121
- ]),
122
- ),
123
- }
124
- }
125
- const config = Config.create(input)
126
-
127
- const catalog = (() => {
128
- if ('themes' in config) {
129
- return config.themes
130
- }
131
-
132
- if ('theme' in config) {
133
- return { theme: config.theme }
134
- }
135
-
136
- return {}
137
- })()
138
-
139
- const identity =
140
- input.id === undefined
141
- ? options.name
142
- : Identity.requireId(input.id, 'Config.create')
143
- const contract = Object.freeze({
144
- ...(variableMode
145
- ? {
146
- variableSet: true,
147
- mappings: VariableSets.mappings(authored.mappings),
148
- }
149
- : {}),
150
- [Token.identity]: identity,
151
- ...(input.id !== undefined ? { [Token.complete]: true } : {}),
152
- ...(input.composition !== undefined
153
- ? { composition: input.composition }
154
- : {}),
155
- cssOutput: input.cssOutput ?? 'atomic',
156
- ...(input.defaultLayer !== undefined
157
- ? { defaultLayer: input.defaultLayer }
158
- : {}),
159
- ...(input.shorthands
160
- ? { shorthands: Shorthands.read(input.shorthands) }
161
- : {}),
162
- })
163
-
164
- const members: Record<string, Themes.Link> = Object.create(null)
165
-
166
- for (const [key, original] of Object.entries(catalog)) {
167
- const name = `${identity}-${key}`
168
- const definition = Token.bind(original, contract, key)
169
- const tokenType = type({
170
- ...values(original.tokens),
171
- ...original[Token.definition].queries,
172
- })
173
-
174
- const call = {
175
- ...(input.output === 'html' ? { output: 'html' as const } : {}),
176
- end: options.expression.end,
177
- name,
178
- start: options.expression.start,
179
- tokenType,
180
- ...(input.output === 'html' || input.shorthands
181
- ? {
182
- type: `import('zyzz').Config.create.ReturnType<{theme:${tokenType};${input.output === 'html' ? "output:'html';" : ''}shorthands:${type(input.shorthands ?? {})}}>['theme']`,
183
- }
184
- : {}),
185
- }
186
-
187
- members[JSON.stringify('themes' in config ? ['themes', key] : ['theme'])] =
188
- {
189
- binding: name,
190
- call,
191
- definition,
192
- kind: 'theme',
193
- }
194
- }
195
-
196
- const selected =
197
- members[
198
- JSON.stringify(
199
- 'themes' in config ? ['themes', input.defaultTheme] : ['theme'],
200
- )
201
- ]
202
-
203
- if ('themes' in config && selected)
204
- members[JSON.stringify(['theme'])] = selected
205
-
206
- if (variableMode && selected)
207
- members[JSON.stringify(['vars'])] = {
208
- ...selected,
209
- call: {
210
- ...selected.call,
211
- directVariables: true,
212
- type: `import('zyzz').Vars.References<${selected.call.tokenType}>`,
213
- },
214
- }
215
-
216
- const definition =
217
- selected?.definition ?? Token.bind(Theme.define({}), contract)
218
-
219
- const normalized = {
220
- ...(() => {
221
- if ('themes' in config) {
222
- return {
223
- defaultTheme: input.defaultTheme,
224
- themes: Object.fromEntries(
225
- Object.keys(catalog).map((name) => {
226
- const theme =
227
- members[JSON.stringify(['themes', name])]!.definition!
228
- return [
229
- name,
230
- { ...values(theme.tokens), ...theme[Token.definition].queries },
231
- ]
232
- }),
233
- ),
234
- }
235
- }
236
-
237
- if ('theme' in config) {
238
- return {
239
- theme: {
240
- ...values(definition.tokens),
241
- ...definition[Token.definition].queries,
242
- },
243
- }
244
- }
245
-
246
- return {}
247
- })(),
248
- ...(input.id !== undefined ? { id: input.id } : {}),
249
- ...(input.composition ? { composition: input.composition } : {}),
250
- ...(input.cssOutput ? { cssOutput: input.cssOutput } : {}),
251
- ...(input.defaultLayer !== undefined
252
- ? { defaultLayer: input.defaultLayer }
253
- : {}),
254
- ...(input.shorthands ? { shorthands: input.shorthands } : {}),
255
- ...(input.output ? { output: input.output } : {}),
256
- ...(input.layers ? { layers: input.layers } : {}),
257
- ...(input.storageKey ? { storageKey: input.storageKey } : {}),
258
- }
259
- const authoredType = type(
260
- variableMode
261
- ? {
262
- ...normalized,
263
- theme: undefined,
264
- themes: undefined,
265
- defaultTheme: undefined,
266
- vars: 'themes' in normalized ? normalized.themes : normalized.theme,
267
- ...('themes' in normalized
268
- ? { defaultVars: normalized.defaultTheme }
269
- : {}),
270
- ...(authored.mappings !== undefined
271
- ? { mappings: VariableSets.mappings(authored.mappings) }
272
- : {}),
273
- }
274
- : normalized,
275
- )
276
-
277
- return {
278
- binding: options.name,
279
- call: {
280
- ...(options.nativeProvider ? { nativeProvider: true } : {}),
281
- ...(variableMode
282
- ? { variableConfig: true, variableMappings: authored.mappings }
283
- : {}),
284
- appearance: true,
285
- script: true,
286
- end: options.expression.end,
287
- members: Object.fromEntries(
288
- Object.entries(members).map(([key, link]) => [key, link.call.name]),
289
- ),
290
- name: selected?.call.name ?? options.name,
291
- options: normalized,
292
- start: options.expression.start,
293
- tokenType: selected?.call.tokenType ?? '{}',
294
- type: options.nativeProvider
295
- ? `import('zyzz/react-native').defineConfig.ReturnType<${authoredType}>`
296
- : variableMode
297
- ? `import('zyzz').Config.VariableConfig<${authoredType}>`
298
- : `import('zyzz').Config.create.ReturnType<${authoredType}>`,
299
- },
300
- definition,
301
- kind: 'config',
302
- members,
303
- }
304
- }
305
-
306
- /** Inputs supplied by the lexical theme collector. */
307
- export declare namespace collect {
308
- /** Literal reader, source span, identity, and preceding immutable bindings. */
309
- type Options = {
310
- /** Existing literal theme reader for scalar input. */
311
- readonly data: (node: Ast.Node) => unknown
312
- /** Direct module-level configuration factory span. */
313
- readonly expression: Ast.CallExpression
314
- /** Stable module/binding identity. */
315
- readonly name: string
316
- /** Native factory supplies an ordinary React Provider export. */
317
- readonly nativeProvider?: boolean | undefined
318
- /** Looks up preceding immutable theme definitions. */
319
- readonly resolve: (node: Ast.Node) => Themes.Link | undefined
320
- }
321
- }
322
-
323
- /** Encodes validated literal options as a declaration type, never executable text. */
324
- export function type(value: unknown): string {
325
- if (Token.isExpression(value) && 'group' in value)
326
- return `import('zyzz').Vars.Composition<'${value.group}'>`
327
- if (Token.is(value)) return `import('zyzz').Vars.Reference<'${value.group}'>`
328
- if (Array.isArray(value)) return `readonly [${value.map(type).join(',')}]`
329
- if (!value || typeof value !== 'object') return JSON.stringify(value)
330
-
331
- return `{${Object.entries(value)
332
- .filter(([, value]) => value !== undefined)
333
- .map(([key, value]) => `readonly ${JSON.stringify(key)}:${type(value)}`)
334
- .join(';')}}`
335
- }
336
-
337
- /** Reads the authored leaf values of a reference tree. */
338
- export function values(
339
- tree: Theme.References<Theme.Tokens>,
340
- ): Record<string, unknown> {
341
- return Object.fromEntries(
342
- Object.entries(tree).map(([key, value]) => [
343
- key,
344
- Token.is(value)
345
- ? value.value
346
- : values(value as Theme.References<Theme.Tokens>),
347
- ]),
348
- )
349
- }