@ccslabs/xtend 0.1.0-rc.1 → 0.1.2

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 (566) hide show
  1. package/CHANGELOG.md +2 -0
  2. package/README.md +4 -0
  3. package/catalog/component-catalog-coverage.js +2 -0
  4. package/catalog/epic13-package-export-lock.js +11 -1
  5. package/catalog/epic13-rmt-production-readiness.js +0 -1
  6. package/catalog/epic18-rmt-action-effect-runtime.d.ts +36 -0
  7. package/catalog/epic18-rmt-action-effect-runtime.js +249 -0
  8. package/catalog/epic18-rmt-app-platform-authoring.d.ts +39 -0
  9. package/catalog/epic18-rmt-app-platform-authoring.js +319 -0
  10. package/catalog/epic18-rmt-app-platform-fixture.d.ts +33 -0
  11. package/catalog/epic18-rmt-app-platform-fixture.js +221 -0
  12. package/catalog/epic18-rmt-app-platform-release-handoff.d.ts +30 -0
  13. package/catalog/epic18-rmt-app-platform-release-handoff.js +231 -0
  14. package/catalog/epic18-rmt-app-platform-tooling.d.ts +38 -0
  15. package/catalog/epic18-rmt-app-platform-tooling.js +242 -0
  16. package/catalog/epic18-rmt-component-template-primitives.d.ts +33 -0
  17. package/catalog/epic18-rmt-component-template-primitives.js +240 -0
  18. package/catalog/epic18-rmt-dom-descriptor-renderer.d.ts +35 -0
  19. package/catalog/epic18-rmt-dom-descriptor-renderer.js +232 -0
  20. package/catalog/epic18-rmt-event-routing-runtime.d.ts +35 -0
  21. package/catalog/epic18-rmt-event-routing-runtime.js +234 -0
  22. package/catalog/epic18-rmt-state-selector-runtime.d.ts +34 -0
  23. package/catalog/epic18-rmt-state-selector-runtime.js +216 -0
  24. package/catalog/epic18-rmt-surface-resource-graph-runtime.d.ts +36 -0
  25. package/catalog/epic18-rmt-surface-resource-graph-runtime.js +256 -0
  26. package/catalog/surface-manager-controller.js +5 -1
  27. package/catalog/surface-manager-materialization.js +7 -1
  28. package/catalog/surface-manager-overlay-bridge.js +41 -6
  29. package/catalog/surface-manager-workbench-fixture.js +1 -1
  30. package/catalog/surface-type-capability-matrix.d.ts +61 -0
  31. package/catalog/surface-type-capability-matrix.js +183 -0
  32. package/catalog/type-exports-rmt.js +37 -1
  33. package/catalog/type-exports.js +3 -3
  34. package/components/icon-packs/lucide.js +4 -0
  35. package/components/manifest.json +2 -0
  36. package/components/prism-rmt.d.ts +34 -0
  37. package/components/prism-rmt.js +130 -0
  38. package/components/xcards.js +15 -0
  39. package/components/xcode.d.ts +36 -1
  40. package/components/xcode.js +215 -20
  41. package/components/xfooter.js +17 -0
  42. package/components/xheader.js +14 -0
  43. package/components/xhero.js +16 -1
  44. package/components/xlink.js +97 -14
  45. package/components/xmasonry.js +15 -0
  46. package/components/xplayer.d.ts +44 -2
  47. package/components/xplayer.js +242 -15
  48. package/components/xrouter.js +27 -2
  49. package/components/xsection.js +15 -0
  50. package/components/xsidepanel.js +10 -2
  51. package/components/xsurfacemanager-controller.d.ts +2 -1
  52. package/components/xsurfacemanager-controller.js +27 -3
  53. package/components/xsurfacemanager.d.ts +2 -0
  54. package/components/xsurfacemanager.js +20 -8
  55. package/components/xsurfaceoverlay-bridge.d.ts +20 -5
  56. package/components/xsurfaceoverlay-bridge.js +114 -18
  57. package/components/xsurfaceportal.d.ts +29 -0
  58. package/components/xsurfaceportal.js +122 -0
  59. package/components/xsurfaceregion.d.ts +50 -0
  60. package/components/xsurfaceregion.js +285 -0
  61. package/components/xsurfacewindow.js +2 -1
  62. package/components/xtooltip.js +89 -23
  63. package/docs/README.md +222 -298
  64. package/docs/changelog.md +107 -0
  65. package/docs/component-catalog-coverage.md +9 -9
  66. package/docs/component-platform.md +19 -1
  67. package/docs/component-ux-app-authoring.md +56 -63
  68. package/docs/components/xcode.md +83 -53
  69. package/docs/components/xsurfaceportal.md +32 -0
  70. package/docs/components/xsurfaceregion.md +37 -0
  71. package/docs/components.md +105 -69
  72. package/docs/de/README.md +264 -0
  73. package/docs/de/XTend-ADR.md +221 -0
  74. package/docs/de/a11y-keyboard-smokes.md +62 -0
  75. package/docs/de/about.md +18 -0
  76. package/docs/de/api.md +157 -0
  77. package/docs/de/best-practices.md +76 -0
  78. package/docs/de/changelog.md +107 -0
  79. package/docs/de/component-catalog-coverage.md +58 -0
  80. package/docs/de/component-lab.md +103 -0
  81. package/docs/de/component-long-tail-migration.md +41 -0
  82. package/docs/de/component-platform.md +177 -0
  83. package/docs/de/component-ux-app-authoring.md +123 -0
  84. package/docs/de/component-ux-authoring.md +96 -0
  85. package/docs/de/component-ux-gates.md +45 -0
  86. package/docs/de/components/x-rmt-lifecycle-demo-build.md +60 -0
  87. package/docs/de/components/xalert.md +81 -0
  88. package/docs/de/components/xbutton.md +103 -0
  89. package/docs/de/components/xcalendar.md +82 -0
  90. package/docs/de/components/xcards.md +128 -0
  91. package/docs/de/components/xcheckbox.md +102 -0
  92. package/docs/de/components/xcode.md +156 -0
  93. package/docs/de/components/xdialog.md +92 -0
  94. package/docs/de/components/xdrawer.md +84 -0
  95. package/docs/de/components/xfooter.md +126 -0
  96. package/docs/de/components/xform.md +128 -0
  97. package/docs/de/components/xheader.md +308 -0
  98. package/docs/de/components/xhero.md +142 -0
  99. package/docs/de/components/xicon.md +125 -0
  100. package/docs/de/components/xinput.md +129 -0
  101. package/docs/de/components/xlightbox.md +98 -0
  102. package/docs/de/components/xlink.md +109 -0
  103. package/docs/de/components/xmasonry.md +124 -0
  104. package/docs/de/components/xmenu.md +158 -0
  105. package/docs/de/components/xmodal.md +82 -0
  106. package/docs/de/components/xplayer.md +104 -0
  107. package/docs/de/components/xpopover.md +67 -0
  108. package/docs/de/components/xprogress.md +56 -0
  109. package/docs/de/components/xradio.md +103 -0
  110. package/docs/de/components/xrouter.md +260 -0
  111. package/docs/de/components/xsection.md +125 -0
  112. package/docs/de/components/xselect.md +105 -0
  113. package/docs/de/components/xsidepanel.md +30 -0
  114. package/docs/de/components/xspinner.md +102 -0
  115. package/docs/de/components/xstate.md +148 -0
  116. package/docs/de/components/xstatus.md +55 -0
  117. package/docs/de/components/xsummary.md +78 -0
  118. package/docs/de/components/xsurfacemanager.md +27 -0
  119. package/docs/de/components/xsurfacewindow.md +21 -0
  120. package/docs/de/components/xtabs.md +160 -0
  121. package/docs/de/components/xtextarea.md +98 -0
  122. package/docs/de/components/xtheme.md +167 -0
  123. package/docs/de/components/xtoast.md +62 -0
  124. package/docs/de/components/xtooltip.md +66 -0
  125. package/docs/de/components/xtype.md +82 -0
  126. package/docs/de/components/xutils.md +144 -0
  127. package/docs/de/components/xwriter.md +94 -0
  128. package/docs/de/components.md +153 -0
  129. package/docs/de/conditional-network-evidence-ci.md +38 -0
  130. package/docs/de/conditional-network-evidence.md +50 -0
  131. package/docs/de/core-migration-guide.md +110 -0
  132. package/docs/de/design-tokens.md +116 -0
  133. package/docs/de/docs-rmt-production-hardening.md +31 -0
  134. package/docs/de/enterprise-adoption.md +413 -0
  135. package/docs/de/enterprise-component-flex-release-handoff.md +129 -0
  136. package/docs/de/epic10-platform-gates.md +62 -0
  137. package/docs/de/epic10-release-handoff.md +81 -0
  138. package/docs/de/epic11-enterprise-ux-handoff.md +70 -0
  139. package/docs/de/epic12-rc0-handoff.md +61 -0
  140. package/docs/de/epic18-media-manager-vendor-upstream.md +318 -0
  141. package/docs/de/epic18-rmt-app-platform-release-handoff.md +67 -0
  142. package/docs/de/epic18-vendor-bugfixes.md +34 -0
  143. package/docs/de/existing-component-metadata.md +67 -0
  144. package/docs/de/hydration-performance-closure.md +34 -0
  145. package/docs/de/hydration-policies.md +71 -0
  146. package/docs/de/known-residual-triage.md +22 -0
  147. package/docs/de/manifest-import-policy.md +79 -0
  148. package/docs/de/manifest.md +112 -0
  149. package/docs/de/motion-contrast.md +67 -0
  150. package/docs/de/package-export-lock.md +44 -0
  151. package/docs/de/performance-measurements.md +106 -0
  152. package/docs/de/performance-regression.md +89 -0
  153. package/docs/de/performance.md +94 -0
  154. package/docs/de/previews/README.md +17 -0
  155. package/docs/de/prod-browser-csp-smokes.md +40 -0
  156. package/docs/de/public-component-types.md +79 -0
  157. package/docs/de/quick-start-guide.md +220 -0
  158. package/docs/de/rc0-adoption-guide.md +102 -0
  159. package/docs/de/rc0-gate-matrix.md +58 -0
  160. package/docs/de/rc1-gate-matrix-ci-handoff.md +56 -0
  161. package/docs/de/rc1-migration-notes.md +69 -0
  162. package/docs/de/rc1-readiness.md +46 -0
  163. package/docs/de/release-owner-acceptance.md +56 -0
  164. package/docs/de/release-report-pack-dry-run-evidence.md +39 -0
  165. package/docs/de/rmt-action-effect-runtime.md +81 -0
  166. package/docs/de/rmt-app-platform-authoring.md +54 -0
  167. package/docs/de/rmt-app-platform-fixture.md +46 -0
  168. package/docs/de/rmt-app-platform-migration-guide.md +88 -0
  169. package/docs/de/rmt-app-platform-tooling.md +79 -0
  170. package/docs/de/rmt-component-template-primitives.md +57 -0
  171. package/docs/de/rmt-dom-descriptor-renderer.md +64 -0
  172. package/docs/de/rmt-dsl-authoring-polish.md +145 -0
  173. package/docs/de/rmt-event-routing-runtime.md +81 -0
  174. package/docs/de/rmt-first-demo-app.md +77 -0
  175. package/docs/de/rmt-first-xtend-apps.md +129 -0
  176. package/docs/de/rmt-kernel-panic-recovery-incident-handoff.md +61 -0
  177. package/docs/de/rmt-kernel-security-hardening-migration.md +50 -0
  178. package/docs/de/rmt-kernel-trusted-output-authoring.md +69 -0
  179. package/docs/de/rmt-language-server.md +234 -0
  180. package/docs/de/rmt-lifecycle-demo.md +24 -0
  181. package/docs/de/rmt-linter.md +140 -0
  182. package/docs/de/rmt-node-ssr-adapter.md +100 -0
  183. package/docs/de/rmt-php-ssr-adapter.md +120 -0
  184. package/docs/de/rmt-production-readiness.md +63 -0
  185. package/docs/de/rmt-state-selector-runtime.md +47 -0
  186. package/docs/de/rmt-surface-resource-graph-runtime.md +92 -0
  187. package/docs/de/rmt-tooling-release-gates.md +77 -0
  188. package/docs/de/rmt-vnext-authoring.md +170 -0
  189. package/docs/de/rmt-vnext-component-primitives.md +188 -0
  190. package/docs/de/rmt-vnext-cross-surface-events.md +68 -0
  191. package/docs/de/rmt-vnext-enterprise-mfe-handoff.md +70 -0
  192. package/docs/de/rmt-vnext-fabric-bridge-evidence.md +81 -0
  193. package/docs/de/rmt-vnext-migration-notes.md +62 -0
  194. package/docs/de/rmt-vnext-primitive-authoring-tooling.md +247 -0
  195. package/docs/de/rmt-vnext-primitive-grammar-design.md +289 -0
  196. package/docs/de/rmt-vnext-primitive-lowering.md +108 -0
  197. package/docs/de/rmt-vnext-primitive-migration.md +119 -0
  198. package/docs/de/rmt-vnext-primitive-parser-ast.md +76 -0
  199. package/docs/de/rmt-vnext-primitive-semantic-graph.md +118 -0
  200. package/docs/de/rmt-vnext-primitives-compiler-backlog.md +739 -0
  201. package/docs/de/rmt-vnext-release-handoff.md +83 -0
  202. package/docs/de/rmt-vnext-remote-surfaces.md +90 -0
  203. package/docs/de/rmt-vnext-source-to-sea-gate.md +612 -0
  204. package/docs/de/rmt-vnext-surface-registry-enterprise.md +76 -0
  205. package/docs/de/screenreader-signals.md +56 -0
  206. package/docs/de/supply-chain-gates.md +100 -0
  207. package/docs/de/surface-manager-authoring-guide.md +94 -0
  208. package/docs/de/surface-manager-browser-lab.md +45 -0
  209. package/docs/de/surface-manager-component-lab.md +43 -0
  210. package/docs/de/surface-manager-controller.md +66 -0
  211. package/docs/de/surface-manager-layout-engines.md +32 -0
  212. package/docs/de/surface-manager-lazy-hydration.md +63 -0
  213. package/docs/de/surface-manager-migration-guide.md +122 -0
  214. package/docs/de/surface-manager-native-rmt-surfaces.md +38 -0
  215. package/docs/de/surface-manager-overlay-bridge.md +53 -0
  216. package/docs/de/surface-manager-persistence.md +30 -0
  217. package/docs/de/surface-manager-quality-gates.md +51 -0
  218. package/docs/de/surface-manager-release-handoff.md +68 -0
  219. package/docs/de/surface-manager-remote-policy.md +54 -0
  220. package/docs/de/surface-manager-rmt-authoring.md +102 -0
  221. package/docs/de/surface-manager-route-lifecycle.md +59 -0
  222. package/docs/de/surface-manager-runtime-release-handoff.md +69 -0
  223. package/docs/de/surface-manager-side-panel-runtime.md +36 -0
  224. package/docs/de/surface-manager-stack-policy.md +39 -0
  225. package/docs/de/surface-manager-window-runtime.md +47 -0
  226. package/docs/de/surface-manager-workbench-fixture.md +43 -0
  227. package/docs/de/third-party-design-authoring.md +406 -0
  228. package/docs/de/trusted-dom-boundary-browser-proof.md +32 -0
  229. package/docs/de/trusted-dom-sanitizing.md +110 -0
  230. package/docs/de/type-exports.md +61 -0
  231. package/docs/de/typescript-components.md +63 -0
  232. package/docs/de/visual-browser-regression.md +83 -0
  233. package/docs/de/visual-owner-artifacts.md +46 -0
  234. package/docs/de/visual-snapshot-automation.md +87 -0
  235. package/docs/de/xtend-api-types.md +55 -0
  236. package/docs/de/xtend-builder-types.md +55 -0
  237. package/docs/de/xtend-catalog-types.md +44 -0
  238. package/docs/de/xtend-fabric-rmt-lane-mapping.md +143 -0
  239. package/docs/de/xtend-fabric.md +474 -0
  240. package/docs/de/xtend-loader-types.md +58 -0
  241. package/docs/de/xtend-loader.md +265 -0
  242. package/docs/de/xtend-policy-types.md +38 -0
  243. package/docs/de/xtend-rmt-types.md +40 -0
  244. package/docs/de/xtend-vendor-types.md +36 -0
  245. package/docs/de/xtendrmt-app-dsl.md +334 -0
  246. package/docs/de/xtendrmt-migration-guide.md +266 -0
  247. package/docs/de/xtendrmt-native-authoring.md +333 -0
  248. package/docs/de/xtendrmt-overview.md +109 -0
  249. package/docs/de/xtendrmt-parsedown-scheduling.md +301 -0
  250. package/docs/de/xtendrmt-runtime-bridge.md +155 -0
  251. package/docs/en/README.md +163 -0
  252. package/docs/en/XTend-ADR.md +221 -0
  253. package/docs/en/a11y-keyboard-smokes.md +68 -0
  254. package/docs/en/about.md +25 -0
  255. package/docs/en/api.md +171 -0
  256. package/docs/en/best-practices.md +125 -0
  257. package/docs/en/changelog.md +104 -0
  258. package/docs/en/component-catalog-coverage.md +104 -0
  259. package/docs/en/component-lab.md +103 -0
  260. package/docs/en/component-long-tail-migration.md +41 -0
  261. package/docs/en/component-platform.md +243 -0
  262. package/docs/en/component-ux-app-authoring.md +118 -0
  263. package/docs/en/component-ux-authoring.md +96 -0
  264. package/docs/en/component-ux-gates.md +45 -0
  265. package/docs/en/components/x-rmt-lifecycle-demo-build.md +75 -0
  266. package/docs/en/components/xalert.md +94 -0
  267. package/docs/en/components/xbutton.md +118 -0
  268. package/docs/en/components/xcalendar.md +95 -0
  269. package/docs/en/components/xcards.md +139 -0
  270. package/docs/en/components/xcheckbox.md +118 -0
  271. package/docs/en/components/xcode.md +153 -0
  272. package/docs/en/components/xdialog.md +108 -0
  273. package/docs/en/components/xdrawer.md +110 -0
  274. package/docs/en/components/xfooter.md +138 -0
  275. package/docs/en/components/xform.md +147 -0
  276. package/docs/en/components/xheader.md +308 -0
  277. package/docs/en/components/xhero.md +157 -0
  278. package/docs/en/components/xicon.md +149 -0
  279. package/docs/en/components/xinput.md +147 -0
  280. package/docs/en/components/xlightbox.md +113 -0
  281. package/docs/en/components/xlink.md +130 -0
  282. package/docs/en/components/xmasonry.md +136 -0
  283. package/docs/en/components/xmenu.md +185 -0
  284. package/docs/en/components/xmodal.md +102 -0
  285. package/docs/en/components/xplayer.md +114 -0
  286. package/docs/en/components/xpopover.md +87 -0
  287. package/docs/en/components/xprogress.md +73 -0
  288. package/docs/en/components/xradio.md +119 -0
  289. package/docs/en/components/xrouter.md +260 -0
  290. package/docs/en/components/xsection.md +136 -0
  291. package/docs/en/components/xselect.md +122 -0
  292. package/docs/en/components/xsidepanel.md +48 -0
  293. package/docs/en/components/xspinner.md +118 -0
  294. package/docs/en/components/xstate.md +163 -0
  295. package/docs/en/components/xstatus.md +71 -0
  296. package/docs/en/components/xsummary.md +90 -0
  297. package/docs/en/components/xsurfacemanager.md +42 -0
  298. package/docs/en/components/xsurfacewindow.md +31 -0
  299. package/docs/en/components/xtabs.md +187 -0
  300. package/docs/en/components/xtextarea.md +115 -0
  301. package/docs/en/components/xtheme.md +203 -0
  302. package/docs/en/components/xtoast.md +78 -0
  303. package/docs/en/components/xtooltip.md +85 -0
  304. package/docs/en/components/xtype.md +91 -0
  305. package/docs/en/components/xutils.md +161 -0
  306. package/docs/en/components/xwriter.md +106 -0
  307. package/docs/en/components.md +151 -0
  308. package/docs/en/conditional-network-evidence-ci.md +38 -0
  309. package/docs/en/conditional-network-evidence.md +50 -0
  310. package/docs/en/core-migration-guide.md +110 -0
  311. package/docs/en/design-tokens.md +137 -0
  312. package/docs/en/docs-rmt-production-hardening.md +31 -0
  313. package/docs/en/enterprise-adoption.md +413 -0
  314. package/docs/en/enterprise-component-flex-release-handoff.md +129 -0
  315. package/docs/en/epic10-platform-gates.md +62 -0
  316. package/docs/en/epic10-release-handoff.md +81 -0
  317. package/docs/en/epic11-enterprise-ux-handoff.md +70 -0
  318. package/docs/en/epic12-rc0-handoff.md +61 -0
  319. package/docs/en/epic18-media-manager-vendor-upstream.md +232 -0
  320. package/docs/en/epic18-rmt-app-platform-release-handoff.md +60 -0
  321. package/docs/en/epic18-vendor-bugfixes.md +29 -0
  322. package/docs/en/existing-component-metadata.md +67 -0
  323. package/docs/en/hydration-performance-closure.md +34 -0
  324. package/docs/en/hydration-policies.md +75 -0
  325. package/docs/en/known-residual-triage.md +22 -0
  326. package/docs/en/manifest-import-policy.md +81 -0
  327. package/docs/en/manifest.md +135 -0
  328. package/docs/en/motion-contrast.md +67 -0
  329. package/docs/en/package-export-lock.md +44 -0
  330. package/docs/en/performance-measurements.md +106 -0
  331. package/docs/en/performance-regression.md +89 -0
  332. package/docs/en/performance.md +132 -0
  333. package/docs/en/previews/README.md +17 -0
  334. package/docs/en/prod-browser-csp-smokes.md +40 -0
  335. package/docs/en/public-component-types.md +79 -0
  336. package/docs/en/quick-start-guide.md +189 -0
  337. package/docs/en/rc0-adoption-guide.md +102 -0
  338. package/docs/en/rc0-gate-matrix.md +58 -0
  339. package/docs/en/rc1-gate-matrix-ci-handoff.md +56 -0
  340. package/docs/en/rc1-migration-notes.md +69 -0
  341. package/docs/en/rc1-readiness.md +46 -0
  342. package/docs/en/release-owner-acceptance.md +56 -0
  343. package/docs/en/release-report-pack-dry-run-evidence.md +39 -0
  344. package/docs/en/rmt-action-effect-runtime.md +101 -0
  345. package/docs/en/rmt-app-platform-authoring.md +47 -0
  346. package/docs/en/rmt-app-platform-fixture.md +35 -0
  347. package/docs/en/rmt-app-platform-migration-guide.md +75 -0
  348. package/docs/en/rmt-app-platform-tooling.md +58 -0
  349. package/docs/en/rmt-component-template-primitives.md +49 -0
  350. package/docs/en/rmt-dom-descriptor-renderer.md +54 -0
  351. package/docs/en/rmt-dsl-authoring-polish.md +143 -0
  352. package/docs/en/rmt-event-routing-runtime.md +98 -0
  353. package/docs/en/rmt-first-demo-app.md +87 -0
  354. package/docs/en/rmt-first-xtend-apps.md +127 -0
  355. package/docs/en/rmt-kernel-panic-recovery-incident-handoff.md +60 -0
  356. package/docs/en/rmt-kernel-security-hardening-migration.md +49 -0
  357. package/docs/en/rmt-kernel-trusted-output-authoring.md +68 -0
  358. package/docs/en/rmt-language-server.md +243 -0
  359. package/docs/en/rmt-lifecycle-demo.md +23 -0
  360. package/docs/en/rmt-linter.md +146 -0
  361. package/docs/en/rmt-node-ssr-adapter.md +99 -0
  362. package/docs/en/rmt-php-ssr-adapter.md +118 -0
  363. package/docs/en/rmt-production-readiness.md +63 -0
  364. package/docs/en/rmt-state-selector-runtime.md +34 -0
  365. package/docs/en/rmt-surface-resource-graph-runtime.md +68 -0
  366. package/docs/en/rmt-tooling-release-gates.md +77 -0
  367. package/docs/en/rmt-vnext-authoring.md +102 -0
  368. package/docs/en/rmt-vnext-component-primitives.md +185 -0
  369. package/docs/en/rmt-vnext-cross-surface-events.md +59 -0
  370. package/docs/en/rmt-vnext-enterprise-mfe-handoff.md +62 -0
  371. package/docs/en/rmt-vnext-fabric-bridge-evidence.md +64 -0
  372. package/docs/en/rmt-vnext-migration-notes.md +62 -0
  373. package/docs/en/rmt-vnext-primitive-authoring-tooling.md +174 -0
  374. package/docs/en/rmt-vnext-primitive-grammar-design.md +268 -0
  375. package/docs/en/rmt-vnext-primitive-lowering.md +91 -0
  376. package/docs/en/rmt-vnext-primitive-migration.md +93 -0
  377. package/docs/en/rmt-vnext-primitive-parser-ast.md +59 -0
  378. package/docs/en/rmt-vnext-primitive-semantic-graph.md +103 -0
  379. package/docs/en/rmt-vnext-primitives-compiler-backlog.md +327 -0
  380. package/docs/en/rmt-vnext-release-handoff.md +83 -0
  381. package/docs/en/rmt-vnext-remote-surfaces.md +81 -0
  382. package/docs/en/rmt-vnext-source-to-sea-gate.md +482 -0
  383. package/docs/en/rmt-vnext-surface-registry-enterprise.md +68 -0
  384. package/docs/en/screenreader-signals.md +56 -0
  385. package/docs/en/supply-chain-gates.md +106 -0
  386. package/docs/en/surface-manager-authoring-guide.md +94 -0
  387. package/docs/en/surface-manager-browser-lab.md +45 -0
  388. package/docs/en/surface-manager-component-lab.md +43 -0
  389. package/docs/en/surface-manager-controller.md +66 -0
  390. package/docs/en/surface-manager-layout-engines.md +32 -0
  391. package/docs/en/surface-manager-lazy-hydration.md +63 -0
  392. package/docs/en/surface-manager-migration-guide.md +113 -0
  393. package/docs/en/surface-manager-native-rmt-surfaces.md +38 -0
  394. package/docs/en/surface-manager-overlay-bridge.md +53 -0
  395. package/docs/en/surface-manager-persistence.md +30 -0
  396. package/docs/en/surface-manager-quality-gates.md +51 -0
  397. package/docs/en/surface-manager-release-handoff.md +68 -0
  398. package/docs/en/surface-manager-remote-policy.md +54 -0
  399. package/docs/en/surface-manager-rmt-authoring.md +89 -0
  400. package/docs/en/surface-manager-route-lifecycle.md +59 -0
  401. package/docs/en/surface-manager-runtime-release-handoff.md +69 -0
  402. package/docs/en/surface-manager-side-panel-runtime.md +36 -0
  403. package/docs/en/surface-manager-stack-policy.md +39 -0
  404. package/docs/en/surface-manager-window-runtime.md +47 -0
  405. package/docs/en/surface-manager-workbench-fixture.md +43 -0
  406. package/docs/en/third-party-design-authoring.md +406 -0
  407. package/docs/en/trusted-dom-boundary-browser-proof.md +32 -0
  408. package/docs/en/trusted-dom-sanitizing.md +124 -0
  409. package/docs/en/type-exports.md +61 -0
  410. package/docs/en/typescript-components.md +63 -0
  411. package/docs/en/visual-browser-regression.md +83 -0
  412. package/docs/en/visual-owner-artifacts.md +46 -0
  413. package/docs/en/visual-snapshot-automation.md +87 -0
  414. package/docs/en/xtend-api-types.md +55 -0
  415. package/docs/en/xtend-builder-types.md +55 -0
  416. package/docs/en/xtend-catalog-types.md +44 -0
  417. package/docs/en/xtend-fabric-rmt-lane-mapping.md +143 -0
  418. package/docs/en/xtend-fabric.md +474 -0
  419. package/docs/en/xtend-loader-types.md +58 -0
  420. package/docs/en/xtend-loader.md +265 -0
  421. package/docs/en/xtend-policy-types.md +38 -0
  422. package/docs/en/xtend-rmt-types.md +40 -0
  423. package/docs/en/xtend-vendor-types.md +36 -0
  424. package/docs/en/xtendrmt-app-dsl.md +331 -0
  425. package/docs/en/xtendrmt-migration-guide.md +256 -0
  426. package/docs/en/xtendrmt-native-authoring.md +336 -0
  427. package/docs/en/xtendrmt-overview.md +63 -0
  428. package/docs/en/xtendrmt-parsedown-scheduling.md +301 -0
  429. package/docs/en/xtendrmt-runtime-bridge.md +155 -0
  430. package/docs/enterprise-adoption.md +4 -2
  431. package/docs/epic18-media-manager-vendor-upstream.md +318 -0
  432. package/docs/epic18-rmt-app-platform-release-handoff.md +67 -0
  433. package/docs/epic18-vendor-bugfixes.md +34 -0
  434. package/docs/index.php +1056 -109
  435. package/docs/manifest.md +8 -2
  436. package/docs/menu.json +986 -133
  437. package/docs/package-export-lock.md +2 -2
  438. package/docs/public-component-types.md +2 -2
  439. package/docs/quick-start-guide.md +126 -58
  440. package/docs/rmt-action-effect-runtime.md +101 -0
  441. package/docs/rmt-app-platform-authoring.md +54 -0
  442. package/docs/rmt-app-platform-fixture.md +46 -0
  443. package/docs/rmt-app-platform-migration-guide.md +88 -0
  444. package/docs/rmt-app-platform-tooling.md +79 -0
  445. package/docs/rmt-component-template-primitives.md +57 -0
  446. package/docs/rmt-dom-descriptor-renderer.md +64 -0
  447. package/docs/rmt-dsl-authoring-polish.md +67 -44
  448. package/docs/rmt-event-routing-runtime.md +98 -0
  449. package/docs/rmt-first-demo-app.md +2 -2
  450. package/docs/rmt-first-xtend-apps.md +70 -46
  451. package/docs/rmt-language-server.md +61 -4
  452. package/docs/rmt-lifecycle-demo.md +1 -2
  453. package/docs/rmt-node-ssr-adapter.md +144 -0
  454. package/docs/rmt-php-ssr-adapter.md +158 -0
  455. package/docs/rmt-state-selector-runtime.md +47 -0
  456. package/docs/rmt-surface-resource-graph-runtime.md +92 -0
  457. package/docs/rmt-vnext-authoring.md +128 -18
  458. package/docs/rmt-vnext-component-primitives.md +188 -0
  459. package/docs/rmt-vnext-fabric-bridge-evidence.md +81 -0
  460. package/docs/rmt-vnext-primitive-authoring-tooling.md +247 -0
  461. package/docs/rmt-vnext-primitive-grammar-design.md +289 -0
  462. package/docs/rmt-vnext-primitive-lowering.md +108 -0
  463. package/docs/rmt-vnext-primitive-migration.md +119 -0
  464. package/docs/rmt-vnext-primitive-parser-ast.md +76 -0
  465. package/docs/rmt-vnext-primitive-semantic-graph.md +118 -0
  466. package/docs/rmt-vnext-primitives-compiler-backlog.md +742 -0
  467. package/docs/rmt-vnext-release-handoff.md +14 -0
  468. package/docs/rmt-vnext-source-to-sea-gate.md +629 -0
  469. package/docs/surface-manager-migration-guide.md +34 -6
  470. package/docs/surface-manager-overlay-bridge.md +9 -4
  471. package/docs/surface-manager-rmt-authoring.md +50 -34
  472. package/docs/surface-manager-workbench-fixture.md +1 -2
  473. package/docs/third-party-design-authoring.md +1 -1
  474. package/docs/type-exports.md +3 -3
  475. package/docs/utils/pageloader.js +811 -62
  476. package/docs/visual-browser-regression.md +1 -1
  477. package/docs/xtend-rmt-types.md +3 -2
  478. package/docs/xtendrmt-app-dsl.md +187 -122
  479. package/docs/xtendrmt-docs-shell-vnext.rmt +165 -0
  480. package/docs/xtendrmt-migration-guide.md +48 -17
  481. package/docs/xtendrmt-native-authoring.md +213 -217
  482. package/docs/xtendrmt-overview.md +81 -61
  483. package/docs/xtendrmt-parsedown-scheduling.md +23 -8
  484. package/fabric/package.json +1 -1
  485. package/package.json +684 -21
  486. package/tools/package.json +5 -1
  487. package/tools/rmt-editor/vscode/README.md +72 -5
  488. package/tools/rmt-editor/vscode/XTend-Logo.png +0 -0
  489. package/tools/rmt-editor/vscode/extension.d.ts +33 -0
  490. package/tools/rmt-editor/vscode/extension.js +1816 -7
  491. package/tools/rmt-editor/vscode/language-configuration.json +2 -1
  492. package/tools/rmt-editor/vscode/package.json +193 -2
  493. package/tools/rmt-editor/vscode/snippets/rmt.code-snippets +41 -0
  494. package/tools/rmt-editor/vscode/syntaxes/rmt.tmLanguage.json +103 -1
  495. package/tools/rmt-editor/vscode/templates/launch.json +70 -0
  496. package/tools/rmt-editor/vscode/templates/tasks.json +172 -0
  497. package/tools/rmt-editor/vscode/xtend-rmt-language-0.0.0-enterprise-readiness.vsix +0 -0
  498. package/tools/rmt-language/app-platform-tooling.d.ts +128 -0
  499. package/tools/rmt-language/app-platform-tooling.js +677 -0
  500. package/tools/rmt-language/completions.d.ts +5 -0
  501. package/tools/rmt-language/completions.js +185 -3
  502. package/tools/rmt-language/diagnostics.js +54 -0
  503. package/tools/rmt-language/hover.js +36 -0
  504. package/tools/rmt-language/rmt-tooling-public-types.d.ts +7 -0
  505. package/tools/rmt-language/rules/app-platform-policy.js +39 -0
  506. package/tools/rmt-language/rules/index.js +5 -1
  507. package/tools/rmt-language/semantic-graph.d.ts +6 -0
  508. package/tools/rmt-language/semantic-graph.js +928 -0
  509. package/tools/rmt-language/snippets/index.js +44 -0
  510. package/tools/rmt-language/snippets/rmt.code-snippets +41 -0
  511. package/tools/rmt-language/vnext-compatibility.d.ts +10 -0
  512. package/tools/rmt-language/vnext-compatibility.js +642 -0
  513. package/tools/rmt-language/vnext-compiler.d.ts +5 -0
  514. package/tools/rmt-language/vnext-compiler.js +863 -17
  515. package/tools/rmt-language/vnext-parser.js +725 -9
  516. package/tools/rmt-language/vnext-release.d.ts +1 -0
  517. package/tools/rmt-language/vnext-release.js +20 -0
  518. package/tools/rmt-language/vnext-source-to-sea.d.ts +33 -0
  519. package/tools/rmt-language/vnext-source-to-sea.js +2227 -0
  520. package/tools/rmt-language/vnext-surfaces.js +111 -52
  521. package/tools/rmt-language/vnext-tooling.d.ts +19 -1
  522. package/tools/rmt-language/vnext-tooling.js +1247 -5
  523. package/tools/rmt-language-server/protocol.js +3 -0
  524. package/tools/rmt-language-server/server.d.ts +2 -0
  525. package/tools/rmt-language-server/server.js +176 -22
  526. package/tools/rmt-linter/cli.d.ts +2 -0
  527. package/tools/rmt-linter/cli.js +62 -0
  528. package/xtend-builder/generators/registry.js +11 -0
  529. package/xtend-builder/generators/rmt-app-platform.js +239 -0
  530. package/xtend-builder/generators/rmt-lifecycle-demo.js +3 -11
  531. package/xtend-builder/lib/cli.js +38 -0
  532. package/xtend-builder/package.json +3 -3
  533. package/xtend-builder/scaffold.config.js +29 -2
  534. package/xtend.css +49 -2
  535. package/xtendrmt/package.json +49 -1
  536. package/xtendrmt/rmt-action-effect-runtime.d.ts +126 -0
  537. package/xtendrmt/rmt-action-effect-runtime.js +494 -0
  538. package/xtendrmt/rmt-component-capability-registry.d.ts +180 -0
  539. package/xtendrmt/rmt-component-capability-registry.js +636 -0
  540. package/xtendrmt/rmt-core.d.ts +6 -0
  541. package/xtendrmt/rmt-core.esm.js +32 -6
  542. package/xtendrmt/rmt-dom-descriptor-renderer.d.ts +107 -0
  543. package/xtendrmt/rmt-dom-descriptor-renderer.js +1066 -0
  544. package/xtendrmt/rmt-event-routing-runtime.d.ts +144 -0
  545. package/xtendrmt/rmt-event-routing-runtime.js +666 -0
  546. package/xtendrmt/rmt-lifecycle-demo.app.js +2 -2
  547. package/xtendrmt/rmt-lifecycle-demo.core.json +4 -0
  548. package/xtendrmt/rmt-lifecycle-demo.rmt-build.app.js +1 -1
  549. package/xtendrmt/rmt-lifecycle-demo.rmt-build.scaffold.json +2 -2
  550. package/xtendrmt/rmt-lifecycle-demo.scaffold.json +4 -4
  551. package/xtendrmt/rmt-native-shell-runtime.d.ts +77 -0
  552. package/xtendrmt/rmt-native-shell-runtime.js +309 -0
  553. package/xtendrmt/rmt-node-ssr-adapter.d.ts +197 -0
  554. package/xtendrmt/rmt-node-ssr-adapter.js +1006 -0
  555. package/xtendrmt/rmt-php-ssr-adapter.php +976 -0
  556. package/xtendrmt/rmt-runtime.browser.js +32 -6
  557. package/xtendrmt/rmt-runtime.esm.js +32 -6
  558. package/xtendrmt/rmt-state-selector-runtime.d.ts +166 -0
  559. package/xtendrmt/rmt-state-selector-runtime.js +866 -0
  560. package/xtendrmt/rmt-surface-resource-graph-runtime.d.ts +224 -0
  561. package/xtendrmt/rmt-surface-resource-graph-runtime.js +932 -0
  562. package/xtendrmt/rmt-vnext-enterprise-mfe-demo.core.json +3 -0
  563. package/xtendrmt/rmt-vnext-reference-demo.core.json +3 -0
  564. package/xtendrmt/xtendrmt-bestcase-demo.core.json +3420 -372
  565. package/xtendrmt/xtendrmt-bestcase-demo.js +424 -8
  566. package/xtendrmt/xtendrmt-bestcase-demo.rmt +214 -6
