@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,56 @@
|
|
|
1
|
+
# Release Owner Acceptance
|
|
2
|
+
|
|
3
|
+
`xtend.epic13.release-owner-acceptance.v1` beschreibt den ersten RC1-Owner-Schnitt nach dem RC1 Readiness Model.
|
|
4
|
+
|
|
5
|
+
Lokaler Gate:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
node scripts/run_xtend_tests.js epic13-release-owner-acceptance --json
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
oder:
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npm run test:epic13-release-owner-acceptance
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Was der Contract festlegt
|
|
18
|
+
|
|
19
|
+
- Release Owner Acceptance ist ein Review-Contract, keine Publish-Freigabe.
|
|
20
|
+
- `private-until-release-owner-acceptance` bleibt aktiv.
|
|
21
|
+
- `publishAllowed` bleibt `false`.
|
|
22
|
+
- `automaticPublishApproval` bleibt `false`.
|
|
23
|
+
- Owner-Entscheidungen nutzen `accepted`, `deferred` und `blocked`.
|
|
24
|
+
|
|
25
|
+
## Checklist-Modell
|
|
26
|
+
|
|
27
|
+
| Status | Verwendung |
|
|
28
|
+
|--------|------------|
|
|
29
|
+
| `accepted` | Baseline ist als Review-Grundlage angenommen |
|
|
30
|
+
| `deferred` | Offene Evidenz ist sichtbar und besitzt ein Zielpaket |
|
|
31
|
+
| `blocked` | Entscheidung darf nicht automatisch erfolgen |
|
|
32
|
+
|
|
33
|
+
Der bewusst blockierte Eintrag ist `automatic-publish-approval`. Damit bleibt ein gruener Testlauf ein Review-Signal, aber kein Publish-Signal.
|
|
34
|
+
|
|
35
|
+
## Aktueller Handoff
|
|
36
|
+
|
|
37
|
+
`WP-E13-03` hat die Conditional Network Gate Evidence unter [Conditional Network Evidence](./conditional-network-evidence.md) mit `xtend.epic13.conditional-network-evidence.v1` vorbereitet:
|
|
38
|
+
|
|
39
|
+
- `npm audit --audit-level=moderate`
|
|
40
|
+
- `npm sbom --sbom-format=cyclonedx --json`
|
|
41
|
+
|
|
42
|
+
Wenn diese Gates lokal wegen Sandbox, Netzwerk oder Policy nicht laufen koennen, entsteht eine strukturierte Owner-Deferral.
|
|
43
|
+
|
|
44
|
+
`WP-E13-04` hat den [Package Export Lock](./package-export-lock.md) mit `xtend.epic13.package-export-lock.v1` abgeschlossen. `WP-E13-05` hat die [Known Residual Triage](./known-residual-triage.md) mit `xtend.epic13.known-residual-triage.v1` abgeschlossen. `WP-E13-06` hat die [Hydration Performance Closure](./hydration-performance-closure.md) mit `xtend.epic13.hydration-performance-closure.v1` abgeschlossen. `WP-E13-07` hat die [PROD Browser CSP Smokes](./prod-browser-csp-smokes.md) mit `xtend.epic13.prod-browser-csp-smoke.v1` abgeschlossen. `WP-E13-08` hat [Visual Owner Artifacts](./visual-owner-artifacts.md) mit `xtend.epic13.visual-owner-artifact.v1` normalisiert.
|
|
45
|
+
|
|
46
|
+
Der Checklist-Eintrag `known-residual-renewal` ist damit `accepted`: `xstate` und `x-utils` sind Boundary-Contracts, `xtend.component.hydrate` ist owner-frei geschlossen. Der Checklist-Eintrag `visual-owner-artifact` ist `accepted`; `rmt-production-readiness` ist seit `WP-E13-09` und `xtend.epic13.rmt-production-readiness.v1` ebenfalls `accepted`. `docs-rmt-production-hardening` ist seit `WP-E13-10` und `xtend.epic13.docs-rmt-production-hardening.v1` accepted. `prod-browser-csp-smoke` und `trusted-dom-boundary` sind seit `WP-E13-11` accepted; die Trusted-DOM-Evidence liegt unter [Trusted DOM Boundary Browser Proof](./trusted-dom-boundary-browser-proof.md) und `xtend.epic13.trusted-dom-boundary.v1`. `rc1-migration-notes` ist seit `WP-E13-12` accepted; die Evidence liegt unter [RC1 Migration Notes](./rc1-migration-notes.md) und `xtend.epic13.rc1-migration-notes-semver.v1`. `rc1-gate-matrix-ci-handoff` ist seit `WP-E13-13` accepted; die Evidence liegt unter [RC1 Gate Matrix und CI-Handoff](./rc1-gate-matrix-ci-handoff.md) und `xtend.epic13.rc1-gate-matrix-ci-handoff.v1`. Der naechste Handoff geht nach `WP-E13-14`.
|
|
47
|
+
|
|
48
|
+
Weiterfuehrend: [RC1 Readiness](./rc1-readiness.md).
|
|
49
|
+
|
|
50
|
+
## RC1 Test-Build Acceptance
|
|
51
|
+
|
|
52
|
+
`RC1TB-WP-08` konkretisiert den Owner-Schnitt fuer den ersten lokalen RC1-Test-Build in `development/XTend-RC1-Test-Build-Owner-Acceptance.md` unter `xtend.rc1.test-build-owner-acceptance.v1`.
|
|
53
|
+
|
|
54
|
+
Die Entscheidung fuer diesen Schnitt lautet `accepted-for-internal-test-build-not-publish`: Der Test-Build darf intern gegen die dokumentierten Gate-Reports, die RMT vNext Reference Demo und die XTendRMT Bestcase Demo verwendet werden. `npm-audit-moderate` und `npm-sbom-json` sind im Owner-Publish-Schritt ausgefuehrt und akzeptiert; Version `0.1.0-rc.1` und `private: false` sind fuer Publish Prep gesetzt, `automaticPublishApproval: false` bleibt aktiv.
|
|
55
|
+
|
|
56
|
+
Der separate Owner-Publish-Entscheid ist in `development/XTend-RC1-Release-Owner-Publish-Decision.md` unter `xtend.rc1.release-owner-publish-decision.v1` angelegt. Sein aktueller Zustand ist `accepted-for-publish-prep`; der eigentliche Publish-Befehl wurde nicht ausgefuehrt. Die License-Entscheidung fuer den kompletten Stack ist `Apache-2.0`; Audit und SBOM sind akzeptiert.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# Release Report und Pack Dry Run Evidence
|
|
2
|
+
|
|
3
|
+
Contract: `xtend.epic13.release-report-pack-dry-run-evidence.v1`
|
|
4
|
+
|
|
5
|
+
Status: `accepted-release-report-pack-dry-run-evidence`
|
|
6
|
+
|
|
7
|
+
Workpackage: `DPF-WP-02-release-report-pack-dry-run`
|
|
8
|
+
|
|
9
|
+
## Ziel
|
|
10
|
+
|
|
11
|
+
Dieses Paket macht `release:report` und `pack:dry-run` zu reproduzierbarer Release-Owner-Evidence. Beide Befehle bleiben lokal und netzwerkfrei; Audit/SBOM, Public Publish und License-Entscheidung bleiben Folgepakete.
|
|
12
|
+
|
|
13
|
+
## Lokaler Gate
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
node scripts/run_xtend_tests.js epic13-release-report-pack-dry-run-evidence --json
|
|
17
|
+
npm run test:epic13-release-report-pack-dry-run-evidence
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
## Evidence-Befehle
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npm run release:report
|
|
24
|
+
npm run pack:dry-run
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
`npm run release:report` schreibt `.xtend-test-results/xtend-release-report.json`.
|
|
28
|
+
|
|
29
|
+
`npm run pack:dry-run` schreibt:
|
|
30
|
+
|
|
31
|
+
- `.xtend-test-results/xtend-pack-dry-run.json`
|
|
32
|
+
- `.xtend-test-results/xtend-package-export-surface-lock.json`
|
|
33
|
+
- `.xtend-test-results/xtend-package-export-lock-report.json`
|
|
34
|
+
|
|
35
|
+
Der rohe npm-Textlauf bleibt ueber `npm run pack:dry-run:raw` erreichbar.
|
|
36
|
+
|
|
37
|
+
## RC1-Handoff
|
|
38
|
+
|
|
39
|
+
Die Evidence wird im RC1-Handoff unter `xtend.epic13.rc1-gate-matrix-ci-handoff.v1` referenziert. Der DPF-WP-02-Report nutzt `.xtend-test-results/xtend-epic13-release-report-pack-dry-run-evidence-report.json` und uebergibt an `DPF-WP-03` [Conditional Network Evidence CI](./conditional-network-evidence-ci.md) mit `xtend.epic13.conditional-network-evidence-ci.v1`.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# RMT Action Effect Runtime
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic18.rmt-action-effect-runtime.v1`
|
|
4
|
+
- Workpackage: `WP-E18-08`
|
|
5
|
+
- Runtime: `xtendrmt/rmt-action-effect-runtime.js`
|
|
6
|
+
- Types: `xtendrmt/rmt-action-effect-runtime.d.ts`
|
|
7
|
+
- Fixture: `tests/fixtures/rmt-action-effect-runtime.rmt`
|
|
8
|
+
- Lokaler Gate: `node scripts/run_xtend_tests.js rmt-action-effect-runtime --json`
|
|
9
|
+
- Naechstes Paket: `WP-E18-09`
|
|
10
|
+
|
|
11
|
+
## Zweck
|
|
12
|
+
|
|
13
|
+
Die Action Effect Runtime macht haeufige App-Flows zu nativen RMT-App-Platform-Primitives. Apps koennen Fixture-, REST-, SSR- oder Host-Adapter-Daten laden, typisierten State aktualisieren, Feedback veroeffentlichen, navigieren, Controls fokussieren, Module lazy laden und Ressourcen besitzen, ohne produktlokale Action-Frameworks aufzubauen.
|
|
14
|
+
|
|
15
|
+
Die Runtime ist bewusst domain-neutral. Sie definiert keine Produktsurfaces und keine Record-Taxonomien. Entwickler liefern ihre eigenen Actions, Contracts, Adapter, Effects und Resources.
|
|
16
|
+
|
|
17
|
+
## DataSources
|
|
18
|
+
|
|
19
|
+
Unterstuetzte Datasource-Arten:
|
|
20
|
+
|
|
21
|
+
- `fixture`: liefert statische Fixture-Records fuer lokale App-Fixtures und Tests.
|
|
22
|
+
- `rest`: ruft einen injizierten Adapter mit Endpoint und Payload auf.
|
|
23
|
+
- `ssr`: liest ein vorhydriertes Payload und kann es mit `resultPath` projizieren.
|
|
24
|
+
- `host`: ruft einen expliziten Host-Adapter fuer Mutationen oder Plattformkommandos auf.
|
|
25
|
+
|
|
26
|
+
Runtime-Code greift niemals direkt auf globale Netzwerk-APIs zu. REST und Host laufen ueber injizierte Adapter, damit Browser-, Server-, Test- und Shell-Umgebungen ihre eigene Transport-Policy waehlen koennen.
|
|
27
|
+
|
|
28
|
+
## Actions
|
|
29
|
+
|
|
30
|
+
Eine Action kann deklarieren:
|
|
31
|
+
|
|
32
|
+
- `datasource`
|
|
33
|
+
- `resultState`
|
|
34
|
+
- `loadingState`
|
|
35
|
+
- `statusState`
|
|
36
|
+
- `effects`
|
|
37
|
+
- `resources`
|
|
38
|
+
- `resourceOwner`
|
|
39
|
+
- `cancelable`
|
|
40
|
+
|
|
41
|
+
`runAction(id, payload)` fuehrt die Action durch Loading-, Success-, Error- oder Cancelled-Zustaende. Wenn eine typed State Runtime uebergeben wird, werden Loading und Status ueber `setState` und `patchState` geschrieben; Datasource-Ergebnisse koennen in `resultState` gespeichert werden.
|
|
42
|
+
|
|
43
|
+
## Effects
|
|
44
|
+
|
|
45
|
+
Unterstuetzte Effect-Arten:
|
|
46
|
+
|
|
47
|
+
- `toast` und `feedback`
|
|
48
|
+
- `navigation`
|
|
49
|
+
- `focus`
|
|
50
|
+
- `lazy-import`
|
|
51
|
+
- `side-effect`
|
|
52
|
+
|
|
53
|
+
Feedback, Navigation, Focus und eigene Side Effects nutzen injizierte Adapter. Lazy Imports werden als Ressourcen modelliert und koennen dadurch dasselbe Ownership- und Cleanup-Modell wie andere Runtime-Ressourcen teilen.
|
|
54
|
+
|
|
55
|
+
## Resource Ownership
|
|
56
|
+
|
|
57
|
+
Unterstuetzte Resource-Arten:
|
|
58
|
+
|
|
59
|
+
- `object-url`
|
|
60
|
+
- `stream`
|
|
61
|
+
- `observer`
|
|
62
|
+
- `timer`
|
|
63
|
+
- `lazy-import`
|
|
64
|
+
|
|
65
|
+
Ressourcen werden unter einem Owner erworben, normalerweise der Action-ID. Der Resource Manager stellt `releaseOwner(ownerId)` bereit, damit Surface-Destroy, Render-Unit-Destroy oder Action-Cancel nur die Ressourcen bereinigen, die ihnen gehoeren.
|
|
66
|
+
|
|
67
|
+
## Diagnostics
|
|
68
|
+
|
|
69
|
+
Die Runtime emittiert Diagnostics mit `xtend.epic18.rmt-action-effect-diagnostic.v1` auf dem Channel `rmt.app_platform.action_effect`. Loading, Success, Error und Cancel sind in der lokalen Runtime-History und in einem optionalen Diagnostics Hub sichtbar.
|
|
70
|
+
|
|
71
|
+
## Boundaries
|
|
72
|
+
|
|
73
|
+
- Der RMT-Kernel importiert keine XTend-UI-Komponenten.
|
|
74
|
+
- Datenzugriff laeuft ueber injizierte Adapter.
|
|
75
|
+
- Produktlokale Action-Frameworks sind nicht Teil des Plattformvertrags.
|
|
76
|
+
- Produkt-Flow-Namen bleiben App-Code, nicht Framework-Defaults.
|
|
77
|
+
- Normale App-UI nutzt weiterhin RMT-Templates und DOM-Descriptors statt HTML-String-Renderern.
|
|
78
|
+
|
|
79
|
+
## Handoff
|
|
80
|
+
|
|
81
|
+
`WP-E18-09` baut auf dieser Runtime auf, indem deklarative DOM- und Custom Events an Actions angeschlossen werden. Die Event-Schicht soll die Action Effect Runtime wiederverwenden, statt einen weiteren Action-Ausfuehrungspfad zu erzeugen.
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
# RMT App Platform Authoring
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic18.rmt-app-platform-authoring.v1`
|
|
4
|
+
- Fixture: `tests/fixtures/rmt-app-platform-authoring.rmt`
|
|
5
|
+
- Local Gate: `node scripts/run_xtend_tests.js rmt-app-platform-authoring --json`
|
|
6
|
+
- Workpackage: `WP-E18-04`
|
|
7
|
+
|
|
8
|
+
## Zweck
|
|
9
|
+
|
|
10
|
+
Dieses Authoring-Modell definiert RMT als generische App Platform. Es ist keine
|
|
11
|
+
Portierung einer konkreten Produktoberflaeche. Entwickler koennen eigene
|
|
12
|
+
App-Domains, Record-Vertraege, Komponentenfamilien, Surfaces, State-Graphen,
|
|
13
|
+
Actions, DataSources, Resources und Events kombinieren.
|
|
14
|
+
|
|
15
|
+
## Primitives
|
|
16
|
+
|
|
17
|
+
| Primitive | Zweck |
|
|
18
|
+
|-----------|-------|
|
|
19
|
+
| `app` | App-Metadaten, Shell, Domain, Record-Contract und Einstiegspunkte |
|
|
20
|
+
| `route` | URL- oder Navigationszustand auf Surface und Template mappen |
|
|
21
|
+
| `surface` | keyed App-Bereiche mit Lifecycle, Placement, State und Persistence |
|
|
22
|
+
| `slot` | benannte Kompositionspunkte zwischen Templates und Komponenten |
|
|
23
|
+
| `template` | strukturierte UI als DOM Descriptor, nicht als HTML-String |
|
|
24
|
+
| `component` | beliebige Custom Elements ueber einen Faehigkeitskatalog binden |
|
|
25
|
+
| `state` | typed App-State fuer Collections, Auswahl, Filter und Formwerte |
|
|
26
|
+
| `selector` | abgeleitete Lesesichten auf State |
|
|
27
|
+
| `derive` | computed Values mit klarem Output-Typ |
|
|
28
|
+
| `repeat` | keyed Listen ohne Produkt-Renderer |
|
|
29
|
+
| `when` | deklarative Bedingungen, Empty- und Fallback-Zustaende |
|
|
30
|
+
| `bind` | State, Selectors oder Derived Values auf Attribute/Properties mappen |
|
|
31
|
+
| `action` | deklarative Commands fuer App-Flows |
|
|
32
|
+
| `effect` | async Ausfuehrung mit Lanes und Feedback |
|
|
33
|
+
| `datasource` | Fixture-, REST-, SSR- oder spaetere Host-Datenadapter |
|
|
34
|
+
| `resource` | lazy/preload/cleanup Ressourcen inklusive Trusted-HTML-Sonderfall |
|
|
35
|
+
| `event` | scoped Event-Routing ohne impliziten globalen Event-Bus |
|
|
36
|
+
|
|
37
|
+
## Boundaries
|
|
38
|
+
|
|
39
|
+
- `no-media-manager-product-surface-clone`
|
|
40
|
+
- `no-product-record-contract-required`
|
|
41
|
+
- `structured-ui-before-trusted-html`
|
|
42
|
+
- `trusted-html-explicit-boundary-only`
|
|
43
|
+
- `no-rmt-kernel-import-of-xtend-types`
|
|
44
|
+
- `no-external-innerhtml-helper-required`
|
|
45
|
+
|
|
46
|
+
Normale App-UI muss ueber strukturierte Templates modellierbar sein. HTML bleibt
|
|
47
|
+
eine explizite Trusted-DOM-Boundary fuer Sonderfaelle und ist nicht der
|
|
48
|
+
Standardweg fuer Komponentenentwicklung.
|
|
49
|
+
|
|
50
|
+
## Handoff
|
|
51
|
+
|
|
52
|
+
`WP-E18-04` legt nur das Authoring-Modell fest. `WP-E18-05` baut danach den
|
|
53
|
+
sicheren DOM Descriptor Renderer und den No-Manual-HTML-Gate. `WP-E18-06`
|
|
54
|
+
setzt darauf die component-nativen Template Primitives um.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# RMT App Platform Fixture
|
|
2
|
+
|
|
3
|
+
WP-E18-12 liefert die generische Referenz-Fixture fuer die RMT App Platform.
|
|
4
|
+
Sie beweist, dass die Epic-18-Primitives nicht an eine Produktoberflaeche
|
|
5
|
+
gekoppelt sind: dieselben RMT-Bausteine tragen einen `generic-catalog`, eine
|
|
6
|
+
`admin-queue` und ein `content-board`.
|
|
7
|
+
|
|
8
|
+
## Vertrag
|
|
9
|
+
|
|
10
|
+
- Schema: `xtend.epic18.rmt-app-platform-fixture.v1`
|
|
11
|
+
- Fixture Schema: `xtend.epic18.rmt-app-platform-fixture-source.v1`
|
|
12
|
+
- Lokaler Gate: `node scripts/run_xtend_tests.js rmt-app-platform-fixture --json`
|
|
13
|
+
- Package Script: `npm run test:rmt-app-platform-fixture`
|
|
14
|
+
- Handoff: `WP-E18-13`
|
|
15
|
+
|
|
16
|
+
## Abgedeckte Plattformfaehigkeiten
|
|
17
|
+
|
|
18
|
+
- konfigurierbare Record-Contracts ohne feste Record-Klasse
|
|
19
|
+
- Listen-, Detail-, Toolbar-, Feedback- und Overlay-Komposition mit DOM
|
|
20
|
+
Descriptor Templates
|
|
21
|
+
- Actions mit Fixture-, REST-, SSR- und Host-DataSources
|
|
22
|
+
- Feedback-, Navigation-, Focus-, Lazy-Import- und Side-Effect-Flows
|
|
23
|
+
- dynamische Surfaces fuer mehrere Domains aus denselben Primitives
|
|
24
|
+
- Portals und Overlays inklusive Stack-Verhalten
|
|
25
|
+
- Resource Ownership und Cleanup fuer Streams, Observer, Timer, Object URLs und
|
|
26
|
+
Lazy Imports
|
|
27
|
+
- Scaffold Build Evidence ueber den RMT App Platform Generator
|
|
28
|
+
|
|
29
|
+
## Grenzen
|
|
30
|
+
|
|
31
|
+
Normale RMT UI bleibt deklarativ. `innerHTML`, `outerHTML`,
|
|
32
|
+
`insertAdjacentHTML` und `document.write` gehoeren nicht in die App-Fixture;
|
|
33
|
+
der No-Manual-HTML-Gate prueft das explizit. Produktgebundene Surface-Listen
|
|
34
|
+
werden ebenfalls vermieden. Entwickler sollen in XTend App-Strukturen bauen
|
|
35
|
+
koennen, ohne externe Shell-Renderer oder lokale Registry-Umbauten zu brauchen.
|
|
36
|
+
|
|
37
|
+
## Fixture-Artefakte
|
|
38
|
+
|
|
39
|
+
- `catalog/epic18-rmt-app-platform-fixture.js`
|
|
40
|
+
- `tests/fixtures/rmt-app-platform-fixture.rmt`
|
|
41
|
+
- `tests/rmt/rmt_app_platform_fixture_suite.js`
|
|
42
|
+
- `development/WP-E18-12-Generische-RMT-App-Platform-Fixture-bauen.md`
|
|
43
|
+
|
|
44
|
+
Der Gate rendert die Fixture mit dem DOM Descriptor Renderer, routet Events in
|
|
45
|
+
Actions, tauscht DataSources, materialisiert Surfaces, oeffnet Overlays und
|
|
46
|
+
belegt Cleanup durch Resource-Disposals.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# RMT App Platform Migration Guide
|
|
2
|
+
|
|
3
|
+
Dieser Guide beschreibt den Weg von externen Host-Hilfen wie
|
|
4
|
+
`root.innerHTML`, produktgebundenen Surface-Listen oder lokalen Registry-
|
|
5
|
+
Repaints hin zu nativen RMT-App-Platform-Primitives.
|
|
6
|
+
|
|
7
|
+
## Zielbild
|
|
8
|
+
|
|
9
|
+
- Neue UI wird in RMT vNext beschrieben; DOM Descriptor, App-Platform-JSON und
|
|
10
|
+
Component Records sind generierter Output oder Compatibility Mirror.
|
|
11
|
+
- State, Selectors und Derived Values liegen in der RMT State Selector Runtime.
|
|
12
|
+
- Interaktionen laufen ueber deklarative Events und Actions.
|
|
13
|
+
- DataSources bleiben austauschbar: `fixture`, `rest`, `ssr` und `host`.
|
|
14
|
+
- Surfaces, Overlays, Portals und Resources werden ueber den Surface Resource
|
|
15
|
+
Graph materialisiert und aufgeraeumt.
|
|
16
|
+
|
|
17
|
+
```rmt
|
|
18
|
+
template migration.catalog {
|
|
19
|
+
state records type collection initial []
|
|
20
|
+
|
|
21
|
+
selector visibleRecords from state records {
|
|
22
|
+
output CatalogRecord[]
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
datasource catalog from fixture records.generic-items {
|
|
26
|
+
contract CatalogRecord[]
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
action load-records {
|
|
30
|
+
effect fetch datasource catalog
|
|
31
|
+
on success -> reduce state.records = result.records
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
portal surface.root root "#app-root" layer surface
|
|
35
|
+
|
|
36
|
+
surface catalog.board kind workspace component x-cards {
|
|
37
|
+
repeat from selector visibleRecords
|
|
38
|
+
key record.id
|
|
39
|
+
portal surface.root
|
|
40
|
+
|
|
41
|
+
lane visible weight 80 {
|
|
42
|
+
hydrate catalog-cards from selector visibleRecords
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
on card-click target item -> action load-records {
|
|
46
|
+
payload source from target.dataset.source
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Migration
|
|
53
|
+
|
|
54
|
+
1. Externe HTML-Host-Renderer identifizieren.
|
|
55
|
+
Suchen nach `innerHTML`, `outerHTML`, `insertAdjacentHTML` und
|
|
56
|
+
`document.write`.
|
|
57
|
+
2. Shell-Struktur in RMT vNext ueberfuehren.
|
|
58
|
+
Normale App-UI nutzt `template`, `surface`, `portal`, `lane`, `hydrate` und
|
|
59
|
+
Events; `mode: "dom_descriptor"` entsteht erst im Output.
|
|
60
|
+
3. Produktlisten entkoppeln.
|
|
61
|
+
Statt einer festen Record-Klasse werden konfigurierbare Record-Contracts
|
|
62
|
+
mit stabilen IDs und Keys genutzt.
|
|
63
|
+
4. Interaktionen deklarieren.
|
|
64
|
+
DOM- oder Custom-Events erhalten `payloadContract` und routen zu Actions.
|
|
65
|
+
5. DataSources austauschbar halten.
|
|
66
|
+
Lokale Fixture-Daten, SSR-Bootstrap, REST-Suche und Host-Mutation teilen
|
|
67
|
+
denselben Action-Pfad.
|
|
68
|
+
6. Surface Lifecycle pruefen.
|
|
69
|
+
Jede Surface mit `resource`-Eintraegen braucht einen Owner, Overlays laufen ueber
|
|
70
|
+
Portals, und Destroy/Close muss Ressourcen freigeben.
|
|
71
|
+
7. Scaffold Evidence erzeugen.
|
|
72
|
+
Der RMT App Platform Builder schreibt Diagnostics, Source Map und Build
|
|
73
|
+
Report.
|
|
74
|
+
|
|
75
|
+
## Referenz
|
|
76
|
+
|
|
77
|
+
Die Referenz-Fixture liegt in `tests/fixtures/rmt-app-platform-fixture.rmt` und
|
|
78
|
+
belegt `generic-catalog`, `admin-queue` und `content-board` mit denselben
|
|
79
|
+
Primitives.
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
node scripts/run_xtend_tests.js rmt-app-platform-fixture --json
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Grenze
|
|
86
|
+
|
|
87
|
+
Trusted HTML bleibt ein expliziter Sonderfall mit Trusted-DOM-Boundary. Normale
|
|
88
|
+
App-UI darf keine HTML-Strings als Renderpfad verwenden.
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# RMT App Platform Tooling
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic18.rmt-app-platform-tooling.v1`
|
|
4
|
+
- Gate: `node scripts/run_xtend_tests.js rmt-app-platform-tooling --json`
|
|
5
|
+
- Workpackage: `WP-E18-11`
|
|
6
|
+
- Handoff: `WP-E18-12`
|
|
7
|
+
|
|
8
|
+
## Ziel
|
|
9
|
+
|
|
10
|
+
RMT App Sources sind jetzt vor der Runtime pruefbar und buildfaehig. Das
|
|
11
|
+
Tooling erzeugt Diagnostics, Source Maps und Scaffold Reports fuer generische
|
|
12
|
+
App-Platform-Primitives wie Surfaces, Overlays, Portale, Resources, Actions,
|
|
13
|
+
Events, DataSources und State.
|
|
14
|
+
|
|
15
|
+
Der Slice ist bewusst keine Media-Manager-Shell. Er liefert Werkzeuge, mit
|
|
16
|
+
denen Entwickler eigene App-Strukturen in XTend/RMT nativ anlegen koennen,
|
|
17
|
+
ohne produktseitige `innerHTML`-Renderer oder eigene Mini-Frameworks.
|
|
18
|
+
|
|
19
|
+
## Diagnostics
|
|
20
|
+
|
|
21
|
+
Der App-Platform-Linter blockiert typische spaete Runtime-Fehler bereits beim
|
|
22
|
+
Authoring:
|
|
23
|
+
|
|
24
|
+
- `rmt.app.no-manual-shell.html-sink` fuer `innerHTML`, `outerHTML`,
|
|
25
|
+
`insertAdjacentHTML` oder `document.write` in normaler App-UI.
|
|
26
|
+
- `rmt.app.unsafe-html.boundary-missing` fuer HTML-Fragmente ohne explizite
|
|
27
|
+
Trusted-DOM-Boundary.
|
|
28
|
+
- `rmt.app.repeat.key.missing` fuer wiederholte Surfaces ohne stabilen Key.
|
|
29
|
+
- `rmt.app.event.payload-contract.missing` fuer Events mit Action-Ziel ohne
|
|
30
|
+
Payload Contract.
|
|
31
|
+
- `rmt.app.resource.ownership.missing` fuer nicht klar besessene Ressourcen.
|
|
32
|
+
- `rmt.app.resource.unresolved`, `rmt.app.portal.unresolved` und
|
|
33
|
+
`rmt.app.surface.source.unresolved` fuer fehlerhafte App-Graph-Referenzen.
|
|
34
|
+
|
|
35
|
+
Die Regeln laufen als eigener App-Platform-Policy-Rule im bestehenden
|
|
36
|
+
RMT-Linter und als direkter Analyzer in
|
|
37
|
+
`./rmt-language/app-platform-tooling`.
|
|
38
|
+
|
|
39
|
+
## LSP
|
|
40
|
+
|
|
41
|
+
Completion und Hover kennen die neuen Primitives:
|
|
42
|
+
|
|
43
|
+
- Portal-IDs und Portal-Policies wie `stacked`, `toast-region` und
|
|
44
|
+
`clipping-escape`.
|
|
45
|
+
- Overlay-Kinds wie `tooltip`, `toast`, `popover`, `lightbox`, `menu` und
|
|
46
|
+
`dialog`.
|
|
47
|
+
- Resource-Kinds wie `object-url`, `stream`, `observer`, `timer` und
|
|
48
|
+
`lazy-import`.
|
|
49
|
+
- Event-Kinds und Surface-Initialstates.
|
|
50
|
+
|
|
51
|
+
Damit koennen App-Autoren RMT-Dokumente ohne Produkt-Surface-Taxonomie und ohne
|
|
52
|
+
externe Hilfslisten bearbeiten.
|
|
53
|
+
|
|
54
|
+
## Scaffold Build
|
|
55
|
+
|
|
56
|
+
Der Builder registriert den Befehl `rmt-app-platform`. Er liest eine `.rmt`
|
|
57
|
+
App Source und erzeugt unter `.xtend-build`:
|
|
58
|
+
|
|
59
|
+
- `*.app-platform-diagnostics.json`
|
|
60
|
+
- `*.app-platform-source-map.json`
|
|
61
|
+
- `*.app-platform-build.json`
|
|
62
|
+
|
|
63
|
+
Die Artefakte laufen ueber den Epic-17 WritePlan und tragen Scaffold-
|
|
64
|
+
Ownership. `--check` kann damit pruefen, ob lokale Build-Artefakte aktuell
|
|
65
|
+
sind.
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
node scripts/run_xtend_tests.js rmt-app-platform-tooling --json
|
|
69
|
+
node xtend-builder/lib/cli.js rmt-app-platform --source tests/fixtures/rmt-app-platform-tooling.rmt
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## Grenzen
|
|
73
|
+
|
|
74
|
+
- Keine Produkt-Surface-Liste und kein Media-Manager-spezifischer Registry-
|
|
75
|
+
Repaint.
|
|
76
|
+
- Keine normalen UI-HTML-Sinks ausserhalb einer Trusted-DOM-Boundary.
|
|
77
|
+
- Keine Imports aus XTend-Komponenten in den RMT Kernel.
|
|
78
|
+
- Das Tooling baut Reports, Diagnostics und Source Maps; die produktnahe
|
|
79
|
+
generische App-Fixture folgt in `WP-E18-12`.
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
# RMT Component Template Primitives
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic18.rmt-component-template-primitives.v1`
|
|
4
|
+
- Fixture: `tests/fixtures/rmt-component-template-primitives.rmt`
|
|
5
|
+
- Runtime Basis: `xtendrmt/rmt-dom-descriptor-renderer.js`
|
|
6
|
+
- Local Gate: `node scripts/run_xtend_tests.js rmt-component-template-primitives --json`
|
|
7
|
+
- Workpackage: `WP-E18-06`
|
|
8
|
+
- Handoff: `WP-E18-07`
|
|
9
|
+
|
|
10
|
+
RMT kann XTend-Komponenten jetzt nativ komponieren, ohne dass Host-Apps
|
|
11
|
+
HTML-Strings zusammenbauen. Der Slice erweitert den DOM Descriptor Renderer um
|
|
12
|
+
component-nahe Primitives fuer App-Shells, Listen, Formulare, Tooltips, Icons,
|
|
13
|
+
leere Zustaende und Fehlerzustaende.
|
|
14
|
+
|
|
15
|
+
## Primitives
|
|
16
|
+
|
|
17
|
+
| Primitive | Zweck |
|
|
18
|
+
|-----------|-------|
|
|
19
|
+
| `component` | Loest eine Component-ID auf ein Custom Element wie `x-section`, `x-card`, `x-tooltip` oder beliebige Entwickler-Tags auf. |
|
|
20
|
+
| `props` | Setzt sichere DOM Properties und spiegelt primitive Werte als Attribute. |
|
|
21
|
+
| `attributes` | Setzt sichere Attribute ohne Inline-Event- oder URL-Sinks. |
|
|
22
|
+
| `parts` | Schreibt CSS Parts fuer themingfaehige Komponenten. |
|
|
23
|
+
| `slots` | Fuellt Slots mit Text, Templates, Komponenten oder Fragmenten. |
|
|
24
|
+
| `text` | Erzeugt Textknoten ueber `createTextNode`. |
|
|
25
|
+
| `when` | Rendert bedingte Teilbaeume. |
|
|
26
|
+
| `repeat` | Rendert Listen und nutzt `key` fuer stabile Knoten. |
|
|
27
|
+
| `empty` | Rendert einen expliziten leeren Zustand. |
|
|
28
|
+
| `fallback` | Rendert deklarative Ersatzinhalte. |
|
|
29
|
+
| `key` | Markiert wiederverwendbare Listenelemente mit `data-rmt-key`. |
|
|
30
|
+
| `ref` | Schreibt `data-rmt-ref` und legt die Elementreferenz in `refs` ab. |
|
|
31
|
+
| `class` | Mappt Klassen aus Strings, Arrays oder bedingten Objekten. |
|
|
32
|
+
| `style-token` | Spiegelt Design Tokens als `data-style-token-*` und `--xtend-*`. |
|
|
33
|
+
|
|
34
|
+
## Component-Familien
|
|
35
|
+
|
|
36
|
+
Die Fixture beweist generische Familien statt Produkt-Surfaces:
|
|
37
|
+
Icons, Tooltips, Form Controls (`x-input`, `x-select`, `x-checkbox`),
|
|
38
|
+
Navigation, Listen, Selection, Empty State, Error State und freie Custom
|
|
39
|
+
Elements. Die Komponenten bleiben Entwickler-definiert; RMT kennt nur
|
|
40
|
+
Descriptoren und Adapterfaehigkeiten.
|
|
41
|
+
|
|
42
|
+
## Component Capability Registry
|
|
43
|
+
|
|
44
|
+
Die vNext-Schicht fuehrt diese Primitives ueber
|
|
45
|
+
`xtendrmt/rmt-component-capability-registry.js` mit dem ganzen XTend-
|
|
46
|
+
Component-Stack zusammen. Die Registry normalisiert alle 44 public
|
|
47
|
+
Manifest-Eintraege, klassifiziert 40 renderbare UI-Komponenten und verbindet
|
|
48
|
+
Component Contracts, `xtendRmtMetadata`, `observedAttributes`, Events, Slots,
|
|
49
|
+
Parts, Form-State und Lazy Import mit den generischen DOM Descriptoren.
|
|
50
|
+
|
|
51
|
+
Damit bleiben `component`, `props`, `attributes`, `parts`, `slots`, `repeat`
|
|
52
|
+
und `key` dieselben Primitives, aber sie bekommen eine stack-weite
|
|
53
|
+
Kompatibilitaetsmatrix. Produktcode braucht keine Shadow-DOM-Patches, keine
|
|
54
|
+
privaten Component-Maps und keine komponentenspezifischen Renderer.
|
|
55
|
+
|
|
56
|
+
Details stehen in
|
|
57
|
+
[RMT vNext Component Primitives und XTend UI](./rmt-vnext-component-primitives.md).
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# RMT DOM Descriptor Renderer
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic18.rmt-dom-descriptor-renderer.v1`
|
|
4
|
+
- Fixture: `tests/fixtures/rmt-dom-descriptor-renderer.rmt`
|
|
5
|
+
- Runtime: `xtendrmt/rmt-dom-descriptor-renderer.js`
|
|
6
|
+
- Local Gate: `node scripts/run_xtend_tests.js rmt-dom-descriptor-renderer --json`
|
|
7
|
+
- Workpackage: `WP-E18-05`
|
|
8
|
+
|
|
9
|
+
Der Renderer fuehrt das `WP-E18-04` Authoring-Modell als generische App
|
|
10
|
+
Platform aus. Normale App-UI wird aus strukturierten Deskriptoren gebaut:
|
|
11
|
+
`createElement`, `createTextNode`, `createDocumentFragment`,
|
|
12
|
+
`replaceChildren`, sichere Attribute/Properties und keyed Child-Reuse.
|
|
13
|
+
|
|
14
|
+
## Descriptor-Regeln
|
|
15
|
+
|
|
16
|
+
| Bereich | Regel |
|
|
17
|
+
|---------|-------|
|
|
18
|
+
| Shell | Root-Render-Units verwenden `replaceChildren` und markieren den Root mit `data-rmt-rendered-shell`. |
|
|
19
|
+
| Elemente | Tags muessen einfache Custom-Element- oder HTML-Tagnamen sein. |
|
|
20
|
+
| Attribute | Inline-Handler, `srcdoc` und unsichere URL-Werte werden abgelehnt. |
|
|
21
|
+
| Properties | HTML-Sink-Properties sind fuer normale UI gesperrt. |
|
|
22
|
+
| Listen | `renderKeyed` erhaelt Knoten ueber `data-rmt-key` und patcht Attribute/Children. |
|
|
23
|
+
| Events | Events laufen ueber `addEventListener`, nicht ueber String-Attribute. |
|
|
24
|
+
| Diagnostics | Runtimefehler enthalten RMT-Source-Informationen wie `documentId`, `templateId` und `pointer`. |
|
|
25
|
+
|
|
26
|
+
## Component Registry Option
|
|
27
|
+
|
|
28
|
+
`render(...)` und `renderKeyed(...)` akzeptieren `componentRegistry`. Wenn ein
|
|
29
|
+
Descriptor `type: "component"` nutzt, normalisiert der Renderer Tag,
|
|
30
|
+
Attribute, Properties, Slots, Parts und Event-Bindings ueber die RMT vNext
|
|
31
|
+
Component Capability Registry:
|
|
32
|
+
|
|
33
|
+
```js
|
|
34
|
+
renderer.renderKeyed(root, descriptors, {
|
|
35
|
+
componentRegistry: registry,
|
|
36
|
+
dispatchEvent,
|
|
37
|
+
stateBridge
|
|
38
|
+
});
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Die Registry bindet XTend-Komponenten ueber public DOM APIs. Sie liest
|
|
42
|
+
Component Contracts und RMT-Metadaten, fuehrt lazy Import ueber Manifest-Pfade
|
|
43
|
+
aus und schreibt sichere Capability-Marker wie
|
|
44
|
+
`data-rmt-component-capability`. Der Renderer bleibt dadurch generisch: keine
|
|
45
|
+
Shadow-DOM-Patches, keine privaten Component-Maps und keine HTML-Sinks fuer
|
|
46
|
+
normale RMT-App-UI.
|
|
47
|
+
|
|
48
|
+
## Trusted Boundary
|
|
49
|
+
|
|
50
|
+
HTML-Fragmente sind kein normaler Template-Pfad. Sie duerfen nur als
|
|
51
|
+
`trusted_html` mit `xtend.rmt.trusted-dom-boundary.explicit` und einem
|
|
52
|
+
externen `trustedDomRenderer` gerendert werden. Der Standard-Renderer erzeugt
|
|
53
|
+
keine HTML-Fragmente aus Strings.
|
|
54
|
+
|
|
55
|
+
## No-Manual-HTML
|
|
56
|
+
|
|
57
|
+
Das Gate `createNoManualHtmlGate()` blockiert normale App-Shells mit
|
|
58
|
+
manuellen HTML-Sinks wie `root.innerHTML`, `element.innerHTML`,
|
|
59
|
+
`template.innerHTML`, `outerHTML`, `insertAdjacentHTML`, `document.write` und
|
|
60
|
+
`createContextualFragment`.
|
|
61
|
+
|
|
62
|
+
`WP-E18-06` und die vNext Component Capability Registry bauen auf diesem Slice
|
|
63
|
+
component-native Template-Primitives auf, ohne externe HTML-Hilfsrenderer
|
|
64
|
+
vorauszusetzen.
|