@pwfabric/runtime 0.0.0-stage → 1.0.0-rc.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 (447) hide show
  1. package/LICENSE +90 -0
  2. package/README.md +43 -2
  3. package/dist/a11y/announcer.d.ts +65 -0
  4. package/dist/a11y/announcer.js +140 -0
  5. package/dist/a11y/announcer.js.map +1 -0
  6. package/dist/a11y/contrast.d.ts +54 -0
  7. package/dist/a11y/contrast.js +93 -0
  8. package/dist/a11y/contrast.js.map +1 -0
  9. package/dist/a11y/focus.d.ts +123 -0
  10. package/dist/a11y/focus.js +282 -0
  11. package/dist/a11y/focus.js.map +1 -0
  12. package/dist/a11y/index.d.ts +21 -0
  13. package/dist/a11y/index.js +18 -0
  14. package/dist/a11y/index.js.map +1 -0
  15. package/dist/a11y/keyboard.d.ts +144 -0
  16. package/dist/a11y/keyboard.js +317 -0
  17. package/dist/a11y/keyboard.js.map +1 -0
  18. package/dist/adapters/default-image.d.ts +25 -0
  19. package/dist/adapters/default-image.js +37 -0
  20. package/dist/adapters/default-image.js.map +1 -0
  21. package/dist/adapters/index.d.ts +27 -0
  22. package/dist/adapters/index.js +28 -0
  23. package/dist/adapters/index.js.map +1 -0
  24. package/dist/adapters/next-image.d.ts +38 -0
  25. package/dist/adapters/next-image.js +124 -0
  26. package/dist/adapters/next-image.js.map +1 -0
  27. package/dist/adapters/types.d.ts +61 -0
  28. package/dist/adapters/types.js +11 -0
  29. package/dist/adapters/types.js.map +1 -0
  30. package/dist/analytics/index.d.ts +14 -0
  31. package/dist/analytics/index.js +15 -0
  32. package/dist/analytics/index.js.map +1 -0
  33. package/dist/analytics/tracker.d.ts +65 -0
  34. package/dist/analytics/tracker.js +251 -0
  35. package/dist/analytics/tracker.js.map +1 -0
  36. package/dist/analytics/types.d.ts +130 -0
  37. package/dist/analytics/types.js +11 -0
  38. package/dist/analytics/types.js.map +1 -0
  39. package/dist/auth/index.d.ts +15 -0
  40. package/dist/auth/index.js +14 -0
  41. package/dist/auth/index.js.map +1 -0
  42. package/dist/auth/provider.d.ts +132 -0
  43. package/dist/auth/provider.js +473 -0
  44. package/dist/auth/provider.js.map +1 -0
  45. package/dist/auth/types.d.ts +117 -0
  46. package/dist/auth/types.js +9 -0
  47. package/dist/auth/types.js.map +1 -0
  48. package/dist/binding/collection.d.ts +190 -0
  49. package/dist/binding/collection.js +358 -0
  50. package/dist/binding/collection.js.map +1 -0
  51. package/dist/binding/datasource.d.ts +319 -0
  52. package/dist/binding/datasource.js +556 -0
  53. package/dist/binding/datasource.js.map +1 -0
  54. package/dist/binding/engine.d.ts +65 -0
  55. package/dist/binding/engine.js +268 -0
  56. package/dist/binding/engine.js.map +1 -0
  57. package/dist/binding/expression.d.ts +150 -0
  58. package/dist/binding/expression.js +787 -0
  59. package/dist/binding/expression.js.map +1 -0
  60. package/dist/binding/index.d.ts +19 -0
  61. package/dist/binding/index.js +14 -0
  62. package/dist/binding/index.js.map +1 -0
  63. package/dist/binding/two-way.d.ts +149 -0
  64. package/dist/binding/two-way.js +462 -0
  65. package/dist/binding/two-way.js.map +1 -0
  66. package/dist/binding/types.d.ts +119 -0
  67. package/dist/binding/types.js +9 -0
  68. package/dist/binding/types.js.map +1 -0
  69. package/dist/blocks/component-types.d.ts +81 -0
  70. package/dist/blocks/component-types.js +11 -0
  71. package/dist/blocks/component-types.js.map +1 -0
  72. package/dist/blocks/composition-rules.d.ts +168 -0
  73. package/dist/blocks/composition-rules.js +391 -0
  74. package/dist/blocks/composition-rules.js.map +1 -0
  75. package/dist/blocks/hooks.d.ts +31 -0
  76. package/dist/blocks/hooks.js +42 -0
  77. package/dist/blocks/hooks.js.map +1 -0
  78. package/dist/blocks/index.d.ts +14 -0
  79. package/dist/blocks/index.js +23 -0
  80. package/dist/blocks/index.js.map +1 -0
  81. package/dist/blocks/registry.d.ts +84 -0
  82. package/dist/blocks/registry.js +136 -0
  83. package/dist/blocks/registry.js.map +1 -0
  84. package/dist/blocks/rule-engine.d.ts +131 -0
  85. package/dist/blocks/rule-engine.js +321 -0
  86. package/dist/blocks/rule-engine.js.map +1 -0
  87. package/dist/blocks/surface-event-context.d.ts +13 -0
  88. package/dist/blocks/surface-event-context.js +14 -0
  89. package/dist/blocks/surface-event-context.js.map +1 -0
  90. package/dist/blocks/surface-id-context.d.ts +13 -0
  91. package/dist/blocks/surface-id-context.js +15 -0
  92. package/dist/blocks/surface-id-context.js.map +1 -0
  93. package/dist/bus.d.ts +41 -0
  94. package/dist/bus.js +158 -0
  95. package/dist/bus.js.map +1 -0
  96. package/dist/cache/index.d.ts +9 -0
  97. package/dist/cache/index.js +10 -0
  98. package/dist/cache/index.js.map +1 -0
  99. package/dist/cache/memory.d.ts +32 -0
  100. package/dist/cache/memory.js +138 -0
  101. package/dist/cache/memory.js.map +1 -0
  102. package/dist/cache/types.d.ts +62 -0
  103. package/dist/cache/types.js +9 -0
  104. package/dist/cache/types.js.map +1 -0
  105. package/dist/capability/index.d.ts +72 -0
  106. package/dist/capability/index.js +87 -0
  107. package/dist/capability/index.js.map +1 -0
  108. package/dist/capability/kernel-capabilities.d.ts +31 -0
  109. package/dist/capability/kernel-capabilities.js +36 -0
  110. package/dist/capability/kernel-capabilities.js.map +1 -0
  111. package/dist/capability/platform-capabilities.d.ts +71 -0
  112. package/dist/capability/platform-capabilities.js +267 -0
  113. package/dist/capability/platform-capabilities.js.map +1 -0
  114. package/dist/capability/type-mapping.d.ts +70 -0
  115. package/dist/capability/type-mapping.js +107 -0
  116. package/dist/capability/type-mapping.js.map +1 -0
  117. package/dist/capability/validation.d.ts +46 -0
  118. package/dist/capability/validation.js +54 -0
  119. package/dist/capability/validation.js.map +1 -0
  120. package/dist/connectors/declared-connector.d.ts +48 -0
  121. package/dist/connectors/declared-connector.js +333 -0
  122. package/dist/connectors/declared-connector.js.map +1 -0
  123. package/dist/connectors/engine-registry.d.ts +50 -0
  124. package/dist/connectors/engine-registry.js +135 -0
  125. package/dist/connectors/engine-registry.js.map +1 -0
  126. package/dist/connectors/index.d.ts +14 -0
  127. package/dist/connectors/index.js +14 -0
  128. package/dist/connectors/index.js.map +1 -0
  129. package/dist/connectors/module-loader.d.ts +70 -0
  130. package/dist/connectors/module-loader.js +143 -0
  131. package/dist/connectors/module-loader.js.map +1 -0
  132. package/dist/connectors/types.d.ts +174 -0
  133. package/dist/connectors/types.js +23 -0
  134. package/dist/connectors/types.js.map +1 -0
  135. package/dist/context.d.ts +27 -0
  136. package/dist/context.js +38 -0
  137. package/dist/context.js.map +1 -0
  138. package/dist/data/DataCapabilityProvider.d.ts +39 -0
  139. package/dist/data/DataCapabilityProvider.js +58 -0
  140. package/dist/data/DataCapabilityProvider.js.map +1 -0
  141. package/dist/data/index.d.ts +17 -0
  142. package/dist/data/index.js +18 -0
  143. package/dist/data/index.js.map +1 -0
  144. package/dist/data/manager.d.ts +40 -0
  145. package/dist/data/manager.js +442 -0
  146. package/dist/data/manager.js.map +1 -0
  147. package/dist/data/types.d.ts +218 -0
  148. package/dist/data/types.js +2 -0
  149. package/dist/data/types.js.map +1 -0
  150. package/dist/entity/aggregate.d.ts +8 -0
  151. package/dist/entity/aggregate.js +24 -0
  152. package/dist/entity/aggregate.js.map +1 -0
  153. package/dist/entity/apply-query.d.ts +58 -0
  154. package/dist/entity/apply-query.js +264 -0
  155. package/dist/entity/apply-query.js.map +1 -0
  156. package/dist/entity/behavior.d.ts +94 -0
  157. package/dist/entity/behavior.js +78 -0
  158. package/dist/entity/behavior.js.map +1 -0
  159. package/dist/entity/connector.d.ts +141 -0
  160. package/dist/entity/connector.js +89 -0
  161. package/dist/entity/connector.js.map +1 -0
  162. package/dist/entity/connectors/index.d.ts +12 -0
  163. package/dist/entity/connectors/index.js +11 -0
  164. package/dist/entity/connectors/index.js.map +1 -0
  165. package/dist/entity/connectors/static.d.ts +51 -0
  166. package/dist/entity/connectors/static.js +245 -0
  167. package/dist/entity/connectors/static.js.map +1 -0
  168. package/dist/entity/entity-datasource.d.ts +50 -0
  169. package/dist/entity/entity-datasource.js +33 -0
  170. package/dist/entity/entity-datasource.js.map +1 -0
  171. package/dist/entity/facade.d.ts +70 -0
  172. package/dist/entity/facade.js +70 -0
  173. package/dist/entity/facade.js.map +1 -0
  174. package/dist/entity/http-connector.d.ts +123 -0
  175. package/dist/entity/http-connector.js +295 -0
  176. package/dist/entity/http-connector.js.map +1 -0
  177. package/dist/entity/index.d.ts +38 -0
  178. package/dist/entity/index.js +31 -0
  179. package/dist/entity/index.js.map +1 -0
  180. package/dist/entity/postgres-connector.d.ts +64 -0
  181. package/dist/entity/postgres-connector.js +239 -0
  182. package/dist/entity/postgres-connector.js.map +1 -0
  183. package/dist/entity/registry.d.ts +59 -0
  184. package/dist/entity/registry.js +90 -0
  185. package/dist/entity/registry.js.map +1 -0
  186. package/dist/entity/store.d.ts +66 -0
  187. package/dist/entity/store.js +349 -0
  188. package/dist/entity/store.js.map +1 -0
  189. package/dist/entity/types.d.ts +180 -0
  190. package/dist/entity/types.js +10 -0
  191. package/dist/entity/types.js.map +1 -0
  192. package/dist/execution-context.d.ts +88 -0
  193. package/dist/execution-context.js +146 -0
  194. package/dist/execution-context.js.map +1 -0
  195. package/dist/executor.d.ts +27 -0
  196. package/dist/executor.js +33 -0
  197. package/dist/executor.js.map +1 -0
  198. package/dist/forms/form-entity-bridge.d.ts +94 -0
  199. package/dist/forms/form-entity-bridge.js +96 -0
  200. package/dist/forms/form-entity-bridge.js.map +1 -0
  201. package/dist/forms/form-write-target.d.ts +34 -0
  202. package/dist/forms/form-write-target.js +81 -0
  203. package/dist/forms/form-write-target.js.map +1 -0
  204. package/dist/forms/index.d.ts +22 -0
  205. package/dist/forms/index.js +25 -0
  206. package/dist/forms/index.js.map +1 -0
  207. package/dist/forms/named-control-values.d.ts +27 -0
  208. package/dist/forms/named-control-values.js +42 -0
  209. package/dist/forms/named-control-values.js.map +1 -0
  210. package/dist/forms/processor.d.ts +55 -0
  211. package/dist/forms/processor.js +154 -0
  212. package/dist/forms/processor.js.map +1 -0
  213. package/dist/forms/types.d.ts +174 -0
  214. package/dist/forms/types.js +33 -0
  215. package/dist/forms/types.js.map +1 -0
  216. package/dist/forms/validator.d.ts +61 -0
  217. package/dist/forms/validator.js +218 -0
  218. package/dist/forms/validator.js.map +1 -0
  219. package/dist/graph/index.d.ts +10 -0
  220. package/dist/graph/index.js +9 -0
  221. package/dist/graph/index.js.map +1 -0
  222. package/dist/graph/resolver.d.ts +66 -0
  223. package/dist/graph/resolver.js +243 -0
  224. package/dist/graph/resolver.js.map +1 -0
  225. package/dist/graph/types.d.ts +125 -0
  226. package/dist/graph/types.js +9 -0
  227. package/dist/graph/types.js.map +1 -0
  228. package/dist/hooks/useInstalledAtoms.d.ts +96 -0
  229. package/dist/hooks/useInstalledAtoms.js +92 -0
  230. package/dist/hooks/useInstalledAtoms.js.map +1 -0
  231. package/dist/i18n/index.d.ts +15 -0
  232. package/dist/i18n/index.js +14 -0
  233. package/dist/i18n/index.js.map +1 -0
  234. package/dist/i18n/translator.d.ts +76 -0
  235. package/dist/i18n/translator.js +357 -0
  236. package/dist/i18n/translator.js.map +1 -0
  237. package/dist/i18n/types.d.ts +93 -0
  238. package/dist/i18n/types.js +9 -0
  239. package/dist/i18n/types.js.map +1 -0
  240. package/dist/index.d.ts +64 -0
  241. package/dist/index.js +95 -0
  242. package/dist/index.js.map +1 -0
  243. package/dist/kernel.d.ts +47 -0
  244. package/dist/kernel.js +258 -0
  245. package/dist/kernel.js.map +1 -0
  246. package/dist/perf/budget.d.ts +92 -0
  247. package/dist/perf/budget.js +122 -0
  248. package/dist/perf/budget.js.map +1 -0
  249. package/dist/perf/index.d.ts +16 -0
  250. package/dist/perf/index.js +13 -0
  251. package/dist/perf/index.js.map +1 -0
  252. package/dist/perf/render-timer.d.ts +90 -0
  253. package/dist/perf/render-timer.js +136 -0
  254. package/dist/perf/render-timer.js.map +1 -0
  255. package/dist/perf/reporter.d.ts +126 -0
  256. package/dist/perf/reporter.js +241 -0
  257. package/dist/perf/reporter.js.map +1 -0
  258. package/dist/perf/web-vitals.d.ts +111 -0
  259. package/dist/perf/web-vitals.js +268 -0
  260. package/dist/perf/web-vitals.js.map +1 -0
  261. package/dist/registry.d.ts +63 -0
  262. package/dist/registry.js +126 -0
  263. package/dist/registry.js.map +1 -0
  264. package/dist/render/BehaviorSurfaceProvider.d.ts +65 -0
  265. package/dist/render/BehaviorSurfaceProvider.js +185 -0
  266. package/dist/render/BehaviorSurfaceProvider.js.map +1 -0
  267. package/dist/render/BlockErrorBoundary.d.ts +26 -0
  268. package/dist/render/BlockErrorBoundary.js +41 -0
  269. package/dist/render/BlockErrorBoundary.js.map +1 -0
  270. package/dist/render/DataBoundSurfaceRenderer.d.ts +78 -0
  271. package/dist/render/DataBoundSurfaceRenderer.js +998 -0
  272. package/dist/render/DataBoundSurfaceRenderer.js.map +1 -0
  273. package/dist/render/DynamicBlockWrapper.d.ts +23 -0
  274. package/dist/render/DynamicBlockWrapper.js +117 -0
  275. package/dist/render/DynamicBlockWrapper.js.map +1 -0
  276. package/dist/render/appearance-resolver.d.ts +50 -0
  277. package/dist/render/appearance-resolver.js +78 -0
  278. package/dist/render/appearance-resolver.js.map +1 -0
  279. package/dist/render/capability-gate.d.ts +69 -0
  280. package/dist/render/capability-gate.js +94 -0
  281. package/dist/render/capability-gate.js.map +1 -0
  282. package/dist/render/conditional-states-css.d.ts +41 -0
  283. package/dist/render/conditional-states-css.js +82 -0
  284. package/dist/render/conditional-states-css.js.map +1 -0
  285. package/dist/render/connections-context.d.ts +31 -0
  286. package/dist/render/connections-context.js +34 -0
  287. package/dist/render/connections-context.js.map +1 -0
  288. package/dist/render/dark-theme-css.d.ts +36 -0
  289. package/dist/render/dark-theme-css.js +67 -0
  290. package/dist/render/dark-theme-css.js.map +1 -0
  291. package/dist/render/data-binding-types.d.ts +191 -0
  292. package/dist/render/data-binding-types.js +11 -0
  293. package/dist/render/data-binding-types.js.map +1 -0
  294. package/dist/render/data-cache.d.ts +30 -0
  295. package/dist/render/data-cache.js +37 -0
  296. package/dist/render/data-cache.js.map +1 -0
  297. package/dist/render/derive-dark-theme.d.ts +17 -0
  298. package/dist/render/derive-dark-theme.js +18 -0
  299. package/dist/render/derive-dark-theme.js.map +1 -0
  300. package/dist/render/dynamic-artifact-context.d.ts +77 -0
  301. package/dist/render/dynamic-artifact-context.js +89 -0
  302. package/dist/render/dynamic-artifact-context.js.map +1 -0
  303. package/dist/render/dynamic-block-loader.d.ts +80 -0
  304. package/dist/render/dynamic-block-loader.js +197 -0
  305. package/dist/render/dynamic-block-loader.js.map +1 -0
  306. package/dist/render/endpoint.d.ts +18 -0
  307. package/dist/render/endpoint.js +109 -0
  308. package/dist/render/endpoint.js.map +1 -0
  309. package/dist/render/entity-facade-context.d.ts +34 -0
  310. package/dist/render/entity-facade-context.js +37 -0
  311. package/dist/render/entity-facade-context.js.map +1 -0
  312. package/dist/render/group-states-css.d.ts +41 -0
  313. package/dist/render/group-states-css.js +73 -0
  314. package/dist/render/group-states-css.js.map +1 -0
  315. package/dist/render/hooks/useSurfaceEvents.d.ts +8 -0
  316. package/dist/render/hooks/useSurfaceEvents.js +9 -0
  317. package/dist/render/hooks/useSurfaceEvents.js.map +1 -0
  318. package/dist/render/hooks/useSurfaceId.d.ts +8 -0
  319. package/dist/render/hooks/useSurfaceId.js +9 -0
  320. package/dist/render/hooks/useSurfaceId.js.map +1 -0
  321. package/dist/render/index.d.ts +48 -0
  322. package/dist/render/index.js +61 -0
  323. package/dist/render/index.js.map +1 -0
  324. package/dist/render/interaction-rule-engine.d.ts +12 -0
  325. package/dist/render/interaction-rule-engine.js +47 -0
  326. package/dist/render/interaction-rule-engine.js.map +1 -0
  327. package/dist/render/keyframes-css.d.ts +31 -0
  328. package/dist/render/keyframes-css.js +44 -0
  329. package/dist/render/keyframes-css.js.map +1 -0
  330. package/dist/render/query-state.d.ts +3 -0
  331. package/dist/render/query-state.js +70 -0
  332. package/dist/render/query-state.js.map +1 -0
  333. package/dist/render/renderer.d.ts +44 -0
  334. package/dist/render/renderer.js +937 -0
  335. package/dist/render/renderer.js.map +1 -0
  336. package/dist/render/resolve-expressions.d.ts +37 -0
  337. package/dist/render/resolve-expressions.js +309 -0
  338. package/dist/render/resolve-expressions.js.map +1 -0
  339. package/dist/render/responsive-style-css.d.ts +42 -0
  340. package/dist/render/responsive-style-css.js +123 -0
  341. package/dist/render/responsive-style-css.js.map +1 -0
  342. package/dist/render/responsive.d.ts +49 -0
  343. package/dist/render/responsive.js +99 -0
  344. package/dist/render/responsive.js.map +1 -0
  345. package/dist/render/scoped-css.d.ts +71 -0
  346. package/dist/render/scoped-css.js +102 -0
  347. package/dist/render/scoped-css.js.map +1 -0
  348. package/dist/render/shell-selection.d.ts +69 -0
  349. package/dist/render/shell-selection.js +117 -0
  350. package/dist/render/shell-selection.js.map +1 -0
  351. package/dist/render/states-css.d.ts +32 -0
  352. package/dist/render/states-css.js +63 -0
  353. package/dist/render/states-css.js.map +1 -0
  354. package/dist/render/surface-data-context.d.ts +18 -0
  355. package/dist/render/surface-data-context.js +21 -0
  356. package/dist/render/surface-data-context.js.map +1 -0
  357. package/dist/render/surface-event-bus.d.ts +19 -0
  358. package/dist/render/surface-event-bus.js +68 -0
  359. package/dist/render/surface-event-bus.js.map +1 -0
  360. package/dist/render/surface-event-context.d.ts +11 -0
  361. package/dist/render/surface-event-context.js +12 -0
  362. package/dist/render/surface-event-context.js.map +1 -0
  363. package/dist/render/surface-id-context.d.ts +8 -0
  364. package/dist/render/surface-id-context.js +9 -0
  365. package/dist/render/surface-id-context.js.map +1 -0
  366. package/dist/render/theme-utils.d.ts +14 -0
  367. package/dist/render/theme-utils.js +15 -0
  368. package/dist/render/theme-utils.js.map +1 -0
  369. package/dist/render/types.d.ts +282 -0
  370. package/dist/render/types.js +9 -0
  371. package/dist/render/types.js.map +1 -0
  372. package/dist/render/visibility-css.d.ts +42 -0
  373. package/dist/render/visibility-css.js +119 -0
  374. package/dist/render/visibility-css.js.map +1 -0
  375. package/dist/render/width-scope.d.ts +34 -0
  376. package/dist/render/width-scope.js +44 -0
  377. package/dist/render/width-scope.js.map +1 -0
  378. package/dist/render/write-only-sources.d.ts +33 -0
  379. package/dist/render/write-only-sources.js +99 -0
  380. package/dist/render/write-only-sources.js.map +1 -0
  381. package/dist/routing/index.d.ts +14 -0
  382. package/dist/routing/index.js +15 -0
  383. package/dist/routing/index.js.map +1 -0
  384. package/dist/routing/router.d.ts +42 -0
  385. package/dist/routing/router.js +218 -0
  386. package/dist/routing/router.js.map +1 -0
  387. package/dist/routing/types.d.ts +124 -0
  388. package/dist/routing/types.js +9 -0
  389. package/dist/routing/types.js.map +1 -0
  390. package/dist/seo/generator.d.ts +39 -0
  391. package/dist/seo/generator.js +236 -0
  392. package/dist/seo/generator.js.map +1 -0
  393. package/dist/seo/index.d.ts +14 -0
  394. package/dist/seo/index.js +15 -0
  395. package/dist/seo/index.js.map +1 -0
  396. package/dist/seo/types.d.ts +181 -0
  397. package/dist/seo/types.js +9 -0
  398. package/dist/seo/types.js.map +1 -0
  399. package/dist/state/index.d.ts +15 -0
  400. package/dist/state/index.js +16 -0
  401. package/dist/state/index.js.map +1 -0
  402. package/dist/state/manager.d.ts +33 -0
  403. package/dist/state/manager.js +81 -0
  404. package/dist/state/manager.js.map +1 -0
  405. package/dist/state/store.d.ts +40 -0
  406. package/dist/state/store.js +145 -0
  407. package/dist/state/store.js.map +1 -0
  408. package/dist/state/types.d.ts +107 -0
  409. package/dist/state/types.js +9 -0
  410. package/dist/state/types.js.map +1 -0
  411. package/dist/surface/expression.d.ts +65 -0
  412. package/dist/surface/expression.js +179 -0
  413. package/dist/surface/expression.js.map +1 -0
  414. package/dist/surface/index.d.ts +32 -0
  415. package/dist/surface/index.js +25 -0
  416. package/dist/surface/index.js.map +1 -0
  417. package/dist/surface/interpreter.d.ts +96 -0
  418. package/dist/surface/interpreter.js +231 -0
  419. package/dist/surface/interpreter.js.map +1 -0
  420. package/dist/surface/layout.d.ts +54 -0
  421. package/dist/surface/layout.js +288 -0
  422. package/dist/surface/layout.js.map +1 -0
  423. package/dist/surface/output.d.ts +90 -0
  424. package/dist/surface/output.js +104 -0
  425. package/dist/surface/output.js.map +1 -0
  426. package/dist/surface/primitives.d.ts +180 -0
  427. package/dist/surface/primitives.js +339 -0
  428. package/dist/surface/primitives.js.map +1 -0
  429. package/dist/surface/renderer.d.ts +96 -0
  430. package/dist/surface/renderer.js +190 -0
  431. package/dist/surface/renderer.js.map +1 -0
  432. package/dist/surface/schemas.d.ts +181 -0
  433. package/dist/surface/schemas.js +142 -0
  434. package/dist/surface/schemas.js.map +1 -0
  435. package/dist/surface/transforms.d.ts +144 -0
  436. package/dist/surface/transforms.js +120 -0
  437. package/dist/surface/transforms.js.map +1 -0
  438. package/dist/surface/types.d.ts +160 -0
  439. package/dist/surface/types.js +51 -0
  440. package/dist/surface/types.js.map +1 -0
  441. package/dist/surface/validation.d.ts +123 -0
  442. package/dist/surface/validation.js +147 -0
  443. package/dist/surface/validation.js.map +1 -0
  444. package/dist/validator.d.ts +55 -0
  445. package/dist/validator.js +100 -0
  446. package/dist/validator.js.map +1 -0
  447. package/package.json +106 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"collection.js","sourceRoot":"","sources":["../../src/binding/collection.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Collection Binding\n *\n * Reactive collection binding for arrays/lists in surfaces\n *\n * Provides:\n * - Reactive array subscriptions\n * - Filter, sort, map operations\n * - Item change tracking (add, remove, update)\n * - Derived/computed collections\n *\n * @module @pwfabric/runtime/binding/collection\n */\n\n// ============================================================\n// COLLECTION CHANGE EVENT\n// ============================================================\n\n/**\n * Types of changes that can occur to a collection\n */\nexport type CollectionChangeType = 'add' | 'remove' | 'update' | 'reset' | 'reorder'\n\n/**\n * Event emitted when collection changes\n */\nexport interface CollectionChangeEvent<T> {\n /** Type of change */\n readonly type: CollectionChangeType\n /** Index where change occurred (-1 for reset/reorder) */\n readonly index: number\n /** Item that was affected (undefined for reset) */\n readonly item?: T | undefined\n /** Previous items (for reset) */\n readonly previousItems?: readonly T[] | undefined\n /** Timestamp of the change */\n readonly timestamp: number\n}\n\n/**\n * Listener for collection changes\n */\nexport type CollectionChangeListener<T> = (\n items: readonly T[],\n event: CollectionChangeEvent<T>\n) => void\n\n// ============================================================\n// COLLECTION BINDING INTERFACE\n// ============================================================\n\n/**\n * Reactive collection binding interface\n */\nexport interface CollectionBinding<T> {\n /** Current items in the collection */\n readonly items: readonly T[]\n\n /** Field used as unique key for items */\n readonly keyField: string\n\n /** Number of items */\n readonly length: number\n\n /**\n * Subscribe to collection changes\n * @returns Unsubscribe function\n */\n subscribe(listener: CollectionChangeListener<T>): () => void\n\n /**\n * Create a filtered view of the collection\n */\n filter(predicate: (item: T, index: number) => boolean): CollectionBinding<T>\n\n /**\n * Create a sorted view of the collection\n */\n sort(comparator: (a: T, b: T) => number): CollectionBinding<T>\n\n /**\n * Create a mapped view of the collection\n */\n map<U>(mapper: (item: T, index: number) => U): CollectionBinding<U>\n\n /**\n * Create a sliced view of the collection\n */\n slice(start?: number, end?: number): CollectionBinding<T>\n\n /**\n * Get item by key value\n */\n getByKey(keyValue: unknown): T | undefined\n\n /**\n * Get item at index\n */\n at(index: number): T | undefined\n\n /**\n * Find first item matching predicate\n */\n find(predicate: (item: T, index: number) => boolean): T | undefined\n\n /**\n * Find index of first item matching predicate\n */\n findIndex(predicate: (item: T, index: number) => boolean): number\n\n /**\n * Check if any item matches predicate\n */\n some(predicate: (item: T, index: number) => boolean): boolean\n\n /**\n * Check if all items match predicate\n */\n every(predicate: (item: T, index: number) => boolean): boolean\n\n /**\n * Reduce collection to single value\n */\n reduce<U>(reducer: (acc: U, item: T, index: number) => U, initial: U): U\n\n /**\n * Dispose of the collection and all subscriptions\n */\n dispose(): void\n}\n\n/**\n * Mutable collection binding interface\n */\nexport interface MutableCollectionBinding<T> extends CollectionBinding<T> {\n /**\n * Add item to collection\n */\n add(item: T): void\n\n /**\n * Add multiple items to collection\n */\n addMany(items: readonly T[]): void\n\n /**\n * Remove item by key value\n */\n remove(keyValue: unknown): boolean\n\n /**\n * Remove item at index\n */\n removeAt(index: number): T | undefined\n\n /**\n * Update item by key value\n */\n update(keyValue: unknown, updates: Partial<T>): boolean\n\n /**\n * Replace item at index\n */\n replace(index: number, item: T): void\n\n /**\n * Replace all items\n */\n reset(items: readonly T[]): void\n\n /**\n * Clear all items\n */\n clear(): void\n\n /**\n * Move item from one index to another\n */\n move(fromIndex: number, toIndex: number): void\n}\n\n// ============================================================\n// REACTIVE COLLECTION IMPLEMENTATION\n// ============================================================\n\n/**\n * Reactive collection implementation with change tracking\n */\nexport class ReactiveCollection<T> implements MutableCollectionBinding<T> {\n private _items: T[]\n private readonly _keyField: string\n private readonly listeners = new Set<CollectionChangeListener<T>>()\n private disposed = false\n\n constructor(initialItems: readonly T[] = [], keyField = 'id') {\n this._items = [...initialItems]\n this._keyField = keyField\n }\n\n get items(): readonly T[] {\n return this._items\n }\n\n get keyField(): string {\n return this._keyField\n }\n\n get length(): number {\n return this._items.length\n }\n\n subscribe(listener: CollectionChangeListener<T>): () => void {\n if (this.disposed) {\n throw new Error('Cannot subscribe to disposed collection')\n }\n\n this.listeners.add(listener)\n\n return () => {\n this.listeners.delete(listener)\n }\n }\n\n filter(predicate: (item: T, index: number) => boolean): CollectionBinding<T> {\n return new DerivedCollection(this, (items) =>\n items.filter((item, index) => predicate(item, index))\n )\n }\n\n sort(comparator: (a: T, b: T) => number): CollectionBinding<T> {\n return new DerivedCollection(this, (items) => [...items].sort(comparator))\n }\n\n map<U>(mapper: (item: T, index: number) => U): CollectionBinding<U> {\n return new DerivedCollection(this, (items) => items.map((item, index) => mapper(item, index)))\n }\n\n slice(start?: number, end?: number): CollectionBinding<T> {\n return new DerivedCollection(this, (items) => items.slice(start, end))\n }\n\n getByKey(keyValue: unknown): T | undefined {\n return this._items.find((item) => this.getKeyValue(item) === keyValue)\n }\n\n at(index: number): T | undefined {\n if (index < 0) {\n return this._items[this._items.length + index]\n }\n return this._items[index]\n }\n\n find(predicate: (item: T, index: number) => boolean): T | undefined {\n return this._items.find((item, index) => predicate(item, index))\n }\n\n findIndex(predicate: (item: T, index: number) => boolean): number {\n return this._items.findIndex((item, index) => predicate(item, index))\n }\n\n some(predicate: (item: T, index: number) => boolean): boolean {\n return this._items.some((item, index) => predicate(item, index))\n }\n\n every(predicate: (item: T, index: number) => boolean): boolean {\n return this._items.every((item, index) => predicate(item, index))\n }\n\n reduce<U>(reducer: (acc: U, item: T, index: number) => U, initial: U): U {\n return this._items.reduce((acc, item, index) => reducer(acc, item, index), initial)\n }\n\n add(item: T): void {\n if (this.disposed) return\n\n const index = this._items.length\n this._items.push(item)\n this.notify({ type: 'add', index, item, timestamp: Date.now() })\n }\n\n addMany(items: readonly T[]): void {\n if (this.disposed || items.length === 0) return\n\n const startIndex = this._items.length\n this._items.push(...items)\n\n // Notify for each added item\n for (let i = 0; i < items.length; i++) {\n this.notify({\n type: 'add',\n index: startIndex + i,\n item: items[i],\n timestamp: Date.now(),\n })\n }\n }\n\n remove(keyValue: unknown): boolean {\n if (this.disposed) return false\n\n const index = this._items.findIndex((item) => this.getKeyValue(item) === keyValue)\n if (index === -1) return false\n\n const [item] = this._items.splice(index, 1)\n this.notify({ type: 'remove', index, item, timestamp: Date.now() })\n return true\n }\n\n removeAt(index: number): T | undefined {\n if (this.disposed) return undefined\n if (index < 0 || index >= this._items.length) return undefined\n\n const [item] = this._items.splice(index, 1)\n this.notify({ type: 'remove', index, item, timestamp: Date.now() })\n return item\n }\n\n update(keyValue: unknown, updates: Partial<T>): boolean {\n if (this.disposed) return false\n\n const index = this._items.findIndex((item) => this.getKeyValue(item) === keyValue)\n if (index === -1) return false\n\n const existing = this._items[index]\n if (existing === undefined) return false\n const updated = { ...existing, ...updates }\n this._items[index] = updated\n this.notify({ type: 'update', index, item: updated, timestamp: Date.now() })\n return true\n }\n\n replace(index: number, item: T): void {\n if (this.disposed) return\n if (index < 0 || index >= this._items.length) return\n\n this._items[index] = item\n this.notify({ type: 'update', index, item, timestamp: Date.now() })\n }\n\n reset(items: readonly T[]): void {\n if (this.disposed) return\n\n const previousItems = this._items\n this._items = [...items]\n this.notify({\n type: 'reset',\n index: -1,\n previousItems,\n timestamp: Date.now(),\n })\n }\n\n clear(): void {\n this.reset([])\n }\n\n move(fromIndex: number, toIndex: number): void {\n if (this.disposed) return\n if (fromIndex < 0 || fromIndex >= this._items.length) return\n if (toIndex < 0 || toIndex >= this._items.length) return\n if (fromIndex === toIndex) return\n\n const [item] = this._items.splice(fromIndex, 1)\n if (item === undefined) return\n this._items.splice(toIndex, 0, item)\n this.notify({ type: 'reorder', index: toIndex, item, timestamp: Date.now() })\n }\n\n dispose(): void {\n this.disposed = true\n this.listeners.clear()\n }\n\n private getKeyValue(item: T): unknown {\n if (typeof item === 'object' && item !== null) {\n return (item as Record<string, unknown>)[this._keyField]\n }\n return item\n }\n\n private notify(event: CollectionChangeEvent<T>): void {\n const items = this._items\n for (const listener of this.listeners) {\n try {\n listener(items, event)\n } catch {\n // Swallow errors from listeners\n }\n }\n }\n}\n\n// ============================================================\n// DERIVED COLLECTION IMPLEMENTATION\n// ============================================================\n\n/**\n * Derived collection that transforms a source collection\n */\nclass DerivedCollection<TSource, TDerived = TSource> implements CollectionBinding<TDerived> {\n private readonly source: CollectionBinding<TSource>\n private readonly transform: (items: readonly TSource[]) => readonly TDerived[]\n private readonly listeners = new Set<CollectionChangeListener<TDerived>>()\n private _items: readonly TDerived[]\n private unsubscribe: (() => void) | null = null\n private disposed = false\n\n constructor(\n source: CollectionBinding<TSource>,\n transform: (items: readonly TSource[]) => readonly TDerived[]\n ) {\n this.source = source\n this.transform = transform\n this._items = transform(source.items)\n\n // Subscribe to source changes\n this.unsubscribe = source.subscribe(() => {\n this.update()\n })\n }\n\n get items(): readonly TDerived[] {\n return this._items\n }\n\n get keyField(): string {\n return this.source.keyField\n }\n\n get length(): number {\n return this._items.length\n }\n\n subscribe(listener: CollectionChangeListener<TDerived>): () => void {\n if (this.disposed) {\n throw new Error('Cannot subscribe to disposed collection')\n }\n\n this.listeners.add(listener)\n\n return () => {\n this.listeners.delete(listener)\n }\n }\n\n filter(predicate: (item: TDerived, index: number) => boolean): CollectionBinding<TDerived> {\n return new DerivedCollection(this, (items) =>\n items.filter((item, index) => predicate(item, index))\n )\n }\n\n sort(comparator: (a: TDerived, b: TDerived) => number): CollectionBinding<TDerived> {\n return new DerivedCollection(this, (items) => [...items].sort(comparator))\n }\n\n map<U>(mapper: (item: TDerived, index: number) => U): CollectionBinding<U> {\n return new DerivedCollection(this, (items) => items.map((item, index) => mapper(item, index)))\n }\n\n slice(start?: number, end?: number): CollectionBinding<TDerived> {\n return new DerivedCollection(this, (items) => items.slice(start, end))\n }\n\n getByKey(keyValue: unknown): TDerived | undefined {\n // Note: For derived collections with map transforms, key lookup may not work as expected\n return this._items.find((item) => {\n if (typeof item === 'object' && item !== null) {\n return (item as Record<string, unknown>)[this.keyField] === keyValue\n }\n return item === keyValue\n })\n }\n\n at(index: number): TDerived | undefined {\n if (index < 0) {\n return this._items[this._items.length + index]\n }\n return this._items[index]\n }\n\n find(predicate: (item: TDerived, index: number) => boolean): TDerived | undefined {\n return this._items.find((item, index) => predicate(item, index))\n }\n\n findIndex(predicate: (item: TDerived, index: number) => boolean): number {\n return this._items.findIndex((item, index) => predicate(item, index))\n }\n\n some(predicate: (item: TDerived, index: number) => boolean): boolean {\n return this._items.some((item, index) => predicate(item, index))\n }\n\n every(predicate: (item: TDerived, index: number) => boolean): boolean {\n return this._items.every((item, index) => predicate(item, index))\n }\n\n reduce<U>(reducer: (acc: U, item: TDerived, index: number) => U, initial: U): U {\n return this._items.reduce((acc, item, index) => reducer(acc, item, index), initial)\n }\n\n dispose(): void {\n this.disposed = true\n this.listeners.clear()\n if (this.unsubscribe) {\n this.unsubscribe()\n this.unsubscribe = null\n }\n }\n\n private update(): void {\n const previousItems = this._items\n this._items = this.transform(this.source.items)\n\n // Notify listeners\n const event: CollectionChangeEvent<TDerived> = {\n type: 'reset',\n index: -1,\n previousItems,\n timestamp: Date.now(),\n }\n\n for (const listener of this.listeners) {\n try {\n listener(this._items, event)\n } catch {\n // Swallow errors from listeners\n }\n }\n }\n}\n\n// ============================================================\n// FACTORY FUNCTIONS\n// ============================================================\n\n/**\n * Create a reactive collection\n */\nexport function createCollection<T>(\n initialItems?: readonly T[],\n keyField?: string\n): MutableCollectionBinding<T> {\n return new ReactiveCollection<T>(initialItems, keyField)\n}\n\n/**\n * Create a read-only collection from existing data\n */\nexport function createReadOnlyCollection<T>(\n items: readonly T[],\n keyField = 'id'\n): CollectionBinding<T> {\n const collection = new ReactiveCollection<T>(items, keyField)\n // Return interface without mutation methods\n return {\n get items() {\n return collection.items\n },\n get keyField() {\n return collection.keyField\n },\n get length() {\n return collection.length\n },\n subscribe: (listener) => collection.subscribe(listener),\n filter: (predicate) => collection.filter(predicate),\n sort: (comparator) => collection.sort(comparator),\n map: (mapper) => collection.map(mapper),\n slice: (start, end) => collection.slice(start, end),\n getByKey: (keyValue) => collection.getByKey(keyValue),\n at: (index) => collection.at(index),\n find: (predicate) => collection.find(predicate),\n findIndex: (predicate) => collection.findIndex(predicate),\n some: (predicate) => collection.some(predicate),\n every: (predicate) => collection.every(predicate),\n reduce: (reducer, initial) => collection.reduce(reducer, initial),\n dispose: () => collection.dispose(),\n }\n}\n\n/**\n * Create a collection from an async iterable\n */\nexport async function createCollectionFromAsync<T>(\n asyncIterable: AsyncIterable<T>,\n keyField = 'id'\n): Promise<MutableCollectionBinding<T>> {\n const items: T[] = []\n for await (const item of asyncIterable) {\n items.push(item)\n }\n return new ReactiveCollection<T>(items, keyField)\n}\n"]}