@@ -0,0 +1,256 @@
1
+ const {
2
+ KERNEL_BOUNDARY
3
+ } = require('./epic12-rc0-gate-matrix');
4
+ const {
5
+ RMT_ACTION_EFFECT_RUNTIME_SCHEMA,
6
+ RMT_ACTION_EFFECT_RUNTIME_WORKPACKAGE
7
+ } = require('./epic18-rmt-action-effect-runtime');
8
+ const {
9
+ RMT_EVENT_ROUTING_RUNTIME_SCHEMA,
10
+ RMT_EVENT_ROUTING_RUNTIME_WORKPACKAGE
11
+ } = require('./epic18-rmt-event-routing-runtime');
12
+
13
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_SCHEMA = 'xtend.epic18.rmt-surface-resource-graph-runtime.v1';
14
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_REPORT_SCHEMA = 'xtend.epic18.rmt-surface-resource-graph-runtime-report.v1';
15
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_FIXTURE_SCHEMA = 'xtend.epic18.rmt-surface-resource-graph-runtime-fixture.v1';
16
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_WORKPACKAGE = 'WP-E18-10';
17
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_STATUS = 'accepted-surface-overlay-portal-resource-graph-runtime';
18
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_TARGET = 'surface-overlay-portal-resource-graph-ready';
19
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_MODULE = 'catalog/epic18-rmt-surface-resource-graph-runtime.js';
20
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_RUNTIME = 'xtendrmt/rmt-surface-resource-graph-runtime.js';
21
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_TYPES = 'xtendrmt/rmt-surface-resource-graph-runtime.d.ts';
22
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_SUITE = 'tests/rmt/rmt_surface_resource_graph_runtime_suite.js';
23
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_FIXTURE = 'tests/fixtures/rmt-surface-resource-graph-runtime.rmt';
24
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_DOCS = 'docs/rmt-surface-resource-graph-runtime.md';
25
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_WORKPACKAGE_DOC = 'development/WP-E18-10-Surface-Overlay-Portal-und-Resource-Graph-generisch-haerten.md';
26
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_BACKLOG = 'development/BACKLOG-EPIC-18-XTendRMT-App-Platform-und-Media-Manager-Vendor-Upstream.md';
27
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_EPIC = 'docs/epic18-media-manager-vendor-upstream.md';
28
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_LOCAL_GATE = 'node scripts/run_xtend_tests.js rmt-surface-resource-graph-runtime --json';
29
+ const RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_PACKAGE_SCRIPT = 'npm run test:rmt-surface-resource-graph-runtime';
30
+ const NEXT_WORKPACKAGE = 'WP-E18-11';
31
+ const NEXT_DECISION = 'scaffold-linter-lsp-diagnostics-for-rmt-apps';
32
+
33
+ const REQUIRED_SURFACE_CAPABILITIES = Object.freeze([
34
+ 'keyed-surface-repeater',
35
+ 'bounds-focus-close-destroy-minimize-restore',
36
+ 'surface-persistence',
37
+ 'portal-layer-stack',
38
+ 'overlay-policy-tooltip-toast-popover-lightbox-menu-dialog',
39
+ 'resource-cleanup-per-instance',
40
+ 'event-owner-detach-on-destroy',
41
+ 'minimize-preserves-dom-state',
42
+ 'destroy-releases-owned-resources',
43
+ 'diagnostics'
44
+ ]);
45
+
46
+ const REQUIRED_SURFACE_KINDS = Object.freeze([
47
+ 'workspace',
48
+ 'panel',
49
+ 'overlay-host'
50
+ ]);
51
+
52
+ const REQUIRED_OVERLAY_KINDS = Object.freeze([
53
+ 'tooltip',
54
+ 'toast',
55
+ 'popover',
56
+ 'lightbox',
57
+ 'menu',
58
+ 'dialog'
59
+ ]);
60
+
61
+ const REQUIRED_PORTAL_POLICIES = Object.freeze([
62
+ 'stacked',
63
+ 'modal',
64
+ 'nonmodal',
65
+ 'toast-region',
66
+ 'clipping-escape'
67
+ ]);
68
+
69
+ const REQUIRED_BOUNDARIES = Object.freeze([
70
+ 'no-rmt-kernel-import-of-xtend-types',
71
+ 'no-product-bound-surface-list',
72
+ 'no-product-local-registry-repaint',
73
+ 'portal-layer-policy-is-generic',
74
+ 'resources-owned-per-surface-instance',
75
+ 'normal-ui-no-html-string-renderer'
76
+ ]);
77
+
78
+ const REQUIRED_ARTIFACTS = Object.freeze([
79
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_MODULE,
80
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_SUITE,
81
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_FIXTURE,
82
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_DOCS,
83
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_WORKPACKAGE_DOC,
84
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_RUNTIME,
85
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_TYPES
86
+ ]);
87
+
88
+ const REQUIRED_DOCS = Object.freeze([
89
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_DOCS,
90
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_WORKPACKAGE_DOC,
91
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_BACKLOG,
92
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_EPIC
93
+ ]);
94
+
95
+ function createRmtSurfaceResourceGraphRuntimePlan(options = {}) {
96
+ return {
97
+ schema: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_SCHEMA,
98
+ reportSchema: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_REPORT_SCHEMA,
99
+ fixtureSchema: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_FIXTURE_SCHEMA,
100
+ actionEffectRuntimeSchema: RMT_ACTION_EFFECT_RUNTIME_SCHEMA,
101
+ actionEffectRuntimeWorkpackage: RMT_ACTION_EFFECT_RUNTIME_WORKPACKAGE,
102
+ eventRoutingRuntimeSchema: RMT_EVENT_ROUTING_RUNTIME_SCHEMA,
103
+ eventRoutingRuntimeWorkpackage: RMT_EVENT_ROUTING_RUNTIME_WORKPACKAGE,
104
+ workpackage: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_WORKPACKAGE,
105
+ status: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_STATUS,
106
+ generatedAt: options.generatedAt || 'static-local',
107
+ targetReadiness: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_TARGET,
108
+ module: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_MODULE,
109
+ runtime: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_RUNTIME,
110
+ types: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_TYPES,
111
+ suite: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_SUITE,
112
+ fixture: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_FIXTURE,
113
+ docs: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_DOCS,
114
+ workpackageDocument: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_WORKPACKAGE_DOC,
115
+ localGate: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_LOCAL_GATE,
116
+ packageScript: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_PACKAGE_SCRIPT,
117
+ surfaceCapabilities: REQUIRED_SURFACE_CAPABILITIES.slice(),
118
+ surfaceKinds: REQUIRED_SURFACE_KINDS.slice(),
119
+ overlayKinds: REQUIRED_OVERLAY_KINDS.slice(),
120
+ portalPolicies: REQUIRED_PORTAL_POLICIES.slice(),
121
+ boundaries: REQUIRED_BOUNDARIES.slice(),
122
+ artifactPaths: REQUIRED_ARTIFACTS.slice(),
123
+ requiredDocs: REQUIRED_DOCS.slice(),
124
+ model: {
125
+ keyedSurfaceRepeater: true,
126
+ surfaceLifecycleGeneric: true,
127
+ portalLayerPolicyGeneric: true,
128
+ overlayStackSharedAcrossKinds: true,
129
+ minimizePreservesResources: true,
130
+ destroyReleasesResources: true,
131
+ destroyDetachesEventOwners: true,
132
+ persistenceAdapterInjected: true,
133
+ productSurfaceTaxonomyAllowed: false,
134
+ productRegistryRepaintRequired: false,
135
+ htmlStringRendererRequired: false
136
+ },
137
+ kernelBoundary: KERNEL_BOUNDARY,
138
+ nextWorkpackage: NEXT_WORKPACKAGE,
139
+ nextDecision: NEXT_DECISION
140
+ };
141
+ }
142
+
143
+ function validateRmtSurfaceResourceGraphRuntimePlan(plan = createRmtSurfaceResourceGraphRuntimePlan()) {
144
+ const errors = [];
145
+ const model = plan && plan.model ? plan.model : {};
146
+
147
+ if (!plan || plan.schema !== RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_SCHEMA) errors.push(`schema must be ${RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_SCHEMA}`);
148
+ if (!plan || plan.reportSchema !== RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_REPORT_SCHEMA) errors.push(`reportSchema must be ${RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_REPORT_SCHEMA}`);
149
+ if (!plan || plan.fixtureSchema !== RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_FIXTURE_SCHEMA) errors.push(`fixtureSchema must be ${RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_FIXTURE_SCHEMA}`);
150
+ if (!plan || plan.actionEffectRuntimeSchema !== RMT_ACTION_EFFECT_RUNTIME_SCHEMA) errors.push('WP-E18-10 must build on WP-E18-08 action effect runtime');
151
+ if (!plan || plan.actionEffectRuntimeWorkpackage !== RMT_ACTION_EFFECT_RUNTIME_WORKPACKAGE) errors.push('action effect runtime workpackage must be WP-E18-08');
152
+ if (!plan || plan.eventRoutingRuntimeSchema !== RMT_EVENT_ROUTING_RUNTIME_SCHEMA) errors.push('WP-E18-10 must build on WP-E18-09 event routing runtime');
153
+ if (!plan || plan.eventRoutingRuntimeWorkpackage !== RMT_EVENT_ROUTING_RUNTIME_WORKPACKAGE) errors.push('event routing runtime workpackage must be WP-E18-09');
154
+ if (!plan || plan.workpackage !== RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_WORKPACKAGE) errors.push(`workpackage must be ${RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_WORKPACKAGE}`);
155
+ if (!plan || plan.status !== RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_STATUS) errors.push(`status must be ${RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_STATUS}`);
156
+ if (!plan || plan.targetReadiness !== RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_TARGET) errors.push(`targetReadiness must be ${RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_TARGET}`);
157
+ REQUIRED_SURFACE_CAPABILITIES.forEach((capability) => {
158
+ if (!plan || !plan.surfaceCapabilities.includes(capability)) errors.push(`surface capability missing: ${capability}`);
159
+ });
160
+ REQUIRED_SURFACE_KINDS.forEach((kind) => {
161
+ if (!plan || !plan.surfaceKinds.includes(kind)) errors.push(`surface kind missing: ${kind}`);
162
+ });
163
+ REQUIRED_OVERLAY_KINDS.forEach((kind) => {
164
+ if (!plan || !plan.overlayKinds.includes(kind)) errors.push(`overlay kind missing: ${kind}`);
165
+ });
166
+ REQUIRED_PORTAL_POLICIES.forEach((policy) => {
167
+ if (!plan || !plan.portalPolicies.includes(policy)) errors.push(`portal policy missing: ${policy}`);
168
+ });
169
+ REQUIRED_BOUNDARIES.forEach((boundary) => {
170
+ if (!plan || !plan.boundaries.includes(boundary)) errors.push(`boundary missing: ${boundary}`);
171
+ });
172
+ REQUIRED_ARTIFACTS.forEach((artifact) => {
173
+ if (!plan || !plan.artifactPaths.includes(artifact)) errors.push(`artifact missing: ${artifact}`);
174
+ });
175
+ REQUIRED_DOCS.forEach((doc) => {
176
+ if (!plan || !plan.requiredDocs.includes(doc)) errors.push(`doc missing: ${doc}`);
177
+ });
178
+ if (model.keyedSurfaceRepeater !== true) errors.push('keyed surface repeater must be implemented');
179
+ if (model.surfaceLifecycleGeneric !== true) errors.push('surface lifecycle must be generic');
180
+ if (model.portalLayerPolicyGeneric !== true) errors.push('portal layer policy must be generic');
181
+ if (model.overlayStackSharedAcrossKinds !== true) errors.push('overlay stack must be shared across overlay kinds');
182
+ if (model.minimizePreservesResources !== true) errors.push('minimize must preserve resources');
183
+ if (model.destroyReleasesResources !== true) errors.push('destroy must release resources');
184
+ if (model.destroyDetachesEventOwners !== true) errors.push('destroy must detach event owners');
185
+ if (model.persistenceAdapterInjected !== true) errors.push('persistence adapter must be injected');
186
+ if (model.productSurfaceTaxonomyAllowed !== false) errors.push('product surface taxonomy must stay disallowed');
187
+ if (model.productRegistryRepaintRequired !== false) errors.push('product registry repaint must not be required');
188
+ if (model.htmlStringRendererRequired !== false) errors.push('html string renderer must not be required');
189
+ if (!plan || plan.kernelBoundary !== KERNEL_BOUNDARY) errors.push(`kernelBoundary must be ${KERNEL_BOUNDARY}`);
190
+ if (!plan || plan.nextWorkpackage !== NEXT_WORKPACKAGE) errors.push(`nextWorkpackage must be ${NEXT_WORKPACKAGE}`);
191
+ if (!plan || plan.nextDecision !== NEXT_DECISION) errors.push(`nextDecision must be ${NEXT_DECISION}`);
192
+
193
+ return {
194
+ schema: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_REPORT_SCHEMA,
195
+ ok: errors.length === 0,
196
+ errors,
197
+ workpackage: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_WORKPACKAGE,
198
+ checkedAt: 'static-local'
199
+ };
200
+ }
201
+
202
+ function createRmtSurfaceResourceGraphRuntimeReport(options = {}) {
203
+ const plan = options.plan || createRmtSurfaceResourceGraphRuntimePlan(options);
204
+ const validation = validateRmtSurfaceResourceGraphRuntimePlan(plan);
205
+
206
+ return {
207
+ schema: RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_REPORT_SCHEMA,
208
+ ok: validation.ok,
209
+ errors: validation.errors.slice(),
210
+ workpackage: plan.workpackage,
211
+ status: plan.status,
212
+ targetReadiness: plan.targetReadiness,
213
+ surfaceCapabilityCount: plan.surfaceCapabilities.length,
214
+ surfaceKindCount: plan.surfaceKinds.length,
215
+ overlayKindCount: plan.overlayKinds.length,
216
+ portalPolicyCount: plan.portalPolicies.length,
217
+ boundaryCount: plan.boundaries.length,
218
+ productSurfaceTaxonomyAllowed: plan.model.productSurfaceTaxonomyAllowed,
219
+ productRegistryRepaintRequired: plan.model.productRegistryRepaintRequired,
220
+ nextWorkpackage: plan.nextWorkpackage,
221
+ nextDecision: plan.nextDecision,
222
+ kernelBoundary: plan.kernelBoundary
223
+ };
224
+ }
225
+
226
+ module.exports = {
227
+ NEXT_DECISION,
228
+ NEXT_WORKPACKAGE,
229
+ REQUIRED_ARTIFACTS,
230
+ REQUIRED_BOUNDARIES,
231
+ REQUIRED_DOCS,
232
+ REQUIRED_OVERLAY_KINDS,
233
+ REQUIRED_PORTAL_POLICIES,
234
+ REQUIRED_SURFACE_CAPABILITIES,
235
+ REQUIRED_SURFACE_KINDS,
236
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_BACKLOG,
237
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_DOCS,
238
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_EPIC,
239
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_FIXTURE,
240
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_FIXTURE_SCHEMA,
241
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_LOCAL_GATE,
242
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_MODULE,
243
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_PACKAGE_SCRIPT,
244
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_REPORT_SCHEMA,
245
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_RUNTIME,
246
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_SCHEMA,
247
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_STATUS,
248
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_SUITE,
249
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_TARGET,
250
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_TYPES,
251
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_WORKPACKAGE,
252
+ RMT_SURFACE_RESOURCE_GRAPH_RUNTIME_WORKPACKAGE_DOC,
253
+ createRmtSurfaceResourceGraphRuntimePlan,
254
+ createRmtSurfaceResourceGraphRuntimeReport,
255
+ validateRmtSurfaceResourceGraphRuntimePlan
256
+ };
@@ -83,7 +83,11 @@ const REQUIRED_SURFACE_TYPES = Object.freeze([
83
83
  'dialog',
84
84
  'drawer',
85
85
  'popover',
86
- 'tooltip'
86
+ 'tooltip',
87
+ 'region',
88
+ 'toast',
89
+ 'lightbox',
90
+ 'menu'
87
91
  ]);
