@pwfabric/runtime 0.0.0-stage → 1.0.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (603) hide show
  1. package/LICENSE +90 -0
  2. package/README.md +13 -2
  3. package/dist/__tests__/dom-test-setup.d.ts +21 -0
  4. package/dist/__tests__/dom-test-setup.d.ts.map +1 -0
  5. package/dist/__tests__/dom-test-setup.js +36 -0
  6. package/dist/__tests__/dom-test-setup.js.map +1 -0
  7. package/dist/a11y/announcer.d.ts +66 -0
  8. package/dist/a11y/announcer.d.ts.map +1 -0
  9. package/dist/a11y/announcer.js +140 -0
  10. package/dist/a11y/announcer.js.map +1 -0
  11. package/dist/a11y/contrast.d.ts +55 -0
  12. package/dist/a11y/contrast.d.ts.map +1 -0
  13. package/dist/a11y/contrast.js +93 -0
  14. package/dist/a11y/contrast.js.map +1 -0
  15. package/dist/a11y/focus.d.ts +124 -0
  16. package/dist/a11y/focus.d.ts.map +1 -0
  17. package/dist/a11y/focus.js +282 -0
  18. package/dist/a11y/focus.js.map +1 -0
  19. package/dist/a11y/index.d.ts +22 -0
  20. package/dist/a11y/index.d.ts.map +1 -0
  21. package/dist/a11y/index.js +18 -0
  22. package/dist/a11y/index.js.map +1 -0
  23. package/dist/a11y/keyboard.d.ts +145 -0
  24. package/dist/a11y/keyboard.d.ts.map +1 -0
  25. package/dist/a11y/keyboard.js +317 -0
  26. package/dist/a11y/keyboard.js.map +1 -0
  27. package/dist/adapters/default-image.d.ts +26 -0
  28. package/dist/adapters/default-image.d.ts.map +1 -0
  29. package/dist/adapters/default-image.js +37 -0
  30. package/dist/adapters/default-image.js.map +1 -0
  31. package/dist/adapters/index.d.ts +28 -0
  32. package/dist/adapters/index.d.ts.map +1 -0
  33. package/dist/adapters/index.js +28 -0
  34. package/dist/adapters/index.js.map +1 -0
  35. package/dist/adapters/next-image.d.ts +39 -0
  36. package/dist/adapters/next-image.d.ts.map +1 -0
  37. package/dist/adapters/next-image.js +124 -0
  38. package/dist/adapters/next-image.js.map +1 -0
  39. package/dist/adapters/types.d.ts +62 -0
  40. package/dist/adapters/types.d.ts.map +1 -0
  41. package/dist/adapters/types.js +11 -0
  42. package/dist/adapters/types.js.map +1 -0
  43. package/dist/analytics/index.d.ts +15 -0
  44. package/dist/analytics/index.d.ts.map +1 -0
  45. package/dist/analytics/index.js +15 -0
  46. package/dist/analytics/index.js.map +1 -0
  47. package/dist/analytics/tracker.d.ts +66 -0
  48. package/dist/analytics/tracker.d.ts.map +1 -0
  49. package/dist/analytics/tracker.js +251 -0
  50. package/dist/analytics/tracker.js.map +1 -0
  51. package/dist/analytics/types.d.ts +131 -0
  52. package/dist/analytics/types.d.ts.map +1 -0
  53. package/dist/analytics/types.js +11 -0
  54. package/dist/analytics/types.js.map +1 -0
  55. package/dist/auth/index.d.ts +16 -0
  56. package/dist/auth/index.d.ts.map +1 -0
  57. package/dist/auth/index.js +14 -0
  58. package/dist/auth/index.js.map +1 -0
  59. package/dist/auth/provider.d.ts +133 -0
  60. package/dist/auth/provider.d.ts.map +1 -0
  61. package/dist/auth/provider.js +473 -0
  62. package/dist/auth/provider.js.map +1 -0
  63. package/dist/auth/types.d.ts +118 -0
  64. package/dist/auth/types.d.ts.map +1 -0
  65. package/dist/auth/types.js +9 -0
  66. package/dist/auth/types.js.map +1 -0
  67. package/dist/binding/collection.d.ts +191 -0
  68. package/dist/binding/collection.d.ts.map +1 -0
  69. package/dist/binding/collection.js +358 -0
  70. package/dist/binding/collection.js.map +1 -0
  71. package/dist/binding/datasource.d.ts +320 -0
  72. package/dist/binding/datasource.d.ts.map +1 -0
  73. package/dist/binding/datasource.js +556 -0
  74. package/dist/binding/datasource.js.map +1 -0
  75. package/dist/binding/engine.d.ts +66 -0
  76. package/dist/binding/engine.d.ts.map +1 -0
  77. package/dist/binding/engine.js +268 -0
  78. package/dist/binding/engine.js.map +1 -0
  79. package/dist/binding/expression.d.ts +151 -0
  80. package/dist/binding/expression.d.ts.map +1 -0
  81. package/dist/binding/expression.js +787 -0
  82. package/dist/binding/expression.js.map +1 -0
  83. package/dist/binding/index.d.ts +20 -0
  84. package/dist/binding/index.d.ts.map +1 -0
  85. package/dist/binding/index.js +14 -0
  86. package/dist/binding/index.js.map +1 -0
  87. package/dist/binding/two-way.d.ts +150 -0
  88. package/dist/binding/two-way.d.ts.map +1 -0
  89. package/dist/binding/two-way.js +462 -0
  90. package/dist/binding/two-way.js.map +1 -0
  91. package/dist/binding/types.d.ts +120 -0
  92. package/dist/binding/types.d.ts.map +1 -0
  93. package/dist/binding/types.js +9 -0
  94. package/dist/binding/types.js.map +1 -0
  95. package/dist/blocks/__test-fixtures__/block-fixtures.d.ts +40 -0
  96. package/dist/blocks/__test-fixtures__/block-fixtures.d.ts.map +1 -0
  97. package/dist/blocks/__test-fixtures__/block-fixtures.js +506 -0
  98. package/dist/blocks/__test-fixtures__/block-fixtures.js.map +1 -0
  99. package/dist/blocks/component-types.d.ts +82 -0
  100. package/dist/blocks/component-types.d.ts.map +1 -0
  101. package/dist/blocks/component-types.js +11 -0
  102. package/dist/blocks/component-types.js.map +1 -0
  103. package/dist/blocks/composition-rules.d.ts +169 -0
  104. package/dist/blocks/composition-rules.d.ts.map +1 -0
  105. package/dist/blocks/composition-rules.js +391 -0
  106. package/dist/blocks/composition-rules.js.map +1 -0
  107. package/dist/blocks/hooks.d.ts +32 -0
  108. package/dist/blocks/hooks.d.ts.map +1 -0
  109. package/dist/blocks/hooks.js +42 -0
  110. package/dist/blocks/hooks.js.map +1 -0
  111. package/dist/blocks/index.d.ts +16 -0
  112. package/dist/blocks/index.d.ts.map +1 -0
  113. package/dist/blocks/index.js +24 -0
  114. package/dist/blocks/index.js.map +1 -0
  115. package/dist/blocks/registry.d.ts +85 -0
  116. package/dist/blocks/registry.d.ts.map +1 -0
  117. package/dist/blocks/registry.js +136 -0
  118. package/dist/blocks/registry.js.map +1 -0
  119. package/dist/blocks/rule-engine.d.ts +132 -0
  120. package/dist/blocks/rule-engine.d.ts.map +1 -0
  121. package/dist/blocks/rule-engine.js +321 -0
  122. package/dist/blocks/rule-engine.js.map +1 -0
  123. package/dist/blocks/surface-event-context.d.ts +14 -0
  124. package/dist/blocks/surface-event-context.d.ts.map +1 -0
  125. package/dist/blocks/surface-event-context.js +14 -0
  126. package/dist/blocks/surface-event-context.js.map +1 -0
  127. package/dist/blocks/surface-id-context.d.ts +14 -0
  128. package/dist/blocks/surface-id-context.d.ts.map +1 -0
  129. package/dist/blocks/surface-id-context.js +15 -0
  130. package/dist/blocks/surface-id-context.js.map +1 -0
  131. package/dist/bus.d.ts +42 -0
  132. package/dist/bus.d.ts.map +1 -0
  133. package/dist/bus.js +158 -0
  134. package/dist/bus.js.map +1 -0
  135. package/dist/cache/index.d.ts +10 -0
  136. package/dist/cache/index.d.ts.map +1 -0
  137. package/dist/cache/index.js +10 -0
  138. package/dist/cache/index.js.map +1 -0
  139. package/dist/cache/memory.d.ts +33 -0
  140. package/dist/cache/memory.d.ts.map +1 -0
  141. package/dist/cache/memory.js +138 -0
  142. package/dist/cache/memory.js.map +1 -0
  143. package/dist/cache/types.d.ts +63 -0
  144. package/dist/cache/types.d.ts.map +1 -0
  145. package/dist/cache/types.js +9 -0
  146. package/dist/cache/types.js.map +1 -0
  147. package/dist/capability/index.d.ts +73 -0
  148. package/dist/capability/index.d.ts.map +1 -0
  149. package/dist/capability/index.js +87 -0
  150. package/dist/capability/index.js.map +1 -0
  151. package/dist/capability/kernel-capabilities.d.ts +32 -0
  152. package/dist/capability/kernel-capabilities.d.ts.map +1 -0
  153. package/dist/capability/kernel-capabilities.js +36 -0
  154. package/dist/capability/kernel-capabilities.js.map +1 -0
  155. package/dist/capability/platform-capabilities.d.ts +72 -0
  156. package/dist/capability/platform-capabilities.d.ts.map +1 -0
  157. package/dist/capability/platform-capabilities.js +267 -0
  158. package/dist/capability/platform-capabilities.js.map +1 -0
  159. package/dist/capability/type-mapping.d.ts +71 -0
  160. package/dist/capability/type-mapping.d.ts.map +1 -0
  161. package/dist/capability/type-mapping.js +107 -0
  162. package/dist/capability/type-mapping.js.map +1 -0
  163. package/dist/capability/validation.d.ts +47 -0
  164. package/dist/capability/validation.d.ts.map +1 -0
  165. package/dist/capability/validation.js +54 -0
  166. package/dist/capability/validation.js.map +1 -0
  167. package/dist/connectors/declared-connector.d.ts +49 -0
  168. package/dist/connectors/declared-connector.d.ts.map +1 -0
  169. package/dist/connectors/declared-connector.js +333 -0
  170. package/dist/connectors/declared-connector.js.map +1 -0
  171. package/dist/connectors/engine-registry.d.ts +51 -0
  172. package/dist/connectors/engine-registry.d.ts.map +1 -0
  173. package/dist/connectors/engine-registry.js +135 -0
  174. package/dist/connectors/engine-registry.js.map +1 -0
  175. package/dist/connectors/index.d.ts +15 -0
  176. package/dist/connectors/index.d.ts.map +1 -0
  177. package/dist/connectors/index.js +14 -0
  178. package/dist/connectors/index.js.map +1 -0
  179. package/dist/connectors/module-loader.d.ts +71 -0
  180. package/dist/connectors/module-loader.d.ts.map +1 -0
  181. package/dist/connectors/module-loader.js +143 -0
  182. package/dist/connectors/module-loader.js.map +1 -0
  183. package/dist/connectors/types.d.ts +175 -0
  184. package/dist/connectors/types.d.ts.map +1 -0
  185. package/dist/connectors/types.js +23 -0
  186. package/dist/connectors/types.js.map +1 -0
  187. package/dist/context.d.ts +28 -0
  188. package/dist/context.d.ts.map +1 -0
  189. package/dist/context.js +38 -0
  190. package/dist/context.js.map +1 -0
  191. package/dist/data/DataCapabilityProvider.d.ts +40 -0
  192. package/dist/data/DataCapabilityProvider.d.ts.map +1 -0
  193. package/dist/data/DataCapabilityProvider.js +58 -0
  194. package/dist/data/DataCapabilityProvider.js.map +1 -0
  195. package/dist/data/index.d.ts +18 -0
  196. package/dist/data/index.d.ts.map +1 -0
  197. package/dist/data/index.js +18 -0
  198. package/dist/data/index.js.map +1 -0
  199. package/dist/data/manager.d.ts +41 -0
  200. package/dist/data/manager.d.ts.map +1 -0
  201. package/dist/data/manager.js +442 -0
  202. package/dist/data/manager.js.map +1 -0
  203. package/dist/data/types.d.ts +219 -0
  204. package/dist/data/types.d.ts.map +1 -0
  205. package/dist/data/types.js +2 -0
  206. package/dist/data/types.js.map +1 -0
  207. package/dist/entity/aggregate.d.ts +9 -0
  208. package/dist/entity/aggregate.d.ts.map +1 -0
  209. package/dist/entity/aggregate.js +24 -0
  210. package/dist/entity/aggregate.js.map +1 -0
  211. package/dist/entity/apply-query.d.ts +59 -0
  212. package/dist/entity/apply-query.d.ts.map +1 -0
  213. package/dist/entity/apply-query.js +264 -0
  214. package/dist/entity/apply-query.js.map +1 -0
  215. package/dist/entity/behavior.d.ts +95 -0
  216. package/dist/entity/behavior.d.ts.map +1 -0
  217. package/dist/entity/behavior.js +78 -0
  218. package/dist/entity/behavior.js.map +1 -0
  219. package/dist/entity/connector.d.ts +142 -0
  220. package/dist/entity/connector.d.ts.map +1 -0
  221. package/dist/entity/connector.js +89 -0
  222. package/dist/entity/connector.js.map +1 -0
  223. package/dist/entity/connectors/index.d.ts +13 -0
  224. package/dist/entity/connectors/index.d.ts.map +1 -0
  225. package/dist/entity/connectors/index.js +11 -0
  226. package/dist/entity/connectors/index.js.map +1 -0
  227. package/dist/entity/connectors/static.d.ts +52 -0
  228. package/dist/entity/connectors/static.d.ts.map +1 -0
  229. package/dist/entity/connectors/static.js +245 -0
  230. package/dist/entity/connectors/static.js.map +1 -0
  231. package/dist/entity/entity-datasource.d.ts +51 -0
  232. package/dist/entity/entity-datasource.d.ts.map +1 -0
  233. package/dist/entity/entity-datasource.js +33 -0
  234. package/dist/entity/entity-datasource.js.map +1 -0
  235. package/dist/entity/facade.d.ts +71 -0
  236. package/dist/entity/facade.d.ts.map +1 -0
  237. package/dist/entity/facade.js +70 -0
  238. package/dist/entity/facade.js.map +1 -0
  239. package/dist/entity/http-connector.d.ts +124 -0
  240. package/dist/entity/http-connector.d.ts.map +1 -0
  241. package/dist/entity/http-connector.js +295 -0
  242. package/dist/entity/http-connector.js.map +1 -0
  243. package/dist/entity/index.d.ts +39 -0
  244. package/dist/entity/index.d.ts.map +1 -0
  245. package/dist/entity/index.js +31 -0
  246. package/dist/entity/index.js.map +1 -0
  247. package/dist/entity/postgres-connector.d.ts +65 -0
  248. package/dist/entity/postgres-connector.d.ts.map +1 -0
  249. package/dist/entity/postgres-connector.js +239 -0
  250. package/dist/entity/postgres-connector.js.map +1 -0
  251. package/dist/entity/registry.d.ts +60 -0
  252. package/dist/entity/registry.d.ts.map +1 -0
  253. package/dist/entity/registry.js +90 -0
  254. package/dist/entity/registry.js.map +1 -0
  255. package/dist/entity/store.d.ts +67 -0
  256. package/dist/entity/store.d.ts.map +1 -0
  257. package/dist/entity/store.js +349 -0
  258. package/dist/entity/store.js.map +1 -0
  259. package/dist/entity/types.d.ts +181 -0
  260. package/dist/entity/types.d.ts.map +1 -0
  261. package/dist/entity/types.js +10 -0
  262. package/dist/entity/types.js.map +1 -0
  263. package/dist/execution-context.d.ts +89 -0
  264. package/dist/execution-context.d.ts.map +1 -0
  265. package/dist/execution-context.js +146 -0
  266. package/dist/execution-context.js.map +1 -0
  267. package/dist/executor.d.ts +28 -0
  268. package/dist/executor.d.ts.map +1 -0
  269. package/dist/executor.js +33 -0
  270. package/dist/executor.js.map +1 -0
  271. package/dist/forms/form-entity-bridge.d.ts +95 -0
  272. package/dist/forms/form-entity-bridge.d.ts.map +1 -0
  273. package/dist/forms/form-entity-bridge.js +96 -0
  274. package/dist/forms/form-entity-bridge.js.map +1 -0
  275. package/dist/forms/form-write-target.d.ts +35 -0
  276. package/dist/forms/form-write-target.d.ts.map +1 -0
  277. package/dist/forms/form-write-target.js +81 -0
  278. package/dist/forms/form-write-target.js.map +1 -0
  279. package/dist/forms/index.d.ts +23 -0
  280. package/dist/forms/index.d.ts.map +1 -0
  281. package/dist/forms/index.js +25 -0
  282. package/dist/forms/index.js.map +1 -0
  283. package/dist/forms/named-control-values.d.ts +28 -0
  284. package/dist/forms/named-control-values.d.ts.map +1 -0
  285. package/dist/forms/named-control-values.js +42 -0
  286. package/dist/forms/named-control-values.js.map +1 -0
  287. package/dist/forms/processor.d.ts +56 -0
  288. package/dist/forms/processor.d.ts.map +1 -0
  289. package/dist/forms/processor.js +154 -0
  290. package/dist/forms/processor.js.map +1 -0
  291. package/dist/forms/types.d.ts +175 -0
  292. package/dist/forms/types.d.ts.map +1 -0
  293. package/dist/forms/types.js +33 -0
  294. package/dist/forms/types.js.map +1 -0
  295. package/dist/forms/validator.d.ts +62 -0
  296. package/dist/forms/validator.d.ts.map +1 -0
  297. package/dist/forms/validator.js +218 -0
  298. package/dist/forms/validator.js.map +1 -0
  299. package/dist/graph/index.d.ts +11 -0
  300. package/dist/graph/index.d.ts.map +1 -0
  301. package/dist/graph/index.js +9 -0
  302. package/dist/graph/index.js.map +1 -0
  303. package/dist/graph/resolver.d.ts +67 -0
  304. package/dist/graph/resolver.d.ts.map +1 -0
  305. package/dist/graph/resolver.js +243 -0
  306. package/dist/graph/resolver.js.map +1 -0
  307. package/dist/graph/types.d.ts +126 -0
  308. package/dist/graph/types.d.ts.map +1 -0
  309. package/dist/graph/types.js +9 -0
  310. package/dist/graph/types.js.map +1 -0
  311. package/dist/hooks/useInstalledAtoms.d.ts +97 -0
  312. package/dist/hooks/useInstalledAtoms.d.ts.map +1 -0
  313. package/dist/hooks/useInstalledAtoms.js +92 -0
  314. package/dist/hooks/useInstalledAtoms.js.map +1 -0
  315. package/dist/i18n/index.d.ts +16 -0
  316. package/dist/i18n/index.d.ts.map +1 -0
  317. package/dist/i18n/index.js +14 -0
  318. package/dist/i18n/index.js.map +1 -0
  319. package/dist/i18n/translator.d.ts +77 -0
  320. package/dist/i18n/translator.d.ts.map +1 -0
  321. package/dist/i18n/translator.js +357 -0
  322. package/dist/i18n/translator.js.map +1 -0
  323. package/dist/i18n/types.d.ts +94 -0
  324. package/dist/i18n/types.d.ts.map +1 -0
  325. package/dist/i18n/types.js +9 -0
  326. package/dist/i18n/types.js.map +1 -0
  327. package/dist/index.d.ts +65 -0
  328. package/dist/index.d.ts.map +1 -0
  329. package/dist/index.js +95 -0
  330. package/dist/index.js.map +1 -0
  331. package/dist/kernel.d.ts +48 -0
  332. package/dist/kernel.d.ts.map +1 -0
  333. package/dist/kernel.js +258 -0
  334. package/dist/kernel.js.map +1 -0
  335. package/dist/perf/budget.d.ts +93 -0
  336. package/dist/perf/budget.d.ts.map +1 -0
  337. package/dist/perf/budget.js +122 -0
  338. package/dist/perf/budget.js.map +1 -0
  339. package/dist/perf/index.d.ts +17 -0
  340. package/dist/perf/index.d.ts.map +1 -0
  341. package/dist/perf/index.js +13 -0
  342. package/dist/perf/index.js.map +1 -0
  343. package/dist/perf/render-timer.d.ts +91 -0
  344. package/dist/perf/render-timer.d.ts.map +1 -0
  345. package/dist/perf/render-timer.js +136 -0
  346. package/dist/perf/render-timer.js.map +1 -0
  347. package/dist/perf/reporter.d.ts +127 -0
  348. package/dist/perf/reporter.d.ts.map +1 -0
  349. package/dist/perf/reporter.js +241 -0
  350. package/dist/perf/reporter.js.map +1 -0
  351. package/dist/perf/web-vitals.d.ts +112 -0
  352. package/dist/perf/web-vitals.d.ts.map +1 -0
  353. package/dist/perf/web-vitals.js +268 -0
  354. package/dist/perf/web-vitals.js.map +1 -0
  355. package/dist/registry.d.ts +64 -0
  356. package/dist/registry.d.ts.map +1 -0
  357. package/dist/registry.js +126 -0
  358. package/dist/registry.js.map +1 -0
  359. package/dist/render/BehaviorSurfaceProvider.d.ts +66 -0
  360. package/dist/render/BehaviorSurfaceProvider.d.ts.map +1 -0
  361. package/dist/render/BehaviorSurfaceProvider.js +185 -0
  362. package/dist/render/BehaviorSurfaceProvider.js.map +1 -0
  363. package/dist/render/BlockErrorBoundary.d.ts +27 -0
  364. package/dist/render/BlockErrorBoundary.d.ts.map +1 -0
  365. package/dist/render/BlockErrorBoundary.js +41 -0
  366. package/dist/render/BlockErrorBoundary.js.map +1 -0
  367. package/dist/render/DataBoundSurfaceRenderer.d.ts +79 -0
  368. package/dist/render/DataBoundSurfaceRenderer.d.ts.map +1 -0
  369. package/dist/render/DataBoundSurfaceRenderer.js +998 -0
  370. package/dist/render/DataBoundSurfaceRenderer.js.map +1 -0
  371. package/dist/render/DynamicBlockWrapper.d.ts +24 -0
  372. package/dist/render/DynamicBlockWrapper.d.ts.map +1 -0
  373. package/dist/render/DynamicBlockWrapper.js +117 -0
  374. package/dist/render/DynamicBlockWrapper.js.map +1 -0
  375. package/dist/render/appearance-resolver.d.ts +51 -0
  376. package/dist/render/appearance-resolver.d.ts.map +1 -0
  377. package/dist/render/appearance-resolver.js +78 -0
  378. package/dist/render/appearance-resolver.js.map +1 -0
  379. package/dist/render/capability-gate.d.ts +70 -0
  380. package/dist/render/capability-gate.d.ts.map +1 -0
  381. package/dist/render/capability-gate.js +94 -0
  382. package/dist/render/capability-gate.js.map +1 -0
  383. package/dist/render/conditional-states-css.d.ts +42 -0
  384. package/dist/render/conditional-states-css.d.ts.map +1 -0
  385. package/dist/render/conditional-states-css.js +82 -0
  386. package/dist/render/conditional-states-css.js.map +1 -0
  387. package/dist/render/connections-context.d.ts +32 -0
  388. package/dist/render/connections-context.d.ts.map +1 -0
  389. package/dist/render/connections-context.js +34 -0
  390. package/dist/render/connections-context.js.map +1 -0
  391. package/dist/render/dark-theme-css.d.ts +37 -0
  392. package/dist/render/dark-theme-css.d.ts.map +1 -0
  393. package/dist/render/dark-theme-css.js +67 -0
  394. package/dist/render/dark-theme-css.js.map +1 -0
  395. package/dist/render/data-binding-types.d.ts +192 -0
  396. package/dist/render/data-binding-types.d.ts.map +1 -0
  397. package/dist/render/data-binding-types.js +11 -0
  398. package/dist/render/data-binding-types.js.map +1 -0
  399. package/dist/render/data-cache.d.ts +31 -0
  400. package/dist/render/data-cache.d.ts.map +1 -0
  401. package/dist/render/data-cache.js +37 -0
  402. package/dist/render/data-cache.js.map +1 -0
  403. package/dist/render/derive-dark-theme.d.ts +18 -0
  404. package/dist/render/derive-dark-theme.d.ts.map +1 -0
  405. package/dist/render/derive-dark-theme.js +18 -0
  406. package/dist/render/derive-dark-theme.js.map +1 -0
  407. package/dist/render/dynamic-artifact-context.d.ts +78 -0
  408. package/dist/render/dynamic-artifact-context.d.ts.map +1 -0
  409. package/dist/render/dynamic-artifact-context.js +89 -0
  410. package/dist/render/dynamic-artifact-context.js.map +1 -0
  411. package/dist/render/dynamic-block-loader.d.ts +81 -0
  412. package/dist/render/dynamic-block-loader.d.ts.map +1 -0
  413. package/dist/render/dynamic-block-loader.js +197 -0
  414. package/dist/render/dynamic-block-loader.js.map +1 -0
  415. package/dist/render/endpoint.d.ts +19 -0
  416. package/dist/render/endpoint.d.ts.map +1 -0
  417. package/dist/render/endpoint.js +109 -0
  418. package/dist/render/endpoint.js.map +1 -0
  419. package/dist/render/entity-facade-context.d.ts +35 -0
  420. package/dist/render/entity-facade-context.d.ts.map +1 -0
  421. package/dist/render/entity-facade-context.js +37 -0
  422. package/dist/render/entity-facade-context.js.map +1 -0
  423. package/dist/render/group-states-css.d.ts +42 -0
  424. package/dist/render/group-states-css.d.ts.map +1 -0
  425. package/dist/render/group-states-css.js +73 -0
  426. package/dist/render/group-states-css.js.map +1 -0
  427. package/dist/render/hooks/useSurfaceEvents.d.ts +9 -0
  428. package/dist/render/hooks/useSurfaceEvents.d.ts.map +1 -0
  429. package/dist/render/hooks/useSurfaceEvents.js +9 -0
  430. package/dist/render/hooks/useSurfaceEvents.js.map +1 -0
  431. package/dist/render/hooks/useSurfaceId.d.ts +9 -0
  432. package/dist/render/hooks/useSurfaceId.d.ts.map +1 -0
  433. package/dist/render/hooks/useSurfaceId.js +9 -0
  434. package/dist/render/hooks/useSurfaceId.js.map +1 -0
  435. package/dist/render/index.d.ts +49 -0
  436. package/dist/render/index.d.ts.map +1 -0
  437. package/dist/render/index.js +61 -0
  438. package/dist/render/index.js.map +1 -0
  439. package/dist/render/interaction-rule-engine.d.ts +13 -0
  440. package/dist/render/interaction-rule-engine.d.ts.map +1 -0
  441. package/dist/render/interaction-rule-engine.js +47 -0
  442. package/dist/render/interaction-rule-engine.js.map +1 -0
  443. package/dist/render/keyframes-css.d.ts +32 -0
  444. package/dist/render/keyframes-css.d.ts.map +1 -0
  445. package/dist/render/keyframes-css.js +44 -0
  446. package/dist/render/keyframes-css.js.map +1 -0
  447. package/dist/render/query-state.d.ts +4 -0
  448. package/dist/render/query-state.d.ts.map +1 -0
  449. package/dist/render/query-state.js +70 -0
  450. package/dist/render/query-state.js.map +1 -0
  451. package/dist/render/renderer.d.ts +45 -0
  452. package/dist/render/renderer.d.ts.map +1 -0
  453. package/dist/render/renderer.js +937 -0
  454. package/dist/render/renderer.js.map +1 -0
  455. package/dist/render/resolve-expressions.d.ts +38 -0
  456. package/dist/render/resolve-expressions.d.ts.map +1 -0
  457. package/dist/render/resolve-expressions.js +309 -0
  458. package/dist/render/resolve-expressions.js.map +1 -0
  459. package/dist/render/responsive-style-css.d.ts +43 -0
  460. package/dist/render/responsive-style-css.d.ts.map +1 -0
  461. package/dist/render/responsive-style-css.js +123 -0
  462. package/dist/render/responsive-style-css.js.map +1 -0
  463. package/dist/render/responsive.d.ts +50 -0
  464. package/dist/render/responsive.d.ts.map +1 -0
  465. package/dist/render/responsive.js +99 -0
  466. package/dist/render/responsive.js.map +1 -0
  467. package/dist/render/scoped-css.d.ts +72 -0
  468. package/dist/render/scoped-css.d.ts.map +1 -0
  469. package/dist/render/scoped-css.js +102 -0
  470. package/dist/render/scoped-css.js.map +1 -0
  471. package/dist/render/shell-selection.d.ts +70 -0
  472. package/dist/render/shell-selection.d.ts.map +1 -0
  473. package/dist/render/shell-selection.js +117 -0
  474. package/dist/render/shell-selection.js.map +1 -0
  475. package/dist/render/states-css.d.ts +33 -0
  476. package/dist/render/states-css.d.ts.map +1 -0
  477. package/dist/render/states-css.js +63 -0
  478. package/dist/render/states-css.js.map +1 -0
  479. package/dist/render/surface-data-context.d.ts +19 -0
  480. package/dist/render/surface-data-context.d.ts.map +1 -0
  481. package/dist/render/surface-data-context.js +21 -0
  482. package/dist/render/surface-data-context.js.map +1 -0
  483. package/dist/render/surface-event-bus.d.ts +20 -0
  484. package/dist/render/surface-event-bus.d.ts.map +1 -0
  485. package/dist/render/surface-event-bus.js +68 -0
  486. package/dist/render/surface-event-bus.js.map +1 -0
  487. package/dist/render/surface-event-context.d.ts +12 -0
  488. package/dist/render/surface-event-context.d.ts.map +1 -0
  489. package/dist/render/surface-event-context.js +12 -0
  490. package/dist/render/surface-event-context.js.map +1 -0
  491. package/dist/render/surface-id-context.d.ts +9 -0
  492. package/dist/render/surface-id-context.d.ts.map +1 -0
  493. package/dist/render/surface-id-context.js +9 -0
  494. package/dist/render/surface-id-context.js.map +1 -0
  495. package/dist/render/theme-utils.d.ts +15 -0
  496. package/dist/render/theme-utils.d.ts.map +1 -0
  497. package/dist/render/theme-utils.js +15 -0
  498. package/dist/render/theme-utils.js.map +1 -0
  499. package/dist/render/types.d.ts +283 -0
  500. package/dist/render/types.d.ts.map +1 -0
  501. package/dist/render/types.js +9 -0
  502. package/dist/render/types.js.map +1 -0
  503. package/dist/render/visibility-css.d.ts +43 -0
  504. package/dist/render/visibility-css.d.ts.map +1 -0
  505. package/dist/render/visibility-css.js +119 -0
  506. package/dist/render/visibility-css.js.map +1 -0
  507. package/dist/render/width-scope.d.ts +35 -0
  508. package/dist/render/width-scope.d.ts.map +1 -0
  509. package/dist/render/width-scope.js +44 -0
  510. package/dist/render/width-scope.js.map +1 -0
  511. package/dist/render/write-only-sources.d.ts +34 -0
  512. package/dist/render/write-only-sources.d.ts.map +1 -0
  513. package/dist/render/write-only-sources.js +99 -0
  514. package/dist/render/write-only-sources.js.map +1 -0
  515. package/dist/routing/index.d.ts +15 -0
  516. package/dist/routing/index.d.ts.map +1 -0
  517. package/dist/routing/index.js +15 -0
  518. package/dist/routing/index.js.map +1 -0
  519. package/dist/routing/router.d.ts +43 -0
  520. package/dist/routing/router.d.ts.map +1 -0
  521. package/dist/routing/router.js +218 -0
  522. package/dist/routing/router.js.map +1 -0
  523. package/dist/routing/types.d.ts +125 -0
  524. package/dist/routing/types.d.ts.map +1 -0
  525. package/dist/routing/types.js +9 -0
  526. package/dist/routing/types.js.map +1 -0
  527. package/dist/seo/generator.d.ts +40 -0
  528. package/dist/seo/generator.d.ts.map +1 -0
  529. package/dist/seo/generator.js +236 -0
  530. package/dist/seo/generator.js.map +1 -0
  531. package/dist/seo/index.d.ts +15 -0
  532. package/dist/seo/index.d.ts.map +1 -0
  533. package/dist/seo/index.js +15 -0
  534. package/dist/seo/index.js.map +1 -0
  535. package/dist/seo/types.d.ts +182 -0
  536. package/dist/seo/types.d.ts.map +1 -0
  537. package/dist/seo/types.js +9 -0
  538. package/dist/seo/types.js.map +1 -0
  539. package/dist/state/index.d.ts +16 -0
  540. package/dist/state/index.d.ts.map +1 -0
  541. package/dist/state/index.js +16 -0
  542. package/dist/state/index.js.map +1 -0
  543. package/dist/state/manager.d.ts +34 -0
  544. package/dist/state/manager.d.ts.map +1 -0
  545. package/dist/state/manager.js +81 -0
  546. package/dist/state/manager.js.map +1 -0
  547. package/dist/state/store.d.ts +41 -0
  548. package/dist/state/store.d.ts.map +1 -0
  549. package/dist/state/store.js +145 -0
  550. package/dist/state/store.js.map +1 -0
  551. package/dist/state/types.d.ts +108 -0
  552. package/dist/state/types.d.ts.map +1 -0
  553. package/dist/state/types.js +9 -0
  554. package/dist/state/types.js.map +1 -0
  555. package/dist/surface/expression.d.ts +66 -0
  556. package/dist/surface/expression.d.ts.map +1 -0
  557. package/dist/surface/expression.js +179 -0
  558. package/dist/surface/expression.js.map +1 -0
  559. package/dist/surface/index.d.ts +33 -0
  560. package/dist/surface/index.d.ts.map +1 -0
  561. package/dist/surface/index.js +25 -0
  562. package/dist/surface/index.js.map +1 -0
  563. package/dist/surface/interpreter.d.ts +97 -0
  564. package/dist/surface/interpreter.d.ts.map +1 -0
  565. package/dist/surface/interpreter.js +231 -0
  566. package/dist/surface/interpreter.js.map +1 -0
  567. package/dist/surface/layout.d.ts +55 -0
  568. package/dist/surface/layout.d.ts.map +1 -0
  569. package/dist/surface/layout.js +288 -0
  570. package/dist/surface/layout.js.map +1 -0
  571. package/dist/surface/output.d.ts +91 -0
  572. package/dist/surface/output.d.ts.map +1 -0
  573. package/dist/surface/output.js +104 -0
  574. package/dist/surface/output.js.map +1 -0
  575. package/dist/surface/primitives.d.ts +181 -0
  576. package/dist/surface/primitives.d.ts.map +1 -0
  577. package/dist/surface/primitives.js +339 -0
  578. package/dist/surface/primitives.js.map +1 -0
  579. package/dist/surface/renderer.d.ts +97 -0
  580. package/dist/surface/renderer.d.ts.map +1 -0
  581. package/dist/surface/renderer.js +190 -0
  582. package/dist/surface/renderer.js.map +1 -0
  583. package/dist/surface/schemas.d.ts +182 -0
  584. package/dist/surface/schemas.d.ts.map +1 -0
  585. package/dist/surface/schemas.js +142 -0
  586. package/dist/surface/schemas.js.map +1 -0
  587. package/dist/surface/transforms.d.ts +145 -0
  588. package/dist/surface/transforms.d.ts.map +1 -0
  589. package/dist/surface/transforms.js +120 -0
  590. package/dist/surface/transforms.js.map +1 -0
  591. package/dist/surface/types.d.ts +161 -0
  592. package/dist/surface/types.d.ts.map +1 -0
  593. package/dist/surface/types.js +51 -0
  594. package/dist/surface/types.js.map +1 -0
  595. package/dist/surface/validation.d.ts +124 -0
  596. package/dist/surface/validation.d.ts.map +1 -0
  597. package/dist/surface/validation.js +147 -0
  598. package/dist/surface/validation.js.map +1 -0
  599. package/dist/validator.d.ts +56 -0
  600. package/dist/validator.d.ts.map +1 -0
  601. package/dist/validator.js +100 -0
  602. package/dist/validator.js.map +1 -0
  603. package/package.json +105 -3
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Surface / Block Render Timing
3
+ *
4
+ * Tracks render durations for surfaces and blocks using
5
+ * high-resolution timing. Maintains a bounded history of
6
+ * render metrics for performance analysis.
7
+ *
8
+ * Uses `performance.now()` when available, falling back to
9
+ * `Date.now()` for SSR environments.
10
+ *
11
+ * @module @pwfabric/runtime/perf
12
+ */
13
+ /** Metrics for a single surface render cycle */
14
+ export interface RenderMetrics {
15
+ /** Surface identifier */
16
+ readonly surfaceId: string;
17
+ /** High-resolution render start time */
18
+ readonly startTime: number;
19
+ /** High-resolution render end time */
20
+ readonly endTime: number;
21
+ /** Render duration in milliseconds */
22
+ readonly duration: number;
23
+ /** Number of blocks rendered */
24
+ readonly blockCount: number;
25
+ }
26
+ /** Configuration for the RenderTimer */
27
+ export interface RenderTimerConfig {
28
+ /** Maximum number of entries to keep in history (default: 100) */
29
+ maxEntries?: number;
30
+ }
31
+ /**
32
+ * Tracks surface render timing with bounded history.
33
+ *
34
+ * Call `startRender` before a surface renders and `endRender`
35
+ * when rendering completes. The timer records the duration and
36
+ * maintains a history of recent render metrics.
37
+ */
38
+ export declare class RenderTimer {
39
+ private entries;
40
+ private history;
41
+ private readonly maxEntries;
42
+ /**
43
+ * @param config - Optional configuration
44
+ */
45
+ constructor(config?: RenderTimerConfig);
46
+ /**
47
+ * Mark the start of a surface render.
48
+ *
49
+ * @param surfaceId - Unique identifier for the surface
50
+ * @param blockCount - Number of blocks being rendered (default: 0)
51
+ */
52
+ startRender(surfaceId: string, blockCount?: number): void;
53
+ /**
54
+ * Mark the end of a surface render and record metrics.
55
+ *
56
+ * @param surfaceId - The surface identifier passed to `startRender`
57
+ * @returns The render metrics, or `undefined` if no matching start was found
58
+ */
59
+ endRender(surfaceId: string): RenderMetrics | undefined;
60
+ /**
61
+ * Calculate the average render time across all recorded renders.
62
+ *
63
+ * @returns Average duration in milliseconds, or 0 if no renders recorded
64
+ */
65
+ getAverageRenderTime(): number;
66
+ /**
67
+ * Get the full render history.
68
+ *
69
+ * @returns Readonly array of render metrics
70
+ */
71
+ getHistory(): readonly RenderMetrics[];
72
+ /**
73
+ * Get the slowest renders, sorted by duration descending.
74
+ *
75
+ * @param count - Number of entries to return (default: 5)
76
+ * @returns Array of the slowest render metrics
77
+ */
78
+ getSlowest(count?: number): RenderMetrics[];
79
+ /**
80
+ * Clear all history and active entries.
81
+ */
82
+ clear(): void;
83
+ }
84
+ /**
85
+ * Create a new RenderTimer instance.
86
+ *
87
+ * @param config - Optional configuration
88
+ * @returns A new RenderTimer
89
+ */
90
+ export declare function createRenderTimer(config?: RenderTimerConfig): RenderTimer;
91
+ //# sourceMappingURL=render-timer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-timer.d.ts","sourceRoot":"","sources":["../../src/perf/render-timer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAsBH,gDAAgD;AAChD,MAAM,WAAW,aAAa;IAC5B,yBAAyB;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,wCAAwC;IACxC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,sCAAsC;IACtC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;IACxB,sCAAsC;IACtC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAA;IACzB,gCAAgC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;CAC5B;AAED,wCAAwC;AACxC,MAAM,WAAW,iBAAiB;IAChC,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAkBD;;;;;;GAMG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAQ;IAEnC;;OAEG;gBACS,MAAM,CAAC,EAAE,iBAAiB;IAItC;;;;;OAKG;IACH,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,SAAI,GAAG,IAAI;IAOpD;;;;;OAKG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IA2BvD;;;;OAIG;IACH,oBAAoB,IAAI,MAAM;IAQ9B;;;;OAIG;IACH,UAAU,IAAI,SAAS,aAAa,EAAE;IAItC;;;;;OAKG;IACH,UAAU,CAAC,KAAK,SAAI,GAAG,aAAa,EAAE;IAItC;;OAEG;IACH,KAAK,IAAI,IAAI;CAId;AAMD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,WAAW,CAEzE"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Surface / Block Render Timing
3
+ *
4
+ * Tracks render durations for surfaces and blocks using
5
+ * high-resolution timing. Maintains a bounded history of
6
+ * render metrics for performance analysis.
7
+ *
8
+ * Uses `performance.now()` when available, falling back to
9
+ * `Date.now()` for SSR environments.
10
+ *
11
+ * @module @pwfabric/runtime/perf
12
+ */
13
+ // ============================================================
14
+ // TIMING UTILITY
15
+ // ============================================================
16
+ /**
17
+ * Get the current high-resolution timestamp.
18
+ *
19
+ * Falls back to `Date.now()` when `performance` is not available (SSR).
20
+ */
21
+ function now() {
22
+ if (typeof performance !== 'undefined' && typeof performance.now === 'function') {
23
+ return performance.now();
24
+ }
25
+ return Date.now();
26
+ }
27
+ // ============================================================
28
+ // DEFAULTS
29
+ // ============================================================
30
+ const DEFAULT_MAX_ENTRIES = 100;
31
+ /**
32
+ * Tracks surface render timing with bounded history.
33
+ *
34
+ * Call `startRender` before a surface renders and `endRender`
35
+ * when rendering completes. The timer records the duration and
36
+ * maintains a history of recent render metrics.
37
+ */
38
+ export class RenderTimer {
39
+ entries = new Map();
40
+ history = [];
41
+ maxEntries;
42
+ /**
43
+ * @param config - Optional configuration
44
+ */
45
+ constructor(config) {
46
+ this.maxEntries = config?.maxEntries ?? DEFAULT_MAX_ENTRIES;
47
+ }
48
+ /**
49
+ * Mark the start of a surface render.
50
+ *
51
+ * @param surfaceId - Unique identifier for the surface
52
+ * @param blockCount - Number of blocks being rendered (default: 0)
53
+ */
54
+ startRender(surfaceId, blockCount = 0) {
55
+ this.entries.set(surfaceId, {
56
+ startTime: now(),
57
+ blockCount,
58
+ });
59
+ }
60
+ /**
61
+ * Mark the end of a surface render and record metrics.
62
+ *
63
+ * @param surfaceId - The surface identifier passed to `startRender`
64
+ * @returns The render metrics, or `undefined` if no matching start was found
65
+ */
66
+ endRender(surfaceId) {
67
+ const entry = this.entries.get(surfaceId);
68
+ if (!entry) {
69
+ return undefined;
70
+ }
71
+ this.entries.delete(surfaceId);
72
+ const endTime = now();
73
+ const metrics = {
74
+ surfaceId,
75
+ startTime: entry.startTime,
76
+ endTime,
77
+ duration: endTime - entry.startTime,
78
+ blockCount: entry.blockCount,
79
+ };
80
+ this.history.push(metrics);
81
+ // Enforce bounded history
82
+ if (this.history.length > this.maxEntries) {
83
+ this.history = this.history.slice(-this.maxEntries);
84
+ }
85
+ return metrics;
86
+ }
87
+ /**
88
+ * Calculate the average render time across all recorded renders.
89
+ *
90
+ * @returns Average duration in milliseconds, or 0 if no renders recorded
91
+ */
92
+ getAverageRenderTime() {
93
+ if (this.history.length === 0) {
94
+ return 0;
95
+ }
96
+ const total = this.history.reduce((sum, m) => sum + m.duration, 0);
97
+ return total / this.history.length;
98
+ }
99
+ /**
100
+ * Get the full render history.
101
+ *
102
+ * @returns Readonly array of render metrics
103
+ */
104
+ getHistory() {
105
+ return this.history;
106
+ }
107
+ /**
108
+ * Get the slowest renders, sorted by duration descending.
109
+ *
110
+ * @param count - Number of entries to return (default: 5)
111
+ * @returns Array of the slowest render metrics
112
+ */
113
+ getSlowest(count = 5) {
114
+ return [...this.history].sort((a, b) => b.duration - a.duration).slice(0, count);
115
+ }
116
+ /**
117
+ * Clear all history and active entries.
118
+ */
119
+ clear() {
120
+ this.entries.clear();
121
+ this.history = [];
122
+ }
123
+ }
124
+ // ============================================================
125
+ // FACTORY
126
+ // ============================================================
127
+ /**
128
+ * Create a new RenderTimer instance.
129
+ *
130
+ * @param config - Optional configuration
131
+ * @returns A new RenderTimer
132
+ */
133
+ export function createRenderTimer(config) {
134
+ return new RenderTimer(config);
135
+ }
136
+ //# sourceMappingURL=render-timer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render-timer.js","sourceRoot":"","sources":["../../src/perf/render-timer.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,+DAA+D;AAC/D,iBAAiB;AACjB,+DAA+D;AAE/D;;;;GAIG;AACH,SAAS,GAAG;IACV,IAAI,OAAO,WAAW,KAAK,WAAW,IAAI,OAAO,WAAW,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;QAChF,OAAO,WAAW,CAAC,GAAG,EAAE,CAAA;IAC1B,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,EAAE,CAAA;AACnB,CAAC;AA0BD,+DAA+D;AAC/D,WAAW;AACX,+DAA+D;AAE/D,MAAM,mBAAmB,GAAG,GAAG,CAAA;AAY/B;;;;;;GAMG;AACH,MAAM,OAAO,WAAW;IACd,OAAO,GAAG,IAAI,GAAG,EAAwB,CAAA;IACzC,OAAO,GAAoB,EAAE,CAAA;IACpB,UAAU,CAAQ;IAEnC;;OAEG;IACH,YAAY,MAA0B;QACpC,IAAI,CAAC,UAAU,GAAG,MAAM,EAAE,UAAU,IAAI,mBAAmB,CAAA;IAC7D,CAAC;IAED;;;;;OAKG;IACH,WAAW,CAAC,SAAiB,EAAE,UAAU,GAAG,CAAC;QAC3C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE;YAC1B,SAAS,EAAE,GAAG,EAAE;YAChB,UAAU;SACX,CAAC,CAAA;IACJ,CAAC;IAED;;;;;OAKG;IACH,SAAS,CAAC,SAAiB;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,SAAS,CAAA;QAClB,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QAE9B,MAAM,OAAO,GAAG,GAAG,EAAE,CAAA;QACrB,MAAM,OAAO,GAAkB;YAC7B,SAAS;YACT,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,OAAO;YACP,QAAQ,EAAE,OAAO,GAAG,KAAK,CAAC,SAAS;YACnC,UAAU,EAAE,KAAK,CAAC,UAAU;SAC7B,CAAA;QAED,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;QAE1B,0BAA0B;QAC1B,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;YAC1C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;QACrD,CAAC;QAED,OAAO,OAAO,CAAA;IAChB,CAAC;IAED;;;;OAIG;IACH,oBAAoB;QAClB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,CAAA;QACV,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAA;QAClE,OAAO,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAA;IACpC,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,OAAO,CAAA;IACrB,CAAC;IAED;;;;;OAKG;IACH,UAAU,CAAC,KAAK,GAAG,CAAC;QAClB,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAA;IAClF,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAA;QACpB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAA;IACnB,CAAC;CACF;AAED,+DAA+D;AAC/D,UAAU;AACV,+DAA+D;AAE/D;;;;;GAKG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAA0B;IAC1D,OAAO,IAAI,WAAW,CAAC,MAAM,CAAC,CAAA;AAChC,CAAC"}
@@ -0,0 +1,127 @@
1
+ /**
2
+ * Performance Metric Reporter
3
+ *
4
+ * Orchestrates Web Vitals collection, render timing, and budget
5
+ * checking into a unified reporting pipeline. Supports periodic
6
+ * automatic reporting or manual on-demand reports.
7
+ *
8
+ * @module @pwfabric/runtime/perf
9
+ */
10
+ import type { WebVitalsReport } from './web-vitals.js';
11
+ import type { RenderMetrics } from './render-timer.js';
12
+ import type { PerformanceBudget, BudgetCheckResult } from './budget.js';
13
+ import { WebVitalsCollector } from './web-vitals.js';
14
+ import { RenderTimer } from './render-timer.js';
15
+ /** Where to send performance reports */
16
+ export type ReportDestination = 'console' | 'custom';
17
+ /** Reporter configuration */
18
+ export interface ReporterConfig {
19
+ /** Report destination */
20
+ readonly destination: ReportDestination;
21
+ /** Custom report handler (required when destination is 'custom') */
22
+ readonly onReport?: (report: PerformanceReport) => void | Promise<void>;
23
+ /** Reporting interval in ms (0 = manual only, default: 0) */
24
+ readonly interval?: number;
25
+ /** Whether to include render metrics (default: true) */
26
+ readonly includeRenderMetrics?: boolean;
27
+ /** Whether to include Web Vitals (default: true) */
28
+ readonly includeWebVitals?: boolean;
29
+ /** Performance budget to check against */
30
+ readonly budget?: PerformanceBudget;
31
+ }
32
+ /** A complete performance report */
33
+ export interface PerformanceReport {
34
+ /** Timestamp when the report was generated */
35
+ readonly timestamp: number;
36
+ /** Web Vitals snapshot */
37
+ readonly webVitals?: WebVitalsReport | undefined;
38
+ /** Render timing summary */
39
+ readonly renderMetrics?: {
40
+ readonly averageRenderTime: number;
41
+ readonly totalRenders: number;
42
+ readonly slowestRenders: readonly RenderMetrics[];
43
+ } | undefined;
44
+ /** Budget check result */
45
+ readonly budgetCheck?: BudgetCheckResult | undefined;
46
+ }
47
+ /**
48
+ * Orchestrates performance monitoring components and generates
49
+ * unified performance reports.
50
+ *
51
+ * Manages a WebVitalsCollector, RenderTimer, and BudgetChecker
52
+ * internally. Supports automatic periodic reporting or manual
53
+ * on-demand report generation.
54
+ */
55
+ export declare class PerformanceReporter {
56
+ private readonly destination;
57
+ private readonly onReportCallback?;
58
+ private readonly interval;
59
+ private readonly includeRenderMetrics;
60
+ private readonly includeWebVitals;
61
+ private webVitals?;
62
+ private renderTimer?;
63
+ private budgetChecker?;
64
+ private intervalId?;
65
+ /**
66
+ * @param config - Reporter configuration
67
+ */
68
+ constructor(config: ReporterConfig);
69
+ /**
70
+ * Start periodic reporting and Web Vitals collection.
71
+ *
72
+ * If an interval is configured, reports will be generated
73
+ * automatically at that interval. Web Vitals collection
74
+ * starts immediately.
75
+ */
76
+ start(): void;
77
+ /**
78
+ * Generate and deliver a performance report.
79
+ *
80
+ * Collects metrics from all active sub-components, runs
81
+ * budget checks if configured, and delivers the report
82
+ * to the configured destination.
83
+ *
84
+ * @returns The generated performance report
85
+ */
86
+ report(): Promise<PerformanceReport>;
87
+ /**
88
+ * Stop periodic reporting.
89
+ *
90
+ * Does not stop Web Vitals collection or clear history.
91
+ * Use `dispose()` for full cleanup.
92
+ */
93
+ stop(): void;
94
+ /**
95
+ * Get the internal WebVitalsCollector.
96
+ *
97
+ * Useful for registering custom metric callbacks.
98
+ *
99
+ * @returns The collector, or undefined if Web Vitals are disabled
100
+ */
101
+ getWebVitals(): WebVitalsCollector | undefined;
102
+ /**
103
+ * Get the internal RenderTimer.
104
+ *
105
+ * Useful for tracking surface render timing externally.
106
+ *
107
+ * @returns The timer, or undefined if render metrics are disabled
108
+ */
109
+ getRenderTimer(): RenderTimer | undefined;
110
+ /**
111
+ * Stop reporting and release all resources.
112
+ */
113
+ dispose(): void;
114
+ private buildWebVitalsSection;
115
+ private buildRenderMetricsSection;
116
+ private buildBudgetCheckSection;
117
+ private deliverReport;
118
+ private logToConsole;
119
+ }
120
+ /**
121
+ * Create a new PerformanceReporter instance.
122
+ *
123
+ * @param config - Reporter configuration
124
+ * @returns A new PerformanceReporter
125
+ */
126
+ export declare function createPerformanceReporter(config: ReporterConfig): PerformanceReporter;
127
+ //# sourceMappingURL=reporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../../src/perf/reporter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,KAAK,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAO/C,wCAAwC;AACxC,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,QAAQ,CAAA;AAEpD,6BAA6B;AAC7B,MAAM,WAAW,cAAc;IAC7B,yBAAyB;IACzB,QAAQ,CAAC,WAAW,EAAE,iBAAiB,CAAA;IACvC,oEAAoE;IACpE,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IACvE,6DAA6D;IAC7D,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;IAC1B,wDAAwD;IACxD,QAAQ,CAAC,oBAAoB,CAAC,EAAE,OAAO,CAAA;IACvC,oDAAoD;IACpD,QAAQ,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAA;IACnC,0CAA0C;IAC1C,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAA;CACpC;AAED,oCAAoC;AACpC,MAAM,WAAW,iBAAiB;IAChC,8CAA8C;IAC9C,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,0BAA0B;IAC1B,QAAQ,CAAC,SAAS,CAAC,EAAE,eAAe,GAAG,SAAS,CAAA;IAChD,4BAA4B;IAC5B,QAAQ,CAAC,aAAa,CAAC,EACnB;QACE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAA;QAClC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;QAC7B,QAAQ,CAAC,cAAc,EAAE,SAAS,aAAa,EAAE,CAAA;KAClD,GACD,SAAS,CAAA;IACb,0BAA0B;IAC1B,QAAQ,CAAC,WAAW,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAA;CACrD;AAYD;;;;;;;GAOG;AACH,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAmB;IAC/C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAErB;IACb,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAQ;IACjC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAS;IAC9C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;IAE1C,OAAO,CAAC,SAAS,CAAC,CAAgC;IAClD,OAAO,CAAC,WAAW,CAAC,CAAyB;IAC7C,OAAO,CAAC,aAAa,CAAC,CAA2B;IACjD,OAAO,CAAC,UAAU,CAAC,CAA4C;IAE/D;;OAEG;gBACS,MAAM,EAAE,cAAc;IAqBlC;;;;;;OAMG;IACH,KAAK,IAAI,IAAI;IAYb;;;;;;;;OAQG;IACG,MAAM,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAa1C;;;;;OAKG;IACH,IAAI,IAAI,IAAI;IAOZ;;;;;;OAMG;IACH,YAAY,IAAI,kBAAkB,GAAG,SAAS;IAI9C;;;;;;OAMG;IACH,cAAc,IAAI,WAAW,GAAG,SAAS;IAIzC;;OAEG;IACH,OAAO,IAAI,IAAI;IAaf,OAAO,CAAC,qBAAqB;IAO7B,OAAO,CAAC,yBAAyB;IAajC,OAAO,CAAC,uBAAuB;YAiCjB,aAAa;IAc3B,OAAO,CAAC,YAAY;CAgCrB;AAMD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,mBAAmB,CAErF"}
@@ -0,0 +1,241 @@
1
+ /**
2
+ * Performance Metric Reporter
3
+ *
4
+ * Orchestrates Web Vitals collection, render timing, and budget
5
+ * checking into a unified reporting pipeline. Supports periodic
6
+ * automatic reporting or manual on-demand reports.
7
+ *
8
+ * @module @pwfabric/runtime/perf
9
+ */
10
+ import { WebVitalsCollector } from './web-vitals.js';
11
+ import { RenderTimer } from './render-timer.js';
12
+ import { BudgetChecker } from './budget.js';
13
+ // ============================================================
14
+ // DEFAULTS
15
+ // ============================================================
16
+ const DEFAULT_SLOWEST_COUNT = 5;
17
+ // ============================================================
18
+ // REPORTER
19
+ // ============================================================
20
+ /**
21
+ * Orchestrates performance monitoring components and generates
22
+ * unified performance reports.
23
+ *
24
+ * Manages a WebVitalsCollector, RenderTimer, and BudgetChecker
25
+ * internally. Supports automatic periodic reporting or manual
26
+ * on-demand report generation.
27
+ */
28
+ export class PerformanceReporter {
29
+ destination;
30
+ onReportCallback;
31
+ interval;
32
+ includeRenderMetrics;
33
+ includeWebVitals;
34
+ webVitals;
35
+ renderTimer;
36
+ budgetChecker;
37
+ intervalId;
38
+ /**
39
+ * @param config - Reporter configuration
40
+ */
41
+ constructor(config) {
42
+ this.destination = config.destination;
43
+ this.onReportCallback = config.onReport;
44
+ this.interval = config.interval ?? 0;
45
+ this.includeRenderMetrics = config.includeRenderMetrics ?? true;
46
+ this.includeWebVitals = config.includeWebVitals ?? true;
47
+ // Initialize sub-components
48
+ if (this.includeWebVitals) {
49
+ this.webVitals = new WebVitalsCollector();
50
+ }
51
+ if (this.includeRenderMetrics) {
52
+ this.renderTimer = new RenderTimer();
53
+ }
54
+ if (config.budget) {
55
+ this.budgetChecker = new BudgetChecker(config.budget);
56
+ }
57
+ }
58
+ /**
59
+ * Start periodic reporting and Web Vitals collection.
60
+ *
61
+ * If an interval is configured, reports will be generated
62
+ * automatically at that interval. Web Vitals collection
63
+ * starts immediately.
64
+ */
65
+ start() {
66
+ // Start web vitals collection
67
+ this.webVitals?.startCollecting();
68
+ // Set up periodic reporting
69
+ if (this.interval > 0) {
70
+ this.intervalId = setInterval(() => {
71
+ void this.report();
72
+ }, this.interval);
73
+ }
74
+ }
75
+ /**
76
+ * Generate and deliver a performance report.
77
+ *
78
+ * Collects metrics from all active sub-components, runs
79
+ * budget checks if configured, and delivers the report
80
+ * to the configured destination.
81
+ *
82
+ * @returns The generated performance report
83
+ */
84
+ async report() {
85
+ const performanceReport = {
86
+ timestamp: Date.now(),
87
+ webVitals: this.buildWebVitalsSection(),
88
+ renderMetrics: this.buildRenderMetricsSection(),
89
+ budgetCheck: this.buildBudgetCheckSection(),
90
+ };
91
+ await this.deliverReport(performanceReport);
92
+ return performanceReport;
93
+ }
94
+ /**
95
+ * Stop periodic reporting.
96
+ *
97
+ * Does not stop Web Vitals collection or clear history.
98
+ * Use `dispose()` for full cleanup.
99
+ */
100
+ stop() {
101
+ if (this.intervalId !== undefined) {
102
+ clearInterval(this.intervalId);
103
+ this.intervalId = undefined;
104
+ }
105
+ }
106
+ /**
107
+ * Get the internal WebVitalsCollector.
108
+ *
109
+ * Useful for registering custom metric callbacks.
110
+ *
111
+ * @returns The collector, or undefined if Web Vitals are disabled
112
+ */
113
+ getWebVitals() {
114
+ return this.webVitals;
115
+ }
116
+ /**
117
+ * Get the internal RenderTimer.
118
+ *
119
+ * Useful for tracking surface render timing externally.
120
+ *
121
+ * @returns The timer, or undefined if render metrics are disabled
122
+ */
123
+ getRenderTimer() {
124
+ return this.renderTimer;
125
+ }
126
+ /**
127
+ * Stop reporting and release all resources.
128
+ */
129
+ dispose() {
130
+ this.stop();
131
+ this.webVitals?.dispose();
132
+ this.renderTimer?.clear();
133
+ this.webVitals = undefined;
134
+ this.renderTimer = undefined;
135
+ this.budgetChecker = undefined;
136
+ }
137
+ // ----------------------------------------------------------
138
+ // Private: report building
139
+ // ----------------------------------------------------------
140
+ buildWebVitalsSection() {
141
+ if (!this.includeWebVitals || !this.webVitals) {
142
+ return undefined;
143
+ }
144
+ return this.webVitals.getReport();
145
+ }
146
+ buildRenderMetricsSection() {
147
+ if (!this.includeRenderMetrics || !this.renderTimer) {
148
+ return undefined;
149
+ }
150
+ const history = this.renderTimer.getHistory();
151
+ return {
152
+ averageRenderTime: this.renderTimer.getAverageRenderTime(),
153
+ totalRenders: history.length,
154
+ slowestRenders: this.renderTimer.getSlowest(DEFAULT_SLOWEST_COUNT),
155
+ };
156
+ }
157
+ buildBudgetCheckSection() {
158
+ if (!this.budgetChecker) {
159
+ return undefined;
160
+ }
161
+ // Collect all available numeric metrics for budget checking
162
+ const metrics = {};
163
+ // Web Vitals
164
+ if (this.webVitals) {
165
+ const vitalsReport = this.webVitals.getReport();
166
+ if (vitalsReport.lcp)
167
+ metrics['lcp'] = vitalsReport.lcp.value;
168
+ if (vitalsReport.fid)
169
+ metrics['fid'] = vitalsReport.fid.value;
170
+ if (vitalsReport.cls)
171
+ metrics['cls'] = vitalsReport.cls.value;
172
+ if (vitalsReport.fcp)
173
+ metrics['fcp'] = vitalsReport.fcp.value;
174
+ if (vitalsReport.ttfb)
175
+ metrics['ttfb'] = vitalsReport.ttfb.value;
176
+ }
177
+ // Render metrics
178
+ if (this.renderTimer) {
179
+ const avg = this.renderTimer.getAverageRenderTime();
180
+ if (avg > 0) {
181
+ metrics['maxRenderTime'] = avg;
182
+ }
183
+ }
184
+ return this.budgetChecker.check(metrics);
185
+ }
186
+ // ----------------------------------------------------------
187
+ // Private: report delivery
188
+ // ----------------------------------------------------------
189
+ async deliverReport(performanceReport) {
190
+ switch (this.destination) {
191
+ case 'console':
192
+ this.logToConsole(performanceReport);
193
+ break;
194
+ case 'custom':
195
+ if (this.onReportCallback) {
196
+ await this.onReportCallback(performanceReport);
197
+ }
198
+ break;
199
+ }
200
+ }
201
+ logToConsole(performanceReport) {
202
+ if (typeof globalThis.console === 'undefined') {
203
+ return;
204
+ }
205
+ const log = globalThis.console;
206
+ const group = typeof log.group === 'function' ? log.group.bind(log) : undefined;
207
+ const groupEnd = typeof log.groupEnd === 'function' ? log.groupEnd.bind(log) : undefined;
208
+ if (group) {
209
+ group('[PWFabric Perf Report]');
210
+ }
211
+ else {
212
+ log.warn('[PWFabric Perf Report]');
213
+ }
214
+ if (performanceReport.webVitals) {
215
+ log.warn('Web Vitals:', performanceReport.webVitals);
216
+ }
217
+ if (performanceReport.renderMetrics) {
218
+ log.warn('Render Metrics:', performanceReport.renderMetrics);
219
+ }
220
+ if (performanceReport.budgetCheck) {
221
+ const status = performanceReport.budgetCheck.passed ? 'PASS' : 'FAIL';
222
+ log.warn(`Budget Check: ${status}`, performanceReport.budgetCheck.violations);
223
+ }
224
+ if (groupEnd) {
225
+ groupEnd();
226
+ }
227
+ }
228
+ }
229
+ // ============================================================
230
+ // FACTORY
231
+ // ============================================================
232
+ /**
233
+ * Create a new PerformanceReporter instance.
234
+ *
235
+ * @param config - Reporter configuration
236
+ * @returns A new PerformanceReporter
237
+ */
238
+ export function createPerformanceReporter(config) {
239
+ return new PerformanceReporter(config);
240
+ }
241
+ //# sourceMappingURL=reporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../../src/perf/reporter.ts"],"names":[],"mappings":"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"}