@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
package/README.md CHANGED
@@ -1,14 +1,44 @@
1
1
  # @pwfabric/runtime
2
2
 
3
- The renderer. Turns a surface definition into a live page: blocks, bindings, capabilities, appearance.
3
+ The engine that renders a surface: the React surface and block renderers, data binding,
4
+ forms, entities, connectors, routing, SEO, state and the capability kernel. It
5
+ re-exports `@pwfabric/contracts`.
6
+
7
+ ## Install
4
8
 
5
9
  ```bash
6
- pnpm add @pwfabric/runtime
10
+ pnpm add @pwfabric/runtime@rc zod@3 react react-dom
7
11
  ```
8
12
 
9
- Part of [PWFabric](https://github.com/pwfabric/pwfabric). Documentation, the
10
- other packages and the licensing model live in that repository.
13
+ ESM only: import it from an ES module (`"type": "module"` or `.mjs`). Node 22+. Peers: `react` and `react-dom` 18 or 19; `next` 14–16 only if you use the
14
+ Next.js image adapter.
15
+
16
+ ## Main exports
17
+
18
+ | Export | What it is |
19
+ |--------|------------|
20
+ | everything from `@pwfabric/contracts` | Re-exported |
21
+ | `BlockSurfaceRenderer`, `DataBoundSurfaceRenderer`, `BlockRenderer`, `BlockErrorBoundary` | Render a surface and its blocks |
22
+ | `createFabric`, `FabricKernel`, `createRegistry`, `createEventBus` | The capability kernel |
23
+ | `useSurfaceEvents`, `useSurfaceId`, `useSurfaceConnections`, `useEntitlements` | Hooks for block components |
24
+ | binding, forms, entity, connector, routing, SEO, state and cache APIs | Re-exported from their modules |
25
+ | `DefaultImageAdapter`, `NextImageAdapter` | Image adapters |
26
+
27
+ ## Entry points
28
+
29
+ | Import | Contents |
30
+ |--------|----------|
31
+ | `@pwfabric/runtime` | Everything above |
32
+ | `@pwfabric/runtime/adapters` | Image adapters (`DefaultImageAdapter`, `NextImageAdapter`) |
33
+ | `@pwfabric/runtime/capability` | The platform capability catalogue and lookups |
34
+ | `@pwfabric/runtime/blocks` | Block registry, component types, composition rules |
35
+ | `@pwfabric/runtime/auth` | Auth providers (`createAuthProvider`, `ApiKeyAuthProvider`, `MsalAuthProvider`) |
36
+ | `@pwfabric/runtime/data` | `DataService`, `createDataService` and the data capability provider |
37
+ | `@pwfabric/runtime/blocks/*` | One module of `blocks/`, e.g. `@pwfabric/runtime/blocks/hooks` |
38
+ | `@pwfabric/runtime/render/*` | One module of `render/`, e.g. `@pwfabric/runtime/render/renderer` |
11
39
 
12
40
  ## Licence
13
41
 
14
- Business Source License 1.1 — see `LICENSE`. Use it, change it, host what you build with it; do not offer PWFabric itself as a service. Becomes Apache-2.0 on the Change Date.
42
+ Business Source License 1.1 — see `LICENSE`. Use it, change it, and host what you build with it, for yourself or your own customers; do not offer PWFabric itself as a service. Each version becomes Apache-2.0 on the Change Date in `LICENSE`. See [licensing](https://pwfabric.com/licence).
43
+
44
+ Part of [PWFabric](https://pwfabric.com) — the engine that renders an app. Source: [github.com/pwfabric/pwfabric](https://github.com/pwfabric/pwfabric).
@@ -63,4 +63,3 @@ export declare class LiveRegionAnnouncer {
63
63
  * @returns A new LiveRegionAnnouncer
64
64
  */
65
65
  export declare function createAnnouncer(): LiveRegionAnnouncer;
66
- //# sourceMappingURL=announcer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"announcer.js","sourceRoot":"","sources":["../../src/a11y/announcer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"announcer.js","sourceRoot":"","sources":["../../src/a11y/announcer.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Screen Reader Live Region Announcer\n *\n * Manages ARIA live regions for dynamic screen reader announcements.\n * Works in both browser and SSR environments (SSR is a safe no-op).\n *\n * @module @pwfabric/runtime/a11y/announcer\n */\n\n// ============================================================\n// TYPES\n// ============================================================\n\n/** Politeness level for ARIA live region announcements */\nexport type AnnouncementLevel = 'polite' | 'assertive'\n\n/** Configuration for a live region */\nexport interface LiveRegionConfig {\n /** Politeness level of the announcement */\n level: AnnouncementLevel\n /** Milliseconds before the announcement is cleared (default 5000) */\n timeout?: number\n}\n\n// ============================================================\n// CONSTANTS\n// ============================================================\n\nconst DEFAULT_TIMEOUT = 5000\nconst LIVE_REGION_STYLES =\n 'position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;'\n\n// ============================================================\n// LIVE REGION STATE\n// ============================================================\n\ninterface LiveRegionState {\n element: HTMLElement | null\n timer?: ReturnType<typeof setTimeout> | undefined\n}\n\n// ============================================================\n// LIVE REGION ANNOUNCER\n// ============================================================\n\n/**\n * Manages ARIA live regions for screen reader announcements.\n *\n * Creates visually hidden DOM elements with `aria-live` attributes\n * that screen readers monitor for content changes. Supports both\n * `polite` (waits for idle) and `assertive` (interrupts) modes.\n *\n * In SSR environments, all operations are safe no-ops.\n */\nexport class LiveRegionAnnouncer {\n private regions: Map<AnnouncementLevel, LiveRegionState>\n\n constructor() {\n this.regions = new Map()\n }\n\n /**\n * Create a live region DOM element for the given politeness level.\n * In SSR environments this is a no-op.\n *\n * @param level - The ARIA live politeness level\n */\n createRegion(level: AnnouncementLevel): void {\n if (typeof document === 'undefined') return\n if (this.regions.has(level)) return\n\n const element = document.createElement('div')\n element.setAttribute('aria-live', level)\n element.setAttribute('aria-atomic', 'true')\n element.setAttribute('role', 'status')\n element.setAttribute('style', LIVE_REGION_STYLES)\n element.setAttribute('data-pw-a11y-announcer', level)\n\n document.body.appendChild(element)\n\n this.regions.set(level, { element })\n }\n\n /**\n * Announce a message to screen readers via the specified live region.\n *\n * If the region has not been created yet, it will be created automatically.\n * The message is cleared after the configured timeout (default 5000ms).\n *\n * @param message - The text to announce\n * @param level - The politeness level (default 'polite')\n * @param timeout - Milliseconds before clearing (default 5000)\n */\n announce(\n message: string,\n level: AnnouncementLevel = 'polite',\n timeout: number = DEFAULT_TIMEOUT\n ): void {\n if (typeof document === 'undefined') return\n\n if (!this.regions.has(level)) {\n this.createRegion(level)\n }\n\n const region = this.regions.get(level)\n if (!region?.element) return\n\n // Clear any pending timer\n if (region.timer !== undefined) {\n clearTimeout(region.timer)\n }\n\n // Clear and re-set to force screen reader re-announcement\n region.element.textContent = ''\n\n // Use a microtask to ensure the empty state is processed before the new content\n requestAnimationFrame(() => {\n if (region.element) {\n region.element.textContent = message\n }\n })\n\n // Auto-clear after timeout\n region.timer = setTimeout(() => {\n this.clear(level)\n }, timeout)\n }\n\n /**\n * Clear the announced message for a specific level or all levels.\n *\n * @param level - The level to clear, or undefined to clear all\n */\n clear(level?: AnnouncementLevel): void {\n if (typeof document === 'undefined') return\n\n if (level !== undefined) {\n const region = this.regions.get(level)\n if (region) {\n if (region.timer !== undefined) {\n clearTimeout(region.timer)\n region.timer = undefined\n }\n if (region.element) {\n region.element.textContent = ''\n }\n }\n } else {\n for (const regionLevel of this.regions.keys()) {\n this.clear(regionLevel)\n }\n }\n }\n\n /**\n * Remove all live region DOM elements and clear timers.\n * Call this when the announcer is no longer needed.\n */\n dispose(): void {\n for (const [, region] of this.regions) {\n if (region.timer !== undefined) {\n clearTimeout(region.timer)\n }\n if (region.element && typeof document !== 'undefined') {\n region.element.remove()\n }\n }\n this.regions.clear()\n }\n}\n\n// ============================================================\n// FACTORY FUNCTION\n// ============================================================\n\n/**\n * Create a new LiveRegionAnnouncer instance.\n *\n * @returns A new LiveRegionAnnouncer\n */\nexport function createAnnouncer(): LiveRegionAnnouncer {\n return new LiveRegionAnnouncer()\n}\n"]}
@@ -52,4 +52,3 @@ export declare function checkContrast(foreground: string, background: string): C
52
52
  * @returns `true` if the contrast ratio meets the specified level
53
53
  */
54
54
  export declare function meetsWCAG(foreground: string, background: string, level: 'AA' | 'AAA', large?: boolean): boolean;
55
- //# sourceMappingURL=contrast.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"contrast.js","sourceRoot":"","sources":["../../src/a11y/contrast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAoBH,+DAA+D;AAC/D,YAAY;AACZ,+DAA+D;AAE/D,yCAAyC;AACzC,MAAM,UAAU,GAAG;IACjB,SAAS,EAAE,GAAG;IACd,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,GAAG;CACN,CAAA;AAEV,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D,4CAA4C;AAC5C,6DAA6D;AAC7D,4DAA4D;AAC5D,6EAA6E;AAC7E,uFAAuF;AACvF,0EAA0E;AAC1E,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEjE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAA;AAEtC,+DAA+D;AAC/D,iBAAiB;AACjB,+DAA+D;AAE/D;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,MAAc;IAC1D,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAE7B,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAA;IAE5B,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IAEtD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAEnC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;AAC3C,CAAC;AAED,+DAA+D;AAC/D,cAAc;AACd,+DAA+D;AAE/D;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,UAAkB;IAClE,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAEnD,OAAO;QACL,KAAK;QACL,OAAO,EAAE,KAAK,IAAI,UAAU,CAAC,SAAS;QACtC,QAAQ,EAAE,KAAK,IAAI,UAAU,CAAC,UAAU;QACxC,YAAY,EAAE,KAAK,IAAI,UAAU,CAAC,QAAQ;QAC1C,aAAa,EAAE,KAAK,IAAI,UAAU,CAAC,SAAS;KAC7C,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CACvB,UAAkB,EAClB,UAAkB,EAClB,KAAmB,EACnB,KAAK,GAAG,KAAK;IAEb,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAEnD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,SAAS,CAAA;IAC7E,CAAC;IAED,MAAM;IACN,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,UAAU,CAAA;AAC/E,CAAC"}
1
+ {"version":3,"file":"contrast.js","sourceRoot":"","sources":["../../src/a11y/contrast.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAoBH,+DAA+D;AAC/D,YAAY;AACZ,+DAA+D;AAE/D,yCAAyC;AACzC,MAAM,UAAU,GAAG;IACjB,SAAS,EAAE,GAAG;IACd,UAAU,EAAE,CAAC;IACb,QAAQ,EAAE,CAAC;IACX,SAAS,EAAE,GAAG;CACN,CAAA;AAEV,+DAA+D;AAC/D,mBAAmB;AACnB,+DAA+D;AAE/D,4CAA4C;AAC5C,6DAA6D;AAC7D,4DAA4D;AAC5D,6EAA6E;AAC7E,uFAAuF;AACvF,0EAA0E;AAC1E,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAA;AAEjE,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,CAAA;AAEtC,+DAA+D;AAC/D,iBAAiB;AACjB,+DAA+D;AAE/D;;;;;;;;;GASG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,MAAc;IAC1D,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAC7B,MAAM,IAAI,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAA;IAE7B,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,CAAA;IAE5B,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IACtD,MAAM,IAAI,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAA;IAEtD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAEnC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,CAAA;AAC3C,CAAC;AAED,+DAA+D;AAC/D,cAAc;AACd,+DAA+D;AAE/D;;;;;;GAMG;AACH,MAAM,UAAU,aAAa,CAAC,UAAkB,EAAE,UAAkB;IAClE,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAEnD,OAAO;QACL,KAAK;QACL,OAAO,EAAE,KAAK,IAAI,UAAU,CAAC,SAAS;QACtC,QAAQ,EAAE,KAAK,IAAI,UAAU,CAAC,UAAU;QACxC,YAAY,EAAE,KAAK,IAAI,UAAU,CAAC,QAAQ;QAC1C,aAAa,EAAE,KAAK,IAAI,UAAU,CAAC,SAAS;KAC7C,CAAA;AACH,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,SAAS,CACvB,UAAkB,EAClB,UAAkB,EAClB,KAAmB,EACnB,KAAK,GAAG,KAAK;IAEb,MAAM,KAAK,GAAG,aAAa,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IAEnD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACnB,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,SAAS,CAAA;IAC7E,CAAC;IAED,MAAM;IACN,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,IAAI,UAAU,CAAC,UAAU,CAAA;AAC/E,CAAC","sourcesContent":["/**\n * WCAG Color Contrast Checking\n *\n * Implements the WCAG 2.0 contrast ratio algorithm for verifying\n * text and UI component color accessibility. Supports AA and AAA\n * conformance levels for both normal and large text.\n *\n * @see https://www.w3.org/TR/WCAG20/#contrast-ratiodef\n * @module @pwfabric/runtime/a11y/contrast\n */\n\n// ============================================================\n// TYPES\n// ============================================================\n\n/** Result of a WCAG contrast check */\nexport interface ContrastResult {\n /** The calculated contrast ratio (e.g. 4.5) */\n ratio: number\n /** Meets WCAG AA for normal text (>= 4.5:1) */\n meetsAA: boolean\n /** Meets WCAG AAA for normal text (>= 7:1) */\n meetsAAA: boolean\n /** Meets WCAG AA for large text (>= 3:1) */\n meetsAALarge: boolean\n /** Meets WCAG AAA for large text (>= 4.5:1) */\n meetsAAALarge: boolean\n}\n\n// ============================================================\n// CONSTANTS\n// ============================================================\n\n/** WCAG 2.0 contrast ratio thresholds */\nconst THRESHOLDS = {\n AA_NORMAL: 4.5,\n AAA_NORMAL: 7,\n AA_LARGE: 3,\n AAA_LARGE: 4.5,\n} as const\n\n// ============================================================\n// COLOR PRIMITIVES\n// ============================================================\n\n// `hexToRgb` / `relativeLuminance` MOVED to\n// `@pwfabric/contracts` (`fabric/appearance-cascade`) in the\n// the appearance cascade derives on-card ink from luminance\n// and the dark variant from HSL, and it now lives in `contracts` so runtime,\n// the exporter and the composer share ONE implementation. Re-exported here so the a11y\n// module keeps its full public surface and existing imports keep working.\nimport { hexToRgb, relativeLuminance } from '@pwfabric/contracts'\n\nexport { hexToRgb, relativeLuminance }\n\n// ============================================================\n// CONTRAST RATIO\n// ============================================================\n\n/**\n * Calculate the contrast ratio between two hex colors.\n *\n * The ratio is always >= 1, with 1 meaning identical colors\n * and 21 being the maximum (black vs white).\n *\n * @param color1 - First hex color string\n * @param color2 - Second hex color string\n * @returns Contrast ratio, or 0 if either color is invalid\n */\nexport function contrastRatio(color1: string, color2: string): number {\n const rgb1 = hexToRgb(color1)\n const rgb2 = hexToRgb(color2)\n\n if (!rgb1 || !rgb2) return 0\n\n const lum1 = relativeLuminance(rgb1.r, rgb1.g, rgb1.b)\n const lum2 = relativeLuminance(rgb2.r, rgb2.g, rgb2.b)\n\n const lighter = Math.max(lum1, lum2)\n const darker = Math.min(lum1, lum2)\n\n return (lighter + 0.05) / (darker + 0.05)\n}\n\n// ============================================================\n// WCAG CHECKS\n// ============================================================\n\n/**\n * Check a foreground/background color pair against all WCAG contrast levels.\n *\n * @param foreground - Foreground (text) hex color\n * @param background - Background hex color\n * @returns ContrastResult with ratio and pass/fail for each WCAG level\n */\nexport function checkContrast(foreground: string, background: string): ContrastResult {\n const ratio = contrastRatio(foreground, background)\n\n return {\n ratio,\n meetsAA: ratio >= THRESHOLDS.AA_NORMAL,\n meetsAAA: ratio >= THRESHOLDS.AAA_NORMAL,\n meetsAALarge: ratio >= THRESHOLDS.AA_LARGE,\n meetsAAALarge: ratio >= THRESHOLDS.AAA_LARGE,\n }\n}\n\n/**\n * Quick check whether a color pair meets a specific WCAG conformance level.\n *\n * @param foreground - Foreground (text) hex color\n * @param background - Background hex color\n * @param level - WCAG conformance level ('AA' or 'AAA')\n * @param large - Whether the text is \"large\" (>= 18pt or >= 14pt bold) (default false)\n * @returns `true` if the contrast ratio meets the specified level\n */\nexport function meetsWCAG(\n foreground: string,\n background: string,\n level: 'AA' | 'AAA',\n large = false\n): boolean {\n const ratio = contrastRatio(foreground, background)\n\n if (level === 'AA') {\n return large ? ratio >= THRESHOLDS.AA_LARGE : ratio >= THRESHOLDS.AA_NORMAL\n }\n\n // AAA\n return large ? ratio >= THRESHOLDS.AAA_LARGE : ratio >= THRESHOLDS.AAA_NORMAL\n}\n"]}
@@ -121,4 +121,3 @@ export declare function createFocusTrap(): FocusTrapManager;
121
121
  * @returns A new FocusRestorer
122
122
  */
123
123
  export declare function createFocusRestorer(): FocusRestorer;
124
- //# sourceMappingURL=focus.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"focus.js","sourceRoot":"","sources":["../../src/a11y/focus.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"focus.js","sourceRoot":"","sources":["../../src/a11y/focus.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Focus Management Utilities\n *\n * Provides focus trapping, focus restoration, and skip-link helpers\n * for accessible modal dialogs, drawers, and navigation patterns.\n * All DOM operations are SSR-safe.\n *\n * @module @pwfabric/runtime/a11y/focus\n */\n\n// ============================================================\n// TYPES\n// ============================================================\n\n/** Configuration for a focus trap */\nexport interface FocusTrapConfig {\n /** The container element to trap focus within */\n container: HTMLElement | null\n /** Initial element to focus, or a CSS selector to find it */\n initialFocus?: HTMLElement | string\n /** Whether to return focus to the previously focused element on deactivate (default true) */\n returnFocus?: boolean\n /** Whether pressing Escape deactivates the trap (default true) */\n escapeDeactivates?: boolean\n}\n\n// ============================================================\n// CONSTANTS\n// ============================================================\n\n/**\n * Selector for elements that can receive focus.\n * Covers interactive HTML elements and elements with explicit tabindex.\n */\nconst FOCUSABLE_SELECTOR = [\n 'a[href]',\n 'area[href]',\n 'button:not([disabled])',\n 'input:not([disabled])',\n 'select:not([disabled])',\n 'textarea:not([disabled])',\n '[tabindex]:not([tabindex=\"-1\"])',\n '[contenteditable]',\n 'details > summary',\n 'audio[controls]',\n 'video[controls]',\n].join(', ')\n\n// ============================================================\n// FOCUS TRAP MANAGER\n// ============================================================\n\n/**\n * Manages focus trapping within a container element.\n *\n * When activated, Tab and Shift+Tab keypresses are intercepted to\n * keep focus cycling within the container's focusable elements.\n * Optionally deactivates on Escape key press.\n *\n * Used for modal dialogs, slide-over panels, and other overlay patterns\n * that require focus to remain within the component for accessibility.\n */\nexport class FocusTrapManager {\n private active: boolean\n private config: FocusTrapConfig | null\n private previousFocus: Element | null\n private readonly boundHandleKeyDown: (event: KeyboardEvent) => void\n\n constructor() {\n this.active = false\n this.config = null\n this.previousFocus = null\n this.boundHandleKeyDown = this.handleKeyDown.bind(this)\n }\n\n /**\n * Activate the focus trap with the given configuration.\n *\n * Saves the currently focused element, attaches a keydown listener,\n * and moves focus to the initial focus target (if specified) or the\n * first focusable element in the container.\n *\n * @param config - Focus trap configuration\n */\n activate(config: FocusTrapConfig): void {\n if (typeof document === 'undefined') return\n if (!config.container) return\n if (this.active) {\n this.deactivate()\n }\n\n this.config = {\n ...config,\n returnFocus: config.returnFocus ?? true,\n escapeDeactivates: config.escapeDeactivates ?? true,\n }\n this.previousFocus = document.activeElement\n this.active = true\n\n document.addEventListener('keydown', this.boundHandleKeyDown)\n\n // Determine and apply initial focus\n const initialTarget = this.resolveInitialFocus()\n if (initialTarget) {\n initialTarget.focus()\n } else {\n // Fall back to the first focusable element\n const focusable = this.getFocusableElements()\n if (focusable.length > 0) {\n focusable[0]?.focus()\n }\n }\n }\n\n /**\n * Deactivate the focus trap and optionally return focus to the\n * previously focused element.\n */\n deactivate(): void {\n if (typeof document === 'undefined') return\n if (!this.active) return\n\n this.active = false\n document.removeEventListener('keydown', this.boundHandleKeyDown)\n\n if (this.config?.returnFocus && this.previousFocus instanceof HTMLElement) {\n this.previousFocus.focus()\n }\n\n this.config = null\n this.previousFocus = null\n }\n\n /**\n * Check whether the focus trap is currently active.\n *\n * @returns `true` if the trap is active\n */\n isActive(): boolean {\n return this.active\n }\n\n /**\n * Dispose of the focus trap, deactivating it and cleaning up resources.\n */\n dispose(): void {\n this.deactivate()\n }\n\n // ============================================================\n // PRIVATE METHODS\n // ============================================================\n\n /**\n * Resolve the initial focus target from the config.\n * Handles both HTMLElement references and CSS selector strings.\n */\n private resolveInitialFocus(): HTMLElement | null {\n if (!this.config?.initialFocus || !this.config.container) return null\n\n if (typeof this.config.initialFocus === 'string') {\n return this.config.container.querySelector<HTMLElement>(this.config.initialFocus)\n }\n\n return this.config.initialFocus\n }\n\n /**\n * Get all focusable elements within the trap container, sorted in DOM order.\n *\n * @returns Array of focusable HTMLElements\n */\n private getFocusableElements(): HTMLElement[] {\n if (!this.config?.container) return []\n\n const elements = this.config.container.querySelectorAll<HTMLElement>(FOCUSABLE_SELECTOR)\n return Array.from(elements).filter((el) => {\n // Filter out elements that are not visible\n return el.offsetParent !== null || el.offsetWidth > 0 || el.offsetHeight > 0\n })\n }\n\n /**\n * Handle keydown events to trap Tab focus and optionally deactivate on Escape.\n */\n private handleKeyDown(event: KeyboardEvent): void {\n if (!this.active || !this.config) return\n\n // Handle Escape\n if (event.key === 'Escape' && this.config.escapeDeactivates) {\n event.preventDefault()\n this.deactivate()\n return\n }\n\n // Handle Tab / Shift+Tab\n if (event.key !== 'Tab') return\n\n const focusable = this.getFocusableElements()\n if (focusable.length === 0) {\n event.preventDefault()\n return\n }\n\n const firstElement = focusable[0]\n const lastElement = focusable[focusable.length - 1]\n\n if (event.shiftKey) {\n // Shift+Tab: wrap from first to last\n if (\n document.activeElement === firstElement ||\n !this.config.container?.contains(document.activeElement)\n ) {\n event.preventDefault()\n lastElement?.focus()\n }\n } else {\n // Tab: wrap from last to first\n if (\n document.activeElement === lastElement ||\n !this.config.container?.contains(document.activeElement)\n ) {\n event.preventDefault()\n firstElement?.focus()\n }\n }\n }\n}\n\n// ============================================================\n// FOCUS RESTORER\n// ============================================================\n\n/**\n * Manages a stack of focus positions for nested focus contexts.\n *\n * Useful when opening nested dialogs or panels where each level\n * needs to save and restore the previous focus target.\n */\nexport class FocusRestorer {\n private stack: Element[]\n\n constructor() {\n this.stack = []\n }\n\n /**\n * Save the currently focused element onto the stack.\n */\n save(): void {\n if (typeof document === 'undefined') return\n\n const activeElement = document.activeElement\n if (activeElement) {\n this.stack.push(activeElement)\n }\n }\n\n /**\n * Pop the most recently saved element from the stack and restore focus to it.\n */\n restore(): void {\n if (typeof document === 'undefined') return\n\n const element = this.stack.pop()\n if (element instanceof HTMLElement) {\n element.focus()\n }\n }\n}\n\n// ============================================================\n// SKIP LINK HELPER\n// ============================================================\n\n/**\n * Create a skip-to-content link configuration.\n *\n * Returns the href, label, and click handler for a skip link that\n * jumps focus to the element with the specified ID. The target element\n * is given a `tabindex` of `-1` if it does not already have one so\n * it can receive programmatic focus.\n *\n * @param targetId - The ID of the element to skip to\n * @returns Skip link configuration object\n */\nexport function createSkipLink(targetId: string): {\n href: string\n label: string\n handleClick: (e: Event) => void\n} {\n return {\n href: `#${targetId}`,\n label: 'Skip to content',\n handleClick: (e: Event) => {\n if (typeof document === 'undefined') return\n\n e.preventDefault()\n const target = document.getElementById(targetId)\n if (target) {\n // Ensure the element can receive focus\n if (!target.hasAttribute('tabindex')) {\n target.setAttribute('tabindex', '-1')\n }\n target.focus()\n target.scrollIntoView({ behavior: 'smooth' })\n }\n },\n }\n}\n\n// ============================================================\n// FACTORY FUNCTIONS\n// ============================================================\n\n/**\n * Create a new FocusTrapManager instance.\n *\n * @returns A new FocusTrapManager\n */\nexport function createFocusTrap(): FocusTrapManager {\n return new FocusTrapManager()\n}\n\n/**\n * Create a new FocusRestorer instance.\n *\n * @returns A new FocusRestorer\n */\nexport function createFocusRestorer(): FocusRestorer {\n return new FocusRestorer()\n}\n"]}
@@ -19,4 +19,3 @@ export type { ArrowDirection, KeyboardNavConfig } from './keyboard.js';
19
19
  export { KeyboardNavigationManager, RovingTabIndex, createKeyboardNav, createRovingTabIndex, } from './keyboard.js';
20
20
  export type { ContrastResult } from './contrast.js';
21
21
  export { hexToRgb, relativeLuminance, contrastRatio, checkContrast, meetsWCAG } from './contrast.js';
22
- //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/a11y/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIrE,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAA;AAInB,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,eAAe,CAAA;AAItB,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/a11y/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIrE,OAAO,EACL,gBAAgB,EAChB,aAAa,EACb,cAAc,EACd,eAAe,EACf,mBAAmB,GACpB,MAAM,YAAY,CAAA;AAInB,OAAO,EACL,yBAAyB,EACzB,cAAc,EACd,iBAAiB,EACjB,oBAAoB,GACrB,MAAM,eAAe,CAAA;AAItB,OAAO,EAAE,QAAQ,EAAE,iBAAiB,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAA","sourcesContent":["/**\n * Accessibility (a11y) Module\n *\n * Provides runtime accessibility utilities for the PWFabric platform:\n * - Screen reader announcements via ARIA live regions\n * - Focus trapping, restoration, and skip links\n * - Keyboard navigation for composite widgets\n * - WCAG 2.0 color contrast checking\n *\n * All DOM operations are SSR-safe (no-op when `document` is unavailable).\n *\n * @module @pwfabric/runtime/a11y\n */\n\n// Announcer - Screen reader live region management\nexport type { AnnouncementLevel, LiveRegionConfig } from './announcer.js'\nexport { LiveRegionAnnouncer, createAnnouncer } from './announcer.js'\n\n// Focus - Focus management utilities\nexport type { FocusTrapConfig } from './focus.js'\nexport {\n FocusTrapManager,\n FocusRestorer,\n createSkipLink,\n createFocusTrap,\n createFocusRestorer,\n} from './focus.js'\n\n// Keyboard - Keyboard navigation manager\nexport type { ArrowDirection, KeyboardNavConfig } from './keyboard.js'\nexport {\n KeyboardNavigationManager,\n RovingTabIndex,\n createKeyboardNav,\n createRovingTabIndex,\n} from './keyboard.js'\n\n// Contrast - WCAG color contrast checking\nexport type { ContrastResult } from './contrast.js'\nexport { hexToRgb, relativeLuminance, contrastRatio, checkContrast, meetsWCAG } from './contrast.js'\n"]}
@@ -142,4 +142,3 @@ export declare function createKeyboardNav(): KeyboardNavigationManager;
142
142
  * @returns A new RovingTabIndex
143
143
  */
144
144
  export declare function createRovingTabIndex(selector?: string): RovingTabIndex;
145
- //# sourceMappingURL=keyboard.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../../src/a11y/keyboard.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../../src/a11y/keyboard.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Keyboard Navigation Manager\n *\n * Provides arrow-key navigation for composite widgets (tabs, menus,\n * listboxes) and roving tabindex management. All DOM operations are\n * SSR-safe.\n *\n * @module @pwfabric/runtime/a11y/keyboard\n */\n\n// ============================================================\n// TYPES\n// ============================================================\n\n/** Direction(s) in which arrow key navigation operates */\nexport type ArrowDirection = 'horizontal' | 'vertical' | 'both'\n\n/** Configuration for keyboard navigation */\nexport interface KeyboardNavConfig {\n /** Container element holding navigable items */\n container: HTMLElement | null\n /** Direction of arrow key navigation */\n direction: ArrowDirection\n /** Whether navigation wraps around at boundaries (default true) */\n loop?: boolean\n /** CSS selector for navigable items (default '[role=\"option\"], [role=\"tab\"], button, a') */\n selector?: string\n}\n\n// ============================================================\n// CONSTANTS\n// ============================================================\n\nconst DEFAULT_SELECTOR = '[role=\"option\"], [role=\"tab\"], button, a'\n\n// ============================================================\n// KEYBOARD NAVIGATION MANAGER\n// ============================================================\n\n/**\n * Manages keyboard navigation within a composite widget.\n *\n * Listens for arrow key events on a container and moves focus\n * between child items matching a configurable selector. Supports\n * horizontal, vertical, or both directional navigation with\n * optional looping at boundaries.\n */\nexport class KeyboardNavigationManager {\n private config: KeyboardNavConfig | null\n private currentIndex: number\n private readonly boundHandleKeyDown: (event: KeyboardEvent) => void\n\n constructor() {\n this.config = null\n this.currentIndex = 0\n this.boundHandleKeyDown = this.handleKeyDown.bind(this)\n }\n\n /**\n * Activate keyboard navigation on the given container.\n *\n * @param config - Keyboard navigation configuration\n */\n activate(config: KeyboardNavConfig): void {\n if (typeof document === 'undefined') return\n if (!config.container) return\n if (this.config) {\n this.deactivate()\n }\n\n this.config = {\n ...config,\n loop: config.loop ?? true,\n selector: config.selector ?? DEFAULT_SELECTOR,\n }\n this.currentIndex = 0\n\n this.config.container?.addEventListener('keydown', this.boundHandleKeyDown)\n }\n\n /**\n * Deactivate keyboard navigation and remove event listeners.\n */\n deactivate(): void {\n if (!this.config?.container) return\n\n this.config.container.removeEventListener('keydown', this.boundHandleKeyDown)\n this.config = null\n this.currentIndex = 0\n }\n\n /**\n * Move focus to the next item in the navigation order.\n */\n focusNext(): void {\n const items = this.getItems()\n if (items.length === 0) return\n\n const nextIndex = this.currentIndex + 1\n\n if (nextIndex >= items.length) {\n if (this.config?.loop) {\n this.currentIndex = 0\n } else {\n return\n }\n } else {\n this.currentIndex = nextIndex\n }\n\n items[this.currentIndex]?.focus()\n }\n\n /**\n * Move focus to the previous item in the navigation order.\n */\n focusPrevious(): void {\n const items = this.getItems()\n if (items.length === 0) return\n\n const prevIndex = this.currentIndex - 1\n\n if (prevIndex < 0) {\n if (this.config?.loop) {\n this.currentIndex = items.length - 1\n } else {\n return\n }\n } else {\n this.currentIndex = prevIndex\n }\n\n items[this.currentIndex]?.focus()\n }\n\n /**\n * Move focus to the first item.\n */\n focusFirst(): void {\n const items = this.getItems()\n if (items.length === 0) return\n\n this.currentIndex = 0\n items[0]?.focus()\n }\n\n /**\n * Move focus to the last item.\n */\n focusLast(): void {\n const items = this.getItems()\n if (items.length === 0) return\n\n this.currentIndex = items.length - 1\n items[this.currentIndex]?.focus()\n }\n\n /**\n * Get the current focused item index.\n *\n * @returns The zero-based index of the currently focused item\n */\n getCurrentIndex(): number {\n return this.currentIndex\n }\n\n /**\n * Dispose of the keyboard navigation manager, removing all listeners.\n */\n dispose(): void {\n this.deactivate()\n }\n\n // ============================================================\n // PRIVATE METHODS\n // ============================================================\n\n /**\n * Handle keydown events for arrow key navigation and Home/End support.\n */\n private handleKeyDown(event: KeyboardEvent): void {\n if (!this.config) return\n\n const { direction } = this.config\n let handled = false\n\n switch (event.key) {\n case 'ArrowRight':\n if (direction === 'horizontal' || direction === 'both') {\n this.focusNext()\n handled = true\n }\n break\n\n case 'ArrowLeft':\n if (direction === 'horizontal' || direction === 'both') {\n this.focusPrevious()\n handled = true\n }\n break\n\n case 'ArrowDown':\n if (direction === 'vertical' || direction === 'both') {\n this.focusNext()\n handled = true\n }\n break\n\n case 'ArrowUp':\n if (direction === 'vertical' || direction === 'both') {\n this.focusPrevious()\n handled = true\n }\n break\n\n case 'Home':\n this.focusFirst()\n handled = true\n break\n\n case 'End':\n this.focusLast()\n handled = true\n break\n }\n\n if (handled) {\n event.preventDefault()\n }\n }\n\n /**\n * Query navigable items from the container, filtered to visible elements.\n *\n * @returns Array of focusable HTMLElements within the container\n */\n private getItems(): HTMLElement[] {\n if (!this.config?.container) return []\n\n const selector = this.config.selector ?? DEFAULT_SELECTOR\n const elements = this.config.container.querySelectorAll<HTMLElement>(selector)\n\n return Array.from(elements).filter((el) => {\n // Exclude disabled and hidden elements\n if (el.hasAttribute('disabled')) return false\n if (el.getAttribute('aria-hidden') === 'true') return false\n return el.offsetParent !== null || el.offsetWidth > 0 || el.offsetHeight > 0\n })\n }\n}\n\n// ============================================================\n// ROVING TABINDEX\n// ============================================================\n\n/**\n * Manages roving tabindex for composite widgets.\n *\n * In the roving tabindex pattern, only one item within a group\n * has `tabindex=\"0\"` (making it tabbable), while all other items\n * have `tabindex=\"-1\"`. This allows the group to participate in\n * the page tab order as a single stop, with arrow keys used to\n * navigate between items within the group.\n *\n * @see https://www.w3.org/WAI/ARIA/apg/practices/keyboard-interface/#kbd_roving_tabindex\n */\nexport class RovingTabIndex {\n private container: HTMLElement | null\n private selector: string\n\n /**\n * @param selector - CSS selector for items managed by roving tabindex\n */\n constructor(selector?: string) {\n this.container = null\n this.selector = selector ?? DEFAULT_SELECTOR\n }\n\n /**\n * Attach roving tabindex management to a container.\n *\n * Sets `tabindex=\"-1\"` on all matching items except the first,\n * which gets `tabindex=\"0\"`.\n *\n * @param container - The container element\n */\n attach(container: HTMLElement): void {\n if (typeof document === 'undefined') return\n\n this.container = container\n const items = this.getItems()\n\n items.forEach((item, index) => {\n item.setAttribute('tabindex', index === 0 ? '0' : '-1')\n })\n }\n\n /**\n * Detach roving tabindex management, restoring all items to `tabindex=\"0\"`.\n */\n detach(): void {\n if (!this.container) return\n\n const items = this.getItems()\n items.forEach((item) => {\n item.setAttribute('tabindex', '0')\n })\n\n this.container = null\n }\n\n /**\n * Set a specific element as the active (tabbable) item.\n *\n * The target receives `tabindex=\"0\"` and all sibling items\n * receive `tabindex=\"-1\"`.\n *\n * @param element - The element to make active\n */\n setActive(element: HTMLElement): void {\n if (!this.container) return\n\n const items = this.getItems()\n for (const item of items) {\n item.setAttribute('tabindex', item === element ? '0' : '-1')\n }\n }\n\n /**\n * Dispose of the roving tabindex manager.\n */\n dispose(): void {\n this.detach()\n }\n\n // ============================================================\n // PRIVATE METHODS\n // ============================================================\n\n /**\n * Query managed items from the container.\n */\n private getItems(): HTMLElement[] {\n if (!this.container) return []\n return Array.from(this.container.querySelectorAll<HTMLElement>(this.selector))\n }\n}\n\n// ============================================================\n// FACTORY FUNCTIONS\n// ============================================================\n\n/**\n * Create a new KeyboardNavigationManager instance.\n *\n * @returns A new KeyboardNavigationManager\n */\nexport function createKeyboardNav(): KeyboardNavigationManager {\n return new KeyboardNavigationManager()\n}\n\n/**\n * Create a new RovingTabIndex instance.\n *\n * @param selector - CSS selector for managed items\n * @returns A new RovingTabIndex\n */\nexport function createRovingTabIndex(selector?: string): RovingTabIndex {\n return new RovingTabIndex(selector)\n}\n"]}
@@ -23,4 +23,3 @@ import type { ImageAdapter } from './types.js';
23
23
  * ```
24
24
  */
25
25
  export declare const DefaultImageAdapter: ImageAdapter;
26
- //# sourceMappingURL=default-image.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"default-image.js","sourceRoot":"","sources":["../../src/adapters/default-image.tsx"],"names":[],"mappings":";AAaA;;GAEG;AACH,SAAS,OAAO,CAAC,KAAkC;IACjD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,GAAG,KAAK,IAAI,CAAA;IAClD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAiB,CAAC,EAChD,GAAG,EACH,GAAG,EACH,KAAK,EACL,MAAM,EACN,OAAO,EACP,SAAS,EACT,WAAW,EACX,YAAY,EACZ,SAAS,EACT,KAAK,EACL,OAAO,GACW,EAAsB,EAAE;IAC1C,MAAM,aAAa,GAAwB;QACzC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM;QAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM;QACjC,SAAS,EAAE,SAAS,IAAI,OAAO;QAC/B,WAAW;QACX,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC;QACnC,GAAG,KAAK;KACT,CAAA;IAED,OAAO,CACL,cACE,EAAE,EAAE,OAAO,EACX,GAAG,EAAE,GAAG,IAAI,kBAAkB,EAC9B,GAAG,EAAE,GAAG,IAAI,EAAE,EACd,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,IAAI,MAAM,qBACV,OAAO,GACvB,CACH,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"default-image.js","sourceRoot":"","sources":["../../src/adapters/default-image.tsx"],"names":[],"mappings":";AAaA;;GAEG;AACH,SAAS,OAAO,CAAC,KAAkC;IACjD,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,SAAS,CAAA;IACzC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,GAAG,KAAK,IAAI,CAAA;IAClD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAiB,CAAC,EAChD,GAAG,EACH,GAAG,EACH,KAAK,EACL,MAAM,EACN,OAAO,EACP,SAAS,EACT,WAAW,EACX,YAAY,EACZ,SAAS,EACT,KAAK,EACL,OAAO,GACW,EAAsB,EAAE;IAC1C,MAAM,aAAa,GAAwB;QACzC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,IAAI,MAAM;QAC/B,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM;QACjC,SAAS,EAAE,SAAS,IAAI,OAAO;QAC/B,WAAW;QACX,YAAY,EAAE,OAAO,CAAC,YAAY,CAAC;QACnC,GAAG,KAAK;KACT,CAAA;IAED,OAAO,CACL,cACE,EAAE,EAAE,OAAO,EACX,GAAG,EAAE,GAAG,IAAI,kBAAkB,EAC9B,GAAG,EAAE,GAAG,IAAI,EAAE,EACd,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,OAAO,IAAI,MAAM,qBACV,OAAO,GACvB,CACH,CAAA;AACH,CAAC,CAAA","sourcesContent":["/**\n * Default Image Adapter\n *\n * Renders images using native HTML img element.\n * This is the fallback adapter used when no framework-specific\n * adapter is provided.\n *\n * @module @pwfabric/runtime/adapters/default-image\n */\n\nimport * as React from 'react'\nimport type { ImageAdapter, ImageAdapterProps } from './types.js'\n\n/**\n * Convert CSS unit value to string\n */\nfunction cssUnit(value: number | string | undefined): string | undefined {\n if (value === undefined) return undefined\n if (typeof value === 'number') return `${value}px`\n return value\n}\n\n/**\n * Default image adapter using native img element\n *\n * Provides basic image rendering with CSS-based styling.\n * Supports lazy loading via the native loading attribute.\n *\n * @example\n * ```tsx\n * <SurfaceRenderer\n * surface={mySurface}\n * imageAdapter={DefaultImageAdapter}\n * />\n * ```\n */\nexport const DefaultImageAdapter: ImageAdapter = ({\n src,\n alt,\n width,\n height,\n loading,\n objectFit,\n aspectRatio,\n borderRadius,\n className,\n style,\n blockId,\n}: ImageAdapterProps): React.ReactElement => {\n const computedStyle: React.CSSProperties = {\n width: cssUnit(width) ?? '100%',\n height: cssUnit(height) ?? 'auto',\n objectFit: objectFit ?? 'cover',\n aspectRatio,\n borderRadius: cssUnit(borderRadius),\n ...style,\n }\n\n return (\n <img\n id={blockId}\n src={src || '/placeholder.png'}\n alt={alt ?? ''}\n style={computedStyle}\n className={className}\n loading={loading ?? 'lazy'}\n data-block-type=\"image\"\n />\n )\n}\n"]}
@@ -25,4 +25,3 @@
25
25
  export type { ImageAdapter, ImageAdapterProps } from './types.js';
26
26
  export { DefaultImageAdapter } from './default-image.js';
27
27
  export { NextImageAdapter } from './next-image.js';
28
- //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,WAAW;AACX,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/adapters/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAKH,WAAW;AACX,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAA","sourcesContent":["/**\n * Image Adapters\n *\n * Framework-specific image optimization adapters for SurfaceRenderer.\n * Enables Next.js Image, Astro Image, etc. while keeping surface\n * definitions framework-agnostic.\n *\n * @module @pwfabric/runtime/adapters\n *\n * @example\n * ```tsx\n * import { SurfaceRenderer } from '@pwfabric/runtime'\n * import { NextImageAdapter } from '@pwfabric/runtime/adapters'\n *\n * function MyPage() {\n * return (\n * <SurfaceRenderer\n * surface={mySurface}\n * imageAdapter={NextImageAdapter}\n * />\n * )\n * }\n * ```\n */\n\n// Types\nexport type { ImageAdapter, ImageAdapterProps } from './types.js'\n\n// Adapters\nexport { DefaultImageAdapter } from './default-image.js'\nexport { NextImageAdapter } from './next-image.js'\n"]}
@@ -36,4 +36,3 @@ import type { ImageAdapter } from './types.js';
36
36
  * ```
37
37
  */
38
38
  export declare const NextImageAdapter: ImageAdapter;
39
- //# sourceMappingURL=next-image.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"next-image.js","sourceRoot":"","sources":["../../src/adapters/next-image.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"next-image.js","sourceRoot":"","sources":["../../src/adapters/next-image.tsx"],"names":[],"mappings":"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","sourcesContent":["/**\n * Next.js Image Adapter\n *\n * Renders images using Next.js Image component for automatic\n * optimization, responsive images, and modern image formats.\n *\n * NOTE: This adapter requires `next` as a peer dependency.\n * Only import this adapter in Next.js applications.\n *\n * @module @pwfabric/runtime/adapters/next-image\n */\n\n'use client'\n\nimport * as React from 'react'\nimport type { ImageAdapter, ImageAdapterProps } from './types.js'\n\n// Interface for Next.js Image component props\ninterface NextImageComponentProps {\n src: string\n alt: string\n width?: number\n height?: number\n fill?: boolean\n priority?: boolean\n placeholder?: 'blur' | 'empty'\n blurDataURL?: string\n style?: React.CSSProperties\n className?: string\n id?: string\n}\n\n// Lazy load next/image component to avoid SSG issues\nlet NextImageComponent: React.ComponentType<NextImageComponentProps> | null = null\n\nfunction getNextImage(): React.ComponentType<NextImageComponentProps> {\n if (NextImageComponent === null) {\n // eslint-disable-next-line @typescript-eslint/no-require-imports\n NextImageComponent = require('next/image')\n .default as React.ComponentType<NextImageComponentProps>\n }\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return NextImageComponent!\n}\n\n/**\n * Convert CSS unit value to number if possible\n */\nfunction toNumericSize(value: number | string | undefined): number | undefined {\n if (value === undefined) return undefined\n if (typeof value === 'number') return value\n // Try to parse numeric strings (e.g., \"100\" or \"100px\")\n const parsed = parseInt(value, 10)\n return isNaN(parsed) ? undefined : parsed\n}\n\n/**\n * Convert CSS unit value to string\n */\nfunction cssUnit(value: number | string | undefined): string | undefined {\n if (value === undefined) return undefined\n if (typeof value === 'number') return `${value}px`\n return value\n}\n\n/**\n * Next.js Image adapter for optimized image delivery\n *\n * Leverages Next.js Image component features:\n * - Automatic image optimization\n * - Responsive image generation\n * - Modern format support (WebP, AVIF)\n * - Lazy loading with native browser support\n * - Priority loading for LCP images\n *\n * @example\n * ```tsx\n * import { SurfaceRenderer } from '@pwfabric/runtime'\n * import { NextImageAdapter } from '@pwfabric/runtime/adapters'\n *\n * function MyPage() {\n * return (\n * <SurfaceRenderer\n * surface={mySurface}\n * imageAdapter={NextImageAdapter}\n * />\n * )\n * }\n * ```\n */\nexport const NextImageAdapter: ImageAdapter = ({\n src,\n alt,\n width,\n height,\n loading,\n objectFit,\n aspectRatio,\n borderRadius,\n className,\n style,\n placeholder,\n blurDataURL,\n blockId,\n}: ImageAdapterProps): React.ReactElement => {\n const numericWidth = toNumericSize(width)\n const numericHeight = toNumericSize(height)\n\n // Use fill mode if no explicit dimensions provided\n const useFillMode = numericWidth === undefined && numericHeight === undefined\n\n const computedStyle: React.CSSProperties = {\n objectFit: objectFit ?? 'cover',\n aspectRatio,\n borderRadius: cssUnit(borderRadius),\n ...(numericWidth !== undefined && numericHeight !== undefined\n ? { width: `${numericWidth}px`, height: `${numericHeight}px`, maxWidth: '100%' }\n : {}),\n ...style,\n }\n\n // Wrapper style for fill mode\n const wrapperStyle: React.CSSProperties | undefined = useFillMode\n ? {\n position: 'relative',\n width: cssUnit(width) ?? '100%',\n height: cssUnit(height) ?? 'auto',\n aspectRatio: aspectRatio ?? (numericHeight && numericWidth ? undefined : '16/9'),\n }\n : undefined\n\n // Build NextImage props\n interface NextImagePropsType {\n src: string\n alt: string\n width?: number\n height?: number\n fill?: boolean\n priority?: boolean\n placeholder?: 'blur' | 'empty'\n blurDataURL?: string\n style?: React.CSSProperties\n className?: string\n id?: string\n }\n\n const nextImageProps: NextImagePropsType = {\n src: src || '/placeholder.png',\n alt: alt ?? '',\n fill: useFillMode,\n priority: loading === 'eager',\n style: computedStyle,\n }\n\n // Add optional props only if they have values\n if (blockId !== undefined) nextImageProps.id = blockId\n if (!useFillMode && numericWidth !== undefined) nextImageProps.width = numericWidth\n if (!useFillMode && numericHeight !== undefined) nextImageProps.height = numericHeight\n if (placeholder !== undefined) nextImageProps.placeholder = placeholder\n if (blurDataURL !== undefined) nextImageProps.blurDataURL = blurDataURL\n if (className !== undefined) nextImageProps.className = className\n\n const NextImage = getNextImage()\n const imageElement = React.createElement(NextImage, nextImageProps)\n\n // Wrap in container for fill mode\n if (useFillMode) {\n return (\n <div style={wrapperStyle} data-block-type=\"image\">\n {imageElement}\n </div>\n )\n }\n\n return imageElement\n}\n"]}
@@ -59,4 +59,3 @@ export interface ImageAdapterProps {
59
59
  * ```
60
60
  */
61
61
  export type ImageAdapter = ComponentType<ImageAdapterProps>;
62
- //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG","sourcesContent":["/**\n * Image Adapter Types\n *\n * Standardized interface for framework-specific image optimizations.\n * Enables Next.js Image, Astro Image, etc. while keeping surface\n * definitions framework-agnostic.\n *\n * @module @pwfabric/runtime/adapters/types\n */\n\nimport type { CSSProperties, ComponentType } from 'react'\n\n/**\n * Props passed to image adapter components\n *\n * These props are extracted from ImageBlock's block props and\n * normalized for adapter consumption. Adapters can use or ignore\n * specific props based on their framework capabilities.\n */\nexport interface ImageAdapterProps {\n /** Image source URL */\n readonly src: string\n /** Alt text for accessibility */\n readonly alt: string\n /** Image width (number for pixels, string for CSS units) */\n readonly width?: number | string\n /** Image height (number for pixels, string for CSS units) */\n readonly height?: number | string\n /** Loading strategy */\n readonly loading?: 'lazy' | 'eager'\n /** CSS object-fit property */\n readonly objectFit?: 'cover' | 'contain' | 'fill' | 'none' | 'scale-down'\n /** CSS aspect-ratio property */\n readonly aspectRatio?: string\n /** Border radius (number for pixels, string for CSS units) */\n readonly borderRadius?: number | string\n /** Additional CSS class names */\n readonly className?: string\n /** Inline styles */\n readonly style?: CSSProperties\n\n // Framework-specific hints (adapters may use these)\n\n /** Marks image as priority/above-the-fold (derived from loading === 'eager') */\n readonly priority?: boolean\n /** Placeholder type for blur-up effect */\n readonly placeholder?: 'blur' | 'empty'\n /** Base64 blur data URL for placeholder */\n readonly blurDataURL?: string\n /** Block ID for data attributes */\n readonly blockId?: string\n}\n\n/**\n * Image adapter component type\n *\n * Any React component that accepts ImageAdapterProps can be used\n * as an image adapter.\n *\n * @example\n * ```tsx\n * const MyAdapter: ImageAdapter = ({ src, alt, width, height }) => (\n * <img src={src} alt={alt} width={width} height={height} />\n * )\n * ```\n */\nexport type ImageAdapter = ComponentType<ImageAdapterProps>\n"]}
@@ -12,4 +12,3 @@
12
12
  */
13
13
  export type { AnalyticsEvent, PageViewEvent, InteractionEvent, InteractionType, AnalyticsAdapter, AnalyticsConfig, AnalyticsCapability, } from './types.js';
14
14
  export { DefaultAnalyticsCapability, InMemoryAnalyticsAdapter, createAnalyticsCapability, createInMemoryAdapter, } from './tracker.js';
15
- //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analytics/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAaH,kBAAkB;AAClB,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,cAAc,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/analytics/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAaH,kBAAkB;AAClB,OAAO,EACL,0BAA0B,EAC1B,wBAAwB,EACxB,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,cAAc,CAAA","sourcesContent":["/**\n * Analytics Capability Module\n *\n * Provider-agnostic event tracking via adapter pattern\n *\n * Exports:\n * - Types: AnalyticsEvent, PageViewEvent, InteractionEvent, AnalyticsAdapter, etc.\n * - Implementations: DefaultAnalyticsCapability, InMemoryAnalyticsAdapter\n * - Factory functions: createAnalyticsCapability, createInMemoryAdapter\n *\n * @module @pwfabric/runtime/analytics\n */\n\n// Types\nexport type {\n AnalyticsEvent,\n PageViewEvent,\n InteractionEvent,\n InteractionType,\n AnalyticsAdapter,\n AnalyticsConfig,\n AnalyticsCapability,\n} from './types.js'\n\n// Implementations\nexport {\n DefaultAnalyticsCapability,\n InMemoryAnalyticsAdapter,\n createAnalyticsCapability,\n createInMemoryAdapter,\n} from './tracker.js'\n"]}
@@ -63,4 +63,3 @@ export declare function createAnalyticsCapability(config?: AnalyticsConfig): Ana
63
63
  * Create an in-memory analytics adapter (for testing)
64
64
  */
65
65
  export declare function createInMemoryAdapter(name?: string): InMemoryAnalyticsAdapter;
66
- //# sourceMappingURL=tracker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/analytics/tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracker.js","sourceRoot":"","sources":["../../src/analytics/tracker.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Analytics Capability Implementation\n *\n * Provider-agnostic event tracking via adapter pattern\n *\n * @module @pwfabric/runtime/analytics/tracker\n */\n\nimport type {\n AnalyticsCapability,\n AnalyticsAdapter,\n AnalyticsEvent,\n PageViewEvent,\n InteractionEvent,\n AnalyticsConfig,\n} from './types.js'\n\n// ============================================================\n// DEFAULT ANALYTICS CAPABILITY\n// ============================================================\n\n/**\n * Default analytics capability implementation\n *\n * Dispatches events to all registered adapters. Supports\n * event buffering, global properties, and allow/deny lists.\n */\nexport class DefaultAnalyticsCapability implements AnalyticsCapability {\n private readonly adapters = new Map<string, AnalyticsAdapter>()\n private readonly buffer: AnalyticsEvent[] = []\n private readonly config: Required<AnalyticsConfig>\n private enabled: boolean\n\n constructor(config: AnalyticsConfig = {}) {\n this.enabled = config.enabled ?? true\n this.config = {\n enabled: this.enabled,\n bufferEvents: config.bufferEvents ?? false,\n maxBufferSize: config.maxBufferSize ?? 100,\n globalProperties: config.globalProperties ?? {},\n allowList: config.allowList ?? [],\n denyList: config.denyList ?? [],\n }\n }\n\n addAdapter(adapter: AnalyticsAdapter): void {\n if (this.adapters.has(adapter.name)) {\n throw new Error(`Analytics adapter '${adapter.name}' is already registered`)\n }\n this.adapters.set(adapter.name, adapter)\n }\n\n removeAdapter(name: string): boolean {\n return this.adapters.delete(name)\n }\n\n trackEvent(event: AnalyticsEvent): void {\n if (!this.enabled) return\n if (!this.isEventAllowed(event.name)) return\n\n const enriched = this.enrichEvent(event)\n\n if (this.config.bufferEvents) {\n this.buffer.push(enriched)\n if (this.buffer.length >= this.config.maxBufferSize) {\n void this.flush()\n }\n return\n }\n\n for (const adapter of this.adapters.values()) {\n try {\n adapter.trackEvent(enriched)\n } catch {\n // Swallow adapter errors to prevent one adapter from breaking others\n }\n }\n }\n\n trackPageView(event: PageViewEvent): void {\n if (!this.enabled) return\n\n const enriched: PageViewEvent = {\n ...event,\n timestamp: event.timestamp ?? Date.now(),\n properties: {\n ...this.config.globalProperties,\n ...event.properties,\n },\n }\n\n for (const adapter of this.adapters.values()) {\n try {\n adapter.trackPageView(enriched)\n } catch {\n // Swallow adapter errors\n }\n }\n }\n\n trackInteraction(event: InteractionEvent): void {\n if (!this.enabled) return\n\n const enriched: InteractionEvent = {\n ...event,\n timestamp: event.timestamp ?? Date.now(),\n }\n\n for (const adapter of this.adapters.values()) {\n try {\n adapter.trackInteraction(enriched)\n } catch {\n // Swallow adapter errors\n }\n }\n }\n\n identify(userId: string, traits?: Readonly<Record<string, unknown>>): void {\n for (const adapter of this.adapters.values()) {\n try {\n adapter.identify?.(userId, traits)\n } catch {\n // Swallow adapter errors\n }\n }\n }\n\n reset(): void {\n for (const adapter of this.adapters.values()) {\n try {\n adapter.reset?.()\n } catch {\n // Swallow adapter errors\n }\n }\n }\n\n async flush(): Promise<void> {\n // Flush buffered events\n const events = [...this.buffer]\n this.buffer.length = 0\n\n for (const event of events) {\n for (const adapter of this.adapters.values()) {\n try {\n adapter.trackEvent(event)\n } catch {\n // Swallow adapter errors\n }\n }\n }\n\n // Call flush on each adapter\n const flushPromises: Promise<void>[] = []\n for (const adapter of this.adapters.values()) {\n if (adapter.flush) {\n flushPromises.push(\n adapter.flush().catch(() => {\n // Swallow flush errors\n })\n )\n }\n }\n\n await Promise.all(flushPromises)\n }\n\n getAdapterNames(): readonly string[] {\n return Array.from(this.adapters.keys())\n }\n\n isEnabled(): boolean {\n return this.enabled\n }\n\n setEnabled(enabled: boolean): void {\n this.enabled = enabled\n }\n\n getBuffer(): readonly AnalyticsEvent[] {\n return [...this.buffer]\n }\n\n clear(): void {\n this.adapters.clear()\n this.buffer.length = 0\n }\n\n // ============================================================\n // PRIVATE METHODS\n // ============================================================\n\n private enrichEvent(event: AnalyticsEvent): AnalyticsEvent {\n return {\n ...event,\n timestamp: event.timestamp ?? Date.now(),\n properties: {\n ...this.config.globalProperties,\n ...event.properties,\n },\n }\n }\n\n private isEventAllowed(eventName: string): boolean {\n // Check deny list first\n if (this.config.denyList.length > 0 && this.config.denyList.includes(eventName)) {\n return false\n }\n\n // Check allow list (empty = allow all)\n if (this.config.allowList.length > 0 && !this.config.allowList.includes(eventName)) {\n return false\n }\n\n return true\n }\n}\n\n// ============================================================\n// IN-MEMORY ADAPTER (FOR TESTING)\n// ============================================================\n\n/**\n * In-memory analytics adapter for testing and debugging\n */\nexport class InMemoryAnalyticsAdapter implements AnalyticsAdapter {\n readonly name: string\n readonly events: AnalyticsEvent[] = []\n readonly pageViews: PageViewEvent[] = []\n readonly interactions: InteractionEvent[] = []\n private userId: string | undefined = undefined\n private userTraits: Readonly<Record<string, unknown>> | undefined = undefined\n\n constructor(name = 'in-memory') {\n this.name = name\n }\n\n trackEvent(event: AnalyticsEvent): void {\n this.events.push(event)\n }\n\n trackPageView(event: PageViewEvent): void {\n this.pageViews.push(event)\n }\n\n trackInteraction(event: InteractionEvent): void {\n this.interactions.push(event)\n }\n\n identify(userId: string, traits?: Readonly<Record<string, unknown>>): void {\n this.userId = userId\n this.userTraits = traits\n }\n\n reset(): void {\n this.userId = undefined\n this.userTraits = undefined\n }\n\n async flush(): Promise<void> {\n // No-op for in-memory adapter\n }\n\n getUserId(): string | undefined {\n return this.userId\n }\n\n getUserTraits(): Readonly<Record<string, unknown>> | undefined {\n return this.userTraits\n }\n\n clear(): void {\n this.events.length = 0\n this.pageViews.length = 0\n this.interactions.length = 0\n this.userId = undefined\n this.userTraits = undefined\n }\n}\n\n// ============================================================\n// FACTORY FUNCTION\n// ============================================================\n\n/**\n * Create an analytics capability instance\n */\nexport function createAnalyticsCapability(config?: AnalyticsConfig): AnalyticsCapability {\n return new DefaultAnalyticsCapability(config)\n}\n\n/**\n * Create an in-memory analytics adapter (for testing)\n */\nexport function createInMemoryAdapter(name?: string): InMemoryAnalyticsAdapter {\n return new InMemoryAnalyticsAdapter(name)\n}\n"]}
@@ -128,4 +128,3 @@ export interface AnalyticsCapability {
128
128
  /** Clear all adapters and state */
129
129
  clear(): void;
130
130
  }
131
- //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/analytics/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/analytics/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG","sourcesContent":["/**\n * Analytics Capability Types\n *\n * Event tracking, page views, and user interaction tracking\n *\n * Provider-agnostic via adapter pattern (GA, Mixpanel, etc.)\n *\n * @module @pwfabric/runtime/analytics/types\n */\n\n// ============================================================\n// ANALYTICS EVENTS\n// ============================================================\n\n/**\n * Analytics event\n */\nexport interface AnalyticsEvent {\n /** Event name/action */\n readonly name: string\n\n /** Event category */\n readonly category?: string\n\n /** Event label for further classification */\n readonly label?: string\n\n /** Numeric value associated with the event */\n readonly value?: number\n\n /** Additional event properties */\n readonly properties?: Readonly<Record<string, unknown>>\n\n /** Timestamp (defaults to Date.now()) */\n readonly timestamp?: number\n}\n\n/**\n * Page view event\n */\nexport interface PageViewEvent {\n /** Page path */\n readonly path: string\n\n /** Page title */\n readonly title?: string\n\n /** Referrer URL */\n readonly referrer?: string\n\n /** Additional page properties */\n readonly properties?: Readonly<Record<string, unknown>>\n\n /** Timestamp */\n readonly timestamp?: number\n}\n\n/**\n * User interaction event\n */\nexport interface InteractionEvent {\n /** Type of interaction */\n readonly type: InteractionType\n\n /** Target element or component identifier */\n readonly target: string\n\n /** Additional interaction data */\n readonly data?: Readonly<Record<string, unknown>>\n\n /** Timestamp */\n readonly timestamp?: number\n}\n\n/**\n * Supported interaction types\n */\nexport type InteractionType =\n | 'click'\n | 'submit'\n | 'scroll'\n | 'focus'\n | 'blur'\n | 'hover'\n | 'drag'\n | 'resize'\n | 'custom'\n\n// ============================================================\n// ANALYTICS ADAPTER (PROVIDER PATTERN)\n// ============================================================\n\n/**\n * Analytics adapter interface for provider integration\n *\n * Implement this interface to connect to a specific analytics\n * provider (Google Analytics, Mixpanel, Amplitude, etc.)\n */\nexport interface AnalyticsAdapter {\n /** Adapter identifier */\n readonly name: string\n\n /** Initialize the adapter */\n initialize?(config: Readonly<Record<string, unknown>>): void | Promise<void>\n\n /** Track a custom event */\n trackEvent(event: AnalyticsEvent): void\n\n /** Track a page view */\n trackPageView(event: PageViewEvent): void\n\n /** Track a user interaction */\n trackInteraction(event: InteractionEvent): void\n\n /** Set user identity */\n identify?(userId: string, traits?: Readonly<Record<string, unknown>>): void\n\n /** Reset/clear user identity */\n reset?(): void\n\n /** Flush any buffered events */\n flush?(): Promise<void>\n}\n\n// ============================================================\n// ANALYTICS CONFIGURATION\n// ============================================================\n\n/**\n * Analytics capability configuration\n */\nexport interface AnalyticsConfig {\n /** Whether analytics is enabled */\n readonly enabled?: boolean\n\n /** Whether to buffer events before sending */\n readonly bufferEvents?: boolean\n\n /** Maximum buffer size before auto-flush */\n readonly maxBufferSize?: number\n\n /** Global properties to attach to all events */\n readonly globalProperties?: Readonly<Record<string, unknown>>\n\n /** Event name filter (only track matching events) */\n readonly allowList?: readonly string[]\n\n /** Event name filter (exclude matching events) */\n readonly denyList?: readonly string[]\n}\n\n// ============================================================\n// ANALYTICS CAPABILITY INTERFACE\n// ============================================================\n\n/**\n * Analytics capability interface\n */\nexport interface AnalyticsCapability {\n /** Register an analytics adapter (provider) */\n addAdapter(adapter: AnalyticsAdapter): void\n\n /** Remove an adapter by name */\n removeAdapter(name: string): boolean\n\n /** Track a custom event */\n trackEvent(event: AnalyticsEvent): void\n\n /** Track a page view */\n trackPageView(event: PageViewEvent): void\n\n /** Track a user interaction */\n trackInteraction(event: InteractionEvent): void\n\n /** Set user identity across all adapters */\n identify(userId: string, traits?: Readonly<Record<string, unknown>>): void\n\n /** Reset identity across all adapters */\n reset(): void\n\n /** Flush all buffered events */\n flush(): Promise<void>\n\n /** Get registered adapter names */\n getAdapterNames(): readonly string[]\n\n /** Check if analytics is enabled */\n isEnabled(): boolean\n\n /** Enable or disable analytics */\n setEnabled(enabled: boolean): void\n\n /** Get buffered events (if buffering is enabled) */\n getBuffer(): readonly AnalyticsEvent[]\n\n /** Clear all adapters and state */\n clear(): void\n}\n"]}
@@ -13,4 +13,3 @@
13
13
  export type { AuthProviderType, AuthState, UserIdentity, AuthToken, AuthSession, AuthProviderConfig, MsalConfig, OAuth2Config, ApiKeyConfig, AuthResult, TokenResult, AuthError, } from './types.js';
14
14
  export type { AuthProvider, LoginOptions } from './provider.js';
15
15
  export { MsalAuthProvider, ApiKeyAuthProvider, createAuthProvider } from './provider.js';
16
- //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAoBH,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAoBH,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAA","sourcesContent":["/**\n * Authentication Module\n *\n * Authentication provider interface + implementations (MSAL/API-key).\n *\n * RBAC, session management and SSO (OIDC/SAML) are not part of this module:\n * they belong to the host that serves the app. Keeping them here would also\n * ship Node-only code (SAML's `node:util`/`node:zlib` XML parsing) inside\n * the browser-facing `embed.js` IIFE.\n *\n * @module @pwfabric/runtime/auth\n */\n\n// Types\nexport type {\n AuthProviderType,\n AuthState,\n UserIdentity,\n AuthToken,\n AuthSession,\n AuthProviderConfig,\n MsalConfig,\n OAuth2Config,\n ApiKeyConfig,\n AuthResult,\n TokenResult,\n AuthError,\n} from './types.js'\n\n// Provider\nexport type { AuthProvider, LoginOptions } from './provider.js'\nexport { MsalAuthProvider, ApiKeyAuthProvider, createAuthProvider } from './provider.js'\n"]}
@@ -130,4 +130,3 @@ export declare class ApiKeyAuthProvider implements AuthProvider {
130
130
  * Create an authentication provider
131
131
  */
132
132
  export declare function createAuthProvider(config: AuthProviderConfig): AuthProvider;
133
- //# sourceMappingURL=provider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/auth/provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider.js","sourceRoot":"","sources":["../../src/auth/provider.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Authentication Provider\n *\n * Authentication provider interface and implementations\n *\n * @module @pwfabric/runtime/auth/provider\n */\n\nimport type {\n AuthProviderType,\n AuthProviderConfig,\n MsalConfig,\n OAuth2Config,\n ApiKeyConfig,\n AuthSession,\n AuthResult,\n TokenResult,\n AuthToken,\n UserIdentity,\n} from './types.js'\n\n// ============================================================\n// AUTH PROVIDER INTERFACE\n// ============================================================\n\n/**\n * Authentication provider interface\n */\nexport interface AuthProvider {\n readonly type: AuthProviderType\n readonly config: AuthProviderConfig\n\n /**\n * Initialize the provider\n */\n initialize(): Promise<void>\n\n /**\n * Start authentication flow\n */\n login(options?: LoginOptions): Promise<AuthResult>\n\n /**\n * End authentication session\n */\n logout(): Promise<void>\n\n /**\n * Get current session\n */\n getSession(): AuthSession | undefined\n\n /**\n * Acquire token silently\n */\n acquireTokenSilent(scopes?: readonly string[]): Promise<TokenResult>\n\n /**\n * Check if authenticated\n */\n isAuthenticated(): boolean\n\n /**\n * Get current user\n */\n getUser(): UserIdentity | undefined\n}\n\n/**\n * Login options\n */\nexport interface LoginOptions {\n readonly scopes?: readonly string[]\n readonly prompt?: 'login' | 'consent' | 'select_account' | 'none'\n readonly loginHint?: string\n}\n\n// ============================================================\n// MSAL AUTH PROVIDER (Stub)\n// ============================================================\n\n/**\n * MSAL authentication provider\n *\n * Note: This is a stub implementation. In production, this would\n * integrate with @azure/msal-browser or @azure/msal-node.\n */\nexport class MsalAuthProvider implements AuthProvider {\n readonly type: AuthProviderType = 'msal'\n readonly config: MsalConfig\n\n private session: AuthSession | undefined\n private initialized = false\n\n constructor(config: MsalConfig) {\n this.config = config\n }\n\n async initialize(): Promise<void> {\n // In production: Initialize MSAL instance\n this.initialized = true\n }\n\n async login(options?: LoginOptions): Promise<AuthResult> {\n if (!this.initialized) {\n return {\n success: false,\n error: {\n type: 'invalid_config',\n message: 'Provider not initialized',\n },\n }\n }\n\n // Stub: Create mock session\n const scopes = options?.scopes ?? this.config.scopes\n const token: AuthToken = {\n accessToken: 'mock_access_token',\n idToken: 'mock_id_token',\n expiresAt: Date.now() + 3600000, // 1 hour\n scopes,\n }\n\n const user: UserIdentity = {\n id: 'mock_user_id',\n name: 'Mock User',\n email: 'mock@example.com',\n ...(this.config.worldId !== undefined ? { worldId: this.config.worldId } : {}),\n }\n\n this.session = {\n id: `session_${Date.now()}`,\n state: 'authenticated',\n user,\n token,\n provider: 'msal',\n createdAt: Date.now(),\n expiresAt: token.expiresAt,\n }\n\n return { success: true, session: this.session }\n }\n\n async logout(): Promise<void> {\n this.session = undefined\n }\n\n getSession(): AuthSession | undefined {\n return this.session\n }\n\n async acquireTokenSilent(_scopes?: readonly string[]): Promise<TokenResult> {\n if (!this.session?.token) {\n return {\n success: false,\n error: {\n type: 'token_expired',\n message: 'No active session',\n },\n }\n }\n\n // Check if token is expired\n if (this.session.token.expiresAt < Date.now()) {\n return {\n success: false,\n error: {\n type: 'token_expired',\n message: 'Token has expired',\n },\n }\n }\n\n return { success: true, token: this.session.token }\n }\n\n isAuthenticated(): boolean {\n return this.session?.state === 'authenticated'\n }\n\n getUser(): UserIdentity | undefined {\n return this.session?.user\n }\n}\n\n// ============================================================\n// OAUTH2 PKCE AUTH PROVIDER\n// ============================================================\n\n/**\n * Generate a cryptographically random code verifier for PKCE\n */\nfunction generateCodeVerifier(): string {\n const buffer = new Uint8Array(32)\n crypto.getRandomValues(buffer)\n return Array.from(buffer, (b) => b.toString(16).padStart(2, '0')).join('')\n}\n\n/**\n * Generate a code challenge from a code verifier (S256 method)\n */\nasync function generateCodeChallenge(verifier: string): Promise<string> {\n const encoder = new TextEncoder()\n const data = encoder.encode(verifier)\n const digest = await crypto.subtle.digest('SHA-256', data)\n return btoa(String.fromCharCode(...new Uint8Array(digest)))\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/=+$/, '')\n}\n\n/**\n * OAuth2 PKCE authentication provider\n *\n * Implements the Authorization Code flow with PKCE (RFC 7636)\n * for secure authentication without client secrets.\n */\nexport class OAuth2PkceAuthProvider implements AuthProvider {\n readonly type: AuthProviderType = 'oauth2'\n readonly config: OAuth2Config\n\n private session: AuthSession | undefined\n private codeVerifier: string | undefined\n private initialized = false\n\n constructor(config: OAuth2Config) {\n this.config = config\n }\n\n async initialize(): Promise<void> {\n this.initialized = true\n }\n\n async login(options?: LoginOptions): Promise<AuthResult> {\n if (!this.initialized) {\n return {\n success: false,\n error: { type: 'invalid_config', message: 'Provider not initialized' },\n }\n }\n\n try {\n // Step 1: Generate PKCE code verifier and challenge\n this.codeVerifier = generateCodeVerifier()\n const codeChallenge = await generateCodeChallenge(this.codeVerifier)\n const state = generateCodeVerifier().slice(0, 32)\n\n const scopes = options?.scopes ?? this.config.scopes\n\n // Step 2: Build authorization URL\n const authUrl = new URL(this.config.authorizationEndpoint)\n authUrl.searchParams.set('response_type', 'code')\n authUrl.searchParams.set('client_id', this.config.clientId)\n authUrl.searchParams.set('redirect_uri', this.config.redirectUri)\n authUrl.searchParams.set('scope', scopes.join(' '))\n authUrl.searchParams.set('state', state)\n authUrl.searchParams.set('code_challenge', codeChallenge)\n authUrl.searchParams.set('code_challenge_method', 'S256')\n\n if (options?.prompt) {\n authUrl.searchParams.set('prompt', options.prompt)\n }\n if (options?.loginHint) {\n authUrl.searchParams.set('login_hint', options.loginHint)\n }\n\n // Step 3: Return the authorization URL for the caller to open\n // In browser context, this would redirect. In CLI, the caller\n // starts a local server to capture the callback.\n return {\n success: false,\n error: {\n type: 'provider_error',\n message: 'PKCE_REDIRECT_REQUIRED',\n code: authUrl.toString(),\n },\n }\n } catch (error) {\n return {\n success: false,\n error: {\n type: 'provider_error',\n message: error instanceof Error ? error.message : 'OAuth2 login failed',\n cause: error,\n },\n }\n }\n }\n\n /**\n * Exchange authorization code for tokens (PKCE Step 2)\n *\n * Called after the user completes the OAuth flow and the authorization\n * code is received via the redirect URI.\n */\n async exchangeCode(code: string): Promise<AuthResult> {\n if (!this.codeVerifier) {\n return {\n success: false,\n error: { type: 'invalid_config', message: 'No PKCE flow in progress. Call login() first.' },\n }\n }\n\n try {\n const response = await fetch(this.config.tokenEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: new URLSearchParams({\n grant_type: 'authorization_code',\n code,\n redirect_uri: this.config.redirectUri,\n client_id: this.config.clientId,\n code_verifier: this.codeVerifier,\n }),\n })\n\n if (!response.ok) {\n const errorBody = await response.text()\n return {\n success: false,\n error: {\n type: 'provider_error',\n message: `Token exchange failed: ${response.status}`,\n code: errorBody,\n },\n }\n }\n\n const tokenData = (await response.json()) as {\n access_token: string\n refresh_token?: string\n id_token?: string\n expires_in: number\n scope?: string\n }\n\n const token: AuthToken = {\n accessToken: tokenData.access_token,\n ...(tokenData.refresh_token !== undefined ? { refreshToken: tokenData.refresh_token } : {}),\n ...(tokenData.id_token !== undefined ? { idToken: tokenData.id_token } : {}),\n expiresAt: Date.now() + tokenData.expires_in * 1000,\n scopes: tokenData.scope?.split(' ') ?? this.config.scopes,\n }\n\n // Decode user info from ID token or access token claims\n const user = this.decodeUserFromToken(token)\n\n this.session = {\n id: `session_${Date.now()}`,\n state: 'authenticated',\n ...(user !== undefined ? { user } : {}),\n token,\n provider: 'oauth2',\n createdAt: Date.now(),\n expiresAt: token.expiresAt,\n }\n\n // Clear the code verifier after successful exchange\n this.codeVerifier = undefined\n\n return { success: true, session: this.session }\n } catch (error) {\n return {\n success: false,\n error: {\n type: 'network_error',\n message: error instanceof Error ? error.message : 'Token exchange failed',\n cause: error,\n },\n }\n }\n }\n\n async logout(): Promise<void> {\n this.session = undefined\n this.codeVerifier = undefined\n }\n\n getSession(): AuthSession | undefined {\n return this.session\n }\n\n async acquireTokenSilent(_scopes?: readonly string[]): Promise<TokenResult> {\n if (!this.session?.token) {\n return {\n success: false,\n error: { type: 'token_expired', message: 'No active session' },\n }\n }\n\n // Check if token is expired\n if (this.session.token.expiresAt < Date.now()) {\n // Try refresh if refresh token available\n if (this.session.token.refreshToken) {\n return this.refreshToken(this.session.token.refreshToken)\n }\n return {\n success: false,\n error: {\n type: 'token_expired',\n message: 'Token has expired and no refresh token available',\n },\n }\n }\n\n return { success: true, token: this.session.token }\n }\n\n isAuthenticated(): boolean {\n if (this.session?.state !== 'authenticated') return false\n if (this.session.token && this.session.token.expiresAt < Date.now()) return false\n return true\n }\n\n getUser(): UserIdentity | undefined {\n return this.session?.user\n }\n\n /**\n * Refresh the access token using a refresh token\n */\n private async refreshToken(refreshToken: string): Promise<TokenResult> {\n try {\n const response = await fetch(this.config.tokenEndpoint, {\n method: 'POST',\n headers: { 'Content-Type': 'application/x-www-form-urlencoded' },\n body: new URLSearchParams({\n grant_type: 'refresh_token',\n refresh_token: refreshToken,\n client_id: this.config.clientId,\n }),\n })\n\n if (!response.ok) {\n return {\n success: false,\n error: { type: 'token_expired', message: `Refresh failed: ${response.status}` },\n }\n }\n\n const tokenData = (await response.json()) as {\n access_token: string\n refresh_token?: string\n id_token?: string\n expires_in: number\n scope?: string\n }\n\n const newRefreshToken = tokenData.refresh_token ?? refreshToken\n const token: AuthToken = {\n accessToken: tokenData.access_token,\n refreshToken: newRefreshToken,\n ...(tokenData.id_token !== undefined ? { idToken: tokenData.id_token } : {}),\n expiresAt: Date.now() + tokenData.expires_in * 1000,\n scopes: tokenData.scope?.split(' ') ?? this.config.scopes,\n }\n\n // Update session with new token\n const user = this.decodeUserFromToken(token) ?? this.session?.user\n this.session = {\n id: this.session?.id ?? `session_${Date.now()}`,\n state: 'authenticated',\n ...(user !== undefined ? { user } : {}),\n token,\n provider: 'oauth2',\n createdAt: this.session?.createdAt ?? Date.now(),\n expiresAt: token.expiresAt,\n }\n\n return { success: true, token }\n } catch (error) {\n return {\n success: false,\n error: {\n type: 'network_error',\n message: error instanceof Error ? error.message : 'Token refresh failed',\n cause: error,\n },\n }\n }\n }\n\n /**\n * Decode user identity from JWT token claims\n */\n private decodeUserFromToken(token: AuthToken): UserIdentity | undefined {\n const jwtToDecode = token.idToken ?? token.accessToken\n try {\n const parts = jwtToDecode.split('.')\n if (parts.length !== 3) return undefined\n\n const encodedPayload = parts[1]\n if (!encodedPayload) return undefined\n const payload = JSON.parse(atob(encodedPayload.replace(/-/g, '+').replace(/_/g, '/'))) as {\n sub?: string\n name?: string\n email?: string\n wid?: string\n roles?: string[]\n }\n\n return {\n id: payload.sub ?? 'unknown',\n ...(payload.name !== undefined ? { name: payload.name } : {}),\n ...(payload.email !== undefined ? { email: payload.email } : {}),\n ...(payload.wid !== undefined ? { worldId: payload.wid } : {}),\n ...(payload.roles !== undefined ? { roles: payload.roles } : {}),\n }\n } catch {\n return undefined\n }\n }\n}\n\n// ============================================================\n// API KEY AUTH PROVIDER\n// ============================================================\n\n/**\n * API Key authentication provider\n */\nexport class ApiKeyAuthProvider implements AuthProvider {\n readonly type: AuthProviderType = 'api-key'\n readonly config: ApiKeyConfig\n\n private session: AuthSession | undefined\n private apiKey: string | undefined\n\n constructor(config: ApiKeyConfig) {\n this.config = config\n }\n\n async initialize(): Promise<void> {\n // No initialization needed\n }\n\n async login(_options?: LoginOptions): Promise<AuthResult> {\n // API key auth doesn't have a login flow\n // The key is typically set via setApiKey()\n if (!this.apiKey) {\n return {\n success: false,\n error: {\n type: 'invalid_credentials',\n message: 'API key not set',\n },\n }\n }\n\n const token: AuthToken = {\n accessToken: this.apiKey,\n expiresAt: Date.now() + 86400000, // 24 hours\n scopes: [],\n }\n\n this.session = {\n id: `session_${Date.now()}`,\n state: 'authenticated',\n token,\n provider: 'api-key',\n createdAt: Date.now(),\n }\n\n return { success: true, session: this.session }\n }\n\n async logout(): Promise<void> {\n this.session = undefined\n this.apiKey = undefined\n }\n\n getSession(): AuthSession | undefined {\n return this.session\n }\n\n async acquireTokenSilent(): Promise<TokenResult> {\n if (!this.session?.token) {\n return {\n success: false,\n error: {\n type: 'token_expired',\n message: 'No active session',\n },\n }\n }\n\n return { success: true, token: this.session.token }\n }\n\n isAuthenticated(): boolean {\n return this.session?.state === 'authenticated'\n }\n\n getUser(): UserIdentity | undefined {\n return undefined // API key auth typically doesn't have user identity\n }\n\n /**\n * Set the API key\n */\n setApiKey(key: string): void {\n this.apiKey = key\n }\n}\n\n// ============================================================\n// AUTH PROVIDER FACTORY\n// ============================================================\n\n/**\n * Create an authentication provider\n */\nexport function createAuthProvider(config: AuthProviderConfig): AuthProvider {\n switch (config.type) {\n case 'msal':\n return new MsalAuthProvider(config as MsalConfig)\n case 'oauth2':\n return new OAuth2PkceAuthProvider(config as OAuth2Config)\n case 'api-key':\n return new ApiKeyAuthProvider(config as ApiKeyConfig)\n default:\n throw new Error(`Unknown auth provider type: ${config.type}`)\n }\n}\n"]}
@@ -115,4 +115,3 @@ export interface AuthError {
115
115
  readonly code?: string;
116
116
  readonly cause?: unknown;
117
117
  }
118
- //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/auth/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG","sourcesContent":["/**\n * Authentication Types\n *\n * Authentication system types\n *\n * @module @pwfabric/runtime/auth/types\n */\n\n// ============================================================\n// AUTH PROVIDER TYPES\n// ============================================================\n\n/**\n * Authentication provider type\n */\nexport type AuthProviderType = 'msal' | 'oauth2' | 'api-key' | 'custom'\n\n/**\n * Authentication state\n */\nexport type AuthState = 'unauthenticated' | 'authenticating' | 'authenticated' | 'error' | 'expired'\n\n/**\n * User identity\n */\nexport interface UserIdentity {\n readonly id: string\n readonly name?: string\n readonly email?: string\n readonly worldId?: string\n readonly roles?: readonly string[]\n readonly claims?: Record<string, unknown>\n}\n\n/**\n * Authentication token\n */\nexport interface AuthToken {\n readonly accessToken: string\n readonly refreshToken?: string\n readonly idToken?: string\n readonly expiresAt: number\n readonly scopes: readonly string[]\n}\n\n/**\n * Authentication session\n */\nexport interface AuthSession {\n readonly id: string\n readonly state: AuthState\n readonly user?: UserIdentity\n readonly token?: AuthToken\n readonly provider: AuthProviderType\n readonly createdAt: number\n readonly expiresAt?: number\n}\n\n// ============================================================\n// AUTH CONFIGURATION\n// ============================================================\n\n/**\n * Base auth provider configuration\n */\nexport interface AuthProviderConfig {\n readonly type: AuthProviderType\n readonly clientId?: string\n readonly authority?: string\n readonly scopes?: readonly string[]\n readonly redirectUri?: string\n}\n\n/**\n * MSAL configuration\n */\nexport interface MsalConfig extends AuthProviderConfig {\n readonly type: 'msal'\n readonly clientId: string\n readonly authority: string\n readonly scopes: readonly string[]\n readonly redirectUri: string\n readonly worldId?: string\n}\n\n/**\n * OAuth2 configuration\n */\nexport interface OAuth2Config extends AuthProviderConfig {\n readonly type: 'oauth2'\n readonly authorizationEndpoint: string\n readonly tokenEndpoint: string\n readonly clientId: string\n readonly scopes: readonly string[]\n readonly redirectUri: string\n}\n\n/**\n * API Key configuration\n */\nexport interface ApiKeyConfig extends AuthProviderConfig {\n readonly type: 'api-key'\n readonly headerName: string\n readonly keyPrefix?: string\n}\n\n// ============================================================\n// AUTH RESULT TYPES\n// ============================================================\n\n/**\n * Authentication result\n */\nexport type AuthResult =\n | { readonly success: true; readonly session: AuthSession }\n | { readonly success: false; readonly error: AuthError }\n\n/**\n * Token acquisition result\n */\nexport type TokenResult =\n | { readonly success: true; readonly token: AuthToken }\n | { readonly success: false; readonly error: AuthError }\n\n/**\n * Authentication error\n */\nexport interface AuthError {\n readonly type:\n | 'invalid_config'\n | 'network_error'\n | 'invalid_credentials'\n | 'token_expired'\n | 'insufficient_scope'\n | 'provider_error'\n readonly message: string\n readonly code?: string\n readonly cause?: unknown\n}\n\n"]}
@@ -188,4 +188,3 @@ export declare function createReadOnlyCollection<T>(items: readonly T[], keyFiel
188
188
  * Create a collection from an async iterable
189
189
  */
190
190
  export declare function createCollectionFromAsync<T>(asyncIterable: AsyncIterable<T>, keyField?: string): Promise<MutableCollectionBinding<T>>;
191
- //# sourceMappingURL=collection.d.ts.map