88
92
 
89
93
  const REQUIRED_DIAGNOSTIC_CODES = Object.freeze([
@@ -39,10 +39,16 @@ const SURFACE_MATERIALIZATION_DIAGNOSTICS = Object.freeze([
39
39
  const MATERIALIZED_COMPONENT_TAGS = Object.freeze([
40
40
  'x-surface-manager',
41
41
  'x-surface-window',
42
+ 'x-surface-region',
42
43
  'x-side-panel',
43
44
  'x-modal',
44
45
  'x-dialog',
45
- 'x-drawer'
46
+ 'x-drawer',
47
+ 'x-popover',
48
+ 'x-tooltip',
49
+ 'x-toast',
50
+ 'x-lightbox',
51
+ 'x-menu'
46
52
  ]);
47
53
 
48
54
  const RUNTIME_ARTIFACTS = Object.freeze([
@@ -30,7 +30,12 @@ const RUNTIME_ARTIFACTS = Object.freeze([
30
30
  'components/xsurfacemanager-controller.js',
31
31
  'components/xmodal.js',
32
32
  'components/xdialog.js',
33
- 'components/xdrawer.js'
33
+ 'components/xdrawer.js',
34
+ 'components/xpopover.js',
35
+ 'components/xtooltip.js',
36
+ 'components/xtoast.js',
37
+ 'components/xlightbox.js',
38
+ 'components/xmenu.js'
34
39
  ]);
35
40
 
36
41
  const REQUIRED_ARTIFACTS = Object.freeze([
@@ -57,13 +62,23 @@ const COMPONENT_TAGS = Object.freeze([
57
62
  'x-surface-manager',
58
63
  'x-modal',
59
64
  'x-dialog',
60
- 'x-drawer'
65
+ 'x-drawer',
66
+ 'x-popover',
67
+ 'x-tooltip',
68
+ 'x-toast',
69
+ 'x-lightbox',
70
+ 'x-menu'
61
71
  ]);
62
72
 
63
73
  const OVERLAY_SURFACE_TYPES = Object.freeze([
64
74
  'modal',
65
75
  'dialog',
66
- 'drawer'
76
+ 'drawer',
77
+ 'popover',
78
+ 'tooltip',
79
+ 'toast',
80
+ 'lightbox',
81
+ 'menu'
67
82
  ]);
68
83
 
69
84
  const LEGACY_EVENTS = Object.freeze([
@@ -73,7 +88,18 @@ const LEGACY_EVENTS = Object.freeze([
73
88
  'dialog-closed',
74
89
  'drawer-opened',
75
90
  'drawer-closed',
76
- 'drawer-route-selected'
91
+ 'drawer-route-selected',
92
+ 'popover-opened',
93
+ 'popover-closed',
94
+ 'tooltip-opened',
95
+ 'tooltip-closed',
96
+ 'toast-shown',
97
+ 'toast-dismissed',
98
+ 'lightbox-opened',
99
+ 'lightbox-closed',
100
+ 'menu-opened',
101
+ 'menu-closed',
102
+ 'menu-navigate'
77
103
  ]);
78
104
 
79
105
  const BRIDGE_EVENTS = Object.freeze([
@@ -84,7 +110,12 @@ const BRIDGE_EVENTS = Object.freeze([
84
110
  const LEGACY_STATE_KEYS = Object.freeze([
85
111
  'modal-open-<id>',
86
112
  'dialog-open-<id>',
87
- 'xdrawer-open-<id>'
113
+ 'xdrawer-open-<id>',
114
+ 'xpopover-open-<id>',
115
+ 'xtooltip-open-<id>',
116
+ 'xtoast-state-<id>',
117
+ 'xlightbox-open-<id>',
118
+ 'xmenu-state-<id>'
88
119
  ]);
89
120
 
90
121
  function includesAll(values, required) {
@@ -122,7 +153,7 @@ function createSurfaceManagerOverlayBridgePlan(options = {}) {
122
153
  legacyStateKeys: LEGACY_STATE_KEYS.slice(),
123
154
  runtimeModel: {
124
155
  bridge: 'xsurfaceoverlay-bridge-adapts-existing-overlays-to-surface-records',
125
- managerIntegration: 'x-surface-manager-overlays-slot-auto-registers-x-modal-x-dialog-x-drawer',
156
+ managerIntegration: 'x-surface-manager-overlays-slot-auto-registers-compatible-overlay-primitives',
126
157
  commandBridge: 'surface-overlay-command-to-controller-operation',
127
158
  lifecycleBridge: 'legacy-overlay-events-to-surface-controller',
128
159
  stackPolicy: 'single-controller-stack-for-windows-panels-and-compatible-overlays',
@@ -135,6 +166,8 @@ function createSurfaceManagerOverlayBridgePlan(options = {}) {
135
166
  legacyLifecycleEventsPreserved: true,
136
167
  legacyStateKeysPreserved: true,
137
168
  modalDialogDrawerProfilesImplemented: true,
169
+ lightweightOverlayProfilesImplemented: true,
170
+ normalizedOverlayCommandsImplemented: true,
138
171
  controllerReusedFromWpSm02: true,
139
172
  createsSecondRegistry: false,
140
173
  externalNetworkAllowedInLocalGate: false,
@@ -170,6 +203,8 @@ function validateSurfaceManagerOverlayBridgePlan(plan = createSurfaceManagerOver
170
203
  if (!plan || plan.featureFlags.surfaceOverlayCommandImplemented !== true) errors.push('surface-overlay-command must be implemented');
171
204
  if (!plan || plan.featureFlags.legacyLifecycleEventsPreserved !== true) errors.push('legacy overlay events must be preserved');
172
205
  if (!plan || plan.featureFlags.legacyStateKeysPreserved !== true) errors.push('legacy overlay state keys must be preserved');
206
+ if (!plan || plan.featureFlags.lightweightOverlayProfilesImplemented !== true) errors.push('lightweight overlay profiles must be implemented');
207
+ if (!plan || plan.featureFlags.normalizedOverlayCommandsImplemented !== true) errors.push('overlay command normalization must be implemented');
173
208
  if (!plan || plan.featureFlags.controllerReusedFromWpSm02 !== true) errors.push('WP-SM-06 must reuse WP-SM-02 controller');
174
209
  if (!plan || plan.featureFlags.createsSecondRegistry !== false) errors.push('WP-SM-06 must not create a second registry');
175
210
  if (!plan || plan.featureFlags.rmtKernelImportsXtendTypes !== false) errors.push('RMT kernel boundary must stay clean');
@@ -19,9 +19,9 @@ const SURFACE_MANAGER_WORKBENCH_CONTRACT = 'development/XTend-SurfaceManager-RMT
19
19
  const SURFACE_MANAGER_WORKBENCH_WORKPACKAGE_DOC = 'development/WP-SM-05-RMT-first-Workbench-Fixture-bauen.md';
20
20
  const SURFACE_MANAGER_WORKBENCH_DOCS = 'docs/surface-manager-workbench-fixture.md';
21
21
  const SURFACE_MANAGER_WORKBENCH_FIXTURE = 'xtendrmt/surface-workbench.rmt';
22
- const SURFACE_MANAGER_WORKBENCH_HOST = 'xtendrmt-surface-workbench.html';
23
22
  const SURFACE_MANAGER_WORKBENCH_RUNTIME = 'xtendrmt/surface-workbench.js';
24
23
  const SURFACE_MANAGER_WORKBENCH_BROWSER_SMOKE = 'tests/browser/fixtures/rmt-surface-workbench-smoke.html';
24
+ const SURFACE_MANAGER_WORKBENCH_HOST = SURFACE_MANAGER_WORKBENCH_BROWSER_SMOKE;
25
25
  const SURFACE_MANAGER_WORKBENCH_LOCAL_GATE = 'node scripts/run_xtend_tests.js surface-workbench-fixture --json';
26
26
  const SURFACE_MANAGER_WORKBENCH_PACKAGE_SCRIPT = 'npm run test:surface-workbench-fixture';
27
27
  const NEXT_WORKPACKAGE = 'WP-SM-06';
@@ -0,0 +1,61 @@
1
+ import type {
2
+ XtendCatalogConstant,
3
+ XtendCatalogOptions,
4
+ XtendCatalogReport
5
+ } from './catalog-public-types';
6
+
7
+ export interface SurfaceTypeCapabilityLowering {
8
+ type: string;
9
+ kind: string;
10
+ component: string;
11
+ managerSlot: string;
12
+ portalPolicy: string;
13
+ }
14
+
15
+ export interface SurfaceTypeCapabilityRow {
16
+ schema?: string;
17
+ kind: string;
18
+ runtimeType: string;
19
+ componentTag: string;
20
+ managerSlot: string;
21
+ layer: string;
22
+ stackPolicy: string;
23
+ layoutEligible: boolean;
24
+ resourceOwnership: string;
25
+ portalPolicy: string;
26
+ rmtSyntax?: string;
27
+ lowersTo?: SurfaceTypeCapabilityLowering;
28
+ kernelBoundary?: string;
29
+ }
30
+
31
+ export interface SurfaceTypeCapabilityMatrix {
32
+ schema: string;
33
+ reportSchema: string;
34
+ generatedAt: string;
35
+ rowCount: number;
36
+ runtimeTypes: readonly string[];
37
+ regionKinds: readonly string[];
38
+ overlayKinds: readonly string[];
39
+ rows: readonly SurfaceTypeCapabilityRow[];
40
+ policies: {
41
+ additiveCompatibility: boolean;
42
+ controllerIsSingleRegistry: boolean;
43
+ rmtKernelImportsXtendTypes: boolean;
44
+ genericUiComponent: string;
45
+ portalPolicyComponent: string;
46
+ };
47
+ kernelBoundary: string;
48
+ }
49
+
50
+ export declare const KERNEL_BOUNDARY: XtendCatalogConstant;
51
+ export declare const OVERLAY_KINDS: readonly string[];
52
+ export declare const REGION_KINDS: readonly string[];
53
+ export declare const SURFACE_TYPE_CAPABILITY_MATRIX_REPORT_SCHEMA: string;
54
+ export declare const SURFACE_TYPE_CAPABILITY_MATRIX_SCHEMA: string;
55
+ export declare const SURFACE_TYPE_CAPABILITY_ROWS: readonly SurfaceTypeCapabilityRow[];
56
+ export declare function createSurfaceTypeCapabilityMatrix(options?: XtendCatalogOptions): SurfaceTypeCapabilityMatrix;
57
+ export declare function listSurfaceTypeCapabilityRows(): readonly SurfaceTypeCapabilityRow[];
58
+ export declare function resolveSurfaceTypeCapability(kind: string): SurfaceTypeCapabilityRow | null;
59
+ export declare function surfaceKindToComponentTag(kind: string, fallback?: string): string;
60
+ export declare function surfaceKindToRuntimeType(kind: string, fallback?: string): string;
61
+ export declare function validateSurfaceTypeCapabilityMatrix(matrix?: SurfaceTypeCapabilityMatrix): XtendCatalogReport;
@@ -0,0 +1,183 @@
1
+ const {
2
+ KERNEL_BOUNDARY
3
+ } = require('./epic12-rc0-gate-matrix');
4
+
5
+ const SURFACE_TYPE_CAPABILITY_MATRIX_SCHEMA = 'xtend.surface.type-capability-matrix.v1';
6
+ const SURFACE_TYPE_CAPABILITY_MATRIX_REPORT_SCHEMA = 'xtend.surface.type-capability-matrix-report.v1';
7
+
8
+ const REGION_KINDS = Object.freeze(['root', 'workspace', 'page', 'card', 'list', 'region', 'overlay-host']);
9
+ const OVERLAY_KINDS = Object.freeze(['modal', 'dialog', 'drawer', 'popover', 'tooltip', 'toast', 'lightbox', 'menu']);
10
+
11
+ const SURFACE_TYPE_CAPABILITY_ROWS = Object.freeze([
12
+ Object.freeze({
13
+ kind: 'window',
14
+ runtimeType: 'window',
15
+ componentTag: 'x-surface-window',
16
+ managerSlot: 'windows',
17
+ layer: 'workspace',
18
+ stackPolicy: 'focus-stack',
19
+ layoutEligible: true,
20
+ resourceOwnership: 'surface-instance',
21
+ portalPolicy: 'stacked'
22
+ }),
23
+ Object.freeze({
24
+ kind: 'panel',
25
+ runtimeType: 'side-panel',
26
+ componentTag: 'x-side-panel',
27
+ managerSlot: 'panels',
28
+ layer: 'panel',
29
+ stackPolicy: 'docked-or-overlay-panel',
30
+ layoutEligible: true,
31
+ resourceOwnership: 'surface-instance',
32
+ portalPolicy: 'nonmodal'
33
+ }),
34
+ Object.freeze({
35
+ kind: 'side-panel',
36
+ runtimeType: 'side-panel',
37
+ componentTag: 'x-side-panel',
38
+ managerSlot: 'panels',
39
+ layer: 'panel',
40
+ stackPolicy: 'docked-or-overlay-panel',
41
+ layoutEligible: true,
42
+ resourceOwnership: 'surface-instance',
43
+ portalPolicy: 'nonmodal'
44
+ }),
45
+ ...REGION_KINDS.map((kind) => Object.freeze({
46
+ kind,
47
+ runtimeType: 'region',
48
+ componentTag: 'x-surface-region',
49
+ managerSlot: 'default',
50
+ layer: kind === 'overlay-host' ? 'overlay-host' : 'workspace',
51
+ stackPolicy: kind === 'overlay-host' ? 'portal-host' : 'managed-region',
52
+ layoutEligible: ['workspace', 'page', 'card', 'list', 'region'].includes(kind),
53
+ resourceOwnership: 'surface-instance',
54
+ portalPolicy: kind === 'overlay-host' ? 'clipping-escape' : 'stacked'
55
+ })),
56
+ ...OVERLAY_KINDS.map((kind) => Object.freeze({
57
+ kind,
58
+ runtimeType: kind,
59
+ componentTag: `x-${kind}`,
60
+ managerSlot: 'overlays',
61
+ layer: kind === 'toast' ? 'toast-region' : (kind === 'drawer' ? 'panel-overlay' : 'overlay'),
62
+ stackPolicy: kind === 'toast' ? 'toast-region' : (kind === 'modal' || kind === 'dialog' || kind === 'lightbox' ? 'modal' : 'nonmodal'),
63
+ layoutEligible: false,
64
+ resourceOwnership: 'overlay-instance',
65
+ portalPolicy: kind === 'toast' ? 'toast-region' : (kind === 'popover' || kind === 'tooltip' || kind === 'menu' ? 'clipping-escape' : 'modal')
66
+ }))
67
+ ]);
68
+
69
+ const SURFACE_TYPE_CAPABILITY_INDEX = Object.freeze(Object.fromEntries(
70
+ SURFACE_TYPE_CAPABILITY_ROWS.map((row) => [row.kind, row])
71
+ ));
72
+
73
+ function withSyntax(row) {
74
+ return Object.freeze({
75
+ schema: SURFACE_TYPE_CAPABILITY_MATRIX_SCHEMA,
76
+ ...row,
77
+ rmtSyntax: `surface <id> kind ${row.kind} component ${row.componentTag}`,
78
+ lowersTo: {
79
+ type: row.runtimeType,
80
+ kind: row.kind,
81
+ component: row.componentTag,
82
+ managerSlot: row.managerSlot,
83
+ portalPolicy: row.portalPolicy
84
+ },
85
+ kernelBoundary: KERNEL_BOUNDARY
86
+ });
87
+ }
88
+
89
+ function listSurfaceTypeCapabilityRows() {
90
+ return SURFACE_TYPE_CAPABILITY_ROWS.map(withSyntax);
91
+ }
92
+
93
+ function resolveSurfaceTypeCapability(kind) {
94
+ const key = String(kind || '').trim().toLowerCase();
95
+ const row = SURFACE_TYPE_CAPABILITY_INDEX[key] || null;
96
+ return row ? withSyntax(row) : null;
97
+ }
98
+
99
+ function surfaceKindToRuntimeType(kind, fallback = 'window') {
100
+ const row = resolveSurfaceTypeCapability(kind);
101
+ return row ? row.runtimeType : fallback;
102
+ }
103
+
104
+ function surfaceKindToComponentTag(kind, fallback = 'x-surface-window') {
105
+ const row = resolveSurfaceTypeCapability(kind);
106
+ return row ? row.componentTag : fallback;
107
+ }
108
+
109
+ function createSurfaceTypeCapabilityMatrix(options = {}) {
110
+ const rows = listSurfaceTypeCapabilityRows();
111
+ return {
112
+ schema: SURFACE_TYPE_CAPABILITY_MATRIX_SCHEMA,
113
+ reportSchema: SURFACE_TYPE_CAPABILITY_MATRIX_REPORT_SCHEMA,
114
+ generatedAt: options.generatedAt || 'static-local',
115
+ rowCount: rows.length,
116
+ runtimeTypes: Array.from(new Set(rows.map((row) => row.runtimeType))),
117
+ regionKinds: REGION_KINDS.slice(),
118
+ overlayKinds: OVERLAY_KINDS.slice(),
119
+ rows,
120
+ policies: {
121
+ additiveCompatibility: true,
122
+ controllerIsSingleRegistry: true,
123
+ rmtKernelImportsXtendTypes: false,
124
+ genericUiComponent: 'x-surface-region',
125
+ portalPolicyComponent: 'x-surface-portal'
126
+ },
127
+ kernelBoundary: KERNEL_BOUNDARY
128
+ };
129
+ }
130
+
131
+ function validateSurfaceTypeCapabilityMatrix(matrix = createSurfaceTypeCapabilityMatrix()) {
132
+ const errors = [];
133
+ const rows = Array.isArray(matrix && matrix.rows) ? matrix.rows : [];
134
+ const byKind = new Map(rows.map((row) => [row.kind, row]));
135
+
136
+ if (!matrix || matrix.schema !== SURFACE_TYPE_CAPABILITY_MATRIX_SCHEMA) errors.push(`schema must be ${SURFACE_TYPE_CAPABILITY_MATRIX_SCHEMA}`);
137
+ if (!matrix || matrix.reportSchema !== SURFACE_TYPE_CAPABILITY_MATRIX_REPORT_SCHEMA) errors.push(`reportSchema must be ${SURFACE_TYPE_CAPABILITY_MATRIX_REPORT_SCHEMA}`);
138
+ ['window', 'panel', 'side-panel', ...REGION_KINDS, ...OVERLAY_KINDS].forEach((kind) => {
139
+ if (!byKind.has(kind)) errors.push(`surface kind missing: ${kind}`);
140
+ });
141
+ REGION_KINDS.forEach((kind) => {
142
+ const row = byKind.get(kind);
143
+ if (!row || row.runtimeType !== 'region') errors.push(`${kind} must lower to region`);
144
+ if (!row || row.componentTag !== 'x-surface-region') errors.push(`${kind} must materialize as x-surface-region`);
145
+ });
146
+ OVERLAY_KINDS.forEach((kind) => {
147
+ const row = byKind.get(kind);
148
+ if (!row || row.runtimeType !== kind) errors.push(`${kind} must keep a matching runtime type`);
149
+ if (!row || row.managerSlot !== 'overlays') errors.push(`${kind} must use overlays slot`);
150
+ });
151
+ rows.forEach((row) => {
152
+ if (!row.rmtSyntax || !row.rmtSyntax.includes(`kind ${row.kind}`) || !row.rmtSyntax.includes(`component ${row.componentTag}`)) {
153
+ errors.push(`${row.kind} must expose modern RMT syntax mapping`);
154
+ }
155
+ if (row.kernelBoundary !== KERNEL_BOUNDARY) errors.push(`${row.kind} must keep kernel boundary`);
156
+ });
157
+ if (!matrix || matrix.policies.controllerIsSingleRegistry !== true) errors.push('SurfaceController must remain the single registry');
158
+ if (!matrix || matrix.policies.rmtKernelImportsXtendTypes !== false) errors.push('RMT kernel must not import XTend types');
159
+ if (!matrix || matrix.kernelBoundary !== KERNEL_BOUNDARY) errors.push(`kernelBoundary must be ${KERNEL_BOUNDARY}`);
160
+
161
+ return {
162
+ schema: SURFACE_TYPE_CAPABILITY_MATRIX_REPORT_SCHEMA,
163
+ ok: errors.length === 0,
164
+ errors,
165
+ checkedAt: 'static-local',
166
+ rowCount: rows.length
167
+ };
168
+ }
169
+
170
+ module.exports = {
171
+ KERNEL_BOUNDARY,
172
+ OVERLAY_KINDS,
173
+ REGION_KINDS,
174
+ SURFACE_TYPE_CAPABILITY_MATRIX_REPORT_SCHEMA,
175
+ SURFACE_TYPE_CAPABILITY_MATRIX_SCHEMA,
176
+ SURFACE_TYPE_CAPABILITY_ROWS,
177
+ createSurfaceTypeCapabilityMatrix,
178
+ listSurfaceTypeCapabilityRows,
179
+ resolveSurfaceTypeCapability,
180
+ surfaceKindToComponentTag,
181
+ surfaceKindToRuntimeType,
182
+ validateSurfaceTypeCapabilityMatrix
183
+ };