@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
|
@@ -96,7 +96,7 @@ Wichtige Prefixes:
|
|
|
96
96
|
|
|
97
97
|
## VS Code
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
Die VS-Code-Integration liegt in:
|
|
100
100
|
|
|
101
101
|
```text
|
|
102
102
|
tools/rmt-editor/vscode
|
|
@@ -106,11 +106,31 @@ Es registriert:
|
|
|
106
106
|
|
|
107
107
|
- Language ID `rmt`
|
|
108
108
|
- Dateiendung `.rmt`
|
|
109
|
-
-
|
|
109
|
+
- RMT-vNext-aware TextMate-Grammatik mit Legacy-JSON-Fallback
|
|
110
110
|
- RMT Snippets
|
|
111
|
+
- `vscode-languageclient` fuer den lokalen RMT Language Server
|
|
112
|
+
- `$xtend-rmt-lint` Problem Matcher
|
|
113
|
+
- XTend CLI Tasks und Debug-Console-Launch-Konfigurationen
|
|
111
114
|
- Command `XTendRMT: Show Language Server Command`
|
|
112
|
-
|
|
113
|
-
|
|
115
|
+
- Command `XTendRMT: Start/Restart Language Server`
|
|
116
|
+
- Command `XTendRMT: Run Active RMT Lint`
|
|
117
|
+
- Command `XTendRMT: Run Workspace RMT Lint`
|
|
118
|
+
- Command `XTendRMT: Run RMT Build Check`
|
|
119
|
+
- Command `XTendRMT: Run Scaffold Verify`
|
|
120
|
+
- Command `XTendRMT: Debug Language Server`
|
|
121
|
+
- Command `XTendRMT: Debug Active RMT Lint`
|
|
122
|
+
- Command `XTendRMT: Debug Active RMT Build`
|
|
123
|
+
- Command `XTendRMT: Open XTend CLI Terminal`
|
|
124
|
+
- Command `XTendRMT: Run XTend CLI Command...`
|
|
125
|
+
- Command `XTendRMT: Run Agent Repair Report`
|
|
126
|
+
- Command `XTendRMT: Run RMT Build Write`
|
|
127
|
+
- Command `XTendRMT: Open VS Code Tasks Template`
|
|
128
|
+
- Command `XTendRMT: Open VS Code Launch Template`
|
|
129
|
+
- Command `XTendRMT: Show vNext Primitive Apply Experience`
|
|
130
|
+
- Command `XTendRMT: Show vNext Primitive Code Action Preview`
|
|
131
|
+
- Command `XTendRMT: Show vNext Primitive Command Handoff`
|
|
132
|
+
|
|
133
|
+
Der gepackte LanguageClient startet den Server per stdio:
|
|
114
134
|
|
|
115
135
|
```json
|
|
116
136
|
{
|
|
@@ -119,6 +139,43 @@ Bis ein voll gepackter VS-Code-LanguageClient freigegeben ist, kann ein generisc
|
|
|
119
139
|
}
|
|
120
140
|
```
|
|
121
141
|
|
|
142
|
+
Terminal-Tasks nutzen die XTend CLI als Orchestrator und pflegen keine eigene
|
|
143
|
+
RMT-Semantik. Die Extension sucht die CLI im Workspace zuerst unter
|
|
144
|
+
`xtend-builder/scaffold.js`, danach unter `node_modules/.bin/xt` und danach
|
|
145
|
+
unter `node_modules/@ccslabs/xtend-cli/scaffold.js`. Falls ein Projekt anders
|
|
146
|
+
aufgebaut ist, kann `xtendRmt.xtendCli.path` explizit auf ein Executable oder
|
|
147
|
+
eine `scaffold.js` zeigen. Die versionierte Vorlage liegt unter:
|
|
148
|
+
|
|
149
|
+
```text
|
|
150
|
+
tools/rmt-editor/vscode/templates/tasks.json
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
Der Problem Matcher konsumiert die stabile Linter-Ausgabe:
|
|
154
|
+
|
|
155
|
+
```bash
|
|
156
|
+
xt rmt lint app.rmt --format problem-matcher --fail-on warning
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
Die Launch-Vorlage fuer die Debug Console liegt unter:
|
|
160
|
+
|
|
161
|
+
```text
|
|
162
|
+
tools/rmt-editor/vscode/templates/launch.json
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Sie enthaelt Debug-Starts fuer Language Server, aktiven RMT Lint, aktiven RMT
|
|
166
|
+
Build und Scaffold Verify. Das ist Tool-Debugging fuer Authoring-Workflows; ein
|
|
167
|
+
eigener Debug Adapter fuer ausgefuehrte RMT-UI-Breakpoints bleibt bewusst
|
|
168
|
+
ausserhalb dieses Slices.
|
|
169
|
+
|
|
170
|
+
Die vNext-Primitive-Commands lesen CodeAction-Reports oder einzelne Actions
|
|
171
|
+
aus der RMT-vNext-Tooling-Schicht und zeigen die drei Apply-Pfade getrennt im
|
|
172
|
+
Output Channel:
|
|
173
|
+
|
|
174
|
+
- sichere einzelne Quick-Fixes;
|
|
175
|
+
- `source.fixAll.rmt.vnext.primitives` fuer alle sicheren WorkspaceEdits;
|
|
176
|
+
- manuelle `xtend.rmt.vnext.extractKernelImport` Handoffs fuer Kernel-/Fabric-
|
|
177
|
+
Boundary-Verletzungen ohne automatischen WorkspaceEdit.
|
|
178
|
+
|
|
122
179
|
## JetBrains
|
|
123
180
|
|
|
124
181
|
JetBrains-IDEs koennen ueber einen generischen LSP-Client oder ein lokales File-Watcher-/External-Tool-Setup angebunden werden.
|
|
@@ -11,10 +11,9 @@ oeffnbaren XTend App:
|
|
|
11
11
|
3. Derselbe Scaffold-Build schreibt die generierten Artefakte:
|
|
12
12
|
`components/x-rmt-lifecycle-demo.js`,
|
|
13
13
|
`xtendrmt/rmt-lifecycle-demo.app.js`,
|
|
14
|
-
`xtendrmt-rmt-lifecycle-demo.html` und
|
|
15
14
|
`tests/browser/fixtures/rmt-lifecycle-demo-smoke.html`.
|
|
16
15
|
4. Die App kann ueber den lokalen HTTP-Server geoeffnet werden:
|
|
17
|
-
`node scripts/serve_xtend_dev.js --default
|
|
16
|
+
`node scripts/serve_xtend_dev.js --default tests/browser/fixtures/rmt-lifecycle-demo-smoke.html`.
|
|
18
17
|
|
|
19
18
|
Der Build-Report liegt in `xtendrmt/rmt-lifecycle-demo.scaffold.json`. Er
|
|
20
19
|
haelt Source, Core Output, generierte XTend App, Browser-Smoke und den lokalen
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# RMT Node SSR Adapter
|
|
2
|
+
|
|
3
|
+
Der Node SSR Adapter ist die leichte serverseitige Host-Schicht fuer RMT
|
|
4
|
+
vNext. Er erzeugt Light-DOM-HTML fuer XTend Custom Elements, Hydration-
|
|
5
|
+
Payloads im bestehenden RenderMan-Shape und optional JSONL-Frames fuer
|
|
6
|
+
inkrementelle UI-Ausgabe. Das Modul ist bewusst kein HTTP-Server und kein
|
|
7
|
+
Parallelrenderer.
|
|
8
|
+
|
|
9
|
+
Schema: `xtend.rmt.node-ssr-adapter.v1`
|
|
10
|
+
|
|
11
|
+
Export:
|
|
12
|
+
|
|
13
|
+
```js
|
|
14
|
+
import {
|
|
15
|
+
createRmtNodeSsrAdapter
|
|
16
|
+
} from '@ccslabs/xtend/rmt/node-ssr-adapter';
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Das Runtime-Paket exportiert dieselbe API ueber
|
|
20
|
+
`@ccslabs/xtend-rmt/node-ssr-adapter`.
|
|
21
|
+
|
|
22
|
+
Fuer PHP/Laravel-Hosts gibt es denselben Client-Wire-Contract ueber den
|
|
23
|
+
[RMT PHP/Laravel SSR Adapter](./rmt-php-ssr-adapter.md). Beide Adapter liefern
|
|
24
|
+
kompatible HTML-, Hydration-, RenderMan-Chunk- und JSONL-Frames.
|
|
25
|
+
|
|
26
|
+
## Rolle im Stack
|
|
27
|
+
|
|
28
|
+
RMT bleibt die App-Beschreibung. Der Compiler erzeugt Core-/Kernel-Records,
|
|
29
|
+
Fabric fuehrt Scheduling-Absicht aus, die Component Capability Registry
|
|
30
|
+
beschreibt XTend UI generisch, und der Node SSR Adapter materialisiert daraus
|
|
31
|
+
serverseitige Startausgabe.
|
|
32
|
+
|
|
33
|
+
Der Adapter:
|
|
34
|
+
|
|
35
|
+
- instanziiert keine Custom Elements auf dem Server
|
|
36
|
+
- rendert kein Component-Shadow-DOM
|
|
37
|
+
- nutzt keine privaten Component-Maps
|
|
38
|
+
- startet keinen HTTP-Server
|
|
39
|
+
- nutzt keinen impliziten globalen Netzwerkzugriff
|
|
40
|
+
- serialisiert nur sichere Host-Ausgabe mit Trust-Boundary-Diagnostics
|
|
41
|
+
|
|
42
|
+
## Public API
|
|
43
|
+
|
|
44
|
+
```js
|
|
45
|
+
const adapter = createRmtNodeSsrAdapter({
|
|
46
|
+
manifest,
|
|
47
|
+
sourceTexts,
|
|
48
|
+
endpointHandlers: {
|
|
49
|
+
'ssr.hero': () => ({
|
|
50
|
+
html: '<x-hero>Hero</x-hero>',
|
|
51
|
+
trustBoundary: 'xtend.security.sanitizing-boundary.v1'
|
|
52
|
+
})
|
|
53
|
+
},
|
|
54
|
+
sanitizeHtmlOutput(html) {
|
|
55
|
+
return html;
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
const result = await adapter.render({
|
|
60
|
+
source,
|
|
61
|
+
filePath: 'app.rmt'
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
for await (const line of adapter.streamJsonl({ source })) {
|
|
65
|
+
process.stdout.write(line);
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
`render(input, options)` akzeptiert `.rmt` Source, RMT vNext Core Documents,
|
|
70
|
+
Prepared Templates und DOM Descriptoren. Im Vollpaket wird die Source-
|
|
71
|
+
Kompilierung automatisch ueber den bestehenden vNext Compiler verdrahtet. Im
|
|
72
|
+
Runtime-only-Paket muss `compileRmtVNextSource` injiziert werden; sonst meldet
|
|
73
|
+
der Adapter `rmt.node_ssr.compiler_required`.
|
|
74
|
+
|
|
75
|
+
## Render-Ergebnis
|
|
76
|
+
|
|
77
|
+
`adapter.render(...)` liefert `xtend.rmt.node-ssr-render-result.v1`:
|
|
78
|
+
|
|
79
|
+
- `html`: serverseitiges Light DOM fuer XTend Custom Elements
|
|
80
|
+
- `head.preloads`: Lazy-Import-Hints aus Component Capabilities
|
|
81
|
+
- `chunks`: `renderman_template_chunk` im bestehenden
|
|
82
|
+
`server_prerender_hydrate`-Shape
|
|
83
|
+
- `hydration`: serialisierbares Payload fuer die Browser-Hydration
|
|
84
|
+
- `streamingContract`: vorhandener `xtend.rmt.vnext-streaming-contract.v1`
|
|
85
|
+
Contract, wenn das Dokument Streaming beschreibt
|
|
86
|
+
- `componentCapabilities`: normalisierte XTend Component Capability Marker
|
|
87
|
+
- `diagnostics`: blockierende und nicht-blockierende Host-Diagnostics
|
|
88
|
+
|
|
89
|
+
## JSONL Streaming
|
|
90
|
+
|
|
91
|
+
`streamJsonl(input, options)` erzeugt newline-delimited JSON Frames mit Schema
|
|
92
|
+
`xtend.rmt.node-ssr-jsonl-frame.v1`.
|
|
93
|
+
|
|
94
|
+
Frame-Typen:
|
|
95
|
+
|
|
96
|
+
- `start`
|
|
97
|
+
- `component`
|
|
98
|
+
- `html`
|
|
99
|
+
- `hydration`
|
|
100
|
+
- `diagnostic`
|
|
101
|
+
- `complete`
|
|
102
|
+
- `error`
|
|
103
|
+
|
|
104
|
+
Jeder Frame traegt `requestId`, `sequence`, `operationId`, `variant`,
|
|
105
|
+
`capability`, `lane`, `chunkKey`, `payload` und `diagnostics`. SSR-Frames
|
|
106
|
+
nutzen `stream.ssr.incremental`; Hydration-Frames nutzen
|
|
107
|
+
`stream.hydration.chunked`.
|
|
108
|
+
|
|
109
|
+
## DataSource Resolver
|
|
110
|
+
|
|
111
|
+
Serverdaten sind immer Host-Verantwortung. Nutze eine der expliziten
|
|
112
|
+
Integrationen:
|
|
113
|
+
|
|
114
|
+
- `resolveDataSource(record, context)`
|
|
115
|
+
- `endpointHandlers[target]`
|
|
116
|
+
- `staticDataSources`
|
|
117
|
+
- `fixtures`
|
|
118
|
+
- `fetchAdapter(record, context)`
|
|
119
|
+
|
|
120
|
+
Wenn ein RMT-Streaming- oder Endpoint-Record keinen Resolver hat, meldet der
|
|
121
|
+
Adapter `rmt.node_ssr.datasource_missing`. Dadurch bleibt der Kernel frei von
|
|
122
|
+
Host-Netzwerkannahmen.
|
|
123
|
+
|
|
124
|
+
## Trust Boundary
|
|
125
|
+
|
|
126
|
+
HTML-Fragmente aus Hosts, Endpoints oder Streaming muessen eine Boundary wie
|
|
127
|
+
`xtend.security.sanitizing-boundary.v1` oder
|
|
128
|
+
`xtend.security.streaming-boundary.v1` tragen. Unsichere URLs, Event-
|
|
129
|
+
Attribute, `srcdoc` und blockierte Tags werden diagnostiziert und vom
|
|
130
|
+
Fallback-Sanitizer entfernt. Produktive Hosts sollten `sanitizeHtmlOutput`
|
|
131
|
+
injizieren.
|
|
132
|
+
|
|
133
|
+
## Gates
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
npm run test:rmt-node-ssr-adapter
|
|
137
|
+
node scripts/run_xtend_tests.js rmt-node-ssr-adapter --json
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
Der Adapter ist Teil des RMT vNext Primitive Gates:
|
|
141
|
+
|
|
142
|
+
```bash
|
|
143
|
+
npm run test:rmt-vnext-primitives:report
|
|
144
|
+
```
|
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
# RMT PHP/Laravel SSR Adapter
|
|
2
|
+
|
|
3
|
+
Der PHP SSR Adapter ist die Laravel-kompatible Host-Schicht fuer RMT vNext.
|
|
4
|
+
Er liegt als portables Single-File-Modul unter
|
|
5
|
+
`xtendrmt/rmt-php-ssr-adapter.php`, benoetigt PHP 8.1+ und hat in diesem Slice
|
|
6
|
+
keine Composer- oder Service-Provider-Pflicht.
|
|
7
|
+
|
|
8
|
+
Schema: `xtend.rmt.php-ssr-adapter.v1`
|
|
9
|
+
|
|
10
|
+
Der Adapter ist auf Client-Wire-Ebene kompatibel mit dem
|
|
11
|
+
[RMT Node SSR Adapter](./rmt-node-ssr-adapter.md). Beide liefern denselben
|
|
12
|
+
Render-Result-, Hydration-, Chunk- und JSONL-Frame-Shape:
|
|
13
|
+
`xtend.rmt.node-ssr-render-result.v1`,
|
|
14
|
+
`xtend.rmt.node-ssr-hydration-payload.v1` und
|
|
15
|
+
`xtend.rmt.node-ssr-jsonl-frame.v1`.
|
|
16
|
+
|
|
17
|
+
## Rolle im Stack
|
|
18
|
+
|
|
19
|
+
RMT beschreibt App Shell, State, DataSources, Surfaces, Events und Lanes. Der
|
|
20
|
+
PHP Adapter materialisiert daraus serverseitiges Light DOM fuer XTend Custom
|
|
21
|
+
Elements und uebergibt Hydration-Daten an die bestehende Browser-Runtime.
|
|
22
|
+
|
|
23
|
+
Der Adapter:
|
|
24
|
+
|
|
25
|
+
- instanziiert keine Custom Elements auf dem Server
|
|
26
|
+
- rendert kein Shadow DOM
|
|
27
|
+
- nutzt keine privaten Component-Maps
|
|
28
|
+
- ist nicht an die Docs-App gekoppelt
|
|
29
|
+
- fuehrt keinen PHP-RMT-Compiler mit
|
|
30
|
+
- akzeptiert DataSources nur ueber explizite Host-Resolver
|
|
31
|
+
|
|
32
|
+
## Public API
|
|
33
|
+
|
|
34
|
+
```php
|
|
35
|
+
require __DIR__ . '/xtendrmt/rmt-php-ssr-adapter.php';
|
|
36
|
+
|
|
37
|
+
$adapter = createRmtPhpSsrAdapter([
|
|
38
|
+
'manifest' => $manifest,
|
|
39
|
+
'endpointHandlers' => [
|
|
40
|
+
'ssr.hero' => fn () => [
|
|
41
|
+
'html' => '<x-hero>Hero</x-hero>',
|
|
42
|
+
'trustBoundary' => 'xtend.security.sanitizing-boundary.v1',
|
|
43
|
+
],
|
|
44
|
+
],
|
|
45
|
+
]);
|
|
46
|
+
|
|
47
|
+
$result = $adapter->render([
|
|
48
|
+
'coreDocument' => $coreDocument,
|
|
49
|
+
]);
|
|
50
|
+
|
|
51
|
+
foreach ($adapter->streamJsonl(['coreDocument' => $coreDocument]) as $line) {
|
|
52
|
+
echo $line;
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
`render($input, $options)` akzeptiert RMT vNext Core Documents, Prepared
|
|
57
|
+
Templates und DOM Descriptoren direkt. `.rmt` Source wird nur verarbeitet, wenn
|
|
58
|
+
ein Host eine `compileRmtVNextSource`-Bridge injiziert. Ohne Bridge meldet der
|
|
59
|
+
Adapter `rmt.php_ssr.compiler_required`.
|
|
60
|
+
|
|
61
|
+
## Laravel Helpers
|
|
62
|
+
|
|
63
|
+
Die Helpers bleiben optional und aktivieren sich nur, wenn Laravel oder
|
|
64
|
+
Symfony Response-Klassen bereits geladen sind:
|
|
65
|
+
|
|
66
|
+
```php
|
|
67
|
+
return $adapter->toLaravelResponse($result);
|
|
68
|
+
|
|
69
|
+
return $adapter->toLaravelStreamedResponse([
|
|
70
|
+
'coreDocument' => $coreDocument,
|
|
71
|
+
]);
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Ohne Framework degradieren die Methoden sauber zu Arrays. Dadurch kann dieselbe
|
|
75
|
+
Adapterdatei in Laravel, kleinen PHP-Hosts und Tests genutzt werden.
|
|
76
|
+
|
|
77
|
+
## Render-Ergebnis
|
|
78
|
+
|
|
79
|
+
`render(...)` liefert ein Array mit:
|
|
80
|
+
|
|
81
|
+
- `schema`: `xtend.rmt.node-ssr-render-result.v1`
|
|
82
|
+
- `adapterSchema`: `xtend.rmt.php-ssr-adapter.v1`
|
|
83
|
+
- `html`: serverseitiges Light DOM fuer XTend Custom Elements
|
|
84
|
+
- `head.preloads`: Lazy-Import-Hints aus Component Capabilities
|
|
85
|
+
- `chunks`: `renderman_template_chunk` im `server_prerender_hydrate`-Shape
|
|
86
|
+
- `response`: `renderman_template_prerender_response`
|
|
87
|
+
- `hydration`: `xtend.rmt.node-ssr-hydration-payload.v1`
|
|
88
|
+
- `streamingContract`: `xtend.rmt.vnext-streaming-contract.v1`, falls das
|
|
89
|
+
Dokument Streaming beschreibt
|
|
90
|
+
- `componentCapabilities`: Marker fuer XTend Component Tags
|
|
91
|
+
- `diagnostics`: PHP-spezifische Diagnostics unter `rmt.php_ssr.*`
|
|
92
|
+
|
|
93
|
+
## JSONL Streaming
|
|
94
|
+
|
|
95
|
+
`streamJsonl(...)` erzeugt newline-delimited JSON Frames mit
|
|
96
|
+
`xtend.rmt.node-ssr-jsonl-frame.v1`.
|
|
97
|
+
|
|
98
|
+
Frame-Typen:
|
|
99
|
+
|
|
100
|
+
- `start`
|
|
101
|
+
- `component`
|
|
102
|
+
- `html`
|
|
103
|
+
- `hydration`
|
|
104
|
+
- `diagnostic`
|
|
105
|
+
- `complete`
|
|
106
|
+
- `error`
|
|
107
|
+
|
|
108
|
+
Jeder Frame traegt `requestId`, `sequence`, `operationId`, `variant`,
|
|
109
|
+
`capability`, `lane`, `chunkKey`, `payload` und `diagnostics`. SSR-Frames
|
|
110
|
+
nutzen `stream.ssr.incremental`; Hydration-Frames nutzen
|
|
111
|
+
`stream.hydration.chunked`.
|
|
112
|
+
|
|
113
|
+
## DataSources und Security
|
|
114
|
+
|
|
115
|
+
Serverdaten sind Host-Verantwortung. Der Adapter nutzt nur explizite Resolver:
|
|
116
|
+
|
|
117
|
+
- `resolveDataSource`
|
|
118
|
+
- `endpointHandlers`
|
|
119
|
+
- `staticDataSources`
|
|
120
|
+
- `fixtures`
|
|
121
|
+
- `fetchAdapter`
|
|
122
|
+
- `laravelContainerResolver`
|
|
123
|
+
|
|
124
|
+
HTML-Fragmente brauchen eine Trust Boundary wie
|
|
125
|
+
`xtend.security.sanitizing-boundary.v1` oder
|
|
126
|
+
`xtend.security.streaming-boundary.v1`. Der eingebaute Fallback-Sanitizer
|
|
127
|
+
blockt Event-Attribute, `srcdoc`, unsichere URLs und Script-/Frame-/Object-
|
|
128
|
+
Tags. Produktive Hosts koennen `sanitizeHtmlOutput` injizieren.
|
|
129
|
+
|
|
130
|
+
## Docs-App Integration
|
|
131
|
+
|
|
132
|
+
Die Docs-App nutzt den Adapter nun direkt in `docs/index.php` fuer
|
|
133
|
+
Shell-first-Prehydration.
|
|
134
|
+
|
|
135
|
+
- Contract: `xtend.docs.php-ssr-prehydration.v1`
|
|
136
|
+
- vNext Source: `docs/xtendrmt-docs-shell-vnext.rmt`
|
|
137
|
+
- Compiler-Bridge: `scripts/compile_rmt_vnext_bridge.js`
|
|
138
|
+
- JSONL Endpoint:
|
|
139
|
+
`index.php?xtend-docs-rmt-ssr=shell&format=jsonl&page={slug}&locale={locale}`
|
|
140
|
+
|
|
141
|
+
Der Host injiziert `compileRmtVNextSource` ueber die Node-Bridge, rendert die
|
|
142
|
+
Root-Shell als RMT DOM Descriptor und exposes `window.xtendDocsSsrPrehydration`
|
|
143
|
+
mit Hydration, Chunks und Diagnostics. Parsedown bleibt Host-Boundary und
|
|
144
|
+
fuellt weiterhin nur den Content-Slot.
|
|
145
|
+
|
|
146
|
+
## Gates
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
npm run test:rmt-php-ssr-adapter
|
|
150
|
+
npm run test:docs-php-ssr-prehydration
|
|
151
|
+
node scripts/run_xtend_tests.js rmt-php-ssr-adapter --json
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Empfohlene Regression:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
node scripts/run_xtend_tests.js rmt-php-ssr-adapter rmt-node-ssr-adapter rmt-vnext-streaming rmt-vnext-component-primitives type-exports-rmt --json
|
|
158
|
+
```
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# RMT State Selector Runtime
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic18.rmt-state-selector-runtime.v1`
|
|
4
|
+
- Fixture: `tests/fixtures/rmt-state-selector-runtime.rmt`
|
|
5
|
+
- Runtime: `xtendrmt/rmt-state-selector-runtime.js`
|
|
6
|
+
- Types: `xtendrmt/rmt-state-selector-runtime.d.ts`
|
|
7
|
+
- Local Gate: `node scripts/run_xtend_tests.js rmt-state-selector-runtime --json`
|
|
8
|
+
- Workpackage: `WP-E18-07`
|
|
9
|
+
|
|
10
|
+
Die State Selector Runtime macht App-Zustand fuer RMT Templates deklarativ
|
|
11
|
+
nutzbar. Sie definiert typisierte State Records, wertet Selectors und derived
|
|
12
|
+
Values aus, dispatcht Reducer-Commands und erzeugt ein Render-Context-Model fuer
|
|
13
|
+
den DOM Descriptor Renderer aus `WP-E18-05`/`WP-E18-06`.
|
|
14
|
+
|
|
15
|
+
## Primitives
|
|
16
|
+
|
|
17
|
+
| Primitive | Zweck |
|
|
18
|
+
|-----------|-------|
|
|
19
|
+
| `state` | typisierte App-Zustaende wie Collection, Selection, Filter, UI und Loading |
|
|
20
|
+
| `selector` | abgeleitete, wiederverwendbare Sichten auf State, zum Beispiel gefilterte Listen |
|
|
21
|
+
| `derive` | einzelne derived Values wie Selection Count oder Detail Label |
|
|
22
|
+
| `reducer` | Command-getriebene State-Aenderungen ohne produktlokale Mini-Frameworks |
|
|
23
|
+
| `xstateBridge` | injizierte Host-Bridge zu `xstate`, ohne Runtime-Import |
|
|
24
|
+
| `preservePatchPlan` | unterscheidet strukturelle Rerenders von Attribut-/Component-State-Sync |
|
|
25
|
+
| `stateBindings` | aktualisiert Attribute, Klassen und Properties bestehender DOM-Knoten |
|
|
26
|
+
|
|
27
|
+
## Preserve-Regeln
|
|
28
|
+
|
|
29
|
+
States mit `preserve: "attribute-sync"` oder `preserve: "component-state"`
|
|
30
|
+
duerfen DOM-Inseln erhalten. Selection- oder UI-Aenderungen koennen dadurch
|
|
31
|
+
Attribute wie `aria-selected`, Klassen wie `is-selected` oder Component
|
|
32
|
+
Properties synchronisieren, ohne Listen neu zu materialisieren.
|
|
33
|
+
|
|
34
|
+
Strukturelle Selectors, zum Beispiel `selector.filtered-items`, duerfen dagegen
|
|
35
|
+
einen Rerender anfordern. Filter- oder Collection-Aenderungen bleiben dadurch
|
|
36
|
+
korrekt, waehrend reine Selection-Aenderungen Fokus, Scroll und Component
|
|
37
|
+
Instanzen erhalten koennen.
|
|
38
|
+
|
|
39
|
+
## XState Boundary
|
|
40
|
+
|
|
41
|
+
Die Runtime importiert `xstate` nicht. Host-Code kann ein kompatibles Ziel mit
|
|
42
|
+
`set`, `setState`, `get`, `getState` oder `subscribe` injizieren. Die Bridge
|
|
43
|
+
spiegelt State-, Selector- und Derived-Keys in dieses Ziel, bleibt aber auch mit
|
|
44
|
+
einem internen Snapshot lauffaehig.
|
|
45
|
+
|
|
46
|
+
`WP-E18-08` kann darauf Actions, Effects, DataSources und Resource Runtime
|
|
47
|
+
aufbauen.
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# RMT Surface Resource Graph Runtime
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic18.rmt-surface-resource-graph-runtime.v1`
|
|
4
|
+
- Gate: `node scripts/run_xtend_tests.js rmt-surface-resource-graph-runtime --json`
|
|
5
|
+
- Workpackage: `WP-E18-10`
|
|
6
|
+
- Handoff: `WP-E18-11`
|
|
7
|
+
|
|
8
|
+
## Ziel
|
|
9
|
+
|
|
10
|
+
Die Surface Resource Graph Runtime macht dynamische App-Layouts in RMT als
|
|
11
|
+
generische Plattformfaehigkeit modellierbar. Entwickler koennen eigene
|
|
12
|
+
Surface-Modelle aus beliebigen Records erzeugen, Bounds und Fokus verwalten,
|
|
13
|
+
Overlays ueber Portale stapeln und instanzgebundene Ressourcen aufraeumen,
|
|
14
|
+
ohne eine produktlokale Registry oder Shell-spezifische Repaint-Logik zu
|
|
15
|
+
schreiben.
|
|
16
|
+
|
|
17
|
+
Der Media Manager bleibt dabei nur Proof-of-Need. Die Runtime kennt keine
|
|
18
|
+
Produkt-Surface-Liste und importiert keine XTend-Komponenten.
|
|
19
|
+
|
|
20
|
+
## Keyed Surface Repeater
|
|
21
|
+
|
|
22
|
+
`surface` Definitionen koennen `source`, `repeat` und `key` deklarieren. Die
|
|
23
|
+
Runtime erzeugt daraus stabile Surface-Instanzen wie
|
|
24
|
+
`surface.workspace:alpha`. Beim erneuten Materialisieren mit denselben Keys
|
|
25
|
+
bleiben Runtime-Zustand, Bounds, Fokusreihenfolge, Ressourcenstatus und
|
|
26
|
+
Persistenzdaten erhalten.
|
|
27
|
+
|
|
28
|
+
Wichtige Operationen:
|
|
29
|
+
|
|
30
|
+
- `materialize(recordsBySource)`: erzeugt oder reused Surface-Instanzen.
|
|
31
|
+
- `openSurface(id)`: oeffnet eine Instanz und uebernimmt ihre Ressourcen.
|
|
32
|
+
- `minimizeSurface(id)`: minimiert, ohne DOM- oder Ressourcenstatus zu
|
|
33
|
+
verwerfen.
|
|
34
|
+
- `restoreSurface(id)`: stellt Bounds und offenen Zustand wieder her.
|
|
35
|
+
- `closeSurface(id)`: schliesst nach Policy, ohne zwingend zu zerstoeren.
|
|
36
|
+
- `destroySurface(id)`: gibt instanzgebundene Ressourcen frei und trennt den
|
|
37
|
+
Event-Owner.
|
|
38
|
+
|
|
39
|
+
## Portal Layer Stack
|
|
40
|
+
|
|
41
|
+
Portale beschreiben Layer- und Policy-Grenzen fuer Tooltips, Toasts, Popovers,
|
|
42
|
+
Lightboxes, Menus, Dialoge und weitere Overlay-Arten. `openOverlay` legt
|
|
43
|
+
Overlay-Instanzen in ihrem Portal ab und vergibt eine stabile Stack-Reihenfolge
|
|
44
|
+
ueber `zIndexStart` und `zStep`. `closeTopOverlay` schliesst den obersten
|
|
45
|
+
dismissible Overlay-Eintrag pro Portal oder global.
|
|
46
|
+
|
|
47
|
+
Die Portal-Policy ist generisch:
|
|
48
|
+
|
|
49
|
+
- `stacked` fuer normale App-Flächen.
|
|
50
|
+
- `modal` und `nonmodal` fuer blockierende und nicht blockierende Overlays.
|
|
51
|
+
- `toast-region` fuer Feedback-Layer.
|
|
52
|
+
- `clipping-escape` fuer Viewport-feste Layer wie Tooltips.
|
|
53
|
+
|
|
54
|
+
## Resource Ownership
|
|
55
|
+
|
|
56
|
+
Ressourcen werden ueber den WP-E18-08 Resource Manager injiziert. Die Surface
|
|
57
|
+
Runtime besitzt keine eigenen Adapter, sondern ruft `acquireMany` und
|
|
58
|
+
`releaseOwner` pro Surface- oder Overlay-Instanz auf.
|
|
59
|
+
|
|
60
|
+
Dadurch gelten klare Regeln:
|
|
61
|
+
|
|
62
|
+
- Minimize erhaelt Ressourcen und Component-State.
|
|
63
|
+
- Close kann Ressourcen optional freigeben.
|
|
64
|
+
- Destroy gibt Ressourcen der betroffenen Instanz frei.
|
|
65
|
+
- Overlay-Close gibt Overlay-Ressourcen frei.
|
|
66
|
+
- Destroy einer Surface ruft zusaetzlich `eventRuntime.detachOwner(owner)` auf.
|
|
67
|
+
|
|
68
|
+
## Persistenz
|
|
69
|
+
|
|
70
|
+
`persistSnapshot` liefert einen Snapshot mit Surface-Zustand, Bounds, Fokus,
|
|
71
|
+
offenen Overlays und Portal-Metadaten. Ein optionaler Persistence Adapter kann
|
|
72
|
+
diesen Snapshot speichern. `hydrateSnapshot` spielt ihn spaeter in bereits
|
|
73
|
+
materialisierte Instanzen zurueck.
|
|
74
|
+
|
|
75
|
+
## Grenzen
|
|
76
|
+
|
|
77
|
+
- Keine Produkt-Surface-Taxonomie als Framework-Default.
|
|
78
|
+
- Keine produktlokale Registry-Repaint-Pflicht.
|
|
79
|
+
- Keine XTend-Component-Imports im RMT Kernel.
|
|
80
|
+
- Normale UI bleibt bei DOM Descriptoren und Component Templates; HTML-String-
|
|
81
|
+
Renderer bleiben eine separate Trusted-DOM-Grenze.
|
|
82
|
+
|
|
83
|
+
## Gates
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
node scripts/run_xtend_tests.js rmt-surface-resource-graph-runtime --json
|
|
87
|
+
node scripts/run_xtend_tests.js rmt-app-platform-authoring rmt-dom-descriptor-renderer rmt-component-template-primitives rmt-state-selector-runtime rmt-action-effect-runtime rmt-event-routing-runtime rmt-surface-resource-graph-runtime --json
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
`WP-E18-11` erweitert darauf aufbauend Scaffold, Linter, LSP und Diagnostics,
|
|
91
|
+
damit Surface-, Overlay-, Portal- und Resource-Graphen schon beim Authoring
|
|
92
|
+
sichtbar und pruefbar werden.
|