@ccslabs/xtend 0.1.0-rc.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/README.md +4 -0
- package/catalog/component-catalog-coverage.js +2 -0
- package/catalog/epic13-package-export-lock.js +11 -1
- package/catalog/epic13-rmt-production-readiness.js +0 -1
- package/catalog/epic18-rmt-action-effect-runtime.d.ts +36 -0
- package/catalog/epic18-rmt-action-effect-runtime.js +249 -0
- package/catalog/epic18-rmt-app-platform-authoring.d.ts +39 -0
- package/catalog/epic18-rmt-app-platform-authoring.js +319 -0
- package/catalog/epic18-rmt-app-platform-fixture.d.ts +33 -0
- package/catalog/epic18-rmt-app-platform-fixture.js +221 -0
- package/catalog/epic18-rmt-app-platform-release-handoff.d.ts +30 -0
- package/catalog/epic18-rmt-app-platform-release-handoff.js +231 -0
- package/catalog/epic18-rmt-app-platform-tooling.d.ts +38 -0
- package/catalog/epic18-rmt-app-platform-tooling.js +242 -0
- package/catalog/epic18-rmt-component-template-primitives.d.ts +33 -0
- package/catalog/epic18-rmt-component-template-primitives.js +240 -0
- package/catalog/epic18-rmt-dom-descriptor-renderer.d.ts +35 -0
- package/catalog/epic18-rmt-dom-descriptor-renderer.js +232 -0
- package/catalog/epic18-rmt-event-routing-runtime.d.ts +35 -0
- package/catalog/epic18-rmt-event-routing-runtime.js +234 -0
- package/catalog/epic18-rmt-state-selector-runtime.d.ts +34 -0
- package/catalog/epic18-rmt-state-selector-runtime.js +216 -0
- package/catalog/epic18-rmt-surface-resource-graph-runtime.d.ts +36 -0
- package/catalog/epic18-rmt-surface-resource-graph-runtime.js +256 -0
- package/catalog/surface-manager-controller.js +5 -1
- package/catalog/surface-manager-materialization.js +7 -1
- package/catalog/surface-manager-overlay-bridge.js +41 -6
- package/catalog/surface-manager-workbench-fixture.js +1 -1
- package/catalog/surface-type-capability-matrix.d.ts +61 -0
- package/catalog/surface-type-capability-matrix.js +183 -0
- package/catalog/type-exports-rmt.js +37 -1
- package/catalog/type-exports.js +3 -3
- package/components/icon-packs/lucide.js +4 -0
- package/components/manifest.json +2 -0
- package/components/prism-rmt.d.ts +34 -0
- package/components/prism-rmt.js +130 -0
- package/components/xcards.js +15 -0
- package/components/xcode.d.ts +36 -1
- package/components/xcode.js +215 -20
- package/components/xfooter.js +17 -0
- package/components/xheader.js +14 -0
- package/components/xhero.js +16 -1
- package/components/xlink.js +97 -14
- package/components/xmasonry.js +15 -0
- package/components/xplayer.d.ts +44 -2
- package/components/xplayer.js +242 -15
- package/components/xrouter.js +27 -2
- package/components/xsection.js +15 -0
- package/components/xsidepanel.js +10 -2
- package/components/xsurfacemanager-controller.d.ts +2 -1
- package/components/xsurfacemanager-controller.js +27 -3
- package/components/xsurfacemanager.d.ts +2 -0
- package/components/xsurfacemanager.js +20 -8
- package/components/xsurfaceoverlay-bridge.d.ts +20 -5
- package/components/xsurfaceoverlay-bridge.js +114 -18
- package/components/xsurfaceportal.d.ts +29 -0
- package/components/xsurfaceportal.js +122 -0
- package/components/xsurfaceregion.d.ts +50 -0
- package/components/xsurfaceregion.js +285 -0
- package/components/xsurfacewindow.js +2 -1
- package/components/xtooltip.js +89 -23
- package/docs/README.md +222 -298
- package/docs/changelog.md +107 -0
- package/docs/component-catalog-coverage.md +9 -9
- package/docs/component-platform.md +19 -1
- package/docs/component-ux-app-authoring.md +56 -63
- package/docs/components/xcode.md +83 -53
- package/docs/components/xsurfaceportal.md +32 -0
- package/docs/components/xsurfaceregion.md +37 -0
- package/docs/components.md +105 -69
- package/docs/de/README.md +264 -0
- package/docs/de/XTend-ADR.md +221 -0
- package/docs/de/a11y-keyboard-smokes.md +62 -0
- package/docs/de/about.md +18 -0
- package/docs/de/api.md +157 -0
- package/docs/de/best-practices.md +76 -0
- package/docs/de/changelog.md +107 -0
- package/docs/de/component-catalog-coverage.md +58 -0
- package/docs/de/component-lab.md +103 -0
- package/docs/de/component-long-tail-migration.md +41 -0
- package/docs/de/component-platform.md +177 -0
- package/docs/de/component-ux-app-authoring.md +123 -0
- package/docs/de/component-ux-authoring.md +96 -0
- package/docs/de/component-ux-gates.md +45 -0
- package/docs/de/components/x-rmt-lifecycle-demo-build.md +60 -0
- package/docs/de/components/xalert.md +81 -0
- package/docs/de/components/xbutton.md +103 -0
- package/docs/de/components/xcalendar.md +82 -0
- package/docs/de/components/xcards.md +128 -0
- package/docs/de/components/xcheckbox.md +102 -0
- package/docs/de/components/xcode.md +156 -0
- package/docs/de/components/xdialog.md +92 -0
- package/docs/de/components/xdrawer.md +84 -0
- package/docs/de/components/xfooter.md +126 -0
- package/docs/de/components/xform.md +128 -0
- package/docs/de/components/xheader.md +308 -0
- package/docs/de/components/xhero.md +142 -0
- package/docs/de/components/xicon.md +125 -0
- package/docs/de/components/xinput.md +129 -0
- package/docs/de/components/xlightbox.md +98 -0
- package/docs/de/components/xlink.md +109 -0
- package/docs/de/components/xmasonry.md +124 -0
- package/docs/de/components/xmenu.md +158 -0
- package/docs/de/components/xmodal.md +82 -0
- package/docs/de/components/xplayer.md +104 -0
- package/docs/de/components/xpopover.md +67 -0
- package/docs/de/components/xprogress.md +56 -0
- package/docs/de/components/xradio.md +103 -0
- package/docs/de/components/xrouter.md +260 -0
- package/docs/de/components/xsection.md +125 -0
- package/docs/de/components/xselect.md +105 -0
- package/docs/de/components/xsidepanel.md +30 -0
- package/docs/de/components/xspinner.md +102 -0
- package/docs/de/components/xstate.md +148 -0
- package/docs/de/components/xstatus.md +55 -0
- package/docs/de/components/xsummary.md +78 -0
- package/docs/de/components/xsurfacemanager.md +27 -0
- package/docs/de/components/xsurfacewindow.md +21 -0
- package/docs/de/components/xtabs.md +160 -0
- package/docs/de/components/xtextarea.md +98 -0
- package/docs/de/components/xtheme.md +167 -0
- package/docs/de/components/xtoast.md +62 -0
- package/docs/de/components/xtooltip.md +66 -0
- package/docs/de/components/xtype.md +82 -0
- package/docs/de/components/xutils.md +144 -0
- package/docs/de/components/xwriter.md +94 -0
- package/docs/de/components.md +153 -0
- package/docs/de/conditional-network-evidence-ci.md +38 -0
- package/docs/de/conditional-network-evidence.md +50 -0
- package/docs/de/core-migration-guide.md +110 -0
- package/docs/de/design-tokens.md +116 -0
- package/docs/de/docs-rmt-production-hardening.md +31 -0
- package/docs/de/enterprise-adoption.md +413 -0
- package/docs/de/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/de/epic10-platform-gates.md +62 -0
- package/docs/de/epic10-release-handoff.md +81 -0
- package/docs/de/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/de/epic12-rc0-handoff.md +61 -0
- package/docs/de/epic18-media-manager-vendor-upstream.md +318 -0
- package/docs/de/epic18-rmt-app-platform-release-handoff.md +67 -0
- package/docs/de/epic18-vendor-bugfixes.md +34 -0
- package/docs/de/existing-component-metadata.md +67 -0
- package/docs/de/hydration-performance-closure.md +34 -0
- package/docs/de/hydration-policies.md +71 -0
- package/docs/de/known-residual-triage.md +22 -0
- package/docs/de/manifest-import-policy.md +79 -0
- package/docs/de/manifest.md +112 -0
- package/docs/de/motion-contrast.md +67 -0
- package/docs/de/package-export-lock.md +44 -0
- package/docs/de/performance-measurements.md +106 -0
- package/docs/de/performance-regression.md +89 -0
- package/docs/de/performance.md +94 -0
- package/docs/de/previews/README.md +17 -0
- package/docs/de/prod-browser-csp-smokes.md +40 -0
- package/docs/de/public-component-types.md +79 -0
- package/docs/de/quick-start-guide.md +220 -0
- package/docs/de/rc0-adoption-guide.md +102 -0
- package/docs/de/rc0-gate-matrix.md +58 -0
- package/docs/de/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/de/rc1-migration-notes.md +69 -0
- package/docs/de/rc1-readiness.md +46 -0
- package/docs/de/release-owner-acceptance.md +56 -0
- package/docs/de/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/de/rmt-action-effect-runtime.md +81 -0
- package/docs/de/rmt-app-platform-authoring.md +54 -0
- package/docs/de/rmt-app-platform-fixture.md +46 -0
- package/docs/de/rmt-app-platform-migration-guide.md +88 -0
- package/docs/de/rmt-app-platform-tooling.md +79 -0
- package/docs/de/rmt-component-template-primitives.md +57 -0
- package/docs/de/rmt-dom-descriptor-renderer.md +64 -0
- package/docs/de/rmt-dsl-authoring-polish.md +145 -0
- package/docs/de/rmt-event-routing-runtime.md +81 -0
- package/docs/de/rmt-first-demo-app.md +77 -0
- package/docs/de/rmt-first-xtend-apps.md +129 -0
- package/docs/de/rmt-kernel-panic-recovery-incident-handoff.md +61 -0
- package/docs/de/rmt-kernel-security-hardening-migration.md +50 -0
- package/docs/de/rmt-kernel-trusted-output-authoring.md +69 -0
- package/docs/de/rmt-language-server.md +234 -0
- package/docs/de/rmt-lifecycle-demo.md +24 -0
- package/docs/de/rmt-linter.md +140 -0
- package/docs/de/rmt-node-ssr-adapter.md +100 -0
- package/docs/de/rmt-php-ssr-adapter.md +120 -0
- package/docs/de/rmt-production-readiness.md +63 -0
- package/docs/de/rmt-state-selector-runtime.md +47 -0
- package/docs/de/rmt-surface-resource-graph-runtime.md +92 -0
- package/docs/de/rmt-tooling-release-gates.md +77 -0
- package/docs/de/rmt-vnext-authoring.md +170 -0
- package/docs/de/rmt-vnext-component-primitives.md +188 -0
- package/docs/de/rmt-vnext-cross-surface-events.md +68 -0
- package/docs/de/rmt-vnext-enterprise-mfe-handoff.md +70 -0
- package/docs/de/rmt-vnext-fabric-bridge-evidence.md +81 -0
- package/docs/de/rmt-vnext-migration-notes.md +62 -0
- package/docs/de/rmt-vnext-primitive-authoring-tooling.md +247 -0
- package/docs/de/rmt-vnext-primitive-grammar-design.md +289 -0
- package/docs/de/rmt-vnext-primitive-lowering.md +108 -0
- package/docs/de/rmt-vnext-primitive-migration.md +119 -0
- package/docs/de/rmt-vnext-primitive-parser-ast.md +76 -0
- package/docs/de/rmt-vnext-primitive-semantic-graph.md +118 -0
- package/docs/de/rmt-vnext-primitives-compiler-backlog.md +739 -0
- package/docs/de/rmt-vnext-release-handoff.md +83 -0
- package/docs/de/rmt-vnext-remote-surfaces.md +90 -0
- package/docs/de/rmt-vnext-source-to-sea-gate.md +612 -0
- package/docs/de/rmt-vnext-surface-registry-enterprise.md +76 -0
- package/docs/de/screenreader-signals.md +56 -0
- package/docs/de/supply-chain-gates.md +100 -0
- package/docs/de/surface-manager-authoring-guide.md +94 -0
- package/docs/de/surface-manager-browser-lab.md +45 -0
- package/docs/de/surface-manager-component-lab.md +43 -0
- package/docs/de/surface-manager-controller.md +66 -0
- package/docs/de/surface-manager-layout-engines.md +32 -0
- package/docs/de/surface-manager-lazy-hydration.md +63 -0
- package/docs/de/surface-manager-migration-guide.md +122 -0
- package/docs/de/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/de/surface-manager-overlay-bridge.md +53 -0
- package/docs/de/surface-manager-persistence.md +30 -0
- package/docs/de/surface-manager-quality-gates.md +51 -0
- package/docs/de/surface-manager-release-handoff.md +68 -0
- package/docs/de/surface-manager-remote-policy.md +54 -0
- package/docs/de/surface-manager-rmt-authoring.md +102 -0
- package/docs/de/surface-manager-route-lifecycle.md +59 -0
- package/docs/de/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/de/surface-manager-side-panel-runtime.md +36 -0
- package/docs/de/surface-manager-stack-policy.md +39 -0
- package/docs/de/surface-manager-window-runtime.md +47 -0
- package/docs/de/surface-manager-workbench-fixture.md +43 -0
- package/docs/de/third-party-design-authoring.md +406 -0
- package/docs/de/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/de/trusted-dom-sanitizing.md +110 -0
- package/docs/de/type-exports.md +61 -0
- package/docs/de/typescript-components.md +63 -0
- package/docs/de/visual-browser-regression.md +83 -0
- package/docs/de/visual-owner-artifacts.md +46 -0
- package/docs/de/visual-snapshot-automation.md +87 -0
- package/docs/de/xtend-api-types.md +55 -0
- package/docs/de/xtend-builder-types.md +55 -0
- package/docs/de/xtend-catalog-types.md +44 -0
- package/docs/de/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/de/xtend-fabric.md +474 -0
- package/docs/de/xtend-loader-types.md +58 -0
- package/docs/de/xtend-loader.md +265 -0
- package/docs/de/xtend-policy-types.md +38 -0
- package/docs/de/xtend-rmt-types.md +40 -0
- package/docs/de/xtend-vendor-types.md +36 -0
- package/docs/de/xtendrmt-app-dsl.md +334 -0
- package/docs/de/xtendrmt-migration-guide.md +266 -0
- package/docs/de/xtendrmt-native-authoring.md +333 -0
- package/docs/de/xtendrmt-overview.md +109 -0
- package/docs/de/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/de/xtendrmt-runtime-bridge.md +155 -0
- package/docs/en/README.md +163 -0
- package/docs/en/XTend-ADR.md +221 -0
- package/docs/en/a11y-keyboard-smokes.md +68 -0
- package/docs/en/about.md +25 -0
- package/docs/en/api.md +171 -0
- package/docs/en/best-practices.md +125 -0
- package/docs/en/changelog.md +104 -0
- package/docs/en/component-catalog-coverage.md +104 -0
- package/docs/en/component-lab.md +103 -0
- package/docs/en/component-long-tail-migration.md +41 -0
- package/docs/en/component-platform.md +243 -0
- package/docs/en/component-ux-app-authoring.md +118 -0
- package/docs/en/component-ux-authoring.md +96 -0
- package/docs/en/component-ux-gates.md +45 -0
- package/docs/en/components/x-rmt-lifecycle-demo-build.md +75 -0
- package/docs/en/components/xalert.md +94 -0
- package/docs/en/components/xbutton.md +118 -0
- package/docs/en/components/xcalendar.md +95 -0
- package/docs/en/components/xcards.md +139 -0
- package/docs/en/components/xcheckbox.md +118 -0
- package/docs/en/components/xcode.md +153 -0
- package/docs/en/components/xdialog.md +108 -0
- package/docs/en/components/xdrawer.md +110 -0
- package/docs/en/components/xfooter.md +138 -0
- package/docs/en/components/xform.md +147 -0
- package/docs/en/components/xheader.md +308 -0
- package/docs/en/components/xhero.md +157 -0
- package/docs/en/components/xicon.md +149 -0
- package/docs/en/components/xinput.md +147 -0
- package/docs/en/components/xlightbox.md +113 -0
- package/docs/en/components/xlink.md +130 -0
- package/docs/en/components/xmasonry.md +136 -0
- package/docs/en/components/xmenu.md +185 -0
- package/docs/en/components/xmodal.md +102 -0
- package/docs/en/components/xplayer.md +114 -0
- package/docs/en/components/xpopover.md +87 -0
- package/docs/en/components/xprogress.md +73 -0
- package/docs/en/components/xradio.md +119 -0
- package/docs/en/components/xrouter.md +260 -0
- package/docs/en/components/xsection.md +136 -0
- package/docs/en/components/xselect.md +122 -0
- package/docs/en/components/xsidepanel.md +48 -0
- package/docs/en/components/xspinner.md +118 -0
- package/docs/en/components/xstate.md +163 -0
- package/docs/en/components/xstatus.md +71 -0
- package/docs/en/components/xsummary.md +90 -0
- package/docs/en/components/xsurfacemanager.md +42 -0
- package/docs/en/components/xsurfacewindow.md +31 -0
- package/docs/en/components/xtabs.md +187 -0
- package/docs/en/components/xtextarea.md +115 -0
- package/docs/en/components/xtheme.md +203 -0
- package/docs/en/components/xtoast.md +78 -0
- package/docs/en/components/xtooltip.md +85 -0
- package/docs/en/components/xtype.md +91 -0
- package/docs/en/components/xutils.md +161 -0
- package/docs/en/components/xwriter.md +106 -0
- package/docs/en/components.md +151 -0
- package/docs/en/conditional-network-evidence-ci.md +38 -0
- package/docs/en/conditional-network-evidence.md +50 -0
- package/docs/en/core-migration-guide.md +110 -0
- package/docs/en/design-tokens.md +137 -0
- package/docs/en/docs-rmt-production-hardening.md +31 -0
- package/docs/en/enterprise-adoption.md +413 -0
- package/docs/en/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/en/epic10-platform-gates.md +62 -0
- package/docs/en/epic10-release-handoff.md +81 -0
- package/docs/en/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/en/epic12-rc0-handoff.md +61 -0
- package/docs/en/epic18-media-manager-vendor-upstream.md +232 -0
- package/docs/en/epic18-rmt-app-platform-release-handoff.md +60 -0
- package/docs/en/epic18-vendor-bugfixes.md +29 -0
- package/docs/en/existing-component-metadata.md +67 -0
- package/docs/en/hydration-performance-closure.md +34 -0
- package/docs/en/hydration-policies.md +75 -0
- package/docs/en/known-residual-triage.md +22 -0
- package/docs/en/manifest-import-policy.md +81 -0
- package/docs/en/manifest.md +135 -0
- package/docs/en/motion-contrast.md +67 -0
- package/docs/en/package-export-lock.md +44 -0
- package/docs/en/performance-measurements.md +106 -0
- package/docs/en/performance-regression.md +89 -0
- package/docs/en/performance.md +132 -0
- package/docs/en/previews/README.md +17 -0
- package/docs/en/prod-browser-csp-smokes.md +40 -0
- package/docs/en/public-component-types.md +79 -0
- package/docs/en/quick-start-guide.md +189 -0
- package/docs/en/rc0-adoption-guide.md +102 -0
- package/docs/en/rc0-gate-matrix.md +58 -0
- package/docs/en/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/en/rc1-migration-notes.md +69 -0
- package/docs/en/rc1-readiness.md +46 -0
- package/docs/en/release-owner-acceptance.md +56 -0
- package/docs/en/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/en/rmt-action-effect-runtime.md +101 -0
- package/docs/en/rmt-app-platform-authoring.md +47 -0
- package/docs/en/rmt-app-platform-fixture.md +35 -0
- package/docs/en/rmt-app-platform-migration-guide.md +75 -0
- package/docs/en/rmt-app-platform-tooling.md +58 -0
- package/docs/en/rmt-component-template-primitives.md +49 -0
- package/docs/en/rmt-dom-descriptor-renderer.md +54 -0
- package/docs/en/rmt-dsl-authoring-polish.md +143 -0
- package/docs/en/rmt-event-routing-runtime.md +98 -0
- package/docs/en/rmt-first-demo-app.md +87 -0
- package/docs/en/rmt-first-xtend-apps.md +127 -0
- package/docs/en/rmt-kernel-panic-recovery-incident-handoff.md +60 -0
- package/docs/en/rmt-kernel-security-hardening-migration.md +49 -0
- package/docs/en/rmt-kernel-trusted-output-authoring.md +68 -0
- package/docs/en/rmt-language-server.md +243 -0
- package/docs/en/rmt-lifecycle-demo.md +23 -0
- package/docs/en/rmt-linter.md +146 -0
- package/docs/en/rmt-node-ssr-adapter.md +99 -0
- package/docs/en/rmt-php-ssr-adapter.md +118 -0
- package/docs/en/rmt-production-readiness.md +63 -0
- package/docs/en/rmt-state-selector-runtime.md +34 -0
- package/docs/en/rmt-surface-resource-graph-runtime.md +68 -0
- package/docs/en/rmt-tooling-release-gates.md +77 -0
- package/docs/en/rmt-vnext-authoring.md +102 -0
- package/docs/en/rmt-vnext-component-primitives.md +185 -0
- package/docs/en/rmt-vnext-cross-surface-events.md +59 -0
- package/docs/en/rmt-vnext-enterprise-mfe-handoff.md +62 -0
- package/docs/en/rmt-vnext-fabric-bridge-evidence.md +64 -0
- package/docs/en/rmt-vnext-migration-notes.md +62 -0
- package/docs/en/rmt-vnext-primitive-authoring-tooling.md +174 -0
- package/docs/en/rmt-vnext-primitive-grammar-design.md +268 -0
- package/docs/en/rmt-vnext-primitive-lowering.md +91 -0
- package/docs/en/rmt-vnext-primitive-migration.md +93 -0
- package/docs/en/rmt-vnext-primitive-parser-ast.md +59 -0
- package/docs/en/rmt-vnext-primitive-semantic-graph.md +103 -0
- package/docs/en/rmt-vnext-primitives-compiler-backlog.md +327 -0
- package/docs/en/rmt-vnext-release-handoff.md +83 -0
- package/docs/en/rmt-vnext-remote-surfaces.md +81 -0
- package/docs/en/rmt-vnext-source-to-sea-gate.md +482 -0
- package/docs/en/rmt-vnext-surface-registry-enterprise.md +68 -0
- package/docs/en/screenreader-signals.md +56 -0
- package/docs/en/supply-chain-gates.md +106 -0
- package/docs/en/surface-manager-authoring-guide.md +94 -0
- package/docs/en/surface-manager-browser-lab.md +45 -0
- package/docs/en/surface-manager-component-lab.md +43 -0
- package/docs/en/surface-manager-controller.md +66 -0
- package/docs/en/surface-manager-layout-engines.md +32 -0
- package/docs/en/surface-manager-lazy-hydration.md +63 -0
- package/docs/en/surface-manager-migration-guide.md +113 -0
- package/docs/en/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/en/surface-manager-overlay-bridge.md +53 -0
- package/docs/en/surface-manager-persistence.md +30 -0
- package/docs/en/surface-manager-quality-gates.md +51 -0
- package/docs/en/surface-manager-release-handoff.md +68 -0
- package/docs/en/surface-manager-remote-policy.md +54 -0
- package/docs/en/surface-manager-rmt-authoring.md +89 -0
- package/docs/en/surface-manager-route-lifecycle.md +59 -0
- package/docs/en/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/en/surface-manager-side-panel-runtime.md +36 -0
- package/docs/en/surface-manager-stack-policy.md +39 -0
- package/docs/en/surface-manager-window-runtime.md +47 -0
- package/docs/en/surface-manager-workbench-fixture.md +43 -0
- package/docs/en/third-party-design-authoring.md +406 -0
- package/docs/en/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/en/trusted-dom-sanitizing.md +124 -0
- package/docs/en/type-exports.md +61 -0
- package/docs/en/typescript-components.md +63 -0
- package/docs/en/visual-browser-regression.md +83 -0
- package/docs/en/visual-owner-artifacts.md +46 -0
- package/docs/en/visual-snapshot-automation.md +87 -0
- package/docs/en/xtend-api-types.md +55 -0
- package/docs/en/xtend-builder-types.md +55 -0
- package/docs/en/xtend-catalog-types.md +44 -0
- package/docs/en/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/en/xtend-fabric.md +474 -0
- package/docs/en/xtend-loader-types.md +58 -0
- package/docs/en/xtend-loader.md +265 -0
- package/docs/en/xtend-policy-types.md +38 -0
- package/docs/en/xtend-rmt-types.md +40 -0
- package/docs/en/xtend-vendor-types.md +36 -0
- package/docs/en/xtendrmt-app-dsl.md +331 -0
- package/docs/en/xtendrmt-migration-guide.md +256 -0
- package/docs/en/xtendrmt-native-authoring.md +336 -0
- package/docs/en/xtendrmt-overview.md +63 -0
- package/docs/en/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/en/xtendrmt-runtime-bridge.md +155 -0
- package/docs/enterprise-adoption.md +4 -2
- package/docs/epic18-media-manager-vendor-upstream.md +318 -0
- package/docs/epic18-rmt-app-platform-release-handoff.md +67 -0
- package/docs/epic18-vendor-bugfixes.md +34 -0
- package/docs/index.php +1056 -109
- package/docs/manifest.md +8 -2
- package/docs/menu.json +986 -133
- package/docs/package-export-lock.md +2 -2
- package/docs/public-component-types.md +2 -2
- package/docs/quick-start-guide.md +126 -58
- package/docs/rmt-action-effect-runtime.md +101 -0
- package/docs/rmt-app-platform-authoring.md +54 -0
- package/docs/rmt-app-platform-fixture.md +46 -0
- package/docs/rmt-app-platform-migration-guide.md +88 -0
- package/docs/rmt-app-platform-tooling.md +79 -0
- package/docs/rmt-component-template-primitives.md +57 -0
- package/docs/rmt-dom-descriptor-renderer.md +64 -0
- package/docs/rmt-dsl-authoring-polish.md +67 -44
- package/docs/rmt-event-routing-runtime.md +98 -0
- package/docs/rmt-first-demo-app.md +2 -2
- package/docs/rmt-first-xtend-apps.md +70 -46
- package/docs/rmt-language-server.md +61 -4
- package/docs/rmt-lifecycle-demo.md +1 -2
- package/docs/rmt-node-ssr-adapter.md +144 -0
- package/docs/rmt-php-ssr-adapter.md +158 -0
- package/docs/rmt-state-selector-runtime.md +47 -0
- package/docs/rmt-surface-resource-graph-runtime.md +92 -0
- package/docs/rmt-vnext-authoring.md +128 -18
- package/docs/rmt-vnext-component-primitives.md +188 -0
- package/docs/rmt-vnext-fabric-bridge-evidence.md +81 -0
- package/docs/rmt-vnext-primitive-authoring-tooling.md +247 -0
- package/docs/rmt-vnext-primitive-grammar-design.md +289 -0
- package/docs/rmt-vnext-primitive-lowering.md +108 -0
- package/docs/rmt-vnext-primitive-migration.md +119 -0
- package/docs/rmt-vnext-primitive-parser-ast.md +76 -0
- package/docs/rmt-vnext-primitive-semantic-graph.md +118 -0
- package/docs/rmt-vnext-primitives-compiler-backlog.md +742 -0
- package/docs/rmt-vnext-release-handoff.md +14 -0
- package/docs/rmt-vnext-source-to-sea-gate.md +629 -0
- package/docs/surface-manager-migration-guide.md +34 -6
- package/docs/surface-manager-overlay-bridge.md +9 -4
- package/docs/surface-manager-rmt-authoring.md +50 -34
- package/docs/surface-manager-workbench-fixture.md +1 -2
- package/docs/third-party-design-authoring.md +1 -1
- package/docs/type-exports.md +3 -3
- package/docs/utils/pageloader.js +811 -62
- package/docs/visual-browser-regression.md +1 -1
- package/docs/xtend-rmt-types.md +3 -2
- package/docs/xtendrmt-app-dsl.md +187 -122
- package/docs/xtendrmt-docs-shell-vnext.rmt +165 -0
- package/docs/xtendrmt-migration-guide.md +48 -17
- package/docs/xtendrmt-native-authoring.md +213 -217
- package/docs/xtendrmt-overview.md +81 -61
- package/docs/xtendrmt-parsedown-scheduling.md +23 -8
- package/fabric/package.json +1 -1
- package/package.json +684 -21
- package/tools/package.json +5 -1
- package/tools/rmt-editor/vscode/README.md +72 -5
- package/tools/rmt-editor/vscode/XTend-Logo.png +0 -0
- package/tools/rmt-editor/vscode/extension.d.ts +33 -0
- package/tools/rmt-editor/vscode/extension.js +1816 -7
- package/tools/rmt-editor/vscode/language-configuration.json +2 -1
- package/tools/rmt-editor/vscode/package.json +193 -2
- package/tools/rmt-editor/vscode/snippets/rmt.code-snippets +41 -0
- package/tools/rmt-editor/vscode/syntaxes/rmt.tmLanguage.json +103 -1
- package/tools/rmt-editor/vscode/templates/launch.json +70 -0
- package/tools/rmt-editor/vscode/templates/tasks.json +172 -0
- package/tools/rmt-editor/vscode/xtend-rmt-language-0.0.0-enterprise-readiness.vsix +0 -0
- package/tools/rmt-language/app-platform-tooling.d.ts +128 -0
- package/tools/rmt-language/app-platform-tooling.js +677 -0
- package/tools/rmt-language/completions.d.ts +5 -0
- package/tools/rmt-language/completions.js +185 -3
- package/tools/rmt-language/diagnostics.js +54 -0
- package/tools/rmt-language/hover.js +36 -0
- package/tools/rmt-language/rmt-tooling-public-types.d.ts +7 -0
- package/tools/rmt-language/rules/app-platform-policy.js +39 -0
- package/tools/rmt-language/rules/index.js +5 -1
- package/tools/rmt-language/semantic-graph.d.ts +6 -0
- package/tools/rmt-language/semantic-graph.js +928 -0
- package/tools/rmt-language/snippets/index.js +44 -0
- package/tools/rmt-language/snippets/rmt.code-snippets +41 -0
- package/tools/rmt-language/vnext-compatibility.d.ts +10 -0
- package/tools/rmt-language/vnext-compatibility.js +642 -0
- package/tools/rmt-language/vnext-compiler.d.ts +5 -0
- package/tools/rmt-language/vnext-compiler.js +863 -17
- package/tools/rmt-language/vnext-parser.js +725 -9
- package/tools/rmt-language/vnext-release.d.ts +1 -0
- package/tools/rmt-language/vnext-release.js +20 -0
- package/tools/rmt-language/vnext-source-to-sea.d.ts +33 -0
- package/tools/rmt-language/vnext-source-to-sea.js +2227 -0
- package/tools/rmt-language/vnext-surfaces.js +111 -52
- package/tools/rmt-language/vnext-tooling.d.ts +19 -1
- package/tools/rmt-language/vnext-tooling.js +1247 -5
- package/tools/rmt-language-server/protocol.js +3 -0
- package/tools/rmt-language-server/server.d.ts +2 -0
- package/tools/rmt-language-server/server.js +176 -22
- package/tools/rmt-linter/cli.d.ts +2 -0
- package/tools/rmt-linter/cli.js +62 -0
- package/xtend-builder/generators/registry.js +11 -0
- package/xtend-builder/generators/rmt-app-platform.js +239 -0
- package/xtend-builder/generators/rmt-lifecycle-demo.js +3 -11
- package/xtend-builder/lib/cli.js +38 -0
- package/xtend-builder/package.json +3 -3
- package/xtend-builder/scaffold.config.js +29 -2
- package/xtend.css +49 -2
- package/xtendrmt/package.json +49 -1
- package/xtendrmt/rmt-action-effect-runtime.d.ts +126 -0
- package/xtendrmt/rmt-action-effect-runtime.js +494 -0
- package/xtendrmt/rmt-component-capability-registry.d.ts +180 -0
- package/xtendrmt/rmt-component-capability-registry.js +636 -0
- package/xtendrmt/rmt-core.d.ts +6 -0
- package/xtendrmt/rmt-core.esm.js +32 -6
- package/xtendrmt/rmt-dom-descriptor-renderer.d.ts +107 -0
- package/xtendrmt/rmt-dom-descriptor-renderer.js +1066 -0
- package/xtendrmt/rmt-event-routing-runtime.d.ts +144 -0
- package/xtendrmt/rmt-event-routing-runtime.js +666 -0
- package/xtendrmt/rmt-lifecycle-demo.app.js +2 -2
- package/xtendrmt/rmt-lifecycle-demo.core.json +4 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.app.js +1 -1
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.scaffold.json +2 -2
- package/xtendrmt/rmt-lifecycle-demo.scaffold.json +4 -4
- package/xtendrmt/rmt-native-shell-runtime.d.ts +77 -0
- package/xtendrmt/rmt-native-shell-runtime.js +309 -0
- package/xtendrmt/rmt-node-ssr-adapter.d.ts +197 -0
- package/xtendrmt/rmt-node-ssr-adapter.js +1006 -0
- package/xtendrmt/rmt-php-ssr-adapter.php +976 -0
- package/xtendrmt/rmt-runtime.browser.js +32 -6
- package/xtendrmt/rmt-runtime.esm.js +32 -6
- package/xtendrmt/rmt-state-selector-runtime.d.ts +166 -0
- package/xtendrmt/rmt-state-selector-runtime.js +866 -0
- package/xtendrmt/rmt-surface-resource-graph-runtime.d.ts +224 -0
- package/xtendrmt/rmt-surface-resource-graph-runtime.js +932 -0
- package/xtendrmt/rmt-vnext-enterprise-mfe-demo.core.json +3 -0
- package/xtendrmt/rmt-vnext-reference-demo.core.json +3 -0
- package/xtendrmt/xtendrmt-bestcase-demo.core.json +3420 -372
- package/xtendrmt/xtendrmt-bestcase-demo.js +424 -8
- package/xtendrmt/xtendrmt-bestcase-demo.rmt +214 -6
|
@@ -0,0 +1,474 @@
|
|
|
1
|
+
# XTend-Fabric Runtime
|
|
2
|
+
|
|
3
|
+
- Status: runtime skeleton since `ER-WP-08`, lifecycle boundary since `ER-WP-09`, reporter adapter since `ER-WP-10`, runtime diagnostics bridge since `ER-WP-11`, component fiber instrumentation since `ER-WP-14`, route fiber instrumentation since `ER-WP-15`, telemetry snapshots since `ER-WP-16`, performance measurements since `ER-WP-18`, performance regression since `ER-WP-19`, hydration policies since `ER-WP-20`, performance authoring since `ER-WP-21`
|
|
4
|
+
- Contract: `xtend.docs.xtend-fabric.v1`
|
|
5
|
+
- API Contract: `xtend.fabric.api.v1`
|
|
6
|
+
- Lifecycle Boundary Contract: `xtend.fabric.lifecycle-error-boundary.v1`
|
|
7
|
+
- Runtime Diagnostics Bridge Contract: `xtend.fabric.runtime-diagnostics-bridge.v1`
|
|
8
|
+
- Component Fiber Instrumentation Contract: `xtend.fabric.component-fiber-instrumentation.v1`
|
|
9
|
+
- Route Fiber Instrumentation Contract: `xtend.fabric.route-fiber-instrumentation.v1`
|
|
10
|
+
- Telemetry Snapshot Contract: `xtend.fabric.telemetry-snapshot.v1`
|
|
11
|
+
- Backpressure Signal Contract: `xtend.fabric.backpressure-signal.v1`
|
|
12
|
+
- Performance Measurement Contract: `xtend.performance.measurement.v1`
|
|
13
|
+
- Component Lifecycle Telemetry Contract: `xtend.component.lifecycle-telemetry.v1`
|
|
14
|
+
- Hydration Policy Contract: `xtend.fabric.hydration-policy.v1`
|
|
15
|
+
- Performance Authoring: [Performance for Component Authors](./performance.md)
|
|
16
|
+
- Runtime: `fabric/xtend-fabric.js`
|
|
17
|
+
- Lane Mapping: `docs/xtend-fabric-rmt-lane-mapping.md`
|
|
18
|
+
|
|
19
|
+
## Purpose
|
|
20
|
+
|
|
21
|
+
`XTend-Fabric` is the local host layer for safety, diagnostics, error boundaries, reporters and later UI scheduler integration.
|
|
22
|
+
|
|
23
|
+
Fabric replaces neither XTend UI nor XTendRMT. The layer sits between loader/API/components and app-specific code. XTendRMT remains a framework-agnostic scheduler and kernel; Fabric consumes only adapter, bridge and diagnostic signals.
|
|
24
|
+
|
|
25
|
+
## Runtime Entry
|
|
26
|
+
|
|
27
|
+
The first production runtime path is:
|
|
28
|
+
|
|
29
|
+
```html
|
|
30
|
+
<script src="/fabric/xtend-fabric.js"></script>
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
In the browser, the facade `window.XTendFabric` is then available. In local Node gates, the same module can be loaded through CommonJS.
|
|
34
|
+
|
|
35
|
+
## API
|
|
36
|
+
|
|
37
|
+
```js
|
|
38
|
+
const fabric = window.XTendFabric.createXtendFabric();
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The instance provides:
|
|
42
|
+
|
|
43
|
+
| API | Purpose |
|
|
44
|
+
|-----|---------|
|
|
45
|
+
| `createBoundary(scope, options)` | reusable boundary for loader, component, router, API or RMT-near work |
|
|
46
|
+
| `createComponentLifecycleBoundary(componentRef, options)` | component-specific boundary for lifecycle, hydration and event-handler errors |
|
|
47
|
+
| `wrapComponent(componentClassOrInstance, options)` | prepared lifecycle wrapping for component errors |
|
|
48
|
+
| `runFiber(fiberInput, callback)` | executes UI work as a fiber and records result/error locally |
|
|
49
|
+
| `emitDiagnostic(event)` | normalizes, redacts and stores local diagnostics |
|
|
50
|
+
| `registerReporter(reporter)` | registers opt-in reporters |
|
|
51
|
+
| `createReporterAdapter(options)` | generic adapter surface for custom and enterprise reporters |
|
|
52
|
+
| `createConsoleReporter(options)` | local console reporter for development |
|
|
53
|
+
| `createTestReporter(options)` | memory reporter for tests and local gates |
|
|
54
|
+
| `createRuntimeDiagnosticsBridge(options)` | connects Fabric with `xstate`, XTend API compliance and XTendRMT diagnostics |
|
|
55
|
+
| `createComponentFiberInstrumentation(componentRef, options)` | instrument mount, hydration and preload as component fibers |
|
|
56
|
+
| `createRouteFiberInstrumentation(routerRef, options)` | instrument XRouter navigation and route render as route fibers |
|
|
57
|
+
| `createTelemetrySnapshot(options)` | aggregates fibers, diagnostics, performance runtime, runtime bridge and backpressure |
|
|
58
|
+
| `publishTelemetrySnapshot(snapshotOrOptions, options)` | exports a snapshot as redacted diagnostic to opt-in reporters |
|
|
59
|
+
| `createBackpressureSignal(signal, defaults)` | creates redacted backpressure hints for scheduler/host layers |
|
|
60
|
+
| `recordComponentTelemetry(record)` | stores `xtend.component.lifecycle-telemetry.v1` records for snapshot aggregation |
|
|
61
|
+
| `captureError(error, context)` | converts errors into `xtend.fabric.diagnostic.v1` |
|
|
62
|
+
| `connectRmtDiagnostics(source, options)` | consumes RMT adapter/bridge diagnostics without kernel import |
|
|
63
|
+
|
|
64
|
+
## Contracts
|
|
65
|
+
|
|
66
|
+
Fabric exports these stable contract IDs:
|
|
67
|
+
|
|
68
|
+
- `xtend.fabric.api.v1`
|
|
69
|
+
- `xtend.fabric.diagnostic.v1`
|
|
70
|
+
- `xtend.fabric.reporter.v1`
|
|
71
|
+
- `xtend.fabric.redaction.v1`
|
|
72
|
+
- `xtend.fabric.fiber.v1`
|
|
73
|
+
- `xtend.fabric.lane.v1`
|
|
74
|
+
- `xtend.fabric.lifecycle-error-boundary.v1`
|
|
75
|
+
- `xtend.fabric.runtime-diagnostics-bridge.v1`
|
|
76
|
+
- `xtend.fabric.component-fiber-instrumentation.v1`
|
|
77
|
+
- `xtend.fabric.route-fiber-instrumentation.v1`
|
|
78
|
+
- `xtend.fabric.telemetry-snapshot.v1`
|
|
79
|
+
- `xtend.fabric.backpressure-signal.v1`
|
|
80
|
+
- `xtend.performance.measurement.v1`
|
|
81
|
+
- `xtend.component.lifecycle-telemetry.v1`
|
|
82
|
+
- `xtend.fabric.hydration-policy.v1`
|
|
83
|
+
|
|
84
|
+
The RMT lane mapping is maintained as a separate module under `fabric/rmt-lane-mapping.js` and carries `xtend.fabric.rmt-lane-mapping.v1`.
|
|
85
|
+
|
|
86
|
+
## Diagnostics
|
|
87
|
+
|
|
88
|
+
Diagnostics are stored locally and published as the browser event `xtend-fabric-diagnostic` when a browser environment exists.
|
|
89
|
+
|
|
90
|
+
Minimum fields:
|
|
91
|
+
|
|
92
|
+
- `schema`
|
|
93
|
+
- `id`
|
|
94
|
+
- `timestamp`
|
|
95
|
+
- `level`
|
|
96
|
+
- `code`
|
|
97
|
+
- `message`
|
|
98
|
+
- `source`
|
|
99
|
+
- `phase`
|
|
100
|
+
|
|
101
|
+
Optional correlation:
|
|
102
|
+
|
|
103
|
+
- `componentRef`
|
|
104
|
+
- `component`
|
|
105
|
+
- `fiberId`
|
|
106
|
+
- `lane`
|
|
107
|
+
- `severity`
|
|
108
|
+
- `correlationId`
|
|
109
|
+
- `routeRef`
|
|
110
|
+
- `scheduleRef`
|
|
111
|
+
|
|
112
|
+
## Component Lifecycle Error Boundary
|
|
113
|
+
|
|
114
|
+
Starting with `ER-WP-09`, Fabric has a production component lifecycle error boundary. It catches errors from `connectedCallback`, `attributeChangedCallback`, `render`, `hydrate`, `disconnectedCallback` and explicitly wrapped event handlers.
|
|
115
|
+
|
|
116
|
+
```js
|
|
117
|
+
const boundary = fabric.createComponentLifecycleBoundary('x-alert', {
|
|
118
|
+
swallowErrors: true,
|
|
119
|
+
fallbackValue: undefined
|
|
120
|
+
});
|
|
121
|
+
|
|
122
|
+
boundary.runPhase('render', () => component.render());
|
|
123
|
+
const safeDismiss = boundary.wrapEventHandler(component.handleDismiss, {
|
|
124
|
+
eventName: 'dismiss'
|
|
125
|
+
});
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
`wrapComponent` uses the same boundary:
|
|
129
|
+
|
|
130
|
+
```js
|
|
131
|
+
const SafeAlert = fabric.wrapComponent(XAlert, {
|
|
132
|
+
componentRef: 'x-alert',
|
|
133
|
+
eventHandlers: ['handleDismiss']
|
|
134
|
+
});
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Lifecycle errors use the code `xtend.fabric.component.lifecycle.failed` and carry at least `component`, `componentRef`, `phase`, `fiberId`, `lane`, `severity` and `cause`. The mapping is stable:
|
|
138
|
+
|
|
139
|
+
| Phase | Fiber Kind | Lane |
|
|
140
|
+
|-------|------------|------|
|
|
141
|
+
| `connectedCallback` | `component.mount` | `visible` |
|
|
142
|
+
| `attributeChangedCallback` | `component.update` | `visible` |
|
|
143
|
+
| `render` | `component.render` | `visible` |
|
|
144
|
+
| `hydrate` | `component.hydrate` | `visible` |
|
|
145
|
+
| `disconnectedCallback` | `component.disconnect` | `background` |
|
|
146
|
+
| `eventHandler` | `event.handler` | `user-blocking` |
|
|
147
|
+
|
|
148
|
+
## Reporters
|
|
149
|
+
|
|
150
|
+
The default is a `noop` reporter. Without `registerReporter`, there is no external transmission. Starting with `ER-WP-10`, there is an explicit reporter adapter contract for console, test and later enterprise reporters.
|
|
151
|
+
|
|
152
|
+
Reporters must have at least this shape:
|
|
153
|
+
|
|
154
|
+
```js
|
|
155
|
+
{
|
|
156
|
+
id: 'test',
|
|
157
|
+
schema: 'xtend.fabric.reporter.v1',
|
|
158
|
+
kind: 'test',
|
|
159
|
+
delivery: 'memory',
|
|
160
|
+
external: false,
|
|
161
|
+
minimumLevel: 'warn',
|
|
162
|
+
capabilities: ['diagnostics'],
|
|
163
|
+
publish(event, context) {},
|
|
164
|
+
flush(reason) {},
|
|
165
|
+
dispose() {}
|
|
166
|
+
}
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Runtime factories:
|
|
170
|
+
|
|
171
|
+
| Factory | Purpose |
|
|
172
|
+
|---------|---------|
|
|
173
|
+
| `createNoopReporter()` | default without external output |
|
|
174
|
+
| `createReporterAdapter(options)` | vendor-neutral adapter for custom and enterprise reporters |
|
|
175
|
+
| `createConsoleReporter(options)` | local console output, opt-in |
|
|
176
|
+
| `createTestReporter(options)` | memory reporter for gates, opt-in |
|
|
177
|
+
|
|
178
|
+
```js
|
|
179
|
+
const testReporter = window.XTendFabric.createTestReporter({
|
|
180
|
+
minimumLevel: 'warn'
|
|
181
|
+
});
|
|
182
|
+
const unregister = fabric.registerReporter(testReporter);
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
```js
|
|
186
|
+
const enterpriseReporter = window.XTendFabric.createReporterAdapter({
|
|
187
|
+
id: 'enterprise-probe',
|
|
188
|
+
kind: 'enterprise',
|
|
189
|
+
external: true,
|
|
190
|
+
minimumLevel: 'error',
|
|
191
|
+
capabilities: ['diagnostics', 'lifecycle-errors'],
|
|
192
|
+
sink(event, context) {
|
|
193
|
+
// Future enterprise transport hook.
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Reporters receive only redacted diagnostics. Sensitive fields such as `token`, `password`, `cookie`, `authorization`, `header`, `query` or `form` are removed. DOM nodes are not serialized. `minimumLevel`, `filter(event, context)` and `mapEvent(event, context)` can control delivery and target payload. `mapEvent` is redacted again after mapping. Errors in reporters create local diagnostics with `xtend.fabric.reporter.failed`.
|
|
199
|
+
|
|
200
|
+
## Runtime Diagnostics Bridge
|
|
201
|
+
|
|
202
|
+
Starting with `ER-WP-11`, `createRuntimeDiagnosticsBridge(options)` connects Fabric with `xstate`, XTend API compliance and XTendRMT diagnostics. The bridge imports no RMT kernel. It consumes adapter data, bridge outputs and diagnostics hubs.
|
|
203
|
+
|
|
204
|
+
```js
|
|
205
|
+
const runtimeBridge = fabric.createRuntimeDiagnosticsBridge({
|
|
206
|
+
xstate: window.xstate,
|
|
207
|
+
api: window.XTend
|
|
208
|
+
});
|
|
209
|
+
|
|
210
|
+
runtimeBridge.connectXState();
|
|
211
|
+
runtimeBridge.connectApi();
|
|
212
|
+
const diagnosticsHub = runtimeBridge.createRmtDiagnosticsHub();
|
|
213
|
+
```
|
|
214
|
+
|
|
215
|
+
`connectXState` writes stable mirror keys:
|
|
216
|
+
|
|
217
|
+
| Key | Purpose |
|
|
218
|
+
|-----|---------|
|
|
219
|
+
| `xtend.fabric.bridge.ready` | bridge readiness with contract ID |
|
|
220
|
+
| `xtend.fabric.diagnostics.last` | latest redacted Fabric diagnostic |
|
|
221
|
+
| `xtend.fabric.diagnostics.snapshot` | local snapshot with diagnostic and fiber counters |
|
|
222
|
+
|
|
223
|
+
Stable bridge diagnostics:
|
|
224
|
+
|
|
225
|
+
| Code | Source |
|
|
226
|
+
|------|--------|
|
|
227
|
+
| `xtend.fabric.xstate.connected` | xstate is connected |
|
|
228
|
+
| `xtend.fabric.xstate.changed` | an external state key was changed |
|
|
229
|
+
| `xtend.fabric.api.connected` | XTend API compliance metadata was read |
|
|
230
|
+
| `xtend.fabric.rmt.connected` | RMT diagnostic source is connected |
|
|
231
|
+
| `xtend.rmt.bridge.adapter.result.degraded` | RMT adapter result was normalized into Fabric |
|
|
232
|
+
|
|
233
|
+
`connectRmtDiagnostics` accepts arrays, `source.diagnostics`, `source.listDiagnostics()`, `source.subscribe(fn)`, DOM events and the hub shape created by `createRmtDiagnosticsHub()`. All payloads are redacted before state or reporter output.
|
|
234
|
+
|
|
235
|
+
Details are in the contract [XTend-Fabric Runtime Diagnostics Bridge](../development/XTend-Fabric-Runtime-Diagnostics-Bridge.md).
|
|
236
|
+
|
|
237
|
+
## Fiber
|
|
238
|
+
|
|
239
|
+
`runFiber` normalizes UI work into `xtend.fabric.fiber.v1`.
|
|
240
|
+
|
|
241
|
+
```js
|
|
242
|
+
fabric.runFiber({
|
|
243
|
+
kind: 'component.hydrate',
|
|
244
|
+
scope: 'x-alert#primary',
|
|
245
|
+
componentRef: 'x-alert',
|
|
246
|
+
correlationId: 'route.alerts'
|
|
247
|
+
}, () => {
|
|
248
|
+
// UI work
|
|
249
|
+
});
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Fabric infers the lane from the fiber kind, for example `component.hydrate` -> `visible` and `route.navigate` -> `user-blocking`.
|
|
253
|
+
|
|
254
|
+
## Component Fiber Instrumentation
|
|
255
|
+
|
|
256
|
+
Starting with `ER-WP-14`, hosts and adapters can explicitly execute component mount, hydration and loader preload as fibers:
|
|
257
|
+
|
|
258
|
+
```js
|
|
259
|
+
const componentFibers = fabric.createComponentFiberInstrumentation('x-alert', {
|
|
260
|
+
scope: 'x-alert#primary',
|
|
261
|
+
routeRef: '/alerts',
|
|
262
|
+
correlationId: 'route.alerts'
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
componentFibers.mount(() => document.createElement('x-alert'));
|
|
266
|
+
await componentFibers.hydrate((fiber) => element.hydrate(model, { fiber }));
|
|
267
|
+
componentFibers.preload(() => import('/components/xalert.js'));
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
Operation profiles:
|
|
271
|
+
|
|
272
|
+
| Operation | Fiber Kind | Default Lane | ScheduleRef | Endpoint Hint |
|
|
273
|
+
|-----------|------------|--------------|-------------|---------------|
|
|
274
|
+
| `mount` | `component.mount` | `visible` | `component.visible.mount` | `xtendrmt.component.mount` |
|
|
275
|
+
| `hydrate` | `component.hydrate` | `idle` | `component.idle.hydrate` | `xtendrmt.component.hydrate` |
|
|
276
|
+
| `preload` | `loader.module` | `visible` | `component.visible.mount` | `xtendrmt.component.mount` |
|
|
277
|
+
|
|
278
|
+
Every completed run creates an `xtend.fabric.fiber.v1` record with `durationMs`, `result`, `lane`, `scheduleRef`, `endpointNameHint` and `diagnostics`. Errors create `xtend.fabric.component.mount.failed`, `xtend.fabric.component.hydrate.failed` or `xtend.fabric.component.preload.failed` and are forwarded to opt-in reporters. Metadata is redacted before it lands in the fiber store.
|
|
279
|
+
|
|
280
|
+
Fabric imports no RMT kernel here. `scheduleRef` and `endpointNameHint` are only host/adapter hints for XTendRMT or other schedulers.
|
|
281
|
+
|
|
282
|
+
## Route Fiber Instrumentation
|
|
283
|
+
|
|
284
|
+
Starting with `ER-WP-15`, hosts, app shells and XRouter adapters can explicitly execute navigation and route render as fibers:
|
|
285
|
+
|
|
286
|
+
```js
|
|
287
|
+
const routeFibers = fabric.createRouteFiberInstrumentation('xtend.xrouter', {
|
|
288
|
+
scope: 'x-router#shell',
|
|
289
|
+
adapterRef: 'xtendrmt.xrouter',
|
|
290
|
+
hostRef: 'app-shell'
|
|
291
|
+
});
|
|
292
|
+
|
|
293
|
+
routeFibers.navigate(() => router.navigate('/settings'), {
|
|
294
|
+
from: '/',
|
|
295
|
+
to: '/settings',
|
|
296
|
+
routeId: 'settings'
|
|
297
|
+
});
|
|
298
|
+
|
|
299
|
+
await routeFibers.render((fiber) => router._renderRoute(match, outlet, { fiber }), {
|
|
300
|
+
routeRef: '/settings',
|
|
301
|
+
componentRef: 'x-settings'
|
|
302
|
+
});
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
Operation profiles:
|
|
306
|
+
|
|
307
|
+
| Operation | Fiber Kind | Default Lane | ScheduleRef | Endpoint Hint |
|
|
308
|
+
|-----------|------------|--------------|-------------|---------------|
|
|
309
|
+
| `navigate` | `route.navigate` | `user-blocking` | `ui.user-blocking.input` | `xtendrmt.ui.user-blocking` |
|
|
310
|
+
| `render` | `route.render` | `transition` | `route.transition.render` | `xtendrmt.route.render` |
|
|
311
|
+
|
|
312
|
+
Route render can be scheduled visibly through overrides, for example with `lane: "visible"` and `scheduleRef: "route.visible.render"`. Errors create `xtend.fabric.route.navigate.failed` or `xtend.fabric.route.render.failed`. Metadata is redacted and can carry `routeId`, `from`, `to`, `params`, `query`, `componentRef`, `adapterRef`, `hostRef` and `backpressureSignal`.
|
|
313
|
+
|
|
314
|
+
The XRouter edge remains framework-neutral: `navigate(to, options)`, `_handleNavigation()`, `_renderRoute(match, container)` and the `router-navigate` signal are instrumentable boundaries. Fabric imports no RMT kernel; `scheduleRef` and `endpointNameHint` are only scheduler hints for XTendRMT or other hosts.
|
|
315
|
+
|
|
316
|
+
## Telemetry Snapshots and Backpressure
|
|
317
|
+
|
|
318
|
+
Starting with `ER-WP-16`, `createTelemetrySnapshot(options)` summarizes local runtime data:
|
|
319
|
+
|
|
320
|
+
```js
|
|
321
|
+
const snapshot = fabric.createTelemetrySnapshot({
|
|
322
|
+
runtimeBridge,
|
|
323
|
+
rmtBridge,
|
|
324
|
+
performance: window.performance,
|
|
325
|
+
correlationId: 'route.settings'
|
|
326
|
+
});
|
|
327
|
+
|
|
328
|
+
fabric.publishTelemetrySnapshot(snapshot);
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
A snapshot carries `xtend.fabric.telemetry-snapshot.v1` and contains:
|
|
332
|
+
|
|
333
|
+
| Area | Content |
|
|
334
|
+
|------|---------|
|
|
335
|
+
| `totals` | fiber counters, errors, budget misses, average and maximum duration |
|
|
336
|
+
| `lanes` | aggregation per Fabric lane including `scheduleRefs` |
|
|
337
|
+
| `backpressure` | score, level, action, signals and lane grouping |
|
|
338
|
+
| `componentTelemetry` | component lifecycle records by operation, component and lane |
|
|
339
|
+
| `performance` | optional `mark`/`measure` entries, normalized measurements and `phaseSummary` |
|
|
340
|
+
| `runtime` | optional snapshot from `createRuntimeDiagnosticsBridge` |
|
|
341
|
+
|
|
342
|
+
Component lifecycle telemetry carries `xtend.component.lifecycle-telemetry.v1`. `recordComponentTelemetry(record)` stores records locally; `createTelemetrySnapshot({ componentTelemetry })` can alternatively normalize explicit records. Both paths cover `mount`, `hydrate`, `render`, `update`, `event`, `unmount` and `error`. The snapshot section `componentTelemetry` contains `recordCount`, `operations`, `components`, `lanes`, `statusCounts`, durations, diagnostics and the latest records.
|
|
343
|
+
|
|
344
|
+
Backpressure signals carry `xtend.fabric.backpressure-signal.v1`. Fabric creates them from fiber errors, deadline overruns, explicit `backpressureSignal` metadata, component lifecycle telemetry and optional snapshot inputs.
|
|
345
|
+
|
|
346
|
+
When `createTelemetrySnapshot({ rmtBridge })` receives an XTendRMT `createRmtStateSchedulerDiagnosticsBridge`, the snapshot is automatically mirrored to RMT through `recordTelemetrySnapshot`. This lands `snapshot.backpressure` and the scheduler action permanently in `rmt.backpressure.*`, without hosts having to build their own backpressure API.
|
|
347
|
+
|
|
348
|
+
| Level | Action |
|
|
349
|
+
|-------|--------|
|
|
350
|
+
| `none` | `continue` |
|
|
351
|
+
| `low` | `observe` |
|
|
352
|
+
| `medium` | `coalesce-idle-work` |
|
|
353
|
+
| `high` | `defer-background-work` |
|
|
354
|
+
| `critical` | `protect-user-blocking-work` |
|
|
355
|
+
|
|
356
|
+
`publishTelemetrySnapshot` creates the local diagnostic `xtend.fabric.telemetry.snapshot` on the `diagnostics` lane. Reporters remain opt-in; the default `noop` sends nothing externally.
|
|
357
|
+
|
|
358
|
+
Details are in the contract [XTend Telemetry Snapshot and Backpressure Contract](../development/XTend-Telemetry-Snapshot-und-Backpressure-Contract.md).
|
|
359
|
+
|
|
360
|
+
The component lifecycle connection is described in [XTend Component Lifecycle Telemetry Contract](../development/XTend-Component-Lifecycle-Telemetry-Contract.md). The local gate is:
|
|
361
|
+
|
|
362
|
+
```bash
|
|
363
|
+
node scripts/run_xtend_tests.js rmt-component-lifecycle-telemetry --json
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
## Performance Measurements
|
|
367
|
+
|
|
368
|
+
Starting with `ER-WP-18`, Fabric automatically measures known fiber kinds through `performance.mark` and `performance.measure`.
|
|
369
|
+
|
|
370
|
+
| Fiber Kind | Measure | Phase |
|
|
371
|
+
|------------|---------|-------|
|
|
372
|
+
| `loader.module` | `xtend.loader.module` | `load` |
|
|
373
|
+
| `component.mount` | `xtend.component.mount` | `mount` |
|
|
374
|
+
| `component.hydrate` | `xtend.component.hydrate` | `hydrate` |
|
|
375
|
+
| `component.render` | `xtend.component.render` | `render` |
|
|
376
|
+
| `component.update` | `xtend.component.update` | `update` |
|
|
377
|
+
| `event.handler` | `xtend.event.handler` | `event` |
|
|
378
|
+
| `route.navigate` | `xtend.route.navigate` | `route` |
|
|
379
|
+
| `route.render` | `xtend.route.render` | `route` |
|
|
380
|
+
| `diagnostics.snapshot` | `xtend.diagnostics.snapshot` | `diagnostics` |
|
|
381
|
+
|
|
382
|
+
`createTelemetrySnapshot()` converts performance entries with prefix `xtend.` into `xtend.performance.measurement.v1` records. The snapshot section `performance.phaseSummary` aggregates `load`, `hydrate`, `render` and `route`, among others.
|
|
383
|
+
|
|
384
|
+
```js
|
|
385
|
+
const snapshot = fabric.createTelemetrySnapshot({
|
|
386
|
+
performance: window.performance
|
|
387
|
+
});
|
|
388
|
+
|
|
389
|
+
console.log(snapshot.performance.measurements);
|
|
390
|
+
console.log(snapshot.performance.phaseSummary.hydrate);
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
Details are in [Performance Measurements](./performance-measurements.md) and in the contract [XTend Performance Measurement Points and Snapshots](../development/XTend-Performance-Messpunkte-und-Snapshots.md).
|
|
394
|
+
|
|
395
|
+
Since `ER-WP-19`, [Performance Regression](./performance-regression.md) evaluates these measurements against local deterministic baselines as `xtend.performance.regression-report.v1`.
|
|
396
|
+
|
|
397
|
+
## Hydration Policies
|
|
398
|
+
|
|
399
|
+
Starting with `ER-WP-20`, `fabric/hydration-policy.js` decides whether component hydration is scheduled visible, idle or lazy:
|
|
400
|
+
|
|
401
|
+
| Policy | Lane | ScheduleRef |
|
|
402
|
+
|--------|------|-------------|
|
|
403
|
+
| `visible` | `visible` | `component.visible.hydrate` |
|
|
404
|
+
| `idle` | `idle` | `component.idle.hydrate` |
|
|
405
|
+
| `lazy` | `idle` | `component.lazy.hydrate` |
|
|
406
|
+
|
|
407
|
+
Non-visible hydration must not use the `user-blocking` lane. RMT receives only schedule records; XTend execution remains in Fabric or host adapters. Details are in [Hydration Policies](./hydration-policies.md).
|
|
408
|
+
|
|
409
|
+
## RMT Boundary
|
|
410
|
+
|
|
411
|
+
`connectRmtDiagnostics` accepts RMT-near adapter and bridge outputs, but imports no RMT kernel and parses no `.rmt` documents.
|
|
412
|
+
|
|
413
|
+
Allowed:
|
|
414
|
+
|
|
415
|
+
- adapter results
|
|
416
|
+
- bridge diagnostics
|
|
417
|
+
- schedule endpoint signals
|
|
418
|
+
- diagnostics snapshots
|
|
419
|
+
|
|
420
|
+
Not allowed:
|
|
421
|
+
|
|
422
|
+
- import the XTendRMT kernel
|
|
423
|
+
- rewrite RMT scheduler policies in Fabric
|
|
424
|
+
- establish XTend as a required host in RMT
|
|
425
|
+
|
|
426
|
+
## RMT Lane Mapping
|
|
427
|
+
|
|
428
|
+
Starting with `ER-WP-13`, `fabric/rmt-lane-mapping.js` maps Fabric lanes to RMT schedule records. The RMT kernel remains framework-agnostic: it sees schedule policies and endpoint names, but no XTend component logic.
|
|
429
|
+
|
|
430
|
+
Short form:
|
|
431
|
+
|
|
432
|
+
| Fabric Lane | RMT Schedule Lane |
|
|
433
|
+
|-------------|-------------------|
|
|
434
|
+
| `user-blocking` | `user-blocking` |
|
|
435
|
+
| `a11y` | `user-blocking` |
|
|
436
|
+
| `visible` | `visible` |
|
|
437
|
+
| `transition` | `transition` |
|
|
438
|
+
| `idle` | `idle` |
|
|
439
|
+
| `background` | `background` |
|
|
440
|
+
| `diagnostics` | `diagnostics` |
|
|
441
|
+
|
|
442
|
+
Details, examples and gates are in [XTend-Fabric RMT Lane Mapping](./xtend-fabric-rmt-lane-mapping.md).
|
|
443
|
+
|
|
444
|
+
## Gates
|
|
445
|
+
|
|
446
|
+
```bash
|
|
447
|
+
node scripts/run_xtend_tests.js fabric --json
|
|
448
|
+
node scripts/run_xtend_tests.js fabric-lane-mapping --json
|
|
449
|
+
node scripts/run_xtend_tests.js fabric-lifecycle-boundary --json
|
|
450
|
+
node scripts/run_xtend_tests.js fabric-reporters --json
|
|
451
|
+
node scripts/run_xtend_tests.js fabric-runtime-bridge --json
|
|
452
|
+
node scripts/run_xtend_tests.js fabric-component-fibers --json
|
|
453
|
+
node scripts/run_xtend_tests.js fabric-route-fibers --json
|
|
454
|
+
node scripts/run_xtend_tests.js fabric-telemetry-snapshot --json
|
|
455
|
+
node scripts/run_xtend_tests.js fabric-performance-measurements --json
|
|
456
|
+
node scripts/run_xtend_tests.js rmt-component-lifecycle-telemetry --json
|
|
457
|
+
node scripts/run_xtend_tests.js performance-regression --json
|
|
458
|
+
node scripts/run_xtend_tests.js hydration-policy --json
|
|
459
|
+
npm run test:fabric
|
|
460
|
+
npm run test:fabric-lanes
|
|
461
|
+
npm run test:fabric-lifecycle
|
|
462
|
+
npm run test:fabric-reporters
|
|
463
|
+
npm run test:fabric-runtime-bridge
|
|
464
|
+
npm run test:fabric-component-fibers
|
|
465
|
+
npm run test:fabric-route-fibers
|
|
466
|
+
npm run test:fabric-telemetry
|
|
467
|
+
npm run test:fabric-performance
|
|
468
|
+
npm run test:performance
|
|
469
|
+
npm run test:hydration-policy
|
|
470
|
+
node scripts/run_xtend_tests.js references --json
|
|
471
|
+
npm test
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
`ER-WP-19` is complete. Loader, hydration, render and route measurement points now hang in the performance runtime, in Fabric telemetry snapshots and in the local performance regression gate.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# XTend Loader Types
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.type-exports.loader-declarations.v1`
|
|
4
|
+
- Workpackage: `WP-TypeExports-02`
|
|
5
|
+
- Gate: `node scripts/run_xtend_tests.js type-exports-loader --json`
|
|
6
|
+
- Report: `.xtend-test-results/xtend-type-exports-loader-report.json`
|
|
7
|
+
- Declarations: `xtend-loader.d.ts`, `xtend-dev.d.ts`
|
|
8
|
+
|
|
9
|
+
## Purpose
|
|
10
|
+
|
|
11
|
+
`xtend-loader.d.ts` describes the official loader surface for app shells, dynamic hydration and framework-native skeleton/style helpers. The runtime remains `xtend-loader.js`; the declaration adds no new runtime dependency.
|
|
12
|
+
|
|
13
|
+
## Global APIs
|
|
14
|
+
|
|
15
|
+
| Global | Type |
|
|
16
|
+
| --- | --- |
|
|
17
|
+
| `window.XTendLoader` | `XTendLoaderApi` |
|
|
18
|
+
| `window.XTendStyleRegistry` | `XTendStyleRegistryApi` |
|
|
19
|
+
| `window.XTendSkeletonLoader` | `XTendSkeletonLoaderApi` |
|
|
20
|
+
| `window.__XTendLoaderBootPromise` | `Promise<XTendLoaderBootResult>` |
|
|
21
|
+
|
|
22
|
+
## Important Methods
|
|
23
|
+
|
|
24
|
+
| API | Methods |
|
|
25
|
+
| --- | --- |
|
|
26
|
+
| `XTendLoaderApi` | `ensureComponent`, `hydrateTree`, `showSkeleton`, `hideSkeleton`, `ensureRuntimeStyles`, `defineComponentStyle`, `adoptStyle`, `initiateXTend` |
|
|
27
|
+
| `XTendStyleRegistryApi` | `ensureRuntimeStyles`, `ensureDocumentStyle`, `defineComponentStyle`, `adopt`, `adoptStyle`, `get`, `getThemeStylesheetState`, `list` |
|
|
28
|
+
| `XTendSkeletonLoaderApi` | `create`, `show`, `hide` |
|
|
29
|
+
|
|
30
|
+
## Events
|
|
31
|
+
|
|
32
|
+
`WindowEventMap` contains typed loader events:
|
|
33
|
+
|
|
34
|
+
- `xtend-loader-diagnostic` with `XTendLoaderDiagnosticDetail`
|
|
35
|
+
- `xtend-loader-performance` with `XTendLoaderPerformanceDetail`
|
|
36
|
+
- `xtend-loader-tree-hydrated` with `XTendHydrateTreeDetail`
|
|
37
|
+
|
|
38
|
+
## Package Exports
|
|
39
|
+
|
|
40
|
+
As of this run, the package exports `.`, `./loader` and `./legacy-loader` have `types` conditions:
|
|
41
|
+
|
|
42
|
+
| Export | Types |
|
|
43
|
+
| --- | --- |
|
|
44
|
+
| `.` | `./xtend-loader.d.ts` |
|
|
45
|
+
| `./loader` | `./xtend-loader.d.ts` |
|
|
46
|
+
| `./legacy-loader` | `./xtend-dev.d.ts` |
|
|
47
|
+
|
|
48
|
+
`xtend.css` remains an optional theme artifact. In short: xtend.css remains optional. Loader types describe `xtend.css` only as an optionally recognized default stylesheet file and do not depend on an external CSS file.
|
|
49
|
+
|
|
50
|
+
## Drift Gate
|
|
51
|
+
|
|
52
|
+
The gate `type-exports-loader` checks:
|
|
53
|
+
|
|
54
|
+
- declaration files exist and are included in the package
|
|
55
|
+
- package `types` conditions point to the loader declarations
|
|
56
|
+
- runtime methods in `XTendLoader`, `XTendStyleRegistry` and `XTendSkeletonLoader` are visible in the declarations
|
|
57
|
+
- loader events are typed in `WindowEventMap`
|
|
58
|
+
- `xtend-loader.js` imports no `.d.ts` file and the boot path remains unchanged
|