@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.
- package/LICENSE +21 -0
- package/README.md +79 -0
- package/dist/api/board-types.d.ts +1 -0
- package/dist/api/board-types.js +4 -0
- package/dist/api/capabilities.d.ts +12 -0
- package/dist/api/capabilities.js +1 -0
- package/dist/api/config.d.ts +120 -0
- package/dist/api/config.js +7 -0
- package/dist/api/index.d.ts +5 -0
- package/dist/api/index.js +2 -0
- package/dist/api/schema/builder.d.ts +14 -0
- package/dist/api/schema/builder.js +15 -0
- package/dist/api/schema/index.d.ts +2 -0
- package/dist/api/schema/index.js +1 -0
- package/dist/api/schema/types.d.ts +257 -0
- package/dist/api/schema/types.js +4 -0
- package/dist/api/shared/async-runtime-static.d.ts +8 -0
- package/dist/api/shared/async-runtime-static.js +201 -0
- package/dist/api/shared/async-types.d.ts +42 -0
- package/dist/api/shared/async-types.js +8 -0
- package/dist/api/shared/board-resolver.d.ts +12 -0
- package/dist/api/shared/board-resolver.js +7 -0
- package/dist/api/shared/cpp-type-ir.d.ts +229 -0
- package/dist/api/shared/cpp-type-ir.js +672 -0
- package/dist/api/shared/display-adapter.d.ts +12 -0
- package/dist/api/shared/display-adapter.js +145 -0
- package/dist/api/shared/display-adapters/eink-mono.d.ts +2 -0
- package/dist/api/shared/display-adapters/eink-mono.js +53 -0
- package/dist/api/shared/display-adapters/sdl.d.ts +2 -0
- package/dist/api/shared/display-adapters/sdl.js +452 -0
- package/dist/api/shared/display-adapters/ssd1309.d.ts +2 -0
- package/dist/api/shared/display-adapters/ssd1309.js +136 -0
- package/dist/api/shared/display-adapters/st7796.d.ts +2 -0
- package/dist/api/shared/display-adapters/st7796.js +132 -0
- package/dist/api/shared/display-capabilities.d.ts +45 -0
- package/dist/api/shared/display-capabilities.js +54 -0
- package/dist/api/shared/display-op-ir.d.ts +62 -0
- package/dist/api/shared/display-op-ir.js +19 -0
- package/dist/api/shared/display-profile.d.ts +265 -0
- package/dist/api/shared/display-profile.js +338 -0
- package/dist/api/shared/graphics-strategy.d.ts +29 -0
- package/dist/api/shared/graphics-strategy.js +11 -0
- package/dist/api/shared/hal-op-ir.d.ts +393 -0
- package/dist/api/shared/hal-op-ir.js +18 -0
- package/dist/api/shared/index.d.ts +26 -0
- package/dist/api/shared/index.js +21 -0
- package/dist/api/shared/ir-core.d.ts +363 -0
- package/dist/api/shared/ir-core.js +8 -0
- package/dist/api/shared/ir-declarations.d.ts +201 -0
- package/dist/api/shared/ir-declarations.js +26 -0
- package/dist/api/shared/ir.d.ts +85 -0
- package/dist/api/shared/ir.js +13 -0
- package/dist/api/shared/platform-strategy.d.ts +402 -0
- package/dist/api/shared/platform-strategy.js +14 -0
- package/dist/api/shared/polyfill-helper-registry.d.ts +11 -0
- package/dist/api/shared/polyfill-helper-registry.js +86 -0
- package/dist/api/shared/polyfill-types.d.ts +33 -0
- package/dist/api/shared/polyfill-types.js +76 -0
- package/dist/api/shared/promise-runtime.d.ts +10 -0
- package/dist/api/shared/promise-runtime.js +244 -0
- package/dist/api/shared/snprintf-types.d.ts +29 -0
- package/dist/api/shared/snprintf-types.js +8 -0
- package/dist/api/shared/string-method-registry.d.ts +53 -0
- package/dist/api/shared/string-method-registry.js +168 -0
- package/dist/api/shared/toolchain-types.d.ts +63 -0
- package/dist/api/shared/toolchain-types.js +71 -0
- package/dist/api/shared/types.d.ts +50 -0
- package/dist/api/shared/types.js +6 -0
- package/dist/ast/parse.d.ts +2 -0
- package/dist/ast/parse.js +4 -0
- package/dist/cache.d.ts +26 -0
- package/dist/cache.js +95 -0
- package/dist/cli-utils.d.ts +37 -0
- package/dist/cli-utils.js +250 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.js +635 -0
- package/dist/config-loader.d.ts +78 -0
- package/dist/config-loader.js +508 -0
- package/dist/config-schema.d.ts +233 -0
- package/dist/config-schema.js +83 -0
- package/dist/create/board-checklist.d.ts +2 -0
- package/dist/create/board-checklist.js +52 -0
- package/dist/create/board-codegen.d.ts +9 -0
- package/dist/create/board-codegen.js +238 -0
- package/dist/create/board-generators.d.ts +12 -0
- package/dist/create/board-generators.js +652 -0
- package/dist/create/board-spec.d.ts +640 -0
- package/dist/create/board-spec.js +215 -0
- package/dist/create/eslint-rules-template.d.ts +2 -0
- package/dist/create/eslint-rules-template.js +672 -0
- package/dist/create/index.d.ts +11 -0
- package/dist/create/index.js +8 -0
- package/dist/create/init-scaffold.d.ts +27 -0
- package/dist/create/init-scaffold.js +150 -0
- package/dist/create/init-templates.d.ts +24 -0
- package/dist/create/init-templates.js +379 -0
- package/dist/create/init-wizard.d.ts +8 -0
- package/dist/create/init-wizard.js +168 -0
- package/dist/debug/breakpoint-loader.d.ts +24 -0
- package/dist/debug/breakpoint-loader.js +137 -0
- package/dist/debug/index.d.ts +3 -0
- package/dist/debug/index.js +7 -0
- package/dist/debug/preprocessor.d.ts +9 -0
- package/dist/debug/preprocessor.js +214 -0
- package/dist/debug/types.d.ts +32 -0
- package/dist/debug/types.js +6 -0
- package/dist/diagnostics/diagnostics-report.d.ts +51 -0
- package/dist/diagnostics/diagnostics-report.js +333 -0
- package/dist/diagnostics/json-schema.d.ts +138 -0
- package/dist/diagnostics/json-schema.js +27 -0
- package/dist/diagnostics/md-writer.d.ts +10 -0
- package/dist/diagnostics/md-writer.js +336 -0
- package/dist/diagnostics/mermaid-builder.d.ts +65 -0
- package/dist/diagnostics/mermaid-builder.js +681 -0
- package/dist/emit/cpp-emitter.d.ts +6 -0
- package/dist/emit/cpp-emitter.js +48 -0
- package/dist/emit/emitters/class-emitter.d.ts +2 -0
- package/dist/emit/emitters/class-emitter.js +523 -0
- package/dist/emit/emitters/emitter-context.d.ts +174 -0
- package/dist/emit/emitters/emitter-context.js +1 -0
- package/dist/emit/emitters/entrypoint-synthesizer.d.ts +2 -0
- package/dist/emit/emitters/entrypoint-synthesizer.js +175 -0
- package/dist/emit/emitters/function-emitter-impl.d.ts +19 -0
- package/dist/emit/emitters/function-emitter-impl.js +428 -0
- package/dist/emit/emitters/line-appender.d.ts +15 -0
- package/dist/emit/emitters/line-appender.js +344 -0
- package/dist/emit/emitters/namespace-emitter.d.ts +2 -0
- package/dist/emit/emitters/namespace-emitter.js +324 -0
- package/dist/emit/emitters/output-finalizer.d.ts +4 -0
- package/dist/emit/emitters/output-finalizer.js +267 -0
- package/dist/emit/emitters/setup.d.ts +3 -0
- package/dist/emit/emitters/setup.js +851 -0
- package/dist/emit/emitters/top-level-prep.d.ts +2 -0
- package/dist/emit/emitters/top-level-prep.js +706 -0
- package/dist/emit/emitters/type-decl-emitter.d.ts +2 -0
- package/dist/emit/emitters/type-decl-emitter.js +251 -0
- package/dist/emit/emitters/ui-emitter.d.ts +21 -0
- package/dist/emit/emitters/ui-emitter.js +564 -0
- package/dist/emit/enum-emitter.d.ts +1 -0
- package/dist/emit/enum-emitter.js +1 -0
- package/dist/emit/expression-renderer.d.ts +283 -0
- package/dist/emit/expression-renderer.js +1477 -0
- package/dist/emit/native-helpers-emitter.d.ts +11 -0
- package/dist/emit/native-helpers-emitter.js +34 -0
- package/dist/emit/route-hal-op.d.ts +5 -0
- package/dist/emit/route-hal-op.js +13 -0
- package/dist/emit/snprintf-helpers.d.ts +17 -0
- package/dist/emit/snprintf-helpers.js +462 -0
- package/dist/emit/statement-renderer.d.ts +189 -0
- package/dist/emit/statement-renderer.js +948 -0
- package/dist/emit/utils/async-state-machine.d.ts +42 -0
- package/dist/emit/utils/async-state-machine.js +343 -0
- package/dist/emit/utils/comment-helpers.d.ts +20 -0
- package/dist/emit/utils/comment-helpers.js +31 -0
- package/dist/emit/utils/cpp-helpers.d.ts +47 -0
- package/dist/emit/utils/cpp-helpers.js +85 -0
- package/dist/emit/utils/include-resolver.d.ts +58 -0
- package/dist/emit/utils/include-resolver.js +155 -0
- package/dist/emit/utils/index.d.ts +8 -0
- package/dist/emit/utils/index.js +12 -0
- package/dist/emit/utils/type-inference.d.ts +159 -0
- package/dist/emit/utils/type-inference.js +559 -0
- package/dist/eslint-check.d.ts +10 -0
- package/dist/eslint-check.js +102 -0
- package/dist/framework-package.d.ts +10 -0
- package/dist/framework-package.js +58 -0
- package/dist/framework-registry.d.ts +39 -0
- package/dist/framework-registry.js +30 -0
- package/dist/incremental-cache.d.ts +116 -0
- package/dist/incremental-cache.js +335 -0
- package/dist/ir/adc-range-validation.d.ts +11 -0
- package/dist/ir/adc-range-validation.js +250 -0
- package/dist/ir/ast-node-utils.d.ts +8 -0
- package/dist/ir/ast-node-utils.js +32 -0
- package/dist/ir/board-pin-utils.d.ts +13 -0
- package/dist/ir/board-pin-utils.js +65 -0
- package/dist/ir/board-resolver.d.ts +36 -0
- package/dist/ir/board-resolver.js +437 -0
- package/dist/ir/build-ir-state.d.ts +167 -0
- package/dist/ir/build-ir-state.js +306 -0
- package/dist/ir/build-ir.d.ts +2 -0
- package/dist/ir/build-ir.js +808 -0
- package/dist/ir/call-graph.d.ts +35 -0
- package/dist/ir/call-graph.js +194 -0
- package/dist/ir/compile-time-only.d.ts +2 -0
- package/dist/ir/compile-time-only.js +16 -0
- package/dist/ir/declaration-builders.d.ts +9 -0
- package/dist/ir/declaration-builders.js +608 -0
- package/dist/ir/entry-points.d.ts +30 -0
- package/dist/ir/entry-points.js +191 -0
- package/dist/ir/expression-to-ir.d.ts +5 -0
- package/dist/ir/expression-to-ir.js +2249 -0
- package/dist/ir/extract-property-chain.d.ts +10 -0
- package/dist/ir/extract-property-chain.js +30 -0
- package/dist/ir/feature-prescan.d.ts +3 -0
- package/dist/ir/feature-prescan.js +43 -0
- package/dist/ir/feature-registry.d.ts +30 -0
- package/dist/ir/feature-registry.js +816 -0
- package/dist/ir/filter.d.ts +7 -0
- package/dist/ir/filter.js +85 -0
- package/dist/ir/function-builder.d.ts +19 -0
- package/dist/ir/function-builder.js +670 -0
- package/dist/ir/hal/hal-emitter.d.ts +62 -0
- package/dist/ir/hal/hal-emitter.js +735 -0
- package/dist/ir/hal/hal-parser.d.ts +61 -0
- package/dist/ir/hal/hal-parser.js +473 -0
- package/dist/ir/hal/hal-plugins.d.ts +34 -0
- package/dist/ir/hal/hal-plugins.js +706 -0
- package/dist/ir/hal-resolver.d.ts +5 -0
- package/dist/ir/hal-resolver.js +5 -0
- package/dist/ir/heap-analysis.d.ts +8 -0
- package/dist/ir/heap-analysis.js +350 -0
- package/dist/ir/heap-array-validation.d.ts +24 -0
- package/dist/ir/heap-array-validation.js +29 -0
- package/dist/ir/identifier-collector.d.ts +18 -0
- package/dist/ir/identifier-collector.js +439 -0
- package/dist/ir/interrupt-analysis.d.ts +39 -0
- package/dist/ir/interrupt-analysis.js +467 -0
- package/dist/ir/memory-budget-validation.d.ts +10 -0
- package/dist/ir/memory-budget-validation.js +86 -0
- package/dist/ir/namespace-builder.d.ts +7 -0
- package/dist/ir/namespace-builder.js +152 -0
- package/dist/ir/ownership-analysis.d.ts +9 -0
- package/dist/ir/ownership-analysis.js +1207 -0
- package/dist/ir/peripheral-ownership.d.ts +3 -0
- package/dist/ir/peripheral-ownership.js +152 -0
- package/dist/ir/peripheral-symbols.d.ts +7 -0
- package/dist/ir/peripheral-symbols.js +57 -0
- package/dist/ir/peripheral-usage.d.ts +54 -0
- package/dist/ir/peripheral-usage.js +691 -0
- package/dist/ir/peripheral-validation.d.ts +8 -0
- package/dist/ir/peripheral-validation.js +77 -0
- package/dist/ir/pin-alias-conflict.d.ts +4 -0
- package/dist/ir/pin-alias-conflict.js +34 -0
- package/dist/ir/pin-capability-validation.d.ts +6 -0
- package/dist/ir/pin-capability-validation.js +413 -0
- package/dist/ir/pin-mode-validation.d.ts +10 -0
- package/dist/ir/pin-mode-validation.js +301 -0
- package/dist/ir/pin-safety.d.ts +11 -0
- package/dist/ir/pin-safety.js +58 -0
- package/dist/ir/program-analysis.d.ts +44 -0
- package/dist/ir/program-analysis.js +589 -0
- package/dist/ir/pulldown-validation.d.ts +7 -0
- package/dist/ir/pulldown-validation.js +49 -0
- package/dist/ir/pwm-timer-sharing.d.ts +4 -0
- package/dist/ir/pwm-timer-sharing.js +93 -0
- package/dist/ir/reachability.d.ts +68 -0
- package/dist/ir/reachability.js +224 -0
- package/dist/ir/register-decorators.d.ts +6 -0
- package/dist/ir/register-decorators.js +49 -0
- package/dist/ir/render-expr.d.ts +4 -0
- package/dist/ir/render-expr.js +127 -0
- package/dist/ir/resource-analysis.d.ts +19 -0
- package/dist/ir/resource-analysis.js +153 -0
- package/dist/ir/statement-to-ir.d.ts +23 -0
- package/dist/ir/statement-to-ir.js +349 -0
- package/dist/ir/symbol-table.d.ts +68 -0
- package/dist/ir/symbol-table.js +179 -0
- package/dist/ir/symbol-types.d.ts +56 -0
- package/dist/ir/symbol-types.js +107 -0
- package/dist/ir/timer0-pwm-timing-conflict.d.ts +4 -0
- package/dist/ir/timer0-pwm-timing-conflict.js +71 -0
- package/dist/ir/timing-validation.d.ts +7 -0
- package/dist/ir/timing-validation.js +95 -0
- package/dist/ir/transformers/array-methods.d.ts +8 -0
- package/dist/ir/transformers/array-methods.js +493 -0
- package/dist/ir/transformers/call-statement.d.ts +5 -0
- package/dist/ir/transformers/call-statement.js +758 -0
- package/dist/ir/transformers/callback-context-registry.d.ts +20 -0
- package/dist/ir/transformers/callback-context-registry.js +55 -0
- package/dist/ir/transformers/canvas-lowering.d.ts +42 -0
- package/dist/ir/transformers/canvas-lowering.js +249 -0
- package/dist/ir/transformers/control-flow.d.ts +8 -0
- package/dist/ir/transformers/control-flow.js +508 -0
- package/dist/ir/transformers/expressions.d.ts +7 -0
- package/dist/ir/transformers/expressions.js +406 -0
- package/dist/ir/transformers/hal-call-resolver.d.ts +29 -0
- package/dist/ir/transformers/hal-call-resolver.js +274 -0
- package/dist/ir/transformers/hal-emit-helpers.d.ts +14 -0
- package/dist/ir/transformers/hal-emit-helpers.js +63 -0
- package/dist/ir/transformers/namespace-methods.d.ts +20 -0
- package/dist/ir/transformers/namespace-methods.js +110 -0
- package/dist/ir/transformers/register-assignment.d.ts +5 -0
- package/dist/ir/transformers/register-assignment.js +56 -0
- package/dist/ir/transformers/ui-call-resolver.d.ts +149 -0
- package/dist/ir/transformers/ui-call-resolver.js +1136 -0
- package/dist/ir/transformers/ui-callback-lowering.d.ts +62 -0
- package/dist/ir/transformers/ui-callback-lowering.js +623 -0
- package/dist/ir/transformers/ui-mount.d.ts +20 -0
- package/dist/ir/transformers/ui-mount.js +35 -0
- package/dist/ir/transformers/ui-reactive.d.ts +68 -0
- package/dist/ir/transformers/ui-reactive.js +129 -0
- package/dist/ir/transformers/variables.d.ts +14 -0
- package/dist/ir/transformers/variables.js +1045 -0
- package/dist/ir/try-catch-validation.d.ts +26 -0
- package/dist/ir/try-catch-validation.js +128 -0
- package/dist/ir/type-resolution.d.ts +31 -0
- package/dist/ir/type-resolution.js +977 -0
- package/dist/ir/ui-element-auto-wire.d.ts +50 -0
- package/dist/ir/ui-element-auto-wire.js +218 -0
- package/dist/ir/unit-suspicion-validation.d.ts +12 -0
- package/dist/ir/unit-suspicion-validation.js +296 -0
- package/dist/ir/utils/walk-ir.d.ts +6 -0
- package/dist/ir/utils/walk-ir.js +162 -0
- package/dist/ir/validation-orchestrator.d.ts +4 -0
- package/dist/ir/validation-orchestrator.js +45 -0
- package/dist/libdef/base-class-resolver.d.ts +23 -0
- package/dist/libdef/base-class-resolver.js +50 -0
- package/dist/libdef/cpp-to-decl.d.ts +34 -0
- package/dist/libdef/cpp-to-decl.js +584 -0
- package/dist/libdef/header-parser.d.ts +53 -0
- package/dist/libdef/header-parser.js +269 -0
- package/dist/libdef/registry.d.ts +10 -0
- package/dist/libdef/registry.js +142 -0
- package/dist/mapping/peripheral-names.d.ts +23 -0
- package/dist/mapping/peripheral-names.js +63 -0
- package/dist/mapping/source-map.d.ts +46 -0
- package/dist/mapping/source-map.js +207 -0
- package/dist/orchestrator/dts-generator.d.ts +17 -0
- package/dist/orchestrator/dts-generator.js +83 -0
- package/dist/orchestrator/graph-builder.d.ts +18 -0
- package/dist/orchestrator/graph-builder.js +218 -0
- package/dist/orchestrator/semantic-facts-verifier.d.ts +38 -0
- package/dist/orchestrator/semantic-facts-verifier.js +121 -0
- package/dist/orchestrator/semantic-facts.d.ts +141 -0
- package/dist/orchestrator/semantic-facts.js +652 -0
- package/dist/orchestrator/type-checker.d.ts +39 -0
- package/dist/orchestrator/type-checker.js +760 -0
- package/dist/platform/async-runtime.d.ts +8 -0
- package/dist/platform/async-runtime.js +26 -0
- package/dist/platform/generic-strategy.d.ts +101 -0
- package/dist/platform/generic-strategy.js +289 -0
- package/dist/platform/index.d.ts +4 -0
- package/dist/platform/index.js +9 -0
- package/dist/platform/registry.d.ts +21 -0
- package/dist/platform/registry.js +42 -0
- package/dist/platform/toolchain.d.ts +4 -0
- package/dist/platform/toolchain.js +43 -0
- package/dist/preview/client.d.ts +1 -0
- package/dist/preview/client.js +137 -0
- package/dist/preview/server.d.ts +5 -0
- package/dist/preview/server.js +199 -0
- package/dist/profiler/index.d.ts +28 -0
- package/dist/profiler/index.js +28 -0
- package/dist/profiler/profiler.d.ts +95 -0
- package/dist/profiler/profiler.js +338 -0
- package/dist/profiler/types.d.ts +87 -0
- package/dist/profiler/types.js +12 -0
- package/dist/stores/display-profile-store.d.ts +16 -0
- package/dist/stores/display-profile-store.js +48 -0
- package/dist/stores/theme-store.d.ts +13 -0
- package/dist/stores/theme-store.js +30 -0
- package/dist/testing.d.ts +45 -0
- package/dist/testing.js +47 -0
- package/dist/transpile/resolution.d.ts +29 -0
- package/dist/transpile/resolution.js +282 -0
- package/dist/transpile.d.ts +3 -0
- package/dist/transpile.js +722 -0
- package/dist/types.d.ts +217 -0
- package/dist/types.js +1 -0
- package/dist/ui/ui-bridge.d.ts +4 -0
- package/dist/ui/ui-bridge.js +34 -0
- package/dist/ui-hook.d.ts +84 -0
- package/dist/ui-hook.js +45 -0
- package/dist/utils/cli.d.ts +3 -0
- package/dist/utils/cli.js +463 -0
- package/dist/utils/fs.d.ts +4 -0
- package/dist/utils/fs.js +23 -0
- package/dist/utils/logger.d.ts +2 -0
- package/dist/utils/logger.js +8 -0
- package/dist/utils/strings.d.ts +35 -0
- package/dist/utils/strings.js +142 -0
- package/dist/utils/ui.d.ts +66 -0
- package/dist/utils/ui.js +149 -0
- package/dist/watch.d.ts +35 -0
- package/dist/watch.js +111 -0
- package/package.json +127 -0
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import ts from "typescript";
|
|
2
|
+
import { Diagnostic, type SourceSpan } from "../../types.js";
|
|
3
|
+
import { StatementIR } from "../../api/index.js";
|
|
4
|
+
import { BindingSpec } from "./ui-reactive.js";
|
|
5
|
+
/** Register an element's node index for .value access. Called during
|
|
6
|
+
* build-ir.ts's import processing (alongside registerUIModuleImport).
|
|
7
|
+
*
|
|
8
|
+
* Element ids here come from a tree walk over the SAME styled tree that
|
|
9
|
+
* resolveNodeIndex walks, so not-found is structurally unreachable in
|
|
10
|
+
* practice. We use resolveNodeIndexOrZero (which falls back to 0 on -1)
|
|
11
|
+
* rather than threading diagnostics through build-ir's tree-walk path. */
|
|
12
|
+
export declare function registerElementValue(treeName: string, elemId: string, htmlPath: string): void;
|
|
13
|
+
/** Resolve "screen.led" → node index, or undefined if not registered. */
|
|
14
|
+
export declare function resolveElementValue(treeName: string, elemId: string): number | undefined;
|
|
15
|
+
/** Recorded press/release bindings: node index + pin + edge + handler name. */
|
|
16
|
+
export interface PressBinding {
|
|
17
|
+
nodeIndex: number;
|
|
18
|
+
pin: string;
|
|
19
|
+
edge: "press" | "release";
|
|
20
|
+
handlerName: string;
|
|
21
|
+
}
|
|
22
|
+
export declare function recordPressBinding(binding: PressBinding): void;
|
|
23
|
+
export declare function uiPressBindings(): PressBinding[];
|
|
24
|
+
export interface ClickHandlerSpec {
|
|
25
|
+
nodeIndex: number;
|
|
26
|
+
/** Handler kind: click (short tap), hold (long press ≥600ms), release (finger up),
|
|
27
|
+
* change (input text committed via keyboard). */
|
|
28
|
+
kind: "click" | "hold" | "release" | "change" | "rangechange";
|
|
29
|
+
/** Function name of the generated handler. */
|
|
30
|
+
fnName: string;
|
|
31
|
+
/** C++ body of the callback (legacy/auto-wire string bake). Prefer bodyStatements. */
|
|
32
|
+
callbackBody: string;
|
|
33
|
+
/** Statement IR for the callback body (main pipeline). */
|
|
34
|
+
bodyStatements?: StatementIR[];
|
|
35
|
+
/** Source span of the original callback arrow/function, when known. */
|
|
36
|
+
sourceSpan?: SourceSpan;
|
|
37
|
+
/** True when fnName references an existing author-declared C++ function (from
|
|
38
|
+
* an on:* attribute like on:click="saveSettings"). When true, the emitter
|
|
39
|
+
* must NOT synthesize a wrapper void fnName() {...} — the function exists. */
|
|
40
|
+
isNamedRef?: boolean;
|
|
41
|
+
}
|
|
42
|
+
export declare function recordClickHandler(spec: ClickHandlerSpec): void;
|
|
43
|
+
export declare function clickHandlers(): ClickHandlerSpec[];
|
|
44
|
+
/** Max node index that has a click handler (for sizing the handler array). */
|
|
45
|
+
export declare function maxClickNodeIndex(): number;
|
|
46
|
+
export interface WatchPinSpec {
|
|
47
|
+
pin: string;
|
|
48
|
+
/** Function name of the generated async watcher task. */
|
|
49
|
+
fnName: string;
|
|
50
|
+
/** C++ body of the callback (legacy string bake). Prefer bodyStatements. */
|
|
51
|
+
callbackBody: string;
|
|
52
|
+
/** Statement IR for the callback body (main pipeline). */
|
|
53
|
+
bodyStatements?: StatementIR[];
|
|
54
|
+
/** Source span of the original callback arrow/function, when known. */
|
|
55
|
+
sourceSpan?: SourceSpan;
|
|
56
|
+
}
|
|
57
|
+
export declare function recordWatchPin(spec: WatchPinSpec): void;
|
|
58
|
+
export declare function watchPinSpecs(): WatchPinSpec[];
|
|
59
|
+
export declare function registerUIModuleImport(name: string, htmlPath: string): void;
|
|
60
|
+
export declare function resolveUIModuleImport(name: string): string | undefined;
|
|
61
|
+
export declare function recordSignal(name: string, cppType: string, initialValue: number | string | boolean): void;
|
|
62
|
+
/** Mark a signal as already emitted via its own var_decl (const X = ui.signal).
|
|
63
|
+
* Prevents uiSignalDecls() from double-declaring it at file scope. */
|
|
64
|
+
export declare function markSignalEmitted(name: string): void;
|
|
65
|
+
export declare function uiSignalNames(): string[];
|
|
66
|
+
/** Is `name` a recorded UI signal? Used to lower `temp()` reads → `temp`. */
|
|
67
|
+
export declare function isSignalName(name: string): boolean;
|
|
68
|
+
/** The recorded C++ type of a signal, or undefined if not a signal.
|
|
69
|
+
* Used by the text-binding lowerer to pick %d vs %g (spec §5.3). */
|
|
70
|
+
export declare function signalCppType(name: string): string | undefined;
|
|
71
|
+
export declare function uiSignalDecls(): string[];
|
|
72
|
+
export declare function recordBinding(spec: BindingSpec): void;
|
|
73
|
+
export declare function uiBindings(): BindingSpec[];
|
|
74
|
+
export declare function markRunNode(nodeIndex: number): void;
|
|
75
|
+
export declare function isRunNode(nodeIndex: number): boolean;
|
|
76
|
+
export interface CallResolverDiagnostic {
|
|
77
|
+
severity: "warning" | "error";
|
|
78
|
+
message: string;
|
|
79
|
+
code: string;
|
|
80
|
+
}
|
|
81
|
+
export declare function getDiagnostics(): CallResolverDiagnostic[];
|
|
82
|
+
export declare function resetUICallState(): void;
|
|
83
|
+
/** Is this call expression a `ui.<method>(...)` call? */
|
|
84
|
+
export declare function isUICall(call: ts.CallExpression): call is ts.CallExpression & {
|
|
85
|
+
expression: ts.PropertyAccessExpression;
|
|
86
|
+
};
|
|
87
|
+
export interface UICallOptions {
|
|
88
|
+
/** When the call is `const X = ui.signal(...)`, the declaration name X. */
|
|
89
|
+
constName?: string;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Resolve a ui.* call to IR. Returns null if the call is not a ui.* call
|
|
93
|
+
* (so the caller falls through to other handling).
|
|
94
|
+
*
|
|
95
|
+
* Reads the active PlatformGraphicsStrategy from the compilation context to
|
|
96
|
+
* validate the driver and resolve colors/storage.
|
|
97
|
+
*/
|
|
98
|
+
/** Push a `ui-unknown-element` error diagnostic. Used by every author-facing
|
|
99
|
+
* binding/method call site when resolveNodeIndex returns -1, so a typo'd
|
|
100
|
+
* element id fails the build instead of silently re-targeting node 0.
|
|
101
|
+
* Exported so call-statement.ts and canvas-lowering.ts can share the exact
|
|
102
|
+
* same diagnostic shape across all element-binding entry points. */
|
|
103
|
+
export declare function pushUnknownElementDiagnostic(diagnostics: Diagnostic[], callLabel: string, id: string, treeName: string): void;
|
|
104
|
+
export declare function tryResolveUICall(call: ts.CallExpression, fileName: string, sourceText: string, diagnostics: Diagnostic[], options?: UICallOptions): StatementIR | null;
|
|
105
|
+
/** Result of lowering a text-binding arrow body. */
|
|
106
|
+
export interface LoweredTextBody {
|
|
107
|
+
/** Imperative C++ statement(s) writing into `buf` (the textFn param). */
|
|
108
|
+
cppBody: string;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Lower a text-binding arrow body to an imperative C++ statement that writes
|
|
112
|
+
* into `buf` (the textFn's first parameter, size `size`). Recognizes three
|
|
113
|
+
* shapes (spec §5.2): String(<numeric>), a bare string literal, and a template
|
|
114
|
+
* literal with numeric interpolations. Anything else produces a safe no-op
|
|
115
|
+
* (`buf[0] = 0;`) plus a `ui-bind-text-unlowered` warning so the author sees it.
|
|
116
|
+
*
|
|
117
|
+
* Pure function of the AST + the recorded signal table; no side effects beyond
|
|
118
|
+
* pushing diagnostics.
|
|
119
|
+
*/
|
|
120
|
+
export declare function lowerTextBindingBody(body: ts.Expression, _fileName: string, sourceText: string, diagnostics: Diagnostic[]): LoweredTextBody;
|
|
121
|
+
/**
|
|
122
|
+
* Lower a `{expr}` interpolation text string to an imperative snprintf body
|
|
123
|
+
* that writes into `buf`/`size`. Mirrors `lowerTextBindingBody` Shape 3 but
|
|
124
|
+
* operates on a raw string (from HTML markup) rather than a TS AST node.
|
|
125
|
+
*
|
|
126
|
+
* Each `{...}` span becomes a `%d` argument (v1: numeric default — the dominant
|
|
127
|
+
* use case is counters/progress; string-signal interpolation should use the
|
|
128
|
+
* `ui.bind` path which has TS type information). Literal `%` in surrounding text
|
|
129
|
+
* is escaped to `%%` so snprintf doesn't misread it.
|
|
130
|
+
*
|
|
131
|
+
* "taps: {count}" → 'snprintf(buf, size, "taps: %d", count);'
|
|
132
|
+
* "a:{x} b:{y}" → 'snprintf(buf, size, "a:%d b:%d", x, y);'
|
|
133
|
+
* "{n}% done" → 'snprintf(buf, size, "%d%% done", n);'
|
|
134
|
+
*
|
|
135
|
+
* Empty braces `{}` are treated as literal text (not interpolation). Returns
|
|
136
|
+
* null if no interpolation is present (caller keeps the static text).
|
|
137
|
+
*/
|
|
138
|
+
export declare function lowerInterpolationText(raw: string): string | null;
|
|
139
|
+
/** Look up a node's index in its tree by element id (pre-order DFS order).
|
|
140
|
+
* Returns the node index, or `-1` if the id is not found (or the module
|
|
141
|
+
* isn't loaded). Callers must check for `-1` and emit a `ui-unknown-element`
|
|
142
|
+
* diagnostic — silently treating `-1` as a valid index would target node 0
|
|
143
|
+
* (the screen root), which is the silent-miscompilation failure mode this
|
|
144
|
+
* guard exists to prevent. */
|
|
145
|
+
export declare function resolveNodeIndex(htmlPath: string, id: string, screenId?: string): number;
|
|
146
|
+
/** Look up a node's HTML tag by element id (pre-order DFS order).
|
|
147
|
+
* Used to route generic callbacks (e.g. onChange) to the right lowering path
|
|
148
|
+
* based on element kind (range vs input). Returns "" if not found. */
|
|
149
|
+
export declare function resolveNodeTag(htmlPath: string, id: string, screenId?: string): string;
|