@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,265 @@
|
|
|
1
|
+
# XTend Loader
|
|
2
|
+
|
|
3
|
+
## Uebersicht
|
|
4
|
+
|
|
5
|
+
Der kanonische XTend Loader ist `xtend-loader.js`.
|
|
6
|
+
|
|
7
|
+
Er ist ein lokaler ES-Modul-Entry fuer XTend UI und uebernimmt das dynamische Laden von Manifest, Core-Modulen, explizit vorgeladenen Komponenten, DOM-verwendeten Komponenten und `api.js`.
|
|
8
|
+
|
|
9
|
+
`xtend-dev.js` ist nur noch ein Legacy-Stub. Neue Demos, Browser-Smokes, Scaffold-Ausgaben und offizielle Beispiele verwenden `xtend-loader.js`.
|
|
10
|
+
|
|
11
|
+
Seit `ER-WP-05` sind die Default-Demo- und Fixture-Pfade formal auf den kanonischen Loader beziehungsweise bewusst klassifizierte Spezial-Smokes festgelegt. Seit `ER-WP-18` misst der Loader Manifest Load, Modul-Load und Custom Element Definition ueber lokale Performance Marks. Seit `ER-WP-28` validiert er Manifest- und Modul-URLs gegen `xtend.security.loader-policy.v1`, `xtend.security.manifest-policy.v1` und `xtend.security.import-policy.v1`.
|
|
12
|
+
|
|
13
|
+
## Einbindung
|
|
14
|
+
|
|
15
|
+
```html
|
|
16
|
+
<script type="module" src="./xtend-loader.js"></script>
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Optional kann ein lokales Manifest gesetzt werden:
|
|
20
|
+
|
|
21
|
+
```html
|
|
22
|
+
<script
|
|
23
|
+
type="module"
|
|
24
|
+
src="./xtend-loader.js"
|
|
25
|
+
data-manifest="./components/manifest.json">
|
|
26
|
+
</script>
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
Der Loader nutzt standardmaessig:
|
|
30
|
+
|
|
31
|
+
```text
|
|
32
|
+
components/manifest.json
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Contract
|
|
36
|
+
|
|
37
|
+
Der Loader Contract lautet:
|
|
38
|
+
|
|
39
|
+
```text
|
|
40
|
+
xtend.loader.contract.v1
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Security Contracts:
|
|
44
|
+
|
|
45
|
+
```text
|
|
46
|
+
xtend.security.loader-policy.v1
|
|
47
|
+
xtend.security.manifest-policy.v1
|
|
48
|
+
xtend.security.import-policy.v1
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Browsernah stellt der Loader diese Oberflaeche bereit:
|
|
52
|
+
|
|
53
|
+
```js
|
|
54
|
+
window.XTendLoader
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
Die automatische Boot-Promise liegt unter:
|
|
58
|
+
|
|
59
|
+
```js
|
|
60
|
+
window.__XTendLoaderBootPromise
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Verbose Mode
|
|
64
|
+
|
|
65
|
+
Der PROD-Loader ist standardmaessig konsolenruhig. Die Loader-Datei enthaelt dafuer oben eine direkte Flag:
|
|
66
|
+
|
|
67
|
+
```js
|
|
68
|
+
const verbose_mode = 'auto';
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Unterstuetzte Werte:
|
|
72
|
+
|
|
73
|
+
| Wert | Verhalten |
|
|
74
|
+
|------|-----------|
|
|
75
|
+
| `'true'` | Verbose ist dauerhaft aktiv. Loader-Modulvorgaenge und angeschlossene Core-Runtime-Logs werden in der Browserkonsole ausgegeben. |
|
|
76
|
+
| `'false'` | Verbose ist gesperrt. Es kann nur durch eine Aenderung der Loader-Datei wieder aktiviert werden. |
|
|
77
|
+
| `'auto'` | Verbose ist beim ersten Start aus und kann in der Browserkonsole fuer die laufende Tab-Session aktiviert werden. |
|
|
78
|
+
|
|
79
|
+
Browser-Konsole:
|
|
80
|
+
|
|
81
|
+
```js
|
|
82
|
+
XTendLoader.verbose(true)
|
|
83
|
+
XTendLoader.verbose(false)
|
|
84
|
+
XTendLoader.verbose()
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Alternativ:
|
|
88
|
+
|
|
89
|
+
```js
|
|
90
|
+
XTendLoader.enableVerbose()
|
|
91
|
+
XTendLoader.disableVerbose()
|
|
92
|
+
XTendLoader.getVerboseState()
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
In `auto` speichert der Loader die Konsolenentscheidung in `sessionStorage`. Nach `XTendLoader.verbose(true)` reicht ein Reload, um auch die initialen Modul-Ladevorgaenge derselben Browser-Session zu sehen. `XTendLoader.verbose(false)` schaltet die Session wieder ruhig.
|
|
96
|
+
|
|
97
|
+
Structured Diagnostics (`xtend-loader-diagnostic`) und Performance Events (`xtend-loader-performance`) bleiben vom Verbose Mode unabhaengig verfuegbar.
|
|
98
|
+
|
|
99
|
+
## Funktionsweise
|
|
100
|
+
|
|
101
|
+
1. Der Loader initialisiert `xtend.loader.style-registry.v1` und injiziert Runtime-Critical Styles fuer Tokens, UI-Effects, Skeletons und undefinierte XTend Custom Elements.
|
|
102
|
+
2. Er wartet auf den Window-Load.
|
|
103
|
+
3. Er validiert `data-manifest` oder `components/manifest.json` gegen die Loader Policy.
|
|
104
|
+
4. Er laedt das Manifest und loest Manifest-URLs relativ zur Manifest-URL auf.
|
|
105
|
+
5. Er validiert jeden Manifest Record gegen die Manifest- und Import-Policy.
|
|
106
|
+
6. Er kann Modul-URLs ueber `data-module-cache-bust` versionieren, damit Livesysteme keine stale Component-Module aus dem Browsercache ziehen.
|
|
107
|
+
7. Er laedt `xstate` und danach `x-theme`, sofern beide im Manifest stehen. `xstate` wird bewusst nicht cache-gebustet, damit keine zweite State-Modulinstanz entsteht.
|
|
108
|
+
8. Er laedt Eintraege aus `<meta name="xtend-preload">`.
|
|
109
|
+
9. Er erkennt im DOM verwendete XTend-Tags und laedt sichtbare Komponenten sofort.
|
|
110
|
+
10. Er beobachtet nicht sichtbare Komponenten per `IntersectionObserver`.
|
|
111
|
+
11. Er stellt `xtend.loader.skeleton-loader.v1` fuer Shell-, Route- und dynamische Subtree-Fallbacks bereit.
|
|
112
|
+
12. Er validiert und importiert lokal `api.js`, dann ruft er `api.initXTendAPI(manifest)` auf.
|
|
113
|
+
|
|
114
|
+
## StyleRegistry
|
|
115
|
+
|
|
116
|
+
Der Loader exportiert die native StyleRegistry:
|
|
117
|
+
|
|
118
|
+
```js
|
|
119
|
+
window.XTendStyleRegistry
|
|
120
|
+
window.XTendLoader.styles
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Beim Auswerten von `xtend-loader.js` ruft der Loader `ensureRuntimeStyles()` sofort auf. Dadurch sind die kritischen CSS-Regeln vorhanden, bevor Komponenten importiert oder hydriert werden. `xtend.css` bleibt der kanonische Standard-Dateiname fuer Host-Theming und Docs-/App-Layout, ist aber keine harte Voraussetzung mehr fuer Skeletons, UI-Effects, Basis-Tokens oder den FOUC-Schutz undefinierter XTend Custom Elements.
|
|
124
|
+
|
|
125
|
+
Hosts koennen den Theme-Status auslesen:
|
|
126
|
+
|
|
127
|
+
```js
|
|
128
|
+
XTendLoader.getThemeStylesheetState()
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
Komponenten koennen eigene Styles registrieren und auf Shadow Roots anwenden:
|
|
132
|
+
|
|
133
|
+
```js
|
|
134
|
+
const style = XTendLoader.defineComponentStyle('x-example', ':host { display: block; }');
|
|
135
|
+
XTendLoader.adoptStyle(this.shadowRoot, style);
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## SkeletonLoader
|
|
139
|
+
|
|
140
|
+
Der Loader exportiert einen nativen SkeletonLoader fuer Shell-first Apps:
|
|
141
|
+
|
|
142
|
+
```js
|
|
143
|
+
window.XTendLoader.showSkeleton(target, { lines: 8, schedule: 'docs.page.hydrate' });
|
|
144
|
+
window.XTendLoader.hideSkeleton(target);
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Hosts koennen noch nicht definierte XTend Custom Elements ueber `data-xtend-skeleton` als Skeleton anzeigen. Bekannte XTend-Tags ohne Skeleton-Opt-in bleiben bis zur Definition unsichtbar, damit Light-DOM-Text nicht ungestylt aufblitzt. Diese Regeln kommen aus der StyleRegistry und funktionieren auch ohne externes `xtend.css`.
|
|
148
|
+
|
|
149
|
+
## Preload
|
|
150
|
+
|
|
151
|
+
Komponenten koennen weiterhin explizit vorgeladen werden:
|
|
152
|
+
|
|
153
|
+
```html
|
|
154
|
+
<meta name="xtend-preload" content="x-router,x-link,x-dialog,x-modal">
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
Die Werte sind Component IDs aus dem Manifest, keine freien URLs.
|
|
158
|
+
|
|
159
|
+
## Live-Deployment Cache Busting
|
|
160
|
+
|
|
161
|
+
Shell-Apps koennen Loader, Manifest und Component-Module versioniert laden:
|
|
162
|
+
|
|
163
|
+
```html
|
|
164
|
+
<script
|
|
165
|
+
type="module"
|
|
166
|
+
src="/xtend-loader.js?v=20260507"
|
|
167
|
+
data-manifest="/components/manifest.json?v=20260507"
|
|
168
|
+
data-module-cache-bust="20260507">
|
|
169
|
+
</script>
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Der Loader haengt diesen Wert als `xtend-cache` Query-Parameter an Manifest-Module an. `xstate` bleibt davon ausgenommen, weil Komponenten es selbst ueber `./xstate.js` importieren und XTend genau eine State-Instanz behalten soll.
|
|
173
|
+
|
|
174
|
+
## Manifest-Beispiel
|
|
175
|
+
|
|
176
|
+
```json
|
|
177
|
+
{
|
|
178
|
+
"xstate": "./xstate.js",
|
|
179
|
+
"x-theme": "./xtheme.js",
|
|
180
|
+
"x-router": "./xrouter.js",
|
|
181
|
+
"x-link": "./xlink.js",
|
|
182
|
+
"x-dialog": "./xdialog.js",
|
|
183
|
+
"x-modal": "./xmodal.js"
|
|
184
|
+
}
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
## Legacy-Strategie
|
|
188
|
+
|
|
189
|
+
`xtend-dev.js` bleibt fuer eine kurze Migrationsphase als Kompatibilitaetsstub erhalten.
|
|
190
|
+
|
|
191
|
+
Der Stub:
|
|
192
|
+
|
|
193
|
+
- warnt in der Konsole
|
|
194
|
+
- importiert `./xtend-loader.js`
|
|
195
|
+
- enthaelt keine eigene Loader-Logik mehr
|
|
196
|
+
|
|
197
|
+
Default-Demos und Tests duerfen den Legacy-Namen nicht mehr als kanonischen Loaderpfad verwenden.
|
|
198
|
+
|
|
199
|
+
## Security- und Runtime-Grenzen
|
|
200
|
+
|
|
201
|
+
Der Loader bleibt lokal und ESM-basiert.
|
|
202
|
+
|
|
203
|
+
CDN ist kein Default- oder Testpfad. Seit `ER-WP-03` nutzen `api.js`, `components/manifest.json`, Core-Komponenten und Browser-Fixtures repo-lokale XTend-Pfade. Seit `ER-WP-05` pruefen Reference- und Browser-Gates zudem, dass Default-Demos nicht auf `xtend-dev.js` oder XTend-CDN-Bruecken zurueckfallen. Seit `ER-WP-28` verweigert der Loader externe Manifest- und Modul-URLs, `javascript:`, `data:`, `blob:`, nicht passende Dateiendungen und Path-Traversal mit strukturierten Security-Diagnostics.
|
|
204
|
+
|
|
205
|
+
Der Loader emittiert strukturierte lokale Diagnostics als `xtend-loader-diagnostic` Event und bereitet damit die spaetere Anbindung an `XTend-Fabric` vor.
|
|
206
|
+
|
|
207
|
+
Security Refusals nutzen diese Codes:
|
|
208
|
+
|
|
209
|
+
- `xtend.security.loader.refused`
|
|
210
|
+
- `xtend.security.manifest.invalid`
|
|
211
|
+
- `xtend.security.import.refused`
|
|
212
|
+
|
|
213
|
+
## Performance Measurements
|
|
214
|
+
|
|
215
|
+
Der Loader erzeugt `performance.mark` und `performance.measure` Eintraege fuer:
|
|
216
|
+
|
|
217
|
+
| Measure | Phase |
|
|
218
|
+
|---------|-------|
|
|
219
|
+
| `xtend.loader.manifest` | `load` |
|
|
220
|
+
| `xtend.loader.module` | `load` |
|
|
221
|
+
| `xtend.component.define` | `define` |
|
|
222
|
+
|
|
223
|
+
`xtend.component.define` wartet nach dem Modul-Load kurz auf `customElements.whenDefined(tag)`, blockiert den Loader aber nicht dauerhaft, falls ein Manifest-Eintrag kein Custom Element registriert.
|
|
224
|
+
|
|
225
|
+
Zusaetzlich emittiert er fuer jede Messung ein lokales Event:
|
|
226
|
+
|
|
227
|
+
```js
|
|
228
|
+
window.addEventListener('xtend-loader-performance', (event) => {
|
|
229
|
+
console.log(event.detail.name, event.detail.durationMs);
|
|
230
|
+
});
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Die Boot-Promise enthaelt die lokalen Loader-Messwerte:
|
|
234
|
+
|
|
235
|
+
```js
|
|
236
|
+
const boot = await window.__XTendLoaderBootPromise;
|
|
237
|
+
console.log(boot.performanceMeasurements);
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
Die Fabric-Telemetry-Snapshots normalisieren diese Eintraege als `xtend.performance.measurement.v1`.
|
|
241
|
+
|
|
242
|
+
## Gates
|
|
243
|
+
|
|
244
|
+
Relevante lokale Checks:
|
|
245
|
+
|
|
246
|
+
```bash
|
|
247
|
+
npm run dev:local
|
|
248
|
+
npm run test:browser:local
|
|
249
|
+
node scripts/run_xtend_tests.js browser --json
|
|
250
|
+
node scripts/run_xtend_tests.js manifest-import-policy --json
|
|
251
|
+
node scripts/run_xtend_tests.js fabric-performance-measurements --json
|
|
252
|
+
node scripts/run_xtend_tests.js references --json
|
|
253
|
+
npm test
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
`npm run dev:local` startet `scripts/serve_xtend_dev.js` auf Port `4173`. Der Browser-Smoke-Harness nutzt dasselbe Servermodul im Testmodus mit Port `0`.
|
|
257
|
+
|
|
258
|
+
## Weiterfuehrende Themen
|
|
259
|
+
|
|
260
|
+
- [Manifest-Format](./manifest.md)
|
|
261
|
+
- [Manifest Import Policy](./manifest-import-policy.md)
|
|
262
|
+
- [Performance Measurements](./performance-measurements.md)
|
|
263
|
+
- [API-Integration](./api.md)
|
|
264
|
+
- [Komponenten-Entwicklung](./components.md)
|
|
265
|
+
- [Best Practices](./best-practices.md)
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# XTend Policy Types
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.type-exports.policy-declarations.v1`
|
|
4
|
+
- Workpackage: `WP-TypeExports-05`
|
|
5
|
+
- Gate: `node scripts/run_xtend_tests.js type-exports-policy --json`
|
|
6
|
+
- Report: `.xtend-test-results/xtend-type-exports-policy-report.json`
|
|
7
|
+
- Boundary: `types-only-no-runtime-imports`
|
|
8
|
+
- Boundary: `no-rmt-kernel-import-of-xtend-types`
|
|
9
|
+
- Boundary: `declarations-follow-js-runtime-surface`
|
|
10
|
+
|
|
11
|
+
## Zweck
|
|
12
|
+
|
|
13
|
+
`WP-TypeExports-05` macht die Fabric-, A11y- und Security-Policy-APIs fuer TypeScript-Consumer importierbar. Die JS-Runtime bleibt unveraendert; `package.json#exports` ergaenzt nur package-native `types`-Conditions.
|
|
14
|
+
|
|
15
|
+
## Declaration Pack
|
|
16
|
+
|
|
17
|
+
| Bereich | Package Export | Declaration |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| Fabric Runtime | `./fabric` | `./fabric/xtend-fabric.d.ts` |
|
|
20
|
+
| Fabric/RMT Policy | `./fabric/rmt-lane-mapping`, `./fabric/hydration-policy` | `./fabric/*.d.ts` |
|
|
21
|
+
| A11y Policies | `./a11y/screenreader-signals`, `./a11y/motion-contrast-policy`, `./a11y/runtime-a11y-contract` | `./a11y/*.d.ts` |
|
|
22
|
+
| Security Policies | `./security/manifest-import-policy`, `./security/trusted-dom-policy`, `./security/supply-chain-gate-policy` | `./security/*.d.ts` |
|
|
23
|
+
|
|
24
|
+
Der gemeinsame Typkern liegt in `fabric/xtend-policy-public-types.d.ts` und enthaelt `XtendPolicyDiagnostic`, `XtendPolicyReport`, `XtendFabricFiberInput`, `XtendA11ySignal` und `XtendSecurityClassification`.
|
|
25
|
+
|
|
26
|
+
## Drift Gate
|
|
27
|
+
|
|
28
|
+
Der Gate prueft:
|
|
29
|
+
|
|
30
|
+
- jede Policy Package-Export-Condition zeigt auf die erwartete `.d.ts`
|
|
31
|
+
- jede Declaration-Datei existiert und exportiert die Runtime-Symbole des zugehoerigen JS-Moduls
|
|
32
|
+
- zentrale Diagnostic-, Report-, Fiber-, A11y- und Security-Klassifikationstypen bleiben vorhanden
|
|
33
|
+
- Fabric/A11y/Security Runtime-Dateien importieren keine `.d.ts`
|
|
34
|
+
- keine Policy fuehrt Runtime-Abhaengigkeiten in Komponenten, Loader, API oder RMT-Kernel ein
|
|
35
|
+
|
|
36
|
+
## Handoff
|
|
37
|
+
|
|
38
|
+
`WP-TypeExports-06` kann nun Builder-, Scaffold- und Component-Lab-Programm-APIs typisieren. Das Policy-Pack setzt das Muster fuer Integrationsmodule fort: bestehende JS-Runtime, schmale Declaration-Facades, package-native `types`-Conditions und ein Drift-Gate gegen Export-Abweichungen.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# XTend RMT Types
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.type-exports.rmt-declarations.v1`
|
|
4
|
+
- Workpackage: `WP-TypeExports-04`
|
|
5
|
+
- Gate: `node scripts/run_xtend_tests.js type-exports-rmt --json`
|
|
6
|
+
- Report: `.xtend-test-results/xtend-type-exports-rmt-report.json`
|
|
7
|
+
- Boundary: `types-only-no-runtime-imports`
|
|
8
|
+
- Boundary: `no-rmt-kernel-import-of-xtend-types`
|
|
9
|
+
- Boundary: `declarations-follow-js-runtime-surface`
|
|
10
|
+
|
|
11
|
+
## Zweck
|
|
12
|
+
|
|
13
|
+
`WP-TypeExports-04` macht die XTendRMT Runtime, den Browser-Entry und die RMT-Language-/Tooling-Exports fuer TypeScript-Consumer importierbar. Die Runtime bleibt unveraendert: `./rmt` und `./rmt/browser` zeigen per `types`-Condition auf `./xtendrmt/rmt-core.d.ts`, waehrend die JS-Ziele weiterhin `rmt-runtime.esm.js` und `rmt-runtime.browser.js` bleiben.
|
|
14
|
+
|
|
15
|
+
## Declaration Pack
|
|
16
|
+
|
|
17
|
+
| Bereich | Package Export | Declaration |
|
|
18
|
+
| --- | --- | --- |
|
|
19
|
+
| RMT Runtime | `./rmt`, `./rmt/browser` | `./xtendrmt/rmt-core.d.ts` |
|
|
20
|
+
| Source Model und Parser | `./rmt-language/source-model`, `./rmt-language/parser` | `tools/rmt-language/*.d.ts` |
|
|
21
|
+
| vNext Compiler und Contracts | `./rmt-language/vnext-*` | `tools/rmt-language/vnext-*.d.ts` |
|
|
22
|
+
| Tooling Services | `./rmt-language/diagnostics`, `./rmt-language/completions`, `./rmt-language/hover`, `./rmt-language/symbols`, `./rmt-language/definitions`, `./rmt-language/code-actions` | Service-Facades mit gemeinsamen RMT-Tooling-Typen |
|
|
23
|
+
| LSP, Linter, Editor | `./rmt-language-server`, `./rmt-linter/*`, `./rmt-editor/vscode` | LSP-/CLI-/Editor-Facades |
|
|
24
|
+
|
|
25
|
+
Der gemeinsame Typkern liegt in `tools/rmt-language/rmt-tooling-public-types.d.ts` und enthaelt unter anderem `RmtToolingDiagnostic`, `RmtTextEdit`, `RmtWorkspaceEdit`, `RmtLanguageServiceReport` und `RmtJsonRpcMessage`.
|
|
26
|
+
|
|
27
|
+
## Drift Gate
|
|
28
|
+
|
|
29
|
+
Der Gate prueft:
|
|
30
|
+
|
|
31
|
+
- jede RMT Package-Export-Condition zeigt auf die erwartete `.d.ts`
|
|
32
|
+
- jede Declaration-Datei existiert und exportiert die Runtime-Symbole des zugehoerigen JS-Moduls
|
|
33
|
+
- zentrale Diagnostic-, Range-, Edit-, Completion-, Hover-, Symbol-, Definition-, CodeAction- und JSON-RPC-Typen bleiben vorhanden
|
|
34
|
+
- RMT Runtime-Dateien importieren keine `.d.ts`
|
|
35
|
+
- RMT-Kernel importiert keine XTend-UI-Typen, Loader, API, Fabric, A11y oder Security Runtime-Oberflaechen
|
|
36
|
+
|
|
37
|
+
## Handoff
|
|
38
|
+
|
|
39
|
+
`WP-TypeExports-05` kann nun Fabric-, A11y- und Security-Policy-APIs typisieren. Das RMT-Pack ist dabei die Referenz fuer P1-Integrationsmodule: schmale Declarations, bestehende JS-Runtime, package-native `types`-Conditions und ein Drift-Gate gegen Export-Abweichungen.
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# XTend Vendor and Utility Types
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.type-exports.vendor-facades.v1`
|
|
4
|
+
- Workpackage: `WP-TypeExports-08`
|
|
5
|
+
- Gate: `node scripts/run_xtend_tests.js type-exports-vendor --json`
|
|
6
|
+
- Report: `.xtend-test-results/xtend-type-exports-vendor-report.json`
|
|
7
|
+
|
|
8
|
+
## Zweck
|
|
9
|
+
|
|
10
|
+
`WP-TypeExports-08` schliesst die verbleibenden Type-Facade-Luecken an Randmodulen. Die Facades sind absichtlich schmal: XTend kopiert keine vollstaendige Prism- oder Turndown-Typwelt, sondern beschreibt nur die stabile Nutzungsgrenze im Projekt.
|
|
11
|
+
|
|
12
|
+
## Facades
|
|
13
|
+
|
|
14
|
+
- `./components/prism.d.ts` beschreibt die globale und CommonJS-faehige Prism-Fassade mit `highlight`, `highlightElement`, `highlightAllUnder`, `hooks`, `languages` und `Token`.
|
|
15
|
+
- `./components/turndown.d.ts` beschreibt die Browser-Global-Fassade `window.TurndownService` fuer Side-Effect-Imports und lokale Markdown-Konvertierung.
|
|
16
|
+
- `./design-tokens/xtend-design-tokens.d.ts` beschreibt den produktiven Design-Token-Contract `xtend.design-tokens.product-contract.v1`, Theme Packs, Density Packs und Validatoren.
|
|
17
|
+
- `./design-tokens/xtheme-token-alias-layer.d.ts` beschreibt den XTheme Alias Layer `xtend.theme.token-alias-layer.v1`, Legacy Bridges, Component Aliases und Validatoren.
|
|
18
|
+
|
|
19
|
+
## Theme JSON
|
|
20
|
+
|
|
21
|
+
`./design-tokens/themes/enterprise-light` bleibt eine JSON-Boundary. Das Beispiel-Theme wird als Datenartefakt exportiert und benoetigt keine eigene Runtime-Declaration. Consumer, die JSON importieren, sollen ihre Projektkonfiguration fuer JSON-Module nutzen.
|
|
22
|
+
|
|
23
|
+
## Nicht-Ziele
|
|
24
|
+
|
|
25
|
+
- Keine Volltypisierung der gesamten Prism-Sprachliste.
|
|
26
|
+
- Keine Uebernahme fremder Vendor-Interna in XTend-Namespace-Typen.
|
|
27
|
+
- Keine Runtime-Aenderung an `components/prism.js`, `components/turndown.js`, `design-tokens/xtend-design-tokens.js` oder `design-tokens/xtheme-token-alias-layer.js`.
|
|
28
|
+
|
|
29
|
+
## Drift Gate
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
node scripts/run_xtend_tests.js type-exports-vendor --json
|
|
33
|
+
npm run test:type-exports-vendor
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Der Gate prueft, dass `./design-tokens` und `./design-tokens/xtheme-token-alias-layer` eine `types`-Condition besitzen, dass die Komponenten-Vendor-Dateien eigene `.d.ts`-Facades haben, dass keine Component-`.js`-Datei ohne Declaration-Gap bleibt und dass die Facades keine Runtime-Imports oder Vendor-Implementierungsdetails kopieren.
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
# XTendRMT App-DSL Reference
|
|
2
|
+
|
|
3
|
+
- Status: aktuell nach Epic 05 Abschluss
|
|
4
|
+
- Contract: `xtend.docs.xtendrmt-app-dsl.v1`
|
|
5
|
+
- Schema-Quelle: `xtendrmt/rmt.schema.json`
|
|
6
|
+
- Normalizer: `createRmtFormat().normalizeDocument(...)`
|
|
7
|
+
|
|
8
|
+
## Zweck
|
|
9
|
+
|
|
10
|
+
Die App-DSL beschreibt eine renderbare Anwendung als RMT-Dokument. Sie ist kein XTend-spezifisches Format. XTend UI, XRouter, Vanilla JS oder andere Hosts werden ueber Adapter Records angebunden.
|
|
11
|
+
|
|
12
|
+
Seit `WP-E13-09` buendelt [RMT Production Readiness](./rmt-production-readiness.md) diese App-DSL unter `xtend.epic13.rmt-production-readiness.v1` als RC1-Schnitt fuer Shell-first App Shell, native Routes, Components, Fabric/Lanes, Lifecycle Telemetry, Diagnostics und Artifact Parity.
|
|
13
|
+
|
|
14
|
+
## Minimales Dokument
|
|
15
|
+
|
|
16
|
+
```json
|
|
17
|
+
{
|
|
18
|
+
"kind": "rmt_document",
|
|
19
|
+
"version": "1.0",
|
|
20
|
+
"documentId": "app.shell",
|
|
21
|
+
"namespace": "app",
|
|
22
|
+
"adapters": [],
|
|
23
|
+
"components": [],
|
|
24
|
+
"routes": [],
|
|
25
|
+
"schedules": [],
|
|
26
|
+
"templates": []
|
|
27
|
+
}
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Template-only-Dokumente bleiben gueltig. Neue App-DSL-Dokumente sollen operative Host-Daten aber in nativen Top-Level-Domains fuehren.
|
|
31
|
+
|
|
32
|
+
## Native Domains
|
|
33
|
+
|
|
34
|
+
| Domain | Aufgabe |
|
|
35
|
+
|--------|---------|
|
|
36
|
+
| `adapters` | Host-Faehigkeiten, Runtime Surface, Capability Negotiation |
|
|
37
|
+
| `components` | fachliche Component Records, Host Adapter und Hydration-Hinweise |
|
|
38
|
+
| `routes` | Navigation, Route-Ziele, Query/Params und Schedule References |
|
|
39
|
+
| `schedules` | wiederverwendbare Scheduler Policies |
|
|
40
|
+
| `templates` | Markup, Props, Slots, Bindings und Hydration Contracts |
|
|
41
|
+
|
|
42
|
+
`manifest.metadata` bleibt fuer Beschreibung, Handoff, Historie und Demo-Notizen gueltig. Neue operative Routes, Components und Schedules gehoeren nicht mehr in `manifest.metadata`.
|
|
43
|
+
|
|
44
|
+
## Adapter Records
|
|
45
|
+
|
|
46
|
+
```json
|
|
47
|
+
{
|
|
48
|
+
"id": "xtend.xrouter",
|
|
49
|
+
"kind": "router_adapter",
|
|
50
|
+
"runtimeSurface": ["esm", "browser_classic"],
|
|
51
|
+
"providedCapabilities": ["routes", "navigation", "params", "query", "scheduleRefs"],
|
|
52
|
+
"kernelVisible": false
|
|
53
|
+
}
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Stabile Adapter-IDs:
|
|
57
|
+
|
|
58
|
+
- `xtend.xrouter`
|
|
59
|
+
- `xtend.component`
|
|
60
|
+
- `rmt.state-scheduler-diagnostics`
|
|
61
|
+
- `vanilla.component`
|
|
62
|
+
|
|
63
|
+
`kernelVisible: false` ist fuer host-spezifische Adapterdaten der Normalfall. Der Kernel darf diese Records indizieren, aber keine Host-Runtime laden.
|
|
64
|
+
|
|
65
|
+
## Component Records
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"id": "settings.card",
|
|
70
|
+
"kind": "custom_element",
|
|
71
|
+
"adapter": "xtend.component",
|
|
72
|
+
"tag": "x-card",
|
|
73
|
+
"schedule": "component.idle.hydrate",
|
|
74
|
+
"props": {
|
|
75
|
+
"label": "Settings"
|
|
76
|
+
},
|
|
77
|
+
"attributes": {
|
|
78
|
+
"data-host": "xtend"
|
|
79
|
+
},
|
|
80
|
+
"hydration": {
|
|
81
|
+
"mode": "runtime_render",
|
|
82
|
+
"ownershipMode": "managed_subtree"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Der Normalizer macht daraus Runtime-Registry-Eintraege, die ueber `componentRegistry.byAdapter["xtend.component"]` und `componentRegistry.byTag["x-card"]` konsumierbar sind.
|
|
88
|
+
|
|
89
|
+
## Route Records
|
|
90
|
+
|
|
91
|
+
```json
|
|
92
|
+
{
|
|
93
|
+
"id": "settings",
|
|
94
|
+
"path": "/settings",
|
|
95
|
+
"router": "xtend.xrouter",
|
|
96
|
+
"component": "settings.card",
|
|
97
|
+
"title": "Settings",
|
|
98
|
+
"documentTitle": "Settings | XTend App",
|
|
99
|
+
"metaDescription": "Einstellungen der XTend RMT App",
|
|
100
|
+
"metaKeywords": ["xtend", "rmt", "routing"],
|
|
101
|
+
"template": "settings.shell",
|
|
102
|
+
"schedule": "route.visible.render",
|
|
103
|
+
"metadata": {
|
|
104
|
+
"seo": {
|
|
105
|
+
"titleTemplate": "{{title}} | XTend App"
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
Der Normalizer macht daraus Runtime-Registry-Eintraege, die ueber `routeRegistry.byRouter["xtend.xrouter"]`, `routeRegistry.byId["settings"]` und `routeRegistry.byPath["/settings"]` konsumierbar sind. `title`, `documentTitle`, `titleTemplate`, `metaDescription` und `metaKeywords` bleiben deklarative Route-Metadaten: XRouter schreibt daraus `document.title` sowie `description`/`keywords`, ohne dass RMT XTend oder XRouter importiert.
|
|
112
|
+
|
|
113
|
+
## Schedule Records
|
|
114
|
+
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"id": "route.visible.render",
|
|
118
|
+
"endpointName": "xtendrmt.route.render",
|
|
119
|
+
"scope": "app.route.render",
|
|
120
|
+
"lane": "visible",
|
|
121
|
+
"priority": 80,
|
|
122
|
+
"deadlineMs": 250,
|
|
123
|
+
"preferIdle": false,
|
|
124
|
+
"budgetClass": "interactive"
|
|
125
|
+
}
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Erprobte Endpoint-Namen:
|
|
129
|
+
|
|
130
|
+
- `xtendrmt.route.render`
|
|
131
|
+
- `xtendrmt.component.mount`
|
|
132
|
+
- `xtendrmt.component.hydrate`
|
|
133
|
+
- `xtendrmt.vanilla.mount`
|
|
134
|
+
- `xtendrmt.diagnostics.snapshot`
|
|
135
|
+
- `xtendrmt.template.inspect`
|
|
136
|
+
|
|
137
|
+
## Template Records und Trusted DOM
|
|
138
|
+
|
|
139
|
+
Neue Template Records sollen strukturierte Daten mit `dom_descriptor` bevorzugen:
|
|
140
|
+
|
|
141
|
+
```json
|
|
142
|
+
{
|
|
143
|
+
"id": "settings.shell",
|
|
144
|
+
"mode": "dom_descriptor",
|
|
145
|
+
"nodes": [
|
|
146
|
+
{ "tag": "x-card", "attributes": { "label": "Settings" } }
|
|
147
|
+
]
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
`html_fragment` bleibt kompatibel, braucht aber eine explizite Trusted-DOM-Boundary:
|
|
152
|
+
|
|
153
|
+
```json
|
|
154
|
+
{
|
|
155
|
+
"id": "settings.shell.legacy",
|
|
156
|
+
"mode": "html_fragment",
|
|
157
|
+
"markup": "<x-card label=\"Settings\"></x-card>",
|
|
158
|
+
"security": {
|
|
159
|
+
"markupClass": "htmlFragment",
|
|
160
|
+
"trustBoundary": "xtend.security.sanitizing-boundary.v1",
|
|
161
|
+
"sink": "trustedDomBoundary"
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Der Kernel darf solche Records normalisieren und schedulen. Sanitizing, Trusted DOM und konkrete DOM-Sinks bleiben Host-Adapter-Aufgabe. Siehe [Trusted DOM und Sanitizing](./trusted-dom-sanitizing.md).
|
|
167
|
+
|
|
168
|
+
## Shell-first Host Apps
|
|
169
|
+
|
|
170
|
+
Die Docs-App nutzt diesen Pfad produktiv als Shell-first-Pilot. `docs/xtendrmt-parsedown-docs.rmt` beschreibt `docs.app.shell` als `dom_descriptor`, `docs.header.search` als Header-Search-Slot-Template und `docs.media.lazy` als future-ready Slot fuer XPlayer-Tutorials. `docs/utils/pageloader.js` rendert zuerst die RMT-Shell und setzt Parsedown-HTML anschliessend nur noch in den `data-rmt-slot="content"` Slot.
|
|
171
|
+
|
|
172
|
+
Wichtig: Auch in diesem Modus bleibt RMT framework-agnostisch. Parsedown, Rich-HTML-Sinks, XPlayer-Lazy-Loading und konkrete DOM-Events werden vom Host-Adapter ausgefuehrt. RMT stellt Shell-Records, Slots, Schedules und Diagnostics bereit.
|
|
173
|
+
|
|
174
|
+
## RMT-first XTend Apps
|
|
175
|
+
|
|
176
|
+
Ab Epic 10 ist das App-Authoring fuer vollstaendige XTend-Apps als Contract `xtend.rmt.first-class-app-authoring.v1` beschrieben. Das Ziel ist eine App, deren Shell, Routes, Components, Templates, Events, Commands, Hydration Policies, Fabric-Lanes und Diagnostics komplett in RMT stehen.
|
|
177
|
+
|
|
178
|
+
Der Referenzpfad liegt in `tests/fixtures/rmt-first-class-xtend-app.rmt`. Der Gate ist:
|
|
179
|
+
|
|
180
|
+
```bash
|
|
181
|
+
node scripts/run_xtend_tests.js rmt-first-class-app --json
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Der Contract bleibt bewusst host-neutral. RMT kennt `xtend.component`, `xtend.xrouter` und `rmt.state-scheduler-diagnostics` als Adapter-Records, importiert aber keine XTend-Komponenten und kein XRouter-Modul in den Kernel. Details stehen in `development/XTend-RMT-First-Class-App-Authoring.md`.
|
|
185
|
+
|
|
186
|
+
Der kanonische Entwicklerguide fuer komplette XTend Apps liegt in [RMT-first XTend Apps](./rmt-first-xtend-apps.md). Der Epic-10-Abschluss und die Release-Gates sind in [Epic 10 Release Handoff](./epic10-release-handoff.md) dokumentiert.
|
|
187
|
+
|
|
188
|
+
## Component Fabric Context
|
|
189
|
+
|
|
190
|
+
XTend Components koennen Fabric-Hints in `metadata.fabric` tragen:
|
|
191
|
+
|
|
192
|
+
```json
|
|
193
|
+
{
|
|
194
|
+
"id": "pages.settings",
|
|
195
|
+
"adapter": "xtend.component",
|
|
196
|
+
"tag": "x-form",
|
|
197
|
+
"schedule": "component.idle.hydrate",
|
|
198
|
+
"metadata": {
|
|
199
|
+
"fabric": {
|
|
200
|
+
"lane": "idle",
|
|
201
|
+
"fiber": "component.hydrate",
|
|
202
|
+
"telemetry": true
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Der produktive Adapter loest diese Daten ueber `xtend.component.fabric-lane-ingestion.v2` auf. RMT Schedule Records haben Vorrang vor Component Metadata, Runtime Overrides, Static Contracts und Scaffold Defaults. Der Gate ist `node scripts/run_xtend_tests.js rmt-component-fabric-ingestion --json`.
|
|
209
|
+
|
|
210
|
+
## Component Lifecycle Telemetry
|
|
211
|
+
|
|
212
|
+
Der Adapter erzeugt ab `xtend.component.lifecycle-telemetry.v1` Lifecycle Records fuer Component-Arbeit. RMT-Dokumente muessen dafuer keinen XTend-Code importieren; sie liefern nur Component-, Route-, Schedule- und Fabric-Kontext. Der Host kann `telemetryCollector`, `recordTelemetry` oder eine Fabric-Instanz uebergeben.
|
|
213
|
+
|
|
214
|
+
```js
|
|
215
|
+
const records = [];
|
|
216
|
+
adapter.mountComponent(root, 'pages.settings', model, {
|
|
217
|
+
mapping,
|
|
218
|
+
telemetryCollector: records
|
|
219
|
+
});
|
|
220
|
+
|
|
221
|
+
const snapshot = fabric.createTelemetrySnapshot({
|
|
222
|
+
componentTelemetry: records
|
|
223
|
+
});
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
`snapshot.componentTelemetry` aggregiert `mount`, `hydrate`, `render`, `update`, `event`, `unmount` und `error` nach Operation, Component und Lane. Component-Fehler, Deadline-Ueberschreitungen und explizite `backpressureSignal` Metadata koennen Backpressure erzeugen. Der Gate ist `node scripts/run_xtend_tests.js rmt-component-lifecycle-telemetry --json`.
|
|
227
|
+
|
|
228
|
+
Hosts koennen Fabric Snapshots direkt an die produktive RMT Bridge uebergeben:
|
|
229
|
+
|
|
230
|
+
```js
|
|
231
|
+
bridge.recordTelemetrySnapshot(snapshot, {
|
|
232
|
+
scheduleRef: "diagnostics.snapshot"
|
|
233
|
+
});
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
Die Bridge spiegelt daraus `rmt.telemetry.lastSnapshot` und `rmt.backpressure.*` und plant bei Bedarf den Diagnostics-Snapshot-Endpunkt.
|
|
237
|
+
|
|
238
|
+
## Runtime Registry
|
|
239
|
+
|
|
240
|
+
```js
|
|
241
|
+
const format = createRmtFormat();
|
|
242
|
+
const normalizedDocument = format.normalizeDocument(document);
|
|
243
|
+
const registry = format.createRuntimeRegistries(normalizedDocument, {
|
|
244
|
+
requiredRoutes: ["settings", "/settings"],
|
|
245
|
+
requiredComponents: ["settings.card", "x-card"]
|
|
246
|
+
});
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
Die Registry ist die konsumierbare Grenze zwischen DSL und Adapter. Adapter lesen Registry-Eintraege, nicht rohe Demo-Metadaten.
|
|
250
|
+
|
|
251
|
+
## Diagnostics
|
|
252
|
+
|
|
253
|
+
Der App-DSL-Normalizer erzeugt Diagnostics, statt Host-Ausfuehrung zu erzwingen. Wichtige Gruppen:
|
|
254
|
+
|
|
255
|
+
- `rmt.dsl.reference.*` fuer fehlende oder ungueltige Referenzen
|
|
256
|
+
- `rmt.runtime.registry.*` fuer Registry-Konflikte oder fehlende Required-Refs
|
|
257
|
+
- `rmt.xrouter.*` fuer Route-Mapping und Navigation
|
|
258
|
+
- `rmt.xtend.component.*` fuer Component-Mapping, Mounting und Hydration
|
|
259
|
+
- `rmt.bridge.*` fuer State-, Scheduler- und Diagnostics-Bridge
|
|
260
|
+
|
|
261
|
+
## Review-Checkliste
|
|
262
|
+
|
|
263
|
+
- `adapters`, `components`, `routes` und `schedules` sind native Top-Level-Domains.
|
|
264
|
+
- Routes referenzieren Components und Schedules nur per ID.
|
|
265
|
+
- Components referenzieren Host Adapter nur per ID.
|
|
266
|
+
- Schedule Policies sind zentral und wiederverwendbar.
|
|
267
|
+
- XTend-spezifische Daten bleiben ausserhalb des Kernels.
|
|
268
|
+
- Nicht-XTend Hosts erhalten eigene Adapter statt XTend-Fallbacks.
|
|
269
|
+
- `node scripts/run_xtend_tests.js rmt-compatibility --json` laeuft.
|