@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,331 @@
|
|
|
1
|
+
# XTendRMT App DSL Reference
|
|
2
|
+
|
|
3
|
+
- Status: current after Epic 05 completion, updated vNext-first
|
|
4
|
+
- Contract: `xtend.docs.xtendrmt-app-dsl.v1`
|
|
5
|
+
- Schema source: `xtendrmt/rmt.schema.json`
|
|
6
|
+
- Normalizer: `createRmtFormat().normalizeDocument(...)`
|
|
7
|
+
|
|
8
|
+
## Purpose
|
|
9
|
+
|
|
10
|
+
The App DSL describes a renderable application as an RMT document. New
|
|
11
|
+
authoring work uses RMT vNext; legacy/App-DSL JSON remains the normalized core
|
|
12
|
+
output, runtime registry, and compatibility surface. XTend UI, XRouter, Vanilla
|
|
13
|
+
JS, and other hosts are connected through adapter records without the kernel
|
|
14
|
+
importing host runtime.
|
|
15
|
+
|
|
16
|
+
Since `WP-E13-09`, [RMT Production Readiness](./rmt-production-readiness.md)
|
|
17
|
+
bundles this App DSL under `xtend.epic13.rmt-production-readiness.v1` as the
|
|
18
|
+
RC1 boundary for shell-first app shell, native routes, components, Fabric/lanes,
|
|
19
|
+
lifecycle telemetry, diagnostics, and artifact parity.
|
|
20
|
+
|
|
21
|
+
## Minimal vNext Document
|
|
22
|
+
|
|
23
|
+
```rmt
|
|
24
|
+
template app.shell {
|
|
25
|
+
state app.ready type boolean initial true
|
|
26
|
+
|
|
27
|
+
portal surface.root root "#app-root" layer surface
|
|
28
|
+
|
|
29
|
+
surface app.home kind page component x-section {
|
|
30
|
+
source state app.ready
|
|
31
|
+
portal surface.root
|
|
32
|
+
|
|
33
|
+
lane visible weight 80 {
|
|
34
|
+
hydrate app-shell from state app.ready
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
The compiler lowers this source into core domains such as `adapters`,
|
|
41
|
+
`components`, `routes`, `schedules`, `surfaces`, and `templates`. These domains
|
|
42
|
+
are stable for runtime adapters, but they are no longer the preferred writing
|
|
43
|
+
surface.
|
|
44
|
+
|
|
45
|
+
## Native Domains as Compiler Output
|
|
46
|
+
|
|
47
|
+
| Domain | Responsibility |
|
|
48
|
+
|--------|----------------|
|
|
49
|
+
| `adapters` | host capabilities, runtime surface, capability negotiation |
|
|
50
|
+
| `components` | domain component records, host adapter, hydration hints |
|
|
51
|
+
| `routes` | navigation, route targets, query/params, schedule references |
|
|
52
|
+
| `schedules` | reusable scheduler policies |
|
|
53
|
+
| `templates` | `dom_descriptor`, props, slots, bindings, hydration contracts |
|
|
54
|
+
| `surfaces` | SurfaceManager, window, panel, and overlay handoffs |
|
|
55
|
+
|
|
56
|
+
`manifest.metadata` remains valid for descriptions, handoff, history, and demo
|
|
57
|
+
notes. New operational routes, components, and schedules belong in vNext source
|
|
58
|
+
and are projected from there into the registry.
|
|
59
|
+
|
|
60
|
+
## Adapter Records
|
|
61
|
+
|
|
62
|
+
In vNext, adapters become visible implicitly through surface, route, and
|
|
63
|
+
endpoint usage. The registry then contains stable adapter records for hosts:
|
|
64
|
+
|
|
65
|
+
- `xtend.xrouter`
|
|
66
|
+
- `xtend.component`
|
|
67
|
+
- `xtend.surface`
|
|
68
|
+
- `rmt.state-scheduler-diagnostics`
|
|
69
|
+
- `vanilla.component`
|
|
70
|
+
|
|
71
|
+
`kernelVisible: false` is the default for host-specific adapter data. The
|
|
72
|
+
kernel may index these records, but it must not load host runtime.
|
|
73
|
+
|
|
74
|
+
## Component Records
|
|
75
|
+
|
|
76
|
+
A vNext surface describes the domain 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
|
+
The normalizer turns this into runtime registry entries that can be consumed
|
|
94
|
+
through `componentRegistry.byAdapter["xtend.component"]` and
|
|
95
|
+
`componentRegistry.byTag["x-card"]`.
|
|
96
|
+
|
|
97
|
+
## Route Records
|
|
98
|
+
|
|
99
|
+
Route metadata remains declarative and can be tied to surfaces:
|
|
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
|
+
The normalizer creates route and schedule indexes for
|
|
120
|
+
`routeRegistry.byRouter["xtend.xrouter"]`, `routeRegistry.byId[...]`, and
|
|
121
|
+
`routeRegistry.byPath[...]`. `title`, `documentTitle`, `titleTemplate`,
|
|
122
|
+
`metaDescription`, and `metaKeywords` remain declarative route metadata:
|
|
123
|
+
XRouter writes `document.title` and `description`/`keywords` from them without
|
|
124
|
+
RMT importing XTend or XRouter.
|
|
125
|
+
|
|
126
|
+
## Schedule Records
|
|
127
|
+
|
|
128
|
+
Schedules are `lane` and lifecycle clauses in vNext:
|
|
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
|
+
Proven endpoint names remain:
|
|
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 and Trusted DOM
|
|
158
|
+
|
|
159
|
+
New templates are lowered from vNext surfaces and slots into
|
|
160
|
+
`dom_descriptor` output:
|
|
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` remains compatible, but requires an explicit Trusted DOM
|
|
180
|
+
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
|
+
The kernel may normalize and schedule such records. Sanitizing, Trusted DOM,
|
|
196
|
+
and concrete DOM sinks remain host adapter work. See
|
|
197
|
+
[Trusted DOM and Sanitizing](./trusted-dom-sanitizing.md).
|
|
198
|
+
|
|
199
|
+
## Shell-First Host Apps
|
|
200
|
+
|
|
201
|
+
The Docs App uses this path productively as a shell-first pilot.
|
|
202
|
+
`docs/xtendrmt-parsedown-docs.rmt` describes `docs.app.shell` as a
|
|
203
|
+
`dom_descriptor`, `docs.header.search` as the header search slot template, and
|
|
204
|
+
`docs.media.lazy` as a future-ready slot for XPlayer tutorials.
|
|
205
|
+
`docs/utils/pageloader.js` renders the RMT shell first and then inserts
|
|
206
|
+
Parsedown HTML only into the `data-rmt-slot="content"` slot.
|
|
207
|
+
|
|
208
|
+
Important: RMT remains framework-agnostic in this mode too. Parsedown,
|
|
209
|
+
rich-HTML sinks, XPlayer lazy loading, and concrete DOM events are executed by
|
|
210
|
+
the host adapter. RMT provides shell records, slots, schedules, and diagnostics.
|
|
211
|
+
|
|
212
|
+
## RMT-First XTend Apps
|
|
213
|
+
|
|
214
|
+
Since Epic 10, app authoring for complete XTend apps is described by contract
|
|
215
|
+
`xtend.rmt.first-class-app-authoring.v1`. The goal is an app whose shell,
|
|
216
|
+
routes, components, templates, events, commands, hydration policies, Fabric
|
|
217
|
+
lanes, and diagnostics all live in RMT.
|
|
218
|
+
|
|
219
|
+
The reference path is `tests/fixtures/rmt-first-class-xtend-app.rmt`. The gate
|
|
220
|
+
is:
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
node scripts/run_xtend_tests.js rmt-first-class-app --json
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
The contract intentionally stays host-neutral. RMT knows `xtend.component`,
|
|
227
|
+
`xtend.xrouter`, and `rmt.state-scheduler-diagnostics` as adapter records, but
|
|
228
|
+
it imports no XTend components and no XRouter module into the kernel. Details
|
|
229
|
+
live in `development/XTend-RMT-First-Class-App-Authoring.md`.
|
|
230
|
+
|
|
231
|
+
The canonical developer guide for complete XTend apps is
|
|
232
|
+
[RMT-First XTend Apps](./rmt-first-xtend-apps.md). The Epic 10 completion and
|
|
233
|
+
release gates are documented in
|
|
234
|
+
[Epic 10 Release Handoff](./epic10-release-handoff.md).
|
|
235
|
+
|
|
236
|
+
## Component Fabric Context
|
|
237
|
+
|
|
238
|
+
XTend Components can receive Fabric hints from vNext lanes and legacy metadata:
|
|
239
|
+
|
|
240
|
+
```rmt
|
|
241
|
+
template pages.settings {
|
|
242
|
+
portal surface.root root "#app-root" layer surface
|
|
243
|
+
|
|
244
|
+
surface pages.settings kind page component x-form {
|
|
245
|
+
portal surface.root
|
|
246
|
+
|
|
247
|
+
lane idle weight 40 {
|
|
248
|
+
hydrate settings-form from endpoint xtendrmt.component.hydrate
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
The productive adapter resolves this data through
|
|
255
|
+
`xtend.component.fabric-lane-ingestion.v2`. RMT schedule records take priority
|
|
256
|
+
over component metadata, runtime overrides, static contracts, and scaffold
|
|
257
|
+
defaults. The gate is
|
|
258
|
+
`node scripts/run_xtend_tests.js rmt-component-fabric-ingestion --json`.
|
|
259
|
+
|
|
260
|
+
## Component Lifecycle Telemetry
|
|
261
|
+
|
|
262
|
+
Starting with `xtend.component.lifecycle-telemetry.v1`, the adapter creates
|
|
263
|
+
lifecycle records for component work. RMT documents do not need to import XTend
|
|
264
|
+
code for this; they only provide component, route, schedule, and Fabric context.
|
|
265
|
+
The host can pass `telemetryCollector`, `recordTelemetry`, or a Fabric instance.
|
|
266
|
+
|
|
267
|
+
```js
|
|
268
|
+
const records = [];
|
|
269
|
+
adapter.mountComponent(root, 'pages.settings', model, {
|
|
270
|
+
mapping,
|
|
271
|
+
telemetryCollector: records
|
|
272
|
+
});
|
|
273
|
+
|
|
274
|
+
const snapshot = fabric.createTelemetrySnapshot({
|
|
275
|
+
componentTelemetry: records
|
|
276
|
+
});
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
`snapshot.componentTelemetry` aggregates `mount`, `hydrate`, `render`,
|
|
280
|
+
`update`, `event`, `unmount`, and `error` by operation, component, and lane.
|
|
281
|
+
Component errors, deadline misses, and explicit `backpressureSignal` metadata
|
|
282
|
+
can create backpressure. The gate is
|
|
283
|
+
`node scripts/run_xtend_tests.js rmt-component-lifecycle-telemetry --json`.
|
|
284
|
+
|
|
285
|
+
Hosts can pass Fabric snapshots directly to the productive RMT bridge:
|
|
286
|
+
|
|
287
|
+
```js
|
|
288
|
+
bridge.recordTelemetrySnapshot(snapshot, {
|
|
289
|
+
scheduleRef: "diagnostics.snapshot"
|
|
290
|
+
});
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
The bridge mirrors `rmt.telemetry.lastSnapshot` and `rmt.backpressure.*` from
|
|
294
|
+
that and schedules the diagnostics snapshot endpoint when needed.
|
|
295
|
+
|
|
296
|
+
## Runtime Registry
|
|
297
|
+
|
|
298
|
+
The registry is the consumable boundary between DSL and adapter. Adapters read
|
|
299
|
+
registry entries, not raw demo metadata:
|
|
300
|
+
|
|
301
|
+
```js
|
|
302
|
+
const format = createRmtFormat();
|
|
303
|
+
const normalizedDocument = format.normalizeDocument(document);
|
|
304
|
+
const registry = format.createRuntimeRegistries(normalizedDocument, {
|
|
305
|
+
requiredRoutes: ["settings", "/settings"],
|
|
306
|
+
requiredComponents: ["settings.card", "x-card"]
|
|
307
|
+
});
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
## Diagnostics
|
|
311
|
+
|
|
312
|
+
The App DSL normalizer creates diagnostics instead of forcing host execution.
|
|
313
|
+
Important groups:
|
|
314
|
+
|
|
315
|
+
- `rmt.dsl.reference.*` for missing or invalid references
|
|
316
|
+
- `rmt.runtime.registry.*` for registry conflicts or missing required refs
|
|
317
|
+
- `rmt.xrouter.*` for route mapping and navigation
|
|
318
|
+
- `rmt.xtend.component.*` for component mapping, mounting, and hydration
|
|
319
|
+
- `rmt.bridge.*` for the state, scheduler, and diagnostics bridge
|
|
320
|
+
|
|
321
|
+
## Review Checklist
|
|
322
|
+
|
|
323
|
+
- App shell examples are `rmt` and vNext-first.
|
|
324
|
+
- Runtime registry JSON is classified as generated output or compatibility
|
|
325
|
+
surface.
|
|
326
|
+
- Routes reference components and schedules only by ID.
|
|
327
|
+
- Components reference host adapters only by ID.
|
|
328
|
+
- Schedule policies are central and reusable.
|
|
329
|
+
- XTend-specific data stays outside the kernel.
|
|
330
|
+
- Non-XTend hosts receive their own adapters instead of XTend fallbacks.
|
|
331
|
+
- `node scripts/run_xtend_tests.js rmt-compatibility --json` passes.
|
|
@@ -0,0 +1,256 @@
|
|
|
1
|
+
# XTendRMT Native Migration Guide
|
|
2
|
+
|
|
3
|
+
- Status: production after Epic 05 completion
|
|
4
|
+
- Contract: `xtend.rmt.native-migration-guide.v1`
|
|
5
|
+
- Minimum gates:
|
|
6
|
+
- `node scripts/run_xtend_tests.js rmt-compatibility --json`
|
|
7
|
+
- `node scripts/run_xtend_tests.js references --json`
|
|
8
|
+
- `npm test`
|
|
9
|
+
|
|
10
|
+
## Purpose
|
|
11
|
+
|
|
12
|
+
This guide describes the migration from early XTendRMT metadata paths to native RMT top-level domains and onward to RMT vNext. The migration is additive and opt-in: existing XTend, React, Vue, Vanilla JS and custom apps may keep running while new app shells are written in RMT vNext. `adapters`, `components`, `routes`, `schedules` and `templates` remain runtime registry, compiler output and compatibility mirror.
|
|
13
|
+
|
|
14
|
+
The current product overview is in [XTendRMT Developer Overview](./xtendrmt-overview.md). App DSL details are in [XTendRMT App-DSL Reference](./xtendrmt-app-dsl.md), and production adapter/bridge wiring is in [XTendRMT Runtime Bridge](./xtendrmt-runtime-bridge.md).
|
|
15
|
+
|
|
16
|
+
## Target State
|
|
17
|
+
|
|
18
|
+
New documents should use these sources:
|
|
19
|
+
|
|
20
|
+
| Area | Target Source |
|
|
21
|
+
|------|---------------|
|
|
22
|
+
| Host Adapter | vNext surface/endpoint usage, output: `adapters` |
|
|
23
|
+
| XTend Components | `surface ... component x-*`, output: `components` with `adapter: "xtend.component"` |
|
|
24
|
+
| XRouter Routes | vNext shell/route surface, output: `routes` with `router: "xtend.xrouter"` |
|
|
25
|
+
| Scheduler Policies | `lane` and lifecycle operations, output: `schedules` |
|
|
26
|
+
| Markup or Fragments | `surface`, `slot`, `trust boundary`, output: `templates` |
|
|
27
|
+
| Description, Handoff, History | `manifest.metadata` |
|
|
28
|
+
|
|
29
|
+
`manifest.metadata` remains valid for product descriptions, handoff notes, demo history and deliberately historical pilot data. Operative routes, components and schedules should not be created there anymore. Template-only documents remain compatible.
|
|
30
|
+
|
|
31
|
+
## vNext Target Shape
|
|
32
|
+
|
|
33
|
+
```rmt
|
|
34
|
+
template settings.migration {
|
|
35
|
+
state settings.tab type string initial "profile"
|
|
36
|
+
|
|
37
|
+
portal surface.root root "#settings-root" layer surface
|
|
38
|
+
|
|
39
|
+
surface settings.card kind card component x-card {
|
|
40
|
+
source state settings.tab
|
|
41
|
+
portal surface.root
|
|
42
|
+
|
|
43
|
+
lane visible weight 80 {
|
|
44
|
+
hydrate settings-card from state settings.tab
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
The JSON examples in the following steps are intentionally marked as legacy input or runtime-registry output. They show migration evidence, not the new writing style.
|
|
51
|
+
|
|
52
|
+
## Migration Matrix
|
|
53
|
+
|
|
54
|
+
| Starting Point | Migration |
|
|
55
|
+
|----------------|-----------|
|
|
56
|
+
| Template-only `.rmt` document | remains valid; add native domains only when App DSL requires them |
|
|
57
|
+
| `manifest.metadata.routes` | move to `routes` |
|
|
58
|
+
| `manifest.metadata.components` | move to `components` |
|
|
59
|
+
| `manifest.metadata.schedules` | move to `schedules` |
|
|
60
|
+
| XRouter-specific demo initialization | replace with `createRmtXRouterAdapter` |
|
|
61
|
+
| XTend-specific demo mount logic | replace with `createRmtXtendComponentAdapter` |
|
|
62
|
+
| manual scheduler/state bridge | replace with `createRmtStateSchedulerDiagnosticsBridge` |
|
|
63
|
+
| non-XTend host | declare a custom adapter such as `vanilla.component` |
|
|
64
|
+
|
|
65
|
+
## Step 1: Make Adapters Explicit in Registry Output
|
|
66
|
+
|
|
67
|
+
Old demo metadata often contains implicit knowledge such as "this route uses XRouter" or "this component is XTend". The first migration step is an explicit adapter record.
|
|
68
|
+
|
|
69
|
+
```json
|
|
70
|
+
{
|
|
71
|
+
"id": "xtend.component",
|
|
72
|
+
"kind": "component_adapter",
|
|
73
|
+
"runtimeSurface": ["esm", "browser_classic"],
|
|
74
|
+
"providedCapabilities": ["components", "customElements", "hydration", "scheduleRefs"],
|
|
75
|
+
"kernelVisible": false
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
`kernelVisible: false` is mandatory for host-specific adapter data. It means the kernel may validate and index the record, but must not import the XTend runtime.
|
|
80
|
+
|
|
81
|
+
## Step 2: Lift Components out of Legacy Metadata
|
|
82
|
+
|
|
83
|
+
Before: legacy `manifest.metadata`
|
|
84
|
+
|
|
85
|
+
```json
|
|
86
|
+
{
|
|
87
|
+
"manifest": {
|
|
88
|
+
"metadata": {
|
|
89
|
+
"components": [
|
|
90
|
+
{
|
|
91
|
+
"id": "settings.card",
|
|
92
|
+
"tag": "x-card"
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
After: compatibility/registry output
|
|
101
|
+
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"components": [
|
|
105
|
+
{
|
|
106
|
+
"id": "settings.card",
|
|
107
|
+
"kind": "custom_element",
|
|
108
|
+
"adapter": "xtend.component",
|
|
109
|
+
"tag": "x-card",
|
|
110
|
+
"schedule": "component.idle.hydrate"
|
|
111
|
+
}
|
|
112
|
+
]
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
This lets `createRmtFormat().createRuntimeRegistries(...)` expose the component through `componentRegistry.byAdapter["xtend.component"]`.
|
|
117
|
+
|
|
118
|
+
## Step 3: Lift Routes out of Legacy Metadata
|
|
119
|
+
|
|
120
|
+
Before: legacy `manifest.metadata`
|
|
121
|
+
|
|
122
|
+
```json
|
|
123
|
+
{
|
|
124
|
+
"manifest": {
|
|
125
|
+
"metadata": {
|
|
126
|
+
"routes": [
|
|
127
|
+
{
|
|
128
|
+
"path": "/settings",
|
|
129
|
+
"component": "settings.card"
|
|
130
|
+
}
|
|
131
|
+
]
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
After: compatibility/registry output
|
|
138
|
+
|
|
139
|
+
```json
|
|
140
|
+
{
|
|
141
|
+
"routes": [
|
|
142
|
+
{
|
|
143
|
+
"id": "settings",
|
|
144
|
+
"path": "/settings",
|
|
145
|
+
"router": "xtend.xrouter",
|
|
146
|
+
"component": "settings.card",
|
|
147
|
+
"template": "settings.shell",
|
|
148
|
+
"schedule": "route.visible.render"
|
|
149
|
+
}
|
|
150
|
+
]
|
|
151
|
+
}
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
This lets `createRmtXRouterAdapter` map the route through `routeRegistry.byRouter["xtend.xrouter"]` and pass it to XRouter with `registerRoutes`.
|
|
155
|
+
|
|
156
|
+
## Step 4: Centralize Schedules
|
|
157
|
+
|
|
158
|
+
Endpoint hints often used to live in route, component or template metadata. After migration, the policy lives centrally in `schedules`.
|
|
159
|
+
|
|
160
|
+
```json
|
|
161
|
+
{
|
|
162
|
+
"schedules": [
|
|
163
|
+
{
|
|
164
|
+
"id": "route.visible.render",
|
|
165
|
+
"endpointName": "xtendrmt.route.render",
|
|
166
|
+
"lane": "visible",
|
|
167
|
+
"priority": 80,
|
|
168
|
+
"preferIdle": false
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"id": "component.idle.hydrate",
|
|
172
|
+
"endpointName": "xtendrmt.component.hydrate",
|
|
173
|
+
"lane": "idle",
|
|
174
|
+
"priority": 40,
|
|
175
|
+
"preferIdle": true
|
|
176
|
+
}
|
|
177
|
+
]
|
|
178
|
+
}
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Routes and components now only reference `schedule`. Execution runs through `createRmtStateSchedulerDiagnosticsBridge`.
|
|
182
|
+
|
|
183
|
+
## Step 5: Remove Demo Bridge Logic
|
|
184
|
+
|
|
185
|
+
Permanent demo bridge logic should no longer carry new product logic. A migrated host start uses the production factories:
|
|
186
|
+
|
|
187
|
+
```js
|
|
188
|
+
const format = createRmtFormat();
|
|
189
|
+
const normalizedDocument = format.normalizeDocument(document);
|
|
190
|
+
const registry = format.createRuntimeRegistries(normalizedDocument);
|
|
191
|
+
|
|
192
|
+
const routes = createRmtXRouterAdapter({ routerElement }).registerRoutes(registry);
|
|
193
|
+
const components = createRmtXtendComponentAdapter({ document, manifest }).mapComponents(registry);
|
|
194
|
+
const bridge = createRmtStateSchedulerDiagnosticsBridge({ schedules: normalizedDocument.schedules });
|
|
195
|
+
|
|
196
|
+
bridge.recordAdapterResult(routes, { scheduleRef: 'route.visible.render' });
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
If special logic is still necessary, it belongs in an adapter or in upstream RMT source, not in a demo file.
|
|
200
|
+
|
|
201
|
+
## Best-Case Reference
|
|
202
|
+
|
|
203
|
+
`xtendrmt/xtendrmt-bestcase-demo.rmt` is the production authoring reference for RMT vNext:
|
|
204
|
+
|
|
205
|
+
- the `.rmt` file uses `template`, `surface`, `lane`, lifecycle operations, slots, event actions, state, selectors, actions, data sources, portals, overlays, resources and remote surfaces instead of JSON
|
|
206
|
+
- `xtendrmt/xtendrmt-bestcase-demo.core.json` is the byte-stable vNext Core output
|
|
207
|
+
- the browser demo projects vNext Core to `adapters`, `components`, `routes`, `schedules`, the Component Capability Registry, the Player Contract and resource ownership at runtime
|
|
208
|
+
- `createRmtXRouterAdapter`, `createRmtXtendComponentAdapter`, `createRmtStateSchedulerDiagnosticsBridge` and `createRmtComponentCapabilityRegistry` remain the production adapter paths
|
|
209
|
+
- `nativeDemoMigration` is retained in the runtime projection as handoff metadata
|
|
210
|
+
|
|
211
|
+
`tests/browser/fixtures/rmt-xrouter-xtend-smoke.html` is the browser-near regression for the migrated path. It additionally verifies `vanilla.component` so the target state remains framework-agnostic.
|
|
212
|
+
|
|
213
|
+
For the official Docs App, Parsedown remains the active Markdown parser, but the visible app shell is rendered shell-first from `docs.app.shell` in the RMT document. The RMT scheduling and shell path for Parsedown, search and future-ready media slots is documented through [XTendRMT Parsedown Scheduling Pilot](./xtendrmt-parsedown-scheduling.md) and remains host-neutral.
|
|
214
|
+
|
|
215
|
+
## SurfaceManager Migration
|
|
216
|
+
|
|
217
|
+
Starting with `WP-SM-09`, the SurfaceManager has its own migration guide: [SurfaceManager Migration Guide](./surface-manager-migration-guide.md) (`docs/surface-manager-migration-guide.md`).
|
|
218
|
+
|
|
219
|
+
The Surface path is additive:
|
|
220
|
+
|
|
221
|
+
- existing `components[*].metadata.surface` records remain valid
|
|
222
|
+
- native `surfaces[*]` records are preferred for complex app shells
|
|
223
|
+
- dual records keep `id`, `type`, `manager`, `component`, `route`, `schedule` and `stateKey` synchronized
|
|
224
|
+
- `xtend.surface` remains a `surface_adapter` handoff until a production adapter runtime is implemented
|
|
225
|
+
|
|
226
|
+
## What Does Not Need Migration
|
|
227
|
+
|
|
228
|
+
Not every file immediately needs native domains.
|
|
229
|
+
|
|
230
|
+
Do not migrate:
|
|
231
|
+
|
|
232
|
+
- pure template-only documents without routing or component needs
|
|
233
|
+
- historical demos with `manual-legacy` status
|
|
234
|
+
- metadata that only contains product descriptions or handoff notes
|
|
235
|
+
- React, Vue, Vanilla or custom hosts that do not yet use RMT as scheduler
|
|
236
|
+
|
|
237
|
+
Migrate:
|
|
238
|
+
|
|
239
|
+
- new `.rmt` App DSL documents
|
|
240
|
+
- demo code with operative route/component bridges
|
|
241
|
+
- production route or component flows
|
|
242
|
+
- host paths that need scheduler endpoint policies
|
|
243
|
+
|
|
244
|
+
## Review Checklist
|
|
245
|
+
|
|
246
|
+
Before closing a migration, verify that:
|
|
247
|
+
|
|
248
|
+
- `manifest.metadata.routes -> routes` has been completed
|
|
249
|
+
- `manifest.metadata.components -> components` has been completed
|
|
250
|
+
- `manifest.metadata.schedules -> schedules` has been completed
|
|
251
|
+
- `xtend.xrouter` and `xtend.component` are adapter records, not kernel knowledge
|
|
252
|
+
- `route.visible.render` and `component.idle.hydrate` are central policies
|
|
253
|
+
- `createRmtXRouterAdapter`, `createRmtXtendComponentAdapter` and `createRmtStateSchedulerDiagnosticsBridge` replace demo bridge logic
|
|
254
|
+
- template-only compatibility remains intact
|
|
255
|
+
- React, Vue, Vanilla JS and custom hosts are not forced into the XTend migration
|
|
256
|
+
- `node scripts/run_xtend_tests.js rmt-compatibility --json` and `node scripts/run_xtend_tests.js references --json` run
|