@ccslabs/xtend 0.1.0-rc.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/README.md +4 -0
- package/catalog/component-catalog-coverage.js +2 -0
- package/catalog/epic13-package-export-lock.js +11 -1
- package/catalog/epic13-rmt-production-readiness.js +0 -1
- package/catalog/epic18-rmt-action-effect-runtime.d.ts +36 -0
- package/catalog/epic18-rmt-action-effect-runtime.js +249 -0
- package/catalog/epic18-rmt-app-platform-authoring.d.ts +39 -0
- package/catalog/epic18-rmt-app-platform-authoring.js +319 -0
- package/catalog/epic18-rmt-app-platform-fixture.d.ts +33 -0
- package/catalog/epic18-rmt-app-platform-fixture.js +221 -0
- package/catalog/epic18-rmt-app-platform-release-handoff.d.ts +30 -0
- package/catalog/epic18-rmt-app-platform-release-handoff.js +231 -0
- package/catalog/epic18-rmt-app-platform-tooling.d.ts +38 -0
- package/catalog/epic18-rmt-app-platform-tooling.js +242 -0
- package/catalog/epic18-rmt-component-template-primitives.d.ts +33 -0
- package/catalog/epic18-rmt-component-template-primitives.js +240 -0
- package/catalog/epic18-rmt-dom-descriptor-renderer.d.ts +35 -0
- package/catalog/epic18-rmt-dom-descriptor-renderer.js +232 -0
- package/catalog/epic18-rmt-event-routing-runtime.d.ts +35 -0
- package/catalog/epic18-rmt-event-routing-runtime.js +234 -0
- package/catalog/epic18-rmt-state-selector-runtime.d.ts +34 -0
- package/catalog/epic18-rmt-state-selector-runtime.js +216 -0
- package/catalog/epic18-rmt-surface-resource-graph-runtime.d.ts +36 -0
- package/catalog/epic18-rmt-surface-resource-graph-runtime.js +256 -0
- package/catalog/surface-manager-controller.js +5 -1
- package/catalog/surface-manager-materialization.js +7 -1
- package/catalog/surface-manager-overlay-bridge.js +41 -6
- package/catalog/surface-manager-workbench-fixture.js +1 -1
- package/catalog/surface-type-capability-matrix.d.ts +61 -0
- package/catalog/surface-type-capability-matrix.js +183 -0
- package/catalog/type-exports-rmt.js +37 -1
- package/catalog/type-exports.js +3 -3
- package/components/icon-packs/lucide.js +4 -0
- package/components/manifest.json +2 -0
- package/components/prism-rmt.d.ts +34 -0
- package/components/prism-rmt.js +130 -0
- package/components/xcards.js +15 -0
- package/components/xcode.d.ts +36 -1
- package/components/xcode.js +215 -20
- package/components/xfooter.js +17 -0
- package/components/xheader.js +14 -0
- package/components/xhero.js +16 -1
- package/components/xlink.js +97 -14
- package/components/xmasonry.js +15 -0
- package/components/xplayer.d.ts +44 -2
- package/components/xplayer.js +242 -15
- package/components/xrouter.js +27 -2
- package/components/xsection.js +15 -0
- package/components/xsidepanel.js +10 -2
- package/components/xsurfacemanager-controller.d.ts +2 -1
- package/components/xsurfacemanager-controller.js +27 -3
- package/components/xsurfacemanager.d.ts +2 -0
- package/components/xsurfacemanager.js +20 -8
- package/components/xsurfaceoverlay-bridge.d.ts +20 -5
- package/components/xsurfaceoverlay-bridge.js +114 -18
- package/components/xsurfaceportal.d.ts +29 -0
- package/components/xsurfaceportal.js +122 -0
- package/components/xsurfaceregion.d.ts +50 -0
- package/components/xsurfaceregion.js +285 -0
- package/components/xsurfacewindow.js +2 -1
- package/components/xtooltip.js +89 -23
- package/docs/README.md +222 -298
- package/docs/changelog.md +107 -0
- package/docs/component-catalog-coverage.md +9 -9
- package/docs/component-platform.md +19 -1
- package/docs/component-ux-app-authoring.md +56 -63
- package/docs/components/xcode.md +83 -53
- package/docs/components/xsurfaceportal.md +32 -0
- package/docs/components/xsurfaceregion.md +37 -0
- package/docs/components.md +105 -69
- package/docs/de/README.md +264 -0
- package/docs/de/XTend-ADR.md +221 -0
- package/docs/de/a11y-keyboard-smokes.md +62 -0
- package/docs/de/about.md +18 -0
- package/docs/de/api.md +157 -0
- package/docs/de/best-practices.md +76 -0
- package/docs/de/changelog.md +107 -0
- package/docs/de/component-catalog-coverage.md +58 -0
- package/docs/de/component-lab.md +103 -0
- package/docs/de/component-long-tail-migration.md +41 -0
- package/docs/de/component-platform.md +177 -0
- package/docs/de/component-ux-app-authoring.md +123 -0
- package/docs/de/component-ux-authoring.md +96 -0
- package/docs/de/component-ux-gates.md +45 -0
- package/docs/de/components/x-rmt-lifecycle-demo-build.md +60 -0
- package/docs/de/components/xalert.md +81 -0
- package/docs/de/components/xbutton.md +103 -0
- package/docs/de/components/xcalendar.md +82 -0
- package/docs/de/components/xcards.md +128 -0
- package/docs/de/components/xcheckbox.md +102 -0
- package/docs/de/components/xcode.md +156 -0
- package/docs/de/components/xdialog.md +92 -0
- package/docs/de/components/xdrawer.md +84 -0
- package/docs/de/components/xfooter.md +126 -0
- package/docs/de/components/xform.md +128 -0
- package/docs/de/components/xheader.md +308 -0
- package/docs/de/components/xhero.md +142 -0
- package/docs/de/components/xicon.md +125 -0
- package/docs/de/components/xinput.md +129 -0
- package/docs/de/components/xlightbox.md +98 -0
- package/docs/de/components/xlink.md +109 -0
- package/docs/de/components/xmasonry.md +124 -0
- package/docs/de/components/xmenu.md +158 -0
- package/docs/de/components/xmodal.md +82 -0
- package/docs/de/components/xplayer.md +104 -0
- package/docs/de/components/xpopover.md +67 -0
- package/docs/de/components/xprogress.md +56 -0
- package/docs/de/components/xradio.md +103 -0
- package/docs/de/components/xrouter.md +260 -0
- package/docs/de/components/xsection.md +125 -0
- package/docs/de/components/xselect.md +105 -0
- package/docs/de/components/xsidepanel.md +30 -0
- package/docs/de/components/xspinner.md +102 -0
- package/docs/de/components/xstate.md +148 -0
- package/docs/de/components/xstatus.md +55 -0
- package/docs/de/components/xsummary.md +78 -0
- package/docs/de/components/xsurfacemanager.md +27 -0
- package/docs/de/components/xsurfacewindow.md +21 -0
- package/docs/de/components/xtabs.md +160 -0
- package/docs/de/components/xtextarea.md +98 -0
- package/docs/de/components/xtheme.md +167 -0
- package/docs/de/components/xtoast.md +62 -0
- package/docs/de/components/xtooltip.md +66 -0
- package/docs/de/components/xtype.md +82 -0
- package/docs/de/components/xutils.md +144 -0
- package/docs/de/components/xwriter.md +94 -0
- package/docs/de/components.md +153 -0
- package/docs/de/conditional-network-evidence-ci.md +38 -0
- package/docs/de/conditional-network-evidence.md +50 -0
- package/docs/de/core-migration-guide.md +110 -0
- package/docs/de/design-tokens.md +116 -0
- package/docs/de/docs-rmt-production-hardening.md +31 -0
- package/docs/de/enterprise-adoption.md +413 -0
- package/docs/de/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/de/epic10-platform-gates.md +62 -0
- package/docs/de/epic10-release-handoff.md +81 -0
- package/docs/de/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/de/epic12-rc0-handoff.md +61 -0
- package/docs/de/epic18-media-manager-vendor-upstream.md +318 -0
- package/docs/de/epic18-rmt-app-platform-release-handoff.md +67 -0
- package/docs/de/epic18-vendor-bugfixes.md +34 -0
- package/docs/de/existing-component-metadata.md +67 -0
- package/docs/de/hydration-performance-closure.md +34 -0
- package/docs/de/hydration-policies.md +71 -0
- package/docs/de/known-residual-triage.md +22 -0
- package/docs/de/manifest-import-policy.md +79 -0
- package/docs/de/manifest.md +112 -0
- package/docs/de/motion-contrast.md +67 -0
- package/docs/de/package-export-lock.md +44 -0
- package/docs/de/performance-measurements.md +106 -0
- package/docs/de/performance-regression.md +89 -0
- package/docs/de/performance.md +94 -0
- package/docs/de/previews/README.md +17 -0
- package/docs/de/prod-browser-csp-smokes.md +40 -0
- package/docs/de/public-component-types.md +79 -0
- package/docs/de/quick-start-guide.md +220 -0
- package/docs/de/rc0-adoption-guide.md +102 -0
- package/docs/de/rc0-gate-matrix.md +58 -0
- package/docs/de/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/de/rc1-migration-notes.md +69 -0
- package/docs/de/rc1-readiness.md +46 -0
- package/docs/de/release-owner-acceptance.md +56 -0
- package/docs/de/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/de/rmt-action-effect-runtime.md +81 -0
- package/docs/de/rmt-app-platform-authoring.md +54 -0
- package/docs/de/rmt-app-platform-fixture.md +46 -0
- package/docs/de/rmt-app-platform-migration-guide.md +88 -0
- package/docs/de/rmt-app-platform-tooling.md +79 -0
- package/docs/de/rmt-component-template-primitives.md +57 -0
- package/docs/de/rmt-dom-descriptor-renderer.md +64 -0
- package/docs/de/rmt-dsl-authoring-polish.md +145 -0
- package/docs/de/rmt-event-routing-runtime.md +81 -0
- package/docs/de/rmt-first-demo-app.md +77 -0
- package/docs/de/rmt-first-xtend-apps.md +129 -0
- package/docs/de/rmt-kernel-panic-recovery-incident-handoff.md +61 -0
- package/docs/de/rmt-kernel-security-hardening-migration.md +50 -0
- package/docs/de/rmt-kernel-trusted-output-authoring.md +69 -0
- package/docs/de/rmt-language-server.md +234 -0
- package/docs/de/rmt-lifecycle-demo.md +24 -0
- package/docs/de/rmt-linter.md +140 -0
- package/docs/de/rmt-node-ssr-adapter.md +100 -0
- package/docs/de/rmt-php-ssr-adapter.md +120 -0
- package/docs/de/rmt-production-readiness.md +63 -0
- package/docs/de/rmt-state-selector-runtime.md +47 -0
- package/docs/de/rmt-surface-resource-graph-runtime.md +92 -0
- package/docs/de/rmt-tooling-release-gates.md +77 -0
- package/docs/de/rmt-vnext-authoring.md +170 -0
- package/docs/de/rmt-vnext-component-primitives.md +188 -0
- package/docs/de/rmt-vnext-cross-surface-events.md +68 -0
- package/docs/de/rmt-vnext-enterprise-mfe-handoff.md +70 -0
- package/docs/de/rmt-vnext-fabric-bridge-evidence.md +81 -0
- package/docs/de/rmt-vnext-migration-notes.md +62 -0
- package/docs/de/rmt-vnext-primitive-authoring-tooling.md +247 -0
- package/docs/de/rmt-vnext-primitive-grammar-design.md +289 -0
- package/docs/de/rmt-vnext-primitive-lowering.md +108 -0
- package/docs/de/rmt-vnext-primitive-migration.md +119 -0
- package/docs/de/rmt-vnext-primitive-parser-ast.md +76 -0
- package/docs/de/rmt-vnext-primitive-semantic-graph.md +118 -0
- package/docs/de/rmt-vnext-primitives-compiler-backlog.md +739 -0
- package/docs/de/rmt-vnext-release-handoff.md +83 -0
- package/docs/de/rmt-vnext-remote-surfaces.md +90 -0
- package/docs/de/rmt-vnext-source-to-sea-gate.md +612 -0
- package/docs/de/rmt-vnext-surface-registry-enterprise.md +76 -0
- package/docs/de/screenreader-signals.md +56 -0
- package/docs/de/supply-chain-gates.md +100 -0
- package/docs/de/surface-manager-authoring-guide.md +94 -0
- package/docs/de/surface-manager-browser-lab.md +45 -0
- package/docs/de/surface-manager-component-lab.md +43 -0
- package/docs/de/surface-manager-controller.md +66 -0
- package/docs/de/surface-manager-layout-engines.md +32 -0
- package/docs/de/surface-manager-lazy-hydration.md +63 -0
- package/docs/de/surface-manager-migration-guide.md +122 -0
- package/docs/de/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/de/surface-manager-overlay-bridge.md +53 -0
- package/docs/de/surface-manager-persistence.md +30 -0
- package/docs/de/surface-manager-quality-gates.md +51 -0
- package/docs/de/surface-manager-release-handoff.md +68 -0
- package/docs/de/surface-manager-remote-policy.md +54 -0
- package/docs/de/surface-manager-rmt-authoring.md +102 -0
- package/docs/de/surface-manager-route-lifecycle.md +59 -0
- package/docs/de/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/de/surface-manager-side-panel-runtime.md +36 -0
- package/docs/de/surface-manager-stack-policy.md +39 -0
- package/docs/de/surface-manager-window-runtime.md +47 -0
- package/docs/de/surface-manager-workbench-fixture.md +43 -0
- package/docs/de/third-party-design-authoring.md +406 -0
- package/docs/de/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/de/trusted-dom-sanitizing.md +110 -0
- package/docs/de/type-exports.md +61 -0
- package/docs/de/typescript-components.md +63 -0
- package/docs/de/visual-browser-regression.md +83 -0
- package/docs/de/visual-owner-artifacts.md +46 -0
- package/docs/de/visual-snapshot-automation.md +87 -0
- package/docs/de/xtend-api-types.md +55 -0
- package/docs/de/xtend-builder-types.md +55 -0
- package/docs/de/xtend-catalog-types.md +44 -0
- package/docs/de/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/de/xtend-fabric.md +474 -0
- package/docs/de/xtend-loader-types.md +58 -0
- package/docs/de/xtend-loader.md +265 -0
- package/docs/de/xtend-policy-types.md +38 -0
- package/docs/de/xtend-rmt-types.md +40 -0
- package/docs/de/xtend-vendor-types.md +36 -0
- package/docs/de/xtendrmt-app-dsl.md +334 -0
- package/docs/de/xtendrmt-migration-guide.md +266 -0
- package/docs/de/xtendrmt-native-authoring.md +333 -0
- package/docs/de/xtendrmt-overview.md +109 -0
- package/docs/de/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/de/xtendrmt-runtime-bridge.md +155 -0
- package/docs/en/README.md +163 -0
- package/docs/en/XTend-ADR.md +221 -0
- package/docs/en/a11y-keyboard-smokes.md +68 -0
- package/docs/en/about.md +25 -0
- package/docs/en/api.md +171 -0
- package/docs/en/best-practices.md +125 -0
- package/docs/en/changelog.md +104 -0
- package/docs/en/component-catalog-coverage.md +104 -0
- package/docs/en/component-lab.md +103 -0
- package/docs/en/component-long-tail-migration.md +41 -0
- package/docs/en/component-platform.md +243 -0
- package/docs/en/component-ux-app-authoring.md +118 -0
- package/docs/en/component-ux-authoring.md +96 -0
- package/docs/en/component-ux-gates.md +45 -0
- package/docs/en/components/x-rmt-lifecycle-demo-build.md +75 -0
- package/docs/en/components/xalert.md +94 -0
- package/docs/en/components/xbutton.md +118 -0
- package/docs/en/components/xcalendar.md +95 -0
- package/docs/en/components/xcards.md +139 -0
- package/docs/en/components/xcheckbox.md +118 -0
- package/docs/en/components/xcode.md +153 -0
- package/docs/en/components/xdialog.md +108 -0
- package/docs/en/components/xdrawer.md +110 -0
- package/docs/en/components/xfooter.md +138 -0
- package/docs/en/components/xform.md +147 -0
- package/docs/en/components/xheader.md +308 -0
- package/docs/en/components/xhero.md +157 -0
- package/docs/en/components/xicon.md +149 -0
- package/docs/en/components/xinput.md +147 -0
- package/docs/en/components/xlightbox.md +113 -0
- package/docs/en/components/xlink.md +130 -0
- package/docs/en/components/xmasonry.md +136 -0
- package/docs/en/components/xmenu.md +185 -0
- package/docs/en/components/xmodal.md +102 -0
- package/docs/en/components/xplayer.md +114 -0
- package/docs/en/components/xpopover.md +87 -0
- package/docs/en/components/xprogress.md +73 -0
- package/docs/en/components/xradio.md +119 -0
- package/docs/en/components/xrouter.md +260 -0
- package/docs/en/components/xsection.md +136 -0
- package/docs/en/components/xselect.md +122 -0
- package/docs/en/components/xsidepanel.md +48 -0
- package/docs/en/components/xspinner.md +118 -0
- package/docs/en/components/xstate.md +163 -0
- package/docs/en/components/xstatus.md +71 -0
- package/docs/en/components/xsummary.md +90 -0
- package/docs/en/components/xsurfacemanager.md +42 -0
- package/docs/en/components/xsurfacewindow.md +31 -0
- package/docs/en/components/xtabs.md +187 -0
- package/docs/en/components/xtextarea.md +115 -0
- package/docs/en/components/xtheme.md +203 -0
- package/docs/en/components/xtoast.md +78 -0
- package/docs/en/components/xtooltip.md +85 -0
- package/docs/en/components/xtype.md +91 -0
- package/docs/en/components/xutils.md +161 -0
- package/docs/en/components/xwriter.md +106 -0
- package/docs/en/components.md +151 -0
- package/docs/en/conditional-network-evidence-ci.md +38 -0
- package/docs/en/conditional-network-evidence.md +50 -0
- package/docs/en/core-migration-guide.md +110 -0
- package/docs/en/design-tokens.md +137 -0
- package/docs/en/docs-rmt-production-hardening.md +31 -0
- package/docs/en/enterprise-adoption.md +413 -0
- package/docs/en/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/en/epic10-platform-gates.md +62 -0
- package/docs/en/epic10-release-handoff.md +81 -0
- package/docs/en/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/en/epic12-rc0-handoff.md +61 -0
- package/docs/en/epic18-media-manager-vendor-upstream.md +232 -0
- package/docs/en/epic18-rmt-app-platform-release-handoff.md +60 -0
- package/docs/en/epic18-vendor-bugfixes.md +29 -0
- package/docs/en/existing-component-metadata.md +67 -0
- package/docs/en/hydration-performance-closure.md +34 -0
- package/docs/en/hydration-policies.md +75 -0
- package/docs/en/known-residual-triage.md +22 -0
- package/docs/en/manifest-import-policy.md +81 -0
- package/docs/en/manifest.md +135 -0
- package/docs/en/motion-contrast.md +67 -0
- package/docs/en/package-export-lock.md +44 -0
- package/docs/en/performance-measurements.md +106 -0
- package/docs/en/performance-regression.md +89 -0
- package/docs/en/performance.md +132 -0
- package/docs/en/previews/README.md +17 -0
- package/docs/en/prod-browser-csp-smokes.md +40 -0
- package/docs/en/public-component-types.md +79 -0
- package/docs/en/quick-start-guide.md +189 -0
- package/docs/en/rc0-adoption-guide.md +102 -0
- package/docs/en/rc0-gate-matrix.md +58 -0
- package/docs/en/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/en/rc1-migration-notes.md +69 -0
- package/docs/en/rc1-readiness.md +46 -0
- package/docs/en/release-owner-acceptance.md +56 -0
- package/docs/en/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/en/rmt-action-effect-runtime.md +101 -0
- package/docs/en/rmt-app-platform-authoring.md +47 -0
- package/docs/en/rmt-app-platform-fixture.md +35 -0
- package/docs/en/rmt-app-platform-migration-guide.md +75 -0
- package/docs/en/rmt-app-platform-tooling.md +58 -0
- package/docs/en/rmt-component-template-primitives.md +49 -0
- package/docs/en/rmt-dom-descriptor-renderer.md +54 -0
- package/docs/en/rmt-dsl-authoring-polish.md +143 -0
- package/docs/en/rmt-event-routing-runtime.md +98 -0
- package/docs/en/rmt-first-demo-app.md +87 -0
- package/docs/en/rmt-first-xtend-apps.md +127 -0
- package/docs/en/rmt-kernel-panic-recovery-incident-handoff.md +60 -0
- package/docs/en/rmt-kernel-security-hardening-migration.md +49 -0
- package/docs/en/rmt-kernel-trusted-output-authoring.md +68 -0
- package/docs/en/rmt-language-server.md +243 -0
- package/docs/en/rmt-lifecycle-demo.md +23 -0
- package/docs/en/rmt-linter.md +146 -0
- package/docs/en/rmt-node-ssr-adapter.md +99 -0
- package/docs/en/rmt-php-ssr-adapter.md +118 -0
- package/docs/en/rmt-production-readiness.md +63 -0
- package/docs/en/rmt-state-selector-runtime.md +34 -0
- package/docs/en/rmt-surface-resource-graph-runtime.md +68 -0
- package/docs/en/rmt-tooling-release-gates.md +77 -0
- package/docs/en/rmt-vnext-authoring.md +102 -0
- package/docs/en/rmt-vnext-component-primitives.md +185 -0
- package/docs/en/rmt-vnext-cross-surface-events.md +59 -0
- package/docs/en/rmt-vnext-enterprise-mfe-handoff.md +62 -0
- package/docs/en/rmt-vnext-fabric-bridge-evidence.md +64 -0
- package/docs/en/rmt-vnext-migration-notes.md +62 -0
- package/docs/en/rmt-vnext-primitive-authoring-tooling.md +174 -0
- package/docs/en/rmt-vnext-primitive-grammar-design.md +268 -0
- package/docs/en/rmt-vnext-primitive-lowering.md +91 -0
- package/docs/en/rmt-vnext-primitive-migration.md +93 -0
- package/docs/en/rmt-vnext-primitive-parser-ast.md +59 -0
- package/docs/en/rmt-vnext-primitive-semantic-graph.md +103 -0
- package/docs/en/rmt-vnext-primitives-compiler-backlog.md +327 -0
- package/docs/en/rmt-vnext-release-handoff.md +83 -0
- package/docs/en/rmt-vnext-remote-surfaces.md +81 -0
- package/docs/en/rmt-vnext-source-to-sea-gate.md +482 -0
- package/docs/en/rmt-vnext-surface-registry-enterprise.md +68 -0
- package/docs/en/screenreader-signals.md +56 -0
- package/docs/en/supply-chain-gates.md +106 -0
- package/docs/en/surface-manager-authoring-guide.md +94 -0
- package/docs/en/surface-manager-browser-lab.md +45 -0
- package/docs/en/surface-manager-component-lab.md +43 -0
- package/docs/en/surface-manager-controller.md +66 -0
- package/docs/en/surface-manager-layout-engines.md +32 -0
- package/docs/en/surface-manager-lazy-hydration.md +63 -0
- package/docs/en/surface-manager-migration-guide.md +113 -0
- package/docs/en/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/en/surface-manager-overlay-bridge.md +53 -0
- package/docs/en/surface-manager-persistence.md +30 -0
- package/docs/en/surface-manager-quality-gates.md +51 -0
- package/docs/en/surface-manager-release-handoff.md +68 -0
- package/docs/en/surface-manager-remote-policy.md +54 -0
- package/docs/en/surface-manager-rmt-authoring.md +89 -0
- package/docs/en/surface-manager-route-lifecycle.md +59 -0
- package/docs/en/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/en/surface-manager-side-panel-runtime.md +36 -0
- package/docs/en/surface-manager-stack-policy.md +39 -0
- package/docs/en/surface-manager-window-runtime.md +47 -0
- package/docs/en/surface-manager-workbench-fixture.md +43 -0
- package/docs/en/third-party-design-authoring.md +406 -0
- package/docs/en/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/en/trusted-dom-sanitizing.md +124 -0
- package/docs/en/type-exports.md +61 -0
- package/docs/en/typescript-components.md +63 -0
- package/docs/en/visual-browser-regression.md +83 -0
- package/docs/en/visual-owner-artifacts.md +46 -0
- package/docs/en/visual-snapshot-automation.md +87 -0
- package/docs/en/xtend-api-types.md +55 -0
- package/docs/en/xtend-builder-types.md +55 -0
- package/docs/en/xtend-catalog-types.md +44 -0
- package/docs/en/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/en/xtend-fabric.md +474 -0
- package/docs/en/xtend-loader-types.md +58 -0
- package/docs/en/xtend-loader.md +265 -0
- package/docs/en/xtend-policy-types.md +38 -0
- package/docs/en/xtend-rmt-types.md +40 -0
- package/docs/en/xtend-vendor-types.md +36 -0
- package/docs/en/xtendrmt-app-dsl.md +331 -0
- package/docs/en/xtendrmt-migration-guide.md +256 -0
- package/docs/en/xtendrmt-native-authoring.md +336 -0
- package/docs/en/xtendrmt-overview.md +63 -0
- package/docs/en/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/en/xtendrmt-runtime-bridge.md +155 -0
- package/docs/enterprise-adoption.md +4 -2
- package/docs/epic18-media-manager-vendor-upstream.md +318 -0
- package/docs/epic18-rmt-app-platform-release-handoff.md +67 -0
- package/docs/epic18-vendor-bugfixes.md +34 -0
- package/docs/index.php +1056 -109
- package/docs/manifest.md +8 -2
- package/docs/menu.json +986 -133
- package/docs/package-export-lock.md +2 -2
- package/docs/public-component-types.md +2 -2
- package/docs/quick-start-guide.md +126 -58
- package/docs/rmt-action-effect-runtime.md +101 -0
- package/docs/rmt-app-platform-authoring.md +54 -0
- package/docs/rmt-app-platform-fixture.md +46 -0
- package/docs/rmt-app-platform-migration-guide.md +88 -0
- package/docs/rmt-app-platform-tooling.md +79 -0
- package/docs/rmt-component-template-primitives.md +57 -0
- package/docs/rmt-dom-descriptor-renderer.md +64 -0
- package/docs/rmt-dsl-authoring-polish.md +67 -44
- package/docs/rmt-event-routing-runtime.md +98 -0
- package/docs/rmt-first-demo-app.md +2 -2
- package/docs/rmt-first-xtend-apps.md +70 -46
- package/docs/rmt-language-server.md +61 -4
- package/docs/rmt-lifecycle-demo.md +1 -2
- package/docs/rmt-node-ssr-adapter.md +144 -0
- package/docs/rmt-php-ssr-adapter.md +158 -0
- package/docs/rmt-state-selector-runtime.md +47 -0
- package/docs/rmt-surface-resource-graph-runtime.md +92 -0
- package/docs/rmt-vnext-authoring.md +128 -18
- package/docs/rmt-vnext-component-primitives.md +188 -0
- package/docs/rmt-vnext-fabric-bridge-evidence.md +81 -0
- package/docs/rmt-vnext-primitive-authoring-tooling.md +247 -0
- package/docs/rmt-vnext-primitive-grammar-design.md +289 -0
- package/docs/rmt-vnext-primitive-lowering.md +108 -0
- package/docs/rmt-vnext-primitive-migration.md +119 -0
- package/docs/rmt-vnext-primitive-parser-ast.md +76 -0
- package/docs/rmt-vnext-primitive-semantic-graph.md +118 -0
- package/docs/rmt-vnext-primitives-compiler-backlog.md +742 -0
- package/docs/rmt-vnext-release-handoff.md +14 -0
- package/docs/rmt-vnext-source-to-sea-gate.md +629 -0
- package/docs/surface-manager-migration-guide.md +34 -6
- package/docs/surface-manager-overlay-bridge.md +9 -4
- package/docs/surface-manager-rmt-authoring.md +50 -34
- package/docs/surface-manager-workbench-fixture.md +1 -2
- package/docs/third-party-design-authoring.md +1 -1
- package/docs/type-exports.md +3 -3
- package/docs/utils/pageloader.js +811 -62
- package/docs/visual-browser-regression.md +1 -1
- package/docs/xtend-rmt-types.md +3 -2
- package/docs/xtendrmt-app-dsl.md +187 -122
- package/docs/xtendrmt-docs-shell-vnext.rmt +165 -0
- package/docs/xtendrmt-migration-guide.md +48 -17
- package/docs/xtendrmt-native-authoring.md +213 -217
- package/docs/xtendrmt-overview.md +81 -61
- package/docs/xtendrmt-parsedown-scheduling.md +23 -8
- package/fabric/package.json +1 -1
- package/package.json +684 -21
- package/tools/package.json +5 -1
- package/tools/rmt-editor/vscode/README.md +72 -5
- package/tools/rmt-editor/vscode/XTend-Logo.png +0 -0
- package/tools/rmt-editor/vscode/extension.d.ts +33 -0
- package/tools/rmt-editor/vscode/extension.js +1816 -7
- package/tools/rmt-editor/vscode/language-configuration.json +2 -1
- package/tools/rmt-editor/vscode/package.json +193 -2
- package/tools/rmt-editor/vscode/snippets/rmt.code-snippets +41 -0
- package/tools/rmt-editor/vscode/syntaxes/rmt.tmLanguage.json +103 -1
- package/tools/rmt-editor/vscode/templates/launch.json +70 -0
- package/tools/rmt-editor/vscode/templates/tasks.json +172 -0
- package/tools/rmt-editor/vscode/xtend-rmt-language-0.0.0-enterprise-readiness.vsix +0 -0
- package/tools/rmt-language/app-platform-tooling.d.ts +128 -0
- package/tools/rmt-language/app-platform-tooling.js +677 -0
- package/tools/rmt-language/completions.d.ts +5 -0
- package/tools/rmt-language/completions.js +185 -3
- package/tools/rmt-language/diagnostics.js +54 -0
- package/tools/rmt-language/hover.js +36 -0
- package/tools/rmt-language/rmt-tooling-public-types.d.ts +7 -0
- package/tools/rmt-language/rules/app-platform-policy.js +39 -0
- package/tools/rmt-language/rules/index.js +5 -1
- package/tools/rmt-language/semantic-graph.d.ts +6 -0
- package/tools/rmt-language/semantic-graph.js +928 -0
- package/tools/rmt-language/snippets/index.js +44 -0
- package/tools/rmt-language/snippets/rmt.code-snippets +41 -0
- package/tools/rmt-language/vnext-compatibility.d.ts +10 -0
- package/tools/rmt-language/vnext-compatibility.js +642 -0
- package/tools/rmt-language/vnext-compiler.d.ts +5 -0
- package/tools/rmt-language/vnext-compiler.js +863 -17
- package/tools/rmt-language/vnext-parser.js +725 -9
- package/tools/rmt-language/vnext-release.d.ts +1 -0
- package/tools/rmt-language/vnext-release.js +20 -0
- package/tools/rmt-language/vnext-source-to-sea.d.ts +33 -0
- package/tools/rmt-language/vnext-source-to-sea.js +2227 -0
- package/tools/rmt-language/vnext-surfaces.js +111 -52
- package/tools/rmt-language/vnext-tooling.d.ts +19 -1
- package/tools/rmt-language/vnext-tooling.js +1247 -5
- package/tools/rmt-language-server/protocol.js +3 -0
- package/tools/rmt-language-server/server.d.ts +2 -0
- package/tools/rmt-language-server/server.js +176 -22
- package/tools/rmt-linter/cli.d.ts +2 -0
- package/tools/rmt-linter/cli.js +62 -0
- package/xtend-builder/generators/registry.js +11 -0
- package/xtend-builder/generators/rmt-app-platform.js +239 -0
- package/xtend-builder/generators/rmt-lifecycle-demo.js +3 -11
- package/xtend-builder/lib/cli.js +38 -0
- package/xtend-builder/package.json +3 -3
- package/xtend-builder/scaffold.config.js +29 -2
- package/xtend.css +49 -2
- package/xtendrmt/package.json +49 -1
- package/xtendrmt/rmt-action-effect-runtime.d.ts +126 -0
- package/xtendrmt/rmt-action-effect-runtime.js +494 -0
- package/xtendrmt/rmt-component-capability-registry.d.ts +180 -0
- package/xtendrmt/rmt-component-capability-registry.js +636 -0
- package/xtendrmt/rmt-core.d.ts +6 -0
- package/xtendrmt/rmt-core.esm.js +32 -6
- package/xtendrmt/rmt-dom-descriptor-renderer.d.ts +107 -0
- package/xtendrmt/rmt-dom-descriptor-renderer.js +1066 -0
- package/xtendrmt/rmt-event-routing-runtime.d.ts +144 -0
- package/xtendrmt/rmt-event-routing-runtime.js +666 -0
- package/xtendrmt/rmt-lifecycle-demo.app.js +2 -2
- package/xtendrmt/rmt-lifecycle-demo.core.json +4 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.app.js +1 -1
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.scaffold.json +2 -2
- package/xtendrmt/rmt-lifecycle-demo.scaffold.json +4 -4
- package/xtendrmt/rmt-native-shell-runtime.d.ts +77 -0
- package/xtendrmt/rmt-native-shell-runtime.js +309 -0
- package/xtendrmt/rmt-node-ssr-adapter.d.ts +197 -0
- package/xtendrmt/rmt-node-ssr-adapter.js +1006 -0
- package/xtendrmt/rmt-php-ssr-adapter.php +976 -0
- package/xtendrmt/rmt-runtime.browser.js +32 -6
- package/xtendrmt/rmt-runtime.esm.js +32 -6
- package/xtendrmt/rmt-state-selector-runtime.d.ts +166 -0
- package/xtendrmt/rmt-state-selector-runtime.js +866 -0
- package/xtendrmt/rmt-surface-resource-graph-runtime.d.ts +224 -0
- package/xtendrmt/rmt-surface-resource-graph-runtime.js +932 -0
- package/xtendrmt/rmt-vnext-enterprise-mfe-demo.core.json +3 -0
- package/xtendrmt/rmt-vnext-reference-demo.core.json +3 -0
- package/xtendrmt/xtendrmt-bestcase-demo.core.json +3420 -372
- package/xtendrmt/xtendrmt-bestcase-demo.js +424 -8
- package/xtendrmt/xtendrmt-bestcase-demo.rmt +214 -6
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# RMT State Selector Runtime
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic18.rmt-state-selector-runtime.v1`
|
|
4
|
+
- Fixture: `tests/fixtures/rmt-state-selector-runtime.rmt`
|
|
5
|
+
- Runtime: `xtendrmt/rmt-state-selector-runtime.js`
|
|
6
|
+
- Types: `xtendrmt/rmt-state-selector-runtime.d.ts`
|
|
7
|
+
- Local Gate: `node scripts/run_xtend_tests.js rmt-state-selector-runtime --json`
|
|
8
|
+
- Workpackage: `WP-E18-07`
|
|
9
|
+
|
|
10
|
+
Die State Selector Runtime macht App-Zustand fuer RMT Templates deklarativ
|
|
11
|
+
nutzbar. Sie definiert typisierte State Records, wertet Selectors und derived
|
|
12
|
+
Values aus, dispatcht Reducer-Commands und erzeugt ein Render-Context-Model fuer
|
|
13
|
+
den DOM Descriptor Renderer aus `WP-E18-05`/`WP-E18-06`.
|
|
14
|
+
|
|
15
|
+
## Primitives
|
|
16
|
+
|
|
17
|
+
| Primitive | Zweck |
|
|
18
|
+
|-----------|-------|
|
|
19
|
+
| `state` | typisierte App-Zustaende wie Collection, Selection, Filter, UI und Loading |
|
|
20
|
+
| `selector` | abgeleitete, wiederverwendbare Sichten auf State, zum Beispiel gefilterte Listen |
|
|
21
|
+
| `derive` | einzelne derived Values wie Selection Count oder Detail Label |
|
|
22
|
+
| `reducer` | Command-getriebene State-Aenderungen ohne produktlokale Mini-Frameworks |
|
|
23
|
+
| `xstateBridge` | injizierte Host-Bridge zu `xstate`, ohne Runtime-Import |
|
|
24
|
+
| `preservePatchPlan` | unterscheidet strukturelle Rerenders von Attribut-/Component-State-Sync |
|
|
25
|
+
| `stateBindings` | aktualisiert Attribute, Klassen und Properties bestehender DOM-Knoten |
|
|
26
|
+
|
|
27
|
+
## Preserve-Regeln
|
|
28
|
+
|
|
29
|
+
States mit `preserve: "attribute-sync"` oder `preserve: "component-state"`
|
|
30
|
+
duerfen DOM-Inseln erhalten. Selection- oder UI-Aenderungen koennen dadurch
|
|
31
|
+
Attribute wie `aria-selected`, Klassen wie `is-selected` oder Component
|
|
32
|
+
Properties synchronisieren, ohne Listen neu zu materialisieren.
|
|
33
|
+
|
|
34
|
+
Strukturelle Selectors, zum Beispiel `selector.filtered-items`, duerfen dagegen
|
|
35
|
+
einen Rerender anfordern. Filter- oder Collection-Aenderungen bleiben dadurch
|
|
36
|
+
korrekt, waehrend reine Selection-Aenderungen Fokus, Scroll und Component
|
|
37
|
+
Instanzen erhalten koennen.
|
|
38
|
+
|
|
39
|
+
## XState Boundary
|
|
40
|
+
|
|
41
|
+
Die Runtime importiert `xstate` nicht. Host-Code kann ein kompatibles Ziel mit
|
|
42
|
+
`set`, `setState`, `get`, `getState` oder `subscribe` injizieren. Die Bridge
|
|
43
|
+
spiegelt State-, Selector- und Derived-Keys in dieses Ziel, bleibt aber auch mit
|
|
44
|
+
einem internen Snapshot lauffaehig.
|
|
45
|
+
|
|
46
|
+
`WP-E18-08` kann darauf Actions, Effects, DataSources und Resource Runtime
|
|
47
|
+
aufbauen.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# RMT Surface Resource Graph Runtime
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic18.rmt-surface-resource-graph-runtime.v1`
|
|
4
|
+
- Gate: `node scripts/run_xtend_tests.js rmt-surface-resource-graph-runtime --json`
|
|
5
|
+
- Workpackage: `WP-E18-10`
|
|
6
|
+
- Handoff: `WP-E18-11`
|
|
7
|
+
|
|
8
|
+
## Ziel
|
|
9
|
+
|
|
10
|
+
Die Surface Resource Graph Runtime macht dynamische App-Layouts in RMT als
|
|
11
|
+
generische Plattformfaehigkeit modellierbar. Entwickler koennen eigene
|
|
12
|
+
Surface-Modelle aus beliebigen Records erzeugen, Bounds und Fokus verwalten,
|
|
13
|
+
Overlays ueber Portale stapeln und instanzgebundene Ressourcen aufraeumen,
|
|
14
|
+
ohne eine produktlokale Registry oder Shell-spezifische Repaint-Logik zu
|
|
15
|
+
schreiben.
|
|
16
|
+
|
|
17
|
+
Der Media Manager bleibt dabei nur Proof-of-Need. Die Runtime kennt keine
|
|
18
|
+
Produkt-Surface-Liste und importiert keine XTend-Komponenten.
|
|
19
|
+
|
|
20
|
+
## Keyed Surface Repeater
|
|
21
|
+
|
|
22
|
+
`surface` Definitionen koennen `source`, `repeat` und `key` deklarieren. Die
|
|
23
|
+
Runtime erzeugt daraus stabile Surface-Instanzen wie
|
|
24
|
+
`surface.workspace:alpha`. Beim erneuten Materialisieren mit denselben Keys
|
|
25
|
+
bleiben Runtime-Zustand, Bounds, Fokusreihenfolge, Ressourcenstatus und
|
|
26
|
+
Persistenzdaten erhalten.
|
|
27
|
+
|
|
28
|
+
Wichtige Operationen:
|
|
29
|
+
|
|
30
|
+
- `materialize(recordsBySource)`: erzeugt oder reused Surface-Instanzen.
|
|
31
|
+
- `openSurface(id)`: oeffnet eine Instanz und uebernimmt ihre Ressourcen.
|
|
32
|
+
- `minimizeSurface(id)`: minimiert, ohne DOM- oder Ressourcenstatus zu
|
|
33
|
+
verwerfen.
|
|
34
|
+
- `restoreSurface(id)`: stellt Bounds und offenen Zustand wieder her.
|
|
35
|
+
- `closeSurface(id)`: schliesst nach Policy, ohne zwingend zu zerstoeren.
|
|
36
|
+
- `destroySurface(id)`: gibt instanzgebundene Ressourcen frei und trennt den
|
|
37
|
+
Event-Owner.
|
|
38
|
+
|
|
39
|
+
## Portal Layer Stack
|
|
40
|
+
|
|
41
|
+
Portale beschreiben Layer- und Policy-Grenzen fuer Tooltips, Toasts, Popovers,
|
|
42
|
+
Lightboxes, Menus, Dialoge und weitere Overlay-Arten. `openOverlay` legt
|
|
43
|
+
Overlay-Instanzen in ihrem Portal ab und vergibt eine stabile Stack-Reihenfolge
|
|
44
|
+
ueber `zIndexStart` und `zStep`. `closeTopOverlay` schliesst den obersten
|
|
45
|
+
dismissible Overlay-Eintrag pro Portal oder global.
|
|
46
|
+
|
|
47
|
+
Die Portal-Policy ist generisch:
|
|
48
|
+
|
|
49
|
+
- `stacked` fuer normale App-Flächen.
|
|
50
|
+
- `modal` und `nonmodal` fuer blockierende und nicht blockierende Overlays.
|
|
51
|
+
- `toast-region` fuer Feedback-Layer.
|
|
52
|
+
- `clipping-escape` fuer Viewport-feste Layer wie Tooltips.
|
|
53
|
+
|
|
54
|
+
## Resource Ownership
|
|
55
|
+
|
|
56
|
+
Ressourcen werden ueber den WP-E18-08 Resource Manager injiziert. Die Surface
|
|
57
|
+
Runtime besitzt keine eigenen Adapter, sondern ruft `acquireMany` und
|
|
58
|
+
`releaseOwner` pro Surface- oder Overlay-Instanz auf.
|
|
59
|
+
|
|
60
|
+
Dadurch gelten klare Regeln:
|
|
61
|
+
|
|
62
|
+
- Minimize erhaelt Ressourcen und Component-State.
|
|
63
|
+
- Close kann Ressourcen optional freigeben.
|
|
64
|
+
- Destroy gibt Ressourcen der betroffenen Instanz frei.
|
|
65
|
+
- Overlay-Close gibt Overlay-Ressourcen frei.
|
|
66
|
+
- Destroy einer Surface ruft zusaetzlich `eventRuntime.detachOwner(owner)` auf.
|
|
67
|
+
|
|
68
|
+
## Persistenz
|
|
69
|
+
|
|
70
|
+
`persistSnapshot` liefert einen Snapshot mit Surface-Zustand, Bounds, Fokus,
|
|
71
|
+
offenen Overlays und Portal-Metadaten. Ein optionaler Persistence Adapter kann
|
|
72
|
+
diesen Snapshot speichern. `hydrateSnapshot` spielt ihn spaeter in bereits
|
|
73
|
+
materialisierte Instanzen zurueck.
|
|
74
|
+
|
|
75
|
+
## Grenzen
|
|
76
|
+
|
|
77
|
+
- Keine Produkt-Surface-Taxonomie als Framework-Default.
|
|
78
|
+
- Keine produktlokale Registry-Repaint-Pflicht.
|
|
79
|
+
- Keine XTend-Component-Imports im RMT Kernel.
|
|
80
|
+
- Normale UI bleibt bei DOM Descriptoren und Component Templates; HTML-String-
|
|
81
|
+
Renderer bleiben eine separate Trusted-DOM-Grenze.
|
|
82
|
+
|
|
83
|
+
## Gates
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
node scripts/run_xtend_tests.js rmt-surface-resource-graph-runtime --json
|
|
87
|
+
node scripts/run_xtend_tests.js rmt-app-platform-authoring rmt-dom-descriptor-renderer rmt-component-template-primitives rmt-state-selector-runtime rmt-action-effect-runtime rmt-event-routing-runtime rmt-surface-resource-graph-runtime --json
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
`WP-E18-11` erweitert darauf aufbauend Scaffold, Linter, LSP und Diagnostics,
|
|
91
|
+
damit Surface-, Overlay-, Portal- und Resource-Graphen schon beim Authoring
|
|
92
|
+
sichtbar und pruefbar werden.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# RMT Tooling Release Gates
|
|
2
|
+
|
|
3
|
+
- Status: produktiv vorbereitet ab `WP-E14-15`
|
|
4
|
+
- Contract: `xtend.epic14.rmt-tooling.v1`
|
|
5
|
+
- Gate Record Contract: `xtend.epic14.rmt-tooling-gate.record.v1`
|
|
6
|
+
- Report Contract: `xtend.epic14.rmt-tooling-report.v1`
|
|
7
|
+
- Lokaler Gate: `node scripts/run_xtend_tests.js epic14-rmt-tooling --json`
|
|
8
|
+
|
|
9
|
+
## Zweck
|
|
10
|
+
|
|
11
|
+
Die RMT Tooling Gates buendeln den nativen `.rmt` Authoring-Pfad fuer Pull Requests, Release-Kandidaten und AI-Agenten. Sie pruefen nicht die RMT Runtime, sondern die Sprachebene: Source Model, Parser, Semantic Graph, Linter, CLI, Completion, Navigation, LSP, Code Actions, Agent Report, Editor Packaging, Regression Fixtures und Dokumentation.
|
|
12
|
+
|
|
13
|
+
## Befehle
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm run test:rmt-linter
|
|
17
|
+
npm run test:rmt-language-server
|
|
18
|
+
npm run test:pr:rmt
|
|
19
|
+
npm run test:pr:rmt:report
|
|
20
|
+
npm run test:rmt-tooling
|
|
21
|
+
npm run test:rmt-tooling:report
|
|
22
|
+
node scripts/run_xtend_tests.js epic14-rmt-tooling --json
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
`npm run test:pr:rmt` ist ein optionaler Zusatzgate fuer RMT-nahe Pull Requests. Der globale PR-Gate bleibt dadurch schlank, kann aber bei DSL-, Linter-, LSP- oder Agent-Report-Aenderungen gezielt erweitert werden.
|
|
26
|
+
|
|
27
|
+
`npm run test:rmt-tooling` ist der Release-Bundle-Gate fuer Epic 14. Er laeuft ohne Netzwerk und nutzt ausschliesslich repo-lokale Fixtures, Docs und Tooling-Module.
|
|
28
|
+
|
|
29
|
+
## Release-Bundle
|
|
30
|
+
|
|
31
|
+
Das Release-Bundle umfasst:
|
|
32
|
+
|
|
33
|
+
- `rmt-source-model`
|
|
34
|
+
- `rmt-parser`
|
|
35
|
+
- `rmt-semantic-graph`
|
|
36
|
+
- `rmt-linter-rules`
|
|
37
|
+
- `rmt-linter-cli`
|
|
38
|
+
- `rmt-completions`
|
|
39
|
+
- `rmt-navigation`
|
|
40
|
+
- `rmt-language-server`
|
|
41
|
+
- `rmt-code-actions`
|
|
42
|
+
- `rmt-agent-report`
|
|
43
|
+
- `rmt-editor-packaging`
|
|
44
|
+
- `rmt-language-regression`
|
|
45
|
+
- `rmt-tooling-docs`
|
|
46
|
+
|
|
47
|
+
## Package Surface
|
|
48
|
+
|
|
49
|
+
Die Package-Surface fuer RMT Tooling ist ueber `package.json` exportiert. Relevant fuer Tooling-Konsumenten sind insbesondere:
|
|
50
|
+
|
|
51
|
+
- `xtend/rmt-language/source-model`
|
|
52
|
+
- `xtend/rmt-language/parser`
|
|
53
|
+
- `xtend/rmt-language/diagnostics`
|
|
54
|
+
- `xtend/rmt-language/completions`
|
|
55
|
+
- `xtend/rmt-language/code-actions`
|
|
56
|
+
- `xtend/rmt-language-server`
|
|
57
|
+
- `xtend/rmt-linter/cli`
|
|
58
|
+
- `xtend/rmt-linter/reporter`
|
|
59
|
+
- `xtend/rmt-language/snippets`
|
|
60
|
+
|
|
61
|
+
Der Gate `epic14-rmt-tooling` prueft, dass diese Surface nicht unbemerkt driftet und dass `xtend.epic14RmtTooling` die aktiven Scripts, Suites und Handoff-Metadaten enthaelt.
|
|
62
|
+
|
|
63
|
+
## CI-Handoff
|
|
64
|
+
|
|
65
|
+
Die globale Full-Release-Linie bleibt:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
npm run test:release:full:report
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
RMT Tooling ist zusaetzlich als eigener Release-Gate in `xtend.releaseGates` registriert:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
npm run test:rmt-tooling
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Damit koennen Release-Owner, CI-Systeme und AI-Agenten die RMT-Sprachwerkzeuge separat nachweisen, ohne den RMT Kernel mit XTend Runtime-Typen zu koppeln.
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
# RMT vNext Authoring Guide
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.rmt.vnext-release-handoff.v1`
|
|
4
|
+
- Syntax Contract: `xtend.rmt.vnext.grammar.v1`
|
|
5
|
+
- Core Output: `xtend.rmt.core-format.vnext.v1`
|
|
6
|
+
|
|
7
|
+
RMT vNext ist die menschenfreundliche Syntax fuer XTend Apps. Du kannst eine
|
|
8
|
+
vollstaendige UI-Shell in RMT schreiben: State, Selectors, DataSources,
|
|
9
|
+
Actions, Events, Portals, Overlays, Resources, Surfaces und Fabric-Lanes
|
|
10
|
+
liegen in einer `.rmt` Quelle und werden deterministisch in Core- und
|
|
11
|
+
Kernel-Records kompiliert.
|
|
12
|
+
|
|
13
|
+
## Grundform
|
|
14
|
+
|
|
15
|
+
```rmt
|
|
16
|
+
template media.manager {
|
|
17
|
+
state selectedItem type object initial null
|
|
18
|
+
|
|
19
|
+
selector visibleItems from datasource library {
|
|
20
|
+
output card-list
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
datasource library from fixture records.media-items {
|
|
24
|
+
contract "media.item.v1[]"
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
action select-item {
|
|
28
|
+
input id string
|
|
29
|
+
reduce state.selectedItem = input.id
|
|
30
|
+
emit media.item.selected with action select-item
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
portal app root "#app-root" layer surface
|
|
34
|
+
|
|
35
|
+
surface library kind workspace component x-cards {
|
|
36
|
+
repeat from selector visibleItems
|
|
37
|
+
key item.id
|
|
38
|
+
portal app
|
|
39
|
+
|
|
40
|
+
lane visible weight 80 {
|
|
41
|
+
hydrate x-cards from selector visibleItems
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
on card-click target item -> action select-item {
|
|
45
|
+
payload id from item.id
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Die wichtigsten Bausteine:
|
|
52
|
+
|
|
53
|
+
| Syntax | Zweck |
|
|
54
|
+
| --- | --- |
|
|
55
|
+
| `template` | gruppiert eine App- oder Dokument-Shell |
|
|
56
|
+
| `state` | beschreibt persistenten oder transienten App-Zustand |
|
|
57
|
+
| `selector` | leitet UI-nahe Views aus State oder DataSources ab |
|
|
58
|
+
| `datasource` | bindet Fixture-, Endpoint-, SSE- oder Worker-Quellen an |
|
|
59
|
+
| `action` | beschreibt User- und Systemaktionen mit Reducern und Effects |
|
|
60
|
+
| `on ... -> action ...` | routet DOM- oder Custom-Events in Actions |
|
|
61
|
+
| `portal` | benennt Mount-Ziele fuer Surfaces und Overlays |
|
|
62
|
+
| `surface` | beschreibt sichtbare UI-Objekte, Listen, Panels oder Pages |
|
|
63
|
+
| `overlay` | beschreibt Toasts, Dialoge, Menues, Popovers und Lightboxes |
|
|
64
|
+
| `resource` | beschreibt Besitz, Import, Stream, Timer und Cleanup |
|
|
65
|
+
| `lane` | steuert Prioritaet, Scheduling und Backpressure |
|
|
66
|
+
| `mount`, `hydrate`, `prewarm`, `dispose` | Lifecycle-Operationen |
|
|
67
|
+
| `when` | deklarative Conditions ohne Funktionsaufrufe oder Eval |
|
|
68
|
+
| `slot` | Composition innerhalb einer Operation |
|
|
69
|
+
| `trust boundary` und `sanitize` | Security-Policy fuer unsichere Daten |
|
|
70
|
+
| `stream` | inkrementelle Streaming-Operation |
|
|
71
|
+
|
|
72
|
+
## App Shell nur in RMT
|
|
73
|
+
|
|
74
|
+
Eine vNext-App soll nicht zwischen RMT, App-Platform-JSON und Host-Code
|
|
75
|
+
zerfallen. RMT ist der Authoring-Ort fuer:
|
|
76
|
+
|
|
77
|
+
- Route- und Shell-Struktur
|
|
78
|
+
- sichtbare Surfaces und Overlay-Portale
|
|
79
|
+
- State- und Selector-Modell
|
|
80
|
+
- Actions, Effects und Event-Payloads
|
|
81
|
+
- Resource Ownership und Cleanup
|
|
82
|
+
- Fabric-Lanes fuer sichtbare, user-blocking, transition, idle,
|
|
83
|
+
background- und diagnostics-Arbeit
|
|
84
|
+
|
|
85
|
+
Der Host stellt Komponenten, Router, Browser-APIs und externe Daten bereit.
|
|
86
|
+
Diese Grenze haelt den Kernel framework-neutral und macht die App trotzdem
|
|
87
|
+
vollstaendig beschreibbar.
|
|
88
|
+
|
|
89
|
+
## XTend UI-Kompatibilitaet
|
|
90
|
+
|
|
91
|
+
RMT vNext Component Primitives zielen auf den bestehenden XTend-Component-
|
|
92
|
+
Stack. Eine Surface wie `component x-select` wird zu einem DOM Descriptor
|
|
93
|
+
abgesenkt und dann ueber die Component Capability Registry aufgeloest, nicht
|
|
94
|
+
ueber einen produktspezifischen Renderer. Die Registry liest
|
|
95
|
+
`components/manifest.json`, `xtendComponentContract`, `xtendRmtMetadata`,
|
|
96
|
+
public Events, `observedAttributes`, Slots, Parts, Form-Assoziation,
|
|
97
|
+
Accessibility-Profile und Performance-Profile.
|
|
98
|
+
|
|
99
|
+
Damit erreicht RMT alle 44 public Manifest-Eintraege, waehrend 40 renderbare
|
|
100
|
+
UI-Komponenten ihren normalen Web-Component-Lifecycle behalten. Infrastruktur-
|
|
101
|
+
module wie `x-theme` und `xstate` bleiben Host-Services, keine normalen
|
|
102
|
+
Surface-Elemente. Produktcode soll ueber public Attribute, Properties, Events,
|
|
103
|
+
Parts, Slots und State-Bridges binden, statt `shadowRoot` oder private
|
|
104
|
+
Component-Maps zu patchen.
|
|
105
|
+
|
|
106
|
+
Details stehen in
|
|
107
|
+
[RMT vNext Component Primitives und XTend UI](./rmt-vnext-component-primitives.md).
|
|
108
|
+
|
|
109
|
+
## Editor-DX
|
|
110
|
+
|
|
111
|
+
Der Language Server erkennt vNext-Primitives direkt:
|
|
112
|
+
|
|
113
|
+
- Completions fuer Primitive-Keywords und klauselnahe Vorschlaege
|
|
114
|
+
- Hover mit Core Pointer und Primitive-Informationen
|
|
115
|
+
- Document Symbols fuer `states`, `selectors`, `actions`, `surfaces`,
|
|
116
|
+
`portals`, `overlays` und `resources`
|
|
117
|
+
- Code Actions fuer sichere Reparaturen
|
|
118
|
+
- Safe Fix-All fuer `source.fixAll.rmt.vnext.primitives`
|
|
119
|
+
- manuelle Uebergaben fuer Kernel-/Host-Boundaries
|
|
120
|
+
|
|
121
|
+
Das Snippet `rmt-vnext-primitive-shell` erzeugt eine kleine App Shell mit
|
|
122
|
+
State, Selector, Action, Portal, Surface, Lane und Event-Payload-Contract.
|
|
123
|
+
|
|
124
|
+
## Migration aus Legacy-Records
|
|
125
|
+
|
|
126
|
+
Legacy- und App-Platform-JSON bleiben lesbar, sind aber nicht der normale
|
|
127
|
+
Authoring-Pfad. Fuer vorhandene App-Platform-Primitive-Records gibt es:
|
|
128
|
+
|
|
129
|
+
- `createAppPlatformPrimitiveMigrationPreview(...)` fuer einen vNext-Draft
|
|
130
|
+
- `createAppPlatformPrimitiveMigrationApplyPlan(...)` fuer einen manuellen
|
|
131
|
+
Apply-Plan ohne automatisches Schreiben
|
|
132
|
+
- `report-only`, `preview-ready`, `apply-plan-ready` und `blocked` als
|
|
133
|
+
klare Statuswerte
|
|
134
|
+
|
|
135
|
+
Details stehen in [RMT vNext Primitive Migration](./rmt-vnext-primitive-migration.md).
|
|
136
|
+
|
|
137
|
+
## Reference Demo
|
|
138
|
+
|
|
139
|
+
Die vollstaendige Referenz liegt in `xtendrmt/rmt-vnext-reference-demo.rmt`.
|
|
140
|
+
Sie deckt Templates, Surfaces, gewichtete Lanes, Conditions, Slots, Events,
|
|
141
|
+
Endpoint/SSE/Worker Sources, Security Policies und Streaming ab.
|
|
142
|
+
|
|
143
|
+
Der stabile Compiler-Output liegt in
|
|
144
|
+
`xtendrmt/rmt-vnext-reference-demo.core.json`. Wenn Syntax oder Compiler
|
|
145
|
+
absichtlich geaendert werden, muessen Quelle und Core-Output gemeinsam
|
|
146
|
+
aktualisiert werden.
|
|
147
|
+
|
|
148
|
+
## Lokal pruefen
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
node scripts/run_xtend_tests.js rmt-vnext-parser rmt-vnext-compiler rmt-vnext-tooling --json
|
|
152
|
+
node scripts/run_xtend_tests.js rmt-vnext-compatibility --json
|
|
153
|
+
node scripts/run_xtend_tests.js rmt-vnext-component-primitives --json
|
|
154
|
+
node scripts/run_xtend_tests.js rmt-vnext-release --json
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Fuer App-Shell-Arbeit reichen normalerweise Parser, Compiler, Tooling und
|
|
158
|
+
Compatibility. Release-Gates pruefen zusaetzlich Referenzdemo, Core-Output,
|
|
159
|
+
Migration und Referenzpfade.
|
|
160
|
+
|
|
161
|
+
## Grenzen
|
|
162
|
+
|
|
163
|
+
- RMT vNext fuehrt keine Host-Runtime im Kernel aus.
|
|
164
|
+
- Conditions sind deklarativ und erlauben keine Funktionsaufrufe.
|
|
165
|
+
- Imports sind statisch und bleiben package-root-gebunden.
|
|
166
|
+
- Legacy JSON bleibt kompatibel, aber nicht der bevorzugte Authoring-Pfad.
|
|
167
|
+
- XTend-, XRouter-, DOM- und Browser-Details gehoeren in Adapter.
|
|
168
|
+
- XTend-Component-Integration laeuft ueber public Contracts und die Component
|
|
169
|
+
Capability Registry, nicht ueber direkte Kernel-Imports oder
|
|
170
|
+
Shadow-DOM-Monkeypatching.
|
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
# RMT vNext Component Primitives und XTend UI
|
|
2
|
+
|
|
3
|
+
- Schema: `xtend.rmt.component-capability-registry.v1`
|
|
4
|
+
- Report Schema: `xtend.rmt.component-capability-registry-report.v1`
|
|
5
|
+
- Runtime: `xtendrmt/rmt-component-capability-registry.js`
|
|
6
|
+
- Export: `@ccslabs/xtend/rmt/component-capability-registry`
|
|
7
|
+
- Local Gate: `node scripts/run_xtend_tests.js rmt-vnext-component-primitives --json`
|
|
8
|
+
- Aggregat: `npm run test:rmt-vnext-primitives:report`
|
|
9
|
+
|
|
10
|
+
RMT vNext und XTend UI sind keine Parallelwelten. Die Component Primitives
|
|
11
|
+
verbinden RMT-Templates, Kernel Records, DOM Descriptor Renderer und die
|
|
12
|
+
public XTend Web Components ueber eine gemeinsame Capability Registry. RMT
|
|
13
|
+
beschreibt Shell, State, Surfaces, Events und Lifecycle; XTend Components
|
|
14
|
+
liefern die konkreten UI-Bausteine, Accessibility-Profile, Parts, Slots,
|
|
15
|
+
Events und Performance-Profile.
|
|
16
|
+
|
|
17
|
+
## Source-to-Sea-Fluss
|
|
18
|
+
|
|
19
|
+
```text
|
|
20
|
+
.rmt template
|
|
21
|
+
-> RMT Compiler und Core Records
|
|
22
|
+
-> Kernel Records und Fabric Lanes
|
|
23
|
+
-> DOM Descriptor Renderer
|
|
24
|
+
-> Component Capability Registry
|
|
25
|
+
-> XTend Component aus components/manifest.json
|
|
26
|
+
-> Browser DOM und Component Lifecycle
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Der RMT-Kernel importiert keine XTend-Komponenten und keine XTend-Typen. Die
|
|
30
|
+
Registry liest Manifest, Component Contracts, `xtendRmtMetadata`,
|
|
31
|
+
`observedAttributes`, Events, Slots, Parts, Form-Assoziation sowie A11y- und
|
|
32
|
+
Performance-Profile. Daraus entsteht eine normalisierte Matrix fuer alle 42
|
|
33
|
+
public Eintraege aus `components/manifest.json`.
|
|
34
|
+
|
|
35
|
+
## Matrix
|
|
36
|
+
|
|
37
|
+
| Bereich | Abdeckung |
|
|
38
|
+
| --- | --- |
|
|
39
|
+
| Manifest-Eintraege | 44 |
|
|
40
|
+
| Renderbare public UI-Komponenten | 40 |
|
|
41
|
+
| Nicht-visuelle Sonderfaelle | 4 |
|
|
42
|
+
| RMT-Metadaten | 42 Eintraege |
|
|
43
|
+
| Component Contracts | 40 Eintraege |
|
|
44
|
+
| Form-associated Components | 6 |
|
|
45
|
+
|
|
46
|
+
Nicht-visuelle Sonderfaelle sind `x-theme`, `xstate`, `x-utils` und
|
|
47
|
+
`x-rmt-lifecycle-demo-build`. `x-theme` und `xstate` sind Infrastrukturmodule;
|
|
48
|
+
sie werden ueber Host-/Loader-Dienste genutzt, aber nicht als normale RMT-App-
|
|
49
|
+
UI gerendert. `x-utils` bleibt Utility-Modul, der Lifecycle-Demo-Build bleibt
|
|
50
|
+
Demo-Artefakt.
|
|
51
|
+
|
|
52
|
+
## Component-Familien
|
|
53
|
+
|
|
54
|
+
| Familie | Tags |
|
|
55
|
+
| --- | --- |
|
|
56
|
+
| Form | `x-calendar`, `x-checkbox`, `x-form`, `x-input`, `x-radio`, `x-select`, `x-textarea` |
|
|
57
|
+
| Navigation | `x-router`, `x-link`, `x-menu`, `x-drawer` |
|
|
58
|
+
| Overlay/Surface | `x-dialog`, `x-lightbox`, `x-modal`, `x-popover`, `x-side-panel`, `x-surface-manager`, `x-surface-window`, `x-toast`, `x-tooltip` |
|
|
59
|
+
| Media/Feedback/Layout | `x-alert`, `x-button`, `x-cards`, `x-code`, `x-icon`, `x-masonry`, `x-player`, `x-progress`, `x-spinner`, `x-status`, `x-summary`, `x-type`, `x-writer` |
|
|
60
|
+
| Theme/Layout | `x-footer`, `x-header`, `x-hero`, `x-section`, `x-tabs` |
|
|
61
|
+
| Infrastruktur | `x-theme`, `xstate`, `x-utils`, `x-rmt-lifecycle-demo-build` |
|
|
62
|
+
|
|
63
|
+
Die risikoreichen Familien `form`, `navigation`, `overlay-surface`,
|
|
64
|
+
`media-feedback-layout` und `theme-layout` bleiben fuer representative Browser
|
|
65
|
+
Smokes markiert. Der Default-Gate prueft die breite Matrix fake-DOM-nah und
|
|
66
|
+
haelt Browser-Flakiness aus dem schnellen Primitive-Gate heraus.
|
|
67
|
+
|
|
68
|
+
## Runtime API
|
|
69
|
+
|
|
70
|
+
```js
|
|
71
|
+
import {
|
|
72
|
+
createRmtComponentCapabilityRegistry
|
|
73
|
+
} from '@ccslabs/xtend/rmt/component-capability-registry';
|
|
74
|
+
import {
|
|
75
|
+
createRmtDomDescriptorRenderer
|
|
76
|
+
} from '@ccslabs/xtend/rmt/dom-descriptor-renderer';
|
|
77
|
+
|
|
78
|
+
const registry = createRmtComponentCapabilityRegistry({
|
|
79
|
+
manifest,
|
|
80
|
+
sourceTexts,
|
|
81
|
+
importer: async (modulePath) => import(`/components/${modulePath.replace(/^\.\//u, '')}`)
|
|
82
|
+
});
|
|
83
|
+
|
|
84
|
+
const descriptor = registry.buildComponentDescriptor({
|
|
85
|
+
tag: 'x-select',
|
|
86
|
+
id: 'plan-select',
|
|
87
|
+
key: 'settings:plan',
|
|
88
|
+
attributes: {
|
|
89
|
+
name: 'plan',
|
|
90
|
+
value: 'pro'
|
|
91
|
+
},
|
|
92
|
+
slots: {
|
|
93
|
+
label: { text: 'Plan' }
|
|
94
|
+
},
|
|
95
|
+
events: {
|
|
96
|
+
'select-changed': 'settings.plan.changed'
|
|
97
|
+
}
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
const renderer = createRmtDomDescriptorRenderer({ documentTarget: document });
|
|
101
|
+
|
|
102
|
+
renderer.renderKeyed(root, [descriptor], {
|
|
103
|
+
componentRegistry: registry,
|
|
104
|
+
dispatchEvent(event) {
|
|
105
|
+
actions.dispatch(event.action, event.payload);
|
|
106
|
+
},
|
|
107
|
+
stateBridge: {
|
|
108
|
+
read(key) {
|
|
109
|
+
return state.read(key);
|
|
110
|
+
},
|
|
111
|
+
write(key, value) {
|
|
112
|
+
state.write(key, value);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Wichtige Registry-Funktionen:
|
|
119
|
+
|
|
120
|
+
| Funktion | Zweck |
|
|
121
|
+
| --- | --- |
|
|
122
|
+
| `resolveComponentCapability(tag)` | Liefert normalisierte Capabilities fuer einen Manifest-Tag. |
|
|
123
|
+
| `listCapabilities(filter)` | Listet Capabilities nach Familie oder Visual Kind. |
|
|
124
|
+
| `buildComponentDescriptor(input)` | Baut einen DOM Descriptor fuer XTend-Komponenten inklusive Capability-Markern. |
|
|
125
|
+
| `bindComponentInstance(element, binding, options)` | Verbindet Events, Form-State und State Bridge ueber public DOM APIs. |
|
|
126
|
+
| `ensureComponentLoaded(tag, options)` | Fuehrt lazy Import ueber einen expliziten Importer aus. |
|
|
127
|
+
| `createMatrixReport()` | Erzeugt den Compatibility-Report fuer CI und lokale Diagnose. |
|
|
128
|
+
|
|
129
|
+
## Event- und State-Bridge
|
|
130
|
+
|
|
131
|
+
Form Controls liefern `value`, `checked`, `validity`, `dataset` und Datei-
|
|
132
|
+
Metadaten in einem sicheren Payload-Record
|
|
133
|
+
`xtend.rmt.component-event-payload.v1`. Fuer Form-Familien werden `input` und
|
|
134
|
+
`change` ergaenzt, wenn keine explizite Event-Bindung gesetzt ist.
|
|
135
|
+
|
|
136
|
+
Navigation, Overlays, Feedback- und Layout-Komponenten bleiben ebenfalls ueber
|
|
137
|
+
public Events und Properties angebunden. Produktcode muss nicht in
|
|
138
|
+
`shadowRoot` greifen, keine privaten Component-Maps lesen und keine
|
|
139
|
+
komponentenspezifischen Renderer einbauen.
|
|
140
|
+
|
|
141
|
+
## Renderer-Integration
|
|
142
|
+
|
|
143
|
+
Der DOM Descriptor Renderer akzeptiert `componentRegistry` in
|
|
144
|
+
`render(...)` und `renderKeyed(...)`. Bei `type: "component"` werden Tag,
|
|
145
|
+
Attribute, Properties, Slots, Parts und Event-Bindings ueber die Registry
|
|
146
|
+
normalisiert. Keyed Reuse bleibt erhalten, unkeyed Repeat-UI wird weiterhin
|
|
147
|
+
diagnostiziert.
|
|
148
|
+
|
|
149
|
+
Normale RMT-App-UI nutzt keine HTML-Sinks. `innerHTML`, `outerHTML`,
|
|
150
|
+
`insertAdjacentHTML`, `document.write`, `createContextualFragment` und
|
|
151
|
+
unsichere URL-/Inline-Event-Sinks bleiben durch den No-Manual-HTML-Gate und
|
|
152
|
+
die Trusted-DOM-Boundary gesperrt.
|
|
153
|
+
|
|
154
|
+
## Architekturregeln
|
|
155
|
+
|
|
156
|
+
- Component Contracts bleiben die Quelle der Wahrheit.
|
|
157
|
+
- RMT erweitert XTend UI ueber Metadaten und Runtime-Bridges, nicht ueber
|
|
158
|
+
Monkeypatching.
|
|
159
|
+
- Lazy Import laeuft nur ueber Manifest und explizite Importer.
|
|
160
|
+
- Der RMT-Kernel bleibt framework-neutral und importiert keine XTend-Typen.
|
|
161
|
+
- Overlays, Surfaces und Portals brauchen Resource Ownership und Cleanup.
|
|
162
|
+
- `x-player` nutzt den public Player Contract fuer Play/Pause, State Bridge,
|
|
163
|
+
Theme Tokens und Parts; Produktcode patcht kein Shadow DOM.
|
|
164
|
+
- Infrastrukturmodule wie `x-theme` und `xstate` werden als Services genutzt,
|
|
165
|
+
nicht als normale Surface-Elemente.
|
|
166
|
+
|
|
167
|
+
## Gates
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
node scripts/run_xtend_tests.js rmt-vnext-component-primitives --json
|
|
171
|
+
npm run test:rmt-vnext-primitives:report
|
|
172
|
+
node scripts/run_xtend_tests.js component-ux-browser-smokes --json
|
|
173
|
+
node scripts/run_xtend_tests.js type-exports-rmt --json
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Das schnelle Primitive-Gate prueft Registry, Matrix, Renderer-Bindung,
|
|
177
|
+
Package-Exports, Type Declarations, Lazy Import, State Roundtrip und negative
|
|
178
|
+
Grenzen gegen Shadow-DOM-Patches, manuelle HTML-Sinks und direkte Component-
|
|
179
|
+
Imports.
|
|
180
|
+
|
|
181
|
+
## Verwandte Doku
|
|
182
|
+
|
|
183
|
+
- [RMT vNext Authoring Guide](./rmt-vnext-authoring.md)
|
|
184
|
+
- [RMT DOM Descriptor Renderer](./rmt-dom-descriptor-renderer.md)
|
|
185
|
+
- [RMT Component Template Primitives](./rmt-component-template-primitives.md)
|
|
186
|
+
- [XTend Components](./components.md)
|
|
187
|
+
- [Component Platform](./component-platform.md)
|
|
188
|
+
- [XTend-Fabric RMT Lane Mapping](./xtend-fabric-rmt-lane-mapping.md)
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# RMT vNext Cross Surface Events
|
|
2
|
+
|
|
3
|
+
Cross Surface Events verbinden Bereiche der App Shell, ohne einen impliziten
|
|
4
|
+
globalen Event Bus einzufuehren. Jede Richtung, jedes Ziel und jedes Payload-
|
|
5
|
+
Schema wird explizit beschrieben und durch Governance-Diagnostics abgesichert.
|
|
6
|
+
Boundary: no implicit global Event Bus.
|
|
7
|
+
|
|
8
|
+
## Contract
|
|
9
|
+
|
|
10
|
+
```js
|
|
11
|
+
schema: "xtend.rmt.vnext-cross-surface-event-protocol.v1"
|
|
12
|
+
reportSchema: "xtend.rmt.vnext-cross-surface-event-report.v1"
|
|
13
|
+
governanceSchema: "xtend.rmt.vnext-event-governance-policy.v1"
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
Ein Event muss definieren:
|
|
17
|
+
|
|
18
|
+
- `event` als versionierter Name, zum Beispiel `checkout.cart.updated.v1`.
|
|
19
|
+
- `owner` als Team fuer Event- und Versionspflege.
|
|
20
|
+
- `payload.schema` als stabile Payload-ID.
|
|
21
|
+
- `direction` als `outbound` oder `inbound`.
|
|
22
|
+
- `scope` als Lane-, Surface- oder Shell-Target-Bindung.
|
|
23
|
+
- `delivery` mit TTL, Korrelation und Idempotenz, wenn erforderlich.
|
|
24
|
+
|
|
25
|
+
## Direction
|
|
26
|
+
|
|
27
|
+
`emits` beschreibt ausgehende Events einer Surface. `consumes` beschreibt
|
|
28
|
+
eingehende Events. Die Shell darf diese Bindings weiterleiten, aber nicht frei
|
|
29
|
+
interpretieren. Dadurch bleibt sichtbar, ob eine User-Aktion mehrere Bereiche
|
|
30
|
+
der Shell tangiert.
|
|
31
|
+
|
|
32
|
+
## Scope
|
|
33
|
+
|
|
34
|
+
Events sind auf Lanes und Shell Targets begrenzt:
|
|
35
|
+
|
|
36
|
+
```rmt
|
|
37
|
+
emits checkout.cart.updated.v1 {
|
|
38
|
+
owner: "checkout-platform"
|
|
39
|
+
payload: "xtend.schemas.cartUpdated.v1"
|
|
40
|
+
direction: outbound
|
|
41
|
+
scope: lane critical -> shell.slot:sidebar.cart
|
|
42
|
+
}
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Ein Event ohne klaren Scope wird im E16-Gate blockiert oder diagnostiziert. Das
|
|
46
|
+
verhindert denselben impliziten Kopplungsdruck, der Micro-Frontend-Systeme ohne
|
|
47
|
+
Disziplin schwer wartbar macht.
|
|
48
|
+
|
|
49
|
+
## Governance
|
|
50
|
+
|
|
51
|
+
Das Governance-Modell prueft:
|
|
52
|
+
|
|
53
|
+
- Event Owner und Payload Owner.
|
|
54
|
+
- Cross-Team-Events.
|
|
55
|
+
- Delivery Mode, TTL, `correlationId` und `idempotencyKey`.
|
|
56
|
+
- Sensitivity und Review-Pflichten.
|
|
57
|
+
- Degradation-Verhalten fuer Events einer blockierten oder degradierten Surface.
|
|
58
|
+
|
|
59
|
+
## Gates
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
node scripts/run_xtend_tests.js rmt-vnext-cross-surface-events --json
|
|
63
|
+
node scripts/run_xtend_tests.js rmt-vnext-event-governance --json
|
|
64
|
+
node scripts/run_xtend_tests.js rmt-vnext-enterprise-release --json
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
Die Enterprise Demo deckt `checkout.cart.updated.v1` und
|
|
68
|
+
`user.session.changed.v1` als typisierte, gerichtete Cross-Surface-Events ab.
|