@ccslabs/xtend 0.1.0-rc.1
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 +65 -0
- package/LICENSE +201 -0
- package/README.md +184 -0
- package/a11y/motion-contrast-policy.d.ts +32 -0
- package/a11y/motion-contrast-policy.js +261 -0
- package/a11y/runtime-a11y-contract.d.ts +44 -0
- package/a11y/runtime-a11y-contract.js +385 -0
- package/a11y/screenreader-signals.d.ts +32 -0
- package/a11y/screenreader-signals.js +372 -0
- package/api.d.ts +168 -0
- package/api.js +864 -0
- package/catalog/catalog-public-types.d.ts +66 -0
- package/catalog/component-catalog-coverage.d.ts +20 -0
- package/catalog/component-catalog-coverage.js +377 -0
- package/catalog/component-long-tail-migration.d.ts +18 -0
- package/catalog/component-long-tail-migration.js +305 -0
- package/catalog/component-regression-priority.d.ts +20 -0
- package/catalog/component-regression-priority.js +305 -0
- package/catalog/enterprise-component-flex-release-handoff.d.ts +32 -0
- package/catalog/enterprise-component-flex-release-handoff.js +437 -0
- package/catalog/enterprise-component-style-audit.d.ts +22 -0
- package/catalog/enterprise-component-style-audit.js +353 -0
- package/catalog/enterprise-form-control-theme-a11y.d.ts +19 -0
- package/catalog/enterprise-form-control-theme-a11y.js +220 -0
- package/catalog/enterprise-icon-control-audit.d.ts +21 -0
- package/catalog/enterprise-icon-control-audit.js +258 -0
- package/catalog/enterprise-layout-display-media-tokenization.d.ts +20 -0
- package/catalog/enterprise-layout-display-media-tokenization.js +237 -0
- package/catalog/enterprise-navigation-routing-state-hardening.d.ts +20 -0
- package/catalog/enterprise-navigation-routing-state-hardening.js +255 -0
- package/catalog/enterprise-overlay-mode-token-parity.d.ts +15 -0
- package/catalog/enterprise-overlay-mode-token-parity.js +178 -0
- package/catalog/enterprise-third-party-authoring-guide.d.ts +23 -0
- package/catalog/enterprise-third-party-authoring-guide.js +310 -0
- package/catalog/enterprise-visual-dom-snapshot-matrix.d.ts +31 -0
- package/catalog/enterprise-visual-dom-snapshot-matrix.js +357 -0
- package/catalog/epic10-existing-component-metadata.d.ts +25 -0
- package/catalog/epic10-existing-component-metadata.js +534 -0
- package/catalog/epic10-p0-component-wave.d.ts +28 -0
- package/catalog/epic10-p0-component-wave.js +688 -0
- package/catalog/epic10-platform-gates.d.ts +31 -0
- package/catalog/epic10-platform-gates.js +425 -0
- package/catalog/epic10-release-handoff.d.ts +30 -0
- package/catalog/epic10-release-handoff.js +195 -0
- package/catalog/epic11-enterprise-ux-handoff.d.ts +29 -0
- package/catalog/epic11-enterprise-ux-handoff.js +403 -0
- package/catalog/epic12-docs-adoption.d.ts +29 -0
- package/catalog/epic12-docs-adoption.js +183 -0
- package/catalog/epic12-rc0-gate-matrix.d.ts +36 -0
- package/catalog/epic12-rc0-gate-matrix.js +439 -0
- package/catalog/epic12-rc0-handoff.d.ts +30 -0
- package/catalog/epic12-rc0-handoff.js +385 -0
- package/catalog/epic13-conditional-network-evidence-ci.d.ts +35 -0
- package/catalog/epic13-conditional-network-evidence-ci.js +278 -0
- package/catalog/epic13-conditional-network-evidence.d.ts +34 -0
- package/catalog/epic13-conditional-network-evidence.js +280 -0
- package/catalog/epic13-docs-rmt-production-hardening.d.ts +39 -0
- package/catalog/epic13-docs-rmt-production-hardening.js +286 -0
- package/catalog/epic13-hydration-performance-closure.d.ts +33 -0
- package/catalog/epic13-hydration-performance-closure.js +234 -0
- package/catalog/epic13-known-residual-triage.d.ts +32 -0
- package/catalog/epic13-known-residual-triage.js +339 -0
- package/catalog/epic13-package-export-lock.d.ts +41 -0
- package/catalog/epic13-package-export-lock.js +604 -0
- package/catalog/epic13-prod-browser-csp-smoke.d.ts +35 -0
- package/catalog/epic13-prod-browser-csp-smoke.js +218 -0
- package/catalog/epic13-rc1-gate-matrix-ci-handoff.d.ts +36 -0
- package/catalog/epic13-rc1-gate-matrix-ci-handoff.js +418 -0
- package/catalog/epic13-rc1-migration-notes.d.ts +36 -0
- package/catalog/epic13-rc1-migration-notes.js +271 -0
- package/catalog/epic13-rc1-readiness.d.ts +33 -0
- package/catalog/epic13-rc1-readiness.js +487 -0
- package/catalog/epic13-release-owner-acceptance.d.ts +33 -0
- package/catalog/epic13-release-owner-acceptance.js +354 -0
- package/catalog/epic13-release-report-pack-dry-run-evidence.d.ts +36 -0
- package/catalog/epic13-release-report-pack-dry-run-evidence.js +253 -0
- package/catalog/epic13-rmt-production-readiness.d.ts +35 -0
- package/catalog/epic13-rmt-production-readiness.js +314 -0
- package/catalog/epic13-trusted-dom-boundary.d.ts +36 -0
- package/catalog/epic13-trusted-dom-boundary.js +230 -0
- package/catalog/epic13-visual-owner-artifact.d.ts +35 -0
- package/catalog/epic13-visual-owner-artifact.js +233 -0
- package/catalog/epic14-lsp-handoff.d.ts +28 -0
- package/catalog/epic14-lsp-handoff.js +312 -0
- package/catalog/epic14-rmt-tooling.d.ts +33 -0
- package/catalog/epic14-rmt-tooling.js +282 -0
- package/catalog/surface-manager-adapter-runtime.d.ts +37 -0
- package/catalog/surface-manager-adapter-runtime.js +203 -0
- package/catalog/surface-manager-browser-lab.d.ts +39 -0
- package/catalog/surface-manager-browser-lab.js +225 -0
- package/catalog/surface-manager-controller.d.ts +43 -0
- package/catalog/surface-manager-controller.js +290 -0
- package/catalog/surface-manager-layout-engines.d.ts +32 -0
- package/catalog/surface-manager-layout-engines.js +161 -0
- package/catalog/surface-manager-lazy-loading.d.ts +35 -0
- package/catalog/surface-manager-lazy-loading.js +173 -0
- package/catalog/surface-manager-materialization.d.ts +37 -0
- package/catalog/surface-manager-materialization.js +202 -0
- package/catalog/surface-manager-native-rmt-surfaces.d.ts +48 -0
- package/catalog/surface-manager-native-rmt-surfaces.js +325 -0
- package/catalog/surface-manager-overlay-bridge.d.ts +42 -0
- package/catalog/surface-manager-overlay-bridge.js +247 -0
- package/catalog/surface-manager-persistence.d.ts +37 -0
- package/catalog/surface-manager-persistence.js +178 -0
- package/catalog/surface-manager-quality-gates.d.ts +48 -0
- package/catalog/surface-manager-quality-gates.js +324 -0
- package/catalog/surface-manager-release-handoff.d.ts +47 -0
- package/catalog/surface-manager-release-handoff.js +274 -0
- package/catalog/surface-manager-remote-policy.d.ts +34 -0
- package/catalog/surface-manager-remote-policy.js +199 -0
- package/catalog/surface-manager-rmt-authoring.d.ts +44 -0
- package/catalog/surface-manager-rmt-authoring.js +368 -0
- package/catalog/surface-manager-route-lifecycle.d.ts +32 -0
- package/catalog/surface-manager-route-lifecycle.js +162 -0
- package/catalog/surface-manager-runtime-release-handoff.d.ts +36 -0
- package/catalog/surface-manager-runtime-release-handoff.js +245 -0
- package/catalog/surface-manager-side-panel-runtime.d.ts +46 -0
- package/catalog/surface-manager-side-panel-runtime.js +307 -0
- package/catalog/surface-manager-stack-policy.d.ts +32 -0
- package/catalog/surface-manager-stack-policy.js +169 -0
- package/catalog/surface-manager-window-runtime.d.ts +45 -0
- package/catalog/surface-manager-window-runtime.js +285 -0
- package/catalog/surface-manager-workbench-fixture.d.ts +50 -0
- package/catalog/surface-manager-workbench-fixture.js +315 -0
- package/catalog/type-exports-api.js +236 -0
- package/catalog/type-exports-builder.js +405 -0
- package/catalog/type-exports-catalog.js +394 -0
- package/catalog/type-exports-loader.js +266 -0
- package/catalog/type-exports-policy.js +461 -0
- package/catalog/type-exports-rmt.js +407 -0
- package/catalog/type-exports-vendor.js +365 -0
- package/catalog/type-exports.js +574 -0
- package/components/icon-packs/core.js +154 -0
- package/components/icon-packs/lucide.js +136 -0
- package/components/manifest.json +44 -0
- package/components/prism.d.ts +73 -0
- package/components/prism.js +300 -0
- package/components/turndown.d.ts +34 -0
- package/components/turndown.js +107 -0
- package/components/x-rmt-lifecycle-demo-build.d.ts +78 -0
- package/components/x-rmt-lifecycle-demo-build.js +1175 -0
- package/components/x-rmt-lifecycle-demo.d.ts +83 -0
- package/components/x-rmt-lifecycle-demo.js +1175 -0
- package/components/xalert.d.ts +42 -0
- package/components/xalert.js +538 -0
- package/components/xbutton.d.ts +127 -0
- package/components/xbutton.js +612 -0
- package/components/xcalendar.d.ts +39 -0
- package/components/xcalendar.js +338 -0
- package/components/xcards.d.ts +34 -0
- package/components/xcards.js +253 -0
- package/components/xcheckbox.d.ts +48 -0
- package/components/xcheckbox.js +448 -0
- package/components/xcode.d.ts +35 -0
- package/components/xcode.js +370 -0
- package/components/xdialog.d.ts +48 -0
- package/components/xdialog.js +763 -0
- package/components/xdrawer.d.ts +61 -0
- package/components/xdrawer.js +654 -0
- package/components/xfooter.d.ts +41 -0
- package/components/xfooter.js +351 -0
- package/components/xform.d.ts +43 -0
- package/components/xform.js +456 -0
- package/components/xheader.d.ts +68 -0
- package/components/xheader.js +1253 -0
- package/components/xhero.d.ts +42 -0
- package/components/xhero.js +475 -0
- package/components/xicon.d.ts +146 -0
- package/components/xicon.js +688 -0
- package/components/xinput.d.ts +37 -0
- package/components/xinput.js +444 -0
- package/components/xlightbox.d.ts +48 -0
- package/components/xlightbox.js +571 -0
- package/components/xlink.d.ts +63 -0
- package/components/xlink.js +565 -0
- package/components/xmasonry.d.ts +35 -0
- package/components/xmasonry.js +666 -0
- package/components/xmenu.d.ts +118 -0
- package/components/xmenu.js +1005 -0
- package/components/xmodal.d.ts +64 -0
- package/components/xmodal.js +831 -0
- package/components/xplayer.d.ts +57 -0
- package/components/xplayer.js +1748 -0
- package/components/xpopover.d.ts +54 -0
- package/components/xpopover.js +466 -0
- package/components/xprogress.d.ts +40 -0
- package/components/xprogress.js +345 -0
- package/components/xradio.d.ts +50 -0
- package/components/xradio.js +474 -0
- package/components/xrouter.d.ts +244 -0
- package/components/xrouter.js +1841 -0
- package/components/xsection.d.ts +34 -0
- package/components/xsection.js +253 -0
- package/components/xselect.d.ts +46 -0
- package/components/xselect.js +463 -0
- package/components/xsidepanel.d.ts +56 -0
- package/components/xsidepanel.js +728 -0
- package/components/xspinner.d.ts +38 -0
- package/components/xspinner.js +388 -0
- package/components/xstate.d.ts +137 -0
- package/components/xstate.js +493 -0
- package/components/xstatus.d.ts +41 -0
- package/components/xstatus.js +381 -0
- package/components/xsummary.d.ts +43 -0
- package/components/xsummary.js +293 -0
- package/components/xsurfacemanager-controller.d.ts +130 -0
- package/components/xsurfacemanager-controller.js +699 -0
- package/components/xsurfacemanager.d.ts +452 -0
- package/components/xsurfacemanager.js +3775 -0
- package/components/xsurfaceoverlay-bridge.d.ts +43 -0
- package/components/xsurfaceoverlay-bridge.js +238 -0
- package/components/xsurfacewindow.d.ts +50 -0
- package/components/xsurfacewindow.js +576 -0
- package/components/xtabs.d.ts +73 -0
- package/components/xtabs.js +611 -0
- package/components/xtend-public-types.d.ts +208 -0
- package/components/xtextarea.d.ts +46 -0
- package/components/xtextarea.js +451 -0
- package/components/xtheme.d.ts +253 -0
- package/components/xtheme.js +1438 -0
- package/components/xtoast.d.ts +39 -0
- package/components/xtoast.js +389 -0
- package/components/xtooltip.d.ts +53 -0
- package/components/xtooltip.js +432 -0
- package/components/xtype.d.ts +42 -0
- package/components/xtype.js +244 -0
- package/components/xutils.d.ts +164 -0
- package/components/xutils.js +496 -0
- package/components/xwriter.d.ts +67 -0
- package/components/xwriter.js +854 -0
- package/design-tokens/themes/enterprise-light.json +40 -0
- package/design-tokens/themes/xtend-signature.json +126 -0
- package/design-tokens/xtend-design-tokens.d.ts +95 -0
- package/design-tokens/xtend-design-tokens.js +395 -0
- package/design-tokens/xtheme-token-alias-layer.d.ts +84 -0
- package/design-tokens/xtheme-token-alias-layer.js +423 -0
- package/docs/.htaccess +51 -0
- package/docs/README.md +340 -0
- package/docs/XTend-ADR.md +221 -0
- package/docs/a11y-keyboard-smokes.md +62 -0
- package/docs/about.md +18 -0
- package/docs/api.md +157 -0
- package/docs/best-practices.md +76 -0
- package/docs/component-catalog-coverage.md +58 -0
- package/docs/component-lab.md +103 -0
- package/docs/component-long-tail-migration.md +41 -0
- package/docs/component-platform.md +159 -0
- package/docs/component-ux-app-authoring.md +130 -0
- package/docs/component-ux-authoring.md +96 -0
- package/docs/component-ux-gates.md +45 -0
- package/docs/components/x-rmt-lifecycle-demo-build.md +60 -0
- package/docs/components/xalert.md +81 -0
- package/docs/components/xbutton.md +103 -0
- package/docs/components/xcalendar.md +82 -0
- package/docs/components/xcards.md +128 -0
- package/docs/components/xcheckbox.md +102 -0
- package/docs/components/xcode.md +126 -0
- package/docs/components/xdialog.md +92 -0
- package/docs/components/xdrawer.md +84 -0
- package/docs/components/xfooter.md +126 -0
- package/docs/components/xform.md +128 -0
- package/docs/components/xheader.md +308 -0
- package/docs/components/xhero.md +142 -0
- package/docs/components/xicon.md +125 -0
- package/docs/components/xinput.md +129 -0
- package/docs/components/xlightbox.md +98 -0
- package/docs/components/xlink.md +109 -0
- package/docs/components/xmasonry.md +124 -0
- package/docs/components/xmenu.md +158 -0
- package/docs/components/xmodal.md +82 -0
- package/docs/components/xplayer.md +104 -0
- package/docs/components/xpopover.md +67 -0
- package/docs/components/xprogress.md +56 -0
- package/docs/components/xradio.md +103 -0
- package/docs/components/xrouter.md +260 -0
- package/docs/components/xsection.md +125 -0
- package/docs/components/xselect.md +105 -0
- package/docs/components/xsidepanel.md +30 -0
- package/docs/components/xspinner.md +102 -0
- package/docs/components/xstate.md +148 -0
- package/docs/components/xstatus.md +55 -0
- package/docs/components/xsummary.md +78 -0
- package/docs/components/xsurfacemanager.md +27 -0
- package/docs/components/xsurfacewindow.md +21 -0
- package/docs/components/xtabs.md +160 -0
- package/docs/components/xtextarea.md +98 -0
- package/docs/components/xtheme.md +167 -0
- package/docs/components/xtoast.md +62 -0
- package/docs/components/xtooltip.md +66 -0
- package/docs/components/xtype.md +82 -0
- package/docs/components/xutils.md +144 -0
- package/docs/components/xwriter.md +94 -0
- package/docs/components.md +117 -0
- package/docs/conditional-network-evidence-ci.md +38 -0
- package/docs/conditional-network-evidence.md +50 -0
- package/docs/core-migration-guide.md +110 -0
- package/docs/design-tokens.md +116 -0
- package/docs/docs-rmt-production-hardening.md +31 -0
- package/docs/enterprise-adoption.md +411 -0
- package/docs/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/epic10-platform-gates.md +62 -0
- package/docs/epic10-release-handoff.md +81 -0
- package/docs/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/epic12-rc0-handoff.md +61 -0
- package/docs/existing-component-metadata.md +67 -0
- package/docs/hydration-performance-closure.md +34 -0
- package/docs/hydration-policies.md +71 -0
- package/docs/index.php +1625 -0
- package/docs/known-residual-triage.md +22 -0
- package/docs/manifest-import-policy.md +79 -0
- package/docs/manifest.md +106 -0
- package/docs/menu.json +1190 -0
- package/docs/motion-contrast.md +67 -0
- package/docs/package-export-lock.md +44 -0
- package/docs/performance-measurements.md +106 -0
- package/docs/performance-regression.md +89 -0
- package/docs/performance.md +94 -0
- package/docs/previews/README.md +17 -0
- package/docs/prod-browser-csp-smokes.md +40 -0
- package/docs/public-component-types.md +79 -0
- package/docs/quick-start-guide.md +152 -0
- package/docs/rc0-adoption-guide.md +102 -0
- package/docs/rc0-gate-matrix.md +58 -0
- package/docs/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/rc1-migration-notes.md +69 -0
- package/docs/rc1-readiness.md +46 -0
- package/docs/release-owner-acceptance.md +56 -0
- package/docs/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/rmt-dsl-authoring-polish.md +122 -0
- package/docs/rmt-first-demo-app.md +77 -0
- package/docs/rmt-first-xtend-apps.md +105 -0
- package/docs/rmt-kernel-panic-recovery-incident-handoff.md +61 -0
- package/docs/rmt-kernel-security-hardening-migration.md +50 -0
- package/docs/rmt-kernel-trusted-output-authoring.md +69 -0
- package/docs/rmt-language-server.md +177 -0
- package/docs/rmt-lifecycle-demo.md +25 -0
- package/docs/rmt-linter.md +140 -0
- package/docs/rmt-production-readiness.md +63 -0
- package/docs/rmt-tooling-release-gates.md +77 -0
- package/docs/rmt-vnext-authoring.md +60 -0
- package/docs/rmt-vnext-cross-surface-events.md +68 -0
- package/docs/rmt-vnext-enterprise-mfe-handoff.md +70 -0
- package/docs/rmt-vnext-migration-notes.md +62 -0
- package/docs/rmt-vnext-release-handoff.md +69 -0
- package/docs/rmt-vnext-remote-surfaces.md +90 -0
- package/docs/rmt-vnext-surface-registry-enterprise.md +76 -0
- package/docs/screenreader-signals.md +56 -0
- package/docs/supply-chain-gates.md +100 -0
- package/docs/surface-manager-authoring-guide.md +94 -0
- package/docs/surface-manager-browser-lab.md +45 -0
- package/docs/surface-manager-component-lab.md +43 -0
- package/docs/surface-manager-controller.md +66 -0
- package/docs/surface-manager-layout-engines.md +32 -0
- package/docs/surface-manager-lazy-hydration.md +63 -0
- package/docs/surface-manager-migration-guide.md +94 -0
- package/docs/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/surface-manager-overlay-bridge.md +53 -0
- package/docs/surface-manager-persistence.md +30 -0
- package/docs/surface-manager-quality-gates.md +51 -0
- package/docs/surface-manager-release-handoff.md +68 -0
- package/docs/surface-manager-remote-policy.md +54 -0
- package/docs/surface-manager-rmt-authoring.md +86 -0
- package/docs/surface-manager-route-lifecycle.md +59 -0
- package/docs/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/surface-manager-side-panel-runtime.md +36 -0
- package/docs/surface-manager-stack-policy.md +39 -0
- package/docs/surface-manager-window-runtime.md +47 -0
- package/docs/surface-manager-workbench-fixture.md +43 -0
- package/docs/third-party-design-authoring.md +406 -0
- package/docs/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/trusted-dom-sanitizing.md +110 -0
- package/docs/type-exports.md +61 -0
- package/docs/typescript-components.md +63 -0
- package/docs/utils/fabric-runtime.js +650 -0
- package/docs/utils/pageloader.js +2823 -0
- package/docs/utils/parsedown.php +298 -0
- package/docs/visual-browser-regression.md +83 -0
- package/docs/visual-owner-artifacts.md +46 -0
- package/docs/visual-snapshot-automation.md +87 -0
- package/docs/xtend-api-types.md +55 -0
- package/docs/xtend-builder-types.md +55 -0
- package/docs/xtend-catalog-types.md +44 -0
- package/docs/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/xtend-fabric.md +474 -0
- package/docs/xtend-loader-types.md +58 -0
- package/docs/xtend-loader.md +265 -0
- package/docs/xtend-policy-types.md +38 -0
- package/docs/xtend-rmt-types.md +39 -0
- package/docs/xtend-vendor-types.md +36 -0
- package/docs/xtendrmt-app-dsl.md +269 -0
- package/docs/xtendrmt-migration-guide.md +235 -0
- package/docs/xtendrmt-native-authoring.md +337 -0
- package/docs/xtendrmt-overview.md +89 -0
- package/docs/xtendrmt-parsedown-docs.rmt +956 -0
- package/docs/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/xtendrmt-runtime-bridge.md +155 -0
- package/fabric/hydration-policy.d.ts +27 -0
- package/fabric/hydration-policy.js +306 -0
- package/fabric/package.json +58 -0
- package/fabric/rmt-lane-mapping.d.ts +47 -0
- package/fabric/rmt-lane-mapping.js +504 -0
- package/fabric/xtend-fabric.d.ts +81 -0
- package/fabric/xtend-fabric.js +2669 -0
- package/fabric/xtend-policy-public-types.d.ts +135 -0
- package/package.json +8225 -0
- package/security/README.md +54 -0
- package/security/manifest-import-policy.d.ts +43 -0
- package/security/manifest-import-policy.js +260 -0
- package/security/supply-chain-gate-policy.d.ts +45 -0
- package/security/supply-chain-gate-policy.js +249 -0
- package/security/trusted-dom-policy.d.ts +36 -0
- package/security/trusted-dom-policy.js +316 -0
- package/tools/package.json +77 -0
- package/tools/rmt-editor/vscode/README.md +33 -0
- package/tools/rmt-editor/vscode/extension.d.ts +9 -0
- package/tools/rmt-editor/vscode/extension.js +55 -0
- package/tools/rmt-editor/vscode/language-configuration.json +28 -0
- package/tools/rmt-editor/vscode/package.json +83 -0
- package/tools/rmt-editor/vscode/snippets/rmt.code-snippets +243 -0
- package/tools/rmt-editor/vscode/syntaxes/rmt.tmLanguage.json +13 -0
- package/tools/rmt-editor/vscode/xtend-rmt-language-0.0.0-enterprise-readiness.vsix +0 -0
- package/tools/rmt-language/code-actions.d.ts +15 -0
- package/tools/rmt-language/code-actions.js +566 -0
- package/tools/rmt-language/completions.d.ts +22 -0
- package/tools/rmt-language/completions.js +475 -0
- package/tools/rmt-language/definitions.d.ts +13 -0
- package/tools/rmt-language/definitions.js +212 -0
- package/tools/rmt-language/diagnostics.d.ts +23 -0
- package/tools/rmt-language/diagnostics.js +486 -0
- package/tools/rmt-language/format-adapter.d.ts +16 -0
- package/tools/rmt-language/format-adapter.js +270 -0
- package/tools/rmt-language/hover.d.ts +12 -0
- package/tools/rmt-language/hover.js +326 -0
- package/tools/rmt-language/kernel-escalation.d.ts +122 -0
- package/tools/rmt-language/kernel-escalation.js +427 -0
- package/tools/rmt-language/kernel-panic-monitor.d.ts +176 -0
- package/tools/rmt-language/kernel-panic-monitor.js +674 -0
- package/tools/rmt-language/kernel-policy-parity.d.ts +142 -0
- package/tools/rmt-language/kernel-policy-parity.js +629 -0
- package/tools/rmt-language/kernel-recovery.d.ts +173 -0
- package/tools/rmt-language/kernel-recovery.js +666 -0
- package/tools/rmt-language/kernel-scheduler-failure.d.ts +136 -0
- package/tools/rmt-language/kernel-scheduler-failure.js +486 -0
- package/tools/rmt-language/kernel-security-regression.d.ts +154 -0
- package/tools/rmt-language/kernel-security-regression.js +465 -0
- package/tools/rmt-language/kernel-trust-authority.d.ts +120 -0
- package/tools/rmt-language/kernel-trust-authority.js +549 -0
- package/tools/rmt-language/parser.d.ts +14 -0
- package/tools/rmt-language/parser.js +111 -0
- package/tools/rmt-language/rmt-tooling-public-types.d.ts +179 -0
- package/tools/rmt-language/rules/boundary-policy.js +81 -0
- package/tools/rmt-language/rules/document-policy.js +65 -0
- package/tools/rmt-language/rules/index.js +29 -0
- package/tools/rmt-language/rules/route-policy.js +81 -0
- package/tools/rmt-language/rules/scheduler-policy.js +66 -0
- package/tools/rmt-language/rules/template-policy.js +130 -0
- package/tools/rmt-language/semantic-graph.d.ts +18 -0
- package/tools/rmt-language/semantic-graph.js +827 -0
- package/tools/rmt-language/snippets/README.md +17 -0
- package/tools/rmt-language/snippets/index.d.ts +17 -0
- package/tools/rmt-language/snippets/index.js +417 -0
- package/tools/rmt-language/snippets/rmt.code-snippets +243 -0
- package/tools/rmt-language/source-model.d.ts +14 -0
- package/tools/rmt-language/source-model.js +731 -0
- package/tools/rmt-language/symbols.d.ts +13 -0
- package/tools/rmt-language/symbols.js +183 -0
- package/tools/rmt-language/vnext-compatibility.d.ts +28 -0
- package/tools/rmt-language/vnext-compatibility.js +675 -0
- package/tools/rmt-language/vnext-compiler.d.ts +17 -0
- package/tools/rmt-language/vnext-compiler.js +716 -0
- package/tools/rmt-language/vnext-composition.d.ts +30 -0
- package/tools/rmt-language/vnext-composition.js +595 -0
- package/tools/rmt-language/vnext-conditions.d.ts +25 -0
- package/tools/rmt-language/vnext-conditions.js +474 -0
- package/tools/rmt-language/vnext-cross-surface-events.d.ts +30 -0
- package/tools/rmt-language/vnext-cross-surface-events.js +607 -0
- package/tools/rmt-language/vnext-degradation.d.ts +23 -0
- package/tools/rmt-language/vnext-degradation.js +428 -0
- package/tools/rmt-language/vnext-enterprise-fixtures.d.ts +28 -0
- package/tools/rmt-language/vnext-enterprise-fixtures.js +487 -0
- package/tools/rmt-language/vnext-enterprise-registry.d.ts +21 -0
- package/tools/rmt-language/vnext-enterprise-registry.js +495 -0
- package/tools/rmt-language/vnext-enterprise-release.d.ts +44 -0
- package/tools/rmt-language/vnext-enterprise-release.js +472 -0
- package/tools/rmt-language/vnext-event-governance.d.ts +29 -0
- package/tools/rmt-language/vnext-event-governance.js +488 -0
- package/tools/rmt-language/vnext-events.d.ts +44 -0
- package/tools/rmt-language/vnext-events.js +680 -0
- package/tools/rmt-language/vnext-import-resolver.d.ts +28 -0
- package/tools/rmt-language/vnext-import-resolver.js +642 -0
- package/tools/rmt-language/vnext-lifecycle.d.ts +22 -0
- package/tools/rmt-language/vnext-lifecycle.js +404 -0
- package/tools/rmt-language/vnext-parser.d.ts +21 -0
- package/tools/rmt-language/vnext-parser.js +1391 -0
- package/tools/rmt-language/vnext-regression.d.ts +25 -0
- package/tools/rmt-language/vnext-regression.js +394 -0
- package/tools/rmt-language/vnext-release.d.ts +29 -0
- package/tools/rmt-language/vnext-release.js +293 -0
- package/tools/rmt-language/vnext-remote-compatibility.d.ts +33 -0
- package/tools/rmt-language/vnext-remote-compatibility.js +892 -0
- package/tools/rmt-language/vnext-remote-compiler.d.ts +14 -0
- package/tools/rmt-language/vnext-remote-compiler.js +520 -0
- package/tools/rmt-language/vnext-remote-manifest.d.ts +33 -0
- package/tools/rmt-language/vnext-remote-manifest.js +538 -0
- package/tools/rmt-language/vnext-remote-security.d.ts +27 -0
- package/tools/rmt-language/vnext-remote-security.js +380 -0
- package/tools/rmt-language/vnext-remote-tooling.d.ts +25 -0
- package/tools/rmt-language/vnext-remote-tooling.js +805 -0
- package/tools/rmt-language/vnext-scheduler.d.ts +24 -0
- package/tools/rmt-language/vnext-scheduler.js +469 -0
- package/tools/rmt-language/vnext-security.d.ts +28 -0
- package/tools/rmt-language/vnext-security.js +597 -0
- package/tools/rmt-language/vnext-streaming.d.ts +28 -0
- package/tools/rmt-language/vnext-streaming.js +593 -0
- package/tools/rmt-language/vnext-surfaces.d.ts +24 -0
- package/tools/rmt-language/vnext-surfaces.js +406 -0
- package/tools/rmt-language/vnext-tooling.d.ts +25 -0
- package/tools/rmt-language/vnext-tooling.js +728 -0
- package/tools/rmt-language-server/protocol.d.ts +22 -0
- package/tools/rmt-language-server/protocol.js +352 -0
- package/tools/rmt-language-server/server.d.ts +15 -0
- package/tools/rmt-language-server/server.js +622 -0
- package/tools/rmt-linter/cli.d.ts +14 -0
- package/tools/rmt-linter/cli.js +450 -0
- package/tools/rmt-linter/reporter.d.ts +16 -0
- package/tools/rmt-linter/reporter.js +472 -0
- package/xtend-builder/README.md +83 -0
- package/xtend-builder/a11y/README.md +42 -0
- package/xtend-builder/a11y/component-a11y-profile.d.ts +14 -0
- package/xtend-builder/a11y/component-a11y-profile.js +314 -0
- package/xtend-builder/blueprints/README.md +105 -0
- package/xtend-builder/blueprints/component-blueprint.contract.d.ts +16 -0
- package/xtend-builder/blueprints/component-blueprint.contract.js +343 -0
- package/xtend-builder/builder-public-types.d.ts +234 -0
- package/xtend-builder/extensions/README.md +26 -0
- package/xtend-builder/extensions/component-extension-points.d.ts +11 -0
- package/xtend-builder/extensions/component-extension-points.js +277 -0
- package/xtend-builder/generators/README.md +149 -0
- package/xtend-builder/generators/component-files.d.ts +5 -0
- package/xtend-builder/generators/component-files.js +769 -0
- package/xtend-builder/generators/component-plan.d.ts +4 -0
- package/xtend-builder/generators/component-plan.js +104 -0
- package/xtend-builder/generators/registry.d.ts +6 -0
- package/xtend-builder/generators/registry.js +118 -0
- package/xtend-builder/generators/rmt-build.js +738 -0
- package/xtend-builder/generators/rmt-lifecycle-demo.js +922 -0
- package/xtend-builder/lib/cli.d.ts +9 -0
- package/xtend-builder/lib/cli.js +543 -0
- package/xtend-builder/lib/layout.d.ts +6 -0
- package/xtend-builder/lib/layout.js +153 -0
- package/xtend-builder/lib/package-resolver.js +25 -0
- package/xtend-builder/package.json +90 -0
- package/xtend-builder/performance/README.md +31 -0
- package/xtend-builder/performance/component-performance-profile.d.ts +11 -0
- package/xtend-builder/performance/component-performance-profile.js +347 -0
- package/xtend-builder/performance/component-ux-performance-contract.d.ts +27 -0
- package/xtend-builder/performance/component-ux-performance-contract.js +424 -0
- package/xtend-builder/preview/README.md +61 -0
- package/xtend-builder/preview/component-lab-ux-inspector.d.ts +20 -0
- package/xtend-builder/preview/component-lab-ux-inspector.js +448 -0
- package/xtend-builder/preview/component-lab.d.ts +14 -0
- package/xtend-builder/preview/component-lab.js +278 -0
- package/xtend-builder/preview/component-preview.d.ts +5 -0
- package/xtend-builder/preview/component-preview.js +160 -0
- package/xtend-builder/scaffold.config.d.ts +4 -0
- package/xtend-builder/scaffold.config.js +2056 -0
- package/xtend-builder/scaffold.d.ts +3 -0
- package/xtend-builder/scaffold.js +11 -0
- package/xtend-builder/templates/README.md +33 -0
- package/xtend-builder/templates/component/a11y.template.ts +11 -0
- package/xtend-builder/templates/component/component-suite.template.d.ts +2 -0
- package/xtend-builder/templates/component/component-suite.template.js +108 -0
- package/xtend-builder/templates/component/contract.template.ts +10 -0
- package/xtend-builder/templates/component/demo-plan.template.md +73 -0
- package/xtend-builder/templates/component/docs.template.md +301 -0
- package/xtend-builder/templates/component/fixture-data.template.ts +28 -0
- package/xtend-builder/templates/component/fixture.template.html +37 -0
- package/xtend-builder/templates/component/manifest-plan.template.json +22 -0
- package/xtend-builder/templates/component/performance.template.ts +13 -0
- package/xtend-builder/templates/component/rmt.template.ts +12 -0
- package/xtend-builder/templates/component/source.template.d.ts +2 -0
- package/xtend-builder/templates/component/source.template.js +137 -0
- package/xtend-builder/templates/component/source.template.ts +110 -0
- package/xtend-builder/templates/component/types.template.d.ts +423 -0
- package/xtend-builder/templates/loader.d.ts +4 -0
- package/xtend-builder/templates/loader.js +51 -0
- package/xtend-builder/templates/registry.d.ts +6 -0
- package/xtend-builder/templates/registry.js +119 -0
- package/xtend-builder/typing/README.md +130 -0
- package/xtend-builder/typing/component-contract-v2.d.ts +15 -0
- package/xtend-builder/typing/component-contract-v2.js +248 -0
- package/xtend-builder/typing/component-network-contract.d.ts +22 -0
- package/xtend-builder/typing/component-network-contract.js +478 -0
- package/xtend-builder/typing/component-shell-contract.d.ts +21 -0
- package/xtend-builder/typing/component-shell-contract.js +312 -0
- package/xtend-builder/typing/component-styling-contract.d.ts +22 -0
- package/xtend-builder/typing/component-styling-contract.js +301 -0
- package/xtend-builder/typing/component-types.d.ts +10 -0
- package/xtend-builder/typing/component-types.js +551 -0
- package/xtend-builder/typing/enterprise-component-flex-hardening-contract.d.ts +20 -0
- package/xtend-builder/typing/enterprise-component-flex-hardening-contract.js +332 -0
- package/xtend-builder/typing/feedback-status-ux-contract.d.ts +25 -0
- package/xtend-builder/typing/feedback-status-ux-contract.js +347 -0
- package/xtend-builder/typing/form-controls-ux-contract.d.ts +25 -0
- package/xtend-builder/typing/form-controls-ux-contract.js +357 -0
- package/xtend-builder/typing/layout-display-media-ux-contract.d.ts +25 -0
- package/xtend-builder/typing/layout-display-media-ux-contract.js +420 -0
- package/xtend-builder/typing/navigation-routing-ux-contract.d.ts +17 -0
- package/xtend-builder/typing/navigation-routing-ux-contract.js +297 -0
- package/xtend-builder/typing/overlay-interaction-ux-contract.d.ts +25 -0
- package/xtend-builder/typing/overlay-interaction-ux-contract.js +383 -0
- package/xtend-builder/typing/rmt-dsl-authoring-polish.d.ts +27 -0
- package/xtend-builder/typing/rmt-dsl-authoring-polish.js +419 -0
- package/xtend-builder/typing/rmt-shell-authoring-contract.d.ts +26 -0
- package/xtend-builder/typing/rmt-shell-authoring-contract.js +315 -0
- package/xtend-builder/utils/README.md +8 -0
- package/xtend-builder/utils/naming.d.ts +7 -0
- package/xtend-builder/utils/naming.js +36 -0
- package/xtend-builder/utils/validation.d.ts +5 -0
- package/xtend-builder/utils/validation.js +95 -0
- package/xtend-builder/wiring/README.md +46 -0
- package/xtend-builder/wiring/features.d.ts +5 -0
- package/xtend-builder/wiring/features.js +165 -0
- package/xtend-builder/wiring/hydration.d.ts +4 -0
- package/xtend-builder/wiring/hydration.js +44 -0
- package/xtend-builder/wiring/manifest.d.ts +5 -0
- package/xtend-builder/wiring/manifest.js +48 -0
- package/xtend-builder/workflows/README.md +47 -0
- package/xtend-builder/workflows/developer-workflow.d.ts +6 -0
- package/xtend-builder/workflows/developer-workflow.js +125 -0
- package/xtend-builder/writing/manifest-patcher.d.ts +49 -0
- package/xtend-builder/writing/manifest-patcher.js +391 -0
- package/xtend-builder/writing/write-plan.d.ts +148 -0
- package/xtend-builder/writing/write-plan.js +646 -0
- package/xtend-dev.d.ts +23 -0
- package/xtend-dev.js +4 -0
- package/xtend-loader.d.ts +201 -0
- package/xtend-loader.js +1704 -0
- package/xtend.css +402 -0
- package/xtendrmt/package.json +64 -0
- package/xtendrmt/rmt-core.d.ts +4452 -0
- package/xtendrmt/rmt-core.esm.js +25793 -0
- package/xtendrmt/rmt-first-demo-app.js +265 -0
- package/xtendrmt/rmt-first-demo-app.rmt +737 -0
- package/xtendrmt/rmt-lifecycle-demo.app.js +493 -0
- package/xtendrmt/rmt-lifecycle-demo.core.json +810 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt +35 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.app.js +153 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.core.json +810 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.scaffold.json +202 -0
- package/xtendrmt/rmt-lifecycle-demo.scaffold.json +187 -0
- package/xtendrmt/rmt-manifest.json +548 -0
- package/xtendrmt/rmt-runtime.browser.js +26183 -0
- package/xtendrmt/rmt-runtime.esm.js +26214 -0
- package/xtendrmt/rmt-vnext-enterprise-mfe-demo.core.json +849 -0
- package/xtendrmt/rmt-vnext-enterprise-mfe-demo.rmt +50 -0
- package/xtendrmt/rmt-vnext-reference-demo.core.json +1069 -0
- package/xtendrmt/rmt-vnext-reference-demo.rmt +50 -0
- package/xtendrmt/rmt.schema.json +3145 -0
- package/xtendrmt/surface-workbench.js +316 -0
- package/xtendrmt/surface-workbench.rmt +762 -0
- package/xtendrmt/xtendrmt-bestcase-demo.core.json +1187 -0
- package/xtendrmt/xtendrmt-bestcase-demo.js +1728 -0
- package/xtendrmt/xtendrmt-bestcase-demo.rmt +57 -0
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
# RMT DSL Authoring Polish
|
|
2
|
+
|
|
3
|
+
Der Contract `xtend.rmt.dsl-authoring-polish.v1` bereitet eine freundlichere RMT-DSL fuer XTend Component Shells vor. Er macht RMT Authoring kuerzer, ohne XTend in den RMT Kernel einzubetten.
|
|
4
|
+
|
|
5
|
+
Lokaler Gate:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
node scripts/run_xtend_tests.js rmt-dsl-authoring-polish --json
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Warum dieses Paket existiert
|
|
12
|
+
|
|
13
|
+
Nach `WP-E12-12` besitzt XTend ein produktives Design-Token-Vokabular. `WP-E12-13` nutzt diese Tokens, damit Shells, Slots, Styles, A11y, Events, Commands, Hydration, Fabric-Lanes und XRouter-Routen in RMT einfacher beschrieben werden koennen.
|
|
14
|
+
|
|
15
|
+
RMT bleibt dabei host-neutral:
|
|
16
|
+
|
|
17
|
+
- `xtend.component` rendert und hydriert Components im Host.
|
|
18
|
+
- `xtend.xrouter` verbindet Route Records mit XRouter.
|
|
19
|
+
- `xtend.fabric` und Telemetry bleiben Adapter-/Hostdaten.
|
|
20
|
+
- `no-rmt-kernel-import-of-xtend-types` bleibt Pflicht.
|
|
21
|
+
|
|
22
|
+
## Authoring-Aliase
|
|
23
|
+
|
|
24
|
+
| Alias | Ziel |
|
|
25
|
+
|-------|------|
|
|
26
|
+
| `component` | XTend Component Record |
|
|
27
|
+
| `shell` | Shell-Zustand, Slots, Parts und Fokus |
|
|
28
|
+
| `slot` | Template-, Component- oder Text-Slots |
|
|
29
|
+
| `style` | Variant, Theme, Density, Tokens und Parts |
|
|
30
|
+
| `token` | produktive `--xtend-*` Tokens |
|
|
31
|
+
| `theme` | Theme Pack |
|
|
32
|
+
| `density` | Density Pack |
|
|
33
|
+
| `a11y` | Role, Label, Live Region, Keyboard und Announcements |
|
|
34
|
+
| `on` | Event zu Command |
|
|
35
|
+
| `command` | Command zu Schedule |
|
|
36
|
+
| `hydrate` | Hydration Policy |
|
|
37
|
+
| `lane` | Fabric Lane und Fiber |
|
|
38
|
+
| `route` | XRouter Route |
|
|
39
|
+
| `link` | XLink-kompatibler Link |
|
|
40
|
+
| `outlet` | Route Outlet im Template |
|
|
41
|
+
|
|
42
|
+
## Beispiel
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
{
|
|
46
|
+
"component": "settings.shell",
|
|
47
|
+
"tag": "x-section",
|
|
48
|
+
"shell": {
|
|
49
|
+
"slot": {
|
|
50
|
+
"header": "settings.header.template",
|
|
51
|
+
"feedback": "feedback.toast"
|
|
52
|
+
}
|
|
53
|
+
},
|
|
54
|
+
"style": {
|
|
55
|
+
"theme": "dark",
|
|
56
|
+
"density": "comfortable",
|
|
57
|
+
"token": {
|
|
58
|
+
"--xtend-surface": "var(--xtend-surface)",
|
|
59
|
+
"--xtend-color-primary": "var(--xtend-color-primary)"
|
|
60
|
+
}
|
|
61
|
+
},
|
|
62
|
+
"a11y": {
|
|
63
|
+
"role": "region",
|
|
64
|
+
"label": "Settings"
|
|
65
|
+
},
|
|
66
|
+
"hydrate": {
|
|
67
|
+
"policy": "visible",
|
|
68
|
+
"schedule": "component.visible.mount"
|
|
69
|
+
},
|
|
70
|
+
"lane": {
|
|
71
|
+
"lane": "visible",
|
|
72
|
+
"fiber": "component.render"
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Der normalisierte Output wird zu `components[]`, `templates[]` und `schedules[]`. RMT beschreibt die Struktur; XTend fuehrt die Component-Hydration aus.
|
|
78
|
+
|
|
79
|
+
## Routing-Sugar
|
|
80
|
+
|
|
81
|
+
Routen koennen spaeter authoringfreundlich als `route`, `link` und `outlet` beschrieben werden:
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
{
|
|
85
|
+
"route": "/settings",
|
|
86
|
+
"component": "settings.shell",
|
|
87
|
+
"link": {
|
|
88
|
+
"label": "Settings",
|
|
89
|
+
"href": "/settings"
|
|
90
|
+
},
|
|
91
|
+
"outlet": "primary"
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Das wird zu `routes[]`, `components[]` und `templates[]` mit Adapter `xtend.xrouter`. XRouter bleibt Host Adapter, nicht RMT-Kernel-Abhaengigkeit.
|
|
96
|
+
|
|
97
|
+
## Diagnostik
|
|
98
|
+
|
|
99
|
+
Der Polish-Plan definiert diese Diagnosecodes:
|
|
100
|
+
|
|
101
|
+
- `rmt.dsl.alias.unknown`
|
|
102
|
+
- `rmt.dsl.alias.required-field-missing`
|
|
103
|
+
- `rmt.dsl.token.unknown`
|
|
104
|
+
- `rmt.dsl.route.target-unresolved`
|
|
105
|
+
- `rmt.dsl.link.route-unresolved`
|
|
106
|
+
- `rmt.dsl.slot.target-unresolved`
|
|
107
|
+
- `rmt.dsl.schedule.unresolved`
|
|
108
|
+
- `rmt.dsl.inline-runtime-code-refused`
|
|
109
|
+
- `rmt.dsl.kernel-boundary.refused`
|
|
110
|
+
|
|
111
|
+
Damit kann XTendRMT upstream freundlichere Parserfehler und Editor-Hints bauen, ohne die XTend Runtime zu importieren.
|
|
112
|
+
|
|
113
|
+
## Artefakte
|
|
114
|
+
|
|
115
|
+
- Contract: `development/XTend-RMT-DSL-Authoring-Polish-fuer-Component-Shells.md`
|
|
116
|
+
- Modul: `xtend-builder/typing/rmt-dsl-authoring-polish.js`
|
|
117
|
+
- Fixture: `tests/fixtures/rmt-dsl-authoring-polish.rmt`
|
|
118
|
+
- Suite: `tests/rmt/rmt_dsl_authoring_polish_suite.js`
|
|
119
|
+
|
|
120
|
+
## RC0 Adoption Update
|
|
121
|
+
|
|
122
|
+
Seit `WP-E12-15` beschreibt der [RC0 Adoption Guide](./rc0-adoption-guide.md), wie App Authors diese DSL-Polish-Schicht fuer Shell-first XTend Apps nutzen. Die wichtigste Migrationsregel bleibt: RMT darf XTend-Komponenten, XRouter-Routen und Content Slots konstruieren und schedulen, ohne XTend-Typen in den RMT Kernel einzubetten.
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# RMT-first Demo-App
|
|
2
|
+
|
|
3
|
+
Contract: `xtend.epic10.rmt-first-demo-app.v1`
|
|
4
|
+
|
|
5
|
+
Die RMT-first Demo-App zeigt den Zielpfad fuer Epic 10: Eine XTend App wird nicht mehr als manuelle HTML-Shell gebaut, sondern aus einem `.rmt` App-Dokument gerendert. XTend liefert lokale Web Components. RMT liefert Shell, Routes, Templates, Schedules, Fabric/Lane Metadata und Diagnostics.
|
|
6
|
+
|
|
7
|
+
## Startpunkt
|
|
8
|
+
|
|
9
|
+
- Demo: `xtendrmt-rmt-first-demo.html`
|
|
10
|
+
- RMT Document: `xtendrmt/rmt-first-demo-app.rmt`
|
|
11
|
+
- Runtime: `xtendrmt/rmt-first-demo-app.js`
|
|
12
|
+
- Browser Smoke: `tests/browser/fixtures/rmt-first-demo-app-smoke.html`
|
|
13
|
+
|
|
14
|
+
Die Hostseite enthaelt nur den RMT Root:
|
|
15
|
+
|
|
16
|
+
```html
|
|
17
|
+
<div
|
|
18
|
+
id="rmt-first-demo-root"
|
|
19
|
+
data-rmt-host="rmt-first-demo"
|
|
20
|
+
data-rmt-document-src="xtendrmt/rmt-first-demo-app.rmt"></div>
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Die Shell selbst kommt aus `app.shell.template`.
|
|
24
|
+
|
|
25
|
+
## Was RMT besitzt
|
|
26
|
+
|
|
27
|
+
- App Shell
|
|
28
|
+
- Routes
|
|
29
|
+
- `dom_descriptor` Templates
|
|
30
|
+
- Component Records
|
|
31
|
+
- Props, Attribute, Slots und Event Commands
|
|
32
|
+
- Schedules und Lanes
|
|
33
|
+
- Fabric/Fiber Metadata
|
|
34
|
+
- Diagnostics
|
|
35
|
+
|
|
36
|
+
## Was XTend besitzt
|
|
37
|
+
|
|
38
|
+
- Custom Elements
|
|
39
|
+
- Manifest Lookup
|
|
40
|
+
- Component Lifecycle
|
|
41
|
+
- DOM-Ausfuehrung
|
|
42
|
+
- XRouter-Registrierung
|
|
43
|
+
- Fabric-Ausfuehrung und Telemetry Hooks
|
|
44
|
+
|
|
45
|
+
Der RMT-Kernel importiert keine XTend-Komponenten. Diese Boundary bleibt `no-rmt-kernel-import-of-xtend-types`.
|
|
46
|
+
|
|
47
|
+
## Demo-Routen
|
|
48
|
+
|
|
49
|
+
| Route | Pfad | Inhalt |
|
|
50
|
+
|-------|------|--------|
|
|
51
|
+
| `dashboard` | `/` | Shell-first Status und Performance Coverage |
|
|
52
|
+
| `settings` | `/settings` | Form Controls mit `x-select`, `x-checkbox`, `x-radio`, `x-textarea` |
|
|
53
|
+
| `overlays` | `/overlays` | `x-tooltip`, `x-popover`, `x-drawer` |
|
|
54
|
+
|
|
55
|
+
## No-Manual-Shell-Regel
|
|
56
|
+
|
|
57
|
+
Die Demo gilt nur als korrekt, wenn:
|
|
58
|
+
|
|
59
|
+
- der Host keine statischen `x-section` oder `x-router` Shell-Tags enthaelt
|
|
60
|
+
- die Runtime kein `innerHTML` nutzt
|
|
61
|
+
- `manifest.metadata.manualShellAllowed` auf `false` steht
|
|
62
|
+
- `manifest.metadata.hostShellMarkup` auf `false` steht
|
|
63
|
+
- der Browser-Smoke die Shell aus RMT rendert
|
|
64
|
+
|
|
65
|
+
## Lokaler Gate
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
node scripts/run_xtend_tests.js rmt-first-demo-app --json
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Der Gate prueft RMT-Referenzen, Runtime-Registry-Normalisierung, Host-Boundary, Browser-Smoke, Package-Metadata und die Dokumentationspfade.
|
|
72
|
+
|
|
73
|
+
## Weiterfuehrung
|
|
74
|
+
|
|
75
|
+
`WP-E10-14` migriert bestehende priorisierte Komponenten in dieselbe RMT/Fabric-Metadata-Linie. Die Demo-App bleibt dafuer der erste produktive Abnahme-Host.
|
|
76
|
+
|
|
77
|
+
Seit `WP-E13-09` ist die Demo-App Teil von [RMT Production Readiness](./rmt-production-readiness.md). Der Contract `xtend.epic13.rmt-production-readiness.v1` nutzt sie als shell-first Evidence fuer Routing, Components, Fabric/Lane, Lifecycle Telemetry und Diagnostics.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
# RMT-first XTend Apps
|
|
2
|
+
|
|
3
|
+
Docs Contract: `xtend.docs.rmt-first-xtend-apps.v1`
|
|
4
|
+
|
|
5
|
+
Dieser Guide beschreibt den Zielpfad aus Epic 10: Eine vollstaendige XTend App wird als RMT-Dokument beschrieben. XTend liefert lokale Web Components, RMT liefert Shell, Routes, Templates, Components, Schedules, Hydration Policies, Fabric-Lanes und Diagnostics.
|
|
6
|
+
|
|
7
|
+
Der zugrunde liegende Authoring Contract ist:
|
|
8
|
+
|
|
9
|
+
```text
|
|
10
|
+
xtend.rmt.first-class-app-authoring.v1
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
## Grundregeln
|
|
14
|
+
|
|
15
|
+
- RMT ist App-Authoring-Modell.
|
|
16
|
+
- XTend-Komponenten sind `xtend.component` Records.
|
|
17
|
+
- XRouter wird ueber `xtend.xrouter` angebunden.
|
|
18
|
+
- Templates nutzen bevorzugt `dom_descriptor`.
|
|
19
|
+
- Event Bindings laufen als `dom-event-to-rmt-command`.
|
|
20
|
+
- Fabric-, Lane- und Fiber-Hints bleiben Metadata.
|
|
21
|
+
- Der RMT Kernel importiert keine XTend-Klassen oder XTend-Typen.
|
|
22
|
+
|
|
23
|
+
Die Boundary bleibt:
|
|
24
|
+
|
|
25
|
+
```text
|
|
26
|
+
no-rmt-kernel-import-of-xtend-types
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## Minimalstruktur
|
|
30
|
+
|
|
31
|
+
```json
|
|
32
|
+
{
|
|
33
|
+
"manifest": {
|
|
34
|
+
"metadata": {
|
|
35
|
+
"contractVersion": "xtend.rmt.first-class-app-authoring.v1",
|
|
36
|
+
"renderMode": "shell-first"
|
|
37
|
+
}
|
|
38
|
+
},
|
|
39
|
+
"adapters": [
|
|
40
|
+
{ "id": "xtend.component", "kind": "component" },
|
|
41
|
+
{ "id": "xtend.xrouter", "kind": "router" }
|
|
42
|
+
],
|
|
43
|
+
"components": [
|
|
44
|
+
{
|
|
45
|
+
"id": "settings.status",
|
|
46
|
+
"kind": "custom_element",
|
|
47
|
+
"adapter": "xtend.component",
|
|
48
|
+
"tag": "x-status",
|
|
49
|
+
"props": { "tone": "success" },
|
|
50
|
+
"schedule": "component.visible.mount",
|
|
51
|
+
"fabric": { "lane": "visible", "fiber": "component.mount" }
|
|
52
|
+
}
|
|
53
|
+
],
|
|
54
|
+
"routes": [
|
|
55
|
+
{ "id": "settings", "path": "/settings", "template": "settings.page" }
|
|
56
|
+
],
|
|
57
|
+
"templates": [
|
|
58
|
+
{
|
|
59
|
+
"id": "settings.page",
|
|
60
|
+
"mode": "dom_descriptor",
|
|
61
|
+
"children": [
|
|
62
|
+
{ "component": "settings.status" }
|
|
63
|
+
]
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Referenzpfade
|
|
70
|
+
|
|
71
|
+
- Contract: `development/XTend-RMT-First-Class-App-Authoring.md`
|
|
72
|
+
- Fixture: `tests/fixtures/rmt-first-class-xtend-app.rmt`
|
|
73
|
+
- Demo-App: `xtendrmt/rmt-first-demo-app.rmt`
|
|
74
|
+
- Browser-Smoke: `tests/browser/fixtures/rmt-first-demo-app-smoke.html`
|
|
75
|
+
- Gate: `node scripts/run_xtend_tests.js rmt-first-class-app --json`
|
|
76
|
+
- Demo-Gate: `node scripts/run_xtend_tests.js rmt-first-demo-app --json`
|
|
77
|
+
|
|
78
|
+
## Fabric und Telemetry
|
|
79
|
+
|
|
80
|
+
Komponenten erhalten Fabric-Kontext ueber Adapter Injection. Die kanonische Boundary ist:
|
|
81
|
+
|
|
82
|
+
```text
|
|
83
|
+
adapter-injection-via-xtend-component-resolveFabricContext
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
`window.XTendFabric` kann durch Hosts genutzt werden, ist aber nicht die Contract-Oberflaeche einer Komponente.
|
|
87
|
+
|
|
88
|
+
## Release-Handoff
|
|
89
|
+
|
|
90
|
+
Der Abschluss von Epic 10 wird in [Epic 10 Release Handoff](./epic10-release-handoff.md) dokumentiert. Die dortige Gate-Kette entscheidet, ob ein RMT-first XTend App-Pfad releasefaehig genug fuer einen Kandidaten ist.
|
|
91
|
+
|
|
92
|
+
Seit `WP-E13-09` buendelt [RMT Production Readiness](./rmt-production-readiness.md) diesen Pfad unter `xtend.epic13.rmt-production-readiness.v1`: Shell-first App Shell, Routing, Components, Fabric/Lanes, Lifecycle Telemetry, Diagnostics und Artifact Parity sind als RC1-Gate verbunden. `WP-E13-10` hat [Docs RMT Production Hardening](./docs-rmt-production-hardening.md) abgeschlossen; `WP-E13-11` hat [Trusted DOM Boundary Browser Proof](./trusted-dom-boundary-browser-proof.md) und `xtend.epic13.trusted-dom-boundary.v1` abgeschlossen. `WP-E13-12` hat [RC1 Migration Notes](./rc1-migration-notes.md) und `xtend.epic13.rc1-migration-notes-semver.v1` abgeschlossen. `WP-E13-13` hat [RC1 Gate Matrix und CI-Handoff](./rc1-gate-matrix-ci-handoff.md) und `xtend.epic13.rc1-gate-matrix-ci-handoff.v1` abgeschlossen.
|
|
93
|
+
|
|
94
|
+
## Component UX Authoring
|
|
95
|
+
|
|
96
|
+
Seit `WP-E11-16` ergaenzt [Component UX App Authoring](./component-ux-app-authoring.md) diesen Guide um sichtbare UX-Regeln fuer RMT-first Apps. Dazu gehoeren Theme, Motion, Density, Viewports, Browser-Smokes und die Component Shell Theme Matrix `xtend.epic11.component-shell-theme-matrix.v1`.
|
|
97
|
+
|
|
98
|
+
Seit `WP-E11-17` beschreibt [Component Long-Tail Migration](./component-long-tail-migration.md), welche Legacy- und Infrastrukturkomponenten zuerst fuer RMT-first App-Kompatibilitaet nachgehaertet werden.
|
|
99
|
+
|
|
100
|
+
Der lokale Docs-Gate lautet:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
node scripts/run_xtend_tests.js component-ux-authoring-docs --json
|
|
104
|
+
node scripts/run_xtend_tests.js component-long-tail-migration --json
|
|
105
|
+
```
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# RMT Kernel Panic Recovery Incident Handoff
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.rmt.kernel-migration-authoring-incident-handoff.v1`
|
|
4
|
+
- Workpackage: `RKSH-WP-11`
|
|
5
|
+
- Local gate: `node scripts/run_xtend_tests.js rmt-kernel-handoff-docs --json`
|
|
6
|
+
|
|
7
|
+
Dieses Handoff beschreibt, wie Host-Teams Panic- und Recovery-Diagnostics auswerten, wenn die Kernel-Trust-Schicht fehlerhafte Outputs blockiert oder Recovery startet.
|
|
8
|
+
|
|
9
|
+
## Diagnostics-Kanaele
|
|
10
|
+
|
|
11
|
+
| Kanal | Zweck |
|
|
12
|
+
|-------|-------|
|
|
13
|
+
| `rmt.kernel.panic` | Panic-State, Trigger, Severity, Scope und blockierte Commits. |
|
|
14
|
+
| `rmt.kernel.recovery` | Recovery-Outcome, Snapshot-Nutzung, Fallback und Quarantaene. |
|
|
15
|
+
| `rmt.kernel.escalation` | Escalation Envelope aus Diagnostics Hub oder Command Bus. |
|
|
16
|
+
| `rmt.kernel.scheduler_failure` | `failed`, `aborted`, `panic_blocked` und Backpressure-Failure fuer Jobs. |
|
|
17
|
+
|
|
18
|
+
## Mindestfelder fuer Incident Review
|
|
19
|
+
|
|
20
|
+
- `panicId`
|
|
21
|
+
- `correlationId`
|
|
22
|
+
- `state`
|
|
23
|
+
- `severity`
|
|
24
|
+
- `scope`
|
|
25
|
+
- `trigger`
|
|
26
|
+
- `blockedCommitCount`
|
|
27
|
+
- `recoveryAction`
|
|
28
|
+
- `quarantined`
|
|
29
|
+
- `hostNotified`
|
|
30
|
+
- `affectedJobs`
|
|
31
|
+
- `firstSeenAt`
|
|
32
|
+
- `lastSeenAt`
|
|
33
|
+
|
|
34
|
+
## Incident Severity
|
|
35
|
+
|
|
36
|
+
| Severity | Bedeutung | Erwartete Reaktion |
|
|
37
|
+
|----------|-----------|--------------------|
|
|
38
|
+
| `warning` | Output wurde korrigiert oder sanitisiert. | Verdicts beobachten, keine Eskalation noetig. |
|
|
39
|
+
| `degraded` | Output wurde blockiert, UI bleibt mit sicherem Fallback nutzbar. | Host-Team prueft Authoring oder Remote Source. |
|
|
40
|
+
| `critical` | Surface, Template oder Binding wurde quarantined. | Incident oeffnen, `correlationId` und `panicId` verfolgen. |
|
|
41
|
+
| `fatal` | Recovery ist fehlgeschlagen oder mehrere Kernel-Scope-Fehler korrelieren. | Release/Traffic stoppen und letzten sicheren Stand wiederherstellen. |
|
|
42
|
+
|
|
43
|
+
## Recovery-Aktionen
|
|
44
|
+
|
|
45
|
+
| `recoveryAction` | Bedeutung | Host-Handoff |
|
|
46
|
+
|------------------|-----------|--------------|
|
|
47
|
+
| `rollback-last-safe-snapshot` | Der Kernel stellt den letzten sicheren Snapshot wieder her. | Snapshot-ID und Surface-Scope sichern. |
|
|
48
|
+
| `render-safe-fallback` | Ein gepruefter Fallback ersetzt unsicheren Output. | Fallback-Markup und Reason Code pruefen. |
|
|
49
|
+
| `quarantine-surface` | Betroffene Surface nimmt keine neuen Commits an. | Remote Source oder Adapter deaktivieren. |
|
|
50
|
+
| `abort-scope-jobs` | Scheduler Jobs im betroffenen Scope werden abgebrochen. | `rmt.kernel.scheduler_failure` mit `panic_blocked` pruefen. |
|
|
51
|
+
| `notify-host` | Host Adapter wird aktiv ueber Recovery informiert. | `hostNotified` und Host-Log-Korrelation bestaetigen. |
|
|
52
|
+
|
|
53
|
+
## Triage-Ablauf
|
|
54
|
+
|
|
55
|
+
1. `rmt.kernel.panic` nach `panicId`, `correlationId`, `scope`, `trigger` und `blockedCommitCount` filtern.
|
|
56
|
+
2. `rmt.kernel.recovery` mit demselben `correlationId` verbinden und `recoveryAction`, `quarantined` sowie `hostNotified` bewerten.
|
|
57
|
+
3. `rmt.kernel.escalation` pruefen, wenn Diagnostics-Subscriber oder Command-Handler beteiligt waren.
|
|
58
|
+
4. `rmt.kernel.scheduler_failure` pruefen, wenn Jobs `failed`, `aborted` oder `panic_blocked` sind.
|
|
59
|
+
5. Authoring anhand von [RMT Kernel Trusted Output Authoring](./rmt-kernel-trusted-output-authoring.md) korrigieren.
|
|
60
|
+
6. Migration und Regression mit [RMT Kernel Security Hardening Migration](./rmt-kernel-security-hardening-migration.md) und `node scripts/run_xtend_tests.js rmt-kernel-security-regression --json` absichern.
|
|
61
|
+
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
# RMT Kernel Security Hardening Migration
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.rmt.kernel-migration-authoring-incident-handoff.v1`
|
|
4
|
+
- Workpackage: `RKSH-WP-11`
|
|
5
|
+
- Status: `completed`
|
|
6
|
+
- Local gate: `node scripts/run_xtend_tests.js rmt-kernel-handoff-docs --json`
|
|
7
|
+
|
|
8
|
+
Dieses Dokument beschreibt die Migration fuer Hosts und RMT-Authoring, die bisher implizit erlaubte Runtime-Outputs genutzt haben. Seit der Kernel-Haertung gilt: HTML, Attribute, Properties und Remote Outputs werden erst committed, wenn die Trust-Schicht ein `RmtKernelRuntimeTrustVerdict` erzeugt hat.
|
|
9
|
+
|
|
10
|
+
## Wann eine Trust Boundary erforderlich ist
|
|
11
|
+
|
|
12
|
+
| Output | Trust Boundary | Migration |
|
|
13
|
+
|--------|----------------|-----------|
|
|
14
|
+
| `slot.html`, `prerender.html`, `fallback.html` | HTML muss vor jedem DOM-Commit bewertet werden. | `commitTrustedHtml` mit `sanitize html`, `html_fragment` und `safeFallbackHtml` nutzen. |
|
|
15
|
+
| Direkte DOM-HTML-Sinks wie `innerHTML`, `insertAdjacentHTML` und `template.innerHTML` | Diese Sinks bleiben privilegierte Trusted-DOM-Sinks. | Direkte Writes entfernen und den Runtime Trust-Sink-Adapter verwenden. |
|
|
16
|
+
| Attribute wie `href`, `src`, `srcset`, `action`, `formaction` und `srcdoc` | URL- und Sandbox-Policy entscheidet vor dem Commit. | `commitTrustedAttribute` verwenden und gefaehrliche Protokolle wie `javascript:` blockieren. |
|
|
17
|
+
| Event-nahe Attribute wie `onclick`, `onload` oder `onerror` | Event-Attribute sind keine erlaubten Markup-Outputs. | Commands oder registrierte Event-Handler statt HTML-Attributen verwenden. |
|
|
18
|
+
| Style- und DOM-Property-Writes wie `style`, `innerHTML`, `outerHTML`, `srcdoc` | Property-Policy bewertet Nebenwirkungen und DOM-Clobbering-Risiko. | `commitTrustedProperty` nur fuer explizit erlaubte Properties nutzen. |
|
|
19
|
+
| Remote Outputs und Adapter Outputs | Remote Surface Boundaries brauchen Scope, Origin, Capability und Integrity-Kontext. | Remote Outputs als `remote-surface` oder `adapter-output` scope in die Trust Authority geben. |
|
|
20
|
+
|
|
21
|
+
## Legacy-Pfade ersetzen
|
|
22
|
+
|
|
23
|
+
1. Direkte HTML-Commits aus Komponenten, Adaptern und Host-Bridges entfernen. Der Kernel darf `innerHTML`, `insertAdjacentHTML` oder Template-HTML nur ueber `commitTrustedHtml` erreichen.
|
|
24
|
+
2. HTML, das weiterhin erlaubt sein soll, als `html_fragment` markieren und durch `sanitize html` fuehren. Der Sanitizer muss `script`, `iframe`, `srcdoc`, `on*`, `javascript:` und vergleichbare gefaehrliche Patterns entfernen oder blockieren.
|
|
25
|
+
3. Reine Texte als Text schreiben: `textContent` ist fuer Labels, Status, Fehlermeldungen und User Content der bevorzugte Pfad.
|
|
26
|
+
4. Attribute trennen: `data-*` und `aria-*` bleiben normale strukturierte Attribute, URL-Attribute laufen durch `commitTrustedAttribute`.
|
|
27
|
+
5. Properties trennen: nur explizit erlaubte Properties laufen durch `commitTrustedProperty`; HTML-nahe Properties bleiben blockiert.
|
|
28
|
+
6. Fallbacks wie `fallback.html` nicht privilegieren. Recovery-Fallbacks muessen dieselbe Policy wie normale Outputs erfuellen und ein `safeFallbackHtml` besitzen.
|
|
29
|
+
7. Diagnose und Regression pruefen: `listTrustVerdicts()`, `rmt.kernel.panic`, `rmt.kernel.recovery` und `node scripts/run_xtend_tests.js rmt-kernel-security-regression --json` muessen nach der Migration gruen bleiben.
|
|
30
|
+
|
|
31
|
+
## SemVer-Auswirkung
|
|
32
|
+
|
|
33
|
+
Blockierte Legacy-Outputs koennen ein Breaking Change sein, wenn veroeffentlichte Hosts bisher bewusst unsicheres Markup gerendert haben und dieses Verhalten Teil der dokumentierten Integrationsoberflaeche war.
|
|
34
|
+
|
|
35
|
+
| Aenderung | SemVer |
|
|
36
|
+
|-----------|--------|
|
|
37
|
+
| Unsichere HTML-, URL- oder Event-Attribute werden neu blockiert und bestehende Apps koennen dadurch sichtbaren Content verlieren. | `major` |
|
|
38
|
+
| Unsichere Pfade erhalten Warnungen, Diagnostics oder Opt-in-Fallbacks, aber der bisher sichere Output bleibt sichtbar. | `minor` |
|
|
39
|
+
| Nur Docs, Tests, Report-Felder oder strengere Diagnostics ohne Output-Aenderung werden ergaenzt. | `patch` |
|
|
40
|
+
|
|
41
|
+
Release Notes muessen fuer behavior-changing Blocks mindestens die betroffenen Sinks, den Reason Code, den Recovery-Pfad und die empfohlene Migration nennen.
|
|
42
|
+
|
|
43
|
+
## Verifikation
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
node scripts/run_xtend_tests.js rmt-kernel-handoff-docs --json
|
|
47
|
+
node scripts/run_xtend_tests.js rmt-kernel-security-regression --json
|
|
48
|
+
node scripts/verify_xtendrmt_artifact_parity.js --json
|
|
49
|
+
```
|
|
50
|
+
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# RMT Kernel Trusted Output Authoring
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.rmt.kernel-migration-authoring-incident-handoff.v1`
|
|
4
|
+
- Workpackage: `RKSH-WP-11`
|
|
5
|
+
- Package script: `npm run test:rmt-kernel-handoff-docs`
|
|
6
|
+
|
|
7
|
+
RMT-Authoring darf nicht davon ausgehen, dass ein String sicher ist, nur weil er aus einem Template, einer Remote Surface oder einem Adapter stammt. Jeder output-nahe Authoring-Pfad braucht eine klare Trust Boundary und einen sicheren Fallback.
|
|
8
|
+
|
|
9
|
+
## Authoring-Regeln
|
|
10
|
+
|
|
11
|
+
- Text bleibt Text: Labels, Status, User Content und Fehlermeldungen als `textContent` oder strukturierte Textfelder authoren.
|
|
12
|
+
- HTML nur bewusst authoren: `html_fragment` mit `sanitize html` und explizitem Scope verwenden.
|
|
13
|
+
- Attribute klein halten: `data-*` und `aria-*` sind bevorzugt, URL-Attribute laufen ueber `commitTrustedAttribute`.
|
|
14
|
+
- Properties nur fuer erlaubte Runtime-Ziele nutzen: DOM-HTML-Properties nicht als Abkuerzung verwenden.
|
|
15
|
+
- Fallbacks sind nicht privilegiert: `safeFallbackHtml` muss selbst sanitizbar und nicht interaktiv gefaehrlich sein.
|
|
16
|
+
- Remote Surface Outputs brauchen Scope, Capability, Origin und Integrity-Kontext, bevor sie in den Kernel gelangen.
|
|
17
|
+
|
|
18
|
+
## Sichere Muster
|
|
19
|
+
|
|
20
|
+
```js
|
|
21
|
+
runtime.commitTrustedHtml(slotTarget, {
|
|
22
|
+
scope: 'slot',
|
|
23
|
+
source: 'slot.html',
|
|
24
|
+
html: model.safeSummaryHtml,
|
|
25
|
+
policy: {
|
|
26
|
+
transform: 'sanitize html',
|
|
27
|
+
output: 'html_fragment'
|
|
28
|
+
},
|
|
29
|
+
safeFallbackHtml: '<p data-rmt-fallback="safe">Content unavailable.</p>'
|
|
30
|
+
});
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
```js
|
|
34
|
+
runtime.commitTrustedAttribute(linkTarget, {
|
|
35
|
+
scope: 'binding',
|
|
36
|
+
name: 'href',
|
|
37
|
+
value: model.href,
|
|
38
|
+
allowedProtocols: ['https:', 'mailto:']
|
|
39
|
+
});
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
```js
|
|
43
|
+
runtime.commitTrustedProperty(inputTarget, {
|
|
44
|
+
scope: 'binding',
|
|
45
|
+
name: 'value',
|
|
46
|
+
value: model.value,
|
|
47
|
+
policy: 'form-control-value'
|
|
48
|
+
});
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Authoring-Checkliste
|
|
52
|
+
|
|
53
|
+
| Frage | Sichere Antwort |
|
|
54
|
+
|-------|-----------------|
|
|
55
|
+
| Enthält der Output Markup? | `html_fragment` plus `sanitize html` und `commitTrustedHtml`. |
|
|
56
|
+
| Ist es nur Text? | `textContent` oder ein strukturierter Text-Record. |
|
|
57
|
+
| Ist es ein URL-Attribut? | `commitTrustedAttribute` mit Protokoll-Allowlist. |
|
|
58
|
+
| Ist es `data-*` oder `aria-*`? | Strukturierter Attribute-Commit, keine HTML-Interpolation. |
|
|
59
|
+
| Ist es ein Fallback? | `safeFallbackHtml` mit derselben Policy wie normale HTML-Outputs. |
|
|
60
|
+
| Kommt es aus Remote oder Adapter Code? | Trust Scope `remote-surface` oder `adapter-output`, Capability und Diagnostics-Korrelation. |
|
|
61
|
+
|
|
62
|
+
## No-go-Muster
|
|
63
|
+
|
|
64
|
+
- Markup aus Remote Sources direkt in `slot.html`, `prerender.html` oder `fallback.html` schleusen.
|
|
65
|
+
- Event-Attribute wie `onclick` als Daten transportieren.
|
|
66
|
+
- `style` oder HTML-nahe Properties als Escape Hatch verwenden.
|
|
67
|
+
- `safeFallbackHtml` aus derselben unsicheren Quelle wie den blockierten Output bilden.
|
|
68
|
+
- Diagnostics ignorieren, wenn ein Verdict `blocked` oder `panic` meldet.
|
|
69
|
+
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
# RMT Language Server und Editor Setup
|
|
2
|
+
|
|
3
|
+
- Status: produktiv vorbereitet ab `WP-E14-14`
|
|
4
|
+
- Contract: `xtend.rmt.editor-packaging.v1`
|
|
5
|
+
- Language Server: `xtend.rmt.language-server.v1`
|
|
6
|
+
- Snippet Catalog: `xtend.rmt.snippet-catalog.v1`
|
|
7
|
+
- Epic 14 Handoff: `xtend.epic14.lsp-handoff.v1`
|
|
8
|
+
- Primaerer Dateityp: `.rmt`
|
|
9
|
+
- Lokale Gates:
|
|
10
|
+
- `node scripts/run_xtend_tests.js rmt-editor-packaging --json`
|
|
11
|
+
- `node scripts/run_xtend_tests.js rmt-tooling-docs --json`
|
|
12
|
+
- `node scripts/run_xtend_tests.js epic14-lsp-handoff --json`
|
|
13
|
+
|
|
14
|
+
## Ziel
|
|
15
|
+
|
|
16
|
+
Das RMT Tooling ist editor-agnostisch. Die fachliche Source of Truth liegt in:
|
|
17
|
+
|
|
18
|
+
- `tools/rmt-language`
|
|
19
|
+
- `tools/rmt-linter`
|
|
20
|
+
- `tools/rmt-language-server`
|
|
21
|
+
|
|
22
|
+
Editor-Packages duerfen Snippets, Syntax-Highlighting und Startbefehle fuer den LSP bereitstellen. Sie duerfen keine zweite RMT-Semantik implementieren.
|
|
23
|
+
|
|
24
|
+
## Language Server starten
|
|
25
|
+
|
|
26
|
+
Der Server spricht stdio JSON-RPC:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
node tools/rmt-language-server/server.js
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Der Server bietet aktuell:
|
|
33
|
+
|
|
34
|
+
- Diagnostics
|
|
35
|
+
- Completion
|
|
36
|
+
- Hover
|
|
37
|
+
- Document Symbols
|
|
38
|
+
- Definition
|
|
39
|
+
- Code Actions
|
|
40
|
+
|
|
41
|
+
Der LSP nutzt denselben Diagnosekern wie `xt rmt lint`. Editor-Integrationen sollen deshalb keine eigenen RMT-Regeln pflegen.
|
|
42
|
+
|
|
43
|
+
## LSP Capability Matrix
|
|
44
|
+
|
|
45
|
+
| Capability | Protokoll / Oberflaeche | Status | Source of Truth | Gate |
|
|
46
|
+
|------------|--------------------------|--------|-----------------|------|
|
|
47
|
+
| Diagnostics | `textDocument/publishDiagnostics` | implemented | `xtend.rmt.linter.rule-engine.v1` | `rmt-linter-rules` |
|
|
48
|
+
| Completion | `textDocument/completion` | implemented | `xtend.rmt.completion-provider.v1` | `rmt-completions` |
|
|
49
|
+
| Hover | `textDocument/hover` | implemented | `xtend.rmt.hover-provider.v1` | `rmt-navigation` |
|
|
50
|
+
| Document Symbols | `textDocument/documentSymbol` | implemented | `xtend.rmt.document-symbols-provider.v1` | `rmt-navigation` |
|
|
51
|
+
| Definition | `textDocument/definition` | implemented | `xtend.rmt.definition-provider.v1` | `rmt-navigation` |
|
|
52
|
+
| Code Actions | `textDocument/codeAction` | implemented | `xtend.rmt.code-action-provider.v1` | `rmt-code-actions` |
|
|
53
|
+
| Agent Repair Report | `xt rmt lint --agent` | implemented | `xtend.rmt.ai-agent-repair-report.v1` | `rmt-agent-report` |
|
|
54
|
+
| Snippets | Editor Packaging | implemented | `xtend.rmt.snippet-catalog.v1` | `rmt-editor-packaging` |
|
|
55
|
+
| Workspace Symbols | `workspace/symbol` | planned | Project Index Follow-up | future |
|
|
56
|
+
| Rename | `textDocument/rename` | planned | Safe Refactor Follow-up | future |
|
|
57
|
+
| References | `textDocument/references` | planned | Project Index Follow-up | future |
|
|
58
|
+
| Semantic Tokens | `textDocument/semanticTokens` | planned | Syntax Highlighting Follow-up | future |
|
|
59
|
+
| Formatting | `textDocument/formatting` | planned | Formatter Follow-up | future |
|
|
60
|
+
|
|
61
|
+
## Known Limitations
|
|
62
|
+
|
|
63
|
+
- RMT ist im aktuellen Authoring-MVP weiter JSON-basiert. Eine freundlichere DSL-Syntax ist Folgearbeit.
|
|
64
|
+
- `textDocument/formatting` ist geplant, aber nicht produktiv freigegeben.
|
|
65
|
+
- `workspace/symbol`, `textDocument/rename` und `textDocument/references` brauchen einen projektweiten Index und bleiben bewusst ausserhalb des MVP.
|
|
66
|
+
- Marketplace-Packaging fuer einzelne Editoren ist nicht Teil von Epic 14. Die generischen LSP-Setups bleiben der aktuelle Integrationspfad.
|
|
67
|
+
- Der Language Server fuehrt keine XTend-Komponenten aus, startet keinen XRouter und materialisiert kein DOM.
|
|
68
|
+
- `.rmt.json` bleibt lesbar, wird aber als Fallback behandelt und soll in neuen Projekten nicht der Normalpfad sein.
|
|
69
|
+
|
|
70
|
+
## Snippets
|
|
71
|
+
|
|
72
|
+
Der editor-agnostische Snippet-Katalog liegt in:
|
|
73
|
+
|
|
74
|
+
```text
|
|
75
|
+
tools/rmt-language/snippets/index.js
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Das VS-Code-kompatible Exportformat liegt in:
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
tools/rmt-language/snippets/rmt.code-snippets
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Alle Snippets erzeugen native `.rmt` Authoring-Strukturen. `.rmt.json` bleibt nur ein Parser-/Linter-Fallback und soll in neuen Snippets nicht genutzt werden.
|
|
85
|
+
|
|
86
|
+
Wichtige Prefixes:
|
|
87
|
+
|
|
88
|
+
| Prefix | Zweck |
|
|
89
|
+
|--------|-------|
|
|
90
|
+
| `rmt-app` | minimale native App-Shell |
|
|
91
|
+
| `rmt-component` | XTend Component Record |
|
|
92
|
+
| `rmt-route` | XRouter Route Record |
|
|
93
|
+
| `rmt-schedule` | Schedule Policy |
|
|
94
|
+
| `rmt-template-dom` | sicheres `dom_descriptor` Template |
|
|
95
|
+
| `rmt-template-html` | `html_fragment` mit Trusted-DOM-Boundary |
|
|
96
|
+
|
|
97
|
+
## VS Code
|
|
98
|
+
|
|
99
|
+
Ein duennes Bridge-Package liegt in:
|
|
100
|
+
|
|
101
|
+
```text
|
|
102
|
+
tools/rmt-editor/vscode
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Es registriert:
|
|
106
|
+
|
|
107
|
+
- Language ID `rmt`
|
|
108
|
+
- Dateiendung `.rmt`
|
|
109
|
+
- JSON-basierte TextMate-Grammatik
|
|
110
|
+
- RMT Snippets
|
|
111
|
+
- Command `XTendRMT: Show Language Server Command`
|
|
112
|
+
|
|
113
|
+
Bis ein voll gepackter VS-Code-LanguageClient freigegeben ist, kann ein generischer LSP-Client mit folgendem Befehl genutzt werden:
|
|
114
|
+
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"command": "node",
|
|
118
|
+
"args": ["tools/rmt-language-server/server.js"]
|
|
119
|
+
}
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
## JetBrains
|
|
123
|
+
|
|
124
|
+
JetBrains-IDEs koennen ueber einen generischen LSP-Client oder ein lokales File-Watcher-/External-Tool-Setup angebunden werden.
|
|
125
|
+
|
|
126
|
+
Empfohlene Werte:
|
|
127
|
+
|
|
128
|
+
- Language ID: `rmt`
|
|
129
|
+
- Extension: `.rmt`
|
|
130
|
+
- Command: `node`
|
|
131
|
+
- Args: `tools/rmt-language-server/server.js`
|
|
132
|
+
|
|
133
|
+
## Neovim
|
|
134
|
+
|
|
135
|
+
Minimaler `nvim-lspconfig`-kompatibler Startpunkt:
|
|
136
|
+
|
|
137
|
+
```lua
|
|
138
|
+
local lspconfig = require('lspconfig')
|
|
139
|
+
local configs = require('lspconfig.configs')
|
|
140
|
+
|
|
141
|
+
configs.xtendrmt = {
|
|
142
|
+
default_config = {
|
|
143
|
+
cmd = { 'node', 'tools/rmt-language-server/server.js' },
|
|
144
|
+
filetypes = { 'rmt' },
|
|
145
|
+
root_dir = lspconfig.util.root_pattern('package.json', '.git')
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
lspconfig.xtendrmt.setup({})
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
## Helix
|
|
153
|
+
|
|
154
|
+
Beispiel fuer `languages.toml`:
|
|
155
|
+
|
|
156
|
+
```toml
|
|
157
|
+
[[language]]
|
|
158
|
+
name = "rmt"
|
|
159
|
+
scope = "source.rmt"
|
|
160
|
+
file-types = ["rmt"]
|
|
161
|
+
language-servers = ["xtendrmt"]
|
|
162
|
+
|
|
163
|
+
[language-server.xtendrmt]
|
|
164
|
+
command = "node"
|
|
165
|
+
args = ["tools/rmt-language-server/server.js"]
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
## Boundary
|
|
169
|
+
|
|
170
|
+
Das Editor-Packaging darf keine XTend-Komponenten ausfuehren, keinen XRouter starten und keine DOM-Seiteneffekte erzeugen. Es startet nur den LSP und stellt statische Snippets bereit.
|
|
171
|
+
|
|
172
|
+
## Verwandte Guides
|
|
173
|
+
|
|
174
|
+
- [RMT Linter und AI-Agent Repair Report](./rmt-linter.md)
|
|
175
|
+
- [XTendRMT Native Authoring Guide](./xtendrmt-native-authoring.md)
|
|
176
|
+
- [Quick Start Guide](./quick-start-guide.md)
|
|
177
|
+
- [Epic 14 Abschluss und LSP Handoff](../development/XTendRMT-Epic14-Abschluss-und-LSP-Handoff.md)
|