@typecad/cuttlefish 0.1.0-alpha.1

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 (377) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +79 -0
  3. package/dist/api/board-types.d.ts +1 -0
  4. package/dist/api/board-types.js +4 -0
  5. package/dist/api/capabilities.d.ts +12 -0
  6. package/dist/api/capabilities.js +1 -0
  7. package/dist/api/config.d.ts +120 -0
  8. package/dist/api/config.js +7 -0
  9. package/dist/api/index.d.ts +5 -0
  10. package/dist/api/index.js +2 -0
  11. package/dist/api/schema/builder.d.ts +14 -0
  12. package/dist/api/schema/builder.js +15 -0
  13. package/dist/api/schema/index.d.ts +2 -0
  14. package/dist/api/schema/index.js +1 -0
  15. package/dist/api/schema/types.d.ts +257 -0
  16. package/dist/api/schema/types.js +4 -0
  17. package/dist/api/shared/async-runtime-static.d.ts +8 -0
  18. package/dist/api/shared/async-runtime-static.js +201 -0
  19. package/dist/api/shared/async-types.d.ts +42 -0
  20. package/dist/api/shared/async-types.js +8 -0
  21. package/dist/api/shared/board-resolver.d.ts +12 -0
  22. package/dist/api/shared/board-resolver.js +7 -0
  23. package/dist/api/shared/cpp-type-ir.d.ts +229 -0
  24. package/dist/api/shared/cpp-type-ir.js +672 -0
  25. package/dist/api/shared/display-adapter.d.ts +12 -0
  26. package/dist/api/shared/display-adapter.js +145 -0
  27. package/dist/api/shared/display-adapters/eink-mono.d.ts +2 -0
  28. package/dist/api/shared/display-adapters/eink-mono.js +53 -0
  29. package/dist/api/shared/display-adapters/sdl.d.ts +2 -0
  30. package/dist/api/shared/display-adapters/sdl.js +452 -0
  31. package/dist/api/shared/display-adapters/ssd1309.d.ts +2 -0
  32. package/dist/api/shared/display-adapters/ssd1309.js +136 -0
  33. package/dist/api/shared/display-adapters/st7796.d.ts +2 -0
  34. package/dist/api/shared/display-adapters/st7796.js +132 -0
  35. package/dist/api/shared/display-capabilities.d.ts +45 -0
  36. package/dist/api/shared/display-capabilities.js +54 -0
  37. package/dist/api/shared/display-op-ir.d.ts +62 -0
  38. package/dist/api/shared/display-op-ir.js +19 -0
  39. package/dist/api/shared/display-profile.d.ts +265 -0
  40. package/dist/api/shared/display-profile.js +338 -0
  41. package/dist/api/shared/graphics-strategy.d.ts +29 -0
  42. package/dist/api/shared/graphics-strategy.js +11 -0
  43. package/dist/api/shared/hal-op-ir.d.ts +393 -0
  44. package/dist/api/shared/hal-op-ir.js +18 -0
  45. package/dist/api/shared/index.d.ts +26 -0
  46. package/dist/api/shared/index.js +21 -0
  47. package/dist/api/shared/ir-core.d.ts +363 -0
  48. package/dist/api/shared/ir-core.js +8 -0
  49. package/dist/api/shared/ir-declarations.d.ts +201 -0
  50. package/dist/api/shared/ir-declarations.js +26 -0
  51. package/dist/api/shared/ir.d.ts +85 -0
  52. package/dist/api/shared/ir.js +13 -0
  53. package/dist/api/shared/platform-strategy.d.ts +402 -0
  54. package/dist/api/shared/platform-strategy.js +14 -0
  55. package/dist/api/shared/polyfill-helper-registry.d.ts +11 -0
  56. package/dist/api/shared/polyfill-helper-registry.js +86 -0
  57. package/dist/api/shared/polyfill-types.d.ts +33 -0
  58. package/dist/api/shared/polyfill-types.js +76 -0
  59. package/dist/api/shared/promise-runtime.d.ts +10 -0
  60. package/dist/api/shared/promise-runtime.js +244 -0
  61. package/dist/api/shared/snprintf-types.d.ts +29 -0
  62. package/dist/api/shared/snprintf-types.js +8 -0
  63. package/dist/api/shared/string-method-registry.d.ts +53 -0
  64. package/dist/api/shared/string-method-registry.js +168 -0
  65. package/dist/api/shared/toolchain-types.d.ts +63 -0
  66. package/dist/api/shared/toolchain-types.js +71 -0
  67. package/dist/api/shared/types.d.ts +50 -0
  68. package/dist/api/shared/types.js +6 -0
  69. package/dist/ast/parse.d.ts +2 -0
  70. package/dist/ast/parse.js +4 -0
  71. package/dist/cache.d.ts +26 -0
  72. package/dist/cache.js +95 -0
  73. package/dist/cli-utils.d.ts +37 -0
  74. package/dist/cli-utils.js +250 -0
  75. package/dist/cli.d.ts +2 -0
  76. package/dist/cli.js +635 -0
  77. package/dist/config-loader.d.ts +78 -0
  78. package/dist/config-loader.js +508 -0
  79. package/dist/config-schema.d.ts +233 -0
  80. package/dist/config-schema.js +83 -0
  81. package/dist/create/board-checklist.d.ts +2 -0
  82. package/dist/create/board-checklist.js +52 -0
  83. package/dist/create/board-codegen.d.ts +9 -0
  84. package/dist/create/board-codegen.js +238 -0
  85. package/dist/create/board-generators.d.ts +12 -0
  86. package/dist/create/board-generators.js +652 -0
  87. package/dist/create/board-spec.d.ts +640 -0
  88. package/dist/create/board-spec.js +215 -0
  89. package/dist/create/eslint-rules-template.d.ts +2 -0
  90. package/dist/create/eslint-rules-template.js +672 -0
  91. package/dist/create/index.d.ts +11 -0
  92. package/dist/create/index.js +8 -0
  93. package/dist/create/init-scaffold.d.ts +27 -0
  94. package/dist/create/init-scaffold.js +150 -0
  95. package/dist/create/init-templates.d.ts +24 -0
  96. package/dist/create/init-templates.js +379 -0
  97. package/dist/create/init-wizard.d.ts +8 -0
  98. package/dist/create/init-wizard.js +168 -0
  99. package/dist/debug/breakpoint-loader.d.ts +24 -0
  100. package/dist/debug/breakpoint-loader.js +137 -0
  101. package/dist/debug/index.d.ts +3 -0
  102. package/dist/debug/index.js +7 -0
  103. package/dist/debug/preprocessor.d.ts +9 -0
  104. package/dist/debug/preprocessor.js +214 -0
  105. package/dist/debug/types.d.ts +32 -0
  106. package/dist/debug/types.js +6 -0
  107. package/dist/diagnostics/diagnostics-report.d.ts +51 -0
  108. package/dist/diagnostics/diagnostics-report.js +333 -0
  109. package/dist/diagnostics/json-schema.d.ts +138 -0
  110. package/dist/diagnostics/json-schema.js +27 -0
  111. package/dist/diagnostics/md-writer.d.ts +10 -0
  112. package/dist/diagnostics/md-writer.js +336 -0
  113. package/dist/diagnostics/mermaid-builder.d.ts +65 -0
  114. package/dist/diagnostics/mermaid-builder.js +681 -0
  115. package/dist/emit/cpp-emitter.d.ts +6 -0
  116. package/dist/emit/cpp-emitter.js +48 -0
  117. package/dist/emit/emitters/class-emitter.d.ts +2 -0
  118. package/dist/emit/emitters/class-emitter.js +523 -0
  119. package/dist/emit/emitters/emitter-context.d.ts +174 -0
  120. package/dist/emit/emitters/emitter-context.js +1 -0
  121. package/dist/emit/emitters/entrypoint-synthesizer.d.ts +2 -0
  122. package/dist/emit/emitters/entrypoint-synthesizer.js +175 -0
  123. package/dist/emit/emitters/function-emitter-impl.d.ts +19 -0
  124. package/dist/emit/emitters/function-emitter-impl.js +428 -0
  125. package/dist/emit/emitters/line-appender.d.ts +15 -0
  126. package/dist/emit/emitters/line-appender.js +344 -0
  127. package/dist/emit/emitters/namespace-emitter.d.ts +2 -0
  128. package/dist/emit/emitters/namespace-emitter.js +324 -0
  129. package/dist/emit/emitters/output-finalizer.d.ts +4 -0
  130. package/dist/emit/emitters/output-finalizer.js +267 -0
  131. package/dist/emit/emitters/setup.d.ts +3 -0
  132. package/dist/emit/emitters/setup.js +851 -0
  133. package/dist/emit/emitters/top-level-prep.d.ts +2 -0
  134. package/dist/emit/emitters/top-level-prep.js +706 -0
  135. package/dist/emit/emitters/type-decl-emitter.d.ts +2 -0
  136. package/dist/emit/emitters/type-decl-emitter.js +251 -0
  137. package/dist/emit/emitters/ui-emitter.d.ts +21 -0
  138. package/dist/emit/emitters/ui-emitter.js +564 -0
  139. package/dist/emit/enum-emitter.d.ts +1 -0
  140. package/dist/emit/enum-emitter.js +1 -0
  141. package/dist/emit/expression-renderer.d.ts +283 -0
  142. package/dist/emit/expression-renderer.js +1477 -0
  143. package/dist/emit/native-helpers-emitter.d.ts +11 -0
  144. package/dist/emit/native-helpers-emitter.js +34 -0
  145. package/dist/emit/route-hal-op.d.ts +5 -0
  146. package/dist/emit/route-hal-op.js +13 -0
  147. package/dist/emit/snprintf-helpers.d.ts +17 -0
  148. package/dist/emit/snprintf-helpers.js +462 -0
  149. package/dist/emit/statement-renderer.d.ts +189 -0
  150. package/dist/emit/statement-renderer.js +948 -0
  151. package/dist/emit/utils/async-state-machine.d.ts +42 -0
  152. package/dist/emit/utils/async-state-machine.js +343 -0
  153. package/dist/emit/utils/comment-helpers.d.ts +20 -0
  154. package/dist/emit/utils/comment-helpers.js +31 -0
  155. package/dist/emit/utils/cpp-helpers.d.ts +47 -0
  156. package/dist/emit/utils/cpp-helpers.js +85 -0
  157. package/dist/emit/utils/include-resolver.d.ts +58 -0
  158. package/dist/emit/utils/include-resolver.js +155 -0
  159. package/dist/emit/utils/index.d.ts +8 -0
  160. package/dist/emit/utils/index.js +12 -0
  161. package/dist/emit/utils/type-inference.d.ts +159 -0
  162. package/dist/emit/utils/type-inference.js +559 -0
  163. package/dist/eslint-check.d.ts +10 -0
  164. package/dist/eslint-check.js +102 -0
  165. package/dist/framework-package.d.ts +10 -0
  166. package/dist/framework-package.js +58 -0
  167. package/dist/framework-registry.d.ts +39 -0
  168. package/dist/framework-registry.js +30 -0
  169. package/dist/incremental-cache.d.ts +116 -0
  170. package/dist/incremental-cache.js +335 -0
  171. package/dist/ir/adc-range-validation.d.ts +11 -0
  172. package/dist/ir/adc-range-validation.js +250 -0
  173. package/dist/ir/ast-node-utils.d.ts +8 -0
  174. package/dist/ir/ast-node-utils.js +32 -0
  175. package/dist/ir/board-pin-utils.d.ts +13 -0
  176. package/dist/ir/board-pin-utils.js +65 -0
  177. package/dist/ir/board-resolver.d.ts +36 -0
  178. package/dist/ir/board-resolver.js +437 -0
  179. package/dist/ir/build-ir-state.d.ts +167 -0
  180. package/dist/ir/build-ir-state.js +306 -0
  181. package/dist/ir/build-ir.d.ts +2 -0
  182. package/dist/ir/build-ir.js +808 -0
  183. package/dist/ir/call-graph.d.ts +35 -0
  184. package/dist/ir/call-graph.js +194 -0
  185. package/dist/ir/compile-time-only.d.ts +2 -0
  186. package/dist/ir/compile-time-only.js +16 -0
  187. package/dist/ir/declaration-builders.d.ts +9 -0
  188. package/dist/ir/declaration-builders.js +608 -0
  189. package/dist/ir/entry-points.d.ts +30 -0
  190. package/dist/ir/entry-points.js +191 -0
  191. package/dist/ir/expression-to-ir.d.ts +5 -0
  192. package/dist/ir/expression-to-ir.js +2249 -0
  193. package/dist/ir/extract-property-chain.d.ts +10 -0
  194. package/dist/ir/extract-property-chain.js +30 -0
  195. package/dist/ir/feature-prescan.d.ts +3 -0
  196. package/dist/ir/feature-prescan.js +43 -0
  197. package/dist/ir/feature-registry.d.ts +30 -0
  198. package/dist/ir/feature-registry.js +816 -0
  199. package/dist/ir/filter.d.ts +7 -0
  200. package/dist/ir/filter.js +85 -0
  201. package/dist/ir/function-builder.d.ts +19 -0
  202. package/dist/ir/function-builder.js +670 -0
  203. package/dist/ir/hal/hal-emitter.d.ts +62 -0
  204. package/dist/ir/hal/hal-emitter.js +735 -0
  205. package/dist/ir/hal/hal-parser.d.ts +61 -0
  206. package/dist/ir/hal/hal-parser.js +473 -0
  207. package/dist/ir/hal/hal-plugins.d.ts +34 -0
  208. package/dist/ir/hal/hal-plugins.js +706 -0
  209. package/dist/ir/hal-resolver.d.ts +5 -0
  210. package/dist/ir/hal-resolver.js +5 -0
  211. package/dist/ir/heap-analysis.d.ts +8 -0
  212. package/dist/ir/heap-analysis.js +350 -0
  213. package/dist/ir/heap-array-validation.d.ts +24 -0
  214. package/dist/ir/heap-array-validation.js +29 -0
  215. package/dist/ir/identifier-collector.d.ts +18 -0
  216. package/dist/ir/identifier-collector.js +439 -0
  217. package/dist/ir/interrupt-analysis.d.ts +39 -0
  218. package/dist/ir/interrupt-analysis.js +467 -0
  219. package/dist/ir/memory-budget-validation.d.ts +10 -0
  220. package/dist/ir/memory-budget-validation.js +86 -0
  221. package/dist/ir/namespace-builder.d.ts +7 -0
  222. package/dist/ir/namespace-builder.js +152 -0
  223. package/dist/ir/ownership-analysis.d.ts +9 -0
  224. package/dist/ir/ownership-analysis.js +1207 -0
  225. package/dist/ir/peripheral-ownership.d.ts +3 -0
  226. package/dist/ir/peripheral-ownership.js +152 -0
  227. package/dist/ir/peripheral-symbols.d.ts +7 -0
  228. package/dist/ir/peripheral-symbols.js +57 -0
  229. package/dist/ir/peripheral-usage.d.ts +54 -0
  230. package/dist/ir/peripheral-usage.js +691 -0
  231. package/dist/ir/peripheral-validation.d.ts +8 -0
  232. package/dist/ir/peripheral-validation.js +77 -0
  233. package/dist/ir/pin-alias-conflict.d.ts +4 -0
  234. package/dist/ir/pin-alias-conflict.js +34 -0
  235. package/dist/ir/pin-capability-validation.d.ts +6 -0
  236. package/dist/ir/pin-capability-validation.js +413 -0
  237. package/dist/ir/pin-mode-validation.d.ts +10 -0
  238. package/dist/ir/pin-mode-validation.js +301 -0
  239. package/dist/ir/pin-safety.d.ts +11 -0
  240. package/dist/ir/pin-safety.js +58 -0
  241. package/dist/ir/program-analysis.d.ts +44 -0
  242. package/dist/ir/program-analysis.js +589 -0
  243. package/dist/ir/pulldown-validation.d.ts +7 -0
  244. package/dist/ir/pulldown-validation.js +49 -0
  245. package/dist/ir/pwm-timer-sharing.d.ts +4 -0
  246. package/dist/ir/pwm-timer-sharing.js +93 -0
  247. package/dist/ir/reachability.d.ts +68 -0
  248. package/dist/ir/reachability.js +224 -0
  249. package/dist/ir/register-decorators.d.ts +6 -0
  250. package/dist/ir/register-decorators.js +49 -0
  251. package/dist/ir/render-expr.d.ts +4 -0
  252. package/dist/ir/render-expr.js +127 -0
  253. package/dist/ir/resource-analysis.d.ts +19 -0
  254. package/dist/ir/resource-analysis.js +153 -0
  255. package/dist/ir/statement-to-ir.d.ts +23 -0
  256. package/dist/ir/statement-to-ir.js +349 -0
  257. package/dist/ir/symbol-table.d.ts +68 -0
  258. package/dist/ir/symbol-table.js +179 -0
  259. package/dist/ir/symbol-types.d.ts +56 -0
  260. package/dist/ir/symbol-types.js +107 -0
  261. package/dist/ir/timer0-pwm-timing-conflict.d.ts +4 -0
  262. package/dist/ir/timer0-pwm-timing-conflict.js +71 -0
  263. package/dist/ir/timing-validation.d.ts +7 -0
  264. package/dist/ir/timing-validation.js +95 -0
  265. package/dist/ir/transformers/array-methods.d.ts +8 -0
  266. package/dist/ir/transformers/array-methods.js +493 -0
  267. package/dist/ir/transformers/call-statement.d.ts +5 -0
  268. package/dist/ir/transformers/call-statement.js +758 -0
  269. package/dist/ir/transformers/callback-context-registry.d.ts +20 -0
  270. package/dist/ir/transformers/callback-context-registry.js +55 -0
  271. package/dist/ir/transformers/canvas-lowering.d.ts +42 -0
  272. package/dist/ir/transformers/canvas-lowering.js +249 -0
  273. package/dist/ir/transformers/control-flow.d.ts +8 -0
  274. package/dist/ir/transformers/control-flow.js +508 -0
  275. package/dist/ir/transformers/expressions.d.ts +7 -0
  276. package/dist/ir/transformers/expressions.js +406 -0
  277. package/dist/ir/transformers/hal-call-resolver.d.ts +29 -0
  278. package/dist/ir/transformers/hal-call-resolver.js +274 -0
  279. package/dist/ir/transformers/hal-emit-helpers.d.ts +14 -0
  280. package/dist/ir/transformers/hal-emit-helpers.js +63 -0
  281. package/dist/ir/transformers/namespace-methods.d.ts +20 -0
  282. package/dist/ir/transformers/namespace-methods.js +110 -0
  283. package/dist/ir/transformers/register-assignment.d.ts +5 -0
  284. package/dist/ir/transformers/register-assignment.js +56 -0
  285. package/dist/ir/transformers/ui-call-resolver.d.ts +149 -0
  286. package/dist/ir/transformers/ui-call-resolver.js +1136 -0
  287. package/dist/ir/transformers/ui-callback-lowering.d.ts +62 -0
  288. package/dist/ir/transformers/ui-callback-lowering.js +623 -0
  289. package/dist/ir/transformers/ui-mount.d.ts +20 -0
  290. package/dist/ir/transformers/ui-mount.js +35 -0
  291. package/dist/ir/transformers/ui-reactive.d.ts +68 -0
  292. package/dist/ir/transformers/ui-reactive.js +129 -0
  293. package/dist/ir/transformers/variables.d.ts +14 -0
  294. package/dist/ir/transformers/variables.js +1045 -0
  295. package/dist/ir/try-catch-validation.d.ts +26 -0
  296. package/dist/ir/try-catch-validation.js +128 -0
  297. package/dist/ir/type-resolution.d.ts +31 -0
  298. package/dist/ir/type-resolution.js +977 -0
  299. package/dist/ir/ui-element-auto-wire.d.ts +50 -0
  300. package/dist/ir/ui-element-auto-wire.js +218 -0
  301. package/dist/ir/unit-suspicion-validation.d.ts +12 -0
  302. package/dist/ir/unit-suspicion-validation.js +296 -0
  303. package/dist/ir/utils/walk-ir.d.ts +6 -0
  304. package/dist/ir/utils/walk-ir.js +162 -0
  305. package/dist/ir/validation-orchestrator.d.ts +4 -0
  306. package/dist/ir/validation-orchestrator.js +45 -0
  307. package/dist/libdef/base-class-resolver.d.ts +23 -0
  308. package/dist/libdef/base-class-resolver.js +50 -0
  309. package/dist/libdef/cpp-to-decl.d.ts +34 -0
  310. package/dist/libdef/cpp-to-decl.js +584 -0
  311. package/dist/libdef/header-parser.d.ts +53 -0
  312. package/dist/libdef/header-parser.js +269 -0
  313. package/dist/libdef/registry.d.ts +10 -0
  314. package/dist/libdef/registry.js +142 -0
  315. package/dist/mapping/peripheral-names.d.ts +23 -0
  316. package/dist/mapping/peripheral-names.js +63 -0
  317. package/dist/mapping/source-map.d.ts +46 -0
  318. package/dist/mapping/source-map.js +207 -0
  319. package/dist/orchestrator/dts-generator.d.ts +17 -0
  320. package/dist/orchestrator/dts-generator.js +83 -0
  321. package/dist/orchestrator/graph-builder.d.ts +18 -0
  322. package/dist/orchestrator/graph-builder.js +218 -0
  323. package/dist/orchestrator/semantic-facts-verifier.d.ts +38 -0
  324. package/dist/orchestrator/semantic-facts-verifier.js +121 -0
  325. package/dist/orchestrator/semantic-facts.d.ts +141 -0
  326. package/dist/orchestrator/semantic-facts.js +652 -0
  327. package/dist/orchestrator/type-checker.d.ts +39 -0
  328. package/dist/orchestrator/type-checker.js +760 -0
  329. package/dist/platform/async-runtime.d.ts +8 -0
  330. package/dist/platform/async-runtime.js +26 -0
  331. package/dist/platform/generic-strategy.d.ts +101 -0
  332. package/dist/platform/generic-strategy.js +289 -0
  333. package/dist/platform/index.d.ts +4 -0
  334. package/dist/platform/index.js +9 -0
  335. package/dist/platform/registry.d.ts +21 -0
  336. package/dist/platform/registry.js +42 -0
  337. package/dist/platform/toolchain.d.ts +4 -0
  338. package/dist/platform/toolchain.js +43 -0
  339. package/dist/preview/client.d.ts +1 -0
  340. package/dist/preview/client.js +137 -0
  341. package/dist/preview/server.d.ts +5 -0
  342. package/dist/preview/server.js +199 -0
  343. package/dist/profiler/index.d.ts +28 -0
  344. package/dist/profiler/index.js +28 -0
  345. package/dist/profiler/profiler.d.ts +95 -0
  346. package/dist/profiler/profiler.js +338 -0
  347. package/dist/profiler/types.d.ts +87 -0
  348. package/dist/profiler/types.js +12 -0
  349. package/dist/stores/display-profile-store.d.ts +16 -0
  350. package/dist/stores/display-profile-store.js +48 -0
  351. package/dist/stores/theme-store.d.ts +13 -0
  352. package/dist/stores/theme-store.js +30 -0
  353. package/dist/testing.d.ts +45 -0
  354. package/dist/testing.js +47 -0
  355. package/dist/transpile/resolution.d.ts +29 -0
  356. package/dist/transpile/resolution.js +282 -0
  357. package/dist/transpile.d.ts +3 -0
  358. package/dist/transpile.js +722 -0
  359. package/dist/types.d.ts +217 -0
  360. package/dist/types.js +1 -0
  361. package/dist/ui/ui-bridge.d.ts +4 -0
  362. package/dist/ui/ui-bridge.js +34 -0
  363. package/dist/ui-hook.d.ts +84 -0
  364. package/dist/ui-hook.js +45 -0
  365. package/dist/utils/cli.d.ts +3 -0
  366. package/dist/utils/cli.js +463 -0
  367. package/dist/utils/fs.d.ts +4 -0
  368. package/dist/utils/fs.js +23 -0
  369. package/dist/utils/logger.d.ts +2 -0
  370. package/dist/utils/logger.js +8 -0
  371. package/dist/utils/strings.d.ts +35 -0
  372. package/dist/utils/strings.js +142 -0
  373. package/dist/utils/ui.d.ts +66 -0
  374. package/dist/utils/ui.js +149 -0
  375. package/dist/watch.d.ts +35 -0
  376. package/dist/watch.js +111 -0
  377. package/package.json +127 -0
