@a2ui/web_core 0.8.0 → 0.9.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 (436) hide show
  1. package/.tsbuildinfo +1 -0
  2. package/LICENSE +203 -0
  3. package/README.md +50 -4
  4. package/package.json +42 -72
  5. package/{dist/src → src}/v0_8/data/guards.js +13 -13
  6. package/src/v0_8/data/guards.test.d.ts +2 -0
  7. package/src/v0_8/data/guards.test.d.ts.map +1 -0
  8. package/src/v0_8/data/guards.test.js +174 -0
  9. package/src/v0_8/data/guards.test.js.map +1 -0
  10. package/{dist/src → src}/v0_8/data/model-processor.d.ts +1 -1
  11. package/{dist/src → src}/v0_8/data/model-processor.d.ts.map +1 -1
  12. package/{dist/src → src}/v0_8/data/model-processor.js +51 -40
  13. package/src/v0_8/data/model-processor.js.map +1 -0
  14. package/src/v0_8/data/model-processor.test.d.ts +2 -0
  15. package/src/v0_8/data/model-processor.test.d.ts.map +1 -0
  16. package/src/v0_8/data/model-processor.test.js +712 -0
  17. package/src/v0_8/data/model-processor.test.js.map +1 -0
  18. package/src/v0_8/errors.d.ts +35 -0
  19. package/src/v0_8/errors.d.ts.map +1 -0
  20. package/src/v0_8/errors.js +65 -0
  21. package/src/v0_8/errors.js.map +1 -0
  22. package/src/v0_8/events/validation-event.d.ts.map +1 -0
  23. package/{dist/src → src}/v0_8/events/validation-event.js.map +1 -1
  24. package/{dist/src → src}/v0_8/index.d.ts +35 -4
  25. package/{dist/src → src}/v0_8/index.d.ts.map +1 -1
  26. package/src/v0_8/index.js +28 -0
  27. package/src/v0_8/index.js.map +1 -0
  28. package/src/v0_8/schema/common-types.d.ts +1189 -0
  29. package/src/v0_8/schema/common-types.d.ts.map +1 -0
  30. package/src/v0_8/schema/common-types.js +381 -0
  31. package/src/v0_8/schema/common-types.js.map +1 -0
  32. package/src/v0_8/schema/server-to-client.d.ts +17949 -0
  33. package/src/v0_8/schema/server-to-client.d.ts.map +1 -0
  34. package/src/v0_8/schema/server-to-client.js +228 -0
  35. package/src/v0_8/schema/server-to-client.js.map +1 -0
  36. package/src/v0_8/schema/verify-schema.test.d.ts +17 -0
  37. package/src/v0_8/schema/verify-schema.test.d.ts.map +1 -0
  38. package/src/v0_8/schema/verify-schema.test.js +167 -0
  39. package/src/v0_8/schema/verify-schema.test.js.map +1 -0
  40. package/{dist/src → src}/v0_8/schemas/server_to_client.json +1 -1
  41. package/src/v0_8/schemas/server_to_client_with_standard_catalog.json +817 -787
  42. package/{dist/src → src}/v0_8/schemas/standard_catalog_definition.json +26 -0
  43. package/{dist/src → src}/v0_8/styles/behavior.js +13 -13
  44. package/{dist/src → src}/v0_8/styles/border.js +13 -13
  45. package/{dist/src → src}/v0_8/styles/colors.js +13 -13
  46. package/{dist/src → src}/v0_8/styles/colors.js.map +1 -1
  47. package/src/v0_8/styles/icons.d.ts +11 -0
  48. package/{dist/src → src}/v0_8/styles/icons.d.ts.map +1 -1
  49. package/{dist/src → src}/v0_8/styles/icons.js +17 -14
  50. package/{dist/src → src}/v0_8/styles/icons.js.map +1 -1
  51. package/src/v0_8/styles/index.js +35 -0
  52. package/{dist/src → src}/v0_8/styles/layout.js +13 -13
  53. package/{dist/src → src}/v0_8/styles/layout.js.map +1 -1
  54. package/src/v0_8/styles/opacity.js +24 -0
  55. package/src/v0_8/{events/index.ts → styles/shared.js} +3 -4
  56. package/src/v0_8/styles/styles.test.d.ts +2 -0
  57. package/src/v0_8/styles/styles.test.d.ts.map +1 -0
  58. package/src/v0_8/styles/styles.test.js +86 -0
  59. package/src/v0_8/styles/styles.test.js.map +1 -0
  60. package/{dist/src → src}/v0_8/styles/type.js +13 -13
  61. package/{dist/src → src}/v0_8/styles/utils.js +13 -13
  62. package/{dist/src → src}/v0_8/types/client-event.d.ts +10 -8
  63. package/src/v0_8/types/client-event.d.ts.map +1 -0
  64. package/src/v0_8/types/client-event.js +17 -0
  65. package/src/v0_8/types/colors.js +19 -0
  66. package/src/v0_8/types/components.d.ts +41 -0
  67. package/src/v0_8/types/components.d.ts.map +1 -0
  68. package/src/v0_8/types/components.js +17 -0
  69. package/src/v0_8/types/primitives.d.ts +9 -0
  70. package/src/v0_8/types/primitives.d.ts.map +1 -0
  71. package/src/v0_8/types/primitives.js +17 -0
  72. package/{dist/src → src}/v0_8/types/types.d.ts +44 -22
  73. package/src/v0_8/types/types.d.ts.map +1 -0
  74. package/src/v0_8/types/types.js +17 -0
  75. package/src/v0_9/basic_catalog/components/basic_components.d.ts +3359 -0
  76. package/src/v0_9/basic_catalog/components/basic_components.d.ts.map +1 -0
  77. package/src/v0_9/basic_catalog/components/basic_components.js +448 -0
  78. package/src/v0_9/basic_catalog/components/basic_components.js.map +1 -0
  79. package/src/v0_9/basic_catalog/components/basic_components.test.d.ts +2 -0
  80. package/src/v0_9/basic_catalog/components/basic_components.test.d.ts.map +1 -0
  81. package/src/v0_9/basic_catalog/components/basic_components.test.js +46 -0
  82. package/src/v0_9/basic_catalog/components/basic_components.test.js.map +1 -0
  83. package/src/v0_9/basic_catalog/expressions/expression_parser.d.ts +38 -0
  84. package/src/v0_9/basic_catalog/expressions/expression_parser.d.ts.map +1 -0
  85. package/src/v0_9/basic_catalog/expressions/expression_parser.js +294 -0
  86. package/src/v0_9/basic_catalog/expressions/expression_parser.js.map +1 -0
  87. package/src/v0_9/basic_catalog/expressions/expression_parser.test.d.ts +2 -0
  88. package/src/v0_9/basic_catalog/expressions/expression_parser.test.d.ts.map +1 -0
  89. package/src/v0_9/basic_catalog/expressions/expression_parser.test.js +126 -0
  90. package/src/v0_9/basic_catalog/expressions/expression_parser.test.js.map +1 -0
  91. package/src/v0_9/basic_catalog/functions/basic_functions.d.ts +32 -0
  92. package/src/v0_9/basic_catalog/functions/basic_functions.d.ts.map +1 -0
  93. package/src/v0_9/basic_catalog/functions/basic_functions.js +212 -0
  94. package/src/v0_9/basic_catalog/functions/basic_functions.js.map +1 -0
  95. package/src/v0_9/basic_catalog/functions/basic_functions.test.d.ts +2 -0
  96. package/src/v0_9/basic_catalog/functions/basic_functions.test.d.ts.map +1 -0
  97. package/src/v0_9/basic_catalog/functions/basic_functions.test.js +301 -0
  98. package/src/v0_9/basic_catalog/functions/basic_functions.test.js.map +1 -0
  99. package/src/v0_9/basic_catalog/functions/basic_functions_api.d.ts +930 -0
  100. package/src/v0_9/basic_catalog/functions/basic_functions_api.d.ts.map +1 -0
  101. package/src/v0_9/basic_catalog/functions/basic_functions_api.js +466 -0
  102. package/src/v0_9/basic_catalog/functions/basic_functions_api.js.map +1 -0
  103. package/src/v0_9/basic_catalog/index.d.ts +5 -0
  104. package/src/v0_9/basic_catalog/index.d.ts.map +1 -0
  105. package/src/v0_9/basic_catalog/index.js +20 -0
  106. package/src/v0_9/basic_catalog/index.js.map +1 -0
  107. package/src/v0_9/catalog/function_invoker.d.ts +12 -0
  108. package/src/v0_9/catalog/function_invoker.d.ts.map +1 -0
  109. package/src/v0_9/catalog/function_invoker.js +17 -0
  110. package/src/v0_9/catalog/function_invoker.js.map +1 -0
  111. package/src/v0_9/catalog/types.d.ts +80 -0
  112. package/src/v0_9/catalog/types.d.ts.map +1 -0
  113. package/src/v0_9/catalog/types.js +68 -0
  114. package/src/v0_9/catalog/types.js.map +1 -0
  115. package/src/v0_9/catalog/types.test.d.ts +2 -0
  116. package/src/v0_9/catalog/types.test.d.ts.map +1 -0
  117. package/src/v0_9/catalog/types.test.js +88 -0
  118. package/src/v0_9/catalog/types.test.js.map +1 -0
  119. package/src/v0_9/common/events.d.ts +45 -0
  120. package/src/v0_9/common/events.d.ts.map +1 -0
  121. package/src/v0_9/common/events.js +58 -0
  122. package/src/v0_9/common/events.js.map +1 -0
  123. package/src/v0_9/common/events.test.d.ts +2 -0
  124. package/src/v0_9/common/events.test.d.ts.map +1 -0
  125. package/src/v0_9/common/events.test.js +58 -0
  126. package/src/v0_9/common/events.test.js.map +1 -0
  127. package/src/v0_9/errors.d.ts +40 -0
  128. package/src/v0_9/errors.d.ts.map +1 -0
  129. package/src/v0_9/errors.js +69 -0
  130. package/src/v0_9/errors.js.map +1 -0
  131. package/src/v0_9/index.d.ts +152 -0
  132. package/src/v0_9/index.d.ts.map +1 -0
  133. package/src/v0_9/index.js +41 -0
  134. package/src/v0_9/index.js.map +1 -0
  135. package/src/v0_9/processing/message-processor.d.ts +70 -0
  136. package/src/v0_9/processing/message-processor.d.ts.map +1 -0
  137. package/src/v0_9/processing/message-processor.js +289 -0
  138. package/src/v0_9/processing/message-processor.js.map +1 -0
  139. package/src/v0_9/processing/message-processor.test.js +547 -0
  140. package/src/v0_9/processing/message-processor.test.js.map +1 -0
  141. package/src/v0_9/reactivity/signals.d.ts +43 -0
  142. package/src/v0_9/reactivity/signals.d.ts.map +1 -0
  143. package/src/v0_9/reactivity/signals.js +17 -0
  144. package/src/v0_9/reactivity/signals.js.map +1 -0
  145. package/src/v0_9/reactivity/signals.test.d.ts +17 -0
  146. package/src/v0_9/reactivity/signals.test.d.ts.map +1 -0
  147. package/src/v0_9/reactivity/signals.test.js +100 -0
  148. package/src/v0_9/reactivity/signals.test.js.map +1 -0
  149. package/src/v0_9/rendering/component-context.d.ts +35 -0
  150. package/src/v0_9/rendering/component-context.d.ts.map +1 -0
  151. package/src/v0_9/rendering/component-context.js +49 -0
  152. package/src/v0_9/rendering/component-context.js.map +1 -0
  153. package/src/v0_9/rendering/component-context.test.d.ts +2 -0
  154. package/src/v0_9/rendering/component-context.test.d.ts.map +1 -0
  155. package/src/v0_9/rendering/component-context.test.js +55 -0
  156. package/src/v0_9/rendering/component-context.test.js.map +1 -0
  157. package/src/v0_9/rendering/data-context.d.ts +99 -0
  158. package/src/v0_9/rendering/data-context.d.ts.map +1 -0
  159. package/src/v0_9/rendering/data-context.js +310 -0
  160. package/src/v0_9/rendering/data-context.js.map +1 -0
  161. package/src/v0_9/rendering/data-context.test.js +379 -0
  162. package/src/v0_9/rendering/data-context.test.js.map +1 -0
  163. package/src/v0_9/rendering/generic-binder.d.ts +122 -0
  164. package/src/v0_9/rendering/generic-binder.d.ts.map +1 -0
  165. package/src/v0_9/rendering/generic-binder.js +315 -0
  166. package/src/v0_9/rendering/generic-binder.js.map +1 -0
  167. package/src/v0_9/rendering/generic-binder.test.d.ts +2 -0
  168. package/src/v0_9/rendering/generic-binder.test.d.ts.map +1 -0
  169. package/src/v0_9/rendering/generic-binder.test.js +166 -0
  170. package/src/v0_9/rendering/generic-binder.test.js.map +1 -0
  171. package/src/v0_9/schema/client-capabilities.d.ts +34 -0
  172. package/src/v0_9/schema/client-capabilities.d.ts.map +1 -0
  173. package/src/v0_9/schema/client-capabilities.js +17 -0
  174. package/src/v0_9/schema/client-capabilities.js.map +1 -0
  175. package/src/v0_9/schema/client-to-server.d.ts +208 -0
  176. package/src/v0_9/schema/client-to-server.d.ts.map +1 -0
  177. package/src/v0_9/schema/client-to-server.js +104 -0
  178. package/src/v0_9/schema/client-to-server.js.map +1 -0
  179. package/src/v0_9/schema/client-to-server.test.d.ts +2 -0
  180. package/src/v0_9/schema/client-to-server.test.d.ts.map +1 -0
  181. package/src/v0_9/schema/client-to-server.test.js +85 -0
  182. package/src/v0_9/schema/client-to-server.test.js.map +1 -0
  183. package/{dist/src → src}/v0_9/schema/common-types.d.ts +318 -88
  184. package/src/v0_9/schema/common-types.d.ts.map +1 -0
  185. package/src/v0_9/schema/common-types.js +141 -0
  186. package/src/v0_9/schema/common-types.js.map +1 -0
  187. package/src/v0_9/schema/index.d.ts +5 -0
  188. package/src/v0_9/schema/index.d.ts.map +1 -0
  189. package/src/v0_9/schema/index.js +20 -0
  190. package/src/v0_9/schema/index.js.map +1 -0
  191. package/src/v0_9/schema/server-to-client.d.ts +307 -0
  192. package/src/v0_9/schema/server-to-client.d.ts.map +1 -0
  193. package/src/v0_9/schema/server-to-client.js +92 -0
  194. package/src/v0_9/schema/server-to-client.js.map +1 -0
  195. package/src/v0_9/schema/verify-schema.test.d.ts +17 -0
  196. package/src/v0_9/schema/verify-schema.test.d.ts.map +1 -0
  197. package/src/v0_9/schema/verify-schema.test.js +174 -0
  198. package/src/v0_9/schema/verify-schema.test.js.map +1 -0
  199. package/src/v0_9/schemas/basic_catalog.json +1387 -0
  200. package/src/v0_9/schemas/client_capabilities.json +97 -0
  201. package/src/v0_9/schemas/client_data_model.json +22 -0
  202. package/src/v0_9/schemas/client_to_server.json +104 -0
  203. package/src/v0_9/schemas/client_to_server_list.json +10 -0
  204. package/src/v0_9/schemas/common_types.json +315 -0
  205. package/src/v0_9/schemas/sample.json +22 -0
  206. package/src/v0_9/schemas/server_capabilities.json +26 -0
  207. package/src/v0_9/schemas/server_to_client.json +131 -0
  208. package/src/v0_9/schemas/server_to_client_list.json +10 -0
  209. package/src/v0_9/state/component-model.d.ts +36 -0
  210. package/src/v0_9/state/component-model.d.ts.map +1 -0
  211. package/src/v0_9/state/component-model.js +65 -0
  212. package/src/v0_9/state/component-model.js.map +1 -0
  213. package/{dist/src → src}/v0_9/state/component-model.test.js +23 -0
  214. package/src/v0_9/state/component-model.test.js.map +1 -0
  215. package/src/v0_9/state/data-model.d.ts +75 -0
  216. package/src/v0_9/state/data-model.d.ts.map +1 -0
  217. package/src/v0_9/state/data-model.js +235 -0
  218. package/src/v0_9/state/data-model.js.map +1 -0
  219. package/{dist/src → src}/v0_9/state/data-model.test.js +77 -17
  220. package/src/v0_9/state/data-model.test.js.map +1 -0
  221. package/src/v0_9/state/surface-components-model.d.ts +45 -0
  222. package/src/v0_9/state/surface-components-model.d.ts.map +1 -0
  223. package/src/v0_9/state/surface-components-model.js +86 -0
  224. package/src/v0_9/state/surface-components-model.js.map +1 -0
  225. package/{dist/src → src}/v0_9/state/surface-components-model.test.js +44 -2
  226. package/src/v0_9/state/surface-components-model.test.js.map +1 -0
  227. package/{dist/src → src}/v0_9/state/surface-group-model.d.ts +28 -1
  228. package/src/v0_9/state/surface-group-model.d.ts.map +1 -0
  229. package/{dist/src → src}/v0_9/state/surface-group-model.js +44 -1
  230. package/src/v0_9/state/surface-group-model.js.map +1 -0
  231. package/{dist/src → src}/v0_9/state/surface-group-model.test.js +47 -6
  232. package/src/v0_9/state/surface-group-model.test.js.map +1 -0
  233. package/src/v0_9/state/surface-model.d.ts +62 -0
  234. package/src/v0_9/state/surface-model.d.ts.map +1 -0
  235. package/src/v0_9/state/surface-model.js +101 -0
  236. package/src/v0_9/state/surface-model.js.map +1 -0
  237. package/src/v0_9/state/surface-model.test.js +93 -0
  238. package/src/v0_9/state/surface-model.test.js.map +1 -0
  239. package/src/v0_9/test/function_execution.spec.d.ts +17 -0
  240. package/src/v0_9/test/function_execution.spec.d.ts.map +1 -0
  241. package/src/v0_9/test/function_execution.spec.js +127 -0
  242. package/src/v0_9/test/function_execution.spec.js.map +1 -0
  243. package/src/v0_9/test/test-utils.d.ts.map +1 -0
  244. package/{dist/src → src}/v0_9/test/test-utils.js +15 -0
  245. package/src/v0_9/test/test-utils.js.map +1 -0
  246. package/dist/.tsbuildinfo +0 -1
  247. package/dist/src/v0_8/data/model-processor.js.map +0 -1
  248. package/dist/src/v0_8/events/validation-event.d.ts.map +0 -1
  249. package/dist/src/v0_8/index.js +0 -12
  250. package/dist/src/v0_8/index.js.map +0 -1
  251. package/dist/src/v0_8/schemas/server_to_client_with_standard_catalog.json +0 -823
  252. package/dist/src/v0_8/styles/icons.d.ts +0 -11
  253. package/dist/src/v0_8/styles/index.js +0 -35
  254. package/dist/src/v0_8/styles/opacity.js +0 -24
  255. package/dist/src/v0_8/styles/shared.js +0 -17
  256. package/dist/src/v0_8/types/client-event.d.ts.map +0 -1
  257. package/dist/src/v0_8/types/client-event.js +0 -17
  258. package/dist/src/v0_8/types/colors.js +0 -19
  259. package/dist/src/v0_8/types/components.d.ts +0 -176
  260. package/dist/src/v0_8/types/components.d.ts.map +0 -1
  261. package/dist/src/v0_8/types/components.js +0 -17
  262. package/dist/src/v0_8/types/primitives.d.ts +0 -43
  263. package/dist/src/v0_8/types/primitives.d.ts.map +0 -1
  264. package/dist/src/v0_8/types/primitives.js +0 -17
  265. package/dist/src/v0_8/types/types.d.ts.map +0 -1
  266. package/dist/src/v0_8/types/types.js +0 -17
  267. package/dist/src/v0_9/catalog/types.d.ts +0 -27
  268. package/dist/src/v0_9/catalog/types.d.ts.map +0 -1
  269. package/dist/src/v0_9/catalog/types.js +0 -11
  270. package/dist/src/v0_9/catalog/types.js.map +0 -1
  271. package/dist/src/v0_9/common/events.d.ts +0 -24
  272. package/dist/src/v0_9/common/events.d.ts.map +0 -1
  273. package/dist/src/v0_9/common/events.js +0 -29
  274. package/dist/src/v0_9/common/events.js.map +0 -1
  275. package/dist/src/v0_9/index.d.ts +0 -11
  276. package/dist/src/v0_9/index.d.ts.map +0 -1
  277. package/dist/src/v0_9/index.js +0 -11
  278. package/dist/src/v0_9/index.js.map +0 -1
  279. package/dist/src/v0_9/processing/message-processor.d.ts +0 -34
  280. package/dist/src/v0_9/processing/message-processor.d.ts.map +0 -1
  281. package/dist/src/v0_9/processing/message-processor.js +0 -128
  282. package/dist/src/v0_9/processing/message-processor.js.map +0 -1
  283. package/dist/src/v0_9/processing/message-processor.test.js +0 -112
  284. package/dist/src/v0_9/processing/message-processor.test.js.map +0 -1
  285. package/dist/src/v0_9/rendering/component-context.d.ts +0 -17
  286. package/dist/src/v0_9/rendering/component-context.d.ts.map +0 -1
  287. package/dist/src/v0_9/rendering/component-context.js +0 -21
  288. package/dist/src/v0_9/rendering/component-context.js.map +0 -1
  289. package/dist/src/v0_9/rendering/data-context.d.ts +0 -37
  290. package/dist/src/v0_9/rendering/data-context.d.ts.map +0 -1
  291. package/dist/src/v0_9/rendering/data-context.js +0 -97
  292. package/dist/src/v0_9/rendering/data-context.js.map +0 -1
  293. package/dist/src/v0_9/rendering/data-context.test.js +0 -71
  294. package/dist/src/v0_9/rendering/data-context.test.js.map +0 -1
  295. package/dist/src/v0_9/schema/common-types.d.ts.map +0 -1
  296. package/dist/src/v0_9/schema/common-types.js +0 -92
  297. package/dist/src/v0_9/schema/common-types.js.map +0 -1
  298. package/dist/src/v0_9/schema/index.d.ts +0 -3
  299. package/dist/src/v0_9/schema/index.d.ts.map +0 -1
  300. package/dist/src/v0_9/schema/index.js +0 -3
  301. package/dist/src/v0_9/schema/index.js.map +0 -1
  302. package/dist/src/v0_9/schema/server-to-client.d.ts +0 -84
  303. package/dist/src/v0_9/schema/server-to-client.d.ts.map +0 -1
  304. package/dist/src/v0_9/schema/server-to-client.js +0 -21
  305. package/dist/src/v0_9/schema/server-to-client.js.map +0 -1
  306. package/dist/src/v0_9/state/component-model.d.ts +0 -16
  307. package/dist/src/v0_9/state/component-model.d.ts.map +0 -1
  308. package/dist/src/v0_9/state/component-model.js +0 -24
  309. package/dist/src/v0_9/state/component-model.js.map +0 -1
  310. package/dist/src/v0_9/state/component-model.test.js.map +0 -1
  311. package/dist/src/v0_9/state/data-model.d.ts +0 -47
  312. package/dist/src/v0_9/state/data-model.d.ts.map +0 -1
  313. package/dist/src/v0_9/state/data-model.js +0 -191
  314. package/dist/src/v0_9/state/data-model.js.map +0 -1
  315. package/dist/src/v0_9/state/data-model.test.js.map +0 -1
  316. package/dist/src/v0_9/state/surface-components-model.d.ts +0 -19
  317. package/dist/src/v0_9/state/surface-components-model.d.ts.map +0 -1
  318. package/dist/src/v0_9/state/surface-components-model.js +0 -42
  319. package/dist/src/v0_9/state/surface-components-model.js.map +0 -1
  320. package/dist/src/v0_9/state/surface-components-model.test.js.map +0 -1
  321. package/dist/src/v0_9/state/surface-group-model.d.ts.map +0 -1
  322. package/dist/src/v0_9/state/surface-group-model.js.map +0 -1
  323. package/dist/src/v0_9/state/surface-group-model.test.js.map +0 -1
  324. package/dist/src/v0_9/state/surface-model.d.ts +0 -23
  325. package/dist/src/v0_9/state/surface-model.d.ts.map +0 -1
  326. package/dist/src/v0_9/state/surface-model.js +0 -28
  327. package/dist/src/v0_9/state/surface-model.js.map +0 -1
  328. package/dist/src/v0_9/state/surface-model.test.js +0 -39
  329. package/dist/src/v0_9/state/surface-model.test.js.map +0 -1
  330. package/dist/src/v0_9/test/test-utils.d.ts.map +0 -1
  331. package/dist/src/v0_9/test/test-utils.js.map +0 -1
  332. package/src/v0_8/data/guards.ts +0 -236
  333. package/src/v0_8/data/model-processor.ts +0 -855
  334. package/src/v0_8/events/base.ts +0 -24
  335. package/src/v0_8/events/validation-event.ts +0 -66
  336. package/src/v0_8/index.ts +0 -12
  337. package/src/v0_8/styles/behavior.ts +0 -55
  338. package/src/v0_8/styles/border.ts +0 -42
  339. package/src/v0_8/styles/colors.ts +0 -100
  340. package/src/v0_8/styles/icons.ts +0 -60
  341. package/src/v0_8/styles/index.ts +0 -37
  342. package/src/v0_8/styles/layout.ts +0 -235
  343. package/src/v0_8/styles/opacity.ts +0 -24
  344. package/src/v0_8/styles/shared.ts +0 -17
  345. package/src/v0_8/styles/type.ts +0 -156
  346. package/src/v0_8/styles/utils.ts +0 -104
  347. package/src/v0_8/types/client-event.ts +0 -80
  348. package/src/v0_8/types/colors.ts +0 -66
  349. package/src/v0_8/types/components.ts +0 -213
  350. package/src/v0_8/types/primitives.ts +0 -60
  351. package/src/v0_8/types/types.ts +0 -557
  352. package/src/v0_9/catalog/types.ts +0 -38
  353. package/src/v0_9/common/events.ts +0 -44
  354. package/src/v0_9/index.ts +0 -12
  355. package/src/v0_9/processing/message-processor.test.ts +0 -133
  356. package/src/v0_9/processing/message-processor.ts +0 -150
  357. package/src/v0_9/rendering/component-context.ts +0 -36
  358. package/src/v0_9/rendering/data-context.test.ts +0 -85
  359. package/src/v0_9/rendering/data-context.ts +0 -110
  360. package/src/v0_9/schema/common-types.ts +0 -125
  361. package/src/v0_9/schema/index.ts +0 -2
  362. package/src/v0_9/schema/server-to-client.ts +0 -23
  363. package/src/v0_9/state/component-model.test.ts +0 -50
  364. package/src/v0_9/state/component-model.ts +0 -32
  365. package/src/v0_9/state/data-model.test.ts +0 -257
  366. package/src/v0_9/state/data-model.ts +0 -239
  367. package/src/v0_9/state/surface-components-model.test.ts +0 -59
  368. package/src/v0_9/state/surface-components-model.ts +0 -48
  369. package/src/v0_9/state/surface-group-model.test.ts +0 -82
  370. package/src/v0_9/state/surface-group-model.ts +0 -66
  371. package/src/v0_9/state/surface-model.test.ts +0 -44
  372. package/src/v0_9/state/surface-model.ts +0 -39
  373. package/src/v0_9/test/test-utils.ts +0 -22
  374. /package/{dist/src → src}/v0_8/data/guards.d.ts +0 -0
  375. /package/{dist/src → src}/v0_8/data/guards.d.ts.map +0 -0
  376. /package/{dist/src → src}/v0_8/data/guards.js.map +0 -0
  377. /package/{dist/src → src}/v0_8/events/base.d.ts +0 -0
  378. /package/{dist/src → src}/v0_8/events/base.d.ts.map +0 -0
  379. /package/{dist/src → src}/v0_8/events/base.js +0 -0
  380. /package/{dist/src → src}/v0_8/events/base.js.map +0 -0
  381. /package/{dist/src → src}/v0_8/events/index.d.ts +0 -0
  382. /package/{dist/src → src}/v0_8/events/index.d.ts.map +0 -0
  383. /package/{dist/src → src}/v0_8/events/index.js +0 -0
  384. /package/{dist/src → src}/v0_8/events/index.js.map +0 -0
  385. /package/{dist/src → src}/v0_8/events/validation-event.d.ts +0 -0
  386. /package/{dist/src → src}/v0_8/events/validation-event.js +0 -0
  387. /package/{dist/src → src}/v0_8/schemas/a2ui_client_capabilities_schema.json +0 -0
  388. /package/{dist/src → src}/v0_8/schemas/catalog_description_schema.json +0 -0
  389. /package/{dist/src → src}/v0_8/schemas/client_to_server.json +0 -0
  390. /package/{dist/src → src}/v0_8/styles/behavior.d.ts +0 -0
  391. /package/{dist/src → src}/v0_8/styles/behavior.d.ts.map +0 -0
  392. /package/{dist/src → src}/v0_8/styles/behavior.js.map +0 -0
  393. /package/{dist/src → src}/v0_8/styles/border.d.ts +0 -0
  394. /package/{dist/src → src}/v0_8/styles/border.d.ts.map +0 -0
  395. /package/{dist/src → src}/v0_8/styles/border.js.map +0 -0
  396. /package/{dist/src → src}/v0_8/styles/colors.d.ts +0 -0
  397. /package/{dist/src → src}/v0_8/styles/colors.d.ts.map +0 -0
  398. /package/{dist/src → src}/v0_8/styles/index.d.ts +0 -0
  399. /package/{dist/src → src}/v0_8/styles/index.d.ts.map +0 -0
  400. /package/{dist/src → src}/v0_8/styles/index.js.map +0 -0
  401. /package/{dist/src → src}/v0_8/styles/layout.d.ts +0 -0
  402. /package/{dist/src → src}/v0_8/styles/layout.d.ts.map +0 -0
  403. /package/{dist/src → src}/v0_8/styles/opacity.d.ts +0 -0
  404. /package/{dist/src → src}/v0_8/styles/opacity.d.ts.map +0 -0
  405. /package/{dist/src → src}/v0_8/styles/opacity.js.map +0 -0
  406. /package/{dist/src → src}/v0_8/styles/shared.d.ts +0 -0
  407. /package/{dist/src → src}/v0_8/styles/shared.d.ts.map +0 -0
  408. /package/{dist/src → src}/v0_8/styles/shared.js.map +0 -0
  409. /package/{dist/src → src}/v0_8/styles/type.d.ts +0 -0
  410. /package/{dist/src → src}/v0_8/styles/type.d.ts.map +0 -0
  411. /package/{dist/src → src}/v0_8/styles/type.js.map +0 -0
  412. /package/{dist/src → src}/v0_8/styles/utils.d.ts +0 -0
  413. /package/{dist/src → src}/v0_8/styles/utils.d.ts.map +0 -0
  414. /package/{dist/src → src}/v0_8/styles/utils.js.map +0 -0
  415. /package/{dist/src → src}/v0_8/types/client-event.js.map +0 -0
  416. /package/{dist/src → src}/v0_8/types/colors.d.ts +0 -0
  417. /package/{dist/src → src}/v0_8/types/colors.d.ts.map +0 -0
  418. /package/{dist/src → src}/v0_8/types/colors.js.map +0 -0
  419. /package/{dist/src → src}/v0_8/types/components.js.map +0 -0
  420. /package/{dist/src → src}/v0_8/types/primitives.js.map +0 -0
  421. /package/{dist/src → src}/v0_8/types/types.js.map +0 -0
  422. /package/{dist/src → src}/v0_9/processing/message-processor.test.d.ts +0 -0
  423. /package/{dist/src → src}/v0_9/processing/message-processor.test.d.ts.map +0 -0
  424. /package/{dist/src → src}/v0_9/rendering/data-context.test.d.ts +0 -0
  425. /package/{dist/src → src}/v0_9/rendering/data-context.test.d.ts.map +0 -0
  426. /package/{dist/src → src}/v0_9/state/component-model.test.d.ts +0 -0
  427. /package/{dist/src → src}/v0_9/state/component-model.test.d.ts.map +0 -0
  428. /package/{dist/src → src}/v0_9/state/data-model.test.d.ts +0 -0
  429. /package/{dist/src → src}/v0_9/state/data-model.test.d.ts.map +0 -0
  430. /package/{dist/src → src}/v0_9/state/surface-components-model.test.d.ts +0 -0
  431. /package/{dist/src → src}/v0_9/state/surface-components-model.test.d.ts.map +0 -0
  432. /package/{dist/src → src}/v0_9/state/surface-group-model.test.d.ts +0 -0
  433. /package/{dist/src → src}/v0_9/state/surface-group-model.test.d.ts.map +0 -0
  434. /package/{dist/src → src}/v0_9/state/surface-model.test.d.ts +0 -0
  435. /package/{dist/src → src}/v0_9/state/surface-model.test.d.ts.map +0 -0
  436. /package/{dist/src → src}/v0_9/test/test-utils.d.ts +0 -0
