@pwfabric/runtime 1.0.0-rc.0 → 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 (455) hide show
  1. package/README.md +35 -5
  2. package/dist/a11y/announcer.d.ts +0 -1
  3. package/dist/a11y/announcer.js.map +1 -1
  4. package/dist/a11y/contrast.d.ts +0 -1
  5. package/dist/a11y/contrast.js.map +1 -1
  6. package/dist/a11y/focus.d.ts +0 -1
  7. package/dist/a11y/focus.js.map +1 -1
  8. package/dist/a11y/index.d.ts +0 -1
  9. package/dist/a11y/index.js.map +1 -1
  10. package/dist/a11y/keyboard.d.ts +0 -1
  11. package/dist/a11y/keyboard.js.map +1 -1
  12. package/dist/adapters/default-image.d.ts +0 -1
  13. package/dist/adapters/default-image.js.map +1 -1
  14. package/dist/adapters/index.d.ts +0 -1
  15. package/dist/adapters/index.js.map +1 -1
  16. package/dist/adapters/next-image.d.ts +0 -1
  17. package/dist/adapters/next-image.js.map +1 -1
  18. package/dist/adapters/types.d.ts +0 -1
  19. package/dist/adapters/types.js.map +1 -1
  20. package/dist/analytics/index.d.ts +0 -1
  21. package/dist/analytics/index.js.map +1 -1
  22. package/dist/analytics/tracker.d.ts +0 -1
  23. package/dist/analytics/tracker.js.map +1 -1
  24. package/dist/analytics/types.d.ts +0 -1
  25. package/dist/analytics/types.js.map +1 -1
  26. package/dist/auth/index.d.ts +0 -1
  27. package/dist/auth/index.js.map +1 -1
  28. package/dist/auth/provider.d.ts +0 -1
  29. package/dist/auth/provider.js.map +1 -1
  30. package/dist/auth/types.d.ts +0 -1
  31. package/dist/auth/types.js.map +1 -1
  32. package/dist/binding/collection.d.ts +0 -1
  33. package/dist/binding/collection.js.map +1 -1
  34. package/dist/binding/datasource.d.ts +0 -1
  35. package/dist/binding/datasource.js.map +1 -1
  36. package/dist/binding/engine.d.ts +0 -1
  37. package/dist/binding/engine.js.map +1 -1
  38. package/dist/binding/expression.d.ts +0 -1
  39. package/dist/binding/expression.js.map +1 -1
  40. package/dist/binding/index.d.ts +0 -1
  41. package/dist/binding/index.js.map +1 -1
  42. package/dist/binding/two-way.d.ts +0 -1
  43. package/dist/binding/two-way.js.map +1 -1
  44. package/dist/binding/types.d.ts +0 -1
  45. package/dist/binding/types.js.map +1 -1
  46. package/dist/blocks/component-types.d.ts +0 -1
  47. package/dist/blocks/component-types.js.map +1 -1
  48. package/dist/blocks/composition-rules.d.ts +0 -1
  49. package/dist/blocks/composition-rules.js.map +1 -1
  50. package/dist/blocks/hooks.d.ts +0 -1
  51. package/dist/blocks/hooks.js.map +1 -1
  52. package/dist/blocks/index.d.ts +0 -2
  53. package/dist/blocks/index.js +5 -6
  54. package/dist/blocks/index.js.map +1 -1
  55. package/dist/blocks/registry.d.ts +0 -1
  56. package/dist/blocks/registry.js.map +1 -1
  57. package/dist/blocks/rule-engine.d.ts +0 -1
  58. package/dist/blocks/rule-engine.js.map +1 -1
  59. package/dist/blocks/surface-event-context.d.ts +0 -1
  60. package/dist/blocks/surface-event-context.js.map +1 -1
  61. package/dist/blocks/surface-id-context.d.ts +0 -1
  62. package/dist/blocks/surface-id-context.js.map +1 -1
  63. package/dist/bus.d.ts +0 -1
  64. package/dist/bus.js.map +1 -1
  65. package/dist/cache/index.d.ts +0 -1
  66. package/dist/cache/index.js.map +1 -1
  67. package/dist/cache/memory.d.ts +0 -1
  68. package/dist/cache/memory.js.map +1 -1
  69. package/dist/cache/types.d.ts +0 -1
  70. package/dist/cache/types.js.map +1 -1
  71. package/dist/capability/index.d.ts +0 -1
  72. package/dist/capability/index.js.map +1 -1
  73. package/dist/capability/kernel-capabilities.d.ts +0 -1
  74. package/dist/capability/kernel-capabilities.js.map +1 -1
  75. package/dist/capability/platform-capabilities.d.ts +0 -1
  76. package/dist/capability/platform-capabilities.js.map +1 -1
  77. package/dist/capability/type-mapping.d.ts +0 -1
  78. package/dist/capability/type-mapping.js.map +1 -1
  79. package/dist/capability/validation.d.ts +0 -1
  80. package/dist/capability/validation.js.map +1 -1
  81. package/dist/connectors/declared-connector.d.ts +0 -1
  82. package/dist/connectors/declared-connector.js.map +1 -1
  83. package/dist/connectors/engine-registry.d.ts +0 -1
  84. package/dist/connectors/engine-registry.js.map +1 -1
  85. package/dist/connectors/index.d.ts +0 -1
  86. package/dist/connectors/index.js.map +1 -1
  87. package/dist/connectors/module-loader.d.ts +0 -1
  88. package/dist/connectors/module-loader.js.map +1 -1
  89. package/dist/connectors/types.d.ts +0 -1
  90. package/dist/connectors/types.js.map +1 -1
  91. package/dist/context.d.ts +0 -1
  92. package/dist/context.js.map +1 -1
  93. package/dist/data/DataCapabilityProvider.d.ts +0 -1
  94. package/dist/data/DataCapabilityProvider.js.map +1 -1
  95. package/dist/data/index.d.ts +0 -1
  96. package/dist/data/index.js.map +1 -1
  97. package/dist/data/manager.d.ts +0 -1
  98. package/dist/data/manager.js.map +1 -1
  99. package/dist/data/types.d.ts +0 -1
  100. package/dist/data/types.js.map +1 -1
  101. package/dist/entity/aggregate.d.ts +0 -1
  102. package/dist/entity/aggregate.js.map +1 -1
  103. package/dist/entity/apply-query.d.ts +0 -1
  104. package/dist/entity/apply-query.js.map +1 -1
  105. package/dist/entity/behavior.d.ts +0 -1
  106. package/dist/entity/behavior.js.map +1 -1
  107. package/dist/entity/connector.d.ts +0 -1
  108. package/dist/entity/connector.js.map +1 -1
  109. package/dist/entity/connectors/index.d.ts +0 -1
  110. package/dist/entity/connectors/index.js.map +1 -1
  111. package/dist/entity/connectors/static.d.ts +0 -1
  112. package/dist/entity/connectors/static.js.map +1 -1
  113. package/dist/entity/entity-datasource.d.ts +0 -1
  114. package/dist/entity/entity-datasource.js.map +1 -1
  115. package/dist/entity/facade.d.ts +0 -1
  116. package/dist/entity/facade.js.map +1 -1
  117. package/dist/entity/http-connector.d.ts +0 -1
  118. package/dist/entity/http-connector.js.map +1 -1
  119. package/dist/entity/index.d.ts +0 -1
  120. package/dist/entity/index.js.map +1 -1
  121. package/dist/entity/postgres-connector.d.ts +0 -1
  122. package/dist/entity/postgres-connector.js.map +1 -1
  123. package/dist/entity/registry.d.ts +0 -1
  124. package/dist/entity/registry.js.map +1 -1
  125. package/dist/entity/store.d.ts +0 -1
  126. package/dist/entity/store.js.map +1 -1
  127. package/dist/entity/types.d.ts +0 -1
  128. package/dist/entity/types.js.map +1 -1
  129. package/dist/execution-context.d.ts +0 -1
  130. package/dist/execution-context.js.map +1 -1
  131. package/dist/executor.d.ts +0 -1
  132. package/dist/executor.js.map +1 -1
  133. package/dist/forms/form-entity-bridge.d.ts +0 -1
  134. package/dist/forms/form-entity-bridge.js.map +1 -1
  135. package/dist/forms/form-write-target.d.ts +0 -1
  136. package/dist/forms/form-write-target.js.map +1 -1
  137. package/dist/forms/index.d.ts +0 -1
  138. package/dist/forms/index.js.map +1 -1
  139. package/dist/forms/named-control-values.d.ts +0 -1
  140. package/dist/forms/named-control-values.js.map +1 -1
  141. package/dist/forms/processor.d.ts +0 -1
  142. package/dist/forms/processor.js.map +1 -1
  143. package/dist/forms/types.d.ts +0 -1
  144. package/dist/forms/types.js.map +1 -1
  145. package/dist/forms/validator.d.ts +0 -1
  146. package/dist/forms/validator.js.map +1 -1
  147. package/dist/graph/index.d.ts +0 -1
  148. package/dist/graph/index.js.map +1 -1
  149. package/dist/graph/resolver.d.ts +0 -1
  150. package/dist/graph/resolver.js.map +1 -1
  151. package/dist/graph/types.d.ts +0 -1
  152. package/dist/graph/types.js.map +1 -1
  153. package/dist/hooks/useInstalledAtoms.d.ts +0 -1
  154. package/dist/hooks/useInstalledAtoms.js.map +1 -1
  155. package/dist/i18n/index.d.ts +0 -1
  156. package/dist/i18n/index.js.map +1 -1
  157. package/dist/i18n/translator.d.ts +0 -1
  158. package/dist/i18n/translator.js.map +1 -1
  159. package/dist/i18n/types.d.ts +0 -1
  160. package/dist/i18n/types.js.map +1 -1
  161. package/dist/index.d.ts +0 -1
  162. package/dist/index.js.map +1 -1
  163. package/dist/kernel.d.ts +0 -1
  164. package/dist/kernel.js.map +1 -1
  165. package/dist/perf/budget.d.ts +0 -1
  166. package/dist/perf/budget.js.map +1 -1
  167. package/dist/perf/index.d.ts +0 -1
  168. package/dist/perf/index.js.map +1 -1
  169. package/dist/perf/render-timer.d.ts +0 -1
  170. package/dist/perf/render-timer.js.map +1 -1
  171. package/dist/perf/reporter.d.ts +0 -1
  172. package/dist/perf/reporter.js.map +1 -1
  173. package/dist/perf/web-vitals.d.ts +0 -1
  174. package/dist/perf/web-vitals.js.map +1 -1
  175. package/dist/registry.d.ts +0 -1
  176. package/dist/registry.js.map +1 -1
  177. package/dist/render/BehaviorSurfaceProvider.d.ts +0 -1
  178. package/dist/render/BehaviorSurfaceProvider.js.map +1 -1
  179. package/dist/render/BlockErrorBoundary.d.ts +0 -1
  180. package/dist/render/BlockErrorBoundary.js.map +1 -1
  181. package/dist/render/DataBoundSurfaceRenderer.d.ts +0 -1
  182. package/dist/render/DataBoundSurfaceRenderer.js.map +1 -1
  183. package/dist/render/DynamicBlockWrapper.d.ts +0 -1
  184. package/dist/render/DynamicBlockWrapper.js.map +1 -1
  185. package/dist/render/appearance-resolver.d.ts +0 -1
  186. package/dist/render/appearance-resolver.js.map +1 -1
  187. package/dist/render/capability-gate.d.ts +0 -1
  188. package/dist/render/capability-gate.js.map +1 -1
  189. package/dist/render/conditional-states-css.d.ts +0 -1
  190. package/dist/render/conditional-states-css.js.map +1 -1
  191. package/dist/render/connections-context.d.ts +0 -1
  192. package/dist/render/connections-context.js.map +1 -1
  193. package/dist/render/dark-theme-css.d.ts +0 -1
  194. package/dist/render/dark-theme-css.js.map +1 -1
  195. package/dist/render/data-binding-types.d.ts +0 -1
  196. package/dist/render/data-binding-types.js.map +1 -1
  197. package/dist/render/data-cache.d.ts +0 -1
  198. package/dist/render/data-cache.js.map +1 -1
  199. package/dist/render/derive-dark-theme.d.ts +0 -1
  200. package/dist/render/derive-dark-theme.js.map +1 -1
  201. package/dist/render/dynamic-artifact-context.d.ts +0 -1
  202. package/dist/render/dynamic-artifact-context.js.map +1 -1
  203. package/dist/render/dynamic-block-loader.d.ts +0 -1
  204. package/dist/render/dynamic-block-loader.js.map +1 -1
  205. package/dist/render/endpoint.d.ts +0 -1
  206. package/dist/render/endpoint.js.map +1 -1
  207. package/dist/render/entity-facade-context.d.ts +0 -1
  208. package/dist/render/entity-facade-context.js.map +1 -1
  209. package/dist/render/group-states-css.d.ts +0 -1
  210. package/dist/render/group-states-css.js.map +1 -1
  211. package/dist/render/hooks/useSurfaceEvents.d.ts +0 -1
  212. package/dist/render/hooks/useSurfaceEvents.js.map +1 -1
  213. package/dist/render/hooks/useSurfaceId.d.ts +0 -1
  214. package/dist/render/hooks/useSurfaceId.js.map +1 -1
  215. package/dist/render/index.d.ts +0 -1
  216. package/dist/render/index.js.map +1 -1
  217. package/dist/render/interaction-rule-engine.d.ts +0 -1
  218. package/dist/render/interaction-rule-engine.js.map +1 -1
  219. package/dist/render/keyframes-css.d.ts +0 -1
  220. package/dist/render/keyframes-css.js.map +1 -1
  221. package/dist/render/query-state.d.ts +0 -1
  222. package/dist/render/query-state.js.map +1 -1
  223. package/dist/render/renderer.d.ts +0 -1
  224. package/dist/render/renderer.js.map +1 -1
  225. package/dist/render/resolve-expressions.d.ts +0 -1
  226. package/dist/render/resolve-expressions.js.map +1 -1
  227. package/dist/render/responsive-style-css.d.ts +0 -1
  228. package/dist/render/responsive-style-css.js.map +1 -1
  229. package/dist/render/responsive.d.ts +0 -1
  230. package/dist/render/responsive.js.map +1 -1
  231. package/dist/render/scoped-css.d.ts +0 -1
  232. package/dist/render/scoped-css.js.map +1 -1
  233. package/dist/render/shell-selection.d.ts +0 -1
  234. package/dist/render/shell-selection.js.map +1 -1
  235. package/dist/render/states-css.d.ts +0 -1
  236. package/dist/render/states-css.js.map +1 -1
  237. package/dist/render/surface-data-context.d.ts +0 -1
  238. package/dist/render/surface-data-context.js.map +1 -1
  239. package/dist/render/surface-event-bus.d.ts +0 -1
  240. package/dist/render/surface-event-bus.js.map +1 -1
  241. package/dist/render/surface-event-context.d.ts +0 -1
  242. package/dist/render/surface-event-context.js.map +1 -1
  243. package/dist/render/surface-id-context.d.ts +0 -1
  244. package/dist/render/surface-id-context.js.map +1 -1
  245. package/dist/render/theme-utils.d.ts +0 -1
  246. package/dist/render/theme-utils.js.map +1 -1
  247. package/dist/render/types.d.ts +0 -1
  248. package/dist/render/types.js.map +1 -1
  249. package/dist/render/visibility-css.d.ts +0 -1
  250. package/dist/render/visibility-css.js.map +1 -1
  251. package/dist/render/width-scope.d.ts +0 -1
  252. package/dist/render/width-scope.js.map +1 -1
  253. package/dist/render/write-only-sources.d.ts +0 -1
  254. package/dist/render/write-only-sources.js.map +1 -1
  255. package/dist/routing/index.d.ts +0 -1
  256. package/dist/routing/index.js.map +1 -1
  257. package/dist/routing/router.d.ts +0 -1
  258. package/dist/routing/router.js.map +1 -1
  259. package/dist/routing/types.d.ts +0 -1
  260. package/dist/routing/types.js.map +1 -1
  261. package/dist/seo/generator.d.ts +0 -1
  262. package/dist/seo/generator.js.map +1 -1
  263. package/dist/seo/index.d.ts +0 -1
  264. package/dist/seo/index.js.map +1 -1
  265. package/dist/seo/types.d.ts +0 -1
  266. package/dist/seo/types.js.map +1 -1
  267. package/dist/state/index.d.ts +0 -1
  268. package/dist/state/index.js.map +1 -1
  269. package/dist/state/manager.d.ts +0 -1
  270. package/dist/state/manager.js.map +1 -1
  271. package/dist/state/store.d.ts +0 -1
  272. package/dist/state/store.js.map +1 -1
  273. package/dist/state/types.d.ts +0 -1
  274. package/dist/state/types.js.map +1 -1
  275. package/dist/surface/expression.d.ts +0 -1
  276. package/dist/surface/expression.js.map +1 -1
  277. package/dist/surface/index.d.ts +0 -1
  278. package/dist/surface/index.js.map +1 -1
  279. package/dist/surface/interpreter.d.ts +0 -1
  280. package/dist/surface/interpreter.js.map +1 -1
  281. package/dist/surface/layout.d.ts +0 -1
  282. package/dist/surface/layout.js.map +1 -1
  283. package/dist/surface/output.d.ts +0 -1
  284. package/dist/surface/output.js.map +1 -1
  285. package/dist/surface/primitives.d.ts +0 -1
  286. package/dist/surface/primitives.js.map +1 -1
  287. package/dist/surface/renderer.d.ts +0 -1
  288. package/dist/surface/renderer.js.map +1 -1
  289. package/dist/surface/schemas.d.ts +0 -1
  290. package/dist/surface/schemas.js.map +1 -1
  291. package/dist/surface/transforms.d.ts +0 -1
  292. package/dist/surface/transforms.js.map +1 -1
  293. package/dist/surface/types.d.ts +0 -1
  294. package/dist/surface/types.js.map +1 -1
  295. package/dist/surface/validation.d.ts +0 -1
  296. package/dist/surface/validation.js.map +1 -1
  297. package/dist/validator.d.ts +0 -1
  298. package/dist/validator.js.map +1 -1
  299. package/package.json +41 -40
  300. package/dist/__tests__/dom-test-setup.d.ts +0 -21
  301. package/dist/__tests__/dom-test-setup.d.ts.map +0 -1
  302. package/dist/__tests__/dom-test-setup.js +0 -36
  303. package/dist/__tests__/dom-test-setup.js.map +0 -1
  304. package/dist/a11y/announcer.d.ts.map +0 -1
  305. package/dist/a11y/contrast.d.ts.map +0 -1
  306. package/dist/a11y/focus.d.ts.map +0 -1
  307. package/dist/a11y/index.d.ts.map +0 -1
  308. package/dist/a11y/keyboard.d.ts.map +0 -1
  309. package/dist/adapters/default-image.d.ts.map +0 -1
  310. package/dist/adapters/index.d.ts.map +0 -1
  311. package/dist/adapters/next-image.d.ts.map +0 -1
  312. package/dist/adapters/types.d.ts.map +0 -1
  313. package/dist/analytics/index.d.ts.map +0 -1
  314. package/dist/analytics/tracker.d.ts.map +0 -1
  315. package/dist/analytics/types.d.ts.map +0 -1
  316. package/dist/auth/index.d.ts.map +0 -1
  317. package/dist/auth/provider.d.ts.map +0 -1
  318. package/dist/auth/types.d.ts.map +0 -1
  319. package/dist/binding/collection.d.ts.map +0 -1
  320. package/dist/binding/datasource.d.ts.map +0 -1
  321. package/dist/binding/engine.d.ts.map +0 -1
  322. package/dist/binding/expression.d.ts.map +0 -1
  323. package/dist/binding/index.d.ts.map +0 -1
  324. package/dist/binding/two-way.d.ts.map +0 -1
  325. package/dist/binding/types.d.ts.map +0 -1
  326. package/dist/blocks/__test-fixtures__/block-fixtures.d.ts +0 -40
  327. package/dist/blocks/__test-fixtures__/block-fixtures.d.ts.map +0 -1
  328. package/dist/blocks/__test-fixtures__/block-fixtures.js +0 -506
  329. package/dist/blocks/__test-fixtures__/block-fixtures.js.map +0 -1
  330. package/dist/blocks/component-types.d.ts.map +0 -1
  331. package/dist/blocks/composition-rules.d.ts.map +0 -1
  332. package/dist/blocks/hooks.d.ts.map +0 -1
  333. package/dist/blocks/index.d.ts.map +0 -1
  334. package/dist/blocks/registry.d.ts.map +0 -1
  335. package/dist/blocks/rule-engine.d.ts.map +0 -1
  336. package/dist/blocks/surface-event-context.d.ts.map +0 -1
  337. package/dist/blocks/surface-id-context.d.ts.map +0 -1
  338. package/dist/bus.d.ts.map +0 -1
  339. package/dist/cache/index.d.ts.map +0 -1
  340. package/dist/cache/memory.d.ts.map +0 -1
  341. package/dist/cache/types.d.ts.map +0 -1
  342. package/dist/capability/index.d.ts.map +0 -1
  343. package/dist/capability/kernel-capabilities.d.ts.map +0 -1
  344. package/dist/capability/platform-capabilities.d.ts.map +0 -1
  345. package/dist/capability/type-mapping.d.ts.map +0 -1
  346. package/dist/capability/validation.d.ts.map +0 -1
  347. package/dist/connectors/declared-connector.d.ts.map +0 -1
  348. package/dist/connectors/engine-registry.d.ts.map +0 -1
  349. package/dist/connectors/index.d.ts.map +0 -1
  350. package/dist/connectors/module-loader.d.ts.map +0 -1
  351. package/dist/connectors/types.d.ts.map +0 -1
  352. package/dist/context.d.ts.map +0 -1
  353. package/dist/data/DataCapabilityProvider.d.ts.map +0 -1
  354. package/dist/data/index.d.ts.map +0 -1
  355. package/dist/data/manager.d.ts.map +0 -1
  356. package/dist/data/types.d.ts.map +0 -1
  357. package/dist/entity/aggregate.d.ts.map +0 -1
  358. package/dist/entity/apply-query.d.ts.map +0 -1
  359. package/dist/entity/behavior.d.ts.map +0 -1
  360. package/dist/entity/connector.d.ts.map +0 -1
  361. package/dist/entity/connectors/index.d.ts.map +0 -1
  362. package/dist/entity/connectors/static.d.ts.map +0 -1
  363. package/dist/entity/entity-datasource.d.ts.map +0 -1
  364. package/dist/entity/facade.d.ts.map +0 -1
  365. package/dist/entity/http-connector.d.ts.map +0 -1
  366. package/dist/entity/index.d.ts.map +0 -1
  367. package/dist/entity/postgres-connector.d.ts.map +0 -1
  368. package/dist/entity/registry.d.ts.map +0 -1
  369. package/dist/entity/store.d.ts.map +0 -1
  370. package/dist/entity/types.d.ts.map +0 -1
  371. package/dist/execution-context.d.ts.map +0 -1
  372. package/dist/executor.d.ts.map +0 -1
  373. package/dist/forms/form-entity-bridge.d.ts.map +0 -1
  374. package/dist/forms/form-write-target.d.ts.map +0 -1
  375. package/dist/forms/index.d.ts.map +0 -1
  376. package/dist/forms/named-control-values.d.ts.map +0 -1
  377. package/dist/forms/processor.d.ts.map +0 -1
  378. package/dist/forms/types.d.ts.map +0 -1
  379. package/dist/forms/validator.d.ts.map +0 -1
  380. package/dist/graph/index.d.ts.map +0 -1
  381. package/dist/graph/resolver.d.ts.map +0 -1
  382. package/dist/graph/types.d.ts.map +0 -1
  383. package/dist/hooks/useInstalledAtoms.d.ts.map +0 -1
  384. package/dist/i18n/index.d.ts.map +0 -1
  385. package/dist/i18n/translator.d.ts.map +0 -1
  386. package/dist/i18n/types.d.ts.map +0 -1
  387. package/dist/index.d.ts.map +0 -1
  388. package/dist/kernel.d.ts.map +0 -1
  389. package/dist/perf/budget.d.ts.map +0 -1
  390. package/dist/perf/index.d.ts.map +0 -1
  391. package/dist/perf/render-timer.d.ts.map +0 -1
  392. package/dist/perf/reporter.d.ts.map +0 -1
  393. package/dist/perf/web-vitals.d.ts.map +0 -1
  394. package/dist/registry.d.ts.map +0 -1
  395. package/dist/render/BehaviorSurfaceProvider.d.ts.map +0 -1
  396. package/dist/render/BlockErrorBoundary.d.ts.map +0 -1
  397. package/dist/render/DataBoundSurfaceRenderer.d.ts.map +0 -1
  398. package/dist/render/DynamicBlockWrapper.d.ts.map +0 -1
  399. package/dist/render/appearance-resolver.d.ts.map +0 -1
  400. package/dist/render/capability-gate.d.ts.map +0 -1
  401. package/dist/render/conditional-states-css.d.ts.map +0 -1
  402. package/dist/render/connections-context.d.ts.map +0 -1
  403. package/dist/render/dark-theme-css.d.ts.map +0 -1
  404. package/dist/render/data-binding-types.d.ts.map +0 -1
  405. package/dist/render/data-cache.d.ts.map +0 -1
  406. package/dist/render/derive-dark-theme.d.ts.map +0 -1
  407. package/dist/render/dynamic-artifact-context.d.ts.map +0 -1
  408. package/dist/render/dynamic-block-loader.d.ts.map +0 -1
  409. package/dist/render/endpoint.d.ts.map +0 -1
  410. package/dist/render/entity-facade-context.d.ts.map +0 -1
  411. package/dist/render/group-states-css.d.ts.map +0 -1
  412. package/dist/render/hooks/useSurfaceEvents.d.ts.map +0 -1
  413. package/dist/render/hooks/useSurfaceId.d.ts.map +0 -1
  414. package/dist/render/index.d.ts.map +0 -1
  415. package/dist/render/interaction-rule-engine.d.ts.map +0 -1
  416. package/dist/render/keyframes-css.d.ts.map +0 -1
  417. package/dist/render/query-state.d.ts.map +0 -1
  418. package/dist/render/renderer.d.ts.map +0 -1
  419. package/dist/render/resolve-expressions.d.ts.map +0 -1
  420. package/dist/render/responsive-style-css.d.ts.map +0 -1
  421. package/dist/render/responsive.d.ts.map +0 -1
  422. package/dist/render/scoped-css.d.ts.map +0 -1
  423. package/dist/render/shell-selection.d.ts.map +0 -1
  424. package/dist/render/states-css.d.ts.map +0 -1
  425. package/dist/render/surface-data-context.d.ts.map +0 -1
  426. package/dist/render/surface-event-bus.d.ts.map +0 -1
  427. package/dist/render/surface-event-context.d.ts.map +0 -1
  428. package/dist/render/surface-id-context.d.ts.map +0 -1
  429. package/dist/render/theme-utils.d.ts.map +0 -1
  430. package/dist/render/types.d.ts.map +0 -1
  431. package/dist/render/visibility-css.d.ts.map +0 -1
  432. package/dist/render/width-scope.d.ts.map +0 -1
  433. package/dist/render/write-only-sources.d.ts.map +0 -1
  434. package/dist/routing/index.d.ts.map +0 -1
  435. package/dist/routing/router.d.ts.map +0 -1
  436. package/dist/routing/types.d.ts.map +0 -1
  437. package/dist/seo/generator.d.ts.map +0 -1
  438. package/dist/seo/index.d.ts.map +0 -1
  439. package/dist/seo/types.d.ts.map +0 -1
  440. package/dist/state/index.d.ts.map +0 -1
  441. package/dist/state/manager.d.ts.map +0 -1
  442. package/dist/state/store.d.ts.map +0 -1
  443. package/dist/state/types.d.ts.map +0 -1
  444. package/dist/surface/expression.d.ts.map +0 -1
  445. package/dist/surface/index.d.ts.map +0 -1
  446. package/dist/surface/interpreter.d.ts.map +0 -1
  447. package/dist/surface/layout.d.ts.map +0 -1
  448. package/dist/surface/output.d.ts.map +0 -1
  449. package/dist/surface/primitives.d.ts.map +0 -1
  450. package/dist/surface/renderer.d.ts.map +0 -1
  451. package/dist/surface/schemas.d.ts.map +0 -1
  452. package/dist/surface/transforms.d.ts.map +0 -1
  453. package/dist/surface/types.d.ts.map +0 -1
  454. package/dist/surface/validation.d.ts.map +0 -1
  455. package/dist/validator.d.ts.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/entity/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../../src/entity/store.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Entity Store\n *\n * Uniform CRUD and query interface backed by connectors.\n * The store handles validation and delegates persistence to connectors.\n *\n * @module @pwfabric/runtime/entity/store\n */\n\nimport type {\n EntityTypeId,\n EntityInstanceId,\n EntityQuery,\n EntityQueryResult,\n EntityMutationResult,\n EntityReadResult,\n EntityAggregate,\n EntityAggregateResult,\n} from './types.js'\nimport { aggregateThrough } from './aggregate.js'\nimport type { EntityRegistry } from './registry.js'\nimport type { ConnectorRegistry } from './connector.js'\nimport type { SurfaceEventBus } from '@pwfabric/contracts'\n\n// ============================================================\n// ENTITY STORE INTERFACE\n// ============================================================\n\n/**\n * Entity store interface for CRUD operations\n */\nexport interface EntityStore {\n /**\n * Create a new entity instance\n */\n create(entityType: EntityTypeId, data: Record<string, unknown>): Promise<EntityMutationResult>\n\n /**\n * Read a single entity instance\n */\n read(entityType: EntityTypeId, instanceId: EntityInstanceId): Promise<EntityReadResult>\n\n /**\n * Update an existing entity instance\n */\n update(\n entityType: EntityTypeId,\n instanceId: EntityInstanceId,\n data: Record<string, unknown>\n ): Promise<EntityMutationResult>\n\n /**\n * Delete an entity instance\n */\n delete(entityType: EntityTypeId, instanceId: EntityInstanceId): Promise<EntityMutationResult>\n\n /**\n * Query entity instances\n */\n query(entityType: EntityTypeId, query: EntityQuery): Promise<EntityQueryResult>\n\n /**\n * One number over the collection. Server-side when the connector\n * can; otherwise the connector's rows are reduced in memory. REJECTS when\n * the number cannot be served — unlike `query`, whose honest failure is an\n * empty list, a counter's `0` would be a lie.\n *\n * OPTIONAL so a host-written `EntityStore` keeps compiling; the facade\n * lists and reduces through `query` when a store has none.\n */\n aggregate?(entityType: EntityTypeId, aggregate: EntityAggregate): Promise<EntityAggregateResult>\n}\n\n// ============================================================\n// DEFAULT ENTITY STORE\n// ============================================================\n\n/**\n * Default implementation of EntityStore.\n * Validates through the registry and delegates persistence to connectors.\n *\n * Accepts an optional SurfaceEventBus. When provided, successful\n * CRUD operations emit entity:created / entity:updated / entity:deleted events on\n * the bus so that the rest of the surface can react declaratively.\n *\n * The bus is surface-scoped — the caller injects the bus for a\n * specific surface, keeping the store surface-aware without making it globally coupled.\n */\n/**\n * The id of a record a connector just created. A record service may answer\n * with the record itself (`{ id, … }`) or wrap it (`{ data: { id, … } }`, the\n * shape the data protocol specifies); both are read.\n */\nfunction createdIdOf(body: Record<string, unknown> | undefined): EntityInstanceId {\n const own = body?.['id']\n if (typeof own === 'string' || typeof own === 'number') return String(own) as EntityInstanceId\n const inner = body?.['data']\n if (inner && typeof inner === 'object' && !Array.isArray(inner)) {\n const id = (inner as Record<string, unknown>)['id']\n if (typeof id === 'string' || typeof id === 'number') return String(id) as EntityInstanceId\n }\n return '' as EntityInstanceId\n}\n\nexport class DefaultEntityStore implements EntityStore {\n private readonly registry: EntityRegistry\n private readonly connectors: ConnectorRegistry\n private readonly eventBus: SurfaceEventBus | undefined\n\n constructor(registry: EntityRegistry, connectors: ConnectorRegistry, eventBus?: SurfaceEventBus) {\n this.registry = registry\n this.connectors = connectors\n this.eventBus = eventBus ?? undefined\n }\n\n async create(\n entityType: EntityTypeId,\n data: Record<string, unknown>\n ): Promise<EntityMutationResult> {\n // Validate entity type exists\n if (!this.registry.has(entityType)) {\n return {\n success: false,\n error: {\n type: 'not_found',\n message: `Entity type '${entityType}' is not registered`,\n },\n }\n }\n\n // Validate data against schema\n const validation = this.registry.validate(entityType, data)\n if (!validation.valid) {\n return {\n success: false,\n error: {\n type: 'validation',\n message: 'Validation failed',\n details: validation.errors,\n },\n }\n }\n\n // Resolve connector\n const connector = this.connectors.resolve(entityType)\n if (!connector) {\n return {\n success: false,\n error: {\n type: 'connector',\n message: `No connector found for entity type '${entityType}'`,\n },\n }\n }\n\n // Delegate to connector\n const result = await connector.create(entityType, validation.data)\n if (!result.success) {\n return {\n success: false,\n error: {\n type: 'connector',\n message: result.error,\n },\n }\n }\n\n const mutationResult: EntityMutationResult = {\n success: true,\n data: result.data,\n id: createdIdOf(result.data),\n }\n\n // emit entity:created on the surface-scoped bus\n if (this.eventBus) {\n this.eventBus.emit({\n type: 'entity:created',\n surfaceId: 'system',\n payload: {\n entityType,\n instanceId: mutationResult.id,\n data: mutationResult.data,\n timestamp: Date.now(),\n },\n timestamp: Date.now(),\n })\n }\n\n return mutationResult\n }\n\n async read(entityType: EntityTypeId, instanceId: EntityInstanceId): Promise<EntityReadResult> {\n // Validate entity type exists\n if (!this.registry.has(entityType)) {\n return {\n success: false,\n error: {\n type: 'not_found',\n message: `Entity type '${entityType}' is not registered`,\n },\n }\n }\n\n // Resolve connector\n const connector = this.connectors.resolve(entityType)\n if (!connector) {\n return {\n success: false,\n error: {\n type: 'connector',\n message: `No connector found for entity type '${entityType}'`,\n },\n }\n }\n\n // Delegate to connector\n const result = await connector.read(entityType, instanceId)\n if (!result.success) {\n return {\n success: false,\n error: {\n type: 'not_found',\n message: result.error,\n },\n }\n }\n\n return {\n success: true,\n data: result.data,\n }\n }\n\n async update(\n entityType: EntityTypeId,\n instanceId: EntityInstanceId,\n data: Record<string, unknown>\n ): Promise<EntityMutationResult> {\n // Validate entity type exists\n if (!this.registry.has(entityType)) {\n return {\n success: false,\n error: {\n type: 'not_found',\n message: `Entity type '${entityType}' is not registered`,\n },\n }\n }\n\n // Read existing record to merge with updates for validation\n const connector = this.connectors.resolve(entityType)\n if (!connector) {\n return {\n success: false,\n error: {\n type: 'connector',\n message: `No connector found for entity type '${entityType}'`,\n },\n }\n }\n\n const existing = await connector.read(entityType, instanceId)\n if (!existing.success) {\n return {\n success: false,\n error: {\n type: 'not_found',\n message: existing.error,\n },\n }\n }\n\n // Merge existing data with updates for full validation\n const merged = { ...existing.data, ...data }\n const validation = this.registry.validate(entityType, merged)\n if (!validation.valid) {\n return {\n success: false,\n error: {\n type: 'validation',\n message: 'Validation failed',\n details: validation.errors,\n },\n }\n }\n\n // Delegate to connector\n const result = await connector.update(entityType, instanceId, data)\n if (!result.success) {\n return {\n success: false,\n error: {\n type: 'connector',\n message: result.error,\n },\n }\n }\n\n const updateResult: EntityMutationResult = {\n success: true,\n data: result.data,\n id: instanceId,\n }\n\n // emit entity:updated on the surface-scoped bus\n if (this.eventBus) {\n this.eventBus.emit({\n type: 'entity:updated',\n surfaceId: 'system',\n payload: {\n entityType,\n instanceId,\n data: updateResult.data,\n changeset: data,\n timestamp: Date.now(),\n },\n timestamp: Date.now(),\n })\n }\n\n return updateResult\n }\n\n async delete(\n entityType: EntityTypeId,\n instanceId: EntityInstanceId\n ): Promise<EntityMutationResult> {\n // Validate entity type exists\n if (!this.registry.has(entityType)) {\n return {\n success: false,\n error: {\n type: 'not_found',\n message: `Entity type '${entityType}' is not registered`,\n },\n }\n }\n\n // Resolve connector\n const connector = this.connectors.resolve(entityType)\n if (!connector) {\n return {\n success: false,\n error: {\n type: 'connector',\n message: `No connector found for entity type '${entityType}'`,\n },\n }\n }\n\n // Delegate to connector\n const result = await connector.delete(entityType, instanceId)\n if (!result.success) {\n return {\n success: false,\n error: {\n type: 'not_found',\n message: result.error,\n },\n }\n }\n\n const deleteResult: EntityMutationResult = {\n success: true,\n data: result.data,\n id: instanceId,\n }\n\n // emit entity:deleted on the surface-scoped bus\n if (this.eventBus) {\n this.eventBus.emit({\n type: 'entity:deleted',\n surfaceId: 'system',\n payload: {\n entityType,\n instanceId,\n timestamp: Date.now(),\n },\n timestamp: Date.now(),\n })\n }\n\n return deleteResult\n }\n\n async query(entityType: EntityTypeId, query: EntityQuery): Promise<EntityQueryResult> {\n // Validate entity type exists\n if (!this.registry.has(entityType)) {\n return {\n items: [],\n total: 0,\n offset: 0,\n limit: query.pagination?.limit ?? 50,\n hasMore: false,\n }\n }\n\n // Resolve connector\n const connector = this.connectors.resolve(entityType)\n if (!connector) {\n return {\n items: [],\n total: 0,\n offset: 0,\n limit: query.pagination?.limit ?? 50,\n hasMore: false,\n }\n }\n\n // Delegate to connector\n const result = await connector.query(entityType, query)\n if (!result.success) {\n return {\n items: [],\n total: 0,\n offset: 0,\n limit: query.pagination?.limit ?? 50,\n hasMore: false,\n }\n }\n\n return result.result\n }\n\n async aggregate(entityType: EntityTypeId, aggregate: EntityAggregate): Promise<EntityAggregateResult> {\n // NOT the same as query. An empty list is an honest answer to \"could not\n // list\"; `{ value: 0 }` is not an honest answer to \"could not count\" —\n // a 403 would read as \"0 people are coming\". Reject, and the renderer\n // binds `fallback` and `__errors.<id>` like any failed source.\n if (!this.registry.has(entityType)) {\n throw new Error(`Entity type '${String(entityType)}' is not registered`)\n }\n const connector = this.connectors.resolve(entityType)\n if (!connector) throw new Error(`No connector for entity type '${String(entityType)}'`)\n const result = await aggregateThrough(connector, entityType, aggregate)\n if (!result.success) throw new Error(result.error)\n return result.result\n }\n}\n\n// ============================================================\n// FACTORY FUNCTION\n// ============================================================\n\n/**\n * Create an entity store.\n *\n * Pass an optional `eventBus` to enable surface-scoped event\n * emission on successful CRUD operations (entity:created, entity:updated, entity:deleted).\n */\nexport function createEntityStore(\n registry: EntityRegistry,\n connectors: ConnectorRegistry,\n eventBus?: SurfaceEventBus\n): EntityStore {\n return new DefaultEntityStore(registry, connectors, eventBus)\n}\n"]}
