@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.
- package/CHANGELOG.md +65 -0
- package/LICENSE +201 -0
- package/README.md +184 -0
- package/a11y/motion-contrast-policy.d.ts +32 -0
- package/a11y/motion-contrast-policy.js +261 -0
- package/a11y/runtime-a11y-contract.d.ts +44 -0
- package/a11y/runtime-a11y-contract.js +385 -0
- package/a11y/screenreader-signals.d.ts +32 -0
- package/a11y/screenreader-signals.js +372 -0
- package/api.d.ts +168 -0
- package/api.js +864 -0
- package/catalog/catalog-public-types.d.ts +66 -0
- package/catalog/component-catalog-coverage.d.ts +20 -0
- package/catalog/component-catalog-coverage.js +377 -0
- package/catalog/component-long-tail-migration.d.ts +18 -0
- package/catalog/component-long-tail-migration.js +305 -0
- package/catalog/component-regression-priority.d.ts +20 -0
- package/catalog/component-regression-priority.js +305 -0
- package/catalog/enterprise-component-flex-release-handoff.d.ts +32 -0
- package/catalog/enterprise-component-flex-release-handoff.js +437 -0
- package/catalog/enterprise-component-style-audit.d.ts +22 -0
- package/catalog/enterprise-component-style-audit.js +353 -0
- package/catalog/enterprise-form-control-theme-a11y.d.ts +19 -0
- package/catalog/enterprise-form-control-theme-a11y.js +220 -0
- package/catalog/enterprise-icon-control-audit.d.ts +21 -0
- package/catalog/enterprise-icon-control-audit.js +258 -0
- package/catalog/enterprise-layout-display-media-tokenization.d.ts +20 -0
- package/catalog/enterprise-layout-display-media-tokenization.js +237 -0
- package/catalog/enterprise-navigation-routing-state-hardening.d.ts +20 -0
- package/catalog/enterprise-navigation-routing-state-hardening.js +255 -0
- package/catalog/enterprise-overlay-mode-token-parity.d.ts +15 -0
- package/catalog/enterprise-overlay-mode-token-parity.js +178 -0
- package/catalog/enterprise-third-party-authoring-guide.d.ts +23 -0
- package/catalog/enterprise-third-party-authoring-guide.js +310 -0
- package/catalog/enterprise-visual-dom-snapshot-matrix.d.ts +31 -0
- package/catalog/enterprise-visual-dom-snapshot-matrix.js +357 -0
- package/catalog/epic10-existing-component-metadata.d.ts +25 -0
- package/catalog/epic10-existing-component-metadata.js +534 -0
- package/catalog/epic10-p0-component-wave.d.ts +28 -0
- package/catalog/epic10-p0-component-wave.js +688 -0
- package/catalog/epic10-platform-gates.d.ts +31 -0
- package/catalog/epic10-platform-gates.js +425 -0
- package/catalog/epic10-release-handoff.d.ts +30 -0
- package/catalog/epic10-release-handoff.js +195 -0
- package/catalog/epic11-enterprise-ux-handoff.d.ts +29 -0
- package/catalog/epic11-enterprise-ux-handoff.js +403 -0
- package/catalog/epic12-docs-adoption.d.ts +29 -0
- package/catalog/epic12-docs-adoption.js +183 -0
- package/catalog/epic12-rc0-gate-matrix.d.ts +36 -0
- package/catalog/epic12-rc0-gate-matrix.js +439 -0
- package/catalog/epic12-rc0-handoff.d.ts +30 -0
- package/catalog/epic12-rc0-handoff.js +385 -0
- package/catalog/epic13-conditional-network-evidence-ci.d.ts +35 -0
- package/catalog/epic13-conditional-network-evidence-ci.js +278 -0
- package/catalog/epic13-conditional-network-evidence.d.ts +34 -0
- package/catalog/epic13-conditional-network-evidence.js +280 -0
- package/catalog/epic13-docs-rmt-production-hardening.d.ts +39 -0
- package/catalog/epic13-docs-rmt-production-hardening.js +286 -0
- package/catalog/epic13-hydration-performance-closure.d.ts +33 -0
- package/catalog/epic13-hydration-performance-closure.js +234 -0
- package/catalog/epic13-known-residual-triage.d.ts +32 -0
- package/catalog/epic13-known-residual-triage.js +339 -0
- package/catalog/epic13-package-export-lock.d.ts +41 -0
- package/catalog/epic13-package-export-lock.js +604 -0
- package/catalog/epic13-prod-browser-csp-smoke.d.ts +35 -0
- package/catalog/epic13-prod-browser-csp-smoke.js +218 -0
- package/catalog/epic13-rc1-gate-matrix-ci-handoff.d.ts +36 -0
- package/catalog/epic13-rc1-gate-matrix-ci-handoff.js +418 -0
- package/catalog/epic13-rc1-migration-notes.d.ts +36 -0
- package/catalog/epic13-rc1-migration-notes.js +271 -0
- package/catalog/epic13-rc1-readiness.d.ts +33 -0
- package/catalog/epic13-rc1-readiness.js +487 -0
- package/catalog/epic13-release-owner-acceptance.d.ts +33 -0
- package/catalog/epic13-release-owner-acceptance.js +354 -0
- package/catalog/epic13-release-report-pack-dry-run-evidence.d.ts +36 -0
- package/catalog/epic13-release-report-pack-dry-run-evidence.js +253 -0
- package/catalog/epic13-rmt-production-readiness.d.ts +35 -0
- package/catalog/epic13-rmt-production-readiness.js +314 -0
- package/catalog/epic13-trusted-dom-boundary.d.ts +36 -0
- package/catalog/epic13-trusted-dom-boundary.js +230 -0
- package/catalog/epic13-visual-owner-artifact.d.ts +35 -0
- package/catalog/epic13-visual-owner-artifact.js +233 -0
- package/catalog/epic14-lsp-handoff.d.ts +28 -0
- package/catalog/epic14-lsp-handoff.js +312 -0
- package/catalog/epic14-rmt-tooling.d.ts +33 -0
- package/catalog/epic14-rmt-tooling.js +282 -0
- package/catalog/surface-manager-adapter-runtime.d.ts +37 -0
- package/catalog/surface-manager-adapter-runtime.js +203 -0
- package/catalog/surface-manager-browser-lab.d.ts +39 -0
- package/catalog/surface-manager-browser-lab.js +225 -0
- package/catalog/surface-manager-controller.d.ts +43 -0
- package/catalog/surface-manager-controller.js +290 -0
- package/catalog/surface-manager-layout-engines.d.ts +32 -0
- package/catalog/surface-manager-layout-engines.js +161 -0
- package/catalog/surface-manager-lazy-loading.d.ts +35 -0
- package/catalog/surface-manager-lazy-loading.js +173 -0
- package/catalog/surface-manager-materialization.d.ts +37 -0
- package/catalog/surface-manager-materialization.js +202 -0
- package/catalog/surface-manager-native-rmt-surfaces.d.ts +48 -0
- package/catalog/surface-manager-native-rmt-surfaces.js +325 -0
- package/catalog/surface-manager-overlay-bridge.d.ts +42 -0
- package/catalog/surface-manager-overlay-bridge.js +247 -0
- package/catalog/surface-manager-persistence.d.ts +37 -0
- package/catalog/surface-manager-persistence.js +178 -0
- package/catalog/surface-manager-quality-gates.d.ts +48 -0
- package/catalog/surface-manager-quality-gates.js +324 -0
- package/catalog/surface-manager-release-handoff.d.ts +47 -0
- package/catalog/surface-manager-release-handoff.js +274 -0
- package/catalog/surface-manager-remote-policy.d.ts +34 -0
- package/catalog/surface-manager-remote-policy.js +199 -0
- package/catalog/surface-manager-rmt-authoring.d.ts +44 -0
- package/catalog/surface-manager-rmt-authoring.js +368 -0
- package/catalog/surface-manager-route-lifecycle.d.ts +32 -0
- package/catalog/surface-manager-route-lifecycle.js +162 -0
- package/catalog/surface-manager-runtime-release-handoff.d.ts +36 -0
- package/catalog/surface-manager-runtime-release-handoff.js +245 -0
- package/catalog/surface-manager-side-panel-runtime.d.ts +46 -0
- package/catalog/surface-manager-side-panel-runtime.js +307 -0
- package/catalog/surface-manager-stack-policy.d.ts +32 -0
- package/catalog/surface-manager-stack-policy.js +169 -0
- package/catalog/surface-manager-window-runtime.d.ts +45 -0
- package/catalog/surface-manager-window-runtime.js +285 -0
- package/catalog/surface-manager-workbench-fixture.d.ts +50 -0
- package/catalog/surface-manager-workbench-fixture.js +315 -0
- package/catalog/type-exports-api.js +236 -0
- package/catalog/type-exports-builder.js +405 -0
- package/catalog/type-exports-catalog.js +394 -0
- package/catalog/type-exports-loader.js +266 -0
- package/catalog/type-exports-policy.js +461 -0
- package/catalog/type-exports-rmt.js +407 -0
- package/catalog/type-exports-vendor.js +365 -0
- package/catalog/type-exports.js +574 -0
- package/components/icon-packs/core.js +154 -0
- package/components/icon-packs/lucide.js +136 -0
- package/components/manifest.json +44 -0
- package/components/prism.d.ts +73 -0
- package/components/prism.js +300 -0
- package/components/turndown.d.ts +34 -0
- package/components/turndown.js +107 -0
- package/components/x-rmt-lifecycle-demo-build.d.ts +78 -0
- package/components/x-rmt-lifecycle-demo-build.js +1175 -0
- package/components/x-rmt-lifecycle-demo.d.ts +83 -0
- package/components/x-rmt-lifecycle-demo.js +1175 -0
- package/components/xalert.d.ts +42 -0
- package/components/xalert.js +538 -0
- package/components/xbutton.d.ts +127 -0
- package/components/xbutton.js +612 -0
- package/components/xcalendar.d.ts +39 -0
- package/components/xcalendar.js +338 -0
- package/components/xcards.d.ts +34 -0
- package/components/xcards.js +253 -0
- package/components/xcheckbox.d.ts +48 -0
- package/components/xcheckbox.js +448 -0
- package/components/xcode.d.ts +35 -0
- package/components/xcode.js +370 -0
- package/components/xdialog.d.ts +48 -0
- package/components/xdialog.js +763 -0
- package/components/xdrawer.d.ts +61 -0
- package/components/xdrawer.js +654 -0
- package/components/xfooter.d.ts +41 -0
- package/components/xfooter.js +351 -0
- package/components/xform.d.ts +43 -0
- package/components/xform.js +456 -0
- package/components/xheader.d.ts +68 -0
- package/components/xheader.js +1253 -0
- package/components/xhero.d.ts +42 -0
- package/components/xhero.js +475 -0
- package/components/xicon.d.ts +146 -0
- package/components/xicon.js +688 -0
- package/components/xinput.d.ts +37 -0
- package/components/xinput.js +444 -0
- package/components/xlightbox.d.ts +48 -0
- package/components/xlightbox.js +571 -0
- package/components/xlink.d.ts +63 -0
- package/components/xlink.js +565 -0
- package/components/xmasonry.d.ts +35 -0
- package/components/xmasonry.js +666 -0
- package/components/xmenu.d.ts +118 -0
- package/components/xmenu.js +1005 -0
- package/components/xmodal.d.ts +64 -0
- package/components/xmodal.js +831 -0
- package/components/xplayer.d.ts +57 -0
- package/components/xplayer.js +1748 -0
- package/components/xpopover.d.ts +54 -0
- package/components/xpopover.js +466 -0
- package/components/xprogress.d.ts +40 -0
- package/components/xprogress.js +345 -0
- package/components/xradio.d.ts +50 -0
- package/components/xradio.js +474 -0
- package/components/xrouter.d.ts +244 -0
- package/components/xrouter.js +1841 -0
- package/components/xsection.d.ts +34 -0
- package/components/xsection.js +253 -0
- package/components/xselect.d.ts +46 -0
- package/components/xselect.js +463 -0
- package/components/xsidepanel.d.ts +56 -0
- package/components/xsidepanel.js +728 -0
- package/components/xspinner.d.ts +38 -0
- package/components/xspinner.js +388 -0
- package/components/xstate.d.ts +137 -0
- package/components/xstate.js +493 -0
- package/components/xstatus.d.ts +41 -0
- package/components/xstatus.js +381 -0
- package/components/xsummary.d.ts +43 -0
- package/components/xsummary.js +293 -0
- package/components/xsurfacemanager-controller.d.ts +130 -0
- package/components/xsurfacemanager-controller.js +699 -0
- package/components/xsurfacemanager.d.ts +452 -0
- package/components/xsurfacemanager.js +3775 -0
- package/components/xsurfaceoverlay-bridge.d.ts +43 -0
- package/components/xsurfaceoverlay-bridge.js +238 -0
- package/components/xsurfacewindow.d.ts +50 -0
- package/components/xsurfacewindow.js +576 -0
- package/components/xtabs.d.ts +73 -0
- package/components/xtabs.js +611 -0
- package/components/xtend-public-types.d.ts +208 -0
- package/components/xtextarea.d.ts +46 -0
- package/components/xtextarea.js +451 -0
- package/components/xtheme.d.ts +253 -0
- package/components/xtheme.js +1438 -0
- package/components/xtoast.d.ts +39 -0
- package/components/xtoast.js +389 -0
- package/components/xtooltip.d.ts +53 -0
- package/components/xtooltip.js +432 -0
- package/components/xtype.d.ts +42 -0
- package/components/xtype.js +244 -0
- package/components/xutils.d.ts +164 -0
- package/components/xutils.js +496 -0
- package/components/xwriter.d.ts +67 -0
- package/components/xwriter.js +854 -0
- package/design-tokens/themes/enterprise-light.json +40 -0
- package/design-tokens/themes/xtend-signature.json +126 -0
- package/design-tokens/xtend-design-tokens.d.ts +95 -0
- package/design-tokens/xtend-design-tokens.js +395 -0
- package/design-tokens/xtheme-token-alias-layer.d.ts +84 -0
- package/design-tokens/xtheme-token-alias-layer.js +423 -0
- package/docs/.htaccess +51 -0
- package/docs/README.md +340 -0
- package/docs/XTend-ADR.md +221 -0
- package/docs/a11y-keyboard-smokes.md +62 -0
- package/docs/about.md +18 -0
- package/docs/api.md +157 -0
- package/docs/best-practices.md +76 -0
- package/docs/component-catalog-coverage.md +58 -0
- package/docs/component-lab.md +103 -0
- package/docs/component-long-tail-migration.md +41 -0
- package/docs/component-platform.md +159 -0
- package/docs/component-ux-app-authoring.md +130 -0
- package/docs/component-ux-authoring.md +96 -0
- package/docs/component-ux-gates.md +45 -0
- package/docs/components/x-rmt-lifecycle-demo-build.md +60 -0
- package/docs/components/xalert.md +81 -0
- package/docs/components/xbutton.md +103 -0
- package/docs/components/xcalendar.md +82 -0
- package/docs/components/xcards.md +128 -0
- package/docs/components/xcheckbox.md +102 -0
- package/docs/components/xcode.md +126 -0
- package/docs/components/xdialog.md +92 -0
- package/docs/components/xdrawer.md +84 -0
- package/docs/components/xfooter.md +126 -0
- package/docs/components/xform.md +128 -0
- package/docs/components/xheader.md +308 -0
- package/docs/components/xhero.md +142 -0
- package/docs/components/xicon.md +125 -0
- package/docs/components/xinput.md +129 -0
- package/docs/components/xlightbox.md +98 -0
- package/docs/components/xlink.md +109 -0
- package/docs/components/xmasonry.md +124 -0
- package/docs/components/xmenu.md +158 -0
- package/docs/components/xmodal.md +82 -0
- package/docs/components/xplayer.md +104 -0
- package/docs/components/xpopover.md +67 -0
- package/docs/components/xprogress.md +56 -0
- package/docs/components/xradio.md +103 -0
- package/docs/components/xrouter.md +260 -0
- package/docs/components/xsection.md +125 -0
- package/docs/components/xselect.md +105 -0
- package/docs/components/xsidepanel.md +30 -0
- package/docs/components/xspinner.md +102 -0
- package/docs/components/xstate.md +148 -0
- package/docs/components/xstatus.md +55 -0
- package/docs/components/xsummary.md +78 -0
- package/docs/components/xsurfacemanager.md +27 -0
- package/docs/components/xsurfacewindow.md +21 -0
- package/docs/components/xtabs.md +160 -0
- package/docs/components/xtextarea.md +98 -0
- package/docs/components/xtheme.md +167 -0
- package/docs/components/xtoast.md +62 -0
- package/docs/components/xtooltip.md +66 -0
- package/docs/components/xtype.md +82 -0
- package/docs/components/xutils.md +144 -0
- package/docs/components/xwriter.md +94 -0
- package/docs/components.md +117 -0
- package/docs/conditional-network-evidence-ci.md +38 -0
- package/docs/conditional-network-evidence.md +50 -0
- package/docs/core-migration-guide.md +110 -0
- package/docs/design-tokens.md +116 -0
- package/docs/docs-rmt-production-hardening.md +31 -0
- package/docs/enterprise-adoption.md +411 -0
- package/docs/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/epic10-platform-gates.md +62 -0
- package/docs/epic10-release-handoff.md +81 -0
- package/docs/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/epic12-rc0-handoff.md +61 -0
- package/docs/existing-component-metadata.md +67 -0
- package/docs/hydration-performance-closure.md +34 -0
- package/docs/hydration-policies.md +71 -0
- package/docs/index.php +1625 -0
- package/docs/known-residual-triage.md +22 -0
- package/docs/manifest-import-policy.md +79 -0
- package/docs/manifest.md +106 -0
- package/docs/menu.json +1190 -0
- package/docs/motion-contrast.md +67 -0
- package/docs/package-export-lock.md +44 -0
- package/docs/performance-measurements.md +106 -0
- package/docs/performance-regression.md +89 -0
- package/docs/performance.md +94 -0
- package/docs/previews/README.md +17 -0
- package/docs/prod-browser-csp-smokes.md +40 -0
- package/docs/public-component-types.md +79 -0
- package/docs/quick-start-guide.md +152 -0
- package/docs/rc0-adoption-guide.md +102 -0
- package/docs/rc0-gate-matrix.md +58 -0
- package/docs/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/rc1-migration-notes.md +69 -0
- package/docs/rc1-readiness.md +46 -0
- package/docs/release-owner-acceptance.md +56 -0
- package/docs/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/rmt-dsl-authoring-polish.md +122 -0
- package/docs/rmt-first-demo-app.md +77 -0
- package/docs/rmt-first-xtend-apps.md +105 -0
- package/docs/rmt-kernel-panic-recovery-incident-handoff.md +61 -0
- package/docs/rmt-kernel-security-hardening-migration.md +50 -0
- package/docs/rmt-kernel-trusted-output-authoring.md +69 -0
- package/docs/rmt-language-server.md +177 -0
- package/docs/rmt-lifecycle-demo.md +25 -0
- package/docs/rmt-linter.md +140 -0
- package/docs/rmt-production-readiness.md +63 -0
- package/docs/rmt-tooling-release-gates.md +77 -0
- package/docs/rmt-vnext-authoring.md +60 -0
- package/docs/rmt-vnext-cross-surface-events.md +68 -0
- package/docs/rmt-vnext-enterprise-mfe-handoff.md +70 -0
- package/docs/rmt-vnext-migration-notes.md +62 -0
- package/docs/rmt-vnext-release-handoff.md +69 -0
- package/docs/rmt-vnext-remote-surfaces.md +90 -0
- package/docs/rmt-vnext-surface-registry-enterprise.md +76 -0
- package/docs/screenreader-signals.md +56 -0
- package/docs/supply-chain-gates.md +100 -0
- package/docs/surface-manager-authoring-guide.md +94 -0
- package/docs/surface-manager-browser-lab.md +45 -0
- package/docs/surface-manager-component-lab.md +43 -0
- package/docs/surface-manager-controller.md +66 -0
- package/docs/surface-manager-layout-engines.md +32 -0
- package/docs/surface-manager-lazy-hydration.md +63 -0
- package/docs/surface-manager-migration-guide.md +94 -0
- package/docs/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/surface-manager-overlay-bridge.md +53 -0
- package/docs/surface-manager-persistence.md +30 -0
- package/docs/surface-manager-quality-gates.md +51 -0
- package/docs/surface-manager-release-handoff.md +68 -0
- package/docs/surface-manager-remote-policy.md +54 -0
- package/docs/surface-manager-rmt-authoring.md +86 -0
- package/docs/surface-manager-route-lifecycle.md +59 -0
- package/docs/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/surface-manager-side-panel-runtime.md +36 -0
- package/docs/surface-manager-stack-policy.md +39 -0
- package/docs/surface-manager-window-runtime.md +47 -0
- package/docs/surface-manager-workbench-fixture.md +43 -0
- package/docs/third-party-design-authoring.md +406 -0
- package/docs/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/trusted-dom-sanitizing.md +110 -0
- package/docs/type-exports.md +61 -0
- package/docs/typescript-components.md +63 -0
- package/docs/utils/fabric-runtime.js +650 -0
- package/docs/utils/pageloader.js +2823 -0
- package/docs/utils/parsedown.php +298 -0
- package/docs/visual-browser-regression.md +83 -0
- package/docs/visual-owner-artifacts.md +46 -0
- package/docs/visual-snapshot-automation.md +87 -0
- package/docs/xtend-api-types.md +55 -0
- package/docs/xtend-builder-types.md +55 -0
- package/docs/xtend-catalog-types.md +44 -0
- package/docs/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/xtend-fabric.md +474 -0
- package/docs/xtend-loader-types.md +58 -0
- package/docs/xtend-loader.md +265 -0
- package/docs/xtend-policy-types.md +38 -0
- package/docs/xtend-rmt-types.md +39 -0
- package/docs/xtend-vendor-types.md +36 -0
- package/docs/xtendrmt-app-dsl.md +269 -0
- package/docs/xtendrmt-migration-guide.md +235 -0
- package/docs/xtendrmt-native-authoring.md +337 -0
- package/docs/xtendrmt-overview.md +89 -0
- package/docs/xtendrmt-parsedown-docs.rmt +956 -0
- package/docs/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/xtendrmt-runtime-bridge.md +155 -0
- package/fabric/hydration-policy.d.ts +27 -0
- package/fabric/hydration-policy.js +306 -0
- package/fabric/package.json +58 -0
- package/fabric/rmt-lane-mapping.d.ts +47 -0
- package/fabric/rmt-lane-mapping.js +504 -0
- package/fabric/xtend-fabric.d.ts +81 -0
- package/fabric/xtend-fabric.js +2669 -0
- package/fabric/xtend-policy-public-types.d.ts +135 -0
- package/package.json +8225 -0
- package/security/README.md +54 -0
- package/security/manifest-import-policy.d.ts +43 -0
- package/security/manifest-import-policy.js +260 -0
- package/security/supply-chain-gate-policy.d.ts +45 -0
- package/security/supply-chain-gate-policy.js +249 -0
- package/security/trusted-dom-policy.d.ts +36 -0
- package/security/trusted-dom-policy.js +316 -0
- package/tools/package.json +77 -0
- package/tools/rmt-editor/vscode/README.md +33 -0
- package/tools/rmt-editor/vscode/extension.d.ts +9 -0
- package/tools/rmt-editor/vscode/extension.js +55 -0
- package/tools/rmt-editor/vscode/language-configuration.json +28 -0
- package/tools/rmt-editor/vscode/package.json +83 -0
- package/tools/rmt-editor/vscode/snippets/rmt.code-snippets +243 -0
- package/tools/rmt-editor/vscode/syntaxes/rmt.tmLanguage.json +13 -0
- package/tools/rmt-editor/vscode/xtend-rmt-language-0.0.0-enterprise-readiness.vsix +0 -0
- package/tools/rmt-language/code-actions.d.ts +15 -0
- package/tools/rmt-language/code-actions.js +566 -0
- package/tools/rmt-language/completions.d.ts +22 -0
- package/tools/rmt-language/completions.js +475 -0
- package/tools/rmt-language/definitions.d.ts +13 -0
- package/tools/rmt-language/definitions.js +212 -0
- package/tools/rmt-language/diagnostics.d.ts +23 -0
- package/tools/rmt-language/diagnostics.js +486 -0
- package/tools/rmt-language/format-adapter.d.ts +16 -0
- package/tools/rmt-language/format-adapter.js +270 -0
- package/tools/rmt-language/hover.d.ts +12 -0
- package/tools/rmt-language/hover.js +326 -0
- package/tools/rmt-language/kernel-escalation.d.ts +122 -0
- package/tools/rmt-language/kernel-escalation.js +427 -0
- package/tools/rmt-language/kernel-panic-monitor.d.ts +176 -0
- package/tools/rmt-language/kernel-panic-monitor.js +674 -0
- package/tools/rmt-language/kernel-policy-parity.d.ts +142 -0
- package/tools/rmt-language/kernel-policy-parity.js +629 -0
- package/tools/rmt-language/kernel-recovery.d.ts +173 -0
- package/tools/rmt-language/kernel-recovery.js +666 -0
- package/tools/rmt-language/kernel-scheduler-failure.d.ts +136 -0
- package/tools/rmt-language/kernel-scheduler-failure.js +486 -0
- package/tools/rmt-language/kernel-security-regression.d.ts +154 -0
- package/tools/rmt-language/kernel-security-regression.js +465 -0
- package/tools/rmt-language/kernel-trust-authority.d.ts +120 -0
- package/tools/rmt-language/kernel-trust-authority.js +549 -0
- package/tools/rmt-language/parser.d.ts +14 -0
- package/tools/rmt-language/parser.js +111 -0
- package/tools/rmt-language/rmt-tooling-public-types.d.ts +179 -0
- package/tools/rmt-language/rules/boundary-policy.js +81 -0
- package/tools/rmt-language/rules/document-policy.js +65 -0
- package/tools/rmt-language/rules/index.js +29 -0
- package/tools/rmt-language/rules/route-policy.js +81 -0
- package/tools/rmt-language/rules/scheduler-policy.js +66 -0
- package/tools/rmt-language/rules/template-policy.js +130 -0
- package/tools/rmt-language/semantic-graph.d.ts +18 -0
- package/tools/rmt-language/semantic-graph.js +827 -0
- package/tools/rmt-language/snippets/README.md +17 -0
- package/tools/rmt-language/snippets/index.d.ts +17 -0
- package/tools/rmt-language/snippets/index.js +417 -0
- package/tools/rmt-language/snippets/rmt.code-snippets +243 -0
- package/tools/rmt-language/source-model.d.ts +14 -0
- package/tools/rmt-language/source-model.js +731 -0
- package/tools/rmt-language/symbols.d.ts +13 -0
- package/tools/rmt-language/symbols.js +183 -0
- package/tools/rmt-language/vnext-compatibility.d.ts +28 -0
- package/tools/rmt-language/vnext-compatibility.js +675 -0
- package/tools/rmt-language/vnext-compiler.d.ts +17 -0
- package/tools/rmt-language/vnext-compiler.js +716 -0
- package/tools/rmt-language/vnext-composition.d.ts +30 -0
- package/tools/rmt-language/vnext-composition.js +595 -0
- package/tools/rmt-language/vnext-conditions.d.ts +25 -0
- package/tools/rmt-language/vnext-conditions.js +474 -0
- package/tools/rmt-language/vnext-cross-surface-events.d.ts +30 -0
- package/tools/rmt-language/vnext-cross-surface-events.js +607 -0
- package/tools/rmt-language/vnext-degradation.d.ts +23 -0
- package/tools/rmt-language/vnext-degradation.js +428 -0
- package/tools/rmt-language/vnext-enterprise-fixtures.d.ts +28 -0
- package/tools/rmt-language/vnext-enterprise-fixtures.js +487 -0
- package/tools/rmt-language/vnext-enterprise-registry.d.ts +21 -0
- package/tools/rmt-language/vnext-enterprise-registry.js +495 -0
- package/tools/rmt-language/vnext-enterprise-release.d.ts +44 -0
- package/tools/rmt-language/vnext-enterprise-release.js +472 -0
- package/tools/rmt-language/vnext-event-governance.d.ts +29 -0
- package/tools/rmt-language/vnext-event-governance.js +488 -0
- package/tools/rmt-language/vnext-events.d.ts +44 -0
- package/tools/rmt-language/vnext-events.js +680 -0
- package/tools/rmt-language/vnext-import-resolver.d.ts +28 -0
- package/tools/rmt-language/vnext-import-resolver.js +642 -0
- package/tools/rmt-language/vnext-lifecycle.d.ts +22 -0
- package/tools/rmt-language/vnext-lifecycle.js +404 -0
- package/tools/rmt-language/vnext-parser.d.ts +21 -0
- package/tools/rmt-language/vnext-parser.js +1391 -0
- package/tools/rmt-language/vnext-regression.d.ts +25 -0
- package/tools/rmt-language/vnext-regression.js +394 -0
- package/tools/rmt-language/vnext-release.d.ts +29 -0
- package/tools/rmt-language/vnext-release.js +293 -0
- package/tools/rmt-language/vnext-remote-compatibility.d.ts +33 -0
- package/tools/rmt-language/vnext-remote-compatibility.js +892 -0
- package/tools/rmt-language/vnext-remote-compiler.d.ts +14 -0
- package/tools/rmt-language/vnext-remote-compiler.js +520 -0
- package/tools/rmt-language/vnext-remote-manifest.d.ts +33 -0
- package/tools/rmt-language/vnext-remote-manifest.js +538 -0
- package/tools/rmt-language/vnext-remote-security.d.ts +27 -0
- package/tools/rmt-language/vnext-remote-security.js +380 -0
- package/tools/rmt-language/vnext-remote-tooling.d.ts +25 -0
- package/tools/rmt-language/vnext-remote-tooling.js +805 -0
- package/tools/rmt-language/vnext-scheduler.d.ts +24 -0
- package/tools/rmt-language/vnext-scheduler.js +469 -0
- package/tools/rmt-language/vnext-security.d.ts +28 -0
- package/tools/rmt-language/vnext-security.js +597 -0
- package/tools/rmt-language/vnext-streaming.d.ts +28 -0
- package/tools/rmt-language/vnext-streaming.js +593 -0
- package/tools/rmt-language/vnext-surfaces.d.ts +24 -0
- package/tools/rmt-language/vnext-surfaces.js +406 -0
- package/tools/rmt-language/vnext-tooling.d.ts +25 -0
- package/tools/rmt-language/vnext-tooling.js +728 -0
- package/tools/rmt-language-server/protocol.d.ts +22 -0
- package/tools/rmt-language-server/protocol.js +352 -0
- package/tools/rmt-language-server/server.d.ts +15 -0
- package/tools/rmt-language-server/server.js +622 -0
- package/tools/rmt-linter/cli.d.ts +14 -0
- package/tools/rmt-linter/cli.js +450 -0
- package/tools/rmt-linter/reporter.d.ts +16 -0
- package/tools/rmt-linter/reporter.js +472 -0
- package/xtend-builder/README.md +83 -0
- package/xtend-builder/a11y/README.md +42 -0
- package/xtend-builder/a11y/component-a11y-profile.d.ts +14 -0
- package/xtend-builder/a11y/component-a11y-profile.js +314 -0
- package/xtend-builder/blueprints/README.md +105 -0
- package/xtend-builder/blueprints/component-blueprint.contract.d.ts +16 -0
- package/xtend-builder/blueprints/component-blueprint.contract.js +343 -0
- package/xtend-builder/builder-public-types.d.ts +234 -0
- package/xtend-builder/extensions/README.md +26 -0
- package/xtend-builder/extensions/component-extension-points.d.ts +11 -0
- package/xtend-builder/extensions/component-extension-points.js +277 -0
- package/xtend-builder/generators/README.md +149 -0
- package/xtend-builder/generators/component-files.d.ts +5 -0
- package/xtend-builder/generators/component-files.js +769 -0
- package/xtend-builder/generators/component-plan.d.ts +4 -0
- package/xtend-builder/generators/component-plan.js +104 -0
- package/xtend-builder/generators/registry.d.ts +6 -0
- package/xtend-builder/generators/registry.js +118 -0
- package/xtend-builder/generators/rmt-build.js +738 -0
- package/xtend-builder/generators/rmt-lifecycle-demo.js +922 -0
- package/xtend-builder/lib/cli.d.ts +9 -0
- package/xtend-builder/lib/cli.js +543 -0
- package/xtend-builder/lib/layout.d.ts +6 -0
- package/xtend-builder/lib/layout.js +153 -0
- package/xtend-builder/lib/package-resolver.js +25 -0
- package/xtend-builder/package.json +90 -0
- package/xtend-builder/performance/README.md +31 -0
- package/xtend-builder/performance/component-performance-profile.d.ts +11 -0
- package/xtend-builder/performance/component-performance-profile.js +347 -0
- package/xtend-builder/performance/component-ux-performance-contract.d.ts +27 -0
- package/xtend-builder/performance/component-ux-performance-contract.js +424 -0
- package/xtend-builder/preview/README.md +61 -0
- package/xtend-builder/preview/component-lab-ux-inspector.d.ts +20 -0
- package/xtend-builder/preview/component-lab-ux-inspector.js +448 -0
- package/xtend-builder/preview/component-lab.d.ts +14 -0
- package/xtend-builder/preview/component-lab.js +278 -0
- package/xtend-builder/preview/component-preview.d.ts +5 -0
- package/xtend-builder/preview/component-preview.js +160 -0
- package/xtend-builder/scaffold.config.d.ts +4 -0
- package/xtend-builder/scaffold.config.js +2056 -0
- package/xtend-builder/scaffold.d.ts +3 -0
- package/xtend-builder/scaffold.js +11 -0
- package/xtend-builder/templates/README.md +33 -0
- package/xtend-builder/templates/component/a11y.template.ts +11 -0
- package/xtend-builder/templates/component/component-suite.template.d.ts +2 -0
- package/xtend-builder/templates/component/component-suite.template.js +108 -0
- package/xtend-builder/templates/component/contract.template.ts +10 -0
- package/xtend-builder/templates/component/demo-plan.template.md +73 -0
- package/xtend-builder/templates/component/docs.template.md +301 -0
- package/xtend-builder/templates/component/fixture-data.template.ts +28 -0
- package/xtend-builder/templates/component/fixture.template.html +37 -0
- package/xtend-builder/templates/component/manifest-plan.template.json +22 -0
- package/xtend-builder/templates/component/performance.template.ts +13 -0
- package/xtend-builder/templates/component/rmt.template.ts +12 -0
- package/xtend-builder/templates/component/source.template.d.ts +2 -0
- package/xtend-builder/templates/component/source.template.js +137 -0
- package/xtend-builder/templates/component/source.template.ts +110 -0
- package/xtend-builder/templates/component/types.template.d.ts +423 -0
- package/xtend-builder/templates/loader.d.ts +4 -0
- package/xtend-builder/templates/loader.js +51 -0
- package/xtend-builder/templates/registry.d.ts +6 -0
- package/xtend-builder/templates/registry.js +119 -0
- package/xtend-builder/typing/README.md +130 -0
- package/xtend-builder/typing/component-contract-v2.d.ts +15 -0
- package/xtend-builder/typing/component-contract-v2.js +248 -0
- package/xtend-builder/typing/component-network-contract.d.ts +22 -0
- package/xtend-builder/typing/component-network-contract.js +478 -0
- package/xtend-builder/typing/component-shell-contract.d.ts +21 -0
- package/xtend-builder/typing/component-shell-contract.js +312 -0
- package/xtend-builder/typing/component-styling-contract.d.ts +22 -0
- package/xtend-builder/typing/component-styling-contract.js +301 -0
- package/xtend-builder/typing/component-types.d.ts +10 -0
- package/xtend-builder/typing/component-types.js +551 -0
- package/xtend-builder/typing/enterprise-component-flex-hardening-contract.d.ts +20 -0
- package/xtend-builder/typing/enterprise-component-flex-hardening-contract.js +332 -0
- package/xtend-builder/typing/feedback-status-ux-contract.d.ts +25 -0
- package/xtend-builder/typing/feedback-status-ux-contract.js +347 -0
- package/xtend-builder/typing/form-controls-ux-contract.d.ts +25 -0
- package/xtend-builder/typing/form-controls-ux-contract.js +357 -0
- package/xtend-builder/typing/layout-display-media-ux-contract.d.ts +25 -0
- package/xtend-builder/typing/layout-display-media-ux-contract.js +420 -0
- package/xtend-builder/typing/navigation-routing-ux-contract.d.ts +17 -0
- package/xtend-builder/typing/navigation-routing-ux-contract.js +297 -0
- package/xtend-builder/typing/overlay-interaction-ux-contract.d.ts +25 -0
- package/xtend-builder/typing/overlay-interaction-ux-contract.js +383 -0
- package/xtend-builder/typing/rmt-dsl-authoring-polish.d.ts +27 -0
- package/xtend-builder/typing/rmt-dsl-authoring-polish.js +419 -0
- package/xtend-builder/typing/rmt-shell-authoring-contract.d.ts +26 -0
- package/xtend-builder/typing/rmt-shell-authoring-contract.js +315 -0
- package/xtend-builder/utils/README.md +8 -0
- package/xtend-builder/utils/naming.d.ts +7 -0
- package/xtend-builder/utils/naming.js +36 -0
- package/xtend-builder/utils/validation.d.ts +5 -0
- package/xtend-builder/utils/validation.js +95 -0
- package/xtend-builder/wiring/README.md +46 -0
- package/xtend-builder/wiring/features.d.ts +5 -0
- package/xtend-builder/wiring/features.js +165 -0
- package/xtend-builder/wiring/hydration.d.ts +4 -0
- package/xtend-builder/wiring/hydration.js +44 -0
- package/xtend-builder/wiring/manifest.d.ts +5 -0
- package/xtend-builder/wiring/manifest.js +48 -0
- package/xtend-builder/workflows/README.md +47 -0
- package/xtend-builder/workflows/developer-workflow.d.ts +6 -0
- package/xtend-builder/workflows/developer-workflow.js +125 -0
- package/xtend-builder/writing/manifest-patcher.d.ts +49 -0
- package/xtend-builder/writing/manifest-patcher.js +391 -0
- package/xtend-builder/writing/write-plan.d.ts +148 -0
- package/xtend-builder/writing/write-plan.js +646 -0
- package/xtend-dev.d.ts +23 -0
- package/xtend-dev.js +4 -0
- package/xtend-loader.d.ts +201 -0
- package/xtend-loader.js +1704 -0
- package/xtend.css +402 -0
- package/xtendrmt/package.json +64 -0
- package/xtendrmt/rmt-core.d.ts +4452 -0
- package/xtendrmt/rmt-core.esm.js +25793 -0
- package/xtendrmt/rmt-first-demo-app.js +265 -0
- package/xtendrmt/rmt-first-demo-app.rmt +737 -0
- package/xtendrmt/rmt-lifecycle-demo.app.js +493 -0
- package/xtendrmt/rmt-lifecycle-demo.core.json +810 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt +35 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.app.js +153 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.core.json +810 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.scaffold.json +202 -0
- package/xtendrmt/rmt-lifecycle-demo.scaffold.json +187 -0
- package/xtendrmt/rmt-manifest.json +548 -0
- package/xtendrmt/rmt-runtime.browser.js +26183 -0
- package/xtendrmt/rmt-runtime.esm.js +26214 -0
- package/xtendrmt/rmt-vnext-enterprise-mfe-demo.core.json +849 -0
- package/xtendrmt/rmt-vnext-enterprise-mfe-demo.rmt +50 -0
- package/xtendrmt/rmt-vnext-reference-demo.core.json +1069 -0
- package/xtendrmt/rmt-vnext-reference-demo.rmt +50 -0
- package/xtendrmt/rmt.schema.json +3145 -0
- package/xtendrmt/surface-workbench.js +316 -0
- package/xtendrmt/surface-workbench.rmt +762 -0
- package/xtendrmt/xtendrmt-bestcase-demo.core.json +1187 -0
- package/xtendrmt/xtendrmt-bestcase-demo.js +1728 -0
- package/xtendrmt/xtendrmt-bestcase-demo.rmt +57 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# RMT vNext Remote Surfaces
|
|
2
|
+
|
|
3
|
+
RMT vNext beschreibt Remote Surfaces als deklarative Enterprise-MFE-Contracts.
|
|
4
|
+
Der RMT-Kernel fuehrt keine Remote Runtime aus und laedt keine Netzwerkquellen.
|
|
5
|
+
Hosts koennen aus dem Contract konkrete Loader-, Mount-, Sandbox- und Rollback-
|
|
6
|
+
Entscheidungen ableiten.
|
|
7
|
+
Boundary: no-remote-runtime-execution-in-rmt-kernel.
|
|
8
|
+
|
|
9
|
+
## Contract
|
|
10
|
+
|
|
11
|
+
```js
|
|
12
|
+
schema: "xtend.rmt.vnext-remote-surface.v1"
|
|
13
|
+
manifestSchema: "xtend.rmt.vnext-remote-surface-manifest.v1"
|
|
14
|
+
securitySchema: "xtend.rmt.vnext-remote-security-policy.v1"
|
|
15
|
+
compilerSchema: "xtend.rmt.vnext-remote-compiler.v1"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Eine Remote Surface muss explizit deklarieren:
|
|
19
|
+
|
|
20
|
+
- `owner` als verantwortliches Team oder Produkt.
|
|
21
|
+
- `version` und `versionRange` fuer aktive und erwartete Versionen.
|
|
22
|
+
- `origin` und `integrity` fuer Manifest- und Artefaktbindung.
|
|
23
|
+
- `trustBoundary` und Sandbox-/CSP-Anforderungen.
|
|
24
|
+
- `fallback` auf eine lokale Surface oder ein blockierendes Verhalten.
|
|
25
|
+
- `exposes` als Lane- und Shell-Target-Bindings.
|
|
26
|
+
- `emits` und `consumes` als typisierte Cross-Surface-Events.
|
|
27
|
+
|
|
28
|
+
## Authoring
|
|
29
|
+
|
|
30
|
+
```rmt
|
|
31
|
+
remote surface checkout.cart from remote "@xtend/checkout-cart" {
|
|
32
|
+
owner: "checkout-platform"
|
|
33
|
+
version: "^3.1.0"
|
|
34
|
+
|
|
35
|
+
remote {
|
|
36
|
+
origin: "https://mfe.xtend.invalid/checkout"
|
|
37
|
+
integrity: "sha256-demo-integrity"
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
trust boundary enterprise.remote.strict {
|
|
41
|
+
sandbox: ["allow-scripts"]
|
|
42
|
+
capabilities: ["surface.mount", "event.emit", "event.consume"]
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
exposes {
|
|
46
|
+
critical -> shell.slot:sidebar.cart
|
|
47
|
+
idle -> shell.slot:background.prefetch
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
fallback surface panel.checkoutFallback
|
|
51
|
+
|
|
52
|
+
emits checkout.cart.updated.v1 {
|
|
53
|
+
owner: "checkout-platform"
|
|
54
|
+
payload: "xtend.schemas.cartUpdated.v1"
|
|
55
|
+
scope: lane critical -> shell.slot:sidebar.cart
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
consumes user.session.changed.v1 {
|
|
59
|
+
owner: "identity-platform"
|
|
60
|
+
payload: "xtend.schemas.userSessionChanged.v1"
|
|
61
|
+
scope: shell -> checkout.cart
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
Das Beispiel ist absichtlich JSON-nah: alle fachlichen Fakten koennen stabil in
|
|
67
|
+
Core JSON serialisiert werden. Die Sprache bleibt dabei lesbar genug fuer
|
|
68
|
+
Produktteams und strikt genug fuer Gate-Suites.
|
|
69
|
+
|
|
70
|
+
## Boundaries
|
|
71
|
+
|
|
72
|
+
- Kein Remote-Code wird im RMT-Kernel ausgefuehrt.
|
|
73
|
+
- Kein Netzwerkzugriff ist fuer Language-Layer-Gates erlaubt.
|
|
74
|
+
- Remote Surfaces sind deny-by-default, bis Owner, Version, Integrity,
|
|
75
|
+
Trust Boundary und Fallback vollstaendig sind.
|
|
76
|
+
- SurfaceManager bleibt Runtime-Orchestrierung; `surface.registry` bleibt der
|
|
77
|
+
deklarative Enterprise-MFE-Index.
|
|
78
|
+
|
|
79
|
+
## Gates
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
node scripts/run_xtend_tests.js rmt-vnext-remote-manifest --json
|
|
83
|
+
node scripts/run_xtend_tests.js rmt-vnext-remote-security --json
|
|
84
|
+
node scripts/run_xtend_tests.js rmt-vnext-remote-compiler --json
|
|
85
|
+
node scripts/run_xtend_tests.js rmt-vnext-remote-compatibility --json
|
|
86
|
+
node scripts/run_xtend_tests.js rmt-vnext-enterprise-release --json
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Die Enterprise Demo liegt in `xtendrmt/rmt-vnext-enterprise-mfe-demo.rmt`; der
|
|
90
|
+
byte-stabile Core Output liegt in `xtendrmt/rmt-vnext-enterprise-mfe-demo.core.json`.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# RMT vNext Enterprise Surface Registry
|
|
2
|
+
|
|
3
|
+
`surface.registry` ist der gemeinsame Enterprise-MFE-Index fuer lokale und
|
|
4
|
+
remote Surfaces. Er ist kein Runtime-Manager und kein globaler Event Bus,
|
|
5
|
+
sondern ein auditierbarer Snapshot fuer Ownership, Discoverability, aktive
|
|
6
|
+
Versionen, Shell Targets, Lanes, Fallbacks und Event-Fakten.
|
|
7
|
+
|
|
8
|
+
## Contract
|
|
9
|
+
|
|
10
|
+
```js
|
|
11
|
+
schema: "xtend.rmt.vnext-enterprise-surface-registry.v1"
|
|
12
|
+
surfaceSchema: "xtend.rmt.vnext-enterprise-surface.v1"
|
|
13
|
+
targetReadiness: "rmt-vnext-enterprise-mfe-ready"
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Der Registry-Snapshot beantwortet die Enterprise-Fragen:
|
|
17
|
+
|
|
18
|
+
- Welche Surfaces existieren zur Laufzeit?
|
|
19
|
+
- Welches Team besitzt welche Surface?
|
|
20
|
+
- Welche Version ist aktiv und welche Range wurde erwartet?
|
|
21
|
+
- Welche Shell Targets und Lanes sind gebunden?
|
|
22
|
+
- Welche Surfaces sind lokal, remote oder Fallback?
|
|
23
|
+
- Welche Events duerfen eine Surface verlassen oder erreichen?
|
|
24
|
+
- Welche Degradation-Policy gilt bei Inkompatibilitaet?
|
|
25
|
+
|
|
26
|
+
## Registry Shape
|
|
27
|
+
|
|
28
|
+
```json
|
|
29
|
+
{
|
|
30
|
+
"schema": "xtend.rmt.vnext-enterprise-surface-registry.v1",
|
|
31
|
+
"registryId": "enterprise:xtend.enterprise-mfe.demo",
|
|
32
|
+
"surfaceCount": 4,
|
|
33
|
+
"localSurfaceCount": 3,
|
|
34
|
+
"remoteSurfaceCount": 1,
|
|
35
|
+
"indexes": {
|
|
36
|
+
"byOwner": {
|
|
37
|
+
"checkout-platform": ["surface:panel.checkoutFallback", "remote:checkout.cart"]
|
|
38
|
+
},
|
|
39
|
+
"byShellTarget": {
|
|
40
|
+
"shell.slot:sidebar.cart": ["remote:checkout.cart"]
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Die Registry darf von Hosts und Operations-Tools gelesen werden. Sie bleibt aber
|
|
47
|
+
ein Language-Layer-Artefakt und erzeugt keine impliziten Runtime-Verbindungen.
|
|
48
|
+
|
|
49
|
+
## Ownership
|
|
50
|
+
|
|
51
|
+
Jede Surface braucht einen fachlichen Owner. Der Owner verantwortet:
|
|
52
|
+
|
|
53
|
+
- Version Range und aktive Version.
|
|
54
|
+
- Fallback-Flaeche oder blockierenden Degradation-Pfad.
|
|
55
|
+
- Event Ownership und Payload Ownership.
|
|
56
|
+
- Security Policy und Trust Boundary.
|
|
57
|
+
- Migrationshinweise fuer Legacy-Surface-Fakten.
|
|
58
|
+
|
|
59
|
+
## Discoverability
|
|
60
|
+
|
|
61
|
+
Discoverability entsteht ueber stabile Indizes, nicht ueber Laufzeit-Heuristik.
|
|
62
|
+
Die Registry muss mindestens nach Surface Name, Owner, Shell Target, Lane,
|
|
63
|
+
Status, Remote ID und Fallback aufloesbar sein. Das Demo-Szenario validiert dies
|
|
64
|
+
ueber `tools/rmt-language/vnext-enterprise-fixtures.js`.
|
|
65
|
+
|
|
66
|
+
## Gates
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
node scripts/run_xtend_tests.js rmt-vnext-enterprise-registry --json
|
|
70
|
+
node scripts/run_xtend_tests.js rmt-vnext-degradation --json
|
|
71
|
+
node scripts/run_xtend_tests.js rmt-vnext-enterprise-fixtures --json
|
|
72
|
+
node scripts/run_xtend_tests.js rmt-vnext-enterprise-release --json
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Der operative Handoff ist in `docs/rmt-vnext-enterprise-mfe-handoff.md`
|
|
76
|
+
zusammengefasst.
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Screenreader Signals
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.docs.screenreader-signals.v1`
|
|
4
|
+
- Runtime-/Gate-Contract: `xtend.a11y.screenreader-signals.v1`
|
|
5
|
+
- Signal Record: `xtend.a11y.screenreader-signal.v1`
|
|
6
|
+
- Gate: `node scripts/run_xtend_tests.js screenreader-signals --json`
|
|
7
|
+
|
|
8
|
+
## Zweck
|
|
9
|
+
|
|
10
|
+
Screenreader-Signale machen sichtbar, welche UI-Zustandswechsel nicht still bleiben duerfen. Der Contract beschreibt `aria-live`, Statusregionen, Errorregionen und Announcements, ohne eine bestimmte UI-Runtime in XTendRMT einzubetten.
|
|
11
|
+
|
|
12
|
+
XTend nutzt den Contract fuer Komponenten und Scaffold-Artefakte. XTendRMT kann die resultierende A11y-Arbeit ueber Fabric-Lane `a11y`, Fiber `a11y.announce` und Schedule `a11y.user-blocking.announce` schedulen.
|
|
13
|
+
|
|
14
|
+
## Signalarten
|
|
15
|
+
|
|
16
|
+
| Signal | Live Region | Region | Typischer Einsatz |
|
|
17
|
+
|--------|-------------|--------|-------------------|
|
|
18
|
+
| `status-announcement` | `polite` | `status` | Toasts, Alerts, Submit-Erfolg |
|
|
19
|
+
| `dismissal-announcement` | `polite` | `status` | Toast/Alert wurde geschlossen |
|
|
20
|
+
| `validation-error-summary` | `assertive` | `error` | Formular- oder Input-Fehler |
|
|
21
|
+
| `submit-status` | `polite` | `status` | Formular erfolgreich verarbeitet |
|
|
22
|
+
| `dialog-context` | `none` | `dialog` | Dialog-/Modal-Kontext via Rolle und Label |
|
|
23
|
+
| `focus-return` | `none` | `focus` | Fokus geht nach Overlay-Schluss zur Quelle zurueck |
|
|
24
|
+
| `route-change-announcement` | `polite` | `status` | Route wurde gewechselt |
|
|
25
|
+
|
|
26
|
+
## Komponentenpflichten
|
|
27
|
+
|
|
28
|
+
Feedback-Komponenten deklarieren Statussignale und setzen eine Live-Region. Fehlerzustaende duerfen assertiv sein, muessen aber reviewbar bleiben.
|
|
29
|
+
|
|
30
|
+
Form-Komponenten deklarieren mindestens `validation-error-summary` und `submit-status`. Errorregionen brauchen eine klare Quelle und duerfen leere Announcements nicht als Erfolg werten.
|
|
31
|
+
|
|
32
|
+
Overlay-Komponenten deklarieren `dialog-context` und `focus-return`. Sie brauchen nicht zwingend `aria-live`, weil der Screenreader-Kontext ueber `role="dialog"`, `aria-modal`, `aria-labelledby` und Fokusmanagement entsteht.
|
|
33
|
+
|
|
34
|
+
## Scaffold
|
|
35
|
+
|
|
36
|
+
Neue Scaffold-Komponenten enthalten den Screenreader-Contract in:
|
|
37
|
+
|
|
38
|
+
- `xtendScaffoldA11yProfile.screenreader.signalContract`
|
|
39
|
+
- Manifest-Key `screenreaderSignals`
|
|
40
|
+
- Component-Doku Abschnitt `Screenreader-Signale`
|
|
41
|
+
- Fixture-Ergebnis `screenreaderSignals`
|
|
42
|
+
- Type Contract `ScreenreaderSignalContract`
|
|
43
|
+
|
|
44
|
+
## Verifikation
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm run test:screenreader-signals
|
|
48
|
+
node scripts/run_xtend_tests.js screenreader-signals --json
|
|
49
|
+
node scripts/run_xtend_tests.js a11y-hydration --json
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Der Gate prueft die Contract-Fabrik, reale Feedback-/Form-/Overlay-Komponenten, Scaffold-Ausgaben und Package-Metadaten.
|
|
53
|
+
|
|
54
|
+
## Grenzen
|
|
55
|
+
|
|
56
|
+
Der Contract ist kein Ersatz fuer manuelle Screenreader-Abnahme. Er verhindert aber, dass relevante Status-, Fehler- oder Overlay-Signale unbenannt bleiben.
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# XTend Supply-Chain Gates
|
|
2
|
+
|
|
3
|
+
- Status: Active ab `ER-WP-30`
|
|
4
|
+
- Docs Contract: `xtend.docs.supply-chain-gates.v1`
|
|
5
|
+
- Supply-Chain Contract: `xtend.security.supply-chain-gate-plan.v1`
|
|
6
|
+
- Dependency Audit Gate: `xtend.security.dependency-audit-gate.v1`
|
|
7
|
+
- License Policy: `xtend.security.license-policy.v1`
|
|
8
|
+
- Vulnerability Policy: `xtend.security.vulnerability-policy.v1`
|
|
9
|
+
- Release Gate: `xtend.security.release-supply-chain-gate.v1`
|
|
10
|
+
|
|
11
|
+
## Uebersicht
|
|
12
|
+
|
|
13
|
+
XTend ist fuer RC1-Publish-Prep als scoped Public-Package-Flaeche vorbereitet. Supply-Chain-Gates kontrollieren dafuer Dependencies, Lizenzen, Vulnerabilities, SBOM, Provenance und die installierbare Package-Oberflaeche.
|
|
14
|
+
|
|
15
|
+
Der lokale Default-Pfad ist offline und reproduzierbar. Er fragt keine npm Registry ab.
|
|
16
|
+
|
|
17
|
+
## Lokale Checks
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
node scripts/verify_supply_chain_policy.js --json
|
|
21
|
+
node scripts/run_xtend_tests.js supply-chain --json
|
|
22
|
+
npm run test:supply-chain
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Der Verify prueft:
|
|
26
|
+
|
|
27
|
+
- `private: false` fuer RC1-Publish-Prep
|
|
28
|
+
- `license: "Apache-2.0"` fuer den kompletten XTend-Stack
|
|
29
|
+
- `publishConfig.provenance = true`
|
|
30
|
+
- Export von `security/supply-chain-gate-policy.js`
|
|
31
|
+
- Release-Gate-Metadaten in `package.json`
|
|
32
|
+
- Dependency-Inventar und Lockfile-Pflicht
|
|
33
|
+
|
|
34
|
+
## CI-/Release-Stufen
|
|
35
|
+
|
|
36
|
+
Diese Kommandos sind fuer CI und Release Automation geplant:
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
npm audit --audit-level=moderate
|
|
40
|
+
npm sbom --sbom-format=cyclonedx --json
|
|
41
|
+
npm run release:report
|
|
42
|
+
npm run pack:dry-run
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
`npm audit` und `npm sbom` koennen Netzwerkzugriff benoetigen. Sie gehoeren deshalb nicht in den lokalen Default-Test, sondern in kontrollierte CI-/Release-Stufen.
|
|
46
|
+
|
|
47
|
+
## License Policy
|
|
48
|
+
|
|
49
|
+
Der komplette XTend-Stack ist auf `Apache-2.0` gesetzt. Fuer RC1-Publish-Prep ist `private: false` gesetzt; der eigentliche `npm publish` bleibt ein separater Owner-Schritt.
|
|
50
|
+
|
|
51
|
+
Die scoped Release-Manifests sind Teil des Supply-Chain-Gates:
|
|
52
|
+
|
|
53
|
+
| Package | Manifest |
|
|
54
|
+
|---------|----------|
|
|
55
|
+
| `@ccslabs/xtend` | `package.json` |
|
|
56
|
+
| `@ccslabs/xtend-rmt` | `xtendrmt/package.json` |
|
|
57
|
+
| `@ccslabs/xtend-fabric` | `fabric/package.json` |
|
|
58
|
+
| `@ccslabs/xtend-cli` | `xtend-builder/package.json` |
|
|
59
|
+
| `@ccslabs/xtend-compiler` | `tools/package.json` |
|
|
60
|
+
|
|
61
|
+
Ein oeffentlicher Release braucht vorher:
|
|
62
|
+
|
|
63
|
+
- bestaetigte Apache-2.0 License-Entscheidung
|
|
64
|
+
- Dependency-License-Inventar
|
|
65
|
+
- Review aller nicht-permissiven Dependency-Lizenzen
|
|
66
|
+
- Ausschluss von AGPL/GPL/UNLICENSED als Default-Third-Party-Abhaengigkeiten
|
|
67
|
+
|
|
68
|
+
## Vulnerability Policy
|
|
69
|
+
|
|
70
|
+
- `critical` blockiert jeden Release.
|
|
71
|
+
- `high` blockiert Release Candidates.
|
|
72
|
+
- Production-Findings ab `moderate` muessen triagiert werden.
|
|
73
|
+
- bekannte Exploits duerfen nicht in Release Candidates verbleiben.
|
|
74
|
+
|
|
75
|
+
## Maschinenlesbare Policy
|
|
76
|
+
|
|
77
|
+
```js
|
|
78
|
+
const {
|
|
79
|
+
createSupplyChainGatePlan,
|
|
80
|
+
classifyPackageSupplyChain
|
|
81
|
+
} = require('./security/supply-chain-gate-policy');
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Die Policy selbst liegt in:
|
|
85
|
+
|
|
86
|
+
```text
|
|
87
|
+
security/supply-chain-gate-policy.js
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Der lokale Report nutzt:
|
|
91
|
+
|
|
92
|
+
```text
|
|
93
|
+
xtend.security.supply-chain-report.v1
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
## Weiterfuehrende Dokumente
|
|
97
|
+
|
|
98
|
+
- [XTend Loader](./xtend-loader.md)
|
|
99
|
+
- [Trusted DOM und Sanitizing](./trusted-dom-sanitizing.md)
|
|
100
|
+
- [XTend-Fabric Runtime](./xtend-fabric.md)
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
# SurfaceManager Authoring Guide
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.surface.release-handoff.v1`
|
|
4
|
+
- Workpackage: `WP-SM-09`
|
|
5
|
+
- Fixture: `tests/fixtures/rmt-surface-manager-component-lab.rmt`
|
|
6
|
+
- Local Gate: `node scripts/run_xtend_tests.js surface-release-handoff --json`
|
|
7
|
+
|
|
8
|
+
## Ziel
|
|
9
|
+
|
|
10
|
+
Dieser Guide beschreibt den empfohlenen Authoring-Pfad fuer XTend App Shells mit SurfaceManager. Er verbindet den fruehen Component-Metadata-Pfad aus `WP-SM-01` mit der nativen RMT `surfaces` Domain aus `WP-SM-08`.
|
|
11
|
+
|
|
12
|
+
## Authoring-Modi
|
|
13
|
+
|
|
14
|
+
| Modus | Wann nutzen | Quelle |
|
|
15
|
+
|-------|-------------|--------|
|
|
16
|
+
| `component-metadata-mvp` | Kleine Shells, bestehende Component Records, schnelle Migration | `components[*].metadata.surface` |
|
|
17
|
+
| `dual-record-handoff` | Uebergang, Tooling-Vergleich, Regression gegen bestehende Runtime | `components[*].metadata.surface` plus `surfaces[*]` |
|
|
18
|
+
| `native-surfaces-preferred` | Komplexe App Shells, Multi Window, Panels, Overlay Stack | `surfaces[*]` als fachliche Surface-Quelle |
|
|
19
|
+
|
|
20
|
+
## Component-Metadata bleibt gueltig
|
|
21
|
+
|
|
22
|
+
Bestehende RMT Component Records bleiben kompatibel:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"id": "workbench.inspector",
|
|
27
|
+
"kind": "custom_element",
|
|
28
|
+
"adapter": "xtend.component",
|
|
29
|
+
"tag": "x-surface-window",
|
|
30
|
+
"schedule": "surface.user-blocking.open",
|
|
31
|
+
"metadata": {
|
|
32
|
+
"surface": {
|
|
33
|
+
"schema": "xtend.surface.record.v1",
|
|
34
|
+
"id": "surface.inspector",
|
|
35
|
+
"type": "window",
|
|
36
|
+
"manager": "workbench.manager",
|
|
37
|
+
"stateKey": "xtend.surface.inspector.state"
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Dieser Modus reicht, wenn eine App Shell ueber `x-surface-manager` bereits korrekt laeuft und keine native RMT Surface-Domain fuer Tooling, Migration oder Cross-Record-Validierung gebraucht wird.
|
|
44
|
+
|
|
45
|
+
## Native Surfaces bevorzugen
|
|
46
|
+
|
|
47
|
+
Fuer neue komplexe Shells ist `surfaces[*]` der Zielzustand:
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"id": "surface.inspector",
|
|
52
|
+
"schema": "xtend.surface.record.v1",
|
|
53
|
+
"type": "window",
|
|
54
|
+
"adapter": "xtend.surface",
|
|
55
|
+
"manager": "workbench.manager",
|
|
56
|
+
"component": "workbench.inspector",
|
|
57
|
+
"route": "workbench",
|
|
58
|
+
"schedule": "surface.user-blocking.open",
|
|
59
|
+
"stateKey": "xtend.surface.inspector.state"
|
|
60
|
+
}
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Authoring-Regeln:
|
|
64
|
+
|
|
65
|
+
- `manager` referenziert den `x-surface-manager` Component Record.
|
|
66
|
+
- `component` referenziert die sichtbare Surface-Komponente.
|
|
67
|
+
- `route` bindet die Surface an den App-Shell-Kontext.
|
|
68
|
+
- `schedule` bindet Open, Layout, Persistenz oder Diagnostics an RMT Scheduling.
|
|
69
|
+
- `stateKey` bleibt stabil zwischen Component-Metadata und nativer Domain.
|
|
70
|
+
- Historisch blieb `xtend.surface` bis `WP-SM-19` ein Adapter-Handoff; seit dem Runtime-Handoff ist der produktive Adapter-Claim gatebar, waehrend die sichtbare UI weiterhin ueber die SurfaceManager-Komponentenfamilie materialisiert wird.
|
|
71
|
+
|
|
72
|
+
## Release-Handoff
|
|
73
|
+
|
|
74
|
+
Nach `WP-SM-09` galt fuer den historischen Authoring-Handoff:
|
|
75
|
+
|
|
76
|
+
- Component-Metadata ist stabiler Compatibility-Pfad.
|
|
77
|
+
- Native `surfaces[*]` ist der bevorzugte Authoring-Pfad fuer neue App Shells.
|
|
78
|
+
- Dual Records sind der sichere Migrationsmodus.
|
|
79
|
+
- Der RMT Kernel bleibt host-neutral.
|
|
80
|
+
- Die produktive `xtend.surface` Adapter Runtime war Folgearbeit und ist seit `WP-SM-19` umgesetzt.
|
|
81
|
+
|
|
82
|
+
## WP-SM-19 Runtime Authoring
|
|
83
|
+
|
|
84
|
+
Ab `WP-SM-19` ist die produktive `xtend.surface` Adapter Runtime umgesetzt und ueber `xtend.surface.runtime-release-handoff.v1` gatebar. Fuer neue komplexe App Shells bleibt `native-surfaces-preferred` der Default: `surfaces[*]` beschreibt die fachlichen Surfaces, waehrend Component Records die sichtbaren XTend-UI-Bindings liefern.
|
|
85
|
+
|
|
86
|
+
Produktive Authoring-Regeln:
|
|
87
|
+
|
|
88
|
+
- `surfaces[*]` ist die Quelle fuer neue Multi-Surface-App-Shells.
|
|
89
|
+
- `components[*].metadata.surface` bleibt fuer bestehende Shells und Dual-Record-Migrationen kompatibel.
|
|
90
|
+
- `x-surface-manager` und der SurfaceController bleiben die Runtime-Registry.
|
|
91
|
+
- Fabric, XRouter, `xstate` und RMT-Kernel bleiben eigenstaendige Schichten.
|
|
92
|
+
- `node scripts/run_xtend_tests.js surface-runtime-release-handoff --json` prueft den finalen Runtime-Handoff.
|
|
93
|
+
|
|
94
|
+
Details stehen im [SurfaceManager Runtime Release Handoff](./surface-manager-runtime-release-handoff.md).
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# SurfaceManager Browser Lab
|
|
2
|
+
|
|
3
|
+
`WP-SM-18` ergaenzt die SurfaceManager-Schicht um ein browsernahes Lab fuer echte App-Shell-Stabilitaet. Der Contract `xtend.surface.browser-lab.v1` bleibt bewusst framework-nativ: Das Fixture nutzt `x-surface-manager`, `x-surface-window`, `x-side-panel`, `x-modal`, den `SkeletonLoader` aus dem Loader und die bestehende Surface-Hydration. Es ist keine Doku-App-Sonderloesung und kein Monkeypatch.
|
|
4
|
+
|
|
5
|
+
## Artefakte
|
|
6
|
+
|
|
7
|
+
| Artefakt | Pfad |
|
|
8
|
+
| --- | --- |
|
|
9
|
+
| Catalog | `catalog/surface-manager-browser-lab.js` |
|
|
10
|
+
| Browser-Lab Fixture | `tests/browser/fixtures/surface-manager-browser-lab.html` |
|
|
11
|
+
| Visual Baseline | `tests/browser/visual-baselines/surface-manager-browser-lab.dom-baseline.json` |
|
|
12
|
+
| Gate | `node scripts/run_xtend_tests.js surface-browser-lab --json` |
|
|
13
|
+
|
|
14
|
+
Die Visual Baseline verwendet `xtend.surface.browser-lab.visual-baseline.v1`. Sie ist JSON-basiert und pixel-ready: spaetere Browser-Lab-Laeufe koennen echte Snapshot-Dateien anhaengen, waehrend der lokale Fast-Gate bereits DOM-Signaturen, States und Budgets prueft.
|
|
15
|
+
|
|
16
|
+
## Gate-Zustaende
|
|
17
|
+
|
|
18
|
+
Das Fixture deckt fuenf reproduzierbare Zustaende ab:
|
|
19
|
+
|
|
20
|
+
| Snapshot | Zustand |
|
|
21
|
+
| --- | --- |
|
|
22
|
+
| `surface-lab-cold-start` | App Shell sichtbar vor Content-Hydration |
|
|
23
|
+
| `surface-lab-skeleton` | Parsedown-Content hinter SkeletonLoader verborgen |
|
|
24
|
+
| `surface-lab-hydrated` | Content freigegeben, Skeleton entfernt |
|
|
25
|
+
| `surface-lab-route-change` | Route-bound Surface ohne Shell-Resize |
|
|
26
|
+
| `surface-lab-modal-stack` | Modal Stack ueber SurfaceManager-Policy |
|
|
27
|
+
|
|
28
|
+
## Regressionen
|
|
29
|
+
|
|
30
|
+
Der Report verbindet `xtend.surface.browser-lab.performance-report.v1` und `xtend.surface.browser-lab.cls-report.v1`. Lokal muessen folgende Risiken fehlschlagen:
|
|
31
|
+
|
|
32
|
+
| Risiko | Budget |
|
|
33
|
+
| --- | --- |
|
|
34
|
+
| CLS | `<= 0.01` |
|
|
35
|
+
| Layout Shift | `<= 1px` |
|
|
36
|
+
| Pop-In von ungestyltem Content | `0` |
|
|
37
|
+
| Open/Focus | `<= 16ms` |
|
|
38
|
+
| Route | `<= 32ms` |
|
|
39
|
+
| Hydrate | `<= 120ms` |
|
|
40
|
+
|
|
41
|
+
## App-Shell-Proben
|
|
42
|
+
|
|
43
|
+
Das Lab referenziert die Docs-App ueber `docs/index.php` und den Parsedown/RMT-Pilot `docs/xtendrmt-parsedown-docs.rmt`. Zusaetzlich bleibt `tests/browser/fixtures/rmt-surface-workbench-smoke.html` als Referenz-Workbench im Gate. Dadurch prueft WP-SM-18 den produktnahen App-Shell-Pfad, ohne Parsedown, PHP oder Workbench-spezifisches Verhalten in den SurfaceManager zu verschieben.
|
|
44
|
+
|
|
45
|
+
Der SurfaceManager bleibt eine unterstuetzende XTend-UI-Schicht. Er erzeugt keine zweite Registry, ersetzt nicht Fabric oder den RMT-Kernel und laedt keine Remote Runtime im Kernel.
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# SurfaceManager Component Lab
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.surface.component-lab-fixture.v1`
|
|
4
|
+
- Release Contract: `xtend.surface.release-handoff.v1`
|
|
5
|
+
- Fixture: `tests/fixtures/rmt-surface-manager-component-lab.rmt`
|
|
6
|
+
- Gate: `node scripts/run_xtend_tests.js surface-release-handoff --json`
|
|
7
|
+
|
|
8
|
+
## Zweck
|
|
9
|
+
|
|
10
|
+
Das SurfaceManager Component Lab ist die statische Lab-Fixture fuer die SurfaceManager-Linie. Es zeigt, wie eine App Shell mit `x-surface-manager`, `x-surface-window`, `x-side-panel`, einem kompatiblen Dialog und nativen `surfaces[*]` Records beschrieben wird.
|
|
11
|
+
|
|
12
|
+
Die Fixture ist kein neuer Lab-Server. Sie erweitert den bestehenden Component-Lab-Gedanken um Surface-spezifische Authoring- und Migrationssicht.
|
|
13
|
+
|
|
14
|
+
## Panels
|
|
15
|
+
|
|
16
|
+
| Panel | Aufgabe |
|
|
17
|
+
|-------|---------|
|
|
18
|
+
| `surface-preview` | sichtbare Surface Shell mit WindowManager- und SidePanel-Komponenten pruefen |
|
|
19
|
+
| `native-rmt-inspector` | `surfaces[*]`, `adapters`, `components`, `routes` und `schedules` inspizieren |
|
|
20
|
+
| `migration-diff` | `components[*].metadata.surface` mit nativen Surface Records vergleichen |
|
|
21
|
+
| `quality-gates` | Gate-Kette von `surface-manager-quality` bis `surface-native-rmt` sichtbar machen |
|
|
22
|
+
| `source-links` | Doku-, Katalog-, Fixture-, Runtime- und Suite-Pfade verlinken |
|
|
23
|
+
|
|
24
|
+
## Fixture-Modell
|
|
25
|
+
|
|
26
|
+
`tests/fixtures/rmt-surface-manager-component-lab.rmt` enthaelt:
|
|
27
|
+
|
|
28
|
+
- vier Adapter: `xtend.component`, `xtend.xrouter`, `rmt.state-scheduler-diagnostics`, `xtend.surface`
|
|
29
|
+
- eine SurfaceManager-Komponente `surface.lab.manager`
|
|
30
|
+
- zwei Windows: `surface.lab.preview` und `surface.lab.rmtInspector`
|
|
31
|
+
- zwei SidePanels: `surface.lab.migrationPanel` und `surface.lab.qualityPanel`
|
|
32
|
+
- einen Dialog: `surface.lab.commandDialog`
|
|
33
|
+
- native `surfaces[*]` Records plus passende `components[*].metadata.surface` Dual Records
|
|
34
|
+
|
|
35
|
+
Die Fixture prueft die Authoring-Boundary. Sie behauptet keine produktive `xtend.surface` Runtime.
|
|
36
|
+
|
|
37
|
+
## Lokaler Ablauf
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
node scripts/run_xtend_tests.js surface-release-handoff --json
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Der Gate validiert die Fixture ueber RMT-Normalisierung und Semantic Graph. Damit bleiben Surface-IDs, Component-Refs, Manager-Refs, Routes und Schedules sichtbar und maschinenpruefbar.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
# SurfaceManager Controller
|
|
2
|
+
|
|
3
|
+
`WP-SM-02` fuehrt den internen Surface Controller fuer XTend ein. Er ist der lauffaehige Unterbau fuer Multi Window Oberflaechen, aber noch kein sichtbares Custom Element.
|
|
4
|
+
|
|
5
|
+
- Contract: `xtend.surface.controller.v1`
|
|
6
|
+
- Runtime: `components/xsurfacemanager-controller.js`
|
|
7
|
+
- Types: `components/xsurfacemanager-controller.d.ts`
|
|
8
|
+
- Snapshot: `xtend.surface.snapshot.v1`
|
|
9
|
+
- Gate: `node scripts/run_xtend_tests.js surface-controller --json`
|
|
10
|
+
|
|
11
|
+
## Rolle
|
|
12
|
+
|
|
13
|
+
Der Controller verwaltet Surface Records aus dem `WP-SM-01` Authoring-Modell. RMT kann also weiterhin normale Component Records mit `metadata.surface` beschreiben; der Controller normalisiert diese Records zu einer Laufzeit-Registry.
|
|
14
|
+
|
|
15
|
+
Er ist bewusst `controller-only-no-custom-element`. `WP-SM-03` baut darauf `x-surface-manager` und `x-surface-window`.
|
|
16
|
+
|
|
17
|
+
## API
|
|
18
|
+
|
|
19
|
+
Wichtige Methoden:
|
|
20
|
+
|
|
21
|
+
```js
|
|
22
|
+
const {
|
|
23
|
+
createSurfaceController
|
|
24
|
+
} = require('./components/xsurfacemanager-controller.js');
|
|
25
|
+
|
|
26
|
+
const controller = createSurfaceController({
|
|
27
|
+
managerId: 'workbench.manager',
|
|
28
|
+
xstate,
|
|
29
|
+
fabric
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
controller.registerSurface(surfaceRecord);
|
|
33
|
+
controller.openSurface('workbench.inspector');
|
|
34
|
+
controller.focusSurface('workbench.inspector');
|
|
35
|
+
controller.moveSurface('workbench.inspector', { x: 128, y: 96 });
|
|
36
|
+
controller.resizeSurface('workbench.inspector', { width: 700, height: 460 });
|
|
37
|
+
controller.closeSurface('workbench.inspector');
|
|
38
|
+
|
|
39
|
+
const snapshot = controller.snapshot();
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Unterstuetzt werden `registerSurface`, `openSurface`, `closeSurface`, `focusSurface`, `updateSurface`, `moveSurface`, `resizeSurface`, `minimizeSurface`, `maximizeSurface`, `restoreSurface`, `snapshot` und `dispose`.
|
|
43
|
+
|
|
44
|
+
## State
|
|
45
|
+
|
|
46
|
+
Nach jedem Commit spiegelt der Controller:
|
|
47
|
+
|
|
48
|
+
```text
|
|
49
|
+
xtend.surface.registry
|
|
50
|
+
xtend.surface.active
|
|
51
|
+
xtend.surface.<surfaceId>.state
|
|
52
|
+
xtend.surface.<surfaceId>.bounds
|
|
53
|
+
xtend.surface.<surfaceId>.lifecycle
|
|
54
|
+
xtend.surface.diagnostics
|
|
55
|
+
xtend.surface.snapshot
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Der Snapshot enthaelt nur Layout-, Lifecycle- und UI-State. Raw Metadata, DOM Nodes und Content-Payloads werden nicht serialisiert.
|
|
59
|
+
|
|
60
|
+
## Diagnostics
|
|
61
|
+
|
|
62
|
+
Wenn Fabric uebergeben wird, sendet der Controller `xtend.surface.diagnostic.v1` Events ueber `emitDiagnostic`. Ohne Fabric bleibt der Controller trotzdem lauffaehig und spiegelt Diagnostics nach xstate.
|
|
63
|
+
|
|
64
|
+
## Naechster Schritt
|
|
65
|
+
|
|
66
|
+
`WP-SM-03` sollte die sichtbare Komponentenfamilie auf diesem Controller aufbauen: `x-surface-manager`, `x-surface-window`, erste Layer-Container, Events und echte Window-Chrome.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# SurfaceManager Layout Engines
|
|
2
|
+
|
|
3
|
+
Ab `WP-SM-16` besitzt `x-surface-manager` den Contract `xtend.surface.layout-engine.v1` fuer sichtbare, snapshot-kompatible Surface Layouts.
|
|
4
|
+
|
|
5
|
+
## Engines
|
|
6
|
+
|
|
7
|
+
| Engine | Zweck |
|
|
8
|
+
|--------|-------|
|
|
9
|
+
| `freeform` | freie Fenster mit Viewport-Clamp, Snap und einfacher Kollisionskorrektur |
|
|
10
|
+
| `docked` | SidePanels und docked Surfaces belegen Ränder, Workspace-Surfaces fuellen den Rest |
|
|
11
|
+
| `split` | offene Layout-Surfaces werden als Split Panes verteilt |
|
|
12
|
+
| `tile` | offene Layout-Surfaces werden in einem Raster verteilt |
|
|
13
|
+
| `stacked` | offene Layout-Surfaces werden als versetzter Stack dargestellt und als kompakter Fallback genutzt |
|
|
14
|
+
|
|
15
|
+
## Runtime
|
|
16
|
+
|
|
17
|
+
- `snapshotSurfaceLayout()` liefert `xtend.surface.layout-engine-report.v1`.
|
|
18
|
+
- `applyLayoutEngine(engine)` schreibt berechnete Bounds ueber den bestehenden SurfaceController in den Snapshot.
|
|
19
|
+
- `dockSurface()` setzt Placement/Mode und wendet eine docked oder aktuell aktive Layout Engine sichtbar an.
|
|
20
|
+
- `undockSurface()` setzt eine Surface auf `floating` und laesst sie wieder im Freeform-Modus laufen.
|
|
21
|
+
- `surface-layout-gap` und `surface-layout-snap` steuern Abstaende und Snap-Raster.
|
|
22
|
+
- kompakte Viewports fallen auf `stacked` zurueck.
|
|
23
|
+
|
|
24
|
+
## Boundary
|
|
25
|
+
|
|
26
|
+
Die Layout Engine bleibt eine XTend-UI-Unterstuetzungsschicht. Der SurfaceController bleibt Registry- und Snapshot-Quelle, Fabric bleibt fuer Diagnostics/Backpressure zustaendig, und der RMT Kernel importiert keine XTend-Typen. Es entsteht keine zweite Registry.
|
|
27
|
+
|
|
28
|
+
Lokaler Gate:
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
node scripts/run_xtend_tests.js surface-layout-engines --json
|
|
32
|
+
```
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
# SurfaceManager Lazy Hydration
|
|
2
|
+
|
|
3
|
+
Docs Contract: `xtend.docs.surface-manager-lazy-hydration.v1`
|
|
4
|
+
|
|
5
|
+
`WP-SM-13` haertet `x-surface-manager` fuer shell-first Apps: Surface Chrome und App Shell koennen sofort sichtbar werden, waehrend Surface Content ueber den framework-nativen XTendLoader skeletonisiert, geladen und hydriert wird.
|
|
6
|
+
|
|
7
|
+
## Contract
|
|
8
|
+
|
|
9
|
+
- Loading Policy: `xtend.surface.loading-policy.v1`
|
|
10
|
+
- Loading Report: `xtend.surface.loading-report.v1`
|
|
11
|
+
- Gate: `node scripts/run_xtend_tests.js surface-lazy-hydration --json`
|
|
12
|
+
- Package Script: `npm run test:surface-lazy-hydration`
|
|
13
|
+
|
|
14
|
+
## Policies
|
|
15
|
+
|
|
16
|
+
`surface-loading-policy` am Manager setzt die Default-Policy. Einzelne Surfaces koennen sie mit `data-surface-hydration-policy` ueberschreiben.
|
|
17
|
+
|
|
18
|
+
| Policy | Verhalten |
|
|
19
|
+
|--------|-----------|
|
|
20
|
+
| `eager` | Content wird direkt nach der Surface-Registrierung hydriert. |
|
|
21
|
+
| `visible` | Content wird hydriert, sobald die Surface sichtbar ist. |
|
|
22
|
+
| `open` | Content wird hydriert, wenn die Surface geoeffnet ist. |
|
|
23
|
+
| `idle` | Content wird ueber `requestIdleCallback` oder Timeout-Fallback geladen. |
|
|
24
|
+
| `route` | Content wartet auf Route-Signale wie `xtend-route-changed`. |
|
|
25
|
+
|
|
26
|
+
## Runtime
|
|
27
|
+
|
|
28
|
+
`x-surface-manager` nutzt keine Doku-App-Sonderloesung. Die Runtime greift auf die vorhandenen Loader-APIs zu:
|
|
29
|
+
|
|
30
|
+
- `XTendLoader.ensureComponent`
|
|
31
|
+
- `XTendLoader.hydrateTree`
|
|
32
|
+
- `XTendLoader.showSkeleton`
|
|
33
|
+
- `XTendLoader.hideSkeleton`
|
|
34
|
+
- `XTendStyleRegistry.ensureRuntimeStyles`
|
|
35
|
+
|
|
36
|
+
Vor der Hydration setzt der Manager `data-xtend-surface-content-ready="false"` und laesst den SkeletonLoader direkte Content-Kinder verdecken. Erst nach erfolgreichem Component-Ready- und `hydrateTree`-Gate wird der Skeleton entfernt. Bei Fehlern oder Timeouts bleibt der Skeleton aktiv, damit kein ungestylter Content aufpoppt.
|
|
37
|
+
|
|
38
|
+
## Parsedown und Remote Slots
|
|
39
|
+
|
|
40
|
+
Parsedown-Container und remote-faehige Slots sind normale Surface-Inhalte. Es gibt kein Monkeypatch in der Doku-App:
|
|
41
|
+
|
|
42
|
+
```html
|
|
43
|
+
<x-surface-window
|
|
44
|
+
surface-id="docs.surface"
|
|
45
|
+
data-surface-hydration-policy="open"
|
|
46
|
+
open>
|
|
47
|
+
<section data-xtend-parsedown-container="true">
|
|
48
|
+
<x-code language="markdown"># Docs</x-code>
|
|
49
|
+
</section>
|
|
50
|
+
</x-surface-window>
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
Remote-faehige Slots koennen mit `data-remote-capable-content-slot="true"` markiert werden. Die Lazy-Hydration laedt dabei nur den DOM-/Komponenten-Scope; Remote Trust, Ownership und Capabilities bleiben spaeteren Remote-Surface-Policies vorbehalten.
|
|
54
|
+
|
|
55
|
+
## Diagnostics
|
|
56
|
+
|
|
57
|
+
Der Manager bietet:
|
|
58
|
+
|
|
59
|
+
- `snapshotSurfaceLoading()`
|
|
60
|
+
- `hydrateSurfaceContent(surfaceRef, options)`
|
|
61
|
+
- Events `surface-content-loading`, `surface-content-hydrated`, `surface-content-hydration-skipped` und `surface-content-hydration-error`
|
|
62
|
+
|
|
63
|
+
`snapshotSurfaceLoading()` meldet Policy, Skeleton-Status, Hydration-Status, Tags, unresolved Tags, Dauer und die Boundaries `shellFirst`, `protectsUnstyledContent` und `createsSecondRegistry: false`.
|