@@ -0,0 +1,20 @@
1
+ import type { PlatformGraphicsStrategy, DisplayInitOp } from "../../api/shared/index.js";
2
+ export interface MountRequest {
3
+ display: string;
4
+ bus: string;
5
+ cs: number;
6
+ dc: number;
7
+ rst: number;
8
+ rotation?: number;
9
+ backlight?: number;
10
+ spiFrequency?: number;
11
+ address?: number;
12
+ reset?: number;
13
+ }
14
+ export declare class MountValidationError extends Error {
15
+ constructor(driver: string, supported: ReadonlySet<string>);
16
+ }
17
+ export declare function resolveMount(req: MountRequest, strategy: PlatformGraphicsStrategy, viewport: {
18
+ width: number;
19
+ height: number;
20
+ }): DisplayInitOp;
@@ -0,0 +1,35 @@
1
+ // ---------------------------------------------------------------------------
2
+ // ui.mount resolver — validates the requested driver against the active
3
+ // framework's supportedDisplayDrivers() and returns a DisplayInitOp.
4
+ //
5
+ // Fail-fast: an unsupported driver errors at transpile time, not at runtime.
6
+ // Mirrors the pin-conflict check philosophy.
7
+ // ---------------------------------------------------------------------------
8
+ export class MountValidationError extends Error {
9
+ constructor(driver, supported) {
10
+ super(`Unsupported display driver "${driver}". ` +
11
+ `Supported by this framework: ${[...supported].join(", ") || "(none)"}.`);
12
+ this.name = "MountValidationError";
13
+ }
14
+ }
15
+ export function resolveMount(req, strategy, viewport) {
16
+ const supported = strategy.supportedDisplayDrivers();
17
+ if (!supported.has(req.display)) {
18
+ throw new MountValidationError(req.display, supported);
19
+ }
20
+ return {
21
+ operation: "display.init",
22
+ bus: req.bus,
23
+ cs: req.cs,
24
+ dc: req.dc,
25
+ rst: req.rst,
26
+ width: viewport.width,
27
+ height: viewport.height,
28
+ driver: req.display,
29
+ rotation: req.rotation,
30
+ address: req.address,
31
+ reset: req.reset,
32
+ backlight: req.backlight,
33
+ spiFrequency: req.spiFrequency,
34
+ };
35
+ }
@@ -0,0 +1,68 @@
1
+ export interface BindingSpec {
2
+ nodeIndex: number;
3
+ property: string;
4
+ fnName: string;
5
+ /** The C++ expression for the color-binding compute function (v1: may be
6
+ * empty if the arrow body couldn't be lowered; the emitter falls back to
7
+ * returning the node's current value). */
8
+ cppExpr?: string;
9
+ /** The imperative C++ statement body for a text binding (e.g.
10
+ * `snprintf(buf, size, "%d", count);`). Mutually exclusive with cppExpr:
11
+ * text bindings use cppBody, color bindings use cppExpr. */
12
+ cppBody?: string;
13
+ /** The unrendered ExpressionIR for non-text (color/value/etc.) bindings.
14
+ * When present, the emitter renders it through the strategy-aware
15
+ * ExpressionRenderer (so division promotion, modulo→fmod, and string-concat
16
+ * wrapping match top-level code) instead of inlining the prerendered
17
+ * cppExpr. cppExpr is kept as a fallback. Color literals are pre-resolved
18
+ * to raw hex nodes (resolveColorIR) so ExpressionRenderer emits the number. */
19
+ bodyIR?: import("../../api/shared/ir-core.js").ExpressionIR;
20
+ }
21
+ /** Emit a signal as a device variable declaration. */
22
+ export declare function emitSignalDecl(name: string, cppType: string, initialValue: number | string | boolean): string;
23
+ /** Emit a single binding-table entry line. */
24
+ export declare function emitBindingEntry(spec: BindingSpec): string;
25
+ /** Emit a full binding table from a list of specs. */
26
+ export declare function emitBindingTable(specs: BindingSpec[]): string;
27
+ export interface ListBindingSpec {
28
+ nodeIndex: number;
29
+ countFnName: string;
30
+ itemFnName: string;
31
+ tapFnName: string | null;
32
+ countFnBody: string;
33
+ itemFnBody: string;
34
+ tapFnBody: string | null;
35
+ /** Statement IR for the count function body (preferred over countFnBody). */
36
+ countStatements?: import("../../api/shared/ir-core.js").StatementIR[];
37
+ /** Statement IR for the item function body (preferred over itemFnBody). */
38
+ itemStatements?: import("../../api/shared/ir-core.js").StatementIR[];
39
+ /** Statement IR for the tap callback body (preferred over tapFnBody). */
40
+ tapStatements?: import("../../api/shared/ir-core.js").StatementIR[];
41
+ countSourceSpan?: import("../../types.js").SourceSpan;
42
+ itemSourceSpan?: import("../../types.js").SourceSpan;
43
+ tapSourceSpan?: import("../../types.js").SourceSpan;
44
+ }
45
+ export declare function recordListBinding(spec: ListBindingSpec): void;
46
+ export declare function getListBindings(): ListBindingSpec[];
47
+ export declare function getListBindingsCount(): number;
48
+ export declare function resetListBindings(): void;
49
+ export interface InputBindingSpec {
50
+ nodeIndex: number;
51
+ cbFnName: string;
52
+ cbFnBody: string;
53
+ /** Statement IR for the callback body (preferred over cbFnBody). */
54
+ bodyStatements?: import("../../api/shared/ir-core.js").StatementIR[];
55
+ sourceSpan?: import("../../types.js").SourceSpan;
56
+ }
57
+ export declare function recordInputBinding(spec: InputBindingSpec): void;
58
+ export declare function getInputBindings(): InputBindingSpec[];
59
+ export declare function getInputBindingsCount(): number;
60
+ export declare function resetInputBindings(): void;
61
+ /** Emit only the input-binding table (callback functions emitted separately). */
62
+ export declare function emitInputBindingTable(specs: InputBindingSpec[]): string;
63
+ /** @deprecated Prefer emit callback wrappers via emitCallbackWrapper + emitInputBindingTable. */
64
+ export declare function emitInputBindings(specs: InputBindingSpec[]): string;
65
+ /** Emit only the list-binding table (count/item/tap functions emitted separately). */
66
+ export declare function emitListBindingTable(specs: ListBindingSpec[]): string;
67
+ /** @deprecated Prefer emit callback wrappers via emitCallbackWrapper + emitListBindingTable. */
68
+ export declare function emitListBindings(specs: ListBindingSpec[]): string;
@@ -0,0 +1,129 @@
1
+ // ---------------------------------------------------------------------------
2
+ // Reactive lowering — ui.signal / ui.bind → C++ device variables + binding table.
3
+ //
4
+ // A signal lowers to a plain variable (with an initial value). A bind lowers
5
+ // to a UIBinding entry: { nodeIndex, property, fn_ptr }. The runtime evaluates
6
+ // each binding each tick; if the computed value differs from the node's current
7
+ // value, the node is marked dirty (and the transition armed if applicable).
8
+ //
9
+ // The compute functions (fn_ptr) are emitted as free C++ functions that return
10
+ // the property value, generated from the author's arrow-function bodies.
11
+ // ---------------------------------------------------------------------------
12
+ /** Emit a signal as a device variable declaration. */
13
+ export function emitSignalDecl(name, cppType, initialValue) {
14
+ const val = typeof initialValue === "string" ? `"${initialValue}"` : `${initialValue}`;
15
+ return `${cppType} ${name} = ${val};`;
16
+ }
17
+ /** Map a bind property name to the runtime property enum. */
18
+ function propEnum(property) {
19
+ switch (property) {
20
+ case "background": return "PROP_BG";
21
+ case "color": return "PROP_FG";
22
+ case "text": return "PROP_TEXT";
23
+ case "visible": return "PROP_VISIBLE";
24
+ case "borderColor": return "PROP_BORDER_COLOR";
25
+ case "value": return "PROP_VALUE";
26
+ default: return `PROP_${property.toUpperCase()}`;
27
+ }
28
+ }
29
+ /** Emit a single binding-table entry line. */
30
+ export function emitBindingEntry(spec) {
31
+ // Text bindings wire to textFn (void fill-style); color bindings wire to fn.
32
+ if (spec.property === "text") {
33
+ return ` { .node=${spec.nodeIndex}, .prop=${propEnum(spec.property)}, .fn=nullptr, .textFn=${spec.fnName} },`;
34
+ }
35
+ return ` { .node=${spec.nodeIndex}, .prop=${propEnum(spec.property)}, .fn=${spec.fnName}, .textFn=nullptr },`;
36
+ }
37
+ /** Emit a full binding table from a list of specs. */
38
+ export function emitBindingTable(specs) {
39
+ if (specs.length === 0)
40
+ return `UIBinding __ui_bindings[] = {};`;
41
+ return [
42
+ `UIBinding __ui_bindings[] = {`,
43
+ ...specs.map(emitBindingEntry),
44
+ `};`,
45
+ ].join("\n");
46
+ }
47
+ const listBindings = [];
48
+ export function recordListBinding(spec) {
49
+ listBindings.push(spec);
50
+ }
51
+ export function getListBindings() {
52
+ return listBindings;
53
+ }
54
+ export function getListBindingsCount() {
55
+ return listBindings.length;
56
+ }
57
+ export function resetListBindings() {
58
+ listBindings.length = 0;
59
+ }
60
+ const inputBindings = [];
61
+ export function recordInputBinding(spec) {
62
+ inputBindings.push(spec);
63
+ }
64
+ export function getInputBindings() {
65
+ return inputBindings;
66
+ }
67
+ export function getInputBindingsCount() {
68
+ return inputBindings.length;
69
+ }
70
+ export function resetInputBindings() {
71
+ inputBindings.length = 0;
72
+ }
73
+ /** Emit only the input-binding table (callback functions emitted separately). */
74
+ export function emitInputBindingTable(specs) {
75
+ if (specs.length === 0) {
76
+ return `UIInputBinding __ui_input_bindings[] = {};\nconst uint16_t __ui_input_binding_count = 0;`;
77
+ }
78
+ const lines = [
79
+ `UIInputBinding __ui_input_bindings[] = {`,
80
+ ];
81
+ for (const spec of specs) {
82
+ lines.push(` { .node=${spec.nodeIndex}, .cb=${spec.cbFnName} },`);
83
+ }
84
+ lines.push(`};`);
85
+ lines.push(`const uint16_t __ui_input_binding_count = ${specs.length};`);
86
+ return lines.join("\n");
87
+ }
88
+ /** @deprecated Prefer emit callback wrappers via emitCallbackWrapper + emitInputBindingTable. */
89
+ export function emitInputBindings(specs) {
90
+ if (specs.length === 0)
91
+ return emitInputBindingTable(specs);
92
+ const lines = [];
93
+ for (const spec of specs) {
94
+ lines.push(`void ${spec.cbFnName}(const char* text) { ${spec.cbFnBody} }`);
95
+ }
96
+ lines.push(emitInputBindingTable(specs));
97
+ return lines.join("\n");
98
+ }
99
+ /** Emit only the list-binding table (count/item/tap functions emitted separately). */
100
+ export function emitListBindingTable(specs) {
101
+ if (specs.length === 0) {
102
+ return `UIListBinding __ui_list_bindings[] = {};\nconst uint16_t __ui_list_binding_count = 0;`;
103
+ }
104
+ const lines = [
105
+ `UIListBinding __ui_list_bindings[] = {`,
106
+ ];
107
+ for (const spec of specs) {
108
+ const tap = spec.tapFnName && (spec.tapStatements || spec.tapFnBody) ? spec.tapFnName : "nullptr";
109
+ lines.push(` { .node=${spec.nodeIndex}, .countFn=${spec.countFnName}, .itemFn=${spec.itemFnName}, .tapFn=${tap} },`);
110
+ }
111
+ lines.push(`};`);
112
+ lines.push(`const uint16_t __ui_list_binding_count = ${specs.length};`);
113
+ return lines.join("\n");
114
+ }
115
+ /** @deprecated Prefer emit callback wrappers via emitCallbackWrapper + emitListBindingTable. */
116
+ export function emitListBindings(specs) {
117
+ if (specs.length === 0)
118
+ return emitListBindingTable(specs);
119
+ const lines = [];
120
+ for (const spec of specs) {
121
+ lines.push(`uint16_t ${spec.countFnName}() { ${spec.countFnBody} }`);
122
+ lines.push(`void ${spec.itemFnName}(uint16_t idx, char* buf, uint8_t size) { ${spec.itemFnBody} }`);
123
+ if (spec.tapFnName && spec.tapFnBody) {
124
+ lines.push(`void ${spec.tapFnName}(uint16_t idx) { ${spec.tapFnBody} }`);
125
+ }
126
+ }
127
+ lines.push(emitListBindingTable(specs));
128
+ return lines.join("\n");
129
+ }
@@ -0,0 +1,14 @@
1
+ import ts from "typescript";
2
+ import { Diagnostic } from "../../types.js";
3
+ import { StatementIR } from "../../api/index.js";
4
+ import { CppTypeHint } from "../type-resolution.js";
5
+ import { PointerTracker } from "../build-ir-state.js";
6
+ export declare function assignmentOperatorToString(kind: ts.SyntaxKind): Extract<StatementIR, {
7
+ kind: "assign";
8
+ }>['operator'] | undefined;
9
+ export declare function updateLocalTypeFromAssignment(target: string, operator: Extract<StatementIR, {
10
+ kind: "assign";
11
+ }>['operator'], valueType: CppTypeHint, localVariableTypes: Map<string, CppTypeHint>): void;
12
+ export declare function extractForInKeys(expr: ts.Expression): string[] | undefined;
13
+ export declare function variableStatementToIR(statement: ts.VariableStatement, fileName: string, sourceText: string, diagnostics: Diagnostic[], functionReturnTypes: Map<string, CppTypeHint>, localVariableTypes: Map<string, CppTypeHint>, typeAliases: Map<string, ts.TypeNode> | undefined, pointerVars: PointerTracker, functionNameForDiagnostics: string, lowerStatementListCallback: (statements: readonly ts.Statement[] | ts.NodeArray<ts.Statement>, fileName: string, sourceText: string, diagnostics: Diagnostic[], functionReturnTypes: Map<string, CppTypeHint>, localVariableTypes: Map<string, CppTypeHint>, functionNameForDiagnostics: string, typeAliases?: Map<string, ts.TypeNode>, pointerVars?: PointerTracker) => StatementIR[]): StatementIR[];
14
+ export declare function collectPointerVars(statements: readonly ts.Statement[]): PointerTracker;