@ccslabs/xtend 0.1.0-rc.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (664) hide show
  1. package/CHANGELOG.md +65 -0
  2. package/LICENSE +201 -0
  3. package/README.md +184 -0
  4. package/a11y/motion-contrast-policy.d.ts +32 -0
  5. package/a11y/motion-contrast-policy.js +261 -0
  6. package/a11y/runtime-a11y-contract.d.ts +44 -0
  7. package/a11y/runtime-a11y-contract.js +385 -0
  8. package/a11y/screenreader-signals.d.ts +32 -0
  9. package/a11y/screenreader-signals.js +372 -0
  10. package/api.d.ts +168 -0
  11. package/api.js +864 -0
  12. package/catalog/catalog-public-types.d.ts +66 -0
  13. package/catalog/component-catalog-coverage.d.ts +20 -0
  14. package/catalog/component-catalog-coverage.js +377 -0
  15. package/catalog/component-long-tail-migration.d.ts +18 -0
  16. package/catalog/component-long-tail-migration.js +305 -0
  17. package/catalog/component-regression-priority.d.ts +20 -0
  18. package/catalog/component-regression-priority.js +305 -0
  19. package/catalog/enterprise-component-flex-release-handoff.d.ts +32 -0
  20. package/catalog/enterprise-component-flex-release-handoff.js +437 -0
  21. package/catalog/enterprise-component-style-audit.d.ts +22 -0
  22. package/catalog/enterprise-component-style-audit.js +353 -0
  23. package/catalog/enterprise-form-control-theme-a11y.d.ts +19 -0
  24. package/catalog/enterprise-form-control-theme-a11y.js +220 -0
  25. package/catalog/enterprise-icon-control-audit.d.ts +21 -0
  26. package/catalog/enterprise-icon-control-audit.js +258 -0
  27. package/catalog/enterprise-layout-display-media-tokenization.d.ts +20 -0
  28. package/catalog/enterprise-layout-display-media-tokenization.js +237 -0
  29. package/catalog/enterprise-navigation-routing-state-hardening.d.ts +20 -0
  30. package/catalog/enterprise-navigation-routing-state-hardening.js +255 -0
  31. package/catalog/enterprise-overlay-mode-token-parity.d.ts +15 -0
  32. package/catalog/enterprise-overlay-mode-token-parity.js +178 -0
  33. package/catalog/enterprise-third-party-authoring-guide.d.ts +23 -0
  34. package/catalog/enterprise-third-party-authoring-guide.js +310 -0
  35. package/catalog/enterprise-visual-dom-snapshot-matrix.d.ts +31 -0
  36. package/catalog/enterprise-visual-dom-snapshot-matrix.js +357 -0
  37. package/catalog/epic10-existing-component-metadata.d.ts +25 -0
  38. package/catalog/epic10-existing-component-metadata.js +534 -0
  39. package/catalog/epic10-p0-component-wave.d.ts +28 -0
  40. package/catalog/epic10-p0-component-wave.js +688 -0
  41. package/catalog/epic10-platform-gates.d.ts +31 -0
  42. package/catalog/epic10-platform-gates.js +425 -0
  43. package/catalog/epic10-release-handoff.d.ts +30 -0
  44. package/catalog/epic10-release-handoff.js +195 -0
  45. package/catalog/epic11-enterprise-ux-handoff.d.ts +29 -0
  46. package/catalog/epic11-enterprise-ux-handoff.js +403 -0
  47. package/catalog/epic12-docs-adoption.d.ts +29 -0
  48. package/catalog/epic12-docs-adoption.js +183 -0
  49. package/catalog/epic12-rc0-gate-matrix.d.ts +36 -0
  50. package/catalog/epic12-rc0-gate-matrix.js +439 -0
  51. package/catalog/epic12-rc0-handoff.d.ts +30 -0
  52. package/catalog/epic12-rc0-handoff.js +385 -0
  53. package/catalog/epic13-conditional-network-evidence-ci.d.ts +35 -0
  54. package/catalog/epic13-conditional-network-evidence-ci.js +278 -0
  55. package/catalog/epic13-conditional-network-evidence.d.ts +34 -0
  56. package/catalog/epic13-conditional-network-evidence.js +280 -0
  57. package/catalog/epic13-docs-rmt-production-hardening.d.ts +39 -0
  58. package/catalog/epic13-docs-rmt-production-hardening.js +286 -0
  59. package/catalog/epic13-hydration-performance-closure.d.ts +33 -0
  60. package/catalog/epic13-hydration-performance-closure.js +234 -0
  61. package/catalog/epic13-known-residual-triage.d.ts +32 -0
  62. package/catalog/epic13-known-residual-triage.js +339 -0
  63. package/catalog/epic13-package-export-lock.d.ts +41 -0
  64. package/catalog/epic13-package-export-lock.js +604 -0
  65. package/catalog/epic13-prod-browser-csp-smoke.d.ts +35 -0
  66. package/catalog/epic13-prod-browser-csp-smoke.js +218 -0
  67. package/catalog/epic13-rc1-gate-matrix-ci-handoff.d.ts +36 -0
  68. package/catalog/epic13-rc1-gate-matrix-ci-handoff.js +418 -0
  69. package/catalog/epic13-rc1-migration-notes.d.ts +36 -0
  70. package/catalog/epic13-rc1-migration-notes.js +271 -0
  71. package/catalog/epic13-rc1-readiness.d.ts +33 -0
  72. package/catalog/epic13-rc1-readiness.js +487 -0
  73. package/catalog/epic13-release-owner-acceptance.d.ts +33 -0
  74. package/catalog/epic13-release-owner-acceptance.js +354 -0
  75. package/catalog/epic13-release-report-pack-dry-run-evidence.d.ts +36 -0
  76. package/catalog/epic13-release-report-pack-dry-run-evidence.js +253 -0
  77. package/catalog/epic13-rmt-production-readiness.d.ts +35 -0
  78. package/catalog/epic13-rmt-production-readiness.js +314 -0
  79. package/catalog/epic13-trusted-dom-boundary.d.ts +36 -0
  80. package/catalog/epic13-trusted-dom-boundary.js +230 -0
  81. package/catalog/epic13-visual-owner-artifact.d.ts +35 -0
  82. package/catalog/epic13-visual-owner-artifact.js +233 -0
  83. package/catalog/epic14-lsp-handoff.d.ts +28 -0
  84. package/catalog/epic14-lsp-handoff.js +312 -0
  85. package/catalog/epic14-rmt-tooling.d.ts +33 -0
  86. package/catalog/epic14-rmt-tooling.js +282 -0
  87. package/catalog/surface-manager-adapter-runtime.d.ts +37 -0
  88. package/catalog/surface-manager-adapter-runtime.js +203 -0
  89. package/catalog/surface-manager-browser-lab.d.ts +39 -0
  90. package/catalog/surface-manager-browser-lab.js +225 -0
  91. package/catalog/surface-manager-controller.d.ts +43 -0
  92. package/catalog/surface-manager-controller.js +290 -0
  93. package/catalog/surface-manager-layout-engines.d.ts +32 -0
  94. package/catalog/surface-manager-layout-engines.js +161 -0
  95. package/catalog/surface-manager-lazy-loading.d.ts +35 -0
  96. package/catalog/surface-manager-lazy-loading.js +173 -0
  97. package/catalog/surface-manager-materialization.d.ts +37 -0
  98. package/catalog/surface-manager-materialization.js +202 -0
  99. package/catalog/surface-manager-native-rmt-surfaces.d.ts +48 -0
  100. package/catalog/surface-manager-native-rmt-surfaces.js +325 -0
  101. package/catalog/surface-manager-overlay-bridge.d.ts +42 -0
  102. package/catalog/surface-manager-overlay-bridge.js +247 -0
  103. package/catalog/surface-manager-persistence.d.ts +37 -0
  104. package/catalog/surface-manager-persistence.js +178 -0
  105. package/catalog/surface-manager-quality-gates.d.ts +48 -0
  106. package/catalog/surface-manager-quality-gates.js +324 -0
  107. package/catalog/surface-manager-release-handoff.d.ts +47 -0
  108. package/catalog/surface-manager-release-handoff.js +274 -0
  109. package/catalog/surface-manager-remote-policy.d.ts +34 -0
  110. package/catalog/surface-manager-remote-policy.js +199 -0
  111. package/catalog/surface-manager-rmt-authoring.d.ts +44 -0
  112. package/catalog/surface-manager-rmt-authoring.js +368 -0
  113. package/catalog/surface-manager-route-lifecycle.d.ts +32 -0
  114. package/catalog/surface-manager-route-lifecycle.js +162 -0
  115. package/catalog/surface-manager-runtime-release-handoff.d.ts +36 -0
  116. package/catalog/surface-manager-runtime-release-handoff.js +245 -0
  117. package/catalog/surface-manager-side-panel-runtime.d.ts +46 -0
  118. package/catalog/surface-manager-side-panel-runtime.js +307 -0
  119. package/catalog/surface-manager-stack-policy.d.ts +32 -0
  120. package/catalog/surface-manager-stack-policy.js +169 -0
  121. package/catalog/surface-manager-window-runtime.d.ts +45 -0
  122. package/catalog/surface-manager-window-runtime.js +285 -0
  123. package/catalog/surface-manager-workbench-fixture.d.ts +50 -0
  124. package/catalog/surface-manager-workbench-fixture.js +315 -0
  125. package/catalog/type-exports-api.js +236 -0
  126. package/catalog/type-exports-builder.js +405 -0
  127. package/catalog/type-exports-catalog.js +394 -0
  128. package/catalog/type-exports-loader.js +266 -0
  129. package/catalog/type-exports-policy.js +461 -0
  130. package/catalog/type-exports-rmt.js +407 -0
  131. package/catalog/type-exports-vendor.js +365 -0
  132. package/catalog/type-exports.js +574 -0
  133. package/components/icon-packs/core.js +154 -0
  134. package/components/icon-packs/lucide.js +136 -0
  135. package/components/manifest.json +44 -0
  136. package/components/prism.d.ts +73 -0
  137. package/components/prism.js +300 -0
  138. package/components/turndown.d.ts +34 -0
  139. package/components/turndown.js +107 -0
  140. package/components/x-rmt-lifecycle-demo-build.d.ts +78 -0
  141. package/components/x-rmt-lifecycle-demo-build.js +1175 -0
  142. package/components/x-rmt-lifecycle-demo.d.ts +83 -0
  143. package/components/x-rmt-lifecycle-demo.js +1175 -0
  144. package/components/xalert.d.ts +42 -0
  145. package/components/xalert.js +538 -0
  146. package/components/xbutton.d.ts +127 -0
  147. package/components/xbutton.js +612 -0
  148. package/components/xcalendar.d.ts +39 -0
  149. package/components/xcalendar.js +338 -0
  150. package/components/xcards.d.ts +34 -0
  151. package/components/xcards.js +253 -0
  152. package/components/xcheckbox.d.ts +48 -0
  153. package/components/xcheckbox.js +448 -0
  154. package/components/xcode.d.ts +35 -0
  155. package/components/xcode.js +370 -0
  156. package/components/xdialog.d.ts +48 -0
  157. package/components/xdialog.js +763 -0
  158. package/components/xdrawer.d.ts +61 -0
  159. package/components/xdrawer.js +654 -0
  160. package/components/xfooter.d.ts +41 -0
  161. package/components/xfooter.js +351 -0
  162. package/components/xform.d.ts +43 -0
  163. package/components/xform.js +456 -0
  164. package/components/xheader.d.ts +68 -0
  165. package/components/xheader.js +1253 -0
  166. package/components/xhero.d.ts +42 -0
  167. package/components/xhero.js +475 -0
  168. package/components/xicon.d.ts +146 -0
  169. package/components/xicon.js +688 -0
  170. package/components/xinput.d.ts +37 -0
  171. package/components/xinput.js +444 -0
  172. package/components/xlightbox.d.ts +48 -0
  173. package/components/xlightbox.js +571 -0
  174. package/components/xlink.d.ts +63 -0
  175. package/components/xlink.js +565 -0
  176. package/components/xmasonry.d.ts +35 -0
  177. package/components/xmasonry.js +666 -0
  178. package/components/xmenu.d.ts +118 -0
  179. package/components/xmenu.js +1005 -0
  180. package/components/xmodal.d.ts +64 -0
  181. package/components/xmodal.js +831 -0
  182. package/components/xplayer.d.ts +57 -0
  183. package/components/xplayer.js +1748 -0
  184. package/components/xpopover.d.ts +54 -0
  185. package/components/xpopover.js +466 -0
  186. package/components/xprogress.d.ts +40 -0
  187. package/components/xprogress.js +345 -0
  188. package/components/xradio.d.ts +50 -0
  189. package/components/xradio.js +474 -0
  190. package/components/xrouter.d.ts +244 -0
  191. package/components/xrouter.js +1841 -0
  192. package/components/xsection.d.ts +34 -0
  193. package/components/xsection.js +253 -0
  194. package/components/xselect.d.ts +46 -0
  195. package/components/xselect.js +463 -0
  196. package/components/xsidepanel.d.ts +56 -0
  197. package/components/xsidepanel.js +728 -0
  198. package/components/xspinner.d.ts +38 -0
  199. package/components/xspinner.js +388 -0
  200. package/components/xstate.d.ts +137 -0
  201. package/components/xstate.js +493 -0
  202. package/components/xstatus.d.ts +41 -0
  203. package/components/xstatus.js +381 -0
  204. package/components/xsummary.d.ts +43 -0
  205. package/components/xsummary.js +293 -0
  206. package/components/xsurfacemanager-controller.d.ts +130 -0
  207. package/components/xsurfacemanager-controller.js +699 -0
  208. package/components/xsurfacemanager.d.ts +452 -0
  209. package/components/xsurfacemanager.js +3775 -0
  210. package/components/xsurfaceoverlay-bridge.d.ts +43 -0
  211. package/components/xsurfaceoverlay-bridge.js +238 -0
  212. package/components/xsurfacewindow.d.ts +50 -0
  213. package/components/xsurfacewindow.js +576 -0
  214. package/components/xtabs.d.ts +73 -0
  215. package/components/xtabs.js +611 -0
  216. package/components/xtend-public-types.d.ts +208 -0
  217. package/components/xtextarea.d.ts +46 -0
  218. package/components/xtextarea.js +451 -0
  219. package/components/xtheme.d.ts +253 -0
  220. package/components/xtheme.js +1438 -0
  221. package/components/xtoast.d.ts +39 -0
  222. package/components/xtoast.js +389 -0
  223. package/components/xtooltip.d.ts +53 -0
  224. package/components/xtooltip.js +432 -0
  225. package/components/xtype.d.ts +42 -0
  226. package/components/xtype.js +244 -0
  227. package/components/xutils.d.ts +164 -0
  228. package/components/xutils.js +496 -0
  229. package/components/xwriter.d.ts +67 -0
  230. package/components/xwriter.js +854 -0
  231. package/design-tokens/themes/enterprise-light.json +40 -0
  232. package/design-tokens/themes/xtend-signature.json +126 -0
  233. package/design-tokens/xtend-design-tokens.d.ts +95 -0
  234. package/design-tokens/xtend-design-tokens.js +395 -0
  235. package/design-tokens/xtheme-token-alias-layer.d.ts +84 -0
  236. package/design-tokens/xtheme-token-alias-layer.js +423 -0
  237. package/docs/.htaccess +51 -0
  238. package/docs/README.md +340 -0
  239. package/docs/XTend-ADR.md +221 -0
  240. package/docs/a11y-keyboard-smokes.md +62 -0
  241. package/docs/about.md +18 -0
  242. package/docs/api.md +157 -0
  243. package/docs/best-practices.md +76 -0
  244. package/docs/component-catalog-coverage.md +58 -0
  245. package/docs/component-lab.md +103 -0
  246. package/docs/component-long-tail-migration.md +41 -0
  247. package/docs/component-platform.md +159 -0
  248. package/docs/component-ux-app-authoring.md +130 -0
  249. package/docs/component-ux-authoring.md +96 -0
  250. package/docs/component-ux-gates.md +45 -0
  251. package/docs/components/x-rmt-lifecycle-demo-build.md +60 -0
  252. package/docs/components/xalert.md +81 -0
  253. package/docs/components/xbutton.md +103 -0
  254. package/docs/components/xcalendar.md +82 -0
  255. package/docs/components/xcards.md +128 -0
  256. package/docs/components/xcheckbox.md +102 -0
  257. package/docs/components/xcode.md +126 -0
  258. package/docs/components/xdialog.md +92 -0
  259. package/docs/components/xdrawer.md +84 -0
  260. package/docs/components/xfooter.md +126 -0
  261. package/docs/components/xform.md +128 -0
  262. package/docs/components/xheader.md +308 -0
  263. package/docs/components/xhero.md +142 -0
  264. package/docs/components/xicon.md +125 -0
  265. package/docs/components/xinput.md +129 -0
  266. package/docs/components/xlightbox.md +98 -0
  267. package/docs/components/xlink.md +109 -0
  268. package/docs/components/xmasonry.md +124 -0
  269. package/docs/components/xmenu.md +158 -0
  270. package/docs/components/xmodal.md +82 -0
  271. package/docs/components/xplayer.md +104 -0
  272. package/docs/components/xpopover.md +67 -0
  273. package/docs/components/xprogress.md +56 -0
  274. package/docs/components/xradio.md +103 -0
  275. package/docs/components/xrouter.md +260 -0
  276. package/docs/components/xsection.md +125 -0
  277. package/docs/components/xselect.md +105 -0
  278. package/docs/components/xsidepanel.md +30 -0
  279. package/docs/components/xspinner.md +102 -0
  280. package/docs/components/xstate.md +148 -0
  281. package/docs/components/xstatus.md +55 -0
  282. package/docs/components/xsummary.md +78 -0
  283. package/docs/components/xsurfacemanager.md +27 -0
  284. package/docs/components/xsurfacewindow.md +21 -0
  285. package/docs/components/xtabs.md +160 -0
  286. package/docs/components/xtextarea.md +98 -0
  287. package/docs/components/xtheme.md +167 -0
  288. package/docs/components/xtoast.md +62 -0
  289. package/docs/components/xtooltip.md +66 -0
  290. package/docs/components/xtype.md +82 -0
  291. package/docs/components/xutils.md +144 -0
  292. package/docs/components/xwriter.md +94 -0
  293. package/docs/components.md +117 -0
  294. package/docs/conditional-network-evidence-ci.md +38 -0
  295. package/docs/conditional-network-evidence.md +50 -0
  296. package/docs/core-migration-guide.md +110 -0
  297. package/docs/design-tokens.md +116 -0
  298. package/docs/docs-rmt-production-hardening.md +31 -0
  299. package/docs/enterprise-adoption.md +411 -0
  300. package/docs/enterprise-component-flex-release-handoff.md +129 -0
  301. package/docs/epic10-platform-gates.md +62 -0
  302. package/docs/epic10-release-handoff.md +81 -0
  303. package/docs/epic11-enterprise-ux-handoff.md +70 -0
  304. package/docs/epic12-rc0-handoff.md +61 -0
  305. package/docs/existing-component-metadata.md +67 -0
  306. package/docs/hydration-performance-closure.md +34 -0
  307. package/docs/hydration-policies.md +71 -0
  308. package/docs/index.php +1625 -0
  309. package/docs/known-residual-triage.md +22 -0
  310. package/docs/manifest-import-policy.md +79 -0
  311. package/docs/manifest.md +106 -0
  312. package/docs/menu.json +1190 -0
  313. package/docs/motion-contrast.md +67 -0
  314. package/docs/package-export-lock.md +44 -0
  315. package/docs/performance-measurements.md +106 -0
  316. package/docs/performance-regression.md +89 -0
  317. package/docs/performance.md +94 -0
  318. package/docs/previews/README.md +17 -0
  319. package/docs/prod-browser-csp-smokes.md +40 -0
  320. package/docs/public-component-types.md +79 -0
  321. package/docs/quick-start-guide.md +152 -0
  322. package/docs/rc0-adoption-guide.md +102 -0
  323. package/docs/rc0-gate-matrix.md +58 -0
  324. package/docs/rc1-gate-matrix-ci-handoff.md +56 -0
  325. package/docs/rc1-migration-notes.md +69 -0
  326. package/docs/rc1-readiness.md +46 -0
  327. package/docs/release-owner-acceptance.md +56 -0
  328. package/docs/release-report-pack-dry-run-evidence.md +39 -0
  329. package/docs/rmt-dsl-authoring-polish.md +122 -0
  330. package/docs/rmt-first-demo-app.md +77 -0
  331. package/docs/rmt-first-xtend-apps.md +105 -0
  332. package/docs/rmt-kernel-panic-recovery-incident-handoff.md +61 -0
  333. package/docs/rmt-kernel-security-hardening-migration.md +50 -0
  334. package/docs/rmt-kernel-trusted-output-authoring.md +69 -0
  335. package/docs/rmt-language-server.md +177 -0
  336. package/docs/rmt-lifecycle-demo.md +25 -0
  337. package/docs/rmt-linter.md +140 -0
  338. package/docs/rmt-production-readiness.md +63 -0
  339. package/docs/rmt-tooling-release-gates.md +77 -0
  340. package/docs/rmt-vnext-authoring.md +60 -0
  341. package/docs/rmt-vnext-cross-surface-events.md +68 -0
  342. package/docs/rmt-vnext-enterprise-mfe-handoff.md +70 -0
  343. package/docs/rmt-vnext-migration-notes.md +62 -0
  344. package/docs/rmt-vnext-release-handoff.md +69 -0
  345. package/docs/rmt-vnext-remote-surfaces.md +90 -0
  346. package/docs/rmt-vnext-surface-registry-enterprise.md +76 -0
  347. package/docs/screenreader-signals.md +56 -0
  348. package/docs/supply-chain-gates.md +100 -0
  349. package/docs/surface-manager-authoring-guide.md +94 -0
  350. package/docs/surface-manager-browser-lab.md +45 -0
  351. package/docs/surface-manager-component-lab.md +43 -0
  352. package/docs/surface-manager-controller.md +66 -0
  353. package/docs/surface-manager-layout-engines.md +32 -0
  354. package/docs/surface-manager-lazy-hydration.md +63 -0
  355. package/docs/surface-manager-migration-guide.md +94 -0
  356. package/docs/surface-manager-native-rmt-surfaces.md +38 -0
  357. package/docs/surface-manager-overlay-bridge.md +53 -0
  358. package/docs/surface-manager-persistence.md +30 -0
  359. package/docs/surface-manager-quality-gates.md +51 -0
  360. package/docs/surface-manager-release-handoff.md +68 -0
  361. package/docs/surface-manager-remote-policy.md +54 -0
  362. package/docs/surface-manager-rmt-authoring.md +86 -0
  363. package/docs/surface-manager-route-lifecycle.md +59 -0
  364. package/docs/surface-manager-runtime-release-handoff.md +69 -0
  365. package/docs/surface-manager-side-panel-runtime.md +36 -0
  366. package/docs/surface-manager-stack-policy.md +39 -0
  367. package/docs/surface-manager-window-runtime.md +47 -0
  368. package/docs/surface-manager-workbench-fixture.md +43 -0
  369. package/docs/third-party-design-authoring.md +406 -0
  370. package/docs/trusted-dom-boundary-browser-proof.md +32 -0
  371. package/docs/trusted-dom-sanitizing.md +110 -0
  372. package/docs/type-exports.md +61 -0
  373. package/docs/typescript-components.md +63 -0
  374. package/docs/utils/fabric-runtime.js +650 -0
  375. package/docs/utils/pageloader.js +2823 -0
  376. package/docs/utils/parsedown.php +298 -0
  377. package/docs/visual-browser-regression.md +83 -0
  378. package/docs/visual-owner-artifacts.md +46 -0
  379. package/docs/visual-snapshot-automation.md +87 -0
  380. package/docs/xtend-api-types.md +55 -0
  381. package/docs/xtend-builder-types.md +55 -0
  382. package/docs/xtend-catalog-types.md +44 -0
  383. package/docs/xtend-fabric-rmt-lane-mapping.md +143 -0
  384. package/docs/xtend-fabric.md +474 -0
  385. package/docs/xtend-loader-types.md +58 -0
  386. package/docs/xtend-loader.md +265 -0
  387. package/docs/xtend-policy-types.md +38 -0
  388. package/docs/xtend-rmt-types.md +39 -0
  389. package/docs/xtend-vendor-types.md +36 -0
  390. package/docs/xtendrmt-app-dsl.md +269 -0
  391. package/docs/xtendrmt-migration-guide.md +235 -0
  392. package/docs/xtendrmt-native-authoring.md +337 -0
  393. package/docs/xtendrmt-overview.md +89 -0
  394. package/docs/xtendrmt-parsedown-docs.rmt +956 -0
  395. package/docs/xtendrmt-parsedown-scheduling.md +301 -0
  396. package/docs/xtendrmt-runtime-bridge.md +155 -0
  397. package/fabric/hydration-policy.d.ts +27 -0
  398. package/fabric/hydration-policy.js +306 -0
  399. package/fabric/package.json +58 -0
  400. package/fabric/rmt-lane-mapping.d.ts +47 -0
  401. package/fabric/rmt-lane-mapping.js +504 -0
  402. package/fabric/xtend-fabric.d.ts +81 -0
  403. package/fabric/xtend-fabric.js +2669 -0
  404. package/fabric/xtend-policy-public-types.d.ts +135 -0
  405. package/package.json +8225 -0
  406. package/security/README.md +54 -0
  407. package/security/manifest-import-policy.d.ts +43 -0
  408. package/security/manifest-import-policy.js +260 -0
  409. package/security/supply-chain-gate-policy.d.ts +45 -0
  410. package/security/supply-chain-gate-policy.js +249 -0
  411. package/security/trusted-dom-policy.d.ts +36 -0
  412. package/security/trusted-dom-policy.js +316 -0
  413. package/tools/package.json +77 -0
  414. package/tools/rmt-editor/vscode/README.md +33 -0
  415. package/tools/rmt-editor/vscode/extension.d.ts +9 -0
  416. package/tools/rmt-editor/vscode/extension.js +55 -0
  417. package/tools/rmt-editor/vscode/language-configuration.json +28 -0
  418. package/tools/rmt-editor/vscode/package.json +83 -0
  419. package/tools/rmt-editor/vscode/snippets/rmt.code-snippets +243 -0
  420. package/tools/rmt-editor/vscode/syntaxes/rmt.tmLanguage.json +13 -0
  421. package/tools/rmt-editor/vscode/xtend-rmt-language-0.0.0-enterprise-readiness.vsix +0 -0
  422. package/tools/rmt-language/code-actions.d.ts +15 -0
  423. package/tools/rmt-language/code-actions.js +566 -0
  424. package/tools/rmt-language/completions.d.ts +22 -0
  425. package/tools/rmt-language/completions.js +475 -0
  426. package/tools/rmt-language/definitions.d.ts +13 -0
  427. package/tools/rmt-language/definitions.js +212 -0
  428. package/tools/rmt-language/diagnostics.d.ts +23 -0
  429. package/tools/rmt-language/diagnostics.js +486 -0
  430. package/tools/rmt-language/format-adapter.d.ts +16 -0
  431. package/tools/rmt-language/format-adapter.js +270 -0
  432. package/tools/rmt-language/hover.d.ts +12 -0
  433. package/tools/rmt-language/hover.js +326 -0
  434. package/tools/rmt-language/kernel-escalation.d.ts +122 -0
  435. package/tools/rmt-language/kernel-escalation.js +427 -0
  436. package/tools/rmt-language/kernel-panic-monitor.d.ts +176 -0
  437. package/tools/rmt-language/kernel-panic-monitor.js +674 -0
  438. package/tools/rmt-language/kernel-policy-parity.d.ts +142 -0
  439. package/tools/rmt-language/kernel-policy-parity.js +629 -0
  440. package/tools/rmt-language/kernel-recovery.d.ts +173 -0
  441. package/tools/rmt-language/kernel-recovery.js +666 -0
  442. package/tools/rmt-language/kernel-scheduler-failure.d.ts +136 -0
  443. package/tools/rmt-language/kernel-scheduler-failure.js +486 -0
  444. package/tools/rmt-language/kernel-security-regression.d.ts +154 -0
  445. package/tools/rmt-language/kernel-security-regression.js +465 -0
  446. package/tools/rmt-language/kernel-trust-authority.d.ts +120 -0
  447. package/tools/rmt-language/kernel-trust-authority.js +549 -0
  448. package/tools/rmt-language/parser.d.ts +14 -0
  449. package/tools/rmt-language/parser.js +111 -0
  450. package/tools/rmt-language/rmt-tooling-public-types.d.ts +179 -0
  451. package/tools/rmt-language/rules/boundary-policy.js +81 -0
  452. package/tools/rmt-language/rules/document-policy.js +65 -0
  453. package/tools/rmt-language/rules/index.js +29 -0
  454. package/tools/rmt-language/rules/route-policy.js +81 -0
  455. package/tools/rmt-language/rules/scheduler-policy.js +66 -0
  456. package/tools/rmt-language/rules/template-policy.js +130 -0
  457. package/tools/rmt-language/semantic-graph.d.ts +18 -0
  458. package/tools/rmt-language/semantic-graph.js +827 -0
  459. package/tools/rmt-language/snippets/README.md +17 -0
  460. package/tools/rmt-language/snippets/index.d.ts +17 -0
  461. package/tools/rmt-language/snippets/index.js +417 -0
  462. package/tools/rmt-language/snippets/rmt.code-snippets +243 -0
  463. package/tools/rmt-language/source-model.d.ts +14 -0
  464. package/tools/rmt-language/source-model.js +731 -0
  465. package/tools/rmt-language/symbols.d.ts +13 -0
  466. package/tools/rmt-language/symbols.js +183 -0
  467. package/tools/rmt-language/vnext-compatibility.d.ts +28 -0
  468. package/tools/rmt-language/vnext-compatibility.js +675 -0
  469. package/tools/rmt-language/vnext-compiler.d.ts +17 -0
  470. package/tools/rmt-language/vnext-compiler.js +716 -0
  471. package/tools/rmt-language/vnext-composition.d.ts +30 -0
  472. package/tools/rmt-language/vnext-composition.js +595 -0
  473. package/tools/rmt-language/vnext-conditions.d.ts +25 -0
  474. package/tools/rmt-language/vnext-conditions.js +474 -0
  475. package/tools/rmt-language/vnext-cross-surface-events.d.ts +30 -0
  476. package/tools/rmt-language/vnext-cross-surface-events.js +607 -0
  477. package/tools/rmt-language/vnext-degradation.d.ts +23 -0
  478. package/tools/rmt-language/vnext-degradation.js +428 -0
  479. package/tools/rmt-language/vnext-enterprise-fixtures.d.ts +28 -0
  480. package/tools/rmt-language/vnext-enterprise-fixtures.js +487 -0
  481. package/tools/rmt-language/vnext-enterprise-registry.d.ts +21 -0
  482. package/tools/rmt-language/vnext-enterprise-registry.js +495 -0
  483. package/tools/rmt-language/vnext-enterprise-release.d.ts +44 -0
  484. package/tools/rmt-language/vnext-enterprise-release.js +472 -0
  485. package/tools/rmt-language/vnext-event-governance.d.ts +29 -0
  486. package/tools/rmt-language/vnext-event-governance.js +488 -0
  487. package/tools/rmt-language/vnext-events.d.ts +44 -0
  488. package/tools/rmt-language/vnext-events.js +680 -0
  489. package/tools/rmt-language/vnext-import-resolver.d.ts +28 -0
  490. package/tools/rmt-language/vnext-import-resolver.js +642 -0
  491. package/tools/rmt-language/vnext-lifecycle.d.ts +22 -0
  492. package/tools/rmt-language/vnext-lifecycle.js +404 -0
  493. package/tools/rmt-language/vnext-parser.d.ts +21 -0
  494. package/tools/rmt-language/vnext-parser.js +1391 -0
  495. package/tools/rmt-language/vnext-regression.d.ts +25 -0
  496. package/tools/rmt-language/vnext-regression.js +394 -0
  497. package/tools/rmt-language/vnext-release.d.ts +29 -0
  498. package/tools/rmt-language/vnext-release.js +293 -0
  499. package/tools/rmt-language/vnext-remote-compatibility.d.ts +33 -0
  500. package/tools/rmt-language/vnext-remote-compatibility.js +892 -0
  501. package/tools/rmt-language/vnext-remote-compiler.d.ts +14 -0
  502. package/tools/rmt-language/vnext-remote-compiler.js +520 -0
  503. package/tools/rmt-language/vnext-remote-manifest.d.ts +33 -0
  504. package/tools/rmt-language/vnext-remote-manifest.js +538 -0
  505. package/tools/rmt-language/vnext-remote-security.d.ts +27 -0
  506. package/tools/rmt-language/vnext-remote-security.js +380 -0
  507. package/tools/rmt-language/vnext-remote-tooling.d.ts +25 -0
  508. package/tools/rmt-language/vnext-remote-tooling.js +805 -0
  509. package/tools/rmt-language/vnext-scheduler.d.ts +24 -0
  510. package/tools/rmt-language/vnext-scheduler.js +469 -0
  511. package/tools/rmt-language/vnext-security.d.ts +28 -0
  512. package/tools/rmt-language/vnext-security.js +597 -0
  513. package/tools/rmt-language/vnext-streaming.d.ts +28 -0
  514. package/tools/rmt-language/vnext-streaming.js +593 -0
  515. package/tools/rmt-language/vnext-surfaces.d.ts +24 -0
  516. package/tools/rmt-language/vnext-surfaces.js +406 -0
  517. package/tools/rmt-language/vnext-tooling.d.ts +25 -0
  518. package/tools/rmt-language/vnext-tooling.js +728 -0
  519. package/tools/rmt-language-server/protocol.d.ts +22 -0
  520. package/tools/rmt-language-server/protocol.js +352 -0
  521. package/tools/rmt-language-server/server.d.ts +15 -0
  522. package/tools/rmt-language-server/server.js +622 -0
  523. package/tools/rmt-linter/cli.d.ts +14 -0
  524. package/tools/rmt-linter/cli.js +450 -0
  525. package/tools/rmt-linter/reporter.d.ts +16 -0
  526. package/tools/rmt-linter/reporter.js +472 -0
  527. package/xtend-builder/README.md +83 -0
  528. package/xtend-builder/a11y/README.md +42 -0
  529. package/xtend-builder/a11y/component-a11y-profile.d.ts +14 -0
  530. package/xtend-builder/a11y/component-a11y-profile.js +314 -0
  531. package/xtend-builder/blueprints/README.md +105 -0
  532. package/xtend-builder/blueprints/component-blueprint.contract.d.ts +16 -0
  533. package/xtend-builder/blueprints/component-blueprint.contract.js +343 -0
  534. package/xtend-builder/builder-public-types.d.ts +234 -0
  535. package/xtend-builder/extensions/README.md +26 -0
  536. package/xtend-builder/extensions/component-extension-points.d.ts +11 -0
  537. package/xtend-builder/extensions/component-extension-points.js +277 -0
  538. package/xtend-builder/generators/README.md +149 -0
  539. package/xtend-builder/generators/component-files.d.ts +5 -0
  540. package/xtend-builder/generators/component-files.js +769 -0
  541. package/xtend-builder/generators/component-plan.d.ts +4 -0
  542. package/xtend-builder/generators/component-plan.js +104 -0
  543. package/xtend-builder/generators/registry.d.ts +6 -0
  544. package/xtend-builder/generators/registry.js +118 -0
  545. package/xtend-builder/generators/rmt-build.js +738 -0
  546. package/xtend-builder/generators/rmt-lifecycle-demo.js +922 -0
  547. package/xtend-builder/lib/cli.d.ts +9 -0
  548. package/xtend-builder/lib/cli.js +543 -0
  549. package/xtend-builder/lib/layout.d.ts +6 -0
  550. package/xtend-builder/lib/layout.js +153 -0
  551. package/xtend-builder/lib/package-resolver.js +25 -0
  552. package/xtend-builder/package.json +90 -0
  553. package/xtend-builder/performance/README.md +31 -0
  554. package/xtend-builder/performance/component-performance-profile.d.ts +11 -0
  555. package/xtend-builder/performance/component-performance-profile.js +347 -0
  556. package/xtend-builder/performance/component-ux-performance-contract.d.ts +27 -0
  557. package/xtend-builder/performance/component-ux-performance-contract.js +424 -0
  558. package/xtend-builder/preview/README.md +61 -0
  559. package/xtend-builder/preview/component-lab-ux-inspector.d.ts +20 -0
  560. package/xtend-builder/preview/component-lab-ux-inspector.js +448 -0
  561. package/xtend-builder/preview/component-lab.d.ts +14 -0
  562. package/xtend-builder/preview/component-lab.js +278 -0
  563. package/xtend-builder/preview/component-preview.d.ts +5 -0
  564. package/xtend-builder/preview/component-preview.js +160 -0
  565. package/xtend-builder/scaffold.config.d.ts +4 -0
  566. package/xtend-builder/scaffold.config.js +2056 -0
  567. package/xtend-builder/scaffold.d.ts +3 -0
  568. package/xtend-builder/scaffold.js +11 -0
  569. package/xtend-builder/templates/README.md +33 -0
  570. package/xtend-builder/templates/component/a11y.template.ts +11 -0
  571. package/xtend-builder/templates/component/component-suite.template.d.ts +2 -0
  572. package/xtend-builder/templates/component/component-suite.template.js +108 -0
  573. package/xtend-builder/templates/component/contract.template.ts +10 -0
  574. package/xtend-builder/templates/component/demo-plan.template.md +73 -0
  575. package/xtend-builder/templates/component/docs.template.md +301 -0
  576. package/xtend-builder/templates/component/fixture-data.template.ts +28 -0
  577. package/xtend-builder/templates/component/fixture.template.html +37 -0
  578. package/xtend-builder/templates/component/manifest-plan.template.json +22 -0
  579. package/xtend-builder/templates/component/performance.template.ts +13 -0
  580. package/xtend-builder/templates/component/rmt.template.ts +12 -0
  581. package/xtend-builder/templates/component/source.template.d.ts +2 -0
  582. package/xtend-builder/templates/component/source.template.js +137 -0
  583. package/xtend-builder/templates/component/source.template.ts +110 -0
  584. package/xtend-builder/templates/component/types.template.d.ts +423 -0
  585. package/xtend-builder/templates/loader.d.ts +4 -0
  586. package/xtend-builder/templates/loader.js +51 -0
  587. package/xtend-builder/templates/registry.d.ts +6 -0
  588. package/xtend-builder/templates/registry.js +119 -0
  589. package/xtend-builder/typing/README.md +130 -0
  590. package/xtend-builder/typing/component-contract-v2.d.ts +15 -0
  591. package/xtend-builder/typing/component-contract-v2.js +248 -0
  592. package/xtend-builder/typing/component-network-contract.d.ts +22 -0
  593. package/xtend-builder/typing/component-network-contract.js +478 -0
  594. package/xtend-builder/typing/component-shell-contract.d.ts +21 -0
  595. package/xtend-builder/typing/component-shell-contract.js +312 -0
  596. package/xtend-builder/typing/component-styling-contract.d.ts +22 -0
  597. package/xtend-builder/typing/component-styling-contract.js +301 -0
  598. package/xtend-builder/typing/component-types.d.ts +10 -0
  599. package/xtend-builder/typing/component-types.js +551 -0
  600. package/xtend-builder/typing/enterprise-component-flex-hardening-contract.d.ts +20 -0
  601. package/xtend-builder/typing/enterprise-component-flex-hardening-contract.js +332 -0
  602. package/xtend-builder/typing/feedback-status-ux-contract.d.ts +25 -0
  603. package/xtend-builder/typing/feedback-status-ux-contract.js +347 -0
  604. package/xtend-builder/typing/form-controls-ux-contract.d.ts +25 -0
  605. package/xtend-builder/typing/form-controls-ux-contract.js +357 -0
  606. package/xtend-builder/typing/layout-display-media-ux-contract.d.ts +25 -0
  607. package/xtend-builder/typing/layout-display-media-ux-contract.js +420 -0
  608. package/xtend-builder/typing/navigation-routing-ux-contract.d.ts +17 -0
  609. package/xtend-builder/typing/navigation-routing-ux-contract.js +297 -0
  610. package/xtend-builder/typing/overlay-interaction-ux-contract.d.ts +25 -0
  611. package/xtend-builder/typing/overlay-interaction-ux-contract.js +383 -0
  612. package/xtend-builder/typing/rmt-dsl-authoring-polish.d.ts +27 -0
  613. package/xtend-builder/typing/rmt-dsl-authoring-polish.js +419 -0
  614. package/xtend-builder/typing/rmt-shell-authoring-contract.d.ts +26 -0
  615. package/xtend-builder/typing/rmt-shell-authoring-contract.js +315 -0
  616. package/xtend-builder/utils/README.md +8 -0
  617. package/xtend-builder/utils/naming.d.ts +7 -0
  618. package/xtend-builder/utils/naming.js +36 -0
  619. package/xtend-builder/utils/validation.d.ts +5 -0
  620. package/xtend-builder/utils/validation.js +95 -0
  621. package/xtend-builder/wiring/README.md +46 -0
  622. package/xtend-builder/wiring/features.d.ts +5 -0
  623. package/xtend-builder/wiring/features.js +165 -0
  624. package/xtend-builder/wiring/hydration.d.ts +4 -0
  625. package/xtend-builder/wiring/hydration.js +44 -0
  626. package/xtend-builder/wiring/manifest.d.ts +5 -0
  627. package/xtend-builder/wiring/manifest.js +48 -0
  628. package/xtend-builder/workflows/README.md +47 -0
  629. package/xtend-builder/workflows/developer-workflow.d.ts +6 -0
  630. package/xtend-builder/workflows/developer-workflow.js +125 -0
  631. package/xtend-builder/writing/manifest-patcher.d.ts +49 -0
  632. package/xtend-builder/writing/manifest-patcher.js +391 -0
  633. package/xtend-builder/writing/write-plan.d.ts +148 -0
  634. package/xtend-builder/writing/write-plan.js +646 -0
  635. package/xtend-dev.d.ts +23 -0
  636. package/xtend-dev.js +4 -0
  637. package/xtend-loader.d.ts +201 -0
  638. package/xtend-loader.js +1704 -0
  639. package/xtend.css +402 -0
  640. package/xtendrmt/package.json +64 -0
  641. package/xtendrmt/rmt-core.d.ts +4452 -0
  642. package/xtendrmt/rmt-core.esm.js +25793 -0
  643. package/xtendrmt/rmt-first-demo-app.js +265 -0
  644. package/xtendrmt/rmt-first-demo-app.rmt +737 -0
  645. package/xtendrmt/rmt-lifecycle-demo.app.js +493 -0
  646. package/xtendrmt/rmt-lifecycle-demo.core.json +810 -0
  647. package/xtendrmt/rmt-lifecycle-demo.rmt +35 -0
  648. package/xtendrmt/rmt-lifecycle-demo.rmt-build.app.js +153 -0
  649. package/xtendrmt/rmt-lifecycle-demo.rmt-build.core.json +810 -0
  650. package/xtendrmt/rmt-lifecycle-demo.rmt-build.scaffold.json +202 -0
  651. package/xtendrmt/rmt-lifecycle-demo.scaffold.json +187 -0
  652. package/xtendrmt/rmt-manifest.json +548 -0
  653. package/xtendrmt/rmt-runtime.browser.js +26183 -0
  654. package/xtendrmt/rmt-runtime.esm.js +26214 -0
  655. package/xtendrmt/rmt-vnext-enterprise-mfe-demo.core.json +849 -0
  656. package/xtendrmt/rmt-vnext-enterprise-mfe-demo.rmt +50 -0
  657. package/xtendrmt/rmt-vnext-reference-demo.core.json +1069 -0
  658. package/xtendrmt/rmt-vnext-reference-demo.rmt +50 -0
  659. package/xtendrmt/rmt.schema.json +3145 -0
  660. package/xtendrmt/surface-workbench.js +316 -0
  661. package/xtendrmt/surface-workbench.rmt +762 -0
  662. package/xtendrmt/xtendrmt-bestcase-demo.core.json +1187 -0
  663. package/xtendrmt/xtendrmt-bestcase-demo.js +1728 -0
  664. package/xtendrmt/xtendrmt-bestcase-demo.rmt +57 -0
