@llui/compiler 0.3.0

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 (310) hide show
  1. package/LICENSE +21 -0
  2. package/dist/accessor-resolver.d.ts +58 -0
  3. package/dist/accessor-resolver.d.ts.map +1 -0
  4. package/dist/accessor-resolver.js +119 -0
  5. package/dist/accessor-resolver.js.map +1 -0
  6. package/dist/binding-descriptors.d.ts +105 -0
  7. package/dist/binding-descriptors.d.ts.map +1 -0
  8. package/dist/binding-descriptors.js +340 -0
  9. package/dist/binding-descriptors.js.map +1 -0
  10. package/dist/collect-deps.d.ts +49 -0
  11. package/dist/collect-deps.d.ts.map +1 -0
  12. package/dist/collect-deps.js +444 -0
  13. package/dist/collect-deps.js.map +1 -0
  14. package/dist/compiler-cache.d.ts +20 -0
  15. package/dist/compiler-cache.d.ts.map +1 -0
  16. package/dist/compiler-cache.js +20 -0
  17. package/dist/compiler-cache.js.map +1 -0
  18. package/dist/cross-file-resolver.d.ts +109 -0
  19. package/dist/cross-file-resolver.d.ts.map +1 -0
  20. package/dist/cross-file-resolver.js +530 -0
  21. package/dist/cross-file-resolver.js.map +1 -0
  22. package/dist/cross-file-walker.d.ts +63 -0
  23. package/dist/cross-file-walker.d.ts.map +1 -0
  24. package/dist/cross-file-walker.js +516 -0
  25. package/dist/cross-file-walker.js.map +1 -0
  26. package/dist/diagnostic.d.ts +76 -0
  27. package/dist/diagnostic.d.ts.map +1 -0
  28. package/dist/diagnostic.js +59 -0
  29. package/dist/diagnostic.js.map +1 -0
  30. package/dist/index.d.ts +27 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +37 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/introspection-factory.d.ts +54 -0
  35. package/dist/introspection-factory.d.ts.map +1 -0
  36. package/dist/introspection-factory.js +46 -0
  37. package/dist/introspection-factory.js.map +1 -0
  38. package/dist/manifest.d.ts +144 -0
  39. package/dist/manifest.d.ts.map +1 -0
  40. package/dist/manifest.js +209 -0
  41. package/dist/manifest.js.map +1 -0
  42. package/dist/module.d.ts +222 -0
  43. package/dist/module.d.ts.map +1 -0
  44. package/dist/module.js +256 -0
  45. package/dist/module.js.map +1 -0
  46. package/dist/modules/_element-helpers.d.ts +4 -0
  47. package/dist/modules/_element-helpers.d.ts.map +1 -0
  48. package/dist/modules/_element-helpers.js +138 -0
  49. package/dist/modules/_element-helpers.js.map +1 -0
  50. package/dist/modules/_msg-variants.d.ts +10 -0
  51. package/dist/modules/_msg-variants.d.ts.map +1 -0
  52. package/dist/modules/_msg-variants.js +97 -0
  53. package/dist/modules/_msg-variants.js.map +1 -0
  54. package/dist/modules/_shared.d.ts +16 -0
  55. package/dist/modules/_shared.d.ts.map +1 -0
  56. package/dist/modules/_shared.js +30 -0
  57. package/dist/modules/_shared.js.map +1 -0
  58. package/dist/modules/accessibility.d.ts +3 -0
  59. package/dist/modules/accessibility.d.ts.map +1 -0
  60. package/dist/modules/accessibility.js +82 -0
  61. package/dist/modules/accessibility.js.map +1 -0
  62. package/dist/modules/accessor-side-effect.d.ts +3 -0
  63. package/dist/modules/accessor-side-effect.d.ts.map +1 -0
  64. package/dist/modules/accessor-side-effect.js +113 -0
  65. package/dist/modules/accessor-side-effect.js.map +1 -0
  66. package/dist/modules/agent-emits-drift.d.ts +3 -0
  67. package/dist/modules/agent-emits-drift.d.ts.map +1 -0
  68. package/dist/modules/agent-emits-drift.js +158 -0
  69. package/dist/modules/agent-emits-drift.js.map +1 -0
  70. package/dist/modules/agent-example-on-payload.d.ts +3 -0
  71. package/dist/modules/agent-example-on-payload.d.ts.map +1 -0
  72. package/dist/modules/agent-example-on-payload.js +53 -0
  73. package/dist/modules/agent-example-on-payload.js.map +1 -0
  74. package/dist/modules/agent-exclusive-annotations.d.ts +3 -0
  75. package/dist/modules/agent-exclusive-annotations.d.ts.map +1 -0
  76. package/dist/modules/agent-exclusive-annotations.js +68 -0
  77. package/dist/modules/agent-exclusive-annotations.js.map +1 -0
  78. package/dist/modules/agent-missing-intent.d.ts +3 -0
  79. package/dist/modules/agent-missing-intent.d.ts.map +1 -0
  80. package/dist/modules/agent-missing-intent.js +47 -0
  81. package/dist/modules/agent-missing-intent.js.map +1 -0
  82. package/dist/modules/agent-msg-resolvable.d.ts +3 -0
  83. package/dist/modules/agent-msg-resolvable.d.ts.map +1 -0
  84. package/dist/modules/agent-msg-resolvable.js +161 -0
  85. package/dist/modules/agent-msg-resolvable.js.map +1 -0
  86. package/dist/modules/agent-nonextractable-handler.d.ts +3 -0
  87. package/dist/modules/agent-nonextractable-handler.d.ts.map +1 -0
  88. package/dist/modules/agent-nonextractable-handler.js +127 -0
  89. package/dist/modules/agent-nonextractable-handler.js.map +1 -0
  90. package/dist/modules/agent-optional-field-undocumented.d.ts +3 -0
  91. package/dist/modules/agent-optional-field-undocumented.d.ts.map +1 -0
  92. package/dist/modules/agent-optional-field-undocumented.js +67 -0
  93. package/dist/modules/agent-optional-field-undocumented.js.map +1 -0
  94. package/dist/modules/agent-tagsend-translator-missing.d.ts +3 -0
  95. package/dist/modules/agent-tagsend-translator-missing.d.ts.map +1 -0
  96. package/dist/modules/agent-tagsend-translator-missing.js +58 -0
  97. package/dist/modules/agent-tagsend-translator-missing.js.map +1 -0
  98. package/dist/modules/agent-warning-on-confirm.d.ts +3 -0
  99. package/dist/modules/agent-warning-on-confirm.d.ts.map +1 -0
  100. package/dist/modules/agent-warning-on-confirm.js +46 -0
  101. package/dist/modules/agent-warning-on-confirm.js.map +1 -0
  102. package/dist/modules/async-update.d.ts +3 -0
  103. package/dist/modules/async-update.d.ts.map +1 -0
  104. package/dist/modules/async-update.js +86 -0
  105. package/dist/modules/async-update.js.map +1 -0
  106. package/dist/modules/binding-descriptors.d.ts +4 -0
  107. package/dist/modules/binding-descriptors.d.ts.map +1 -0
  108. package/dist/modules/binding-descriptors.js +48 -0
  109. package/dist/modules/binding-descriptors.js.map +1 -0
  110. package/dist/modules/bitmask-overflow.d.ts +3 -0
  111. package/dist/modules/bitmask-overflow.d.ts.map +1 -0
  112. package/dist/modules/bitmask-overflow.js +152 -0
  113. package/dist/modules/bitmask-overflow.js.map +1 -0
  114. package/dist/modules/compiler-stamp.d.ts +3 -0
  115. package/dist/modules/compiler-stamp.d.ts.map +1 -0
  116. package/dist/modules/compiler-stamp.js +44 -0
  117. package/dist/modules/compiler-stamp.js.map +1 -0
  118. package/dist/modules/component-meta.d.ts +3 -0
  119. package/dist/modules/component-meta.d.ts.map +1 -0
  120. package/dist/modules/component-meta.js +44 -0
  121. package/dist/modules/component-meta.js.map +1 -0
  122. package/dist/modules/controlled-input.d.ts +3 -0
  123. package/dist/modules/controlled-input.d.ts.map +1 -0
  124. package/dist/modules/controlled-input.js +68 -0
  125. package/dist/modules/controlled-input.js.map +1 -0
  126. package/dist/modules/core-synthesis.d.ts +18 -0
  127. package/dist/modules/core-synthesis.d.ts.map +1 -0
  128. package/dist/modules/core-synthesis.js +748 -0
  129. package/dist/modules/core-synthesis.js.map +1 -0
  130. package/dist/modules/direct-state-in-view.d.ts +3 -0
  131. package/dist/modules/direct-state-in-view.d.ts.map +1 -0
  132. package/dist/modules/direct-state-in-view.js +103 -0
  133. package/dist/modules/direct-state-in-view.js.map +1 -0
  134. package/dist/modules/each-closure-violation.d.ts +3 -0
  135. package/dist/modules/each-closure-violation.d.ts.map +1 -0
  136. package/dist/modules/each-closure-violation.js +255 -0
  137. package/dist/modules/each-closure-violation.js.map +1 -0
  138. package/dist/modules/each-memo.d.ts +15 -0
  139. package/dist/modules/each-memo.d.ts.map +1 -0
  140. package/dist/modules/each-memo.js +115 -0
  141. package/dist/modules/each-memo.js.map +1 -0
  142. package/dist/modules/effect-without-handler.d.ts +3 -0
  143. package/dist/modules/effect-without-handler.d.ts.map +1 -0
  144. package/dist/modules/effect-without-handler.js +92 -0
  145. package/dist/modules/effect-without-handler.js.map +1 -0
  146. package/dist/modules/element-rewrite.d.ts +22 -0
  147. package/dist/modules/element-rewrite.d.ts.map +1 -0
  148. package/dist/modules/element-rewrite.js +1017 -0
  149. package/dist/modules/element-rewrite.js.map +1 -0
  150. package/dist/modules/empty-props.d.ts +3 -0
  151. package/dist/modules/empty-props.d.ts.map +1 -0
  152. package/dist/modules/empty-props.js +50 -0
  153. package/dist/modules/empty-props.js.map +1 -0
  154. package/dist/modules/exhaustive-effect-handling.d.ts +3 -0
  155. package/dist/modules/exhaustive-effect-handling.d.ts.map +1 -0
  156. package/dist/modules/exhaustive-effect-handling.js +61 -0
  157. package/dist/modules/exhaustive-effect-handling.js.map +1 -0
  158. package/dist/modules/exhaustive-update.d.ts +3 -0
  159. package/dist/modules/exhaustive-update.d.ts.map +1 -0
  160. package/dist/modules/exhaustive-update.js +146 -0
  161. package/dist/modules/exhaustive-update.js.map +1 -0
  162. package/dist/modules/forgotten-spread.d.ts +3 -0
  163. package/dist/modules/forgotten-spread.d.ts.map +1 -0
  164. package/dist/modules/forgotten-spread.js +51 -0
  165. package/dist/modules/forgotten-spread.js.map +1 -0
  166. package/dist/modules/form-boilerplate.d.ts +3 -0
  167. package/dist/modules/form-boilerplate.d.ts.map +1 -0
  168. package/dist/modules/form-boilerplate.js +101 -0
  169. package/dist/modules/form-boilerplate.js.map +1 -0
  170. package/dist/modules/imperative-dom-in-view.d.ts +3 -0
  171. package/dist/modules/imperative-dom-in-view.d.ts.map +1 -0
  172. package/dist/modules/imperative-dom-in-view.js +123 -0
  173. package/dist/modules/imperative-dom-in-view.js.map +1 -0
  174. package/dist/modules/item-dedup.d.ts +7 -0
  175. package/dist/modules/item-dedup.d.ts.map +1 -0
  176. package/dist/modules/item-dedup.js +204 -0
  177. package/dist/modules/item-dedup.js.map +1 -0
  178. package/dist/modules/map-on-state-array.d.ts +3 -0
  179. package/dist/modules/map-on-state-array.d.ts.map +1 -0
  180. package/dist/modules/map-on-state-array.js +84 -0
  181. package/dist/modules/map-on-state-array.js.map +1 -0
  182. package/dist/modules/mask-legend.d.ts +10 -0
  183. package/dist/modules/mask-legend.d.ts.map +1 -0
  184. package/dist/modules/mask-legend.js +50 -0
  185. package/dist/modules/mask-legend.js.map +1 -0
  186. package/dist/modules/missing-memo.d.ts +3 -0
  187. package/dist/modules/missing-memo.d.ts.map +1 -0
  188. package/dist/modules/missing-memo.js +114 -0
  189. package/dist/modules/missing-memo.js.map +1 -0
  190. package/dist/modules/msg-annotations.d.ts +9 -0
  191. package/dist/modules/msg-annotations.d.ts.map +1 -0
  192. package/dist/modules/msg-annotations.js +54 -0
  193. package/dist/modules/msg-annotations.js.map +1 -0
  194. package/dist/modules/msg-schema.d.ts +10 -0
  195. package/dist/modules/msg-schema.d.ts.map +1 -0
  196. package/dist/modules/msg-schema.js +70 -0
  197. package/dist/modules/msg-schema.js.map +1 -0
  198. package/dist/modules/namespace-import.d.ts +3 -0
  199. package/dist/modules/namespace-import.d.ts.map +1 -0
  200. package/dist/modules/namespace-import.js +80 -0
  201. package/dist/modules/namespace-import.js.map +1 -0
  202. package/dist/modules/nested-send-in-update.d.ts +3 -0
  203. package/dist/modules/nested-send-in-update.d.ts.map +1 -0
  204. package/dist/modules/nested-send-in-update.js +77 -0
  205. package/dist/modules/nested-send-in-update.js.map +1 -0
  206. package/dist/modules/no-barrel-import-when-subpath-exists.d.ts +3 -0
  207. package/dist/modules/no-barrel-import-when-subpath-exists.d.ts.map +1 -0
  208. package/dist/modules/no-barrel-import-when-subpath-exists.js +100 -0
  209. package/dist/modules/no-barrel-import-when-subpath-exists.js.map +1 -0
  210. package/dist/modules/no-eager-item-accessor.d.ts +3 -0
  211. package/dist/modules/no-eager-item-accessor.d.ts.map +1 -0
  212. package/dist/modules/no-eager-item-accessor.js +74 -0
  213. package/dist/modules/no-eager-item-accessor.js.map +1 -0
  214. package/dist/modules/no-let-reactive-accessor.d.ts +3 -0
  215. package/dist/modules/no-let-reactive-accessor.d.ts.map +1 -0
  216. package/dist/modules/no-let-reactive-accessor.js +227 -0
  217. package/dist/modules/no-let-reactive-accessor.js.map +1 -0
  218. package/dist/modules/no-list-render-in-sample.d.ts +3 -0
  219. package/dist/modules/no-list-render-in-sample.d.ts.map +1 -0
  220. package/dist/modules/no-list-render-in-sample.js +89 -0
  221. package/dist/modules/no-list-render-in-sample.js.map +1 -0
  222. package/dist/modules/no-sample-in-accessor.d.ts +3 -0
  223. package/dist/modules/no-sample-in-accessor.d.ts.map +1 -0
  224. package/dist/modules/no-sample-in-accessor.js +141 -0
  225. package/dist/modules/no-sample-in-accessor.js.map +1 -0
  226. package/dist/modules/no-sample-in-reactive-position.d.ts +3 -0
  227. package/dist/modules/no-sample-in-reactive-position.d.ts.map +1 -0
  228. package/dist/modules/no-sample-in-reactive-position.js +72 -0
  229. package/dist/modules/no-sample-in-reactive-position.js.map +1 -0
  230. package/dist/modules/pure-update-function.d.ts +3 -0
  231. package/dist/modules/pure-update-function.d.ts.map +1 -0
  232. package/dist/modules/pure-update-function.js +127 -0
  233. package/dist/modules/pure-update-function.js.map +1 -0
  234. package/dist/modules/reactive-paths.d.ts +3 -0
  235. package/dist/modules/reactive-paths.d.ts.map +1 -0
  236. package/dist/modules/reactive-paths.js +77 -0
  237. package/dist/modules/reactive-paths.js.map +1 -0
  238. package/dist/modules/row-factory.d.ts +12 -0
  239. package/dist/modules/row-factory.d.ts.map +1 -0
  240. package/dist/modules/row-factory.js +385 -0
  241. package/dist/modules/row-factory.js.map +1 -0
  242. package/dist/modules/schema-hash.d.ts +15 -0
  243. package/dist/modules/schema-hash.d.ts.map +1 -0
  244. package/dist/modules/schema-hash.js +70 -0
  245. package/dist/modules/schema-hash.js.map +1 -0
  246. package/dist/modules/spread-in-children.d.ts +3 -0
  247. package/dist/modules/spread-in-children.d.ts.map +1 -0
  248. package/dist/modules/spread-in-children.js +144 -0
  249. package/dist/modules/spread-in-children.js.map +1 -0
  250. package/dist/modules/state-mutation.d.ts +3 -0
  251. package/dist/modules/state-mutation.d.ts.map +1 -0
  252. package/dist/modules/state-mutation.js +138 -0
  253. package/dist/modules/state-mutation.js.map +1 -0
  254. package/dist/modules/state-schema.d.ts +8 -0
  255. package/dist/modules/state-schema.d.ts.map +1 -0
  256. package/dist/modules/state-schema.js +55 -0
  257. package/dist/modules/state-schema.js.map +1 -0
  258. package/dist/modules/static-items.d.ts +3 -0
  259. package/dist/modules/static-items.d.ts.map +1 -0
  260. package/dist/modules/static-items.js +125 -0
  261. package/dist/modules/static-items.js.map +1 -0
  262. package/dist/modules/static-on.d.ts +3 -0
  263. package/dist/modules/static-on.d.ts.map +1 -0
  264. package/dist/modules/static-on.js +100 -0
  265. package/dist/modules/static-on.js.map +1 -0
  266. package/dist/modules/string-effect-callback.d.ts +3 -0
  267. package/dist/modules/string-effect-callback.d.ts.map +1 -0
  268. package/dist/modules/string-effect-callback.js +50 -0
  269. package/dist/modules/string-effect-callback.js.map +1 -0
  270. package/dist/modules/structural-mask.d.ts +8 -0
  271. package/dist/modules/structural-mask.d.ts.map +1 -0
  272. package/dist/modules/structural-mask.js +76 -0
  273. package/dist/modules/structural-mask.js.map +1 -0
  274. package/dist/modules/subapp-requires-reason.d.ts +3 -0
  275. package/dist/modules/subapp-requires-reason.d.ts.map +1 -0
  276. package/dist/modules/subapp-requires-reason.js +129 -0
  277. package/dist/modules/subapp-requires-reason.js.map +1 -0
  278. package/dist/modules/text-mask.d.ts +12 -0
  279. package/dist/modules/text-mask.d.ts.map +1 -0
  280. package/dist/modules/text-mask.js +63 -0
  281. package/dist/modules/text-mask.js.map +1 -0
  282. package/dist/modules/view-bag-import.d.ts +3 -0
  283. package/dist/modules/view-bag-import.d.ts.map +1 -0
  284. package/dist/modules/view-bag-import.js +80 -0
  285. package/dist/modules/view-bag-import.js.map +1 -0
  286. package/dist/msg-annotations.d.ts +104 -0
  287. package/dist/msg-annotations.d.ts.map +1 -0
  288. package/dist/msg-annotations.js +242 -0
  289. package/dist/msg-annotations.js.map +1 -0
  290. package/dist/msg-schema.d.ts +130 -0
  291. package/dist/msg-schema.d.ts.map +1 -0
  292. package/dist/msg-schema.js +770 -0
  293. package/dist/msg-schema.js.map +1 -0
  294. package/dist/schema-hash.d.ts +16 -0
  295. package/dist/schema-hash.d.ts.map +1 -0
  296. package/dist/schema-hash.js +31 -0
  297. package/dist/schema-hash.js.map +1 -0
  298. package/dist/state-schema.d.ts +41 -0
  299. package/dist/state-schema.d.ts.map +1 -0
  300. package/dist/state-schema.js +156 -0
  301. package/dist/state-schema.js.map +1 -0
  302. package/dist/transform.d.ts +109 -0
  303. package/dist/transform.d.ts.map +1 -0
  304. package/dist/transform.js +1390 -0
  305. package/dist/transform.js.map +1 -0
  306. package/dist/version.d.ts +11 -0
  307. package/dist/version.d.ts.map +1 -0
  308. package/dist/version.js +11 -0
  309. package/dist/version.js.map +1 -0
  310. package/package.json +47 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transform.js","sourceRoot":"","sources":["../src/transform.ts"],"names":[],"mappings":"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","sourcesContent":["import ts from 'typescript'\nimport { collectDeps } from './collect-deps.js'\nimport { resolveAccessorBody } from './accessor-resolver.js'\nimport { extractMsgSchema, extractEffectSchema } from './msg-schema.js'\nimport { extractMsgAnnotations } from './msg-annotations.js'\nimport { extractStateSchema } from './state-schema.js'\n// `computeSchemaHash` no longer imported here — `schemaHashModule` owns\n// the __schemaHash emission. See modules/schema-hash.ts.\n// `tagDispatchHandlers` + `injectScopeVariantRegistrations` are now\n// consumed by `bindingDescriptorsModule` via the registry's preTransform\n// hook — no longer imported here. See modules/binding-descriptors.ts.\nimport { compilerCache } from './compiler-cache.js'\nimport type { Diagnostic } from './diagnostic.js'\nimport { ModuleRegistry, type CompilerModule, type EmissionContribution } from './module.js'\n// Introspection modules (v2c/decomp-26) and devtools modules\n// (v2c/decomp-27) moved to their sibling packages. Hosts register\n// factories via `registerIntrospectionFactory` / `registerDevtoolsFactory`;\n// transformLlui invokes them via the getters when their respective\n// modes are active. BINDING_DESCRIPTORS_SLOT is re-exported from\n// introspection-factory.ts as a string constant so the orchestrator\n// can read the slot without importing the sibling package.\nimport {\n getIntrospectionFactory,\n getDevtoolsFactory,\n BINDING_DESCRIPTORS_SLOT,\n} from './introspection-factory.js'\nimport { maskLegendModule } from './modules/mask-legend.js'\nimport { compilerStampModule } from './modules/compiler-stamp.js'\nimport { eachMemoModule, EACH_MEMO_SLOT, type EachMemoSlot } from './modules/each-memo.js'\nimport { structuralMaskModule } from './modules/structural-mask.js'\nimport { textMaskModule } from './modules/text-mask.js'\nimport { itemDedupModule } from './modules/item-dedup.js'\nimport {\n elementRewriteModule,\n ELEMENT_REWRITE_SLOT,\n type ElementRewriteSlot,\n} from './modules/element-rewrite.js'\nimport { rowFactoryModule } from './modules/row-factory.js'\nimport {\n coreSynthesisModule,\n CORE_SYNTHESIS_SLOT,\n type CoreSynthesisSlot,\n} from './modules/core-synthesis.js'\nimport { bitmaskOverflowModule } from './modules/bitmask-overflow.js'\nimport { asyncUpdateModule } from './modules/async-update.js'\nimport { mapOnStateArrayModule } from './modules/map-on-state-array.js'\nimport { nestedSendInUpdateModule } from './modules/nested-send-in-update.js'\nimport { directStateInViewModule } from './modules/direct-state-in-view.js'\nimport { imperativeDomInViewModule } from './modules/imperative-dom-in-view.js'\nimport { accessorSideEffectModule } from './modules/accessor-side-effect.js'\nimport { stateMutationModule } from './modules/state-mutation.js'\nimport { effectWithoutHandlerModule } from './modules/effect-without-handler.js'\nimport { exhaustiveEffectHandlingModule } from './modules/exhaustive-effect-handling.js'\nimport { noEagerItemAccessorModule } from './modules/no-eager-item-accessor.js'\nimport { pureUpdateFunctionModule } from './modules/pure-update-function.js'\nimport { exhaustiveUpdateModule } from './modules/exhaustive-update.js'\nimport { noLetReactiveAccessorModule } from './modules/no-let-reactive-accessor.js'\nimport { eachClosureViolationModule } from './modules/each-closure-violation.js'\nimport { stringEffectCallbackModule } from './modules/string-effect-callback.js'\nimport { agentMissingIntentModule } from './modules/agent-missing-intent.js'\nimport { agentWarningOnConfirmModule } from './modules/agent-warning-on-confirm.js'\nimport { agentExampleOnPayloadModule } from './modules/agent-example-on-payload.js'\nimport { agentExclusiveAnnotationsModule } from './modules/agent-exclusive-annotations.js'\nimport { agentOptionalFieldUndocumentedModule } from './modules/agent-optional-field-undocumented.js'\nimport { agentTagsendTranslatorMissingModule } from './modules/agent-tagsend-translator-missing.js'\nimport { agentNonextractableHandlerModule } from './modules/agent-nonextractable-handler.js'\nimport { subappRequiresReasonModule } from './modules/subapp-requires-reason.js'\nimport { emptyPropsModule } from './modules/empty-props.js'\nimport { forgottenSpreadModule } from './modules/forgotten-spread.js'\nimport { accessibilityModule } from './modules/accessibility.js'\nimport { viewBagImportModule } from './modules/view-bag-import.js'\nimport { controlledInputModule } from './modules/controlled-input.js'\nimport { missingMemoModule } from './modules/missing-memo.js'\nimport { namespaceImportModule } from './modules/namespace-import.js'\nimport { noBarrelImportWhenSubpathExistsModule } from './modules/no-barrel-import-when-subpath-exists.js'\nimport { formBoilerplateModule } from './modules/form-boilerplate.js'\nimport { spreadInChildrenModule } from './modules/spread-in-children.js'\nimport { staticItemsModule } from './modules/static-items.js'\nimport { staticOnModule } from './modules/static-on.js'\nimport { noListRenderInSampleModule } from './modules/no-list-render-in-sample.js'\nimport { noSampleInAccessorModule } from './modules/no-sample-in-accessor.js'\nimport { noSampleInReactivePositionModule } from './modules/no-sample-in-reactive-position.js'\nimport { agentEmitsDriftModule } from './modules/agent-emits-drift.js'\nimport { agentMsgResolvableModule } from './modules/agent-msg-resolvable.js'\n\nexport function createMaskLiteral(f: ts.NodeFactory, mask: number): ts.Expression {\n if (mask >= 0) return f.createNumericLiteral(mask)\n // -1 (0xFFFFFFFF | 0) — emit as bitwise OR: 0xFFFFFFFF | 0\n return f.createBinaryExpression(\n f.createNumericLiteral(0xffffffff),\n ts.SyntaxKind.BarToken,\n f.createNumericLiteral(0),\n )\n}\n\n// HTML element helper names that the compiler can transform\nconst ELEMENT_HELPERS = new Set([\n 'a',\n 'abbr',\n 'article',\n 'aside',\n 'b',\n 'blockquote',\n 'br',\n 'button',\n 'canvas',\n 'code',\n 'dd',\n 'details',\n 'dialog',\n 'div',\n 'dl',\n 'dt',\n 'em',\n 'fieldset',\n 'figcaption',\n 'figure',\n 'footer',\n 'form',\n 'h1',\n 'h2',\n 'h3',\n 'h4',\n 'h5',\n 'h6',\n 'header',\n 'hr',\n 'i',\n 'iframe',\n 'img',\n 'input',\n 'label',\n 'legend',\n 'li',\n 'main',\n 'mark',\n 'nav',\n 'ol',\n 'optgroup',\n 'option',\n 'output',\n 'p',\n 'pre',\n 'progress',\n 'section',\n 'select',\n 'small',\n 'span',\n 'strong',\n 'sub',\n 'summary',\n 'sup',\n 'table',\n 'tbody',\n 'td',\n 'textarea',\n 'tfoot',\n 'th',\n 'thead',\n 'time',\n 'tr',\n 'ul',\n 'video',\n])\n\n/**\n * Transform a source file containing @llui/dom imports.\n * Returns the transformed source or null if no transformation needed.\n */\nexport interface TransformEdit {\n start: number\n end: number\n replacement: string\n}\n\n/**\n * Pre-resolved external type sources from the cross-file resolver.\n * When the plugin's vite hook detects that `State` / `Msg` / `Effect`\n * for a `component<...>()` call are imported (not declared in the\n * current file), it walks the imports and re-exports to find the\n * declaring file, then passes the source + local name here. Each\n * extractor below uses the resolved source instead of falling back to\n * the file-local search (which would miss the type entirely).\n */\nexport interface ExternalTypeSources {\n state?: { source: string; typeName: string }\n msg?: { source: string; typeName: string }\n effect?: { source: string; typeName: string }\n}\n\n/**\n * Schemas already extracted by the plugin's async hook before invoking\n * the sync transform. Used for cases the file-local sync extractors\n * can't handle on their own:\n * - The Msg/Effect/State alias lives in another file (cross-file\n * resolution, see `cross-file-resolver.ts`).\n * - The Msg/Effect alias is a *composition* — a union mixing inline\n * `{ type: 'literal' }` members with TypeReferences pointing at\n * other (often imported) Msg unions.\n *\n * When provided, transformLlui uses these instead of running its own\n * file-local extractors. When omitted (the test path that constructs\n * a single-source string), the file-local extractors run as before.\n */\nexport interface PreExtractedSchemas {\n msgSchema?: ReturnType<typeof extractMsgSchema>\n msgAnnotations?: ReturnType<typeof extractMsgAnnotations>\n stateSchema?: ReturnType<typeof extractStateSchema>\n effectSchema?: ReturnType<typeof extractEffectSchema>\n}\n\nexport function transformLlui(\n source: string,\n _filename: string,\n devMode = false,\n emitAgentMetadata = false,\n mcpPort: number | null = 5200,\n verbose = false,\n typeSources?: ExternalTypeSources,\n preExtracted?: PreExtractedSchemas,\n crossFilePaths?: ReadonlySet<string>,\n): { output: string; edits: TransformEdit[]; diagnostics: Diagnostic[] } | null {\n // Use the caller-provided filename so any module reading `sf.fileName`\n // (e.g. `componentMetaModule` emitting `__componentMeta: { file }`)\n // sees the real path instead of a placeholder. The monolith's inline\n // `injectComponentMeta` used the `_filename` parameter directly; the\n // bridge needs the same source via the AST node.\n let sourceFile = ts.createSourceFile(_filename, source, ts.ScriptTarget.Latest, true)\n\n // Find the @llui/dom import\n const imp = findLluiImport(sourceFile)\n if (!imp) return null\n const lluiImport = imp\n\n // Collect imported element helper names (local → original)\n const importedHelpers = getImportedHelpers(lluiImport)\n // Previously: `if (importedHelpers.size === 0 && !hasReactiveAccessors(sourceFile)) return null`.\n // Removed in lint-migration-8: lint-rule modules (namespace-import,\n // form-boilerplate, etc.) need to fire on files whose only @llui/dom\n // usage is a namespace import, a type-only import, or a Msg-union\n // declaration — none of which produce element-helper or text/component\n // call sites. The registry's per-file cost is small enough that running\n // it on these files is fine; the late return-null still bails when\n // there's no work to emit (no edits AND no diagnostics).\n\n // Connect-pattern pass: detects `*.connect(get, sendFn, …)` call\n // sites and inserts a runtime `__registerScopeVariants([...])`\n // adjacent to each, with the variants statically extracted from the\n // sendFn's body. Handles the dispatch-translation case at the\n // syntactic level — handler propagation via `tagSend` covers the\n // rest. Runs FIRST so its `collectLocalFns` resolver still sees raw\n // arrow initializers in const declarations (the universal tagger\n // below replaces those initializers with `Object.assign(...)`\n // wrappers).\n //\n // Universal handler-tagger pass: walks every arrow/function\n // expression and wraps any whose body contains literal\n // `send({type:'X'})` / `dispatch({type:'X'})` calls with\n // `Object.assign(arrow, {__lluiVariants: ['X']})`. The runtime\n // (`@llui/dom` `elements.ts` / `el-split.ts`) reads the tag from\n // event-handler bindings only — so tags placed on functions in\n // non-handler positions are runtime-inert. This deliberately covers\n // three patterns at once:\n // • Inline event handlers (`onClick: () => send(...)`)\n // • Const-bound translators (`const sendMenu = (m) => dispatch(...)`)\n // • Positional-arg helpers (`navButton(label, () => dispatch(...))`)\n //\n // Both passes gated on dev/agent-metadata so production bundles\n // without agent integration don't pay the per-handler `Object.assign`\n // cost.\n // Binding-descriptors pre-pass migrated to `bindingDescriptorsModule`\n // via the registry's `preTransform` hook (v2c/decomp-7). The module\n // wraps `injectScopeVariantRegistrations` + `tagDispatchHandlers` and\n // runs inside `registry.run()` below — the resulting (post-transform)\n // sourceFile is re-assigned from `registryResult.analysis.sourceFile`.\n // `scopeRegistrationsInjected` reads from the module's slot after\n // the registry run.\n let scopeRegistrationsInjected = false\n\n // Pass 2 pre-scan: collect all state access paths\n // Only use precise masks in files that define a component() — the __dirty\n // function is generated per-component, so bit assignments in other files\n // won't match. Files without component() get FULL_MASK on all bindings.\n const fileHasComponent = hasComponentDef(sourceFile, lluiImport)\n const { lo: fieldBits, hi: fieldBitsHi } = fileHasComponent\n ? collectDeps(source, crossFilePaths)\n : { lo: new Map<string, number>(), hi: new Map<string, number>() }\n\n if (verbose && fileHasComponent) {\n const pairs = [...fieldBits.entries()]\n .map(([path, bit]) => `${path}=${bit === -1 ? 'FULL' : bit}`)\n .join(', ')\n console.info(\n `[llui] ${_filename}: ${fieldBits.size} reactive path${fieldBits.size === 1 ? '' : 's'}` +\n (pairs.length > 0 ? ` — ${pairs}` : ''),\n )\n }\n\n // Identifier names bound to the View<S,M> helpers parameter of a `view` callback.\n // When the user writes `h.text(...)` / `h.show(...)` / `h.each(...)`, the\n // compiler treats the call as if it were a bare import call.\n const viewHelperNames = collectViewHelperNames(sourceFile, lluiImport)\n // Destructured aliases: `view: (_, { show, text: t }) => [...]` → { show→show, t→text }.\n const viewHelperAliases = collectViewHelperAliases(sourceFile, lluiImport, viewHelperNames)\n\n // Track which helpers were compiled vs bailed out\n const compiledHelpers = new Set<string>()\n const bailedHelpers = new Set<string>()\n let usesElTemplate = false\n let usesElSplit = false\n let usesMemo = false\n let usesApplyBinding = false\n let usesCloneStaticTemplate = false\n\n const f = ts.factory\n const printer = ts.createPrinter({ newLine: ts.NewLineKind.LineFeed })\n\n // Collect source positions of transformed nodes for source mapping\n const edits: TransformEdit[] = []\n\n // ── Module registry (v2c §2) ────────────────────────────────────\n //\n // Active CompilerModules run as a single AST pass over the source\n // before the main visitor; their emissions are spliced into the\n // matching `component()` call's config-arg by `applyRegistryEmissions`\n // alongside the monolith's inline `inject*` helpers. As modules\n // incrementally absorb inline-injector concerns (`__componentMeta`,\n // `__stateSchema` today, `__msgSchema` / `__msgAnnotations` /\n // `__schemaHash` / `__prefixes` next), the matching inline call\n // sites delete and the registry becomes the sole emission path.\n //\n // Module activation rules:\n // - `componentMetaModule` registers only in `devMode` (matches the\n // monolith's `if (devMode) injectComponentMeta(...)` gate).\n // - `stateSchemaModule` registers when `shouldEmitAgentMetadata`\n // (devMode OR emitAgentMetadata flag) — matches the monolith's\n // gating block at the inline-inject sites.\n // - All other agent modules are dormant in this push.\n //\n // When the registry is empty the bridge collapses to a no-op — the\n // monolith's existing emissions continue to dominate.\n const shouldEmitAgentMetadataAtToplevel = devMode || emitAgentMetadata\n // Pre-compute the state schema once per file. The monolith previously\n // computed this inside the visitor's component() block (re-running\n // per call site); since the inputs are file-level (typeSources,\n // preExtracted, source) the result is identical across calls, so we\n // hoist for the module-registration. The inline computation below\n // (in the visitor's `if (shouldEmitAgentMetadata)` block) gets its\n // value from this same variable.\n const hoistedStateSchema = shouldEmitAgentMetadataAtToplevel\n ? preExtracted?.stateSchema !== undefined\n ? preExtracted.stateSchema\n : extractStateSchema(\n typeSources?.state?.source ?? source,\n typeSources?.state?.typeName ?? 'State',\n )\n : null\n const hoistedMsgAnnotations = shouldEmitAgentMetadataAtToplevel\n ? preExtracted?.msgAnnotations !== undefined\n ? preExtracted.msgAnnotations\n : extractMsgAnnotations(\n typeSources?.msg?.source ?? source,\n typeSources?.msg?.typeName ?? 'Msg',\n )\n : null\n const hoistedMsgSchema = shouldEmitAgentMetadataAtToplevel\n ? preExtracted?.msgSchema !== undefined\n ? preExtracted.msgSchema\n : extractMsgSchema(typeSources?.msg?.source ?? source, typeSources?.msg?.typeName ?? 'Msg')\n : null\n const hoistedEffectSchema = shouldEmitAgentMetadataAtToplevel\n ? preExtracted?.effectSchema !== undefined\n ? preExtracted.effectSchema\n : extractEffectSchema(\n typeSources?.effect?.source ?? source,\n typeSources?.effect?.typeName ?? 'Effect',\n )\n : null\n const activeModules: CompilerModule[] = []\n // Devtools modules (componentMeta + future trace instrumentation)\n // live in @llui/compiler-devtools. The host registers the factory\n // once via `registerDevtoolsFactory`; the factory gates on devMode\n // and any future per-module flags.\n const devtools = getDevtoolsFactory()\n if (devtools) {\n activeModules.push(...devtools({ sourceFile, devMode }))\n }\n // Introspection modules (binding-descriptors, msg-schema,\n // state-schema, msg-annotations, schema-hash) live in\n // @llui/compiler-introspection. The host registers the factory\n // once via `registerIntrospectionFactory`. The factory itself\n // decides which modules to activate based on\n // `shouldEmitAgentMetadata`: producer modules + binding-descriptors\n // run only in agent mode, but schemaHashModule runs always (HMR\n // re-send gating uses it even in prod builds — spec §7.4).\n const introspection = getIntrospectionFactory()\n if (introspection) {\n activeModules.push(\n ...introspection({\n sourceFile,\n msgSchema: hoistedMsgSchema,\n effectSchema: hoistedEffectSchema,\n stateSchema: hoistedStateSchema,\n msgAnnotations: hoistedMsgAnnotations,\n shouldEmitAgentMetadata: shouldEmitAgentMetadataAtToplevel,\n }),\n )\n }\n // maskLegendModule registers whenever the file has any reactive paths.\n // The module's own emit() gates on empty bit maps so registering\n // here when fieldBits/fieldBitsHi are non-empty is sufficient.\n if (fieldBits.size > 0 || fieldBitsHi.size > 0) {\n activeModules.push(maskLegendModule({ fieldBits, fieldBitsHi }))\n }\n // compilerStampModule is unconditional — the integrity marker fires\n // on every compiled `component()` call regardless of mode. Replaces\n // the umbrella's last remaining inline injector\n // (`injectCompilerEmittedMarker`, deleted below).\n activeModules.push(compilerStampModule)\n // bitmaskOverflowModule is always-on. Emits `llui/bitmask-overflow`\n // (severity: error) when a component reads more than 62 unique state\n // paths. Migrated from @llui/eslint-plugin (v0.x); promoted from\n // ESLint warning to compiler error because LLMs ignore warnings.\n activeModules.push(bitmaskOverflowModule())\n // Correctness rules migrated from @llui/eslint-plugin as compile-time\n // errors. LLM-first authoring requires non-bypassable correctness\n // signals; ESLint warnings are silently ignored by LLM agents and\n // may not even be installed in a downstream project.\n activeModules.push(asyncUpdateModule())\n activeModules.push(mapOnStateArrayModule())\n activeModules.push(nestedSendInUpdateModule())\n activeModules.push(directStateInViewModule())\n activeModules.push(imperativeDomInViewModule())\n activeModules.push(accessorSideEffectModule())\n activeModules.push(stateMutationModule())\n activeModules.push(effectWithoutHandlerModule())\n activeModules.push(exhaustiveEffectHandlingModule())\n activeModules.push(noEagerItemAccessorModule())\n activeModules.push(pureUpdateFunctionModule())\n activeModules.push(exhaustiveUpdateModule())\n activeModules.push(noLetReactiveAccessorModule())\n activeModules.push(eachClosureViolationModule())\n activeModules.push(stringEffectCallbackModule())\n activeModules.push(agentMissingIntentModule())\n activeModules.push(agentWarningOnConfirmModule())\n activeModules.push(agentExampleOnPayloadModule())\n activeModules.push(agentExclusiveAnnotationsModule())\n activeModules.push(agentOptionalFieldUndocumentedModule())\n activeModules.push(agentTagsendTranslatorMissingModule())\n activeModules.push(agentNonextractableHandlerModule())\n activeModules.push(subappRequiresReasonModule())\n activeModules.push(emptyPropsModule())\n activeModules.push(forgottenSpreadModule())\n activeModules.push(accessibilityModule())\n activeModules.push(viewBagImportModule())\n activeModules.push(controlledInputModule())\n activeModules.push(missingMemoModule())\n activeModules.push(namespaceImportModule())\n activeModules.push(noBarrelImportWhenSubpathExistsModule())\n activeModules.push(formBoilerplateModule())\n activeModules.push(spreadInChildrenModule())\n activeModules.push(staticItemsModule())\n activeModules.push(staticOnModule())\n activeModules.push(noListRenderInSampleModule())\n activeModules.push(noSampleInAccessorModule())\n activeModules.push(noSampleInReactivePositionModule())\n activeModules.push(agentEmitsDriftModule())\n activeModules.push(agentMsgResolvableModule())\n // eachMemoModule wraps allocating each() items accessors in\n // `memo(...)` via `transformCallEnter`. Activated when the file\n // has any reactive paths (mirrors the inline call's gating).\n // The module sets a per-file slot when at least one wrap fired;\n // the umbrella reads it to decide whether `memo` needs to enter\n // the @llui/dom imports via `cleanupImports`.\n if (fieldBits.size > 0 || fieldBitsHi.size > 0) {\n activeModules.push(\n eachMemoModule({\n fieldBits,\n viewHelperNames,\n viewHelperAliases,\n }),\n )\n }\n // itemDedupModule lifts repeated `item(selector)` / `item.field`\n // accesses into hoisted `__sN` selectors + `__aN` accessors.\n // Registered unconditionally — the original inline call ran on every\n // each() regardless of reactive paths, since the optimization is a\n // pure rewrite of the render body. Module fires top-down\n // (`transformCallEnter`) so subsequent structural-mask + element\n // rewrites see the hoisted form.\n activeModules.push(\n itemDedupModule({\n viewHelperNames,\n viewHelperAliases,\n }),\n )\n // elementRewriteModule transforms `div(...)` / `button(...)` /\n // etc. into `elSplit(...)` / `elTemplate(...)` / `__cloneStaticTemplate(...)`.\n // Activated unconditionally — the underlying `tryTransformElementCall`\n // gates on the `importedHelpers` map (only rewrites helpers that\n // were actually imported from @llui/dom). The module signals which\n // helpers compiled / bailed and which runtime functions need\n // imports via `ELEMENT_REWRITE_SLOT`; the umbrella reads the slot\n // before `cleanupImports`.\n activeModules.push(\n elementRewriteModule({\n importedHelpers,\n fieldBits,\n fieldBitsHi,\n }),\n )\n // rowFactoryModule fires bottom-up (`transformCall` not\n // `transformCallEnter`) so it observes the each() call AFTER the\n // render body's element children have been rewritten by\n // `elementRewriteModule` into `elTemplate(...)` calls. Without that\n // ordering it would always bail (`if (!templateCall) return null`).\n activeModules.push(\n rowFactoryModule({\n viewHelperNames,\n viewHelperAliases,\n filename: _filename,\n source,\n }),\n )\n // coreSynthesisModule injects `__update` / `__handlers` / `__prefixes`\n // onto every `component()` call's config-arg literal. These three\n // share `topLevelBits` / `structuralMask` intermediates and are\n // co-emitted by `tryInjectDirty` (still inline in transform.ts;\n // the module is a thin wrapper per v2c §7.9.2 decision (b)). Fires\n // top-down so subsequent per-target emissions (componentMeta,\n // compilerStamp, schemaHash, stateSchema, msgSchema, msgAnnotations)\n // observe the synthesized config-arg via `findComponentCalls`.\n activeModules.push(\n coreSynthesisModule({\n fieldBits,\n fieldBitsHi,\n lluiImport,\n }),\n )\n // structuralMaskModule injects `__mask` into each()/branch()/scope()/show()\n // options. Activated when the file has any low-word reactive paths\n // (matches the inline `fieldBits.size === 0` early-return). Module\n // fires top-down (transformCallEnter) so subsequent passes — and\n // the visitor-level inline `tryInjectDirty`'s structuralMask read —\n // see the injected `__mask` prop on the options literal.\n if (fieldBits.size > 0) {\n activeModules.push(\n structuralMaskModule({\n fieldBits,\n viewHelperNames,\n viewHelperAliases,\n }),\n )\n }\n // textMaskModule injects a `__mask` (precise or FULL_MASK) as\n // text()'s second argument on every eligible text() call. Activated\n // unconditionally — the inline `tryInjectTextMask` had no early\n // return on empty fieldBits and always emitted FULL_MASK in the\n // zero-path case so the runtime sees a uniform 2-arg shape.\n activeModules.push(\n textMaskModule({\n fieldBits,\n viewHelperNames,\n viewHelperAliases,\n lluiImport,\n }),\n )\n const registry = new ModuleRegistry(activeModules)\n const registryResult = registry.run(sourceFile)\n // The registry phases (preTransform v2c/decomp-7, transformCall\n // v2c/decomp-11/12) may have mutated the source file — replace our\n // local reference so all subsequent code (fieldBits, visitor,\n // cleanupImports) sees the post-registry AST. When no rewriting\n // module is active this is a no-op assignment.\n sourceFile = registryResult.analysis.sourceFile\n // Read the binding-descriptors module's slot for the\n // cleanupImports decision about the `__registerScopeVariants`\n // runtime helper import. When the module didn't run (no agent\n // metadata mode) the slot is absent and scopeRegistrationsInjected\n // stays false.\n const bdState = registryResult.analysis.perModule.get(BINDING_DESCRIPTORS_SLOT) as\n | { scopeRegistrationsInjected: boolean }\n | undefined\n if (bdState) scopeRegistrationsInjected = bdState.scopeRegistrationsInjected\n // each-memo module signals memo-usage via its slot — surfaces here\n // so `cleanupImports` adds the `memo` runtime import. Mirrors the\n // monolith's `usesMemo` flag that the inline `tryWrapEachItemsWithMemo`\n // used to set.\n const emState = registryResult.analysis.perModule.get(EACH_MEMO_SLOT) as EachMemoSlot | undefined\n if (emState?.usesMemo) usesMemo = true\n // element-rewrite module signals compiled/bailed helpers and which\n // runtime imports it referenced. Surfaces here so the umbrella's\n // `cleanupImports` decision matches the inline path's behavior.\n // Also pushes a sentinel edit when the module rewrote — the\n // `edits.length === 0` short-circuit downstream would otherwise\n // skip the per-statement diff that surfaces Phase 2b rewrites to\n // the output.\n const erState = registryResult.analysis.perModule.get(ELEMENT_REWRITE_SLOT) as\n | ElementRewriteSlot\n | undefined\n if (erState) {\n for (const h of erState.compiled) compiledHelpers.add(h)\n for (const h of erState.bailed) bailedHelpers.add(h)\n if (erState.usesElSplit) usesElSplit = true\n if (erState.usesElTemplate) usesElTemplate = true\n if (erState.usesCloneStaticTemplate) usesCloneStaticTemplate = true\n if (\n erState.compiled.size > 0 ||\n erState.usesElSplit ||\n erState.usesElTemplate ||\n erState.usesCloneStaticTemplate\n ) {\n edits.push({ start: 0, end: 0, replacement: '' })\n }\n }\n // core-synthesis module signals __update/__handlers/__prefixes\n // emission. Drives `__runPhase2` + `__handleMsg` runtime imports\n // via `cleanupImports`. Also pushes a sentinel edit so the\n // per-statement diff catches the synthesized config-arg.\n const csState = registryResult.analysis.perModule.get(CORE_SYNTHESIS_SLOT) as\n | CoreSynthesisSlot\n | undefined\n if (csState?.usesApplyBinding) {\n usesApplyBinding = true\n edits.push({ start: 0, end: 0, replacement: '' })\n }\n const emissionsByTarget = new Map<ts.CallExpression, EmissionContribution[]>()\n const globalEmissions: EmissionContribution[] = []\n for (const emission of registryResult.emissions) {\n if (emission.target) {\n const list = emissionsByTarget.get(emission.target)\n if (list) list.push(emission)\n else emissionsByTarget.set(emission.target, [emission])\n } else {\n globalEmissions.push(emission)\n }\n }\n\n /**\n * Splice registry-collected emissions into a `component()` call's\n * config-arg object literal. Idempotent: emissions whose `field`\n * already exists on the config arg are skipped (matches the\n * monolith's inline `inject*` helpers' \"if-already-present-return\"\n * behaviour). The caller passes both the *original* call (the one\n * the registry walked) and the current *transformed* call (the\n * accumulator that previous `inject*` helpers built up).\n */\n function applyRegistryEmissions(\n transformedCall: ts.CallExpression,\n originalCall: ts.CallExpression,\n ): ts.CallExpression {\n const targeted = emissionsByTarget.get(originalCall) ?? []\n const all = [...globalEmissions, ...targeted]\n if (all.length === 0) return transformedCall\n const configArg = transformedCall.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return transformedCall\n const existing = new Set<string>()\n for (const prop of configArg.properties) {\n if (ts.isPropertyAssignment(prop) && ts.isIdentifier(prop.name)) {\n existing.add(prop.name.text)\n }\n }\n const adds: ts.ObjectLiteralElementLike[] = []\n for (const emission of all) {\n if (existing.has(emission.field)) continue\n adds.push(f.createPropertyAssignment(emission.field, emission.value))\n }\n if (adds.length === 0) return transformedCall\n const newConfig = f.createObjectLiteralExpression([...configArg.properties, ...adds], true)\n return f.createCallExpression(transformedCall.expression, transformedCall.typeArguments, [\n newConfig,\n ...transformedCall.arguments.slice(1),\n ])\n }\n\n // ── track() strip pass (v2b §3) ─────────────────────────────────\n // `track({ deps: (s) => [...] })` is a compile-time declaration only.\n // collectDeps already merged its paths into `fieldBits` because 'track'\n // is in REACTIVE_API_NAMES. Now emit an edit deleting the statement\n // and mark 'track' as compiled so cleanupImports strips the import.\n //\n // A track() call is stripped only when it's the entire ExpressionStatement\n // (the documented form). track() inside a larger expression is left as a\n // call to the runtime stub — which throws — so the developer notices\n // they wrote an unsupported form. The llui/prefer-static-deps lint\n // rule catches the unusual usages.\n // `track` is imported from @llui/dom but is not an element helper, so\n // `importedHelpers.has('track')` is always false. Check the named\n // imports directly to gate the strip pass.\n const lluiImportNames = new Set<string>()\n if (\n lluiImport.importClause?.namedBindings &&\n ts.isNamedImports(lluiImport.importClause.namedBindings)\n ) {\n for (const spec of lluiImport.importClause.namedBindings.elements) {\n lluiImportNames.add(spec.name.text)\n }\n }\n // Track-strip recognition. The main visitor returns an EmptyStatement\n // for any `track({ deps: ... })` ExpressionStatement — the per-statement\n // diff then surfaces the deletion. Paths are already in fieldBits\n // because 'track' is in REACTIVE_API_NAMES.\n if (lluiImportNames.has('track')) {\n // Pre-scan to detect track() use so cleanupImports strips the import.\n let foundTrackCall = false\n const visitForTrackDetect = (node: ts.Node): void => {\n if (foundTrackCall) return\n if (\n ts.isExpressionStatement(node) &&\n ts.isCallExpression(node.expression) &&\n ts.isIdentifier(node.expression.expression) &&\n node.expression.expression.text === 'track'\n ) {\n foundTrackCall = true\n return\n }\n ts.forEachChild(node, visitForTrackDetect)\n }\n visitForTrackDetect(sourceFile)\n if (foundTrackCall) compiledHelpers.add('track')\n }\n\n function visitor(node: ts.Node): ts.Node {\n // Synthetic nodes (created by ts.factory) don't have real positions\n const hasPos = node.pos >= 0 && node.end >= 0\n const origStart = hasPos ? node.getStart(sourceFile) : -1\n const origEnd = hasPos ? node.getEnd() : -1\n\n // track({ deps: (s) => [...] }) is a compile-time declaration — paths\n // already in fieldBits, call expression is dead weight. Return an\n // EmptyStatement so the per-statement diff strips it from the output\n // (cleanupImports separately removes the `track` import via the\n // compiledHelpers set populated above).\n if (\n ts.isExpressionStatement(node) &&\n ts.isCallExpression(node.expression) &&\n ts.isIdentifier(node.expression.expression) &&\n node.expression.expression.text === 'track' &&\n lluiImportNames.has('track')\n ) {\n return f.createEmptyStatement()\n }\n\n // each() optimizations + row-factory all migrated to modules:\n // - memo-wrap → eachMemoModule (v2c/decomp-13)\n // - item-dedup → itemDedupModule (v2c/decomp-16)\n // - structural-mask → structuralMaskModule (v2c/decomp-14)\n // - row-factory → rowFactoryModule (v2c/decomp-18)\n // Phase 2b chains the top-down hooks (memo, dedup, mask, element)\n // then recurses, then fires the bottom-up exit hook (row-factory).\n // The visitor's inline each() block is gone.\n\n if (ts.isCallExpression(node)) {\n // Pass 1: element rewrite (`div` → `elSplit`/`elTemplate`/\n // `__cloneStaticTemplate`) moved to `elementRewriteModule`\n // (v2c/decomp-17). Phase 2b ran before this visitor; the call\n // is already rewritten on `node` when it was eligible.\n // text() mask injection moved to `textMaskModule` (v2c/decomp-15).\n // Structural-mask injection (each/branch/scope/show) moved to\n // `structuralMaskModule` (v2c/decomp-14). Both ran in Phase 2b\n // before this visitor; nothing to do here.\n }\n\n // Pass 2: component() metadata splicing. Core synthesis\n // (__update/__handlers/__prefixes) moved to `coreSynthesisModule`\n // (v2c/decomp-19) — fires top-down in Phase 2b before this\n // visitor sees the call. The remaining work here is just the\n // registry-emission splice (per-target __componentMeta,\n // __compilerVersion, __lluiCompilerEmitted, __schemaHash,\n // __stateSchema, __msgSchema, __effectSchema, __msgAnnotations).\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n let result: ts.CallExpression | null = null\n\n // Extract schema data once — used both for devMode injections and the\n // unconditional __schemaHash (spec §7.4: hash ships in prod too).\n //\n // Resolution priority for each schema:\n // 1. preExtracted.* — used when the plugin's async hook has already\n // done cross-file + composition extraction (the production path).\n // 2. typeSources.* — file-local extraction against an alternate\n // source file (legacy path; covers cross-file but not composition).\n // 3. file-local — the test path: extract from `source` itself.\n //\n // When `preExtracted` is provided, treat it as authoritative even\n // when the value is `null` (the resolver was run and found\n // nothing) — falling back to local extraction would mask the\n // resolver's \"not extractable\" verdict.\n // `msgSchema` previously computed here; uses the pre-hoisted value.\n const msgSchema = hoistedMsgSchema\n // `msgAnnotations` previously computed here; uses the pre-hoisted\n // value so the module + the inline `computeSchemaHash` call see\n // the same input.\n const msgAnnotations = hoistedMsgAnnotations\n // `stateSchema` was previously computed here; it now uses the\n // pre-hoisted value (file-level inputs only). The `__stateSchema`\n // emission migrated to `stateSchemaModule` via the registry\n // bridge — the inline `injectStateSchema` call below deletes.\n const stateSchema = hoistedStateSchema\n\n const shouldEmitAgentMetadata = devMode || emitAgentMetadata\n if (shouldEmitAgentMetadata) {\n // __msgSchema: migrated to msgSchemaModule (v2c/decomp-5).\n // __msgAnnotations: migrated to msgAnnotationsModule (v2c/decomp-4).\n // __stateSchema: migrated to stateSchemaModule (v2c/decomp-3).\n // __effectSchema: migrated to msgSchemaModule (handles both\n // the Msg and Effect discriminated-union shapes since they\n // share the same wire format).\n const effectSchema = hoistedEffectSchema\n void effectSchema // referenced by hoistedEffectSchema's narrow scope; the\n // cache snapshot below reads msgSchema directly.\n // Note: binding descriptors are no longer emitted on the\n // component def. They're now collected at runtime by walking\n // event-handler arrows that the `tagEventHandlerSends` pass\n // wrapped with `__lluiVariants` metadata. See\n // `binding-descriptors.ts` (compiler) and the matching\n // `@llui/dom binding-descriptors.ts` (runtime registry).\n\n // Populate compiler cache — preSource and msgMaskMap are known now;\n // postSource is filled in after the full output is assembled.\n const cachedComponentName = extractComponentNameFromConfig(node)\n if (cachedComponentName) {\n const preSource = extractViewBody(source) ?? ''\n const msgMaskMap: Record<string, number> = {}\n for (const [path, bit] of fieldBits) {\n msgMaskMap[path] = bit\n }\n compilerCache.set(cachedComponentName, {\n preSource,\n postSource: '',\n msgMaskMap,\n bindingSources: [],\n })\n }\n }\n // v2c §2 bridge: registry-emission splicing replaces the inline\n // `injectComponentMeta` here. `componentMetaModule` is registered\n // when `devMode` is true, so the dev-mode gating semantics match\n // the prior `if (devMode)` guard. When `devMode` is false the\n // registry is empty and this call is a no-op.\n result = applyRegistryEmissions(result ?? node, node)\n\n // __schemaHash: migrated to schemaHashModule (v2c/decomp-5).\n // When shouldEmitAgentMetadata is true, schemaHashModule is in\n // the active module list and produces the emission via the\n // bridge. Out-of-agent-mode files don't emit __schemaHash today\n // either (the monolith's inline path was always-on, but the\n // hash only matters when the runtime is in agent mode — see\n // agent spec §12.3). Aligned during the migration.\n //\n // The `msgSchema` / `stateSchema` / `msgAnnotations` variables\n // remain in scope so they can feed the cache snapshot below.\n void msgSchema\n void stateSchema\n void msgAnnotations\n\n // `__lluiCompilerEmitted` + `__compilerVersion` migrated to\n // `compilerStampModule` (v2c/decomp-10). They flow through the\n // same `applyRegistryEmissions` splice as every other registry\n // contribution; the umbrella now contains zero inline injectors.\n if (result) {\n if (hasPos) edits.push({ start: origStart, end: origEnd, replacement: '' })\n return ts.visitEachChild(result, visitor, undefined!)\n }\n }\n\n return ts.visitEachChild(node, visitor, undefined!)\n }\n\n let transformed = ts.visitNode(sourceFile, visitor) as ts.SourceFile\n\n // Pass 3: Clean up imports — use the old cleanupImports approach\n // which operates on the transformed SourceFile safely\n const safeToRemove = new Set([...compiledHelpers].filter((h) => !bailedHelpers.has(h)))\n transformed = cleanupImports(\n transformed,\n lluiImport,\n importedHelpers,\n safeToRemove,\n usesElSplit,\n usesElTemplate,\n usesMemo,\n usesApplyBinding,\n usesCloneStaticTemplate,\n scopeRegistrationsInjected,\n f,\n )\n\n if (edits.length === 0) {\n // No element-helper rewrites — but registry may still have\n // collected diagnostics (e.g. agent-rule errors on Msg variants\n // in a Msg-declaration-only file). Surface them so the adapter\n // can fail the build.\n if (registryResult.analysis.diagnostics.length > 0) {\n return { output: source, edits: [], diagnostics: registryResult.analysis.diagnostics }\n }\n return null\n }\n\n // Find component declarations for HMR and agent metadata\n const componentDecls =\n devMode || emitAgentMetadata ? findComponentDeclarations(sourceFile, lluiImport) : []\n\n // Build per-statement edits by comparing original vs transformed.\n // Only emit edits for statements that actually changed.\n // Untouched code keeps its original positions → accurate source maps.\n const finalEdits: TransformEdit[] = []\n const origStmts = sourceFile.statements\n const xfStmts = transformed.statements\n\n for (let i = 0; i < origStmts.length && i < xfStmts.length; i++) {\n const origStart = origStmts[i]!.getStart(sourceFile)\n const origEnd = origStmts[i]!.getEnd()\n const origText = source.slice(origStart, origEnd)\n\n let xfText: string\n try {\n xfText = printer.printNode(ts.EmitHint.Unspecified, xfStmts[i]!, transformed)\n } catch {\n // Synthetic nodes may fail to print individually — fall back to full reprint\n const { top: _top, bottom: _bottom } = devMode\n ? generateDevCode(componentDecls, mcpPort)\n : { top: '', bottom: '' }\n let output =\n (_top ? _top + '\\n' : '') + printer.printFile(transformed) + (_bottom ? '\\n' + _bottom : '')\n if (devMode || emitAgentMetadata) {\n output = appendCompilerCacheProps(output, componentDecls)\n }\n return {\n output,\n edits: [{ start: 0, end: source.length, replacement: output }],\n diagnostics: registryResult.analysis.diagnostics,\n }\n }\n\n // Compare ignoring trailing semicolons and whitespace (printer adds them)\n const origNorm = origText.trim().replace(/;$/, '')\n const xfNorm = xfText.trim().replace(/;$/, '')\n if (origNorm !== xfNorm) {\n // Match the original style: if the original didn't end with a semicolon,\n // strip the one the printer added\n const origHasSemi = origText.trimEnd().endsWith(';')\n const replacement = origHasSemi ? xfText : xfText.replace(/;(\\s*)$/, '$1')\n finalEdits.push({ start: origStart, end: origEnd, replacement })\n }\n }\n\n // Dev setup: enable* must run BEFORE user's mountApp (top of file),\n // but import.meta.hot.accept needs to reference user's component vars\n // (bottom of file). So split the injection.\n if (devMode) {\n const { top, bottom } = generateDevCode(componentDecls, mcpPort)\n if (top) finalEdits.push({ start: 0, end: 0, replacement: top + '\\n' })\n if (bottom)\n finalEdits.push({ start: source.length, end: source.length, replacement: '\\n' + bottom })\n }\n\n if (finalEdits.length === 0) {\n // No rewrites — but registry may still have collected diagnostics\n // (e.g. bitmask-overflow on an otherwise-clean file). Surface them\n // so the adapter can fail the build.\n if (registryResult.analysis.diagnostics.length > 0) {\n return { output: source, edits: [], diagnostics: registryResult.analysis.diagnostics }\n }\n return null\n }\n\n // Build the full output by applying edits (for backward compat)\n const sorted = [...finalEdits].sort((a, b) => b.start - a.start)\n let output = source\n for (const edit of sorted) {\n output = output.slice(0, edit.start) + edit.replacement + output.slice(edit.end)\n }\n\n // After output is assembled, update postSource in cache and emit non-enumerable props\n if ((devMode || emitAgentMetadata) && componentDecls.length > 0) {\n const cacheProps = appendCompilerCacheProps(output, componentDecls)\n if (cacheProps !== output) {\n output = cacheProps\n }\n }\n\n return { output, edits: finalEdits, diagnostics: registryResult.analysis.diagnostics }\n}\n\n// ── HMR ──────────────────────────────────────────────────────────\n\nfunction generateDevCode(\n components: Array<{ varName: string; componentName: string }>,\n mcpPort: number | null,\n): { top: string; bottom: string } {\n if (components.length === 0) {\n return {\n top: '',\n bottom: `if (import.meta.hot) {\\n import.meta.hot.accept()\\n}`,\n }\n }\n\n const relayImport = mcpPort !== null ? ', startRelay as __startRelay' : ''\n const relayCall = mcpPort !== null ? `\\n__startRelay(${mcpPort})` : ''\n\n const top = `\nimport { enableHmr as __enableHmr, replaceComponent as __replaceComponent } from '@llui/dom/hmr'\nimport { enableDevTools as __enableDevTools${relayImport} } from '@llui/dom/devtools'\n__enableHmr()\n__enableDevTools()${relayCall}\n`.trim()\n\n const replaceCalls = components\n .map(({ varName, componentName }) => ` __replaceComponent(\"${componentName}\", ${varName})`)\n .join('\\n')\n\n // HMR auto-connect: when the Vite plugin detects that @llui/mcp's\n // active marker file exists or appears, it sends `llui:mcp-ready`\n // with the MCP bridge port. We forward that to __lluiConnect so the\n // browser connects automatically — no console gymnastics, no retry\n // spam, regardless of whether MCP or Vite started first.\n const mcpHmrHandler =\n mcpPort !== null\n ? `\n import.meta.hot.on('llui:mcp-ready', (data) => {\n if (typeof globalThis.__lluiConnect === 'function') {\n globalThis.__lluiConnect(data?.port)\n }\n })`\n : ''\n\n const bottom = `\nif (import.meta.hot) {\n import.meta.hot.accept(() => {\n${replaceCalls}\n })${mcpHmrHandler}\n}\n`.trim()\n\n return { top, bottom }\n}\n\n/** Find all component() calls and extract the variable name and component name */\nfunction findComponentDeclarations(\n sf: ts.SourceFile,\n lluiImport: ts.ImportDeclaration,\n): Array<{ varName: string; componentName: string }> {\n const result: Array<{ varName: string; componentName: string }> = []\n\n function visit(node: ts.Node): void {\n // Match: const Foo = component({ name: 'Foo', ... })\n if (\n ts.isVariableDeclaration(node) &&\n ts.isIdentifier(node.name) &&\n node.initializer &&\n ts.isCallExpression(node.initializer) &&\n isComponentCall(node.initializer, lluiImport)\n ) {\n const varName = node.name.text\n const config = node.initializer.arguments[0]\n if (config && ts.isObjectLiteralExpression(config)) {\n for (const prop of config.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'name' &&\n ts.isStringLiteral(prop.initializer)\n ) {\n result.push({ varName, componentName: prop.initializer.text })\n }\n }\n }\n }\n ts.forEachChild(node, visit)\n }\n\n visit(sf)\n return result\n}\n\n// ── Helpers ──────────────────────────────────────────────────────\n\nfunction findLluiImport(sf: ts.SourceFile): ts.ImportDeclaration | null {\n for (const stmt of sf.statements) {\n if (\n ts.isImportDeclaration(stmt) &&\n ts.isStringLiteral(stmt.moduleSpecifier) &&\n stmt.moduleSpecifier.text === '@llui/dom'\n ) {\n return stmt\n }\n }\n return null\n}\n\nfunction getImportedHelpers(imp: ts.ImportDeclaration): Map<string, string> {\n const map = new Map<string, string>()\n const clause = imp.importClause\n if (!clause || !clause.namedBindings || !ts.isNamedImports(clause.namedBindings)) return map\n\n for (const spec of clause.namedBindings.elements) {\n const original = (spec.propertyName ?? spec.name).text\n const local = spec.name.text\n if (ELEMENT_HELPERS.has(original)) {\n map.set(local, original)\n }\n }\n return map\n}\n\nfunction hasComponentDef(sf: ts.SourceFile, lluiImport: ts.ImportDeclaration): boolean {\n let found = false\n function visit(node: ts.Node): void {\n if (found) return\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n found = true\n return\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return found\n}\n\n/**\n * Scan for `component({ view: (h) => ... })` arrow functions and collect\n * the identifier name used as the View-bundle parameter. When the user\n * writes `h.show(...)` / `h.text(...)` inside the view, the compiler treats\n * it the same as bare `show(...)` / `text(...)` for mask injection.\n */\nfunction collectViewHelperNames(sf: ts.SourceFile, lluiImport: ts.ImportDeclaration): Set<string> {\n const names = new Set<string>()\n function visit(node: ts.Node): void {\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n const arg = node.arguments[0]\n if (arg && ts.isObjectLiteralExpression(arg)) {\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'view' &&\n (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer))\n ) {\n const params = prop.initializer.parameters\n if (params.length >= 1) {\n const first = params[0]!\n if (ts.isIdentifier(first.name)) {\n names.add(first.name.text)\n }\n }\n }\n }\n }\n }\n // Also: any function parameter annotated as `View<...>` — covers extracted\n // view-functions like `function repoPage(h: View<State, Msg>, ...)`.\n if (\n ts.isParameter(node) &&\n node.type &&\n isViewTypeReference(node.type) &&\n ts.isIdentifier(node.name)\n ) {\n names.add(node.name.text)\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return names\n}\n\nfunction isViewTypeReference(t: ts.TypeNode): boolean {\n return ts.isTypeReferenceNode(t) && ts.isIdentifier(t.typeName) && t.typeName.text === 'View'\n}\n\n/**\n * Scan for `component({ view: ({ show, each, text, ... }) => ... })`\n * destructured parameters and return a map from the locally-bound name to\n * the primitive name it aliases. This lets users write the bare `show(...)` /\n * `text(...)` forms without importing them, while the compiler still\n * applies mask injection etc.\n *\n * view: ({ show, text: t }) => [...]\n * // returns { show → \"show\", t → \"text\" }\n */\nconst VIEW_HELPER_PRIMITIVES = new Set([\n 'show',\n 'branch',\n 'scope',\n 'each',\n 'text',\n 'memo',\n 'sample',\n 'selector',\n 'ctx',\n 'slice',\n 'send',\n])\n\nfunction collectViewHelperAliases(\n sf: ts.SourceFile,\n lluiImport: ts.ImportDeclaration,\n helperNames: Set<string>,\n): Map<string, string> {\n const aliases = new Map<string, string>()\n function addFromBindingPattern(pattern: ts.ObjectBindingPattern): void {\n for (const elem of pattern.elements) {\n // { show } → propertyName=undefined, name=show\n // { show: mySh } → propertyName=show, name=mySh\n const sourceName =\n elem.propertyName && ts.isIdentifier(elem.propertyName)\n ? elem.propertyName.text\n : ts.isIdentifier(elem.name)\n ? elem.name.text\n : null\n const localName = ts.isIdentifier(elem.name) ? elem.name.text : null\n if (sourceName && localName && VIEW_HELPER_PRIMITIVES.has(sourceName)) {\n aliases.set(localName, sourceName)\n }\n }\n }\n function visit(node: ts.Node): void {\n if (ts.isCallExpression(node) && isComponentCall(node, lluiImport)) {\n const arg = node.arguments[0]\n if (arg && ts.isObjectLiteralExpression(arg)) {\n for (const prop of arg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'view' &&\n (ts.isArrowFunction(prop.initializer) || ts.isFunctionExpression(prop.initializer))\n ) {\n const params = prop.initializer.parameters\n if (params.length >= 1) {\n const first = params[0]!\n if (ts.isObjectBindingPattern(first.name)) {\n addFromBindingPattern(first.name)\n }\n }\n }\n }\n }\n }\n // Also: function parameters like `(…, { show, text }: View<State, Msg>) => …`\n // on extracted helpers — allow the same destructuring ergonomics.\n if (\n ts.isParameter(node) &&\n node.type &&\n isViewTypeReference(node.type) &&\n ts.isObjectBindingPattern(node.name)\n ) {\n addFromBindingPattern(node.name)\n }\n // Also: `const { show, text } = h` assignments where `h` is a known\n // helper binding — lets helpers destructure once at the top of the\n // function body.\n if (\n ts.isVariableDeclaration(node) &&\n ts.isObjectBindingPattern(node.name) &&\n node.initializer &&\n ts.isIdentifier(node.initializer) &&\n helperNames.has(node.initializer.text)\n ) {\n addFromBindingPattern(node.name)\n }\n ts.forEachChild(node, visit)\n }\n visit(sf)\n return aliases\n}\n\nexport function isComponentCall(\n node: ts.CallExpression,\n lluiImport: ts.ImportDeclaration,\n): boolean {\n if (!ts.isIdentifier(node.expression)) return false\n const name = node.expression.text\n if (name !== 'component') return false\n // Verify it's from the llui import\n const clause = lluiImport.importClause\n if (!clause?.namedBindings || !ts.isNamedImports(clause.namedBindings)) return false\n return clause.namedBindings.elements.some(\n (s) => s.name.text === 'component' || (s.propertyName && s.propertyName.text === 'component'),\n )\n}\n\n// ── Pass 2: Mask injection ───────────────────────────────────────\n\n/**\n * Match a call expression against a primitive name across all three binding\n * forms:\n * - bare imported identifier: `name(...)` where `name` was imported from @llui/dom\n * - destructured alias: `name(...)` where `name` is bound via\n * `view: (_, { name }) => ...` (or `{ name: alias }`)\n * - member call: `<h>.name(...)` where `<h>` is the 2nd view parameter\n *\n * The compiler treats all three identically for mask injection / each()\n * optimization purposes.\n */\nexport function isHelperCall(\n expr: ts.Expression,\n name: string,\n helperNames: Set<string>,\n aliases?: Map<string, string>,\n): boolean {\n if (ts.isIdentifier(expr)) {\n if (expr.text === name) return true\n if (aliases && aliases.get(expr.text) === name) return true\n return false\n }\n if (\n ts.isPropertyAccessExpression(expr) &&\n ts.isIdentifier(expr.expression) &&\n helperNames.has(expr.expression.text) &&\n ts.isIdentifier(expr.name) &&\n expr.name.text === name\n ) {\n return true\n }\n return false\n}\n\n// text() `__mask` injection — migrated to `textMaskModule`\n// (v2c/decomp-15). Module fires top-down (transformCallEnter); the\n// visitor sees the masked form.\n\n// `__mask` injection on each()/branch()/scope()/show() — migrated to\n// `structuralMaskModule` (v2c/decomp-14). Module fires top-down\n// (transformCallEnter) so the visitor sees the masked options literal.\n\n// ── Pass 3: Import cleanup ───────────────────────────────────────\n\nfunction cleanupImports(\n sf: ts.SourceFile,\n lluiImport: ts.ImportDeclaration,\n _helpers: Map<string, string>,\n compiled: Set<string>,\n usesElSplit: boolean,\n usesElTemplate: boolean,\n usesMemo: boolean,\n usesApplyBinding: boolean,\n usesCloneStaticTemplate: boolean,\n usesRegisterScopeVariants: boolean,\n f: ts.NodeFactory,\n): ts.SourceFile {\n if (\n compiled.size === 0 &&\n !usesElTemplate &&\n !usesElSplit &&\n !usesMemo &&\n !usesApplyBinding &&\n !usesCloneStaticTemplate &&\n !usesRegisterScopeVariants\n )\n return sf\n\n const clause = lluiImport.importClause\n if (!clause?.namedBindings || !ts.isNamedImports(clause.namedBindings)) return sf\n\n const remaining = clause.namedBindings.elements.filter((spec) => !compiled.has(spec.name.text))\n\n const hasElSplit = clause.namedBindings.elements.some((s) => s.name.text === 'elSplit')\n if (!hasElSplit && usesElSplit) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('elSplit')))\n }\n\n const hasElTemplate = clause.namedBindings.elements.some((s) => s.name.text === 'elTemplate')\n if (!hasElTemplate && usesElTemplate) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('elTemplate')))\n }\n\n const hasCloneStaticTemplate = clause.namedBindings.elements.some(\n (s) => s.name.text === '__cloneStaticTemplate',\n )\n if (!hasCloneStaticTemplate && usesCloneStaticTemplate) {\n remaining.push(\n f.createImportSpecifier(false, undefined, f.createIdentifier('__cloneStaticTemplate')),\n )\n }\n\n const hasMemo = clause.namedBindings.elements.some((s) => s.name.text === 'memo')\n if (!hasMemo && usesMemo) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('memo')))\n }\n\n if (usesApplyBinding) {\n if (!clause.namedBindings.elements.some((s) => s.name.text === '__runPhase2')) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('__runPhase2')))\n }\n if (!clause.namedBindings.elements.some((s) => s.name.text === '__handleMsg')) {\n remaining.push(f.createImportSpecifier(false, undefined, f.createIdentifier('__handleMsg')))\n }\n }\n\n // The connect-pattern injector (binding-descriptors.ts) emits\n // `__registerScopeVariants([...])` calls; ensure the runtime\n // helper is imported when at least one was inserted.\n const hasRegisterScopeVariants = clause.namedBindings.elements.some(\n (s) => s.name.text === '__registerScopeVariants',\n )\n if (!hasRegisterScopeVariants && usesRegisterScopeVariants) {\n remaining.push(\n f.createImportSpecifier(false, undefined, f.createIdentifier('__registerScopeVariants')),\n )\n }\n\n const newBindings = f.createNamedImports(remaining)\n const newClause = f.createImportClause(false, undefined, newBindings)\n const newImportDecl = f.createImportDeclaration(undefined, newClause, lluiImport.moduleSpecifier)\n\n let replaced = false\n const statements = sf.statements.map((stmt) => {\n if (\n !replaced &&\n ts.isImportDeclaration(stmt) &&\n ts.isStringLiteral(stmt.moduleSpecifier) &&\n stmt.moduleSpecifier.text === '@llui/dom' &&\n !stmt.importClause?.isTypeOnly\n ) {\n replaced = true\n return newImportDecl\n }\n return stmt\n })\n\n return f.updateSourceFile(sf, statements as unknown as ts.Statement[])\n}\n\n// ── __msgSchema injection ────────────────────────────────────────\n\n// `injectStateSchema` was the inline emitter for `__stateSchema`.\n// Migrated to `stateSchemaModule` + the registry bridge (v2c/decomp-3).\n// Behavior preserves end-to-end via the existing transform/HMR tests.\n\n// `stateTypeToLiteral` lives in `state-schema.ts` alongside `StateType`.\n\n// `injectComponentMeta` was the inline emitter for `__componentMeta`.\n// Migrated to `componentMetaModule` + the registry bridge in this\n// commit. Behavior preserves end-to-end via `registry-bridge.test.ts`.\n\n// `injectMsgSchema`, `injectEffectSchema`, `injectSchemaHash`,\n// `buildFieldDescriptorExpr`, `emitEnumValue` all migrated to\n// `msgSchemaModule` / `schemaHashModule` (v2c/decomp-5). The\n// literal builders live in `msg-schema.ts` alongside the schema\n// extraction logic.\n\n// `__lluiCompilerEmitted` + `__compilerVersion` integrity marker\n// migrated to `compilerStampModule` (v2c/decomp-10). Always-on through\n// the registry bridge — fires regardless of agent/dev mode.\n\n// ── Per-item accessor detection ──────────────────────────────────\n\n// Item selector deduplication — migrated to `itemDedupModule`\n// (v2c/decomp-16). Module fires top-down (transformCallEnter); the\n// visitor sees the post-dedup form.\n\n// Auto-memoize each() items accessor — migrated to `eachMemoModule`\n// (v2c/decomp-13). `tryWrapEachItemsWithMemo`, `accessorAllocatesArray`\n// + `ALLOCATING_METHODS` now live in `modules/each-memo.ts`.\n\n// ── Subtree collapse: nested elements → elTemplate ──────────────\n\nconst NON_DELEGATION_HELPERS = new Set(['sample', 'item', 'memo', 'text', 'unsafeHtml'])\n\nexport function computeAccessorMask(\n accessor: ts.ArrowFunction | ts.FunctionExpression | ts.FunctionDeclaration,\n fieldBits: Map<string, number>,\n visited: Set<ts.Node> = new Set(),\n fieldBitsHi?: Map<string, number>,\n): { mask: number; maskHi: number; readsState: boolean } {\n if (visited.has(accessor)) return { mask: 0, maskHi: 0, readsState: false }\n visited.add(accessor)\n\n if (accessor.parameters.length === 0)\n return { mask: 0xffffffff | 0, maskHi: 0, readsState: false }\n\n const paramName = accessor.parameters[0]!.name\n if (!ts.isIdentifier(paramName)) return { mask: 0xffffffff | 0, maskHi: 0, readsState: false }\n\n // FunctionDeclaration always has a body (we never resolve overloads here);\n // ArrowFunction's body may be a single expression. Both shapes are walked\n // identically by ts.forEachChild, so no special-casing is needed below.\n if (!accessor.body) return { mask: 0xffffffff | 0, maskHi: 0, readsState: false }\n\n const stateParam = paramName.text\n let mask = 0\n let maskHi = 0\n let readsState = false\n\n // `inNestedFn` gates only the delegation-recursion. Property-access\n // path extraction happens everywhere — inner-arrow callbacks like\n // `s.items.filter((i) => i.includes(s.filter))` close over our\n // state, and their `s.filter` reads contribute to the mask.\n function walk(node: ts.Node, inNestedFn: boolean): void {\n // `node.parent` can be undefined for synthetic nodes produced by\n // earlier AST-transform passes (the row-factory rewrite and the\n // per-item heuristic both build new sub-trees whose inner nodes\n // have no parent pointers). Guard every parent access below —\n // crashing the whole build on a perfectly valid reactive accessor\n // like `text((_s) => \\`$${item.x.toLocaleString()}\\`)` was how\n // this bug first surfaced in the persistent-layout example work.\n const parent = node.parent\n if (ts.isIdentifier(node) && node.text === stateParam && (!parent || !ts.isParameter(parent))) {\n readsState = true\n }\n if (ts.isPropertyAccessExpression(node)) {\n // When there's no parent we can't tell if this is the top of a\n // chain, so we resolve from here. That's still correct for mask\n // accounting: `resolveChain` on an inner PAE produces a prefix\n // of the outer chain, which maps to the same `fieldBits` bit\n // via the prefix-match loop below. Worst case we resolve the\n // same chain twice (`|=` is idempotent); best case we'd have\n // resolved once from the real top. Correctness unchanged.\n if (!parent || !ts.isPropertyAccessExpression(parent)) {\n const chain = resolveChain(node, stateParam)\n if (chain) {\n const bit = fieldBits.get(chain)\n const bitHi = fieldBitsHi?.get(chain)\n if (bit !== undefined) {\n mask |= bit\n } else if (bitHi !== undefined) {\n maskHi |= bitHi\n } else {\n // Match paths that overlap our chain in either direction:\n // - `path` extends `chain` — fieldBits has finer-grained paths\n // than we're reading (e.g. chain='user', fieldBits has\n // 'user.email').\n // - `chain` extends `path` — we're reading deeper than what\n // fieldBits tracks (e.g. chain='items.filter' from\n // `s.items.filter(...)`, fieldBits has 'items'). Both ends\n // must mask in: a change to `items` invalidates anything\n // downstream of it.\n for (const [path, b] of fieldBits) {\n if (path === chain || path.startsWith(chain + '.') || chain.startsWith(path + '.')) {\n mask |= b\n }\n }\n if (fieldBitsHi) {\n for (const [path, b] of fieldBitsHi) {\n if (\n path === chain ||\n path.startsWith(chain + '.') ||\n chain.startsWith(path + '.')\n ) {\n maskHi |= b\n }\n }\n }\n }\n }\n }\n }\n // Delegation: `helper(s)` where `s` matches our state param.\n // Recurse into the helper's body so its state-path reads\n // contribute to our mask. Only at top level — inside a nested\n // function body, `s` may be shadowed and the call isn't\n // unambiguously handing our state in.\n if (!inNestedFn && ts.isCallExpression(node) && ts.isIdentifier(node.expression)) {\n const calleeName = node.expression.text\n if (!NON_DELEGATION_HELPERS.has(calleeName)) {\n const arg0 = node.arguments[0]\n if (arg0 && ts.isIdentifier(arg0) && arg0.text === stateParam) {\n const resolved = resolveAccessorBody(node.expression)\n if (resolved) {\n const inner = computeAccessorMask(resolved, fieldBits, visited, fieldBitsHi)\n mask |= inner.mask\n maskHi |= inner.maskHi\n if (inner.readsState) readsState = true\n }\n }\n }\n }\n const enteringNested =\n ts.isArrowFunction(node) || ts.isFunctionExpression(node) || ts.isFunctionDeclaration(node)\n ts.forEachChild(node, (child) => walk(child, inNestedFn || enteringNested))\n }\n\n walk(accessor.body, false)\n\n if (mask === 0 && maskHi === 0 && readsState) {\n return { mask: 0xffffffff | 0, maskHi: 0, readsState: true }\n }\n return { mask, maskHi, readsState }\n}\n\nfunction resolveChain(node: ts.PropertyAccessExpression, paramName: string): string | null {\n const parts: string[] = []\n let current: ts.Expression = node\n\n while (ts.isPropertyAccessExpression(current)) {\n parts.unshift(current.name.text)\n current = current.expression\n }\n\n if (!ts.isIdentifier(current) || current.text !== paramName) return null\n if (parts.length > 2) return parts.slice(0, 2).join('.')\n return parts.join('.')\n}\n\n// ── Compiler cache helpers ────────────────────────────────────────\n\n/**\n * Extract the view function body (the value of the `view:` property) from\n * a component() config object literal. Uses a regex heuristic — good enough\n * for round-tripping source for dev/agent tools.\n */\nexport function extractViewBody(code: string): string | null {\n const match =\n /\\bview\\s*:\\s*([\\s\\S]*?)(?=,\\s*(?:onEffect|update|init|name|onMsg)\\s*:|}\\s*\\))/m.exec(code)\n return match?.[1]?.trim() ?? null\n}\n\n/**\n * Extract the component `name:` string literal from a component() call's\n * first argument object literal in the source text.\n */\nexport function extractComponentNameFromConfig(node: ts.CallExpression): string | null {\n const configArg = node.arguments[0]\n if (!configArg || !ts.isObjectLiteralExpression(configArg)) return null\n for (const prop of configArg.properties) {\n if (\n ts.isPropertyAssignment(prop) &&\n ts.isIdentifier(prop.name) &&\n prop.name.text === 'name' &&\n ts.isStringLiteral(prop.initializer)\n ) {\n return prop.initializer.text\n }\n }\n return null\n}\n\n/**\n * Generate Object.defineProperty calls for __preSource, __postSource,\n * __msgMaskMap, and __bindingSources on a component variable. These are\n * non-enumerable so they don't appear in JSON.stringify(componentDef) but are\n * visible to devtools.\n */\nexport function generateCompilerCacheProps(varName: string, componentName: string): string {\n const entry = compilerCache.get(componentName)\n if (!entry) return ''\n return (\n `\\nObject.defineProperty(${varName}, '__preSource', { value: ${JSON.stringify(entry.preSource)}, enumerable: false, configurable: true })` +\n `\\nObject.defineProperty(${varName}, '__postSource', { value: ${JSON.stringify(entry.postSource)}, enumerable: false, configurable: true })` +\n `\\nObject.defineProperty(${varName}, '__msgMaskMap', { value: ${JSON.stringify(entry.msgMaskMap)}, enumerable: false, configurable: true })` +\n `\\nObject.defineProperty(${varName}, '__bindingSources', { value: ${JSON.stringify(entry.bindingSources)}, enumerable: false, configurable: true })`\n )\n}\n\n/**\n * After the full output string is assembled, update each cached component's\n * postSource (extract view body from the transformed output), then append\n * Object.defineProperty calls for all four compiler-cache properties.\n */\nexport function appendCompilerCacheProps(\n output: string,\n componentDecls: Array<{ varName: string; componentName: string }>,\n): string {\n let result = output\n for (const { varName, componentName } of componentDecls) {\n const existing = compilerCache.get(componentName)\n if (!existing) continue\n // Update the cache entry with the post-transform view body\n const postSource = extractViewBody(output) ?? ''\n compilerCache.set(componentName, { ...existing, postSource })\n // Append non-enumerable property definitions\n result += generateCompilerCacheProps(varName, componentName)\n }\n return result\n}\n"]}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The @llui/compiler version stamped on every emitted ComponentDef.