@@ -0,0 +1,319 @@
1
+ /**
2
+ * Data Source Management
3
+ *
4
+ * Data source registry and management for surfaces
5
+ *
6
+ * Provides:
7
+ * - Static data sources (inline data)
8
+ * - API data sources (REST endpoints)
9
+ * - State data sources (from state module)
10
+ * - Caching integration
11
+ *
12
+ * @module @pwfabric/runtime/binding/datasource
13
+ */
14
+ import type { CacheProvider } from '../cache/types.js';
15
+ import type { StateStore } from '../state/types.js';
16
+ /**
17
+ * Data source types
18
+ */
19
+ export type DataSourceType = 'static' | 'api' | 'graphql' | 'state';
20
+ /**
21
+ * Data source interface
22
+ */
23
+ export interface DataSource<T = unknown> {
24
+ /** Unique identifier for the data source */
25
+ readonly id: string;
26
+ /** Type of data source */
27
+ readonly type: DataSourceType;
28
+ /** Human-readable name */
29
+ readonly name?: string | undefined;
30
+ /** Optional description */
31
+ readonly description?: string | undefined;
32
+ /**
33
+ * Fetch data from the source
34
+ */
35
+ fetch(params?: Record<string, unknown>): Promise<T>;
36
+ /**
37
+ * Subscribe to data changes (if supported)
38
+ * @returns Unsubscribe function, or undefined if not supported
39
+ */
40
+ subscribe?(listener: DataSourceListener<T>): () => void;
41
+ /**
42
+ * Invalidate cached data (if caching is enabled)
43
+ */
44
+ invalidate?(): void;
45
+ /**
46
+ * Check if the data source is loading
47
+ */
48
+ isLoading?(): boolean;
49
+ }
50
+ /**
51
+ * Listener for data source changes
52
+ */
53
+ export type DataSourceListener<T> = (data: T) => void;
54
+ /**
55
+ * Base configuration for data sources
56
+ */
57
+ export interface BaseDataSourceConfig {
58
+ /** Unique identifier */
59
+ readonly id: string;
60
+ /** Human-readable name */
61
+ readonly name?: string | undefined;
62
+ /** Optional description */
63
+ readonly description?: string | undefined;
64
+ /** Cache configuration */
65
+ readonly cache?: DataSourceCacheConfig | undefined;
66
+ }
67
+ /**
68
+ * Cache configuration for data sources
69
+ */
70
+ export interface DataSourceCacheConfig {
71
+ /** Whether caching is enabled */
72
+ readonly enabled: boolean;
73
+ /** Time-to-live in milliseconds */
74
+ readonly ttl?: number;
75
+ /** Custom cache key */
76
+ readonly key?: string;
77
+ }
78
+ /**
79
+ * Static data source configuration
80
+ */
81
+ export interface StaticDataSourceConfig<T> extends BaseDataSourceConfig {
82
+ readonly type: 'static';
83
+ /** Static data */
84
+ readonly data: T;
85
+ }
86
+ /**
87
+ * API data source configuration
88
+ */
89
+ export interface ApiDataSourceConfig extends BaseDataSourceConfig {
90
+ readonly type: 'api';
91
+ /** API endpoint URL */
92
+ readonly url: string;
93
+ /** HTTP method */
94
+ readonly method?: 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE';
95
+ /** Request headers */
96
+ readonly headers?: Record<string, string>;
97
+ /** Request body (for POST/PUT/PATCH) */
98
+ readonly body?: unknown;
99
+ /** Query parameters */
100
+ readonly query?: Record<string, string | number | boolean>;
101
+ /** Transform response data */
102
+ readonly transform?: (data: unknown) => unknown;
103
+ /** Polling interval in milliseconds (0 = no polling) */
104
+ readonly pollInterval?: number;
105
+ /** Retry configuration */
106
+ readonly retry?: DataSourceRetryConfig;
107
+ }
108
+ /**
109
+ * GraphQL data source configuration
110
+ */
111
+ export interface GraphQLDataSourceConfig extends BaseDataSourceConfig {
112
+ readonly type: 'graphql';
113
+ /** GraphQL endpoint URL */
114
+ readonly url: string;
115
+ /** GraphQL query */
116
+ readonly query: string;
117
+ /** GraphQL variables */
118
+ readonly variables?: Record<string, unknown>;
119
+ /** Request headers */
120
+ readonly headers?: Record<string, string>;
121
+ /** Transform response data */
122
+ readonly transform?: (data: unknown) => unknown;
123
+ /** Polling interval in milliseconds (0 = no polling) */
124
+ readonly pollInterval?: number;
125
+ }
126
+ /**
127
+ * State data source configuration
128
+ */
129
+ export interface StateDataSourceConfig extends BaseDataSourceConfig {
130
+ readonly type: 'state';
131
+ /** State key to bind to */
132
+ readonly stateKey: string;
133
+ /** Transform state data */
134
+ readonly transform?: ((data: unknown) => unknown) | undefined;
135
+ }
136
+ /**
137
+ * Union of all data source configurations
138
+ */
139
+ export type DataSourceConfig<T = unknown> = StaticDataSourceConfig<T> | ApiDataSourceConfig | GraphQLDataSourceConfig | StateDataSourceConfig;
140
+ /**
141
+ * Retry configuration
142
+ */
143
+ export interface DataSourceRetryConfig {
144
+ /** Maximum number of retry attempts */
145
+ readonly maxAttempts: number;
146
+ /** Delay between retries in milliseconds */
147
+ readonly delay: number;
148
+ /** Whether to use exponential backoff */
149
+ readonly exponentialBackoff?: boolean;
150
+ }
151
+ /**
152
+ * Static data source implementation
153
+ */
154
+ export declare class StaticDataSource<T> implements DataSource<T> {
155
+ readonly id: string;
156
+ readonly type: DataSourceType;
157
+ readonly name: string | undefined;
158
+ readonly description: string | undefined;
159
+ private readonly data;
160
+ constructor(config: StaticDataSourceConfig<T>);
161
+ fetch(): Promise<T>;
162
+ isLoading(): boolean;
163
+ }
164
+ /**
165
+ * API data source implementation with caching and polling support
166
+ */
167
+ export declare class ApiDataSource<T = unknown> implements DataSource<T> {
168
+ readonly id: string;
169
+ readonly type: DataSourceType;
170
+ readonly name: string | undefined;
171
+ readonly description: string | undefined;
172
+ private readonly config;
173
+ private readonly cache;
174
+ private readonly listeners;
175
+ private pollTimer;
176
+ private loading;
177
+ private lastData;
178
+ constructor(config: ApiDataSourceConfig, cache?: CacheProvider);
179
+ fetch(params?: Record<string, unknown>): Promise<T>;
180
+ subscribe(listener: DataSourceListener<T>): () => void;
181
+ invalidate(): void;
182
+ isLoading(): boolean;
183
+ /**
184
+ * Stop polling and clean up
185
+ */
186
+ dispose(): void;
187
+ private fetchWithRetry;
188
+ private doFetch;
189
+ private getCacheKey;
190
+ private startPolling;
191
+ private notifyListeners;
192
+ }
193
+ /**
194
+ * GraphQL data source implementation with polling and caching support
195
+ */
196
+ export declare class GraphQLDataSource<T = unknown> implements DataSource<T> {
197
+ readonly id: string;
198
+ readonly type: DataSourceType;
199
+ readonly name: string | undefined;
200
+ readonly description: string | undefined;
201
+ private readonly config;
202
+ private readonly cache;
203
+ private readonly listeners;
204
+ private pollTimer;
205
+ private loading;
206
+ private lastData;
207
+ constructor(config: GraphQLDataSourceConfig, cache?: CacheProvider);
208
+ fetch(params?: Record<string, unknown>): Promise<T>;
209
+ subscribe(listener: DataSourceListener<T>): () => void;
210
+ invalidate(): void;
211
+ isLoading(): boolean;
212
+ dispose(): void;
213
+ private executeQuery;
214
+ private getCacheKey;
215
+ private startPolling;
216
+ private notifyListeners;
217
+ }
218
+ /**
219
+ * State data source implementation - binds to state store
220
+ */
221
+ export declare class StateDataSource<T = unknown> implements DataSource<T> {
222
+ readonly id: string;
223
+ readonly type: DataSourceType;
224
+ readonly name: string | undefined;
225
+ readonly description: string | undefined;
226
+ private readonly config;
227
+ private readonly stateStore;
228
+ private readonly listeners;
229
+ private unsubscribe;
230
+ constructor(config: StateDataSourceConfig, stateStore: StateStore);
231
+ fetch(): Promise<T>;
232
+ subscribe(listener: DataSourceListener<T>): () => void;
233
+ isLoading(): boolean;
234
+ /**
235
+ * Clean up subscriptions
236
+ */
237
+ dispose(): void;
238
+ private notifyListeners;
239
+ }
240
+ /**
241
+ * Data source registry interface
242
+ */
243
+ export interface DataSourceRegistry {
244
+ /**
245
+ * Register a data source
246
+ */
247
+ register<T>(source: DataSource<T>): void;
248
+ /**
249
+ * Get a data source by ID
250
+ */
251
+ get<T>(id: string): DataSource<T> | undefined;
252
+ /**
253
+ * Check if a data source exists
254
+ */
255
+ has(id: string): boolean;
256
+ /**
257
+ * Fetch data from a source by ID
258
+ */
259
+ fetch<T>(id: string, params?: Record<string, unknown>): Promise<T>;
260
+ /**
261
+ * Unregister a data source
262
+ */
263
+ unregister(id: string): boolean;
264
+ /**
265
+ * Get all registered data source IDs
266
+ */
267
+ ids(): string[];
268
+ /**
269
+ * Clear all data sources
270
+ */
271
+ clear(): void;
272
+ }
273
+ /**
274
+ * In-memory data source registry implementation
275
+ */
276
+ export declare class InMemoryDataSourceRegistry implements DataSourceRegistry {
277
+ private readonly sources;
278
+ register<T>(source: DataSource<T>): void;
279
+ get<T>(id: string): DataSource<T> | undefined;
280
+ has(id: string): boolean;
281
+ fetch<T>(id: string, params?: Record<string, unknown>): Promise<T>;
282
+ unregister(id: string): boolean;
283
+ ids(): string[];
284
+ clear(): void;
285
+ }
286
+ /**
287
+ * Create a data source registry
288
+ */
289
+ export declare function createDataSourceRegistry(): DataSourceRegistry;
290
+ /**
291
+ * Create a data source from configuration
292
+ */
293
+ export declare function createDataSource<T>(config: DataSourceConfig<T>, dependencies?: {
294
+ cache?: CacheProvider;
295
+ stateStore?: StateStore;
296
+ }): DataSource<T>;
297
+ /**
298
+ * Create a static data source
299
+ */
300
+ export declare function createStaticDataSource<T>(id: string, data: T, options?: {
301
+ name?: string;
302
+ description?: string;
303
+ }): DataSource<T>;
304
+ /**
305
+ * Create an API data source
306
+ */
307
+ export declare function createApiDataSource<T>(id: string, url: string, options?: Omit<ApiDataSourceConfig, 'id' | 'type' | 'url'>, cache?: CacheProvider): DataSource<T>;
308
+ /**
309
+ * Create a state data source
310
+ */
311
+ export declare function createStateDataSource<T>(id: string, stateKey: string, stateStore: StateStore, options?: {
312
+ name?: string;
313
+ description?: string;
314
+ transform?: (data: unknown) => T;
315
+ }): DataSource<T>;
316
+ /**
317
+ * Create a GraphQL data source
318
+ */
319
+ export declare function createGraphQLDataSource<T>(id: string, url: string, query: string, options?: Omit<GraphQLDataSourceConfig, 'id' | 'type' | 'url' | 'query'>, cache?: CacheProvider): DataSource<T>;