@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,334 @@
|
|
|
1
|
+
# XTendRMT App-DSL Reference
|
|
2
|
+
|
|
3
|
+
- Status: aktuell nach Epic 05 Abschluss, vNext-first aktualisiert
|
|
4
|
+
- Contract: `xtend.docs.xtendrmt-app-dsl.v1`
|
|
5
|
+
- Schema-Quelle: `xtendrmt/rmt.schema.json`
|
|
6
|
+
- Normalizer: `createRmtFormat().normalizeDocument(...)`
|
|
7
|
+
|
|
8
|
+
## Zweck
|
|
9
|
+
|
|
10
|
+
Die App-DSL beschreibt eine renderbare Anwendung als RMT-Dokument. Neue
|
|
11
|
+
Authoring-Arbeit nutzt RMT vNext; Legacy-/App-DSL-JSON ist weiterhin der
|
|
12
|
+
normalisierte Core-Output, Runtime Registry und Compatibility Surface. XTend UI,
|
|
13
|
+
XRouter, Vanilla JS oder andere Hosts werden ueber Adapter Records angebunden,
|
|
14
|
+
ohne dass der Kernel Host-Runtime importiert.
|
|
15
|
+
|
|
16
|
+
Seit `WP-E13-09` buendelt [RMT Production
|
|
17
|
+
Readiness](./rmt-production-readiness.md) diese App-DSL unter
|
|
18
|
+
`xtend.epic13.rmt-production-readiness.v1` als RC1-Schnitt fuer Shell-first App
|
|
19
|
+
Shell, native Routes, Components, Fabric/Lanes, Lifecycle Telemetry,
|
|
20
|
+
Diagnostics und Artifact Parity.
|
|
21
|
+
|
|
22
|
+
## Minimales vNext-Dokument
|
|
23
|
+
|
|
24
|
+
```rmt
|
|
25
|
+
template app.shell {
|
|
26
|
+
state app.ready type boolean initial true
|
|
27
|
+
|
|
28
|
+
portal surface.root root "#app-root" layer surface
|
|
29
|
+
|
|
30
|
+
surface app.home kind page component x-section {
|
|
31
|
+
source state app.ready
|
|
32
|
+
portal surface.root
|
|
33
|
+
|
|
34
|
+
lane visible weight 80 {
|
|
35
|
+
hydrate app-shell from state app.ready
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Der Compiler senkt diese Quelle in Core-Domains wie `adapters`, `components`,
|
|
42
|
+
`routes`, `schedules`, `surfaces` und `templates`. Diese Domains sind fuer
|
|
43
|
+
Runtime-Adapter stabil, aber nicht mehr die bevorzugte Schreiboberflaeche.
|
|
44
|
+
|
|
45
|
+
## Native Domains als Compiler-Output
|
|
46
|
+
|
|
47
|
+
| Domain | Aufgabe |
|
|
48
|
+
|--------|---------|
|
|
49
|
+
| `adapters` | Host-Faehigkeiten, Runtime Surface, Capability Negotiation |
|
|
50
|
+
| `components` | fachliche Component Records, Host Adapter und Hydration-Hinweise |
|
|
51
|
+
| `routes` | Navigation, Route-Ziele, Query/Params und Schedule References |
|
|
52
|
+
| `schedules` | wiederverwendbare Scheduler Policies |
|
|
53
|
+
| `templates` | `dom_descriptor`, Props, Slots, Bindings und Hydration Contracts |
|
|
54
|
+
| `surfaces` | SurfaceManager-, Window-, Panel- und Overlay-Handoffs |
|
|
55
|
+
|
|
56
|
+
`manifest.metadata` bleibt fuer Beschreibung, Handoff, Historie und Demo-Notizen
|
|
57
|
+
gueltig. Neue operative Routes, Components und Schedules gehoeren in vNext-
|
|
58
|
+
Source und werden daraus in die Registry projiziert.
|
|
59
|
+
|
|
60
|
+
## Adapter Records
|
|
61
|
+
|
|
62
|
+
Adapter werden in vNext implizit durch Surface-, Route- und Endpoint-Nutzung
|
|
63
|
+
sichtbar. Die Registry enthaelt danach stabile Adapter Records fuer Hosts:
|
|
64
|
+
|
|
65
|
+
- `xtend.xrouter`
|
|
66
|
+
- `xtend.component`
|
|
67
|
+
- `xtend.surface`
|
|
68
|
+
- `rmt.state-scheduler-diagnostics`
|
|
69
|
+
- `vanilla.component`
|
|
70
|
+
|
|
71
|
+
`kernelVisible: false` ist fuer host-spezifische Adapterdaten der Normalfall.
|
|
72
|
+
Der Kernel darf diese Records indizieren, aber keine Host-Runtime laden.
|
|
73
|
+
|
|
74
|
+
## Component Records
|
|
75
|
+
|
|
76
|
+
Ein vNext-Surface beschreibt das fachliche Host-Element:
|
|
77
|
+
|
|
78
|
+
```rmt
|
|
79
|
+
template settings.components {
|
|
80
|
+
portal surface.root root "#settings-root" layer surface
|
|
81
|
+
|
|
82
|
+
surface settings.card kind card component x-card {
|
|
83
|
+
portal surface.root
|
|
84
|
+
|
|
85
|
+
lane visible weight 80 {
|
|
86
|
+
mount x-card
|
|
87
|
+
hydrate settings-card from endpoint xtendrmt.component.hydrate
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Der Normalizer macht daraus Runtime-Registry-Eintraege, die ueber
|
|
94
|
+
`componentRegistry.byAdapter["xtend.component"]` und
|
|
95
|
+
`componentRegistry.byTag["x-card"]` konsumierbar sind.
|
|
96
|
+
|
|
97
|
+
## Route Records
|
|
98
|
+
|
|
99
|
+
Route-Metadaten bleiben deklarativ und koennen an Surfaces gekoppelt werden:
|
|
100
|
+
|
|
101
|
+
```rmt
|
|
102
|
+
template settings.routes {
|
|
103
|
+
state settings.tab type string initial "profile"
|
|
104
|
+
|
|
105
|
+
portal surface.root root "#app-root" layer surface
|
|
106
|
+
|
|
107
|
+
surface settings.page kind page component x-section {
|
|
108
|
+
source state settings.tab
|
|
109
|
+
portal surface.root
|
|
110
|
+
|
|
111
|
+
lane visible weight 80 {
|
|
112
|
+
hydrate route-view from endpoint xtendrmt.route.render
|
|
113
|
+
hydrate settings-shell from state settings.tab
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Der Normalizer erzeugt daraus Route- und Schedule-Indizes fuer
|
|
120
|
+
`routeRegistry.byRouter["xtend.xrouter"]`, `routeRegistry.byId[...]` und
|
|
121
|
+
`routeRegistry.byPath[...]`. `title`, `documentTitle`, `titleTemplate`,
|
|
122
|
+
`metaDescription` und `metaKeywords` bleiben deklarative Route-Metadaten:
|
|
123
|
+
XRouter schreibt daraus `document.title` sowie `description`/`keywords`, ohne
|
|
124
|
+
dass RMT XTend oder XRouter importiert.
|
|
125
|
+
|
|
126
|
+
## Schedule Records
|
|
127
|
+
|
|
128
|
+
Schedules sind in vNext `lane`- und Lifecycle-Klauseln:
|
|
129
|
+
|
|
130
|
+
```rmt
|
|
131
|
+
template scheduler.page {
|
|
132
|
+
portal surface.root root "#app-root" layer surface
|
|
133
|
+
|
|
134
|
+
surface app.shell kind page component x-section {
|
|
135
|
+
portal surface.root
|
|
136
|
+
|
|
137
|
+
lane visible weight 80 {
|
|
138
|
+
hydrate route-shell from endpoint xtendrmt.route.render
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
lane idle weight 20 {
|
|
142
|
+
hydrate help-panel from endpoint xtendrmt.component.hydrate
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Erprobte Endpoint-Namen bleiben:
|
|
149
|
+
|
|
150
|
+
- `xtendrmt.route.render`
|
|
151
|
+
- `xtendrmt.component.mount`
|
|
152
|
+
- `xtendrmt.component.hydrate`
|
|
153
|
+
- `xtendrmt.vanilla.mount`
|
|
154
|
+
- `xtendrmt.diagnostics.snapshot`
|
|
155
|
+
- `xtendrmt.template.inspect`
|
|
156
|
+
|
|
157
|
+
## Template Records und Trusted DOM
|
|
158
|
+
|
|
159
|
+
Neue Templates werden aus vNext-Surfaces und Slots in `dom_descriptor` Output
|
|
160
|
+
gesenkt:
|
|
161
|
+
|
|
162
|
+
```rmt
|
|
163
|
+
template settings.template {
|
|
164
|
+
portal surface.root root "#settings-root" layer surface
|
|
165
|
+
|
|
166
|
+
surface settings.shell kind page component x-card {
|
|
167
|
+
portal surface.root
|
|
168
|
+
|
|
169
|
+
lane visible weight 80 {
|
|
170
|
+
hydrate settings-card from endpoint xtendrmt.component.hydrate {
|
|
171
|
+
slot header hydrate settings-header
|
|
172
|
+
slot body hydrate settings-body
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
`html_fragment` bleibt kompatibel, braucht aber eine explizite
|
|
180
|
+
Trusted-DOM-Boundary:
|
|
181
|
+
|
|
182
|
+
```rmt
|
|
183
|
+
template settings.legacyHtml {
|
|
184
|
+
surface settings.legacy kind card component x-card {
|
|
185
|
+
lane visible weight 60 {
|
|
186
|
+
hydrate legacy-fragment from endpoint docs.parse {
|
|
187
|
+
trust boundary "xtend.security.sanitizing-boundary.v1"
|
|
188
|
+
sanitize html_fragment
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
Der Kernel darf solche Records normalisieren und schedulen. Sanitizing, Trusted
|
|
196
|
+
DOM und konkrete DOM-Sinks bleiben Host-Adapter-Aufgabe. Siehe [Trusted DOM und
|
|
197
|
+
Sanitizing](./trusted-dom-sanitizing.md).
|
|
198
|
+
|
|
199
|
+
## Shell-first Host Apps
|
|
200
|
+
|
|
201
|
+
Die Docs-App nutzt diesen Pfad produktiv als Shell-first-Pilot.
|
|
202
|
+
`docs/xtendrmt-parsedown-docs.rmt` beschreibt `docs.app.shell` als
|
|
203
|
+
`dom_descriptor`, `docs.header.search` als Header-Search-Slot-Template und
|
|
204
|
+
`docs.media.lazy` als future-ready Slot fuer XPlayer-Tutorials.
|
|
205
|
+
`docs/utils/pageloader.js` rendert zuerst die RMT-Shell und setzt
|
|
206
|
+
Parsedown-HTML anschliessend nur noch in den `data-rmt-slot="content"` Slot.
|
|
207
|
+
|
|
208
|
+
Wichtig: Auch in diesem Modus bleibt RMT framework-agnostisch. Parsedown,
|
|
209
|
+
Rich-HTML-Sinks, XPlayer-Lazy-Loading und konkrete DOM-Events werden vom
|
|
210
|
+
Host-Adapter ausgefuehrt. RMT stellt Shell-Records, Slots, Schedules und
|
|
211
|
+
Diagnostics bereit.
|
|
212
|
+
|
|
213
|
+
## RMT-first XTend Apps
|
|
214
|
+
|
|
215
|
+
Ab Epic 10 ist das App-Authoring fuer vollstaendige XTend-Apps als Contract
|
|
216
|
+
`xtend.rmt.first-class-app-authoring.v1` beschrieben. Das Ziel ist eine App,
|
|
217
|
+
deren Shell, Routes, Components, Templates, Events, Commands, Hydration
|
|
218
|
+
Policies, Fabric-Lanes und Diagnostics komplett in RMT stehen.
|
|
219
|
+
|
|
220
|
+
Der Referenzpfad liegt in `tests/fixtures/rmt-first-class-xtend-app.rmt`. Der
|
|
221
|
+
Gate ist:
|
|
222
|
+
|
|
223
|
+
```bash
|
|
224
|
+
node scripts/run_xtend_tests.js rmt-first-class-app --json
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
Der Contract bleibt bewusst host-neutral. RMT kennt `xtend.component`,
|
|
228
|
+
`xtend.xrouter` und `rmt.state-scheduler-diagnostics` als Adapter-Records,
|
|
229
|
+
importiert aber keine XTend-Komponenten und kein XRouter-Modul in den Kernel.
|
|
230
|
+
Details stehen in `development/XTend-RMT-First-Class-App-Authoring.md`.
|
|
231
|
+
|
|
232
|
+
Der kanonische Entwicklerguide fuer komplette XTend Apps liegt in [RMT-first
|
|
233
|
+
XTend Apps](./rmt-first-xtend-apps.md). Der Epic-10-Abschluss und die
|
|
234
|
+
Release-Gates sind in [Epic 10 Release Handoff](./epic10-release-handoff.md)
|
|
235
|
+
dokumentiert.
|
|
236
|
+
|
|
237
|
+
## Component Fabric Context
|
|
238
|
+
|
|
239
|
+
XTend Components koennen Fabric-Hints aus vNext-Lanes und Legacy-Metadata
|
|
240
|
+
erhalten:
|
|
241
|
+
|
|
242
|
+
```rmt
|
|
243
|
+
template pages.settings {
|
|
244
|
+
portal surface.root root "#app-root" layer surface
|
|
245
|
+
|
|
246
|
+
surface pages.settings kind page component x-form {
|
|
247
|
+
portal surface.root
|
|
248
|
+
|
|
249
|
+
lane idle weight 40 {
|
|
250
|
+
hydrate settings-form from endpoint xtendrmt.component.hydrate
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
Der produktive Adapter loest diese Daten ueber
|
|
257
|
+
`xtend.component.fabric-lane-ingestion.v2` auf. RMT Schedule Records haben
|
|
258
|
+
Vorrang vor Component Metadata, Runtime Overrides, Static Contracts und
|
|
259
|
+
Scaffold Defaults. Der Gate ist
|
|
260
|
+
`node scripts/run_xtend_tests.js rmt-component-fabric-ingestion --json`.
|
|
261
|
+
|
|
262
|
+
## Component Lifecycle Telemetry
|
|
263
|
+
|
|
264
|
+
Der Adapter erzeugt ab `xtend.component.lifecycle-telemetry.v1` Lifecycle
|
|
265
|
+
Records fuer Component-Arbeit. RMT-Dokumente muessen dafuer keinen XTend-Code
|
|
266
|
+
importieren; sie liefern nur Component-, Route-, Schedule- und Fabric-Kontext.
|
|
267
|
+
Der Host kann `telemetryCollector`, `recordTelemetry` oder eine Fabric-Instanz
|
|
268
|
+
uebergeben.
|
|
269
|
+
|
|
270
|
+
```js
|
|
271
|
+
const records = [];
|
|
272
|
+
adapter.mountComponent(root, 'pages.settings', model, {
|
|
273
|
+
mapping,
|
|
274
|
+
telemetryCollector: records
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
const snapshot = fabric.createTelemetrySnapshot({
|
|
278
|
+
componentTelemetry: records
|
|
279
|
+
});
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
`snapshot.componentTelemetry` aggregiert `mount`, `hydrate`, `render`, `update`,
|
|
283
|
+
`event`, `unmount` und `error` nach Operation, Component und Lane.
|
|
284
|
+
Component-Fehler, Deadline-Ueberschreitungen und explizite
|
|
285
|
+
`backpressureSignal` Metadata koennen Backpressure erzeugen. Der Gate ist
|
|
286
|
+
`node scripts/run_xtend_tests.js rmt-component-lifecycle-telemetry --json`.
|
|
287
|
+
|
|
288
|
+
Hosts koennen Fabric Snapshots direkt an die produktive RMT Bridge uebergeben:
|
|
289
|
+
|
|
290
|
+
```js
|
|
291
|
+
bridge.recordTelemetrySnapshot(snapshot, {
|
|
292
|
+
scheduleRef: "diagnostics.snapshot"
|
|
293
|
+
});
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
Die Bridge spiegelt daraus `rmt.telemetry.lastSnapshot` und
|
|
297
|
+
`rmt.backpressure.*` und plant bei Bedarf den Diagnostics-Snapshot-Endpunkt.
|
|
298
|
+
|
|
299
|
+
## Runtime Registry
|
|
300
|
+
|
|
301
|
+
Die Registry ist die konsumierbare Grenze zwischen DSL und Adapter. Adapter
|
|
302
|
+
lesen Registry-Eintraege, nicht rohe Demo-Metadaten:
|
|
303
|
+
|
|
304
|
+
```js
|
|
305
|
+
const format = createRmtFormat();
|
|
306
|
+
const normalizedDocument = format.normalizeDocument(document);
|
|
307
|
+
const registry = format.createRuntimeRegistries(normalizedDocument, {
|
|
308
|
+
requiredRoutes: ["settings", "/settings"],
|
|
309
|
+
requiredComponents: ["settings.card", "x-card"]
|
|
310
|
+
});
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
## Diagnostics
|
|
314
|
+
|
|
315
|
+
Der App-DSL-Normalizer erzeugt Diagnostics, statt Host-Ausfuehrung zu
|
|
316
|
+
erzwingen. Wichtige Gruppen:
|
|
317
|
+
|
|
318
|
+
- `rmt.dsl.reference.*` fuer fehlende oder ungueltige Referenzen
|
|
319
|
+
- `rmt.runtime.registry.*` fuer Registry-Konflikte oder fehlende Required-Refs
|
|
320
|
+
- `rmt.xrouter.*` fuer Route-Mapping und Navigation
|
|
321
|
+
- `rmt.xtend.component.*` fuer Component-Mapping, Mounting und Hydration
|
|
322
|
+
- `rmt.bridge.*` fuer State-, Scheduler- und Diagnostics-Bridge
|
|
323
|
+
|
|
324
|
+
## Review-Checkliste
|
|
325
|
+
|
|
326
|
+
- App-Shell-Beispiele sind `rmt` und vNext-first.
|
|
327
|
+
- Runtime-Registry-JSON ist als generierter Output oder Compatibility Surface
|
|
328
|
+
eingeordnet.
|
|
329
|
+
- Routes referenzieren Components und Schedules nur per ID.
|
|
330
|
+
- Components referenzieren Host Adapter nur per ID.
|
|
331
|
+
- Schedule Policies sind zentral und wiederverwendbar.
|
|
332
|
+
- XTend-spezifische Daten bleiben ausserhalb des Kernels.
|
|
333
|
+
- Nicht-XTend Hosts erhalten eigene Adapter statt XTend-Fallbacks.
|
|
334
|
+
- `node scripts/run_xtend_tests.js rmt-compatibility --json` laeuft.
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
# XTendRMT Native Migration Guide
|
|
2
|
+
|
|
3
|
+
- Status: produktiv nach Epic 05 Abschluss
|
|
4
|
+
- Contract: `xtend.rmt.native-migration-guide.v1`
|
|
5
|
+
- Mindestgates:
|
|
6
|
+
- `node scripts/run_xtend_tests.js rmt-compatibility --json`
|
|
7
|
+
- `node scripts/run_xtend_tests.js references --json`
|
|
8
|
+
- `npm test`
|
|
9
|
+
|
|
10
|
+
## Zweck
|
|
11
|
+
|
|
12
|
+
Dieser Guide beschreibt die Migration von fruehen XTendRMT-Metadatenpfaden zu
|
|
13
|
+
nativen RMT Top-Level-Domains und weiter zu RMT vNext. Die Migration ist
|
|
14
|
+
additiv und opt-in: bestehende XTend-, React-, Vue-, Vanilla-JS- und
|
|
15
|
+
Custom-Apps duerfen weiterlaufen, waehrend neue App-Shells in RMT vNext
|
|
16
|
+
geschrieben werden. `adapters`, `components`, `routes`, `schedules` und
|
|
17
|
+
`templates` bleiben Runtime Registry, Compiler-Output und Compatibility Mirror.
|
|
18
|
+
|
|
19
|
+
Der aktuelle Produktueberblick liegt in [XTendRMT Developer Overview](./xtendrmt-overview.md). Die App-DSL-Details stehen in [XTendRMT App-DSL Reference](./xtendrmt-app-dsl.md), die produktive Adapter-/Bridge-Verkabelung in [XTendRMT Runtime Bridge](./xtendrmt-runtime-bridge.md).
|
|
20
|
+
|
|
21
|
+
## Zielzustand
|
|
22
|
+
|
|
23
|
+
Neue Dokumente sollen diese Quellen nutzen:
|
|
24
|
+
|
|
25
|
+
| Bereich | Zielquelle |
|
|
26
|
+
|---------|------------|
|
|
27
|
+
| Host Adapter | vNext Surface-/Endpoint-Nutzung, Output: `adapters` |
|
|
28
|
+
| XTend Components | `surface ... component x-*`, Output: `components` mit `adapter: "xtend.component"` |
|
|
29
|
+
| XRouter Routes | vNext Shell-/Route-Surface, Output: `routes` mit `router: "xtend.xrouter"` |
|
|
30
|
+
| Scheduler Policies | `lane` und Lifecycle-Operationen, Output: `schedules` |
|
|
31
|
+
| Markup oder Fragmente | `surface`, `slot`, `trust boundary`, Output: `templates` |
|
|
32
|
+
| Beschreibung, Handoff, Historie | `manifest.metadata` |
|
|
33
|
+
|
|
34
|
+
`manifest.metadata` bleibt fuer Produktbeschreibung, Handoff-Notizen,
|
|
35
|
+
Demo-Historie und bewusst historische Pilotdaten gueltig. Operative Routes,
|
|
36
|
+
Components und Schedules sollen dort nicht neu entstehen.
|
|
37
|
+
Template-only-Dokumente bleiben kompatibel.
|
|
38
|
+
|
|
39
|
+
## vNext-Zielbild
|
|
40
|
+
|
|
41
|
+
```rmt
|
|
42
|
+
template settings.migration {
|
|
43
|
+
state settings.tab type string initial "profile"
|
|
44
|
+
|
|
45
|
+
portal surface.root root "#settings-root" layer surface
|
|
46
|
+
|
|
47
|
+
surface settings.card kind card component x-card {
|
|
48
|
+
source state settings.tab
|
|
49
|
+
portal surface.root
|
|
50
|
+
|
|
51
|
+
lane visible weight 80 {
|
|
52
|
+
hydrate settings-card from state settings.tab
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Die JSON-Beispiele in den folgenden Schritten sind bewusst als Legacy Input
|
|
59
|
+
oder Runtime-Registry-Output markiert. Sie zeigen Migrationsevidence, nicht die
|
|
60
|
+
neue Schreibform.
|
|
61
|
+
|
|
62
|
+
## Migrationsmatrix
|
|
63
|
+
|
|
64
|
+
| Ausgangslage | Migration |
|
|
65
|
+
|--------------|-----------|
|
|
66
|
+
| Template-only `.rmt` Dokument | bleibt gueltig; nur bei App-DSL-Bedarf native Domains ergaenzen |
|
|
67
|
+
| `manifest.metadata.routes` | nach `routes` verschieben |
|
|
68
|
+
| `manifest.metadata.components` | nach `components` verschieben |
|
|
69
|
+
| `manifest.metadata.schedules` | nach `schedules` verschieben |
|
|
70
|
+
| XRouter-spezifische Demo-Initialisierung | durch `createRmtXRouterAdapter` ersetzen |
|
|
71
|
+
| XTend-spezifische Demo-Mount-Logik | durch `createRmtXtendComponentAdapter` ersetzen |
|
|
72
|
+
| manuelle Scheduler-/State-Bruecke | durch `createRmtStateSchedulerDiagnosticsBridge` ersetzen |
|
|
73
|
+
| nicht-XTend Host | eigenen Adapter wie `vanilla.component` deklarieren |
|
|
74
|
+
|
|
75
|
+
## Schritt 1: Adapter im Registry-Output explizit machen
|
|
76
|
+
|
|
77
|
+
Alte Demo-Metadaten enthalten oft implizites Wissen wie "diese Route nutzt XRouter" oder "diese Component ist XTend". Der erste Migrationsschritt ist ein expliziter Adapter-Record.
|
|
78
|
+
|
|
79
|
+
```json
|
|
80
|
+
{
|
|
81
|
+
"id": "xtend.component",
|
|
82
|
+
"kind": "component_adapter",
|
|
83
|
+
"runtimeSurface": ["esm", "browser_classic"],
|
|
84
|
+
"providedCapabilities": ["components", "customElements", "hydration", "scheduleRefs"],
|
|
85
|
+
"kernelVisible": false
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
`kernelVisible: false` ist fuer host-spezifische Adapterdaten Pflicht. Es bedeutet: Der Kernel darf den Record validieren und indizieren, aber keine XTend-Laufzeit importieren.
|
|
90
|
+
|
|
91
|
+
## Schritt 2: Components aus Legacy-Metadaten heben
|
|
92
|
+
|
|
93
|
+
Vorher: Legacy `manifest.metadata`
|
|
94
|
+
|
|
95
|
+
```json
|
|
96
|
+
{
|
|
97
|
+
"manifest": {
|
|
98
|
+
"metadata": {
|
|
99
|
+
"components": [
|
|
100
|
+
{
|
|
101
|
+
"id": "settings.card",
|
|
102
|
+
"tag": "x-card"
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
Nachher: Compatibility-/Registry-Output
|
|
111
|
+
|
|
112
|
+
```json
|
|
113
|
+
{
|
|
114
|
+
"components": [
|
|
115
|
+
{
|
|
116
|
+
"id": "settings.card",
|
|
117
|
+
"kind": "custom_element",
|
|
118
|
+
"adapter": "xtend.component",
|
|
119
|
+
"tag": "x-card",
|
|
120
|
+
"schedule": "component.idle.hydrate"
|
|
121
|
+
}
|
|
122
|
+
]
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Damit kann `createRmtFormat().createRuntimeRegistries(...)` die Component ueber `componentRegistry.byAdapter["xtend.component"]` bereitstellen.
|
|
127
|
+
|
|
128
|
+
## Schritt 3: Routes aus Legacy-Metadaten heben
|
|
129
|
+
|
|
130
|
+
Vorher: Legacy `manifest.metadata`
|
|
131
|
+
|
|
132
|
+
```json
|
|
133
|
+
{
|
|
134
|
+
"manifest": {
|
|
135
|
+
"metadata": {
|
|
136
|
+
"routes": [
|
|
137
|
+
{
|
|
138
|
+
"path": "/settings",
|
|
139
|
+
"component": "settings.card"
|
|
140
|
+
}
|
|
141
|
+
]
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Nachher: Compatibility-/Registry-Output
|
|
148
|
+
|
|
149
|
+
```json
|
|
150
|
+
{
|
|
151
|
+
"routes": [
|
|
152
|
+
{
|
|
153
|
+
"id": "settings",
|
|
154
|
+
"path": "/settings",
|
|
155
|
+
"router": "xtend.xrouter",
|
|
156
|
+
"component": "settings.card",
|
|
157
|
+
"template": "settings.shell",
|
|
158
|
+
"schedule": "route.visible.render"
|
|
159
|
+
}
|
|
160
|
+
]
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
Damit kann `createRmtXRouterAdapter` die Route ueber `routeRegistry.byRouter["xtend.xrouter"]` mappen und mit `registerRoutes` an XRouter uebergeben.
|
|
165
|
+
|
|
166
|
+
## Schritt 4: Schedules zentralisieren
|
|
167
|
+
|
|
168
|
+
Vorher lagen Endpoint-Hints oft in Route-, Component- oder Template-Metadaten. Nach der Migration steht die Policy zentral in `schedules`.
|
|
169
|
+
|
|
170
|
+
```json
|
|
171
|
+
{
|
|
172
|
+
"schedules": [
|
|
173
|
+
{
|
|
174
|
+
"id": "route.visible.render",
|
|
175
|
+
"endpointName": "xtendrmt.route.render",
|
|
176
|
+
"lane": "visible",
|
|
177
|
+
"priority": 80,
|
|
178
|
+
"preferIdle": false
|
|
179
|
+
},
|
|
180
|
+
{
|
|
181
|
+
"id": "component.idle.hydrate",
|
|
182
|
+
"endpointName": "xtendrmt.component.hydrate",
|
|
183
|
+
"lane": "idle",
|
|
184
|
+
"priority": 40,
|
|
185
|
+
"preferIdle": true
|
|
186
|
+
}
|
|
187
|
+
]
|
|
188
|
+
}
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
Routes und Components referenzieren nur noch `schedule`. Die Ausfuehrung laeuft ueber `createRmtStateSchedulerDiagnosticsBridge`.
|
|
192
|
+
|
|
193
|
+
## Schritt 5: Demo-Brueckenlogik entfernen
|
|
194
|
+
|
|
195
|
+
Dauerhafte Demo-Brueckenlogik soll nicht mehr neue Produktlogik tragen. Ein migrierter Host-Start nutzt die produktiven Factories:
|
|
196
|
+
|
|
197
|
+
```js
|
|
198
|
+
const format = createRmtFormat();
|
|
199
|
+
const normalizedDocument = format.normalizeDocument(document);
|
|
200
|
+
const registry = format.createRuntimeRegistries(normalizedDocument);
|
|
201
|
+
|
|
202
|
+
const routes = createRmtXRouterAdapter({ routerElement }).registerRoutes(registry);
|
|
203
|
+
const components = createRmtXtendComponentAdapter({ document, manifest }).mapComponents(registry);
|
|
204
|
+
const bridge = createRmtStateSchedulerDiagnosticsBridge({ schedules: normalizedDocument.schedules });
|
|
205
|
+
|
|
206
|
+
bridge.recordAdapterResult(routes, { scheduleRef: 'route.visible.render' });
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
Wenn Speziallogik weiterhin notwendig ist, gehoert sie in einen Adapter oder in upstream RMT Source, nicht in eine Demo-Datei.
|
|
210
|
+
|
|
211
|
+
## Bestcase-Referenz
|
|
212
|
+
|
|
213
|
+
`xtendrmt/xtendrmt-bestcase-demo.rmt` ist die produktive Authoring-Referenz fuer RMT vNext:
|
|
214
|
+
|
|
215
|
+
- die `.rmt` Datei nutzt `template`, `surface`, `lane`, Lifecycle-Operationen, Slots, Event-Actions, State, Selectors, Actions, DataSources, Portals, Overlays, Resources und Remote Surfaces statt JSON
|
|
216
|
+
- `xtendrmt/xtendrmt-bestcase-demo.core.json` ist der byte-stabile vNext-Core-Output
|
|
217
|
+
- die Browser-Demo projiziert vNext-Core zur Laufzeit auf `adapters`, `components`, `routes`, `schedules`, Component Capability Registry, Player Contract und Resource Ownership
|
|
218
|
+
- `createRmtXRouterAdapter`, `createRmtXtendComponentAdapter`, `createRmtStateSchedulerDiagnosticsBridge` und `createRmtComponentCapabilityRegistry` bleiben die produktiven Adapterpfade
|
|
219
|
+
- `nativeDemoMigration` wird in der Runtime-Projektion als Handoff-Metadatum erhalten
|
|
220
|
+
|
|
221
|
+
`tests/browser/fixtures/rmt-xrouter-xtend-smoke.html` ist die browsernahe Regression fuer den migrierten Pfad. Sie prueft zusaetzlich `vanilla.component`, damit der Zielzustand framework-agnostisch bleibt.
|
|
222
|
+
|
|
223
|
+
Fuer die offizielle Docs-App gilt: Parsedown bleibt der aktive Markdown-Parser, aber die sichtbare App Shell wird Shell-first aus `docs.app.shell` im RMT-Dokument gerendert. Der RMT-Scheduling- und Shell-Pfad fuer Parsedown, Search und future-ready Media-Slots ist ueber [XTendRMT Parsedown Scheduling Pilot](./xtendrmt-parsedown-scheduling.md) dokumentiert und bleibt host-neutral.
|
|
224
|
+
|
|
225
|
+
## SurfaceManager Migration
|
|
226
|
+
|
|
227
|
+
Ab `WP-SM-09` besitzt der SurfaceManager einen eigenen Migrationsguide: [SurfaceManager Migration Guide](./surface-manager-migration-guide.md) (`docs/surface-manager-migration-guide.md`).
|
|
228
|
+
|
|
229
|
+
Der Surface-Pfad ist additiv:
|
|
230
|
+
|
|
231
|
+
- bestehende `components[*].metadata.surface` Records bleiben gueltig
|
|
232
|
+
- native `surfaces[*]` Records werden fuer komplexe App Shells bevorzugt
|
|
233
|
+
- Dual Records halten `id`, `type`, `manager`, `component`, `route`, `schedule` und `stateKey` synchron
|
|
234
|
+
- `xtend.surface` bleibt `surface_adapter` Handoff, bis eine produktive Adapter Runtime implementiert wird
|
|
235
|
+
|
|
236
|
+
## Was nicht migriert werden muss
|
|
237
|
+
|
|
238
|
+
Nicht jede Datei braucht sofort native Domains.
|
|
239
|
+
|
|
240
|
+
Nicht migrieren:
|
|
241
|
+
|
|
242
|
+
- reine Template-only-Dokumente ohne Routing- oder Component-Bedarf
|
|
243
|
+
- historische Demos mit `manual-legacy` Status
|
|
244
|
+
- Metadaten, die nur Produktbeschreibung oder Handoff-Notizen enthalten
|
|
245
|
+
- React-, Vue-, Vanilla- oder Custom-Hosts, die RMT noch nicht als Scheduler nutzen
|
|
246
|
+
|
|
247
|
+
Migrieren:
|
|
248
|
+
|
|
249
|
+
- neue `.rmt` App-DSL-Dokumente
|
|
250
|
+
- Demo-Code mit operativer Route-/Component-Bridge
|
|
251
|
+
- produktive Route- oder Component-Flows
|
|
252
|
+
- Host-Pfade, die Scheduler Endpoint Policies brauchen
|
|
253
|
+
|
|
254
|
+
## Review-Checkliste
|
|
255
|
+
|
|
256
|
+
Vor Abschluss einer Migration pruefen:
|
|
257
|
+
|
|
258
|
+
- `manifest.metadata.routes -> routes` wurde umgesetzt
|
|
259
|
+
- `manifest.metadata.components -> components` wurde umgesetzt
|
|
260
|
+
- `manifest.metadata.schedules -> schedules` wurde umgesetzt
|
|
261
|
+
- `xtend.xrouter` und `xtend.component` sind Adapter-Records, nicht Kernelwissen
|
|
262
|
+
- `route.visible.render` und `component.idle.hydrate` sind zentrale Policies
|
|
263
|
+
- `createRmtXRouterAdapter`, `createRmtXtendComponentAdapter` und `createRmtStateSchedulerDiagnosticsBridge` ersetzen Demo-Brueckenlogik
|
|
264
|
+
- Template-only-Kompatibilitaet bleibt erhalten
|
|
265
|
+
- React, Vue, Vanilla JS und Custom Hosts werden nicht zur XTend-Migration gezwungen
|
|
266
|
+
- `node scripts/run_xtend_tests.js rmt-compatibility --json` und `node scripts/run_xtend_tests.js references --json` laufen
|