@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,119 @@
1
+ /**
2
+ * Per-breakpoint visibility CSS generation (the `hidden md:flex` equivalent).
3
+ *
4
+ * `block.layout.hideOn` / `block.layout.showOn` declare at which breakpoints a
5
+ * block is hidden / the only breakpoints where it is visible. Inline styles
6
+ * can't express media queries, so the runtime emits scoped CSS rules — keyed
7
+ * by the block's `data-block-id` — into the surface's generated `<style>`
8
+ * (alongside the box-sizing reset). The pixel thresholds are the SAME
9
+ * `BREAKPOINTS[].minWidth` values the span system uses.
10
+ *
11
+ * Semantics:
12
+ * - `hideOn: ['xs','sm']` → hidden across the xs+sm ranges → hidden below the
13
+ * md threshold (768px) → `@media (max-width:767.98px){ display:none }`.
14
+ * - `showOn: ['lg','xl']` → visible ONLY in the lg+xl ranges → hidden below
15
+ * lg (1024px) AND at/above the breakpoint after xl (2xl = 1536px).
16
+ * - `showOn` is the inverse of `hideOn`; when both are present `showOn` wins.
17
+ *
18
+ * @module @pwfabric/runtime/render/visibility-css
19
+ */
20
+ import { BREAKPOINTS, BREAKPOINT_ORDER } from '@pwfabric/core';
21
+ import { blockSelector, collectScopedCss } from './scoped-css.js';
22
+ /** Sub-pixel epsilon so `max-width` ranges don't overlap the next `min-width`. */
23
+ const MAX_EPSILON = 0.02;
24
+ /** `[minWidth, maxExclusive)` pixel range a named breakpoint covers. */
25
+ function rangeFor(bp) {
26
+ const idx = BREAKPOINTS.findIndex((b) => b.name === bp);
27
+ const def = BREAKPOINTS[idx];
28
+ const next = BREAKPOINTS[idx + 1];
29
+ return {
30
+ min: def?.minWidth ?? 0,
31
+ maxExclusive: next?.minWidth ?? Number.POSITIVE_INFINITY,
32
+ };
33
+ }
34
+ /**
35
+ * Resolve the SET of breakpoints at which a block must be hidden, given its
36
+ * `hideOn` / `showOn` declarations. `showOn` takes precedence (the block is
37
+ * hidden at every breakpoint NOT listed in `showOn`).
38
+ */
39
+ export function resolveHiddenBreakpoints(hideOn, showOn) {
40
+ if (showOn && showOn.length > 0) {
41
+ const visible = new Set(showOn);
42
+ return BREAKPOINT_ORDER.filter((bp) => !visible.has(bp));
43
+ }
44
+ if (hideOn && hideOn.length > 0) {
45
+ const hide = new Set(hideOn);
46
+ return BREAKPOINT_ORDER.filter((bp) => hide.has(bp));
47
+ }
48
+ return [];
49
+ }
50
+ /**
51
+ * Collapse a set of hidden breakpoints into the minimal set of
52
+ * `[min, maxExclusive)` pixel ranges (contiguous breakpoints merge).
53
+ */
54
+ function collapseRanges(hidden) {
55
+ // Order by the canonical breakpoint order so contiguity is by ascending width.
56
+ const ordered = BREAKPOINT_ORDER.filter((bp) => hidden.includes(bp));
57
+ const out = [];
58
+ for (const bp of ordered) {
59
+ const r = rangeFor(bp);
60
+ const last = out[out.length - 1];
61
+ if (last && last.maxExclusive === r.min) {
62
+ last.maxExclusive = r.maxExclusive; // contiguous → extend
63
+ }
64
+ else {
65
+ out.push({ ...r });
66
+ }
67
+ }
68
+ return out;
69
+ }
70
+ /** Build a single `@media` condition for a `[min, maxExclusive)` range. */
71
+ function mediaCondition(min, maxExclusive) {
72
+ const parts = [];
73
+ if (min > 0)
74
+ parts.push(`(min-width:${min}px)`);
75
+ if (Number.isFinite(maxExclusive))
76
+ parts.push(`(max-width:${maxExclusive - MAX_EPSILON}px)`);
77
+ return parts.join(' and ');
78
+ }
79
+ /**
80
+ * Emit the CSS rule(s) that hide a single block at the resolved breakpoints.
81
+ * Targets `[data-block-id="<id>"]` scoped under the surface root so it cannot
82
+ * leak to the host page. Uses `!important` so the rule beats the inline layout
83
+ * style (`display:grid`/flex on the wrapper) it must override.
84
+ *
85
+ * Returns '' when there is nothing to hide.
86
+ */
87
+ export function blockVisibilityCss(blockId, hidden, surfaceId) {
88
+ if (hidden.length === 0)
89
+ return '';
90
+ const ranges = collapseRanges(hidden);
91
+ // The whole spectrum is hidden (no showOn match anywhere): unconditional hide.
92
+ const everything = ranges.length === 1 && ranges[0].min === 0 && !Number.isFinite(ranges[0].maxExclusive);
93
+ const selector = blockSelector(blockId, surfaceId);
94
+ if (everything) {
95
+ return `${selector}{display:none !important}`;
96
+ }
97
+ return ranges
98
+ .map((r) => {
99
+ const cond = mediaCondition(r.min, r.maxExclusive);
100
+ return `@media ${cond}{${selector}{display:none !important}}`;
101
+ })
102
+ .join('');
103
+ }
104
+ /**
105
+ * Walk a surface block tree and concatenate the per-block visibility CSS for
106
+ * every block declaring `hideOn` / `showOn`. Blocks without either are skipped
107
+ * (zero bytes emitted) so existing surfaces are byte-identical.
108
+ */
109
+ export function collectVisibilityCss(blocks, surfaceId) {
110
+ return collectScopedCss(blocks, (block) => {
111
+ const layout = block.layout;
112
+ if (layout && (layout.hideOn?.length || layout.showOn?.length)) {
113
+ const hidden = resolveHiddenBreakpoints(layout.hideOn, layout.showOn);
114
+ return blockVisibilityCss(block.id, hidden, surfaceId);
115
+ }
116
+ return '';
117
+ });
118
+ }
119
+ //# sourceMappingURL=visibility-css.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"visibility-css.js","sourceRoot":"","sources":["../../src/render/visibility-css.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Width scope — splits blocks into groups while KEEPING SOURCE ORDER.
3
+ *
4
+ * WHY. If the surface root carried both the 12-column grid and
5
+ * `maxWidth: var(--pw-layout-container-max-width)` + `margin: 0 auto`,
6
+ * persistent chrome would sit inside the centred box too (on a 1536px screen
7
+ * a persistent rail would start 218px in from the edge). The rule: persistent
8
+ * navigation chrome belongs to the viewport, the content body to the measure.
9
+ *
10
+ * WHY GROUPS, NOT BUCKETS. A surface runs `[navbar][body…][bottombar]`.
11
+ * Collecting `viewport`-scoped blocks into one bucket and `container` ones
12
+ * into another would break the order and put the bottom bar next to the top
13
+ * bar. Consecutive grouping keeps the order: three groups, three DOM siblings.
14
+ *
15
+ * WHY NOT 100vw. The `width:100vw; margin-inline:calc(50% - 50vw)` trick is
16
+ * the short way out of a centred container and is NOT used: `100vw` counts
17
+ * the scrollbar too, so every page with a vertical scrollbar would get ~15px
18
+ * of horizontal overflow — the very defect this module exists to avoid.
19
+ *
20
+ * @module @pwfabric/runtime/render/width-scope
21
+ */
22
+ import { type Block, type BreakpointName } from '@pwfabric/core';
23
+ import type { WidthScope } from '@pwfabric/contracts';
24
+ export interface WidthScopeChunk {
25
+ readonly scope: WidthScope;
26
+ readonly blocks: readonly Block[];
27
+ }
28
+ /**
29
+ * A block's scope at this breakpoint. Without a declaration it is
30
+ * `container`, so a block that declares nothing keeps the default behaviour.
31
+ */
32
+ export declare function resolveWidthScope(block: Block, viewport: BreakpointName): WidthScope;
33
+ /** Groups consecutive blocks of the same scope together; order is kept. */
34
+ export declare function chunkByWidthScope(blocks: readonly Block[], viewport: BreakpointName): readonly WidthScopeChunk[];
35
+ //# sourceMappingURL=width-scope.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"width-scope.d.ts","sourceRoot":"","sources":["../../src/render/width-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EAGL,KAAK,KAAK,EACV,KAAK,cAAc,EACpB,MAAM,gBAAgB,CAAA;AAIvB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAErD,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAA;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,KAAK,EAAE,CAAA;CAClC;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,GAAG,UAAU,CAGpF;AAED,2EAA2E;AAC3E,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,KAAK,EAAE,EACxB,QAAQ,EAAE,cAAc,GACvB,SAAS,eAAe,EAAE,CAS5B"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Width scope — splits blocks into groups while KEEPING SOURCE ORDER.
3
+ *
4
+ * WHY. If the surface root carried both the 12-column grid and
5
+ * `maxWidth: var(--pw-layout-container-max-width)` + `margin: 0 auto`,
6
+ * persistent chrome would sit inside the centred box too (on a 1536px screen
7
+ * a persistent rail would start 218px in from the edge). The rule: persistent
8
+ * navigation chrome belongs to the viewport, the content body to the measure.
9
+ *
10
+ * WHY GROUPS, NOT BUCKETS. A surface runs `[navbar][body…][bottombar]`.
11
+ * Collecting `viewport`-scoped blocks into one bucket and `container` ones
12
+ * into another would break the order and put the bottom bar next to the top
13
+ * bar. Consecutive grouping keeps the order: three groups, three DOM siblings.
14
+ *
15
+ * WHY NOT 100vw. The `width:100vw; margin-inline:calc(50% - 50vw)` trick is
16
+ * the short way out of a centred container and is NOT used: `100vw` counts
17
+ * the scrollbar too, so every page with a vertical scrollbar would get ~15px
18
+ * of horizontal overflow — the very defect this module exists to avoid.
19
+ *
20
+ * @module @pwfabric/runtime/render/width-scope
21
+ */
22
+ import { DEFAULT_BLOCK_LAYOUT, resolveResponsiveValue, } from '@pwfabric/core';
23
+ /**
24
+ * A block's scope at this breakpoint. Without a declaration it is
25
+ * `container`, so a block that declares nothing keeps the default behaviour.
26
+ */
27
+ export function resolveWidthScope(block, viewport) {
28
+ const layout = block.layout ?? DEFAULT_BLOCK_LAYOUT;
29
+ return resolveResponsiveValue(layout.widthScope, viewport) ?? 'container';
30
+ }
31
+ /** Groups consecutive blocks of the same scope together; order is kept. */
32
+ export function chunkByWidthScope(blocks, viewport) {
33
+ const chunks = [];
34
+ for (const block of blocks) {
35
+ const scope = resolveWidthScope(block, viewport);
36
+ const last = chunks[chunks.length - 1];
37
+ if (last && last.scope === scope)
38
+ last.blocks.push(block);
39
+ else
40
+ chunks.push({ scope, blocks: [block] });
41
+ }
42
+ return chunks;
43
+ }
44
+ //# sourceMappingURL=width-scope.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"width-scope.js","sourceRoot":"","sources":["../../src/render/width-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,OAAO,EACL,oBAAoB,EACpB,sBAAsB,GAGvB,MAAM,gBAAgB,CAAA;AAWvB;;;GAGG;AACH,MAAM,UAAU,iBAAiB,CAAC,KAAY,EAAE,QAAwB;IACtE,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,oBAAoB,CAAA;IACnD,OAAO,sBAAsB,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,IAAI,WAAW,CAAA;AAC3E,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,iBAAiB,CAC/B,MAAwB,EACxB,QAAwB;IAExB,MAAM,MAAM,GAA6C,EAAE,CAAA;IAC3D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAChD,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;QACtC,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,KAAK,KAAK;YAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;;YACpD,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;IAC9C,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * WRITE-ONLY SOURCES — a form's target that nothing on the page reads.
3
+ *
4
+ * A data source a form writes to (`platform/entities` `config.formBindings[].sourceId`)
5
+ * was also fetched as a list on mount and again after every submit (the
6
+ * bridge's `refreshAll`). For an intake-only model — anonymous visitors may
7
+ * create, never list — that is a refused request on every visit and every
8
+ * submit (`GET /_host/records/<model>` → 403
9
+ * `RECORDS_NOT_PUBLIC`, `__errors.records` set, no block bound to it).
10
+ *
11
+ * A source is write-only when:
12
+ * - at least one form binding targets it, and every binding that does writes
13
+ * with POST (a PATCH/PUT needs the loaded record to know what to update), and
14
+ * - its id is referenced NOWHERE else: no block (props, expressions, actions,
15
+ * repeat), no behavior, no other source, no other capability config.
16
+ *
17
+ * The reference check is a whole-word search of every string, which errs on
18
+ * the side of fetching: a stray word equal to the id keeps today's behaviour.
19
+ * A write-only source stays declared and registered — it is still the write
20
+ * target — it is just never asked for its rows.
21
+ *
22
+ * @module @pwfabric/runtime/render/write-only-sources
23
+ */
24
+ export interface WriteOnlySourceInput {
25
+ readonly blocks: readonly unknown[];
26
+ readonly dataSources: readonly {
27
+ readonly id: string;
28
+ }[];
29
+ readonly capabilities?: readonly unknown[] | undefined;
30
+ readonly behaviors?: readonly unknown[] | undefined;
31
+ }
32
+ /** The ids of the declared sources that are only ever written to. */
33
+ export declare function writeOnlySourceIds(input: WriteOnlySourceInput): ReadonlySet<string>;
34
+ //# sourceMappingURL=write-only-sources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-only-sources.d.ts","sourceRoot":"","sources":["../../src/render/write-only-sources.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAcH,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,OAAO,EAAE,CAAA;IACnC,QAAQ,CAAC,WAAW,EAAE,SAAS;QAAE,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IACxD,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAA;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,SAAS,OAAO,EAAE,GAAG,SAAS,CAAA;CACpD;AAyBD,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,oBAAoB,GAAG,WAAW,CAAC,MAAM,CAAC,CA2CnF"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * WRITE-ONLY SOURCES — a form's target that nothing on the page reads.
3
+ *
4
+ * A data source a form writes to (`platform/entities` `config.formBindings[].sourceId`)
5
+ * was also fetched as a list on mount and again after every submit (the
6
+ * bridge's `refreshAll`). For an intake-only model — anonymous visitors may
7
+ * create, never list — that is a refused request on every visit and every
8
+ * submit (`GET /_host/records/<model>` → 403
9
+ * `RECORDS_NOT_PUBLIC`, `__errors.records` set, no block bound to it).
10
+ *
11
+ * A source is write-only when:
12
+ * - at least one form binding targets it, and every binding that does writes
13
+ * with POST (a PATCH/PUT needs the loaded record to know what to update), and
14
+ * - its id is referenced NOWHERE else: no block (props, expressions, actions,
15
+ * repeat), no behavior, no other source, no other capability config.
16
+ *
17
+ * The reference check is a whole-word search of every string, which errs on
18
+ * the side of fetching: a stray word equal to the id keeps today's behaviour.
19
+ * A write-only source stays declared and registered — it is still the write
20
+ * target — it is just never asked for its rows.
21
+ *
22
+ * @module @pwfabric/runtime/render/write-only-sources
23
+ */
24
+ import { isCapability } from '../capability/type-mapping.js';
25
+ function collectStrings(value, out, seen) {
26
+ if (typeof value === 'string') {
27
+ out.push(value);
28
+ return;
29
+ }
30
+ if (value === null || typeof value !== 'object')
31
+ return;
32
+ if (seen.has(value))
33
+ return;
34
+ seen.add(value);
35
+ if (Array.isArray(value)) {
36
+ for (const v of value)
37
+ collectStrings(v, out, seen);
38
+ return;
39
+ }
40
+ for (const [k, v] of Object.entries(value)) {
41
+ // A key can be a reference too (`{ records: … }` maps).
42
+ out.push(k);
43
+ collectStrings(v, out, seen);
44
+ }
45
+ }
46
+ function escapeRegExp(s) {
47
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
48
+ }
49
+ /** The ids of the declared sources that are only ever written to. */
50
+ export function writeOnlySourceIds(input) {
51
+ const capabilities = (input.capabilities ?? []);
52
+ const entities = capabilities.find((c) => isCapability(c, 'platform/entities'));
53
+ const bindings = entities?.config?.formBindings;
54
+ if (!Array.isArray(bindings) || bindings.length === 0)
55
+ return new Set();
56
+ // Candidates: targeted by a form, and only ever with POST.
57
+ const postOnly = new Map();
58
+ for (const raw of bindings) {
59
+ if (typeof raw?.sourceId !== 'string')
60
+ continue;
61
+ const isPost = raw.method === undefined || raw.method === 'POST';
62
+ postOnly.set(raw.sourceId, (postOnly.get(raw.sourceId) ?? true) && isPost);
63
+ }
64
+ const declared = new Set(input.dataSources.map((s) => s.id));
65
+ const candidates = [...postOnly].filter(([id, post]) => post && declared.has(id)).map(([id]) => id);
66
+ if (candidates.length === 0)
67
+ return new Set();
68
+ // Everything that could read a source, minus the declarations themselves:
69
+ // the form bindings (they ARE the write) and the source list (each source is
70
+ // checked against the OTHER sources below).
71
+ const strings = [];
72
+ const seen = new Set();
73
+ collectStrings(input.blocks, strings, seen);
74
+ collectStrings(input.behaviors ?? [], strings, seen);
75
+ for (const c of capabilities) {
76
+ const config = c.config;
77
+ if (config === null || typeof config !== 'object')
78
+ continue;
79
+ const rest = { ...config };
80
+ delete rest['dataSources'];
81
+ delete rest['behaviors']; // collected above (the same list, seeded from persistence)
82
+ if (c === entities)
83
+ delete rest['formBindings'];
84
+ collectStrings(rest, strings, seen);
85
+ }
86
+ const result = new Set();
87
+ for (const id of candidates) {
88
+ const word = new RegExp(`(^|[^A-Za-z0-9_$])${escapeRegExp(id)}([^A-Za-z0-9_$]|$)`);
89
+ const others = [];
90
+ for (const s of input.dataSources)
91
+ if (s.id !== id)
92
+ collectStrings(s, others, new Set());
93
+ const read = strings.some((s) => word.test(s)) || others.some((s) => word.test(s));
94
+ if (!read)
95
+ result.add(id);
96
+ }
97
+ return result;
98
+ }
99
+ //# sourceMappingURL=write-only-sources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"write-only-sources.js","sourceRoot":"","sources":["../../src/render/write-only-sources.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Routing Capability Module
3
+ *
4
+ * Route matching, navigation, and URL parameter resolution
5
+ *
6
+ * Exports:
7
+ * - Types: RouteDefinition, RouteMatch, NavigationTarget, RoutingCapability, etc.
8
+ * - Implementations: DefaultRoutingCapability
9
+ * - Factory functions: createRoutingCapability
10
+ *
11
+ * @module @pwfabric/runtime/routing
12
+ */
13
+ export type { RouteDefinition, RouteGuard, RouteGuardContext, RouteMatchResult, RouteMatch, NavigationTarget, NavigationResult, NavigationFailureReason, NavigationListener, RoutingCapability, } from './types.js';
14
+ export { DefaultRoutingCapability, createRoutingCapability } from './router.js';
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAGH,YAAY,EACV,eAAe,EACf,UAAU,EACV,iBAAiB,EACjB,gBAAgB,EAChB,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Routing Capability Module
3
+ *
4
+ * Route matching, navigation, and URL parameter resolution
5
+ *
6
+ * Exports:
7
+ * - Types: RouteDefinition, RouteMatch, NavigationTarget, RoutingCapability, etc.
8
+ * - Implementations: DefaultRoutingCapability
9
+ * - Factory functions: createRoutingCapability
10
+ *
11
+ * @module @pwfabric/runtime/routing
12
+ */
13
+ // Implementations
14
+ export { DefaultRoutingCapability, createRoutingCapability } from './router.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/routing/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAgBH,kBAAkB;AAClB,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAA"}
@@ -0,0 +1,43 @@
1
+ /**
2
+ * Routing Capability Implementation
3
+ *
4
+ * Route matching, navigation, and parameter resolution
5
+ *
6
+ * @module @pwfabric/runtime/routing/router
7
+ */
8
+ import type { RoutingCapability, RouteDefinition, RouteMatch, RouteMatchResult, NavigationTarget, NavigationResult, NavigationListener } from './types.js';
9
+ /**
10
+ * Default routing capability implementation
11
+ */
12
+ export declare class DefaultRoutingCapability implements RoutingCapability {
13
+ private readonly routes;
14
+ private readonly listeners;
15
+ private readonly navigationHistory;
16
+ private currentRoute;
17
+ private readonly maxHistorySize;
18
+ constructor(options?: {
19
+ maxHistorySize?: number;
20
+ });
21
+ addRoute(route: RouteDefinition): void;
22
+ removeRoute(routeId: string): boolean;
23
+ matchRoute(path: string): RouteMatchResult;
24
+ navigate(target: NavigationTarget): Promise<NavigationResult>;
25
+ resolveParams(pattern: string, params: Record<string, string>): string;
26
+ getCurrentRoute(): RouteMatch | undefined;
27
+ getHistory(): readonly RouteMatch[];
28
+ onNavigate(listener: NavigationListener): () => void;
29
+ getRouteIds(): readonly string[];
30
+ clear(): void;
31
+ private compileRoute;
32
+ private tryMatch;
33
+ private parsePath;
34
+ private buildPath;
35
+ private notifyListeners;
36
+ }
37
+ /**
38
+ * Create a routing capability instance
39
+ */
40
+ export declare function createRoutingCapability(options?: {
41
+ maxHistorySize?: number;
42
+ }): RoutingCapability;
43
+ //# sourceMappingURL=router.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/routing/router.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EACnB,MAAM,YAAY,CAAA;AAgBnB;;GAEG;AACH,qBAAa,wBAAyB,YAAW,iBAAiB;IAChE,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAmC;IAC1D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAgC;IAC1D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAmB;IACrD,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAQ;gBAE3B,OAAO,CAAC,EAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE;IAIjD,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAQtC,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAIrC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB;IAapC,QAAQ,CAAC,MAAM,EAAE,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAuDnE,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAQtE,eAAe,IAAI,UAAU,GAAG,SAAS;IAIzC,UAAU,IAAI,SAAS,UAAU,EAAE;IAInC,UAAU,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,IAAI;IAOpD,WAAW,IAAI,SAAS,MAAM,EAAE;IAIhC,KAAK,IAAI,IAAI;IAWb,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,QAAQ;IA2BhB,OAAO,CAAC,SAAS;IAsCjB,OAAO,CAAC,SAAS;IAiBjB,OAAO,CAAC,eAAe;CASxB;AAMD;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE;IAAE,cAAc,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,iBAAiB,CAEhG"}