@@ -0,0 +1,379 @@
1
+ /*
2
+ * Copyright 2025 Google LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import assert from 'node:assert';
17
+ import { describe, it, beforeEach } from 'node:test';
18
+ import { signal, computed } from '@preact/signals-core';
19
+ import { z } from 'zod';
20
+ import { DataModel } from '../state/data-model.js';
21
+ import { DataContext } from './data-context.js';
22
+ import { A2uiExpressionError } from '../errors.js';
23
+ const createTestDataContext = (model, path, functionInvoker = () => null, dispatchError = () => { }) => {
24
+ const mockSurface = {
25
+ dataModel: model,
26
+ catalog: { invoker: functionInvoker },
27
+ dispatchError,
28
+ };
29
+ return new DataContext(mockSurface, path);
30
+ };
31
+ describe('DataContext', () => {
32
+ let model;
33
+ let context;
34
+ beforeEach(() => {
35
+ model = new DataModel({
36
+ user: {
37
+ name: 'Alice',
38
+ address: {
39
+ city: 'Wonderland',
40
+ },
41
+ },
42
+ list: ['a', 'b'],
43
+ });
44
+ context = createTestDataContext(model, '/user');
45
+ });
46
+ it('resolves relative paths', () => {
47
+ assert.strictEqual(context.resolveDynamicValue({ path: 'name' }), 'Alice');
48
+ });
49
+ it('resolves absolute paths', () => {
50
+ assert.strictEqual(context.resolveDynamicValue({ path: '/list/0' }), 'a');
51
+ });
52
+ it('resolves nested paths', () => {
53
+ assert.strictEqual(context.resolveDynamicValue({ path: 'address/city' }), 'Wonderland');
54
+ });
55
+ it('updates data via relative path', () => {
56
+ context.set('name', 'Bob');
57
+ assert.strictEqual(model.get('/user/name'), 'Bob');
58
+ });
59
+ it('creates nested context', () => {
60
+ const addressContext = context.nested('address');
61
+ assert.strictEqual(addressContext.path, '/user/address');
62
+ assert.strictEqual(addressContext.resolveDynamicValue({ path: 'city' }), 'Wonderland');
63
+ });
64
+ it('handles root context', () => {
65
+ const rootContext = createTestDataContext(model, '/');
66
+ assert.strictEqual(rootContext.resolveDynamicValue({ path: 'user/name' }), 'Alice');
67
+ });
68
+ it('subscribes relative path', () => {
69
+ let called = false;
70
+ context.subscribeDynamicValue({ path: 'name' }, val => {
71
+ assert.strictEqual(val, 'Charlie');
72
+ called = true;
73
+ });
74
+ context.set('name', 'Charlie');
75
+ assert.strictEqual(called, true, 'Callback was never called');
76
+ });
77
+ it('resolves using resolveDynamicValue() method with literals', () => {
78
+ // Literal
79
+ assert.strictEqual(context.resolveDynamicValue('literal'), 'literal');
80
+ // Path
81
+ assert.strictEqual(context.resolveDynamicValue({ path: 'name' }), 'Alice');
82
+ // Absolute Path
83
+ assert.strictEqual(context.resolveDynamicValue({ path: '/list/0' }), 'a');
84
+ });
85
+ it('resolves literal arrays', () => {
86
+ assert.deepStrictEqual(context.resolveDynamicValue(['literal', 'array']), [
87
+ 'literal',
88
+ 'array',
89
+ ]);
90
+ });
91
+ it('subscribes literal arrays as static', () => {
92
+ let called = false;
93
+ const sub = context.subscribeDynamicValue(['literal', 'array'], () => {
94
+ called = true;
95
+ });
96
+ assert.deepStrictEqual(sub.value, ['literal', 'array']);
97
+ // Simulate some generic path update that shouldn't trigger anything for this static sub
98
+ context.set('name', 'Charlie');
99
+ assert.strictEqual(called, false);
100
+ });
101
+ it('resolves function calls synchronously', () => {
102
+ const fnInvoker = (name, args) => {
103
+ if (name === 'add')
104
+ return args.a + args.b;
105
+ return null;
106
+ };
107
+ const ctx = createTestDataContext(model, '/user', fnInvoker);
108
+ const result = ctx.resolveDynamicValue({
109
+ call: 'add',
110
+ args: { a: 1, b: 2 },
111
+ returnType: 'any',
112
+ });
113
+ assert.strictEqual(result, 3);
114
+ });
115
+ it('dispatches generic error on function call without invoker synchronously', () => {
116
+ let dispatchedError = null;
117
+ const ctx = createTestDataContext(model, '/user', () => {
118
+ throw new Error('Function invoker is not configured');
119
+ }, err => {
120
+ dispatchedError = err;
121
+ });
122
+ const result = ctx.resolveDynamicValue({
123
+ call: 'add',
124
+ args: {},
125
+ returnType: 'any',
126
+ });
127
+ assert.strictEqual(result, undefined);
128
+ assert.ok(dispatchedError);
129
+ assert.strictEqual(dispatchedError.code, 'EXPRESSION_ERROR');
130
+ });
131
+ it('does not resolve arbitrary objects recursively', () => {
132
+ const obj = {
133
+ foo: 'bar',
134
+ nested: { path: 'name' },
135
+ list: [{ path: 'address/city' }, 'literal'],
136
+ };
137
+ const resolved = context.resolveDynamicValue(obj);
138
+ assert.deepStrictEqual(resolved, obj);
139
+ });
140
+ it('subscribes to literal objects as signals without resolution', () => {
141
+ const obj = { foo: 'bar', nested: { path: 'name' } };
142
+ const sig = context.resolveSignal(obj);
143
+ // It should be a literal signal containing the object
144
+ assert.deepStrictEqual(sig.peek(), obj);
145
+ // Updating the path should NOT affect it
146
+ context.set('name', 'Bob');
147
+ assert.deepStrictEqual(sig.peek(), obj);
148
+ });
149
+ it('subscribes to function calls with no args', () => {
150
+ const fnInvoker = (name) => (name === 'getPi' ? Math.PI : 0);
151
+ const ctx = createTestDataContext(model, '/', fnInvoker);
152
+ let called = false;
153
+ ctx.subscribeDynamicValue({ call: 'getPi', args: {}, returnType: 'any' }, () => {
154
+ called = true;
155
+ });
156
+ assert.strictEqual(called, false);
157
+ });
158
+ it('returns undefined on function call without invoker reactively', () => {
159
+ const ctx = createTestDataContext(model, '/user', () => {
160
+ throw new Error('Function invoker is not configured');
161
+ });
162
+ const sub = ctx.subscribeDynamicValue({ call: 'add', args: {}, returnType: 'any' }, () => { });
163
+ assert.strictEqual(sub.value, undefined);
164
+ });
165
+ it('subscribes to function call returning a signal', () => {
166
+ const fnInvoker = (name) => {
167
+ if (name === 'obs')
168
+ return signal('hello');
169
+ return null;
170
+ };
171
+ const ctx = createTestDataContext(model, '/', fnInvoker);
172
+ let val;
173
+ ctx.subscribeDynamicValue({ call: 'obs', args: {}, returnType: 'any' }, v => {
174
+ val = v;
175
+ });
176
+ assert.ok(true); // Verification occurs by absence of crash, and coverage hits the switch
177
+ assert.equal(val, undefined);
178
+ });
179
+ it('subscribes to invalid dynamic value reactively (falls back to literal signal)', () => {
180
+ const obj = { unknown: 'thing' };
181
+ const sub = context.subscribeDynamicValue(obj, () => { });
182
+ assert.deepStrictEqual(sub.value, obj);
183
+ });
184
+ it('handles path resolution edge cases', () => {
185
+ assert.strictEqual(context.nested('').path, '/user');
186
+ assert.strictEqual(context.nested('.').path, '/user');
187
+ // Ensure trailing slash removal logic is hit
188
+ const rootCtx = createTestDataContext(model, '/');
189
+ assert.strictEqual(rootCtx.nested('test').path, '/test');
190
+ const trailingCtx = createTestDataContext(model, '/user/');
191
+ assert.strictEqual(trailingCtx.nested('test').path, '/user/test');
192
+ });
193
+ it('subscribes to function call with arguments reactively', () => {
194
+ const fnInvoker = (name, args) => {
195
+ if (name === 'greet')
196
+ return `Hello ${args.name}`;
197
+ return null;
198
+ };
199
+ const ctx = createTestDataContext(model, '/user', fnInvoker);
200
+ const sub = ctx.subscribeDynamicValue({ call: 'greet', args: { name: { path: 'name' } }, returnType: 'any' }, () => { });
201
+ assert.strictEqual(sub.value, 'Hello Alice');
202
+ // Update inner path
203
+ ctx.set('name', 'Bob');
204
+ assert.strictEqual(sub.value, 'Hello Bob');
205
+ sub.unsubscribe();
206
+ });
207
+ describe('resolveAction', () => {
208
+ it('resolves event actions non-recursively', () => {
209
+ const action = {
210
+ event: {
211
+ name: 'save',
212
+ context: {
213
+ id: { path: 'name' },
214
+ metadata: { nested: { path: 'something' } },
215
+ },
216
+ },
217
+ };
218
+ const resolved = context.resolveAction(action);
219
+ assert.deepStrictEqual(resolved, {
220
+ event: {
221
+ name: 'save',
222
+ context: {
223
+ id: 'Alice',
224
+ metadata: { nested: { path: 'something' } }, // Literal, NOT resolved
225
+ },
226
+ },
227
+ });
228
+ });
229
+ it('resolves functionCall actions', () => {
230
+ const fnInvoker = (name, args) => {
231
+ if (name === 'greet')
232
+ return `Hello ${args.name}`;
233
+ return null;
234
+ };
235
+ const ctx = createTestDataContext(model, '/user', fnInvoker);
236
+ const action = {
237
+ functionCall: {
238
+ call: 'greet',
239
+ args: { name: { path: 'name' } },
240
+ },
241
+ };
242
+ const resolved = ctx.resolveAction(action);
243
+ assert.strictEqual(resolved, 'Hello Alice');
244
+ });
245
+ });
246
+ describe('Error Handling', () => {
247
+ it('translates ZodError into A2uiExpressionError and dispatches error', () => {
248
+ const invokerWithZodError = () => {
249
+ throw new z.ZodError([
250
+ {
251
+ code: 'invalid_type',
252
+ expected: 'string',
253
+ received: 'number',
254
+ path: ['foo'],
255
+ message: 'Expected string, received number',
256
+ },
257
+ ]);
258
+ };
259
+ let dispatchedError = null;
260
+ const ctx = createTestDataContext(model, '/', invokerWithZodError, err => {
261
+ dispatchedError = err;
262
+ });
263
+ const result = ctx.resolveDynamicValue({
264
+ call: 'fail',
265
+ args: {},
266
+ returnType: 'any',
267
+ });
268
+ assert.strictEqual(result, undefined);
269
+ assert.ok(dispatchedError);
270
+ assert.strictEqual(dispatchedError.code, 'EXPRESSION_ERROR');
271
+ assert.strictEqual(dispatchedError.expression, 'fail');
272
+ });
273
+ it('dispatches generic Error as EXPRESSION_ERROR to surface', () => {
274
+ const invokerWithRegularError = () => {
275
+ const err = new Error('Generic failure');
276
+ err.stack = 'Mock stack trace';
277
+ throw err;
278
+ };
279
+ let dispatchedError = null;
280
+ const ctx = createTestDataContext(model, '/', invokerWithRegularError, err => {
281
+ dispatchedError = err;
282
+ });
283
+ const result = ctx.resolveDynamicValue({
284
+ call: 'fail',
285
+ args: {},
286
+ returnType: 'any',
287
+ });
288
+ assert.strictEqual(result, undefined);
289
+ assert.ok(dispatchedError);
290
+ assert.strictEqual(dispatchedError.code, 'EXPRESSION_ERROR');
291
+ assert.strictEqual(dispatchedError.expression, 'fail');
292
+ assert.strictEqual(dispatchedError.message, 'Generic failure');
293
+ assert.deepStrictEqual(dispatchedError.details, {
294
+ stack: 'Mock stack trace',
295
+ });
296
+ });
297
+ it('dispatches A2uiExpressionError to surface', () => {
298
+ const invokerWithExpressionError = () => {
299
+ throw new A2uiExpressionError('Custom expr error', 'custom_func');
300
+ };
301
+ let dispatchedError = null;
302
+ const ctx = createTestDataContext(model, '/', invokerWithExpressionError, err => {
303
+ dispatchedError = err;
304
+ });
305
+ const result = ctx.resolveDynamicValue({
306
+ call: 'fail',
307
+ args: {},
308
+ returnType: 'any',
309
+ });
310
+ assert.strictEqual(result, undefined);
311
+ assert.ok(dispatchedError);
312
+ assert.strictEqual(dispatchedError.code, 'EXPRESSION_ERROR');
313
+ assert.strictEqual(dispatchedError.expression, 'custom_func');
314
+ });
315
+ it('handles errors thrown during reactive argument resolution', () => {
316
+ const trigger = signal(false);
317
+ const fnInvoker = (name) => {
318
+ if (name === 'inner') {
319
+ return computed(() => {
320
+ if (trigger.value)
321
+ throw new A2uiExpressionError('Inner failure', 'inner_func');
322
+ return 'ok';
323
+ });
324
+ }
325
+ return 'outer-result';
326
+ };
327
+ let dispatchedError = null;
328
+ const ctx = createTestDataContext(model, '/', fnInvoker, err => {
329
+ dispatchedError = err;
330
+ });
331
+ const sub = ctx.subscribeDynamicValue({
332
+ call: 'outer',
333
+ args: {
334
+ arg: { call: 'inner', args: {} },
335
+ },
336
+ returnType: 'any',
337
+ }, () => { });
338
+ assert.strictEqual(sub.value, 'outer-result');
339
+ assert.strictEqual(dispatchedError, null);
340
+ trigger.value = true;
341
+ // Accessing sub.value or the effect running triggers the catch.
342
+ assert.strictEqual(sub.value, undefined);
343
+ assert.ok(dispatchedError);
344
+ assert.strictEqual(dispatchedError.message, 'Inner failure');
345
+ });
346
+ it('handles generic errors thrown during reactive execution', () => {
347
+ const trigger = signal(false);
348
+ const fnInvoker = (name) => {
349
+ if (name === 'inner') {
350
+ return computed(() => {
351
+ if (trigger.value)
352
+ throw new Error('Generic inner failure');
353
+ return 'ok';
354
+ });
355
+ }
356
+ return 'outer-result';
357
+ };
358
+ let dispatchedError = null;
359
+ const ctx = createTestDataContext(model, '/', fnInvoker, err => {
360
+ dispatchedError = err;
361
+ });
362
+ const sub = ctx.subscribeDynamicValue({
363
+ call: 'outer',
364
+ args: {
365
+ arg: { call: 'inner', args: {} },
366
+ },
367
+ returnType: 'any',
368
+ }, () => { });
369
+ assert.strictEqual(sub.value, 'outer-result');
370
+ assert.strictEqual(dispatchedError, null);
371
+ trigger.value = true;
372
+ assert.strictEqual(sub.value, undefined);
373
+ assert.ok(dispatchedError);
374
+ assert.strictEqual(dispatchedError.code, 'EXPRESSION_ERROR');
375
+ assert.strictEqual(dispatchedError.message, 'Generic inner failure');
376
+ });
377
+ });
378
+ });
379
+ //# sourceMappingURL=data-context.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-context.test.js","sourceRoot":"","sources":["../../../../src/v0_9/rendering/data-context.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,122 @@
1
+ /**
2
+ * Copyright 2026 Google LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ import { z } from 'zod';
17
+ import { ComponentContext } from './component-context.js';
18
+ import { Action, ChildList, DataBinding, FunctionCall } from '../schema/common-types.js';
19
+ /**
20
+ * Represents the intended runtime behavior of a property parsed from its Zod schema.
21
+ *
22
+ * - `DYNAMIC`: The property can be bound to the `DataModel` (e.g. `DynamicString`).
23
+ * The Binder will automatically subscribe to data changes and emit primitive values.
24
+ * - `ACTION`: The property represents a user interaction (e.g. `Action`).
25
+ * The Binder will resolve deep payload bindings and output a ready-to-call `() => void` closure.
26
+ * - `STRUCTURAL`: The property dictates the rendering of child components (e.g. `ChildList`).
27
+ * The Binder outputs lists of objects containing `{ id, basePath }` for structural layout.
28
+ * - `CHECKABLE`: Special property for handling validation arrays (e.g. `checks`).
29
+ * The Binder will reactively evaluate the rules and inject `isValid` and `validationErrors` booleans into the parent object.
30
+ * - `STATIC`: A primitive value that requires no reactive subscription or resolution.
31
+ * - `OBJECT` / `ARRAY`: Recursive traversal nodes for complex nested schemas.
32
+ */
33
+ export type BehaviorNode = {
34
+ type: 'DYNAMIC';
35
+ } | {
36
+ type: 'ACTION';
37
+ } | {
38
+ type: 'STRUCTURAL';
39
+ } | {
40
+ type: 'CHECKABLE';
41
+ } | {
42
+ type: 'STATIC';
43
+ } | {
44
+ type: 'OBJECT';
45
+ shape: Record<string, BehaviorNode>;
46
+ } | {
47
+ type: 'ARRAY';
48
+ element: BehaviorNode;
49
+ };
50
+ /**
51
+ * Traverses a Zod schema tree to build a `BehaviorNode` map.
52
+ *
53
+ * This allows the Generic Binder to know *how* to handle a piece of raw JSON
54
+ * data without needing hardcoded logic for every specific component type.
55
+ * It identifies core A2UI primitives (Dynamic values, Actions, ChildLists) by
56
+ * inspecting the shape of ZodUnion objects defined in `common-types.ts`.
57
+ */
58
+ export declare function scrapeSchemaBehavior(schema: z.ZodTypeAny): BehaviorNode;
59
+ type DynamicTypes = DataBinding | FunctionCall;
60
+ type IsDynamic<T> = DataBinding extends NonNullable<T> ? true : false;
61
+ /**
62
+ * Maps raw Zod inferred types to their resolved runtime equivalents.
63
+ * For example, an `Action` object becomes a callable `() => void` function.
64
+ */
65
+ export type ResolveA2uiProp<T> = [NonNullable<T>] extends [Action] ? (() => void) | Extract<T, undefined> : [NonNullable<T>] extends [ChildList] ? any | Extract<T, undefined> : Exclude<T, DynamicTypes> extends never ? any : Exclude<T, DynamicTypes>;
66
+ /**
67
+ * Automatically generates two-way binding setters for dynamic properties.
68
+ * If a schema has a `value: DynamicString`, this type generates a `setValue(val: string)` method.
69
+ */
70
+ export type GenerateSetters<T> = {
71
+ [K in keyof T as IsDynamic<T[K]> extends true ? `set${Capitalize<string & K>}` : never]-?: (value: Exclude<NonNullable<T[K]>, DynamicTypes>) => void;
72
+ };
73
+ /**
74
+ * The final output type of the Generic Binder, providing fully resolved, ready-to-use props.
75
+ * This is what framework-specific adapters (like `createReactComponent`) pass to the developer's view logic.
76
+ */
77
+ export type ResolveA2uiProps<T> = (T extends object ? {
78
+ [K in keyof T]: ResolveA2uiProp<T[K]>;
79
+ } : T) & GenerateSetters<T> & {
80
+ isValid?: boolean;
81
+ validationErrors?: string[];
82
+ };
83
+ /**
84
+ * The Generic Binder is a framework-agnostic engine that transforms raw A2UI JSON payload
85
+ * configurations into a single, cohesive reactive stream of strongly-typed `ResolvedProps`.
86
+ *
87
+ * It solves the problem of manual state management: developers do not need to write
88
+ * boilerplate code to subscribe to data paths, evaluate logic expressions, or tear down
89
+ * listeners when components unmount.
90
+ *
91
+ * Usage Flow:
92
+ * 1. Takes a `ComponentContext` (the raw JSON config) and a `Zod Schema` (the API definition).
93
+ * 2. Uses `scrapeSchemaBehavior` to analyze the schema.
94
+ * 3. Deeply iterates over the raw JSON properties, applying rules based on the scraped behavior.
95
+ * 4. Subscribes to the `DataContext` for all `DYNAMIC` and `CHECKABLE` paths.
96
+ * 5. Bundles the final resolved primitives, structural arrays, and executable Actions into `currentProps`.
97
+ * 6. Exposes a `subscribe()` interface for framework-specific adapters (React, Angular) to listen to state changes.
98
+ */
99
+ export declare class GenericBinder<T> {
100
+ private dataListeners;
101
+ private propsListeners;
102
+ currentProps: Partial<T>;
103
+ private compUnsub?;
104
+ private isConnected;
105
+ private context;
106
+ private behaviorTree;
107
+ constructor(context: ComponentContext, schema: z.ZodTypeAny);
108
+ private resolveInitialProps;
109
+ private connect;
110
+ private rebuildAllBindings;
111
+ private resolveAndBind;
112
+ private updateDeepValue;
113
+ private cloneAndUpdate;
114
+ dispose(): void;
115
+ private notify;
116
+ subscribe(listener: (props: T) => void): {
117
+ unsubscribe: () => void;
118
+ };
119
+ get snapshot(): T;
120
+ }
121
+ export {};
122
+ //# sourceMappingURL=generic-binder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"generic-binder.d.ts","sourceRoot":"","sources":["../../../../src/v0_9/rendering/generic-binder.ts"],"names":[],"mappings":"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"}