@@ -0,0 +1,154 @@
1
+ export * from './rmt-tooling-public-types';
2
+ import type { RmtToolingConstant, RmtToolingFactory, RmtToolingFunction } from './rmt-tooling-public-types';
3
+
4
+ export type RmtKernelSecurityRegressionStatus = 'passed' | 'failed' | string;
5
+ export type RmtKernelSecurityRegressionVerdict = 'trusted' | 'sanitized' | 'blocked' | 'panic' | string;
6
+
7
+ export interface RmtKernelSecurityRegressionFixture {
8
+ id: string;
9
+ sink: string;
10
+ payload?: string;
11
+ attributeName?: string;
12
+ propertyName?: string;
13
+ expectedVerdict?: RmtKernelSecurityRegressionVerdict;
14
+ expectedDiagnosticCode?: string;
15
+ expectedRemovedPatterns?: string[];
16
+ }
17
+
18
+ export interface RmtKernelSecurityRegressionPanicSequence {
19
+ id: string;
20
+ repeatedBlockThreshold: number;
21
+ verdicts: RmtKernelSecurityRegressionVerdict[];
22
+ expectedState: string;
23
+ expectedTrigger: string;
24
+ expectedRecoveryStatus: string;
25
+ }
26
+
27
+ export interface RmtKernelSecurityRegressionBrowserSmokeScenario {
28
+ id: string;
29
+ sink: string;
30
+ expectedVerdict: RmtKernelSecurityRegressionVerdict;
31
+ artifactTargets: string[];
32
+ }
33
+
34
+ export interface RmtKernelSecurityRegressionFixtureSet {
35
+ schema: typeof RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_SCHEMA;
36
+ regressionSchema: typeof RMT_KERNEL_SECURITY_REGRESSION_SCHEMA;
37
+ workpackage: typeof RMT_KERNEL_SECURITY_REGRESSION_WORKPACKAGE;
38
+ status: string;
39
+ fixtureCategories: string[];
40
+ totalFixtureCount: number;
41
+ maliciousHtmlFragments: RmtKernelSecurityRegressionFixture[];
42
+ maliciousAttributes: RmtKernelSecurityRegressionFixture[];
43
+ maliciousUrls: RmtKernelSecurityRegressionFixture[];
44
+ maliciousProperties: RmtKernelSecurityRegressionFixture[];
45
+ panicSequences: RmtKernelSecurityRegressionPanicSequence[];
46
+ browserSmokeScenarios: RmtKernelSecurityRegressionBrowserSmokeScenario[];
47
+ }
48
+
49
+ export interface RmtKernelSecurityRegressionValidationIssue {
50
+ code: string;
51
+ category?: string;
52
+ id?: string;
53
+ index?: number;
54
+ message: string;
55
+ }
56
+
57
+ export interface RmtKernelSecurityRegressionValidation {
58
+ schema: typeof RMT_KERNEL_SECURITY_REGRESSION_REPORT_SCHEMA;
59
+ regressionSchema: typeof RMT_KERNEL_SECURITY_REGRESSION_SCHEMA;
60
+ fixtureSchema: typeof RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_SCHEMA;
61
+ workpackage: typeof RMT_KERNEL_SECURITY_REGRESSION_WORKPACKAGE;
62
+ ok: boolean;
63
+ issueCount: number;
64
+ issues: RmtKernelSecurityRegressionValidationIssue[];
65
+ }
66
+
67
+ export interface RmtKernelSecurityRegressionArtifactResult {
68
+ artifact: string;
69
+ artifactKind: string;
70
+ unsafeCommitDetected: boolean;
71
+ trustVerdictCount: number;
72
+ blockedCommitCount: number;
73
+ panicState: string;
74
+ panicTrigger: string;
75
+ recoveryStatus: string;
76
+ sanitizedSinks: string[];
77
+ browserSmokeScenarios: string[];
78
+ diagnosticChannels: string[];
79
+ }
80
+
81
+ export interface RmtKernelSecurityRegressionBrowserSmokeResult {
82
+ id: string;
83
+ status: string;
84
+ scenarioCount: number;
85
+ scenarios: string[];
86
+ unsafeCommitDetected: boolean;
87
+ }
88
+
89
+ export interface RmtKernelSecurityRegressionReport {
90
+ schema: typeof RMT_KERNEL_SECURITY_REGRESSION_REPORT_SCHEMA;
91
+ regressionSchema: typeof RMT_KERNEL_SECURITY_REGRESSION_SCHEMA;
92
+ fixtureSchema: typeof RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_SCHEMA;
93
+ browserSmokeSchema: typeof RMT_KERNEL_SECURITY_REGRESSION_BROWSER_SMOKE_SCHEMA;
94
+ workpackage: typeof RMT_KERNEL_SECURITY_REGRESSION_WORKPACKAGE;
95
+ status: RmtKernelSecurityRegressionStatus;
96
+ ok: boolean;
97
+ validation: RmtKernelSecurityRegressionValidation;
98
+ artifactCoverageOk: boolean;
99
+ requiredArtifactCount: number;
100
+ artifactResultCount: number;
101
+ browserSmokeCovered: boolean;
102
+ panicRecoveryCovered: boolean;
103
+ unsafeCommitCount: number;
104
+ artifactResults: RmtKernelSecurityRegressionArtifactResult[];
105
+ browserSmokeResults: RmtKernelSecurityRegressionBrowserSmokeResult[];
106
+ diagnosticChannel: typeof RMT_KERNEL_SECURITY_REGRESSION_DIAGNOSTIC_CHANNEL;
107
+ }
108
+
109
+ export interface RmtKernelSecurityRegressionContract {
110
+ schema: typeof RMT_KERNEL_SECURITY_REGRESSION_SCHEMA;
111
+ fixtureSchema: typeof RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_SCHEMA;
112
+ reportSchema: typeof RMT_KERNEL_SECURITY_REGRESSION_REPORT_SCHEMA;
113
+ browserSmokeSchema: typeof RMT_KERNEL_SECURITY_REGRESSION_BROWSER_SMOKE_SCHEMA;
114
+ workpackage: typeof RMT_KERNEL_SECURITY_REGRESSION_WORKPACKAGE;
115
+ status: string;
116
+ module: typeof RMT_KERNEL_SECURITY_REGRESSION_MODULE_PATH;
117
+ suite: typeof RMT_KERNEL_SECURITY_REGRESSION_SUITE_PATH;
118
+ fixturePath: typeof RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_PATH;
119
+ browserSmoke: typeof RMT_KERNEL_SECURITY_REGRESSION_BROWSER_SMOKE_PATH;
120
+ contract: typeof RMT_KERNEL_SECURITY_REGRESSION_CONTRACT_PATH;
121
+ workpackageDocument: typeof RMT_KERNEL_SECURITY_REGRESSION_WP_PATH;
122
+ localGate: typeof RMT_KERNEL_SECURITY_REGRESSION_LOCAL_GATE;
123
+ packageScript: typeof RMT_KERNEL_SECURITY_REGRESSION_PACKAGE_SCRIPT;
124
+ diagnosticChannel: typeof RMT_KERNEL_SECURITY_REGRESSION_DIAGNOSTIC_CHANNEL;
125
+ artifacts: string[];
126
+ fixtureCategories: string[];
127
+ invariants: string[];
128
+ handoff: string[];
129
+ }
130
+
131
+ export declare const DEFAULT_KERNEL_SECURITY_REGRESSION_FIXTURES: RmtToolingConstant;
132
+ export declare const KERNEL_SECURITY_REGRESSION_ARTIFACTS: RmtToolingConstant;
133
+ export declare const KERNEL_SECURITY_REGRESSION_REQUIRED_CATEGORIES: RmtToolingConstant;
134
+ export declare const RMT_KERNEL_SECURITY_REGRESSION_BROWSER_SMOKE_PATH: RmtToolingConstant;
135
+ export declare const RMT_KERNEL_SECURITY_REGRESSION_BROWSER_SMOKE_SCHEMA: RmtToolingConstant;
136
+ export declare const RMT_KERNEL_SECURITY_REGRESSION_CONTRACT_PATH: RmtToolingConstant;
137
+ export declare const RMT_KERNEL_SECURITY_REGRESSION_DIAGNOSTIC_CHANNEL: RmtToolingConstant;
138
+ export declare const RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_PATH: RmtToolingConstant;
139
+ export declare const RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_SCHEMA: RmtToolingConstant;
140
+ export declare const RMT_KERNEL_SECURITY_REGRESSION_LOCAL_GATE: RmtToolingConstant;
141
+ export declare const RMT_KERNEL_SECURITY_REGRESSION_MODULE_PATH: RmtToolingConstant;
142
+ export declare const RMT_KERNEL_SECURITY_REGRESSION_PACKAGE_SCRIPT: RmtToolingConstant;
143
+ export declare const RMT_KERNEL_SECURITY_REGRESSION_REPORT_SCHEMA: RmtToolingConstant;
144
+ export declare const RMT_KERNEL_SECURITY_REGRESSION_SCHEMA: RmtToolingConstant;
145
+ export declare const RMT_KERNEL_SECURITY_REGRESSION_SUITE_PATH: RmtToolingConstant;
146
+ export declare const RMT_KERNEL_SECURITY_REGRESSION_WORKPACKAGE: RmtToolingConstant;
147
+ export declare const RMT_KERNEL_SECURITY_REGRESSION_WP_PATH: RmtToolingConstant;
148
+ export declare const createKernelSecurityRegressionContract: RmtToolingFactory;
149
+ export declare const createKernelSecurityRegressionFixtures: RmtToolingFactory;
150
+ export declare const createKernelSecurityRegressionReport: RmtToolingFactory;
151
+ export declare const redactUnsafePayload: RmtToolingFunction;
152
+ export declare const serializeKernelSecurityRegressionContract: RmtToolingFunction;
153
+ export declare const serializeKernelSecurityRegressionReport: RmtToolingFunction;
154
+ export declare const validateKernelSecurityRegressionFixtures: RmtToolingFunction;
@@ -0,0 +1,465 @@
1
+ 'use strict';
2
+
3
+ const {
4
+ RMT_KERNEL_TRUST_AUTHORITY_SCHEMA,
5
+ RMT_KERNEL_TRUST_VERDICT_SCHEMA
6
+ } = require('./kernel-trust-authority');
7
+ const {
8
+ RMT_KERNEL_PANIC_MONITOR_SCHEMA,
9
+ RMT_KERNEL_PANIC_STATE_SCHEMA
10
+ } = require('./kernel-panic-monitor');
11
+ const {
12
+ RMT_KERNEL_RECOVERY_OUTCOME_SCHEMA,
13
+ RMT_KERNEL_RECOVERY_SCHEMA
14
+ } = require('./kernel-recovery');
15
+
16
+ const RMT_KERNEL_SECURITY_REGRESSION_SCHEMA = 'xtend.rmt.kernel-security-regression.v1';
17
+ const RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_SCHEMA = 'xtend.rmt.kernel-security-regression-fixture.v1';
18
+ const RMT_KERNEL_SECURITY_REGRESSION_REPORT_SCHEMA = 'xtend.rmt.kernel-security-regression-report.v1';
19
+ const RMT_KERNEL_SECURITY_REGRESSION_BROWSER_SMOKE_SCHEMA = 'xtend.rmt.kernel-security-regression-browser-smoke.v1';
20
+ const RMT_KERNEL_SECURITY_REGRESSION_WORKPACKAGE = 'RKSH-WP-09';
21
+ const RMT_KERNEL_SECURITY_REGRESSION_MODULE_PATH = 'tools/rmt-language/kernel-security-regression.js';
22
+ const RMT_KERNEL_SECURITY_REGRESSION_SUITE_PATH = 'tests/rmt-language/rmt_kernel_security_regression_suite.js';
23
+ const RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_PATH = 'tests/rmt-language/fixtures/kernel-security-regression-fixtures.json';
24
+ const RMT_KERNEL_SECURITY_REGRESSION_BROWSER_SMOKE_PATH = 'tests/browser/fixtures/rmt-kernel-security-regression-smoke.html';
25
+ const RMT_KERNEL_SECURITY_REGRESSION_CONTRACT_PATH = 'development/XTendRMT-Kernel-Security-Regression-Contract.md';
26
+ const RMT_KERNEL_SECURITY_REGRESSION_WP_PATH = 'development/WP-RKSH-09-Negative-Fixtures-Fuzzing-und-Browser-Smokes-erweitern.md';
27
+ const RMT_KERNEL_SECURITY_REGRESSION_PACKAGE_SCRIPT = 'npm run test:rmt-kernel-security-regression';
28
+ const RMT_KERNEL_SECURITY_REGRESSION_LOCAL_GATE = 'node scripts/run_xtend_tests.js rmt-kernel-security-regression --json';
29
+ const RMT_KERNEL_SECURITY_REGRESSION_DIAGNOSTIC_CHANNEL = 'rmt.kernel.security_regression';
30
+
31
+ const KERNEL_SECURITY_REGRESSION_ARTIFACTS = Object.freeze([
32
+ 'xtendrmt/rmt-core.esm.js',
33
+ 'xtendrmt/rmt-runtime.esm.js',
34
+ 'xtendrmt/rmt-runtime.browser.js'
35
+ ]);
36
+
37
+ const KERNEL_SECURITY_REGRESSION_REQUIRED_CATEGORIES = Object.freeze([
38
+ 'maliciousHtmlFragments',
39
+ 'maliciousAttributes',
40
+ 'maliciousUrls',
41
+ 'maliciousProperties',
42
+ 'panicSequences',
43
+ 'browserSmokeScenarios'
44
+ ]);
45
+
46
+ const DEFAULT_KERNEL_SECURITY_REGRESSION_FIXTURES = Object.freeze({
47
+ maliciousHtmlFragments: Object.freeze([
48
+ Object.freeze({
49
+ id: 'html-script-event-url-srcdoc',
50
+ sink: 'slot.html',
51
+ payload: '<img src="javascript:alert(1)" onerror="alert(1)"><script>alert(1)</script><p srcdoc="x">Ok</p><iframe src="/frame"></iframe><a href="/safe">Safe</a>',
52
+ expectedVerdict: 'sanitized',
53
+ expectedRemovedPatterns: Object.freeze(['script', 'iframe', 'onerror', 'javascript:', 'srcdoc'])
54
+ }),
55
+ Object.freeze({
56
+ id: 'html-svg-style-data-url',
57
+ sink: 'prerender.html',
58
+ payload: '<svg onload="alert(1)"><a href="javascript:alert(1)">x</a></svg><style>body{background:url(javascript:alert(1))}</style><strong>Keep</strong>',
59
+ expectedVerdict: 'sanitized',
60
+ expectedRemovedPatterns: Object.freeze(['svg', 'onload', 'style', 'javascript:'])
61
+ }),
62
+ Object.freeze({
63
+ id: 'html-fallback-event-handler',
64
+ sink: 'fallback.html',
65
+ payload: '<strong onclick="alert(1)">Recovered</strong><script>alert(1)</script>',
66
+ expectedVerdict: 'sanitized',
67
+ expectedRemovedPatterns: Object.freeze(['onclick', 'script'])
68
+ })
69
+ ]),
70
+ maliciousAttributes: Object.freeze([
71
+ Object.freeze({
72
+ id: 'attribute-onclick',
73
+ sink: 'attribute',
74
+ attributeName: 'onclick',
75
+ payload: 'alert(1)',
76
+ expectedVerdict: 'blocked',
77
+ expectedDiagnosticCode: 'rmt.kernel.trust.attribute_refused'
78
+ }),
79
+ Object.freeze({
80
+ id: 'attribute-style-url',
81
+ sink: 'attribute',
82
+ attributeName: 'style',
83
+ payload: 'background:url(javascript:alert(1))',
84
+ expectedVerdict: 'blocked',
85
+ expectedDiagnosticCode: 'rmt.kernel.trust.attribute_refused'
86
+ }),
87
+ Object.freeze({
88
+ id: 'attribute-srcdoc',
89
+ sink: 'attribute',
90
+ attributeName: 'srcdoc',
91
+ payload: '<script>alert(1)</script>',
92
+ expectedVerdict: 'blocked',
93
+ expectedDiagnosticCode: 'rmt.kernel.trust.attribute_refused'
94
+ }),
95
+ Object.freeze({
96
+ id: 'attribute-custom-danger',
97
+ sink: 'attribute',
98
+ attributeName: 'customDanger',
99
+ payload: 'unknown',
100
+ expectedVerdict: 'blocked',
101
+ expectedDiagnosticCode: 'rmt.kernel.trust.attribute_refused'
102
+ })
103
+ ]),
104
+ maliciousUrls: Object.freeze([
105
+ Object.freeze({
106
+ id: 'url-javascript-newline',
107
+ sink: 'url-attribute',
108
+ attributeName: 'href',
109
+ payload: 'java\nscript:alert(1)',
110
+ expectedVerdict: 'blocked',
111
+ expectedDiagnosticCode: 'rmt.kernel.trust.url_protocol_refused'
112
+ }),
113
+ Object.freeze({
114
+ id: 'url-data-html',
115
+ sink: 'url-attribute',
116
+ attributeName: 'src',
117
+ payload: 'data:text/html,<script>alert(1)</script>',
118
+ expectedVerdict: 'blocked',
119
+ expectedDiagnosticCode: 'rmt.kernel.trust.url_protocol_refused'
120
+ }),
121
+ Object.freeze({
122
+ id: 'url-vbscript',
123
+ sink: 'url-attribute',
124
+ attributeName: 'href',
125
+ payload: 'vbscript:msgbox(1)',
126
+ expectedVerdict: 'blocked',
127
+ expectedDiagnosticCode: 'rmt.kernel.trust.url_protocol_refused'
128
+ })
129
+ ]),
130
+ maliciousProperties: Object.freeze([
131
+ Object.freeze({
132
+ id: 'property-innerhtml',
133
+ sink: 'property',
134
+ propertyName: 'innerHTML',
135
+ payload: '<script>alert(1)</script>',
136
+ expectedVerdict: 'blocked',
137
+ expectedDiagnosticCode: 'rmt.kernel.trust.property_refused'
138
+ }),
139
+ Object.freeze({
140
+ id: 'property-onclick',
141
+ sink: 'property',
142
+ propertyName: 'onclick',
143
+ payload: 'alert(1)',
144
+ expectedVerdict: 'blocked',
145
+ expectedDiagnosticCode: 'rmt.kernel.trust.property_refused'
146
+ })
147
+ ]),
148
+ panicSequences: Object.freeze([
149
+ Object.freeze({
150
+ id: 'three-blocks-activate-panic',
151
+ repeatedBlockThreshold: 3,
152
+ verdicts: Object.freeze(['blocked', 'blocked', 'blocked']),
153
+ expectedState: 'active',
154
+ expectedTrigger: 'threshold-breached',
155
+ expectedRecoveryStatus: 'recovered'
156
+ })
157
+ ]),
158
+ browserSmokeScenarios: Object.freeze([
159
+ Object.freeze({
160
+ id: 'slot-html-fragment',
161
+ sink: 'slot.html',
162
+ expectedVerdict: 'sanitized',
163
+ artifactTargets: Object.freeze(['core', 'runtime', 'browser'])
164
+ }),
165
+ Object.freeze({
166
+ id: 'prerender-chunk',
167
+ sink: 'prerender.html',
168
+ expectedVerdict: 'sanitized',
169
+ artifactTargets: Object.freeze(['core', 'runtime', 'browser'])
170
+ }),
171
+ Object.freeze({
172
+ id: 'error-fallback',
173
+ sink: 'fallback.html',
174
+ expectedVerdict: 'sanitized',
175
+ artifactTargets: Object.freeze(['core', 'runtime', 'browser'])
176
+ })
177
+ ])
178
+ });
179
+
180
+ function cloneJson(value, fallback = null) {
181
+ if (value === undefined) return fallback;
182
+ try {
183
+ return JSON.parse(JSON.stringify(value));
184
+ } catch (_error) {
185
+ return fallback;
186
+ }
187
+ }
188
+
189
+ function normalizeString(value, fallback = '') {
190
+ if (value === null || value === undefined) return fallback;
191
+ const normalized = String(value).trim();
192
+ return normalized || fallback;
193
+ }
194
+
195
+ function normalizeArray(value) {
196
+ if (Array.isArray(value)) return value;
197
+ if (value === null || value === undefined) return [];
198
+ return [value];
199
+ }
200
+
201
+ function uniqueList(values) {
202
+ return Array.from(new Set(normalizeArray(values).map((value) => normalizeString(value, '')).filter(Boolean))).sort();
203
+ }
204
+
205
+ function stableSort(value) {
206
+ if (Array.isArray(value)) return value.map((entry) => stableSort(entry));
207
+ if (!value || typeof value !== 'object') return value;
208
+ return Object.keys(value).sort().reduce((result, key) => {
209
+ result[key] = stableSort(value[key]);
210
+ return result;
211
+ }, {});
212
+ }
213
+
214
+ function redactUnsafePayload(value) {
215
+ const text = normalizeString(value, '');
216
+ if (!text) return '';
217
+ return text
218
+ .replace(/<\s*script[\s\S]*?<\s*\/\s*script\s*>/giu, '[redacted-script]')
219
+ .replace(/<\s*iframe[\s\S]*?<\s*\/\s*iframe\s*>/giu, '[redacted-frame]')
220
+ .replace(/\son[a-z0-9_-]+\s*=\s*(['"]).*?\1/giu, ' [redacted-event]')
221
+ .replace(/\son[a-z0-9_-]+\s*=\s*[^\s>]+/giu, ' [redacted-event]')
222
+ .replace(/javascript\s*:/giu, 'blocked-protocol:')
223
+ .replace(/vbscript\s*:/giu, 'blocked-protocol:')
224
+ .replace(/srcdoc\s*=\s*(['"]).*?\1/giu, 'srcdoc=[redacted]');
225
+ }
226
+
227
+ function summarizeFixture(entry = {}) {
228
+ return {
229
+ id: normalizeString(entry.id, 'fixture'),
230
+ sink: normalizeString(entry.sink, ''),
231
+ attributeName: normalizeString(entry.attributeName, ''),
232
+ propertyName: normalizeString(entry.propertyName, ''),
233
+ expectedVerdict: normalizeString(entry.expectedVerdict, ''),
234
+ expectedDiagnosticCode: normalizeString(entry.expectedDiagnosticCode, ''),
235
+ payloadSummary: redactUnsafePayload(entry.payload)
236
+ };
237
+ }
238
+
239
+ function createKernelSecurityRegressionFixtures(options = {}) {
240
+ const source = options.fixtures && typeof options.fixtures === 'object'
241
+ ? options.fixtures
242
+ : DEFAULT_KERNEL_SECURITY_REGRESSION_FIXTURES;
243
+ const categories = KERNEL_SECURITY_REGRESSION_REQUIRED_CATEGORIES.reduce((result, category) => {
244
+ result[category] = cloneJson(source[category], []);
245
+ return result;
246
+ }, {});
247
+ const totalFixtureCount = KERNEL_SECURITY_REGRESSION_REQUIRED_CATEGORIES.reduce((count, category) => {
248
+ return count + normalizeArray(categories[category]).length;
249
+ }, 0);
250
+ return {
251
+ schema: RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_SCHEMA,
252
+ regressionSchema: RMT_KERNEL_SECURITY_REGRESSION_SCHEMA,
253
+ workpackage: RMT_KERNEL_SECURITY_REGRESSION_WORKPACKAGE,
254
+ status: 'active-negative-regression-fixtures',
255
+ fixtureCategories: KERNEL_SECURITY_REGRESSION_REQUIRED_CATEGORIES.slice(),
256
+ totalFixtureCount,
257
+ ...categories
258
+ };
259
+ }
260
+
261
+ function validateKernelSecurityRegressionFixtures(fixtures = createKernelSecurityRegressionFixtures()) {
262
+ const fixtureSet = fixtures && typeof fixtures === 'object' ? fixtures : {};
263
+ const issues = [];
264
+ if (fixtureSet.schema !== RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_SCHEMA) {
265
+ issues.push({
266
+ code: 'rmt.kernel.security_regression.fixture_schema_mismatch',
267
+ message: 'Fixture set must use the kernel security regression fixture schema.'
268
+ });
269
+ }
270
+ KERNEL_SECURITY_REGRESSION_REQUIRED_CATEGORIES.forEach((category) => {
271
+ const entries = normalizeArray(fixtureSet[category]);
272
+ if (entries.length === 0) {
273
+ issues.push({
274
+ code: 'rmt.kernel.security_regression.fixture_category_missing',
275
+ category,
276
+ message: `Fixture category ${category} must not be empty.`
277
+ });
278
+ }
279
+ entries.forEach((entry, index) => {
280
+ if (!entry || typeof entry !== 'object') {
281
+ issues.push({
282
+ code: 'rmt.kernel.security_regression.fixture_invalid',
283
+ category,
284
+ index,
285
+ message: `Fixture ${category}[${index}] must be an object.`
286
+ });
287
+ return;
288
+ }
289
+ if (!normalizeString(entry.id, '')) {
290
+ issues.push({
291
+ code: 'rmt.kernel.security_regression.fixture_id_missing',
292
+ category,
293
+ index,
294
+ message: `Fixture ${category}[${index}] requires an id.`
295
+ });
296
+ }
297
+ if (category !== 'panicSequences' && category !== 'browserSmokeScenarios' && !normalizeString(entry.payload, '')) {
298
+ issues.push({
299
+ code: 'rmt.kernel.security_regression.fixture_payload_missing',
300
+ category,
301
+ id: normalizeString(entry.id, ''),
302
+ message: `Fixture ${normalizeString(entry.id, category)} requires a payload.`
303
+ });
304
+ }
305
+ });
306
+ });
307
+ return {
308
+ schema: RMT_KERNEL_SECURITY_REGRESSION_REPORT_SCHEMA,
309
+ regressionSchema: RMT_KERNEL_SECURITY_REGRESSION_SCHEMA,
310
+ fixtureSchema: RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_SCHEMA,
311
+ workpackage: RMT_KERNEL_SECURITY_REGRESSION_WORKPACKAGE,
312
+ ok: issues.length === 0,
313
+ issueCount: issues.length,
314
+ issues
315
+ };
316
+ }
317
+
318
+ function normalizeArtifactRegressionResult(input = {}) {
319
+ const artifact = normalizeString(input.artifact, 'unknown-artifact');
320
+ const sanitizedSinks = uniqueList(input.sanitizedSinks);
321
+ const browserSmokeScenarios = uniqueList(input.browserSmokeScenarios);
322
+ const diagnosticChannels = uniqueList(input.diagnosticChannels);
323
+ return {
324
+ artifact,
325
+ artifactKind: normalizeString(input.artifactKind, artifact.includes('browser') ? 'browser-runtime' : 'core-runtime'),
326
+ unsafeCommitDetected: input.unsafeCommitDetected === true,
327
+ trustVerdictCount: Number.isFinite(input.trustVerdictCount) ? input.trustVerdictCount : 0,
328
+ blockedCommitCount: Number.isFinite(input.blockedCommitCount) ? input.blockedCommitCount : 0,
329
+ panicState: normalizeString(input.panicState, ''),
330
+ panicTrigger: normalizeString(input.panicTrigger, ''),
331
+ recoveryStatus: normalizeString(input.recoveryStatus, ''),
332
+ sanitizedSinks,
333
+ browserSmokeScenarios,
334
+ diagnosticChannels
335
+ };
336
+ }
337
+
338
+ function createKernelSecurityRegressionReport(input = {}) {
339
+ const fixtures = createKernelSecurityRegressionFixtures({ fixtures: input.fixtures });
340
+ const validation = validateKernelSecurityRegressionFixtures(fixtures);
341
+ const artifactResults = normalizeArray(input.artifactResults).map((entry) => normalizeArtifactRegressionResult(entry));
342
+ const browserSmokeResults = normalizeArray(input.browserSmokeResults).map((entry) => ({
343
+ id: normalizeString(entry.id, 'browser-smoke'),
344
+ status: normalizeString(entry.status, 'unknown'),
345
+ scenarioCount: Number.isFinite(entry.scenarioCount) ? entry.scenarioCount : normalizeArray(entry.scenarios).length,
346
+ scenarios: uniqueList(entry.scenarios),
347
+ unsafeCommitDetected: entry.unsafeCommitDetected === true
348
+ }));
349
+ const unsafeCommitCount = artifactResults.filter((entry) => entry.unsafeCommitDetected).length
350
+ + browserSmokeResults.filter((entry) => entry.unsafeCommitDetected).length;
351
+ const requiredArtifactCount = Number.isFinite(input.requiredArtifactCount) ? input.requiredArtifactCount : 0;
352
+ const artifactCoverageOk = requiredArtifactCount <= 0 || artifactResults.length >= requiredArtifactCount;
353
+ const panicRecoveryCovered = input.requirePanicRecovery === true
354
+ ? artifactResults.some((entry) => entry.blockedCommitCount >= 3 && (entry.panicState === 'recovered' || entry.panicState === 'active') && entry.recoveryStatus === 'recovered')
355
+ : true;
356
+ const browserSmokeCovered = input.requireBrowserSmokes === true
357
+ ? browserSmokeResults.some((entry) => entry.status === 'passed' && entry.scenarioCount >= 3)
358
+ || artifactResults.every((entry) => entry.browserSmokeScenarios.length >= 3)
359
+ : true;
360
+ const ok = validation.ok && artifactCoverageOk && panicRecoveryCovered && browserSmokeCovered && unsafeCommitCount === 0;
361
+ const fixtureSummaries = KERNEL_SECURITY_REGRESSION_REQUIRED_CATEGORIES.reduce((result, category) => {
362
+ result[category] = normalizeArray(fixtures[category]).map((entry) => summarizeFixture(entry));
363
+ return result;
364
+ }, {});
365
+ return {
366
+ schema: RMT_KERNEL_SECURITY_REGRESSION_REPORT_SCHEMA,
367
+ regressionSchema: RMT_KERNEL_SECURITY_REGRESSION_SCHEMA,
368
+ fixtureSchema: RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_SCHEMA,
369
+ browserSmokeSchema: RMT_KERNEL_SECURITY_REGRESSION_BROWSER_SMOKE_SCHEMA,
370
+ trustAuthoritySchema: RMT_KERNEL_TRUST_AUTHORITY_SCHEMA,
371
+ trustVerdictSchema: RMT_KERNEL_TRUST_VERDICT_SCHEMA,
372
+ panicMonitorSchema: RMT_KERNEL_PANIC_MONITOR_SCHEMA,
373
+ panicStateSchema: RMT_KERNEL_PANIC_STATE_SCHEMA,
374
+ recoverySchema: RMT_KERNEL_RECOVERY_SCHEMA,
375
+ recoveryOutcomeSchema: RMT_KERNEL_RECOVERY_OUTCOME_SCHEMA,
376
+ workpackage: RMT_KERNEL_SECURITY_REGRESSION_WORKPACKAGE,
377
+ status: ok ? 'passed' : 'failed',
378
+ ok,
379
+ validation,
380
+ fixtureSummary: {
381
+ totalFixtureCount: fixtures.totalFixtureCount,
382
+ categories: fixtures.fixtureCategories.slice(),
383
+ summaries: fixtureSummaries
384
+ },
385
+ artifactCoverageOk,
386
+ requiredArtifactCount,
387
+ artifactResultCount: artifactResults.length,
388
+ browserSmokeCovered,
389
+ panicRecoveryCovered,
390
+ unsafeCommitCount,
391
+ artifactResults,
392
+ browserSmokeResults,
393
+ diagnosticChannel: RMT_KERNEL_SECURITY_REGRESSION_DIAGNOSTIC_CHANNEL
394
+ };
395
+ }
396
+
397
+ function createKernelSecurityRegressionContract(options = {}) {
398
+ const fixtures = createKernelSecurityRegressionFixtures(options);
399
+ return {
400
+ schema: RMT_KERNEL_SECURITY_REGRESSION_SCHEMA,
401
+ fixtureSchema: RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_SCHEMA,
402
+ reportSchema: RMT_KERNEL_SECURITY_REGRESSION_REPORT_SCHEMA,
403
+ browserSmokeSchema: RMT_KERNEL_SECURITY_REGRESSION_BROWSER_SMOKE_SCHEMA,
404
+ trustAuthoritySchema: RMT_KERNEL_TRUST_AUTHORITY_SCHEMA,
405
+ trustVerdictSchema: RMT_KERNEL_TRUST_VERDICT_SCHEMA,
406
+ panicMonitorSchema: RMT_KERNEL_PANIC_MONITOR_SCHEMA,
407
+ panicStateSchema: RMT_KERNEL_PANIC_STATE_SCHEMA,
408
+ recoveryOutcomeSchema: RMT_KERNEL_RECOVERY_OUTCOME_SCHEMA,
409
+ workpackage: RMT_KERNEL_SECURITY_REGRESSION_WORKPACKAGE,
410
+ status: 'completed-negative-regression-fixtures',
411
+ module: RMT_KERNEL_SECURITY_REGRESSION_MODULE_PATH,
412
+ suite: RMT_KERNEL_SECURITY_REGRESSION_SUITE_PATH,
413
+ fixturePath: RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_PATH,
414
+ browserSmoke: RMT_KERNEL_SECURITY_REGRESSION_BROWSER_SMOKE_PATH,
415
+ contract: RMT_KERNEL_SECURITY_REGRESSION_CONTRACT_PATH,
416
+ workpackageDocument: RMT_KERNEL_SECURITY_REGRESSION_WP_PATH,
417
+ localGate: RMT_KERNEL_SECURITY_REGRESSION_LOCAL_GATE,
418
+ packageScript: RMT_KERNEL_SECURITY_REGRESSION_PACKAGE_SCRIPT,
419
+ diagnosticChannel: RMT_KERNEL_SECURITY_REGRESSION_DIAGNOSTIC_CHANNEL,
420
+ artifacts: KERNEL_SECURITY_REGRESSION_ARTIFACTS.slice(),
421
+ fixtureCategories: fixtures.fixtureCategories.slice(),
422
+ invariants: [
423
+ 'Unsafe HTML, attributes, URLs and properties never commit without a Trust Authority verdict.',
424
+ 'Repeated blocked commits activate PanicMonitor threshold semantics.',
425
+ 'Recovery fallback markup is sanitized through the same trusted DOM path as normal template output.',
426
+ 'Core, runtime and browser artifacts execute the same negative fixture catalog.'
427
+ ],
428
+ handoff: ['RKSH-WP-10', 'RKSH-WP-11']
429
+ };
430
+ }
431
+
432
+ function serializeKernelSecurityRegressionContract(contract) {
433
+ return JSON.stringify(stableSort(contract));
434
+ }
435
+
436
+ function serializeKernelSecurityRegressionReport(report) {
437
+ return JSON.stringify(stableSort(report));
438
+ }
439
+
440
+ module.exports = {
441
+ DEFAULT_KERNEL_SECURITY_REGRESSION_FIXTURES,
442
+ KERNEL_SECURITY_REGRESSION_ARTIFACTS,
443
+ KERNEL_SECURITY_REGRESSION_REQUIRED_CATEGORIES,
444
+ RMT_KERNEL_SECURITY_REGRESSION_BROWSER_SMOKE_PATH,
445
+ RMT_KERNEL_SECURITY_REGRESSION_BROWSER_SMOKE_SCHEMA,
446
+ RMT_KERNEL_SECURITY_REGRESSION_CONTRACT_PATH,
447
+ RMT_KERNEL_SECURITY_REGRESSION_DIAGNOSTIC_CHANNEL,
448
+ RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_PATH,
449
+ RMT_KERNEL_SECURITY_REGRESSION_FIXTURE_SCHEMA,
450
+ RMT_KERNEL_SECURITY_REGRESSION_LOCAL_GATE,
451
+ RMT_KERNEL_SECURITY_REGRESSION_MODULE_PATH,
452
+ RMT_KERNEL_SECURITY_REGRESSION_PACKAGE_SCRIPT,
453
+ RMT_KERNEL_SECURITY_REGRESSION_REPORT_SCHEMA,
454
+ RMT_KERNEL_SECURITY_REGRESSION_SCHEMA,
455
+ RMT_KERNEL_SECURITY_REGRESSION_SUITE_PATH,
456
+ RMT_KERNEL_SECURITY_REGRESSION_WORKPACKAGE,
457
+ RMT_KERNEL_SECURITY_REGRESSION_WP_PATH,
458
+ createKernelSecurityRegressionContract,
459
+ createKernelSecurityRegressionFixtures,
460
+ createKernelSecurityRegressionReport,
461
+ redactUnsafePayload,
462
+ serializeKernelSecurityRegressionContract,
463
+ serializeKernelSecurityRegressionReport,
464
+ validateKernelSecurityRegressionFixtures
465
+ };