@@ -178,4 +178,3 @@ export interface EntityValidationError {
178
178
  readonly message: string;
179
179
  readonly code: string;
180
180
  }
181
- //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/entity/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/entity/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG","sourcesContent":["/**\n * Entity System Types\n *\n * Entity system type definitions for schema-based entity types,\n * CRUD operations, queries, and validation.\n *\n * @module @pwfabric/runtime/entity/types\n */\n\nimport type { z } from 'zod'\n\n// ============================================================\n// BRANDED IDENTIFIERS\n// ============================================================\n\n/**\n * Branded string type for entity type identifiers\n */\nexport type EntityTypeId = string & { readonly __brand: 'EntityTypeId' }\n\n/**\n * Branded string type for entity instance identifiers\n */\nexport type EntityInstanceId = string & { readonly __brand: 'EntityInstanceId' }\n\n// ============================================================\n// ENTITY FIELD DEFINITIONS\n// ============================================================\n\n/**\n * Supported field types for entity definitions\n */\nexport type EntityFieldType =\n | 'string'\n | 'number'\n | 'boolean'\n | 'date'\n | 'datetime'\n | 'enum'\n | 'json'\n | 'reference'\n\n/**\n * Definition of a single field within an entity\n */\nexport interface EntityFieldDefinition {\n readonly name: string\n readonly type: EntityFieldType\n readonly required: boolean\n readonly unique?: boolean\n readonly defaultValue?: unknown\n readonly enumValues?: readonly string[]\n readonly referenceTarget?: EntityTypeId\n readonly validation?: z.ZodType\n readonly label?: string\n readonly description?: string\n}\n\n// ============================================================\n// ENTITY RELATION DEFINITIONS\n// ============================================================\n\n/**\n * Supported relation types between entities\n */\nexport type EntityRelationType = 'has-one' | 'has-many' | 'belongs-to' | 'many-to-many'\n\n/**\n * Definition of a relation between entity types\n */\nexport interface EntityRelationDefinition {\n readonly name: string\n readonly type: EntityRelationType\n readonly target: EntityTypeId\n readonly foreignKey?: string\n readonly through?: EntityTypeId\n readonly cascade?: 'none' | 'delete' | 'nullify'\n}\n\n// ============================================================\n// ENTITY DEFINITION\n// ============================================================\n\n/**\n * Complete definition of an entity type including fields, relations, and schema\n */\nexport interface EntityDefinition {\n readonly id: EntityTypeId\n readonly name: string\n readonly description?: string\n readonly fields: readonly EntityFieldDefinition[]\n readonly relations: readonly EntityRelationDefinition[]\n readonly primaryKey: string\n readonly timestamps?: boolean\n readonly softDelete?: boolean\n readonly schema: z.ZodObject<z.ZodRawShape>\n}\n\n// ============================================================\n// QUERY TYPES\n// ============================================================\n\n/**\n * Entity query specification with optional filter, sort, and pagination\n */\nexport interface EntityQuery {\n readonly filter?: EntityFilter\n readonly sort?: readonly EntitySortField[]\n readonly pagination?: EntityPagination\n readonly include?: readonly string[]\n}\n\n/**\n * Filter condition for entity queries\n */\nexport interface EntityFilter {\n readonly field: string\n readonly operator: 'eq' | 'neq' | 'gt' | 'gte' | 'lt' | 'lte' | 'in' | 'contains' | 'startsWith'\n readonly value: unknown\n readonly and?: readonly EntityFilter[]\n readonly or?: readonly EntityFilter[]\n}\n\n/**\n * Sort field specification\n */\nexport interface EntitySortField {\n readonly field: string\n readonly direction: 'asc' | 'desc'\n}\n\n/**\n * Pagination parameters\n */\nexport interface EntityPagination {\n readonly offset: number\n readonly limit: number\n}\n\n/** One number over a collection: `count` needs no field, the rest reduce `field`. */\nexport type EntityAggregateFn = 'count' | 'sum' | 'avg'\n\n/**\n * An aggregate request — the source-level `aggregate` key. `filter`\n * narrows the rows first, in the `EntityQuery.filter` shape.\n */\nexport interface EntityAggregate {\n readonly fn: EntityAggregateFn\n readonly field?: string\n readonly filter?: EntityFilter\n}\n\n/**\n * What an aggregate answers: `value` is the number (`null` when a numeric\n * fn found nothing to reduce), `count` the rows the filter kept.\n */\nexport interface EntityAggregateResult {\n readonly fn: EntityAggregateFn\n readonly field?: string\n readonly value: number | null\n readonly count: number\n}\n\n/**\n * Result of a paginated entity query\n */\nexport interface EntityQueryResult<T = Record<string, unknown>> {\n readonly items: readonly T[]\n readonly total: number\n readonly offset: number\n readonly limit: number\n readonly hasMore: boolean\n}\n\n// ============================================================\n// OPERATION RESULTS (DISCRIMINATED UNIONS)\n// ============================================================\n\n/**\n * Result of a create or update mutation\n */\nexport type EntityMutationResult =\n | {\n readonly success: true\n readonly data: Record<string, unknown>\n readonly id: EntityInstanceId\n }\n | { readonly success: false; readonly error: EntityOperationError }\n\n/**\n * Result of a read operation\n */\nexport type EntityReadResult =\n | { readonly success: true; readonly data: Record<string, unknown> }\n | { readonly success: false; readonly error: EntityOperationError }\n\n/**\n * Error descriptor for entity operations\n */\nexport interface EntityOperationError {\n readonly type: 'not_found' | 'validation' | 'conflict' | 'connector' | 'unauthorized' | 'unknown'\n readonly message: string\n readonly details?: unknown\n}\n\n// ============================================================\n// VALIDATION TYPES\n// ============================================================\n\n/**\n * Result of entity validation (discriminated union)\n */\nexport type EntityValidationResult =\n | { readonly valid: true; readonly data: Record<string, unknown> }\n | { readonly valid: false; readonly errors: readonly EntityValidationError[] }\n\n/**\n * Single field validation error\n */\nexport interface EntityValidationError {\n readonly field: string\n readonly message: string\n readonly code: string\n}\n"]}
@@ -86,4 +86,3 @@ export interface CreateExecutionContextOptions {
86
86
  * Create a new execution context
87
87
  */
88
88
  export declare function createExecutionContext(options: CreateExecutionContextOptions): RuntimeExecutionContext;
89
- //# sourceMappingURL=execution-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"execution-context.js","sourceRoot":"","sources":["../src/execution-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution-context.js","sourceRoot":"","sources":["../src/execution-context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH,+DAA+D;AAC/D,wBAAwB;AACxB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,OAAO,sBAAsB;IAEd;IACA;IAFnB,YACmB,OAAe,EACf,MAAc;QADd,YAAO,GAAP,OAAO,CAAQ;QACf,WAAM,GAAN,MAAM,CAAQ;IAC9B,CAAC;IAEJ,KAAK,CAAC,OAAe,EAAE,IAA8B;QACnD,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,YAAY,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;IACjF,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAA8B;QAClD,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,WAAW,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;IAC/E,CAAC;IAED,IAAI,CAAC,OAAe,EAAE,IAA8B;QAClD,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,WAAW,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;IAC/E,CAAC;IAED,KAAK,CAAC,OAAe,EAAE,IAA8B;QACnD,OAAO,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,MAAM,YAAY,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,CAAA;IACjF,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,mBAAmB;IAC9B,KAAK,CAAC,QAAgB,EAAE,KAA+B;QACrD,QAAQ;IACV,CAAC;IACD,IAAI,CAAC,QAAgB,EAAE,KAA+B;QACpD,QAAQ;IACV,CAAC;IACD,IAAI,CAAC,QAAgB,EAAE,KAA+B;QACpD,QAAQ;IACV,CAAC;IACD,KAAK,CAAC,QAAgB,EAAE,KAA+B;QACrD,QAAQ;IACV,CAAC;CACF;AA6BD;;GAEG;AACH,MAAM,OAAO,uBAAuB;IACzB,OAAO,CAAQ;IACf,MAAM,CAAQ;IACd,YAAY,CAAS;IACrB,QAAQ,CAAU;IAClB,eAAe,CAAkB;IACjC,SAAS,CAAW;IACpB,OAAO,CAAS;IAChB,IAAI,CAAyB;IAC7B,MAAM,CAAiB;IAEf,OAAO,CAAmB;IAE3C,YAAY,OAAuC;QACjD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAA;QAC5B,IAAI,OAAO,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,CAAA;QAC1C,CAAC;QACD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;QAChC,IAAI,OAAO,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YAC1C,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAA;QAChD,CAAC;QACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAC3B,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;QAChC,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAA;QAC9B,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAI,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QACrF,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAChC,CAAC;IAED,MAAM,CACJ,YAA0B,EAC1B,KAAa;QAEb,OAAO,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAA;IAC1C,CAAC;IAED,KAAK,CAAC,MAAc;QAClB,MAAM,YAAY,GAAmC;YACnD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM;YACN,YAAY,EAAE,IAAI,CAAC,MAAM;YACzB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE;YACtB,MAAM,EAAE,IAAI,sBAAsB,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC;SACzD,CAAA;QACD,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACvC,YAAY,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAA;QACrD,CAAC;QACD,IAAI,IAAI,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAC/B,YAAY,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAA;QACrC,CAAC;QACD,OAAO,IAAI,uBAAuB,CAAC,YAAY,CAAC,CAAA;IAClD,CAAC;CACF;AAED,+DAA+D;AAC/D,kBAAkB;AAClB,+DAA+D;AAE/D;;GAEG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,SAAS,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;AACzE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,OAAO,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAA;AAC1D,CAAC;AAcD;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,OAAsC;IAEtC,MAAM,OAAO,GAAG,eAAe,EAAE,CAAA;IACjC,MAAM,MAAM,GAAG,cAAc,EAAE,CAAA;IAE/B,MAAM,cAAc,GAAmC;QACrD,OAAO;QACP,MAAM;QACN,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,MAAM,EAAE,OAAO,CAAC,MAAM;YACpB,CAAC,CAAC,IAAI,mBAAmB,EAAE;YAC3B,CAAC,CAAC,IAAI,sBAAsB,CAAC,OAAO,EAAE,MAAM,CAAC;KAChD,CAAA;IAED,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC;QAC5B,cAAc,CAAC,eAAe,GAAG,OAAO,CAAC,eAAe,CAAA;IAC1D,CAAC;IACD,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,cAAc,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAA;IAC1C,CAAC;IACD,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QACjB,cAAc,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI,CAAA;IACpC,CAAC;IAED,OAAO,IAAI,uBAAuB,CAAC,cAAc,CAAC,CAAA;AACpD,CAAC","sourcesContent":["/**\n * Execution Context\n *\n * Runtime execution context for capability execution\n *\n * @module @pwfabric/runtime/execution-context\n */\n\nimport type {\n CapabilityId,\n FabricId,\n ManifestationId,\n ExecutionContext,\n ExecutionLogger,\n ExecutionResult,\n Timestamp,\n} from '@pwfabric/contracts'\n\n// ============================================================\n// LOGGER IMPLEMENTATION\n// ============================================================\n\n/**\n * Console-based execution logger\n */\nexport class ConsoleExecutionLogger implements ExecutionLogger {\n constructor(\n private readonly traceId: string,\n private readonly spanId: string\n ) {}\n\n debug(message: string, data?: Record<string, unknown>): void {\n console.debug(`[${this.traceId}:${this.spanId}] DEBUG: ${message}`, data || '')\n }\n\n info(message: string, data?: Record<string, unknown>): void {\n console.info(`[${this.traceId}:${this.spanId}] INFO: ${message}`, data || '')\n }\n\n warn(message: string, data?: Record<string, unknown>): void {\n console.warn(`[${this.traceId}:${this.spanId}] WARN: ${message}`, data || '')\n }\n\n error(message: string, data?: Record<string, unknown>): void {\n console.error(`[${this.traceId}:${this.spanId}] ERROR: ${message}`, data || '')\n }\n}\n\n/**\n * No-op logger for silent execution\n */\nexport class NoOpExecutionLogger implements ExecutionLogger {\n debug(_message: string, _data?: Record<string, unknown>): void {\n // No-op\n }\n info(_message: string, _data?: Record<string, unknown>): void {\n // No-op\n }\n warn(_message: string, _data?: Record<string, unknown>): void {\n // No-op\n }\n error(_message: string, _data?: Record<string, unknown>): void {\n // No-op\n }\n}\n\n// ============================================================\n// EXECUTION CONTEXT IMPLEMENTATION\n// ============================================================\n\n/**\n * Invocation handler type for resolving capability execution\n */\nexport type InvocationHandler = <TInput, TOutput>(\n capabilityId: CapabilityId,\n input: TInput\n) => Promise<ExecutionResult<TOutput>>\n\n/**\n * Runtime execution context options\n */\nexport interface RuntimeExecutionContextOptions {\n traceId: string\n spanId: string\n parentSpanId?: string\n fabricId: FabricId\n manifestationId?: ManifestationId\n timeout?: number\n data?: Record<string, unknown>\n logger?: ExecutionLogger\n invoker: InvocationHandler\n}\n\n/**\n * Runtime execution context implementation\n */\nexport class RuntimeExecutionContext implements ExecutionContext {\n readonly traceId: string\n readonly spanId: string\n readonly parentSpanId?: string\n readonly fabricId: FabricId\n readonly manifestationId?: ManifestationId\n readonly startedAt: Timestamp\n readonly timeout?: number\n readonly data: Record<string, unknown>\n readonly logger: ExecutionLogger\n\n private readonly invoker: InvocationHandler\n\n constructor(options: RuntimeExecutionContextOptions) {\n this.traceId = options.traceId\n this.spanId = options.spanId\n if (options.parentSpanId !== undefined) {\n this.parentSpanId = options.parentSpanId\n }\n this.fabricId = options.fabricId\n if (options.manifestationId !== undefined) {\n this.manifestationId = options.manifestationId\n }\n this.startedAt = Date.now()\n if (options.timeout !== undefined) {\n this.timeout = options.timeout\n }\n this.data = options.data ?? {}\n this.logger = options.logger ?? new ConsoleExecutionLogger(this.traceId, this.spanId)\n this.invoker = options.invoker\n }\n\n invoke<TInput, TOutput>(\n capabilityId: CapabilityId,\n input: TInput\n ): Promise<ExecutionResult<TOutput>> {\n return this.invoker(capabilityId, input)\n }\n\n child(spanId: string): ExecutionContext {\n const childOptions: RuntimeExecutionContextOptions = {\n traceId: this.traceId,\n spanId,\n parentSpanId: this.spanId,\n fabricId: this.fabricId,\n invoker: this.invoker,\n data: { ...this.data },\n logger: new ConsoleExecutionLogger(this.traceId, spanId),\n }\n if (this.manifestationId !== undefined) {\n childOptions.manifestationId = this.manifestationId\n }\n if (this.timeout !== undefined) {\n childOptions.timeout = this.timeout\n }\n return new RuntimeExecutionContext(childOptions)\n }\n}\n\n// ============================================================\n// CONTEXT FACTORY\n// ============================================================\n\n/**\n * Generate a unique trace ID\n */\nexport function generateTraceId(): string {\n return `trace_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`\n}\n\n/**\n * Generate a unique span ID\n */\nexport function generateSpanId(): string {\n return `span_${Math.random().toString(36).substr(2, 9)}`\n}\n\n/**\n * Options for creating an execution context\n */\nexport interface CreateExecutionContextOptions {\n fabricId: FabricId\n manifestationId?: ManifestationId\n timeout?: number\n data?: Record<string, unknown>\n silent?: boolean\n invoker: InvocationHandler\n}\n\n/**\n * Create a new execution context\n */\nexport function createExecutionContext(\n options: CreateExecutionContextOptions\n): RuntimeExecutionContext {\n const traceId = generateTraceId()\n const spanId = generateSpanId()\n\n const contextOptions: RuntimeExecutionContextOptions = {\n traceId,\n spanId,\n fabricId: options.fabricId,\n invoker: options.invoker,\n logger: options.silent\n ? new NoOpExecutionLogger()\n : new ConsoleExecutionLogger(traceId, spanId),\n }\n\n if (options.manifestationId) {\n contextOptions.manifestationId = options.manifestationId\n }\n if (options.timeout) {\n contextOptions.timeout = options.timeout\n }\n if (options.data) {\n contextOptions.data = options.data\n }\n\n return new RuntimeExecutionContext(contextOptions)\n}\n"]}
@@ -25,4 +25,3 @@ export declare function executeTask<TInput, TOutput>(task: Task<TInput, TOutput>
25
25
  * Create a task definition
26
26
  */
27
27
  export declare function defineTask<TInput, TOutput>(name: string, execute: (input: TInput, ctx: RuntimeContext) => Promise<TOutput>): Task<TInput, TOutput>;
28
- //# sourceMappingURL=executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAe,EAAE,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAuB,aAAa,EAAE,MAAM,cAAc,CAAA;AAkBjE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAA2B,EAC3B,KAAa,EACb,UAA2B,EAAE;IAE7B,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;IAEnC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAE9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;YACxB,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CACR,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,oBAAoB,OAAO,IAAI,CAAC,CAAC,EACzE,OAAO,CACR,CACF;SACF,CAAC,CAAA;QAEF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,yBAAyB,CAAC,CAAA;QAC3D,OAAO,EAAE,CAAC,MAAM,CAAC,CAAA;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACtE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;QACrE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,OAAiE;IAEjE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC"}
1
+ {"version":3,"file":"executor.js","sourceRoot":"","sources":["../src/executor.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAe,EAAE,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAuB,aAAa,EAAE,MAAM,cAAc,CAAA;AAkBjE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAA2B,EAC3B,KAAa,EACb,UAA2B,EAAE;IAE7B,MAAM,GAAG,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACpC,MAAM,EAAE,OAAO,GAAG,KAAK,EAAE,GAAG,OAAO,CAAA;IAEnC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAE9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC;YAChC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;YACxB,IAAI,OAAO,CAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAC/B,UAAU,CACR,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,oBAAoB,OAAO,IAAI,CAAC,CAAC,EACzE,OAAO,CACR,CACF;SACF,CAAC,CAAA;QAEF,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,yBAAyB,CAAC,CAAA;QAC3D,OAAO,EAAE,CAAC,MAAM,CAAC,CAAA;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;QACtE,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,SAAS,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC,CAAA;QACrE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAA;IAClB,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CACxB,IAAY,EACZ,OAAiE;IAEjE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,CAAA;AAC1B,CAAC","sourcesContent":["/**\n * Task executor for PWFabric runtime\n */\n\nimport { type Result, ok, err } from '@pwfabric/core'\nimport { type RuntimeContext, createContext } from './context.js'\n\n/**\n * Task definition\n */\nexport interface Task<TInput, TOutput> {\n name: string\n execute: (input: TInput, ctx: RuntimeContext) => Promise<TOutput>\n}\n\n/**\n * Executor options\n */\nexport interface ExecutorOptions {\n timeout?: number\n retries?: number\n}\n\n/**\n * Execute a task with the given input\n */\nexport async function executeTask<TInput, TOutput>(\n task: Task<TInput, TOutput>,\n input: TInput,\n options: ExecutorOptions = {}\n): Promise<Result<TOutput, Error>> {\n const ctx = createContext(task.name)\n const { timeout = 30000 } = options\n\n ctx.logger.info(`Starting task: ${task.name}`)\n\n try {\n const result = await Promise.race([\n task.execute(input, ctx),\n new Promise<never>((_, reject) =>\n setTimeout(\n () => reject(new Error(`Task ${task.name} timed out after ${timeout}ms`)),\n timeout\n )\n ),\n ])\n\n ctx.logger.info(`Task ${task.name} completed successfully`)\n return ok(result)\n } catch (error) {\n const err_ = error instanceof Error ? error : new Error(String(error))\n ctx.logger.error(`Task ${task.name} failed`, { error: err_.message })\n return err(err_)\n }\n}\n\n/**\n * Create a task definition\n */\nexport function defineTask<TInput, TOutput>(\n name: string,\n execute: (input: TInput, ctx: RuntimeContext) => Promise<TOutput>\n): Task<TInput, TOutput> {\n return { name, execute }\n}\n"]}
@@ -92,4 +92,3 @@ export declare function attachFormEntityBridge(bus: SurfaceEventBus, writer: For
92
92
  * from buttons has no native field; see forms/named-control-values).
93
93
  */
94
94
  completeValues?: (formId: string, values: Record<string, unknown>) => Record<string, unknown>): () => void;
95
- //# sourceMappingURL=form-entity-bridge.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-entity-bridge.js","sourceRoot":"","sources":["../../src/forms/form-entity-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form-entity-bridge.js","sourceRoot":"","sources":["../../src/forms/form-entity-bridge.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Form → Entity Declarative Bridge\n *\n * Attaches a form-to-entity bridge to the SurfaceEventBus.\n * When a specified form emits 'form:submit', writes to the data source the\n * binding names — our own store or anyone else's endpoint.\n *\n * Requires `platform/entities` capability (platform/input retired;\n * form submissions now flow exclusively through entity_records).\n *\n * @module @pwfabric/runtime/forms/form-entity-bridge\n */\n\nimport type { SurfaceEventBus } from '@pwfabric/contracts'\nimport type { EntityMutationResult, EntityOperationError } from '../entity/types.js'\n\n// Re-export Unsubscribe from contracts for convenience\nexport type { Unsubscribe } from '@pwfabric/contracts'\n\nexport interface FormEntityBridgeConfig {\n /** The form block ID to listen for. */\n formId: string\n /**\n * The DATA SOURCE this form writes to.\n *\n * It used to be `entityType` — a platform model — which is why \"why can we\n * not POST to our own endpoint?\" was a question with no answer: the form's\n * only expressible destination was our store. A source has an address, and\n * our store's address is one of them.\n *\n * The read half already worked this way; this is the write half catching up.\n */\n sourceId: string\n /** How to write. Defaults to POST — the only shape a form has ever had. */\n method?: 'POST' | 'PUT' | 'PATCH'\n /**\n * Optional mapping from form values to entity data.\n * If omitted, form values are passed as-is.\n */\n mapping?: (values: Record<string, unknown>) => Record<string, unknown>\n /** Called on successful entity creation. */\n onSuccess?: (result: EntityMutationResult & { success: true }) => void\n /** Called when entity creation fails. */\n onError?: (error: EntityOperationError) => void\n /**\n * Optional path to navigate to after success.\n * Uses window.location.assign (client-side only).\n */\n successRedirect?: string\n /**\n * Surface-state keys the bridge drives across the create lifecycle, so the\n * UI reflects the REAL API result (not an optimistic onSubmitAction):\n * `loading` true while the create is in flight, then `success` OR `error`.\n * Each is a boolean set via setState; gate blocks with if:{{state.<key>}}.\n */\n statusKeys?: {\n loading?: string\n success?: string\n error?: string\n /**\n * Where the writer's OWN WORDS go on failure — the server's status and\n * message, or the validation sentence naming the fields. Cleared (`''`)\n * when an attempt starts and on success, so a toast bound to it never\n * shows yesterday's refusal. Without it a page can only say \"it failed\"\n * and has to invent why.\n */\n message?: string\n }\n}\n\n/**\n * Where a form's submission is actually sent.\n *\n * One method, because a form has one job. The host decides what a source id\n * means — the entity facade for a platform-backed source, an HTTP call for a\n * rest one — which is what lets the same declaration serve both without the\n * bridge knowing the difference.\n */\nexport interface FormWriter {\n write(\n sourceId: string,\n values: Record<string, unknown>,\n method: 'POST' | 'PUT' | 'PATCH'\n ): Promise<EntityMutationResult>\n}\n\n/**\n * Attaches a form-to-entity bridge to the SurfaceEventBus.\n * When the specified form emits 'form:submit', writes to the source the\n * binding names.\n *\n * Requires `platform/entities` capability active (platform/input retired).\n *\n * @returns Unsubscribe function — call on surface unmount.\n */\nexport function attachFormEntityBridge(\n bus: SurfaceEventBus,\n writer: FormWriter,\n config: FormEntityBridgeConfig,\n /**\n * Completes what the form block gathered before it is mapped and written —\n * the host adds the named controls `FormData` cannot see (a control drawn\n * from buttons has no native field; see forms/named-control-values).\n */\n completeValues?: (formId: string, values: Record<string, unknown>) => Record<string, unknown>\n): () => void {\n // Drive a surface-state boolean via setState on the bus → handleEvent\n // (DataBoundInner) applies it. Lets the UI reflect the REAL create lifecycle.\n const sk = config.statusKeys\n const setState = (surfaceId: string, blockId: string | undefined, key: string, value: unknown): void => {\n bus.emit({\n type: 'capability:form-status',\n surfaceId,\n ...(blockId ? { blockId } : {}),\n payload: { action: { type: 'setState', key, value } },\n timestamp: Date.now(),\n })\n }\n\n return bus.on('form:submit', async (descriptor) => {\n // Only handle events for the configured form\n if (descriptor.blockId !== config.formId) return\n\n const gathered = (descriptor.payload?.values as Record<string, unknown>) ?? {}\n const rawValues = completeValues ? completeValues(config.formId, gathered) : gathered\n const mapped = config.mapping ? config.mapping(rawValues) : rawValues\n\n // Lifecycle start: loading on, clear any prior success/error so the UI is\n // accurate for THIS attempt.\n if (sk?.loading) setState(descriptor.surfaceId, descriptor.blockId, sk.loading, true)\n if (sk?.success) setState(descriptor.surfaceId, descriptor.blockId, sk.success, false)\n if (sk?.error) setState(descriptor.surfaceId, descriptor.blockId, sk.error, false)\n if (sk?.message) setState(descriptor.surfaceId, descriptor.blockId, sk.message, '')\n\n const result = await writer.write(config.sourceId, mapped, config.method ?? 'POST')\n\n // Loading off regardless of outcome.\n if (sk?.loading) setState(descriptor.surfaceId, descriptor.blockId, sk.loading, false)\n\n if (result.success) {\n config.onSuccess?.(result)\n // Success is bound to the API result (not optimistic).\n if (sk?.success) setState(descriptor.surfaceId, descriptor.blockId, sk.success, true)\n // Reactive read half: re-fetch data sources so an entity-backed list\n // (dataSource kind:'entity') reflects the just-created record.\n bus.emit({\n type: 'entity:created',\n surfaceId: descriptor.surfaceId,\n ...(descriptor.blockId ? { blockId: descriptor.blockId } : {}),\n // Keyed by the SOURCE, because that is what a reader re-fetches. It\n // used to be the entity type, which only a platform-backed list could\n // match.\n payload: { action: { type: 'refreshAll' }, sourceId: config.sourceId },\n timestamp: Date.now(),\n })\n if (config.successRedirect) {\n // Client-side navigation — safe to call in browser context\n if (typeof window !== 'undefined') {\n window.location.assign(config.successRedirect)\n }\n }\n } else {\n config.onError?.(result.error)\n // Failure is bound to the API result — and so are its words.\n if (sk?.error) setState(descriptor.surfaceId, descriptor.blockId, sk.error, true)\n if (sk?.message) setState(descriptor.surfaceId, descriptor.blockId, sk.message, result.error.message)\n }\n })\n}\n"]}
@@ -32,4 +32,3 @@ export declare function resolveFormWriteTarget(method: FormWriteMethod, bound: u
32
32
  * not a problem with what the visitor typed.
33
33
  */
34
34
  export declare function toFormWriteError(err: DataFetchError): EntityOperationError;
35
- //# sourceMappingURL=form-write-target.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"form-write-target.js","sourceRoot":"","sources":["../../src/forms/form-write-target.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"form-write-target.js","sourceRoot":"","sources":["../../src/forms/form-write-target.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Form write target — WHICH verb, WHICH record, and what a refusal means.\n *\n * A form binding says how it wants to write (`method: 'PATCH'`), but a PATCH\n * has to name a record and the page only knows one from what its source\n * loaded. When nothing loaded there is nothing to patch; the honest write is a\n * create. Otherwise a Profile form would send `PATCH /records/Attendee` — the\n * collection, no id — the API would answer 404 \"Route not found\", and the\n * page would report it as a field-validation problem with no field\n * highlighted.\n *\n * Two pure functions, so the rule is testable without a DOM and the same\n * answer serves the in-process facade and the HTTP path alike.\n *\n * @module @pwfabric/runtime/forms/form-write-target\n */\n\nimport type { DataFetchError } from '../data/types.js'\nimport type { EntityOperationError } from '../entity/types.js'\n\nexport type FormWriteMethod = 'POST' | 'PUT' | 'PATCH'\n\nexport interface FormWriteTarget {\n readonly method: FormWriteMethod\n /** Present only for an update — the id of the record the source has loaded. */\n readonly recordId?: string\n}\n\n/**\n * The record a source currently binds, if any.\n *\n * A list source binds an array (the platform's record reads always do — see\n * `LIST_KINDS` in DataBoundSurfaceRenderer); a single-record source may bind\n * an object. The FIRST row is the record a form on that page edits: a\n * profile page reads \"me\", a settings page reads \"the one preference row\".\n */\nfunction boundRecord(bound: unknown): Record<string, unknown> | undefined {\n const candidate = Array.isArray(bound) ? bound[0] : bound\n return candidate !== null && typeof candidate === 'object' && !Array.isArray(candidate)\n ? (candidate as Record<string, unknown>)\n : undefined\n}\n\nexport function resolveFormWriteTarget(method: FormWriteMethod, bound: unknown): FormWriteTarget {\n if (method === 'POST') return { method: 'POST' }\n const id = boundRecord(bound)?.['id']\n const recordId = typeof id === 'string' ? id : typeof id === 'number' ? String(id) : undefined\n return recordId ? { method, recordId } : { method: 'POST' }\n}\n\n/**\n * The field paths a validation refusal names.\n *\n * The API answers `VALIDATION_FAILED` with `path: message; path: message`\n * (the host's app-records API). Read the paths out so a\n * form can highlight them; keep the whole sentence so the visitor can too.\n */\nfunction fieldPathsOf(message: string): string[] {\n return message\n .split(';')\n .map((part) => part.trim())\n .filter((part) => part.includes(':'))\n .map((part) => part.slice(0, part.indexOf(':')).trim())\n .filter((path) => path.length > 0 && !/\\s/.test(path))\n}\n\nconst VALIDATION_CODES = new Set(['VALIDATION_FAILED', 'INVALID_BODY'])\n\n/**\n * Translate a data-layer refusal into what the form should say.\n *\n * \"Check the highlighted fields\" is reserved for a 400 that names fields.\n * Anything else is the server refusing, and the server's own status and\n * words are the message — a 404 on the collection path is a routing fact,\n * not a problem with what the visitor typed.\n */\nexport function toFormWriteError(err: DataFetchError): EntityOperationError {\n const { status, code, message } = err\n if (status === undefined) {\n return { type: 'connector', message: `Could not reach the server: ${message}` }\n }\n if (status === 400 && (code === undefined || VALIDATION_CODES.has(code))) {\n return {\n type: 'validation',\n message: `Check the highlighted fields — ${message}`,\n details: { status, code, fields: fieldPathsOf(message) },\n }\n }\n const type: EntityOperationError['type'] =\n status === 404 ? 'not_found' : status === 401 || status === 403 ? 'unauthorized' : 'connector'\n return {\n type,\n message: `The server could not save this record (${status}): ${message}`,\n details: { status, code },\n }\n}\n"]}
@@ -20,4 +20,3 @@ export { completeNamedControlValues } from './named-control-values.js';
20
20
  export type { FormEntityBridgeConfig, FormWriter, Unsubscribe } from './form-entity-bridge.js';
21
21
  export { resolveFormWriteTarget, toFormWriteError } from './form-write-target.js';
22
22
  export type { FormWriteMethod, FormWriteTarget } from './form-write-target.js';
23
- //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/forms/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAsBH,YAAY;AACZ,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAA;AAE5E,YAAY;AACZ,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,WAAW,GACZ,MAAM,gBAAgB,CAAA;AAEvB,YAAY;AACZ,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,gBAAgB,CAAA;AAEvB,uBAAuB;AACvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AAGtE,6EAA6E;AAC7E,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/forms/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAsBH,YAAY;AACZ,OAAO,EAAE,kBAAkB,EAAE,2BAA2B,EAAE,MAAM,YAAY,CAAA;AAE5E,YAAY;AACZ,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,eAAe,EACf,WAAW,GACZ,MAAM,gBAAgB,CAAA;AAEvB,YAAY;AACZ,OAAO,EACL,oBAAoB,EACpB,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,gBAAgB,EAChB,gBAAgB,GACjB,MAAM,gBAAgB,CAAA;AAEvB,uBAAuB;AACvB,OAAO,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAA;AAChE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAA;AAGtE,6EAA6E;AAC7E,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA","sourcesContent":["/**\n * Form Processing Module\n *\n * Form processing capability for surfaces\n *\n * Exports:\n * - Types: FormField, FormState, ValidationRule, FormResult, etc.\n * - Implementations: DefaultFormValidator, DefaultFormProcessor\n * - Factory functions: createFormValidator, createFormProcessor\n * - Utilities: isFormSuccess, isFormFailure, formatValidationErrors\n *\n * @module @pwfabric/runtime/forms\n */\n\n// Types\nexport type {\n FormFieldType,\n ValidationRuleType,\n ValidationRule,\n SelectOption,\n FormField,\n FormState,\n FormValidationResult,\n FormValidationSuccess,\n FormValidationFailure,\n FormResult,\n FormError,\n FormSubmitHandler,\n FormProcessor,\n FormValidator,\n FormProcessorConfig,\n ValidationMessages,\n} from './types.js'\n\n// Constants\nexport { INITIAL_FORM_STATE, DEFAULT_VALIDATION_MESSAGES } from './types.js'\n\n// Validator\nexport {\n DefaultFormValidator,\n createFormValidator,\n validateWithZod,\n FormSchemas,\n} from './validator.js'\n\n// Processor\nexport {\n DefaultFormProcessor,\n createFormProcessor,\n isFormSuccess,\n isFormFailure,\n formatFormErrors,\n getErrorMessages,\n} from './processor.js'\n\n// Form → Entity Bridge\nexport { attachFormEntityBridge } from './form-entity-bridge.js'\nexport { completeNamedControlValues } from './named-control-values.js'\nexport type { FormEntityBridgeConfig, FormWriter, Unsubscribe } from './form-entity-bridge.js'\n\n// Which verb / which record a form write addresses, and what a refusal means\nexport { resolveFormWriteTarget, toFormWriteError } from './form-write-target.js'\nexport type { FormWriteMethod, FormWriteTarget } from './form-write-target.js'\n"]}
@@ -25,4 +25,3 @@ import type { Block } from '@pwfabric/core';
25
25
  * FormData missed. Returns `values` itself when there is nothing to add.
26
26
  */
27
27
  export declare function completeNamedControlValues(blocks: readonly Block[], formId: string, values: Record<string, unknown>, state: Record<string, unknown>): Record<string, unknown>;
28
- //# sourceMappingURL=named-control-values.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"named-control-values.js","sourceRoot":"","sources":["../../src/forms/named-control-values.ts"],"names":[],"mappings":"AAuBA,SAAS,SAAS,CAAC,MAAoC,EAAE,EAAU;IACjE,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE;YAAE,OAAO,KAAK,CAAA;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,QAAwC,EAAE,EAAE,CAAC,CAAA;QAC3E,IAAI,KAAK;YAAE,OAAO,KAAK,CAAA;IACzB,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,OAAO,CACd,MAAoC,EACpC,KAA8B,EAC9B,IAA6B,EAC7B,IAAiB;IAEjB,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAA;QAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;QAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAA;QAClC,IACE,OAAO,IAAI,KAAK,QAAQ;YACxB,IAAI;YACJ,OAAO,QAAQ,KAAK,QAAQ;YAC5B,QAAQ;YACR,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI;YAC1B,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YACf,KAAK,CAAC,QAAQ,CAAC,KAAK,SAAS,EAC7B,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAChB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,QAAwC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IAC5E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAwB,EACxB,MAAc,EACd,MAA+B,EAC/B,KAA8B;IAE9B,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,IAAI,CAAC,IAAI;QAAE,OAAO,MAAM,CAAA;IACxB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACzC,MAAM,KAAK,GAA4B,EAAE,CAAA;IACzC,OAAO,CAAC,IAAI,CAAC,QAAwC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAC1E,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;AACzE,CAAC"}
1
+ {"version":3,"file":"named-control-values.js","sourceRoot":"","sources":["../../src/forms/named-control-values.ts"],"names":[],"mappings":"AAuBA,SAAS,SAAS,CAAC,MAAoC,EAAE,EAAU;IACjE,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,EAAE,KAAK,EAAE;YAAE,OAAO,KAAK,CAAA;QACjC,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,QAAwC,EAAE,EAAE,CAAC,CAAA;QAC3E,IAAI,KAAK;YAAE,OAAO,KAAK,CAAA;IACzB,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,OAAO,CACd,MAAoC,EACpC,KAA8B,EAC9B,IAA6B,EAC7B,IAAiB;IAEjB,KAAK,MAAM,KAAK,IAAI,MAAM,IAAI,EAAE,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,CAA4B,CAAA;QAC5D,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;QAC1B,MAAM,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,CAAA;QAClC,IACE,OAAO,IAAI,KAAK,QAAQ;YACxB,IAAI;YACJ,OAAO,QAAQ,KAAK,QAAQ;YAC5B,QAAQ;YACR,KAAK,CAAC,UAAU,CAAC,KAAK,IAAI;YAC1B,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YACf,KAAK,CAAC,QAAQ,CAAC,KAAK,SAAS,EAC7B,CAAC;YACD,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAA;YAC5B,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAChB,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,QAAwC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IAC5E,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CACxC,MAAwB,EACxB,MAAc,EACd,MAA+B,EAC/B,KAA8B;IAE9B,MAAM,IAAI,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IACtC,IAAI,CAAC,IAAI;QAAE,OAAO,MAAM,CAAA;IACxB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAA;IACzC,MAAM,KAAK,GAA4B,EAAE,CAAA;IACzC,OAAO,CAAC,IAAI,CAAC,QAAwC,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAC1E,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;AACzE,CAAC","sourcesContent":["/**\n * Named controls that FormData cannot see.\n *\n * A form block gathers its values with `new FormData(form)`, which reads\n * native fields only. A control drawn from buttons — a segmented control, a\n * custom picker — has no field, so its answer never reached the record even\n * though the control named itself and wrote its `stateKey` (an RSVP form\n * would store every reply without its yes/no answer).\n *\n * The page state already holds that answer. This completes the submitted\n * values from `state[stateKey]` for every block inside the form that declares\n * both a `name` and a `stateKey` — ONLY where FormData carried nothing under\n * that name, so a native field's own value always wins, and never for a\n * disabled control (a disabled native field is not submitted either).\n *\n * A control that is never touched has written no state; it contributes\n * nothing here. A block that wants its untouched default submitted renders a\n * hidden input (foundation's segmented-control does, from 3.1.3).\n *\n * @module @pwfabric/runtime/forms/named-control-values\n */\nimport type { Block } from '@pwfabric/core'\n\nfunction findBlock(blocks: readonly Block[] | undefined, id: string): Block | undefined {\n for (const block of blocks ?? []) {\n if (block.id === id) return block\n const inner = findBlock(block.children as readonly Block[] | undefined, id)\n if (inner) return inner\n }\n return undefined\n}\n\nfunction collect(\n blocks: readonly Block[] | undefined,\n state: Record<string, unknown>,\n into: Record<string, unknown>,\n seen: Set<string>\n): void {\n for (const block of blocks ?? []) {\n const props = (block.props ?? {}) as Record<string, unknown>\n const name = props['name']\n const stateKey = props['stateKey']\n if (\n typeof name === 'string' &&\n name &&\n typeof stateKey === 'string' &&\n stateKey &&\n props['disabled'] !== true &&\n !seen.has(name) &&\n state[stateKey] !== undefined\n ) {\n into[name] = state[stateKey]\n seen.add(name)\n }\n collect(block.children as readonly Block[] | undefined, state, into, seen)\n }\n}\n\n/**\n * The form's submitted values, completed from page state for named controls\n * FormData missed. Returns `values` itself when there is nothing to add.\n */\nexport function completeNamedControlValues(\n blocks: readonly Block[],\n formId: string,\n values: Record<string, unknown>,\n state: Record<string, unknown>\n): Record<string, unknown> {\n const form = findBlock(blocks, formId)\n if (!form) return values\n const seen = new Set(Object.keys(values))\n const added: Record<string, unknown> = {}\n collect(form.children as readonly Block[] | undefined, state, added, seen)\n return Object.keys(added).length > 0 ? { ...values, ...added } : values\n}\n"]}
@@ -53,4 +53,3 @@ export declare function formatFormErrors(errors: Record<string, string[]>): stri
53
53
  * Get all error messages as a flat array
54
54
  */
55
55
  export declare function getErrorMessages(errors: Record<string, string[]>): string[];
56
- //# sourceMappingURL=processor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"processor.js","sourceRoot":"","sources":["../../src/forms/processor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"processor.js","sourceRoot":"","sources":["../../src/forms/processor.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Form Processor\n *\n * Form processing implementation\n *\n * @module @pwfabric/runtime/forms/processor\n */\n\nimport type { ZodType } from 'zod'\nimport type {\n FormProcessor,\n FormField,\n FormSubmitHandler,\n FormResult,\n FormError,\n FormValidationResult,\n FormProcessorConfig,\n} from './types.js'\nimport { DefaultFormValidator, validateWithZod } from './validator.js'\n\n// ============================================================\n// DEFAULT FORM PROCESSOR\n// ============================================================\n\n/**\n * Default form processor implementation\n */\nexport class DefaultFormProcessor implements FormProcessor {\n private readonly validator: DefaultFormValidator\n private readonly config: Required<FormProcessorConfig>\n\n constructor(config: FormProcessorConfig = {}) {\n this.validator = new DefaultFormValidator(config.messages)\n this.config = {\n validateOnSubmit: config.validateOnSubmit ?? true,\n validateOnBlur: config.validateOnBlur ?? true,\n validateOnChange: config.validateOnChange ?? false,\n messages: config.messages ?? {},\n }\n }\n\n validate(values: Record<string, unknown>, fields: readonly FormField[]): FormValidationResult {\n return this.validator.validateAll(values, fields)\n }\n\n validateWithSchema<T>(values: Record<string, unknown>, schema: ZodType<T>): FormValidationResult {\n return validateWithZod(values, schema)\n }\n\n async process<T>(\n _formId: string,\n values: Record<string, unknown>,\n handler: FormSubmitHandler<T>\n ): Promise<FormResult<T>> {\n try {\n const result = await handler(values)\n return {\n success: true,\n data: result,\n }\n } catch (error) {\n return {\n success: false,\n error: this.createFormError(error),\n }\n }\n }\n\n /**\n * Process form with validation\n */\n async processWithValidation<T>(\n formId: string,\n values: Record<string, unknown>,\n fields: readonly FormField[],\n handler: FormSubmitHandler<T>\n ): Promise<FormResult<T>> {\n // Validate first if enabled\n if (this.config.validateOnSubmit) {\n const validationResult = this.validate(values, fields)\n\n if (!validationResult.valid) {\n return {\n success: false,\n error: {\n type: 'validation_failed',\n message: 'Form validation failed',\n validationErrors: validationResult.errors,\n },\n }\n }\n }\n\n return this.process(formId, values, handler)\n }\n\n /**\n * Process form with Zod schema validation\n */\n async processWithSchema<T, TOutput>(\n formId: string,\n values: Record<string, unknown>,\n schema: ZodType<TOutput>,\n handler: FormSubmitHandler<T>\n ): Promise<FormResult<T>> {\n // Validate with Zod schema\n const validationResult = this.validateWithSchema(values, schema)\n\n if (!validationResult.valid) {\n return {\n success: false,\n error: {\n type: 'validation_failed',\n message: 'Form validation failed',\n validationErrors: validationResult.errors,\n },\n }\n }\n\n return this.process(formId, values, handler)\n }\n\n private createFormError(error: unknown): FormError {\n if (error instanceof Error) {\n // Check for network errors\n if (\n error.name === 'NetworkError' ||\n error.message.includes('network') ||\n error.message.includes('fetch')\n ) {\n return {\n type: 'network_error',\n message: 'A network error occurred. Please try again.',\n cause: error,\n }\n }\n\n return {\n type: 'processing_failed',\n message: error.message,\n cause: error,\n }\n }\n\n return {\n type: 'unknown',\n message: 'An unexpected error occurred',\n cause: error,\n }\n }\n}\n\n/**\n * Create a form processor\n */\nexport function createFormProcessor(config?: FormProcessorConfig): FormProcessor {\n return new DefaultFormProcessor(config)\n}\n\n// ============================================================\n// HELPER FUNCTIONS\n// ============================================================\n\n/**\n * Check if a form result is successful\n */\nexport function isFormSuccess<T>(result: FormResult<T>): result is { success: true; data: T } {\n return result.success\n}\n\n/**\n * Check if a form result is a failure\n */\nexport function isFormFailure<T>(\n result: FormResult<T>\n): result is { success: false; error: FormError } {\n return !result.success\n}\n\n/**\n * Format form validation errors into a single message\n */\nexport function formatFormErrors(errors: Record<string, string[]>): string {\n const messages: string[] = []\n\n for (const [field, fieldErrors] of Object.entries(errors)) {\n for (const error of fieldErrors) {\n messages.push(`${field}: ${error}`)\n }\n }\n\n return messages.join('. ')\n}\n\n/**\n * Get all error messages as a flat array\n */\nexport function getErrorMessages(errors: Record<string, string[]>): string[] {\n const messages: string[] = []\n\n for (const fieldErrors of Object.values(errors)) {\n messages.push(...fieldErrors)\n }\n\n return messages\n}\n"]}
@@ -172,4 +172,3 @@ export interface ValidationMessages {
172
172
  * Default validation messages
173
173
  */
174
174
  export declare const DEFAULT_VALIDATION_MESSAGES: ValidationMessages;
175
- //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/forms/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwFH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,CAAC;CACf,CAAA;AAkJD;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAuB;IAC7D,QAAQ,EAAE,wBAAwB;IAClC,KAAK,EAAE,oCAAoC;IAC3C,GAAG,EAAE,0BAA0B;IAC/B,SAAS,EAAE,qCAAqC;IAChD,SAAS,EAAE,yCAAyC;IACpD,GAAG,EAAE,0BAA0B;IAC/B,GAAG,EAAE,8BAA8B;IACnC,OAAO,EAAE,gBAAgB;CAC1B,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/forms/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAwFH;;GAEG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,MAAM,EAAE,EAAE;IACV,MAAM,EAAE,EAAE;IACV,OAAO,EAAE,EAAE;IACX,OAAO,EAAE,IAAI;IACb,YAAY,EAAE,KAAK;IACnB,OAAO,EAAE,KAAK;IACd,WAAW,EAAE,CAAC;CACf,CAAA;AAkJD;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAuB;IAC7D,QAAQ,EAAE,wBAAwB;IAClC,KAAK,EAAE,oCAAoC;IAC3C,GAAG,EAAE,0BAA0B;IAC/B,SAAS,EAAE,qCAAqC;IAChD,SAAS,EAAE,yCAAyC;IACpD,GAAG,EAAE,0BAA0B;IAC/B,GAAG,EAAE,8BAA8B;IACnC,OAAO,EAAE,gBAAgB;CAC1B,CAAA","sourcesContent":["/**\n * Form Processing Types\n *\n * Form processing capability for surfaces\n *\n * @module @pwfabric/runtime/forms/types\n */\n\nimport type { ZodType } from 'zod'\n\n// ============================================================\n// FORM FIELD TYPES\n// ============================================================\n\n/**\n * Form field input type\n */\nexport type FormFieldType =\n | 'text'\n | 'email'\n | 'number'\n | 'select'\n | 'checkbox'\n | 'textarea'\n | 'password'\n | 'tel'\n | 'url'\n | 'date'\n | 'hidden'\n\n/**\n * Validation rule type\n */\nexport type ValidationRuleType =\n | 'required'\n | 'minLength'\n | 'maxLength'\n | 'min'\n | 'max'\n | 'pattern'\n | 'email'\n | 'url'\n | 'custom'\n\n/**\n * Validation rule definition\n */\nexport interface ValidationRule {\n readonly type: ValidationRuleType\n readonly value?: unknown\n readonly message: string\n}\n\n/**\n * Select option for select fields\n */\nexport interface SelectOption {\n readonly value: string | number\n readonly label: string\n readonly disabled?: boolean\n}\n\n/**\n * Form field definition\n */\nexport interface FormField {\n readonly name: string\n readonly type: FormFieldType\n readonly label?: string\n readonly placeholder?: string\n readonly required?: boolean\n readonly disabled?: boolean\n readonly defaultValue?: unknown\n readonly validation?: readonly ValidationRule[]\n readonly options?: readonly SelectOption[] // For select fields\n}\n\n// ============================================================\n// FORM STATE\n// ============================================================\n\n/**\n * Form state tracking\n */\nexport interface FormState {\n readonly values: Record<string, unknown>\n readonly errors: Record<string, string[]>\n readonly touched: Record<string, boolean>\n readonly isValid: boolean\n readonly isSubmitting: boolean\n readonly isDirty: boolean\n readonly submitCount: number\n}\n\n/**\n * Initial form state\n */\nexport const INITIAL_FORM_STATE: FormState = {\n values: {},\n errors: {},\n touched: {},\n isValid: true,\n isSubmitting: false,\n isDirty: false,\n submitCount: 0,\n}\n\n// ============================================================\n// FORM VALIDATION RESULT\n// ============================================================\n\n/**\n * Result of validating form values\n */\nexport interface FormValidationResult {\n readonly valid: boolean\n readonly errors: Record<string, string[]>\n}\n\n/**\n * Successful validation result\n */\nexport interface FormValidationSuccess extends FormValidationResult {\n readonly valid: true\n readonly errors: Record<string, never>\n}\n\n/**\n * Failed validation result\n */\nexport interface FormValidationFailure extends FormValidationResult {\n readonly valid: false\n readonly errors: Record<string, string[]>\n}\n\n// ============================================================\n// FORM RESULT\n// ============================================================\n\n/**\n * Result of form processing\n */\nexport type FormResult<T = unknown> =\n | { readonly success: true; readonly data: T }\n | { readonly success: false; readonly error: FormError }\n\n/**\n * Form processing error\n */\nexport interface FormError {\n readonly type: 'validation_failed' | 'processing_failed' | 'network_error' | 'unknown'\n readonly message: string\n readonly validationErrors?: Record<string, string[]>\n readonly cause?: unknown\n}\n\n// ============================================================\n// FORM PROCESSOR\n// ============================================================\n\n/**\n * Form submission handler function\n */\nexport type FormSubmitHandler<T = unknown> = (values: Record<string, unknown>) => Promise<T> | T\n\n/**\n * Form processor interface\n */\nexport interface FormProcessor {\n /**\n * Validate form values against field definitions\n */\n validate(values: Record<string, unknown>, fields: readonly FormField[]): FormValidationResult\n\n /**\n * Validate form values using a Zod schema\n */\n validateWithSchema<T>(values: Record<string, unknown>, schema: ZodType<T>): FormValidationResult\n\n /**\n * Process a form submission\n */\n process<T>(\n formId: string,\n values: Record<string, unknown>,\n handler: FormSubmitHandler<T>\n ): Promise<FormResult<T>>\n}\n\n// ============================================================\n// FORM VALIDATOR\n// ============================================================\n\n/**\n * Form validator interface\n */\nexport interface FormValidator {\n /**\n * Validate a single field value\n */\n validateField(value: unknown, field: FormField): string[]\n\n /**\n * Validate all fields\n */\n validateAll(values: Record<string, unknown>, fields: readonly FormField[]): FormValidationResult\n}\n\n// ============================================================\n// FORM CONFIGURATION\n// ============================================================\n\n/**\n * Form processor configuration\n */\nexport interface FormProcessorConfig {\n /**\n * Whether to validate on submit\n */\n readonly validateOnSubmit?: boolean\n\n /**\n * Whether to validate individual fields on blur\n */\n readonly validateOnBlur?: boolean\n\n /**\n * Whether to validate individual fields on change\n */\n readonly validateOnChange?: boolean\n\n /**\n * Custom error messages\n */\n readonly messages?: Partial<ValidationMessages>\n}\n\n/**\n * Default validation error messages\n */\nexport interface ValidationMessages {\n readonly required: string\n readonly email: string\n readonly url: string\n readonly minLength: string\n readonly maxLength: string\n readonly min: string\n readonly max: string\n readonly pattern: string\n}\n\n/**\n * Default validation messages\n */\nexport const DEFAULT_VALIDATION_MESSAGES: ValidationMessages = {\n required: 'This field is required',\n email: 'Please enter a valid email address',\n url: 'Please enter a valid URL',\n minLength: 'Must be at least {value} characters',\n maxLength: 'Must be no more than {value} characters',\n min: 'Must be at least {value}',\n max: 'Must be no more than {value}',\n pattern: 'Invalid format',\n}\n"]}
@@ -59,4 +59,3 @@ export declare const FormSchemas: {
59
59
  * Create a form validator
60
60
  */
61
61
  export declare function createFormValidator(customMessages?: Partial<ValidationMessages>): FormValidator;
62
- //# sourceMappingURL=validator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/forms/validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/forms/validator.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Form Validator\n *\n * Form validation implementation\n *\n * @module @pwfabric/runtime/forms/validator\n */\n\nimport { z, type ZodType, type ZodError } from 'zod'\nimport type {\n FormValidator,\n FormField,\n ValidationRule,\n FormValidationResult,\n ValidationMessages,\n} from './types.js'\nimport { DEFAULT_VALIDATION_MESSAGES } from './types.js'\n\n// ============================================================\n// DEFAULT FORM VALIDATOR\n// ============================================================\n\n/**\n * Default form validator implementation\n */\nexport class DefaultFormValidator implements FormValidator {\n private readonly messages: ValidationMessages\n\n constructor(customMessages: Partial<ValidationMessages> = {}) {\n this.messages = { ...DEFAULT_VALIDATION_MESSAGES, ...customMessages }\n }\n\n validateField(value: unknown, field: FormField): string[] {\n const errors: string[] = []\n\n // Check required\n if (field.required && this.isEmpty(value)) {\n errors.push(this.messages.required)\n return errors // Return early if required and empty\n }\n\n // Skip other validations if value is empty and not required\n if (this.isEmpty(value) && !field.required) {\n return errors\n }\n\n // Run custom validation rules\n if (field.validation) {\n for (const rule of field.validation) {\n const error = this.validateRule(value, rule)\n if (error) {\n errors.push(error)\n }\n }\n }\n\n return errors\n }\n\n validateAll(values: Record<string, unknown>, fields: readonly FormField[]): FormValidationResult {\n const errors: Record<string, string[]> = {}\n let hasErrors = false\n\n for (const field of fields) {\n const value = values[field.name]\n const fieldErrors = this.validateField(value, field)\n\n if (fieldErrors.length > 0) {\n errors[field.name] = fieldErrors\n hasErrors = true\n }\n }\n\n return {\n valid: !hasErrors,\n errors,\n }\n }\n\n private validateRule(value: unknown, rule: ValidationRule): string | null {\n switch (rule.type) {\n case 'required':\n return this.isEmpty(value) ? rule.message : null\n\n case 'email':\n return this.validateEmail(value, rule.message)\n\n case 'url':\n return this.validateUrl(value, rule.message)\n\n case 'minLength':\n return this.validateMinLength(value, rule.value as number, rule.message)\n\n case 'maxLength':\n return this.validateMaxLength(value, rule.value as number, rule.message)\n\n case 'min':\n return this.validateMin(value, rule.value as number, rule.message)\n\n case 'max':\n return this.validateMax(value, rule.value as number, rule.message)\n\n case 'pattern':\n return this.validatePattern(value, rule.value as string | RegExp, rule.message)\n\n case 'custom':\n // Custom validation function is expected to be in rule.value\n if (typeof rule.value === 'function') {\n const isValid = (rule.value as (v: unknown) => boolean)(value)\n return isValid ? null : rule.message\n }\n return null\n\n default:\n return null\n }\n }\n\n private isEmpty(value: unknown): boolean {\n if (value === null || value === undefined) return true\n if (typeof value === 'string') return value.trim() === ''\n if (Array.isArray(value)) return value.length === 0\n return false\n }\n\n private validateEmail(value: unknown, message: string): string | null {\n if (typeof value !== 'string') return message\n\n // Basic email regex - covers most common cases\n const emailRegex = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n return emailRegex.test(value) ? null : message\n }\n\n private validateUrl(value: unknown, message: string): string | null {\n if (typeof value !== 'string') return message\n\n try {\n new URL(value)\n return null\n } catch {\n return message\n }\n }\n\n private validateMinLength(value: unknown, minLength: number, message: string): string | null {\n if (typeof value !== 'string') return message\n return value.length >= minLength ? null : this.formatMessage(message, minLength)\n }\n\n private validateMaxLength(value: unknown, maxLength: number, message: string): string | null {\n if (typeof value !== 'string') return message\n return value.length <= maxLength ? null : this.formatMessage(message, maxLength)\n }\n\n private validateMin(value: unknown, min: number, message: string): string | null {\n const num = Number(value)\n if (Number.isNaN(num)) return message\n return num >= min ? null : this.formatMessage(message, min)\n }\n\n private validateMax(value: unknown, max: number, message: string): string | null {\n const num = Number(value)\n if (Number.isNaN(num)) return message\n return num <= max ? null : this.formatMessage(message, max)\n }\n\n private validatePattern(\n value: unknown,\n pattern: string | RegExp,\n message: string\n ): string | null {\n if (typeof value !== 'string') return message\n\n const regex = typeof pattern === 'string' ? new RegExp(pattern) : pattern\n return regex.test(value) ? null : message\n }\n\n private formatMessage(message: string, value: unknown): string {\n return message.replace('{value}', String(value))\n }\n}\n\n// ============================================================\n// ZOD SCHEMA VALIDATOR\n// ============================================================\n\n/**\n * Validate values using a Zod schema\n */\nexport function validateWithZod<T>(\n values: Record<string, unknown>,\n schema: ZodType<T>\n): FormValidationResult {\n const result = schema.safeParse(values)\n\n if (result.success) {\n return {\n valid: true,\n errors: {},\n }\n }\n\n return {\n valid: false,\n errors: formatZodErrors(result.error),\n }\n}\n\n/**\n * Convert Zod errors to FormValidationResult format\n */\nfunction formatZodErrors(error: ZodError): Record<string, string[]> {\n const errors: Record<string, string[]> = {}\n\n for (const issue of error.issues) {\n const path = issue.path.join('.')\n if (!errors[path]) {\n errors[path] = []\n }\n errors[path].push(issue.message)\n }\n\n return errors\n}\n\n// ============================================================\n// BUILT-IN ZOD SCHEMAS\n// ============================================================\n\n/**\n * Common Zod schemas for form validation\n */\nexport const FormSchemas = {\n /**\n * Email validation schema\n */\n email: z.string().email('Please enter a valid email address'),\n\n /**\n * Required string schema\n */\n requiredString: z.string().min(1, 'This field is required'),\n\n /**\n * URL validation schema\n */\n url: z.string().url('Please enter a valid URL'),\n\n /**\n * Phone number schema (basic)\n */\n phone: z.string().regex(/^\\+?[\\d\\s-()]+$/, 'Please enter a valid phone number'),\n\n /**\n * Password schema (min 8 chars, at least one number and letter)\n */\n password: z\n .string()\n .min(8, 'Password must be at least 8 characters')\n .regex(/[a-zA-Z]/, 'Password must contain at least one letter')\n .regex(/[0-9]/, 'Password must contain at least one number'),\n}\n\n/**\n * Create a form validator\n */\nexport function createFormValidator(customMessages?: Partial<ValidationMessages>): FormValidator {\n return new DefaultFormValidator(customMessages)\n}\n"]}
@@ -8,4 +8,3 @@
8
8
  export type { GraphResource, GraphQuery, GraphBatchRequest, GraphResponse, GraphCollectionResponse, GraphBatchResponse, GraphBatchResponseItem, GraphResult, GraphError, GraphUser, GraphGroup, GraphDriveItem, } from './types.js';
9
9
  export type { GraphResolver, GraphResolverConfig } from './resolver.js';
10
10
  export { RuntimeGraphResolver, createGraphResolver } from './resolver.js';
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/graph/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAoBH,OAAO,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA","sourcesContent":["/**\n * Graph Module\n *\n * Microsoft Graph data resolution\n *\n * @module @pwfabric/runtime/graph\n */\n\n// Types\nexport type {\n GraphResource,\n GraphQuery,\n GraphBatchRequest,\n GraphResponse,\n GraphCollectionResponse,\n GraphBatchResponse,\n GraphBatchResponseItem,\n GraphResult,\n GraphError,\n GraphUser,\n GraphGroup,\n GraphDriveItem,\n} from './types.js'\n\n// Resolver\nexport type { GraphResolver, GraphResolverConfig } from './resolver.js'\nexport { RuntimeGraphResolver, createGraphResolver } from './resolver.js'\n"]}
@@ -64,4 +64,3 @@ export declare class RuntimeGraphResolver implements GraphResolver {
64
64
  * Create a Graph resolver
65
65
  */
66
66
  export declare function createGraphResolver(authProvider: AuthProvider, config?: GraphResolverConfig): GraphResolver;
67
- //# sourceMappingURL=resolver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/graph/resolver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../src/graph/resolver.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Graph Resolver\n *\n * Microsoft Graph data resolver\n *\n * @module @pwfabric/runtime/graph/resolver\n */\n\nimport type { AuthProvider } from '../auth/provider.js'\nimport type {\n GraphQuery,\n GraphResult,\n GraphError,\n GraphResponse,\n GraphCollectionResponse,\n GraphBatchRequest,\n GraphBatchResponse,\n} from './types.js'\n\n// ============================================================\n// GRAPH RESOLVER\n// ============================================================\n\n/**\n * Graph resolver interface\n */\nexport interface GraphResolver {\n /**\n * Execute a Graph query\n */\n query<T>(query: GraphQuery): Promise<GraphResult<T>>\n\n /**\n * Get a single resource\n */\n get<T>(path: string): Promise<GraphResult<T>>\n\n /**\n * Get a collection\n */\n list<T>(path: string, query?: Partial<GraphQuery>): Promise<GraphResult<T[]>>\n\n /**\n * Execute batch requests\n */\n batch(requests: readonly GraphBatchRequest[]): Promise<GraphResult<GraphBatchResponse>>\n\n /**\n * Get current user\n */\n me<T>(): Promise<GraphResult<T>>\n}\n\n/**\n * Graph resolver configuration\n */\nexport interface GraphResolverConfig {\n readonly baseUrl?: string\n readonly version?: string\n readonly timeout?: number\n}\n\n// ============================================================\n// RUNTIME GRAPH RESOLVER\n// ============================================================\n\n/**\n * Runtime Graph resolver implementation\n */\nexport class RuntimeGraphResolver implements GraphResolver {\n private readonly authProvider: AuthProvider\n private readonly config: Required<GraphResolverConfig>\n\n constructor(authProvider: AuthProvider, config: GraphResolverConfig = {}) {\n this.authProvider = authProvider\n this.config = {\n baseUrl: config.baseUrl ?? 'https://graph.microsoft.com',\n version: config.version ?? 'v1.0',\n timeout: config.timeout ?? 30000,\n }\n }\n\n async query<T>(query: GraphQuery): Promise<GraphResult<T>> {\n const url = this.buildUrl(query)\n return this.get<T>(url)\n }\n\n async get<T>(path: string): Promise<GraphResult<T>> {\n const tokenResult = await this.authProvider.acquireTokenSilent()\n if (!tokenResult.success) {\n return {\n success: false,\n error: {\n type: 'auth_error',\n message: tokenResult.error.message,\n },\n }\n }\n\n try {\n const fullUrl = path.startsWith('http')\n ? path\n : `${this.config.baseUrl}/${this.config.version}/${path}`\n\n const response = await this.fetch(fullUrl, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${tokenResult.token.accessToken}`,\n 'Content-Type': 'application/json',\n },\n })\n\n if (!response.ok) {\n return this.handleError(response)\n }\n\n const data = (await response.json()) as GraphResponse<T>\n const result: GraphResult<T> = {\n success: true,\n data: (data.value ?? data) as T,\n }\n if (data['@odata.nextLink'] !== undefined) {\n return { ...result, nextLink: data['@odata.nextLink'] }\n }\n return result\n } catch (e) {\n return {\n success: false,\n error: {\n type: 'network_error',\n message: `Request failed: ${e}`,\n cause: e,\n },\n }\n }\n }\n\n async list<T>(path: string, query?: Partial<GraphQuery>): Promise<GraphResult<T[]>> {\n const url = query ? this.buildUrlWithParams(path, query) : path\n\n const tokenResult = await this.authProvider.acquireTokenSilent()\n if (!tokenResult.success) {\n return {\n success: false,\n error: {\n type: 'auth_error',\n message: tokenResult.error.message,\n },\n }\n }\n\n try {\n const fullUrl = url.startsWith('http')\n ? url\n : `${this.config.baseUrl}/${this.config.version}/${url}`\n\n const response = await this.fetch(fullUrl, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${tokenResult.token.accessToken}`,\n 'Content-Type': 'application/json',\n },\n })\n\n if (!response.ok) {\n return this.handleError(response)\n }\n\n const data = (await response.json()) as GraphCollectionResponse<T>\n const result: GraphResult<T[]> = {\n success: true,\n data: data.value ?? [],\n }\n if (data['@odata.nextLink'] !== undefined) {\n return { ...result, nextLink: data['@odata.nextLink'] }\n }\n return result\n } catch (e) {\n return {\n success: false,\n error: {\n type: 'network_error',\n message: `Request failed: ${e}`,\n cause: e,\n },\n }\n }\n }\n\n async batch(requests: readonly GraphBatchRequest[]): Promise<GraphResult<GraphBatchResponse>> {\n const tokenResult = await this.authProvider.acquireTokenSilent()\n if (!tokenResult.success) {\n return {\n success: false,\n error: {\n type: 'auth_error',\n message: tokenResult.error.message,\n },\n }\n }\n\n try {\n const response = await this.fetch(`${this.config.baseUrl}/${this.config.version}/$batch`, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${tokenResult.token.accessToken}`,\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({ requests }),\n })\n\n if (!response.ok) {\n return this.handleError(response)\n }\n\n const data = (await response.json()) as GraphBatchResponse\n return { success: true, data }\n } catch (e) {\n return {\n success: false,\n error: {\n type: 'network_error',\n message: `Batch request failed: ${e}`,\n cause: e,\n },\n }\n }\n }\n\n async me<T>(): Promise<GraphResult<T>> {\n return this.get<T>('me')\n }\n\n private buildUrl(query: GraphQuery): string {\n let url = query.resource\n if (query.id) {\n url += `/${query.id}`\n }\n return this.buildUrlWithParams(url, query)\n }\n\n private buildUrlWithParams(baseUrl: string, query: Partial<GraphQuery>): string {\n const params = new URLSearchParams()\n\n if (query.select?.length) {\n params.set('$select', query.select.join(','))\n }\n if (query.expand?.length) {\n params.set('$expand', query.expand.join(','))\n }\n if (query.filter) {\n params.set('$filter', query.filter)\n }\n if (query.orderBy) {\n params.set('$orderby', query.orderBy)\n }\n if (query.top !== undefined) {\n params.set('$top', String(query.top))\n }\n if (query.skip !== undefined) {\n params.set('$skip', String(query.skip))\n }\n\n const queryString = params.toString()\n return queryString ? `${baseUrl}?${queryString}` : baseUrl\n }\n\n private async handleError<T>(response: Response): Promise<GraphResult<T>> {\n let errorType: GraphError['type'] = 'server_error'\n\n switch (response.status) {\n case 401:\n errorType = 'auth_error'\n break\n case 403:\n errorType = 'forbidden'\n break\n case 404:\n errorType = 'not_found'\n break\n case 429:\n errorType = 'rate_limited'\n break\n }\n\n let message = `HTTP ${response.status}`\n try {\n const error = (await response.json()) as { error?: { message?: string; code?: string } }\n if (error?.error?.message) {\n message = error.error.message\n }\n } catch {\n // Ignore JSON parse errors\n }\n\n return {\n success: false,\n error: {\n type: errorType,\n message,\n statusCode: response.status,\n },\n }\n }\n\n /**\n * Fetch wrapper for testability\n */\n protected fetch(url: string, init: RequestInit): Promise<Response> {\n return fetch(url, {\n ...init,\n signal: AbortSignal.timeout(this.config.timeout),\n })\n }\n}\n\n/**\n * Create a Graph resolver\n */\nexport function createGraphResolver(\n authProvider: AuthProvider,\n config?: GraphResolverConfig\n): GraphResolver {\n return new RuntimeGraphResolver(authProvider, config)\n}\n"]}
@@ -123,4 +123,3 @@ export interface GraphDriveItem {
123
123
  mimeType: string;
124
124
  };
125
125
  }
126
- //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/graph/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/graph/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG","sourcesContent":["/**\n * Graph Resolver Types\n *\n * Types for Microsoft Graph data resolution\n *\n * @module @pwfabric/runtime/graph/types\n */\n\n// ============================================================\n// GRAPH QUERY TYPES\n// ============================================================\n\n/**\n * Graph resource type\n */\nexport type GraphResource =\n | 'me'\n | 'users'\n | 'groups'\n | 'sites'\n | 'drives'\n | 'teams'\n | 'channels'\n | 'messages'\n | 'events'\n | 'contacts'\n\n/**\n * Graph query definition\n */\nexport interface GraphQuery {\n readonly resource: GraphResource | string\n readonly id?: string\n readonly select?: readonly string[]\n readonly expand?: readonly string[]\n readonly filter?: string\n readonly orderBy?: string\n readonly top?: number\n readonly skip?: number\n}\n\n/**\n * Graph batch request\n */\nexport interface GraphBatchRequest {\n readonly id: string\n readonly method: 'GET' | 'POST' | 'PATCH' | 'DELETE'\n readonly url: string\n readonly body?: unknown\n readonly headers?: Record<string, string>\n readonly dependsOn?: readonly string[]\n}\n\n// ============================================================\n// GRAPH RESPONSE TYPES\n// ============================================================\n\n/**\n * Graph response\n */\nexport interface GraphResponse<T = unknown> {\n readonly value?: T\n readonly '@odata.context'?: string\n readonly '@odata.count'?: number\n readonly '@odata.nextLink'?: string\n}\n\n/**\n * Graph collection response\n */\nexport interface GraphCollectionResponse<T> extends GraphResponse<T[]> {\n readonly value: T[]\n}\n\n/**\n * Graph batch response\n */\nexport interface GraphBatchResponse {\n readonly responses: readonly GraphBatchResponseItem[]\n}\n\n/**\n * Graph batch response item\n */\nexport interface GraphBatchResponseItem {\n readonly id: string\n readonly status: number\n readonly headers?: Record<string, string>\n readonly body?: unknown\n}\n\n// ============================================================\n// GRAPH RESULT TYPES\n// ============================================================\n\n/**\n * Graph query result\n */\nexport type GraphResult<T> =\n | { readonly success: true; readonly data: T; readonly nextLink?: string }\n | { readonly success: false; readonly error: GraphError }\n\n/**\n * Graph error\n */\nexport interface GraphError {\n readonly type:\n | 'network_error'\n | 'auth_error'\n | 'not_found'\n | 'forbidden'\n | 'rate_limited'\n | 'server_error'\n readonly message: string\n readonly code?: string\n readonly statusCode?: number\n readonly cause?: unknown\n}\n\n// ============================================================\n// COMMON GRAPH ENTITIES\n// ============================================================\n\n/**\n * Graph user\n */\nexport interface GraphUser {\n readonly id: string\n readonly displayName?: string\n readonly mail?: string\n readonly userPrincipalName?: string\n readonly jobTitle?: string\n readonly department?: string\n readonly officeLocation?: string\n}\n\n/**\n * Graph group\n */\nexport interface GraphGroup {\n readonly id: string\n readonly displayName?: string\n readonly description?: string\n readonly mail?: string\n readonly groupTypes?: readonly string[]\n}\n\n/**\n * Graph drive item\n */\nexport interface GraphDriveItem {\n readonly id: string\n readonly name: string\n readonly webUrl?: string\n readonly size?: number\n readonly createdDateTime?: string\n readonly lastModifiedDateTime?: string\n readonly folder?: { childCount: number }\n readonly file?: { mimeType: string }\n}\n"]}
@@ -94,4 +94,3 @@ export declare const INITIAL_INSTALLED_ATOMS_STATE: InstalledAtomsState;
94
94
  * to a static registry (e.g. `defaultBlockComponents`) while loading.
95
95
  */
96
96
  export declare function useInstalledAtoms(worldId: string, kind: InstalledAtomKind, fetcher?: InstalledAtomsFetcher): InstalledAtomsState;
97
- //# sourceMappingURL=useInstalledAtoms.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useInstalledAtoms.js","sourceRoot":"","sources":["../../src/hooks/useInstalledAtoms.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useInstalledAtoms.js","sourceRoot":"","sources":["../../src/hooks/useInstalledAtoms.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * useInstalledAtoms — runtime hook for tenant-scoped pack atom registry\n *\n * Reads the host's installed-atoms endpoint, `GET /api/pwpacks/runtime/atoms?kind=...`,\n * and returns a `Map<atomId, InstalledAtomDescriptor>` plus loading/error\n * state. The dynamic-artifact provider plugs this into the existing\n * `BlockModuleLoader.import(bundleUrl)` flow.\n *\n * Surface atoms are NOT served by this hook — surfaces use the receipt\n * fork model. Only `block` + `capability` kinds.\n *\n * @module @pwfabric/runtime/hooks/useInstalledAtoms\n */\n\nimport { useEffect, useState } from 'react'\n\n// ============================================================\n// PUBLIC TYPES\n// ============================================================\n\nexport type InstalledAtomKind = 'block' | 'capability'\n\n/**\n * AI-readable knowledge for an atom, mirrored from the canonical\n * `AtomManifestKnowledge` contract. Re-declared here so\n * runtime consumers don't have to import the schema package just to read\n * the descriptor; the shape is stable.\n */\nexport interface InstalledAtomKnowledge {\n readonly purpose: string\n readonly useCases: readonly string[]\n readonly composesWith: readonly string[]\n readonly antiPatterns: readonly string[]\n}\n\nexport interface InstalledAtomDescriptor {\n readonly atomId: string\n readonly kind: InstalledAtomKind\n readonly bundleUrl: string | null\n readonly bundleHash: string | null\n readonly contentHash: string | null\n readonly sourceListingId: string | null\n readonly installedAt: string\n /**\n * The installed atom's manifest payload. Includes the 4-field `knowledge`\n * block plus catalogue metadata (category, name, description, tags). May be\n * `null` for installs whose pack carried no manifest.json.\n */\n readonly manifest: AtomManifestPayload | null\n}\n\nexport interface AtomBlockDefinitionMetadata {\n readonly props: readonly Record<string, unknown>[]\n readonly defaultProps: Readonly<Record<string, unknown>>\n readonly canHaveChildren: boolean\n readonly allowedParents?: readonly string[]\n readonly allowedChildren?: readonly string[]\n}\n\nexport interface AtomManifestPayload {\n readonly id?: string\n readonly kind?: InstalledAtomKind\n readonly version?: string\n readonly name?: string\n readonly state?: string\n readonly category?: string\n readonly description?: string\n readonly tags?: readonly string[]\n readonly knowledge?: InstalledAtomKnowledge\n /**\n * per-block authoring metadata mirrored from the\n * pwpack manifest. Present on block atoms whose manifest carries a\n * `definition` block; absent for capabilities and legacy installs.\n */\n readonly definition?: AtomBlockDefinitionMetadata\n}\n\nexport interface InstalledAtomsState {\n readonly atoms: ReadonlyMap<string, InstalledAtomDescriptor>\n readonly loading: boolean\n readonly error: Error | null\n}\n\n/**\n * Optional fetcher override. Defaults to `window.fetch` against\n * `/api/pwpacks/runtime/atoms`. Tests inject a stub; SSR may inject a\n * server-side direct DB resolver.\n */\nexport type InstalledAtomsFetcher = (\n worldId: string,\n kind: InstalledAtomKind\n) => Promise<readonly InstalledAtomDescriptor[]>\n\n// ============================================================\n// DEFAULT FETCHER\n// ============================================================\n\ninterface ApiResponse {\n readonly data: readonly InstalledAtomDescriptor[]\n readonly meta: { readonly total: number; readonly kind: string; readonly worldId: string }\n}\n\nasync function defaultFetcher(\n _tenantId: string,\n kind: InstalledAtomKind\n): Promise<readonly InstalledAtomDescriptor[]> {\n const res = await fetch(`/api/pwpacks/runtime/atoms?kind=${encodeURIComponent(kind)}`, {\n credentials: 'include',\n })\n if (!res.ok) {\n throw new Error(`useInstalledAtoms: fetch failed (${res.status})`)\n }\n const body = (await res.json()) as ApiResponse\n return body.data\n}\n\n// ============================================================\n// PURE STATE REDUCER (testable without React)\n// ============================================================\n\n/**\n * Build the InstalledAtomsState from a fetcher result. Exported so unit\n * tests can validate the pure reducer logic without mounting React.\n */\nexport function reduceFetchedAtoms(\n descriptors: readonly InstalledAtomDescriptor[]\n): InstalledAtomsState {\n const map = new Map<string, InstalledAtomDescriptor>()\n for (const d of descriptors) {\n map.set(d.atomId, d)\n }\n return { atoms: map, loading: false, error: null }\n}\n\n/**\n * Build the InstalledAtomsState for a fetch failure.\n */\nexport function reduceFetchError(error: Error): InstalledAtomsState {\n return { atoms: new Map(), loading: false, error }\n}\n\n/**\n * The initial loading state — atoms empty, loading true, no error.\n */\nexport const INITIAL_INSTALLED_ATOMS_STATE: InstalledAtomsState = Object.freeze({\n atoms: new Map(),\n loading: true,\n error: null,\n})\n\n// ============================================================\n// HOOK\n// ============================================================\n\n/**\n * Resolve the active workspace atoms for a tenant by kind. Returns a\n * `Map<atomId, InstalledAtomDescriptor>` plus loading + error state. The\n * map is empty until the first fetch settles; consumers should fall back\n * to a static registry (e.g. `defaultBlockComponents`) while loading.\n */\nexport function useInstalledAtoms(\n worldId: string,\n kind: InstalledAtomKind,\n fetcher: InstalledAtomsFetcher = defaultFetcher\n): InstalledAtomsState {\n const [state, setState] = useState<InstalledAtomsState>({\n atoms: new Map(),\n loading: true,\n error: null,\n })\n\n useEffect(() => {\n let cancelled = false\n setState((prev) => ({ ...prev, loading: true, error: null }))\n\n fetcher(worldId, kind)\n .then((descriptors) => {\n if (cancelled) return\n const map = new Map<string, InstalledAtomDescriptor>()\n for (const d of descriptors) {\n map.set(d.atomId, d)\n }\n setState({ atoms: map, loading: false, error: null })\n })\n .catch((err: Error) => {\n if (cancelled) return\n setState({ atoms: new Map(), loading: false, error: err })\n })\n\n return () => {\n cancelled = true\n }\n }, [worldId, kind, fetcher])\n\n return state\n}\n"]}
@@ -13,4 +13,3 @@
13
13
  export type { LocaleId, LocaleDefinition, TranslationCatalog, PluralCategory, PluralRuleFunction, NumberFormatOptions, DateFormatOptions, I18nCapability, } from './types.js';
14
14
  export type { I18nOptions, MissingKeyHandler } from './translator.js';
15
15
  export { DefaultI18nCapability, createI18nCapability } from './translator.js';
16
- //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAgBH,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/i18n/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAgBH,OAAO,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAA","sourcesContent":["/**\n * i18n Capability Module\n *\n * Locale resolution, translation, pluralization, and formatting\n *\n * Exports:\n * - Types: LocaleId, LocaleDefinition, TranslationCatalog, I18nCapability, etc.\n * - Implementations: DefaultI18nCapability\n * - Factory functions: createI18nCapability\n *\n * @module @pwfabric/runtime/i18n\n */\n\n// Types\nexport type {\n LocaleId,\n LocaleDefinition,\n TranslationCatalog,\n PluralCategory,\n PluralRuleFunction,\n NumberFormatOptions,\n DateFormatOptions,\n I18nCapability,\n} from './types.js'\n\n// Implementations\nexport type { I18nOptions, MissingKeyHandler } from './translator.js'\nexport { DefaultI18nCapability, createI18nCapability } from './translator.js'\n"]}
@@ -74,4 +74,3 @@ export type MissingKeyHandler = (key: string, locale: LocaleId) => string;
74
74
  * Create an i18n capability instance
75
75
  */
76
76
  export declare function createI18nCapability(options?: I18nOptions): I18nCapability;
77
- //# sourceMappingURL=translator.d.ts.map