3
+ * Read at runtime by `assertCompilerCompatibility()` in @llui/dom's
4
+ * update-loop. v2b §5.
5
+ *
6
+ * Keep this in sync with `package.json` — the publish script (Phase 7
7
+ * `scripts/publish.sh`) reads from package.json so a drift is caught at
8
+ * release time.
9
+ */
10
+ export declare const COMPILER_VERSION = "0.3.0";
11
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,eAAO,MAAM,gBAAgB,UAAU,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * The @llui/compiler version stamped on every emitted ComponentDef.
3
+ * Read at runtime by `assertCompilerCompatibility()` in @llui/dom's
4
+ * update-loop. v2b §5.
5
+ *
6
+ * Keep this in sync with `package.json` — the publish script (Phase 7
7
+ * `scripts/publish.sh`) reads from package.json so a drift is caught at
8
+ * release time.
9
+ */
10
+ export const COMPILER_VERSION = '0.3.0';
11
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../src/version.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAA","sourcesContent":["/**\n * The @llui/compiler version stamped on every emitted ComponentDef.\n * Read at runtime by `assertCompilerCompatibility()` in @llui/dom's\n * update-loop. v2b §5.\n *\n * Keep this in sync with `package.json` — the publish script (Phase 7\n * `scripts/publish.sh`) reads from package.json so a drift is caught at\n * release time.\n */\nexport const COMPILER_VERSION = '0.3.0'\n"]}
package/package.json ADDED
@@ -0,0 +1,47 @@
1
+ {
2
+ "name": "@llui/compiler",
3
+ "version": "0.3.0",
4
+ "type": "module",
5
+ "sideEffects": false,
6
+ "exports": {
7
+ ".": {
8
+ "types": "./dist/index.d.ts",
9
+ "import": "./dist/index.js"
10
+ }
11
+ },
12
+ "main": "./dist/index.js",
13
+ "types": "./dist/index.d.ts",
14
+ "files": [
15
+ "dist"
16
+ ],
17
+ "dependencies": {
18
+ "typescript": "^6.0.2"
19
+ },
20
+ "devDependencies": {
21
+ "@types/node": "^22.0.0"
22
+ },
23
+ "description": "LLui compiler engine — static analysis + emission. Build-tool-agnostic library consumed by @llui/vite-plugin.",
24
+ "keywords": [
25
+ "llui",
26
+ "compiler",
27
+ "typescript",
28
+ "static-analysis"
29
+ ],
30
+ "author": "Franco Ponticelli <franco.ponticelli@gmail.com>",
31
+ "license": "MIT",
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "git+https://github.com/fponticelli/llui.git",
35
+ "directory": "packages/compiler"
36
+ },
37
+ "bugs": {
38
+ "url": "https://github.com/fponticelli/llui/issues"
39
+ },
40
+ "homepage": "https://github.com/fponticelli/llui/tree/main/packages/compiler#readme",
41
+ "scripts": {
42
+ "build": "tsc -p tsconfig.build.json",
43
+ "check": "tsc --noEmit",
44
+ "lint": "eslint src",
45
+ "test": "vitest run"
46
+ }
47
+ }