@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,33 @@
|
|
|
1
|
+
# XTend-Scaffold Templates
|
|
2
|
+
|
|
3
|
+
Dieser Bereich enthaelt ab `WP-E03-04` den Template-Ladepfad fuer `XTend-Scaffold`.
|
|
4
|
+
|
|
5
|
+
`xtend-builder/templates/registry.js` stellt die Template-Registry mit Schema `xtend.scaffold.template-registry.v1` bereit.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
node xtend-builder/scaffold.js templates --json
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
Die Registry fuehrt Template-IDs fuer `component`, `docs`, `tests`, `fixtures`, `types`, `manifest` und `demo`. Seit `WP-E03-05` sind die Pflichtartefakt-Templates fuer `component`, `docs`, `tests`, `fixtures`, `types` und `manifest` konkret vorhanden. Seit `WP-E03-06` werden Manifest- und Hydration-Werte aus `xtend-builder/wiring/` in diese Templates eingespeist. Seit `WP-E03-07` werden profilbasierte State-, Event- und API-Patterns ebenfalls ueber `xtend-builder/wiring/` gerendert. Seit `WP-E03-09` enthaelt das Types-Template den Typing-Contract und die vorbereitete XTendRMT-Adapter-Anbindung aus `xtend-builder/typing/`. Seit `WP-E03-10` ist das `demo` Template als Preview-Reference-Plan implementiert. Seit `WP-E03-11` tragen Source-, Docs-, Types- und Manifest-Templates die Extension-Point-Metadaten aus `xtend-builder/extensions/`. Seit Epic 04 / `WP-E04-08` muessen RMT-kompatible Template-Ausgaben den Gate `node scripts/run_xtend_tests.js rmt-compatibility --json` referenzieren. Seit `ER-WP-21` tragen neue Component-Dry-Runs das Performance-Profil `xtend.performance.component-profile.v1` in Source, Docs, Tests, Types und Manifest. Seit `ER-WP-23` tragen neue Component-Dry-Runs das A11y-Profil `xtend.a11y.profile.v1` in Source, Docs, Tests, Fixtures, Types und Manifest. Seit `WP-E10-07` gibt es zusaetzliche TypeScript-first Templates fuer `ts-source`, `ts-contract`, `ts-rmt`, `ts-a11y`, `ts-performance` und `ts-fixture`.
|
|
12
|
+
|
|
13
|
+
Spaetere Templates muessen die Epic-02-Testpflicht und die in `xtend-builder/scaffold.config.js` definierten Pflichtartefakte respektieren.
|
|
14
|
+
|
|
15
|
+
## Pflichtartefakt-Templates
|
|
16
|
+
|
|
17
|
+
| Artefakt | Template |
|
|
18
|
+
|----------|----------|
|
|
19
|
+
| `component` | `xtend-builder/templates/component/source.template.js` |
|
|
20
|
+
| `docs` | `xtend-builder/templates/component/docs.template.md` |
|
|
21
|
+
| `tests` | `xtend-builder/templates/component/component-suite.template.js` |
|
|
22
|
+
| `fixtures` | `xtend-builder/templates/component/fixture.template.html` |
|
|
23
|
+
| `types` | `xtend-builder/templates/component/types.template.d.ts` |
|
|
24
|
+
| `manifest` | `xtend-builder/templates/component/manifest-plan.template.json` |
|
|
25
|
+
| `demo` | `xtend-builder/templates/component/demo-plan.template.md` |
|
|
26
|
+
| `ts-source` | `xtend-builder/templates/component/source.template.ts` |
|
|
27
|
+
| `ts-contract` | `xtend-builder/templates/component/contract.template.ts` |
|
|
28
|
+
| `ts-rmt` | `xtend-builder/templates/component/rmt.template.ts` |
|
|
29
|
+
| `ts-a11y` | `xtend-builder/templates/component/a11y.template.ts` |
|
|
30
|
+
| `ts-performance` | `xtend-builder/templates/component/performance.template.ts` |
|
|
31
|
+
| `ts-fixture` | `xtend-builder/templates/component/fixture-data.template.ts` |
|
|
32
|
+
|
|
33
|
+
Der Template-Loader `xtend-builder/templates/loader.js` rendert Platzhalter wie `{{tag}}`, `{{name}}`, `{{className}}`, `{{profilesCsv}}`, `{{stateKeyPrefix}}`, `{{manifestSource}}`, `{{fixtureScriptPath}}`, `{{hydrationStateAttribute}}`, `{{featureStatePrefix}}`, `{{featureEventRows}}`, `{{featureReviewRules}}`, `{{typeContractSchema}}`, `{{typeRmtAdapter}}`, `{{typeRmtComponentContractVersion}}`, `{{typeRmtTemplateAuthoringContractVersion}}`, `{{typeRmtTemplateAdapter}}`, `{{typeRmtTemplateRef}}`, `{{typeRmtRootHandshakeContractVersion}}`, `{{typeRmtRootRef}}`, `{{typeRmtHostCapabilitiesContractVersion}}`, `{{typeRmtHostCapabilityNameUnion}}`, `{{rmtCompatibilitySchema}}`, `{{rmtCompatibilityContractRefsCsv}}`, `{{typeRmtRouterAdapter}}`, `{{previewContractSchema}}`, `{{previewTargetPath}}`, `{{extensionContractSchema}}`, `{{extensionSourceGetter}}`, `{{extensionScheduleHint}}`, `{{performanceProfileSchema}}`, `{{performancePolicySchema}}`, `{{performanceBudgetClass}}`, `{{performanceLane}}`, `{{performanceHydrationPolicy}}`, `{{performanceReviewRules}}`, `{{performanceProfileJson}}`, `{{a11yProfileSchema}}`, `{{a11yRole}}`, `{{a11yAccessibleNameDefault}}`, `{{a11yKeyboardRows}}`, `{{a11yAriaStateRows}}`, `{{a11yProfileJson}}`, `{{componentContractV2Json}}`, `{{rmtComponentMetadataJson}}`, `{{componentLifecycleTelemetrySchema}}`, `{{componentFabricLaneIngestionSchema}}`, `{{tsSourcePath}}` und `{{tsRuntimeArtifactPath}}`.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export const {{className}}A11yProfile = {{a11yProfileJson}} as const;
|
|
2
|
+
|
|
3
|
+
export const {{className}}A11yScaffoldContract = {
|
|
4
|
+
componentContract: '{{a11yComponentContractSchema}}',
|
|
5
|
+
profile: '{{a11yProfileSchema}}',
|
|
6
|
+
screenreaderSignals: '{{a11yScreenreaderContractSchema}}',
|
|
7
|
+
motionContrast: '{{a11yMotionContrastContractSchema}}',
|
|
8
|
+
requiredFixtureAttributes: ['aria-label']
|
|
9
|
+
} as const;
|
|
10
|
+
|
|
11
|
+
export default {{className}}A11yProfile;
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
const path = require('path');
|
|
2
|
+
const {
|
|
3
|
+
createSuiteContext,
|
|
4
|
+
printSuiteReport
|
|
5
|
+
} = require('../utils/assertions');
|
|
6
|
+
const {
|
|
7
|
+
readJson,
|
|
8
|
+
readText,
|
|
9
|
+
resolveRootDir
|
|
10
|
+
} = require('../utils/files');
|
|
11
|
+
const {
|
|
12
|
+
syntaxCheckFile
|
|
13
|
+
} = require('../utils/process');
|
|
14
|
+
|
|
15
|
+
function run{{className}}ComponentSuite(options = {}) {
|
|
16
|
+
const rootDir = resolveRootDir(options.rootDir || path.resolve(__dirname, '..', '..'));
|
|
17
|
+
const context = createSuiteContext({
|
|
18
|
+
id: 'component:{{tag}}',
|
|
19
|
+
label: '{{tag}} component contract'
|
|
20
|
+
});
|
|
21
|
+
|
|
22
|
+
const source = readText('components/{{tag}}.js', rootDir);
|
|
23
|
+
const fixture = readText('tests/components/fixtures/{{tag}}.component.html', rootDir);
|
|
24
|
+
const docs = readText('docs/components/{{name}}.md', rootDir);
|
|
25
|
+
const manifest = readJson('components/manifest.json', rootDir);
|
|
26
|
+
const syntax = syntaxCheckFile('components/{{tag}}.js', { rootDir });
|
|
27
|
+
|
|
28
|
+
context.assert(syntax.ok, '{{tag}} source passes syntax check');
|
|
29
|
+
context.assert(source.includes("customElements.define('{{tag}}'") || source.includes('customElements.define("{{tag}}"'), '{{tag}} registers its Custom Element');
|
|
30
|
+
context.assert(source.includes('attachShadow') && (source.includes("mode: 'open'") || source.includes('mode: "open"')), '{{tag}} creates open shadow DOM');
|
|
31
|
+
context.assert(source.includes('observedAttributes'), '{{tag}} declares observed attributes');
|
|
32
|
+
context.assert(source.includes('variant'), '{{tag}} handles variant attribute');
|
|
33
|
+
context.assert(source.includes('hydrate()'), '{{tag}} exposes explicit hydration path');
|
|
34
|
+
context.assert(source.includes('disconnectedCallback'), '{{tag}} exposes disconnect cleanup path');
|
|
35
|
+
context.assert(source.includes('{{hydrationStateAttribute}}'), '{{tag}} marks hydrated instances');
|
|
36
|
+
context.assert(source.includes('xtendScaffoldWiring'), '{{tag}} exposes scaffold feature wiring metadata');
|
|
37
|
+
context.assert(source.includes('{{featureWiringSchema}}'), '{{tag}} exposes stable feature wiring schema');
|
|
38
|
+
context.assert(source.includes('{{featureStatePrefix}}'), '{{tag}} exposes canonical state prefix');
|
|
39
|
+
context.assert(source.includes('xtendScaffoldA11yProfile'), '{{tag}} exposes scaffold A11y profile metadata');
|
|
40
|
+
context.assert(source.includes('{{a11yProfileSchema}}'), '{{tag}} exposes stable A11y profile schema');
|
|
41
|
+
context.assert(source.includes('{{a11yTestContractSchema}}'), '{{tag}} exposes stable A11y test contract');
|
|
42
|
+
context.assert(source.includes('{{a11yScreenreaderContractSchema}}'), '{{tag}} exposes stable screenreader signal contract');
|
|
43
|
+
context.assert(source.includes('{{a11yMotionContrastContractSchema}}'), '{{tag}} exposes stable motion/contrast contract');
|
|
44
|
+
context.assert(source.includes('prefers-reduced-motion'), '{{tag}} respects reduced-motion users');
|
|
45
|
+
context.assert(source.includes('forced-colors'), '{{tag}} respects forced-colors users');
|
|
46
|
+
context.assert(source.includes('xtendScaffoldPerformanceProfile'), '{{tag}} exposes scaffold Performance profile metadata');
|
|
47
|
+
context.assert(source.includes('{{performanceProfileSchema}}'), '{{tag}} exposes stable Performance profile schema');
|
|
48
|
+
context.assert(source.includes('{{performancePolicySchema}}'), '{{tag}} exposes stable Performance policy schema');
|
|
49
|
+
context.assert(source.includes("aria-label") || source.includes('aria-label'), '{{tag}} supports accessible name attribute');
|
|
50
|
+
context.assert(source.includes('role="${role}"') || source.includes('role='), '{{tag}} renders explicit role semantics');
|
|
51
|
+
context.assert(!source.includes('xstate.on(') && !source.includes('xstate.off('), '{{tag}} avoids legacy xstate listener facades');
|
|
52
|
+
context.assert(!source.includes('window.show'), '{{tag}} avoids unnamespaced global helper APIs');
|
|
53
|
+
context.assert(source.includes('<slot'), '{{tag}} renders default slot content');
|
|
54
|
+
context.assert(fixture.includes('<{{tag}}'), '{{tag}} fixture contains component markup');
|
|
55
|
+
context.assert(fixture.includes('aria-label="{{a11yAccessibleNameDefault}}"'), '{{tag}} fixture sets accessible name');
|
|
56
|
+
context.assert(fixture.includes('../../components/{{tag}}.js') || fixture.includes('../../../components/{{tag}}.js'), '{{tag}} fixture uses repo-local component import');
|
|
57
|
+
context.assert(!fixture.includes('https://') && !fixture.includes('http://'), '{{tag}} fixture avoids external component imports');
|
|
58
|
+
context.assert(fixture.includes('window.{{fixtureResultName}}'), '{{tag}} fixture exposes hydration result object');
|
|
59
|
+
context.assert(fixture.includes('hydrated:'), '{{tag}} fixture reports hydration status');
|
|
60
|
+
context.assert(fixture.includes('a11yProfile:') && fixture.includes('accessibleName:'), '{{tag}} fixture reports A11y hydration result');
|
|
61
|
+
context.assert(fixture.includes('screenreaderSignals:') && fixture.includes('{{a11yScreenreaderContractSchema}}'), '{{tag}} fixture reports screenreader signal result');
|
|
62
|
+
context.assert(fixture.includes('motionContrastPolicy:') && fixture.includes('{{a11yMotionContrastContractSchema}}'), '{{tag}} fixture reports motion/contrast policy result');
|
|
63
|
+
context.assert(docs.includes('{{tag}}'), '{{tag}} docs contain component tag');
|
|
64
|
+
context.assert(docs.includes('variant'), '{{tag}} docs describe variant attribute');
|
|
65
|
+
context.assert(docs.includes('API- und Feature-Wiring'), '{{tag}} docs describe feature wiring');
|
|
66
|
+
context.assert(docs.includes('{{featureWiringSchema}}'), '{{tag}} docs include feature wiring schema');
|
|
67
|
+
context.assert(docs.includes('{{featureStatePrefix}}'), '{{tag}} docs include canonical state prefix');
|
|
68
|
+
context.assert(docs.includes('A11y-Profil'), '{{tag}} docs include A11y profile section');
|
|
69
|
+
context.assert(docs.includes('{{a11yProfileSchema}}'), '{{tag}} docs include A11y profile schema');
|
|
70
|
+
context.assert(docs.includes('{{a11yTestContractSchema}}'), '{{tag}} docs include A11y test contract');
|
|
71
|
+
context.assert(docs.includes('Screenreader-Signale'), '{{tag}} docs include screenreader signal section');
|
|
72
|
+
context.assert(docs.includes('{{a11yScreenreaderContractSchema}}'), '{{tag}} docs include screenreader signal contract');
|
|
73
|
+
context.assert(docs.includes('Motion-und-Contrast-Policy'), '{{tag}} docs include motion/contrast section');
|
|
74
|
+
context.assert(docs.includes('{{a11yMotionContrastContractSchema}}'), '{{tag}} docs include motion/contrast contract');
|
|
75
|
+
context.assert(docs.includes('node scripts/run_xtend_tests.js a11y-hydration'), '{{tag}} docs include A11y hydration gate');
|
|
76
|
+
context.assert(docs.includes('node scripts/run_xtend_tests.js screenreader-signals'), '{{tag}} docs include Screenreader signal gate');
|
|
77
|
+
context.assert(docs.includes('node scripts/run_xtend_tests.js motion-contrast'), '{{tag}} docs include Motion/Contrast gate');
|
|
78
|
+
context.assert(docs.includes('Performance-Profil'), '{{tag}} docs include Performance profile section');
|
|
79
|
+
context.assert(docs.includes('{{performancePolicySchema}}'), '{{tag}} docs include Performance policy schema');
|
|
80
|
+
context.assert(docs.includes('{{performanceAuthorGuide}}'), '{{tag}} docs link Performance author guide');
|
|
81
|
+
context.assert(docs.includes('node scripts/run_xtend_tests.js performance-regression'), '{{tag}} docs include Performance regression gate');
|
|
82
|
+
context.assert(Array.isArray(manifest) || typeof manifest === 'object', '{{tag}} manifest file is parseable');
|
|
83
|
+
|
|
84
|
+
return context.result({
|
|
85
|
+
component: '{{tag}}',
|
|
86
|
+
profiles: '{{profilesCsv}}'
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
function print{{className}}ComponentReport(result) {
|
|
91
|
+
printSuiteReport(result, {
|
|
92
|
+
successTitle: '{{tag}} Component Contract erfolgreich.',
|
|
93
|
+
failureTitle: '{{tag}} Component Contract fehlgeschlagen:'
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
if (require.main === module) {
|
|
98
|
+
const result = run{{className}}ComponentSuite();
|
|
99
|
+
print{{className}}ComponentReport(result);
|
|
100
|
+
if (!result.ok) {
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
module.exports = {
|
|
106
|
+
print{{className}}ComponentReport,
|
|
107
|
+
run{{className}}ComponentSuite
|
|
108
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export const {{className}}ComponentContract = {{componentContractV2Json}} as const;
|
|
2
|
+
|
|
3
|
+
export const {{className}}ComponentContractValidation = {
|
|
4
|
+
schema: '{{componentContractV2ReportSchema}}',
|
|
5
|
+
ok: {{componentContractV2Valid}},
|
|
6
|
+
sourceStrategy: '{{tsSourceStrategySchema}}',
|
|
7
|
+
localGate: 'node scripts/run_xtend_tests.js builder-typescript-blueprint --json'
|
|
8
|
+
} as const;
|
|
9
|
+
|
|
10
|
+
export default {{className}}ComponentContract;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# {{tag}} Preview Reference Plan
|
|
2
|
+
|
|
3
|
+
- Status: scaffolded preview candidate
|
|
4
|
+
- Schema: `{{previewContractSchema}}`
|
|
5
|
+
- Preview path: `{{previewTargetPath}}`
|
|
6
|
+
- Registry: `{{previewRegistryPath}}`
|
|
7
|
+
- Component: `components/{{tag}}.js`
|
|
8
|
+
- Docs: `docs/components/{{name}}.md`
|
|
9
|
+
- Fixture: `{{previewFixtureDocument}}`
|
|
10
|
+
- Types: `components/{{tag}}.d.ts`
|
|
11
|
+
- Manifest source: `{{manifestSource}}`
|
|
12
|
+
- External network allowed: `{{previewExternalNetworkAllowed}}`
|
|
13
|
+
|
|
14
|
+
## Purpose
|
|
15
|
+
|
|
16
|
+
This preview plan makes the scaffolded component visible to the documentation and demo reference gate before productive file writes are introduced.
|
|
17
|
+
|
|
18
|
+
## Reference Registry Entry
|
|
19
|
+
|
|
20
|
+
| Path | Status | Purpose |
|
|
21
|
+
|------|--------|---------|
|
|
22
|
+
| `{{previewTargetPath}}` | {{previewRegistryStatus}} | {{previewRegistryPurpose}} |
|
|
23
|
+
|
|
24
|
+
## Local Assets
|
|
25
|
+
|
|
26
|
+
| Asset | Path |
|
|
27
|
+
|-------|------|
|
|
28
|
+
| component | `components/{{tag}}.js` |
|
|
29
|
+
| docs | `docs/components/{{name}}.md` |
|
|
30
|
+
| fixture | `{{previewFixtureDocument}}` |
|
|
31
|
+
| types | `components/{{tag}}.d.ts` |
|
|
32
|
+
| manifest | `components/manifest.json` |
|
|
33
|
+
|
|
34
|
+
## Feature Signals
|
|
35
|
+
|
|
36
|
+
| Signal | Contract |
|
|
37
|
+
|--------|----------|
|
|
38
|
+
{{previewSignalRows}}
|
|
39
|
+
|
|
40
|
+
## XTendRMT Attachment
|
|
41
|
+
|
|
42
|
+
- Component adapter: `{{typeRmtAdapter}}`
|
|
43
|
+
- Router adapter: `{{typeRmtRouterAdapter}}`
|
|
44
|
+
- Kernel boundary: {{typeRmtKernelBoundary}}
|
|
45
|
+
|
|
46
|
+
## RMT Compatibility Binding
|
|
47
|
+
|
|
48
|
+
- Schema: `{{rmtCompatibilitySchema}}`
|
|
49
|
+
- Contract refs: `{{rmtCompatibilityContractRefsCsv}}`
|
|
50
|
+
- Dry-run surfaces: `{{rmtCompatibilityDryRunSurfacesCsv}}`
|
|
51
|
+
- Minimum gate: `{{rmtCompatibilityMinimumGate}}`
|
|
52
|
+
- Boundary: {{rmtCompatibilityBoundary}}
|
|
53
|
+
|
|
54
|
+
## Extension Points
|
|
55
|
+
|
|
56
|
+
- Schema: `{{extensionContractSchema}}`
|
|
57
|
+
- Root lifecycle schema: `{{extensionRootLifecycleSchema}}`
|
|
58
|
+
- Template adapter: `{{extensionTemplateAdapter}}`
|
|
59
|
+
- Rendering mode: `{{extensionRenderingMode}}`
|
|
60
|
+
- Schedule hint: `{{extensionScheduleHint}}`
|
|
61
|
+
|
|
62
|
+
## Local Verification
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
node scripts/run_xtend_tests.js rmt-compatibility --json
|
|
66
|
+
node scripts/run_xtend_tests.js references --json
|
|
67
|
+
node scripts/run_xtend_tests.js components a11y-hydration
|
|
68
|
+
npm test
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## Boundary
|
|
72
|
+
|
|
73
|
+
This is a dry-run preview reference plan. It does not write files, does not patch the reference registry, does not start browser automation and does not implement XTendRMT bridge runtime.
|
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
# {{tag}}
|
|
2
|
+
|
|
3
|
+
- Status: scaffolded draft
|
|
4
|
+
- Profile: {{profilesCsv}}
|
|
5
|
+
- Source: `components/{{tag}}.js`
|
|
6
|
+
- Fixture: `tests/components/fixtures/{{tag}}.component.html`
|
|
7
|
+
- Types: `components/{{tag}}.d.ts`
|
|
8
|
+
|
|
9
|
+
## Zweck
|
|
10
|
+
|
|
11
|
+
`{{tag}}` ist eine scaffolded XTend-Komponente nach dem Component-Level-Teststandard.
|
|
12
|
+
|
|
13
|
+
## Attribute
|
|
14
|
+
|
|
15
|
+
| Attribut | Typ | Default | Beschreibung |
|
|
16
|
+
|----------|-----|---------|--------------|
|
|
17
|
+
| `variant` | string | `default` | Steuert die visuelle Variante des Root-Elements. |
|
|
18
|
+
|
|
19
|
+
## Slots
|
|
20
|
+
|
|
21
|
+
| Slot | Beschreibung |
|
|
22
|
+
|------|--------------|
|
|
23
|
+
| default | sichtbarer Inhalt der Komponente |
|
|
24
|
+
|
|
25
|
+
## Events
|
|
26
|
+
|
|
27
|
+
Die Scaffold-Ausgabe bereitet profilbasierte Events vor. Die Basiskomponente emittiert sie erst, wenn die jeweilige Feature-Implementierung ergaenzt wird.
|
|
28
|
+
|
|
29
|
+
| Event | Contract |
|
|
30
|
+
|-------|----------|
|
|
31
|
+
{{featureEventRows}}
|
|
32
|
+
|
|
33
|
+
## State
|
|
34
|
+
|
|
35
|
+
Kanonischer State-Prefix: `{{featureStatePrefix}}`
|
|
36
|
+
|
|
37
|
+
Der Basistemplate schreibt keinen State. Feature-Implementierungen muessen die folgenden Keys als SSOT-Ziele nutzen und duerfen lokale UI-Felder nur als abgeleitete Render-Caches fuehren.
|
|
38
|
+
|
|
39
|
+
| Key | Contract |
|
|
40
|
+
|-----|----------|
|
|
41
|
+
{{featureStateRows}}
|
|
42
|
+
|
|
43
|
+
## API- und Feature-Wiring
|
|
44
|
+
|
|
45
|
+
Schema: `{{featureWiringSchema}}`
|
|
46
|
+
|
|
47
|
+
| Namespace | Contract |
|
|
48
|
+
|-----------|----------|
|
|
49
|
+
{{featureApiRows}}
|
|
50
|
+
|
|
51
|
+
Review-Regeln:
|
|
52
|
+
|
|
53
|
+
{{featureReviewRules}}
|
|
54
|
+
|
|
55
|
+
Verbotene State-Fassaden: `{{featureStateForbiddenCsv}}`
|
|
56
|
+
|
|
57
|
+
Verbotene globale Helper: `{{featureForbiddenGlobalsCsv}}`
|
|
58
|
+
|
|
59
|
+
## Typisierung und RMT-Anschluss
|
|
60
|
+
|
|
61
|
+
Typing-Schema: `{{typeContractSchema}}`
|
|
62
|
+
|
|
63
|
+
Runtime-Grenze: `{{typeRuntimeBoundary}}`
|
|
64
|
+
|
|
65
|
+
| Attribut | Typ | Contract |
|
|
66
|
+
|----------|-----|----------|
|
|
67
|
+
{{typeAttributeRows}}
|
|
68
|
+
|
|
69
|
+
| Property | Typ | Contract |
|
|
70
|
+
|----------|-----|----------|
|
|
71
|
+
{{typePropertyRows}}
|
|
72
|
+
|
|
73
|
+
Review-Regeln fuer Typ-Artefakte:
|
|
74
|
+
|
|
75
|
+
{{typeReviewRules}}
|
|
76
|
+
|
|
77
|
+
Typ-Ausnahmeprozess: `{{typeExceptionPolicy}}`
|
|
78
|
+
|
|
79
|
+
## A11y-Profil
|
|
80
|
+
|
|
81
|
+
Profil-Schema: `{{a11yProfileSchema}}`
|
|
82
|
+
|
|
83
|
+
Komponenten-Contract: `{{a11yComponentContractSchema}}`
|
|
84
|
+
|
|
85
|
+
Test-Contract: `{{a11yTestContractSchema}}`
|
|
86
|
+
|
|
87
|
+
Das Scaffold erzeugt fuer jede neue Komponente ein A11y-Profil. Dieses Profil ist keine optionale Checkliste, sondern ein Bestandteil des Component Contracts und muss in Reviews, Fixtures und Tests sichtbar bleiben.
|
|
88
|
+
|
|
89
|
+
- Primaeres Profil: `{{a11yPrimaryProfile}}`
|
|
90
|
+
- Rolle/Semantik: `{{a11yRole}}`
|
|
91
|
+
- Zugaenglicher Name: `{{a11yAccessibleNameSource}}`, erforderlich: `{{a11yAccessibleNameRequired}}`
|
|
92
|
+
- Default-Name: `{{a11yAccessibleNameDefault}}`
|
|
93
|
+
- Fokusstrategie: `{{a11yFocusMode}}`, Initialfokus: `{{a11yFocusInitial}}`, Trap: `{{a11yFocusTrap}}`, Restore: `{{a11yFocusRestore}}`
|
|
94
|
+
- Screenreader: Live Region `{{a11yScreenreaderLiveRegion}}`, Signale `{{a11yScreenreaderSignalsCsv}}`
|
|
95
|
+
- Screenreader-Contract: `{{a11yScreenreaderContractSchema}}`
|
|
96
|
+
- Reduced Motion: `{{a11yMotionReducedMotion}}`
|
|
97
|
+
- Kontrast/Fokus: `{{a11yContrastFocusVisible}}`, Nicht-Farbstatus: `{{a11yContrastNonColorStatus}}`
|
|
98
|
+
- Motion/Contrast-Contract: `{{a11yMotionContrastContractSchema}}`
|
|
99
|
+
- Pflicht-Gates: `{{a11yTestRefsCsv}}`
|
|
100
|
+
- Fixture-Pflichtattribute: `{{a11yRequiredFixtureAttributesCsv}}`
|
|
101
|
+
|
|
102
|
+
Keyboard Contract:
|
|
103
|
+
|
|
104
|
+
| Taste | Pflicht |
|
|
105
|
+
|-------|---------|
|
|
106
|
+
{{a11yKeyboardRows}}
|
|
107
|
+
|
|
108
|
+
ARIA-State-Liste:
|
|
109
|
+
|
|
110
|
+
| State | Pflicht |
|
|
111
|
+
|-------|---------|
|
|
112
|
+
{{a11yAriaStateRows}}
|
|
113
|
+
|
|
114
|
+
Review-Regeln fuer A11y:
|
|
115
|
+
|
|
116
|
+
{{a11yReviewRules}}
|
|
117
|
+
|
|
118
|
+
## Screenreader-Signale
|
|
119
|
+
|
|
120
|
+
Contract: `{{a11yScreenreaderContractSchema}}`
|
|
121
|
+
|
|
122
|
+
Signal-Record-Contract: `{{a11yScreenreaderSignalRecordSchema}}`
|
|
123
|
+
|
|
124
|
+
| Signal | Live Region | Art |
|
|
125
|
+
|--------|-------------|-----|
|
|
126
|
+
{{a11yScreenreaderSignalRows}}
|
|
127
|
+
|
|
128
|
+
- Statusregionen: `{{a11yScreenreaderStatusRegionsCsv}}`
|
|
129
|
+
- Errorregionen: `{{a11yScreenreaderErrorRegionsCsv}}`
|
|
130
|
+
- Fabric-Lane: `{{a11yScreenreaderFabricLane}}`
|
|
131
|
+
- Fabric-Fiber: `{{a11yScreenreaderFabricFiberKind}}`
|
|
132
|
+
- Schedule: `{{a11yScreenreaderFabricScheduleRef}}`
|
|
133
|
+
|
|
134
|
+
## Motion-und-Contrast-Policy
|
|
135
|
+
|
|
136
|
+
Contract: `{{a11yMotionContrastContractSchema}}`
|
|
137
|
+
|
|
138
|
+
Motion-Contract: `{{a11yMotionContractSchema}}`
|
|
139
|
+
|
|
140
|
+
Contrast-Contract: `{{a11yContrastContractSchema}}`
|
|
141
|
+
|
|
142
|
+
- Reduced-Motion Media Query: `{{a11yMotionMediaQuery}}`
|
|
143
|
+
- Motion Policy: `{{a11yMotionAnimationPolicy}}`
|
|
144
|
+
- Motion CSS-Pflichten: `{{a11yMotionRequiredCssCsv}}`
|
|
145
|
+
- High-Contrast Media Query: `{{a11yContrastMediaQuery}}`
|
|
146
|
+
- Contrast Policy: `{{a11yContrastPolicy}}`
|
|
147
|
+
- Forced Color Adjust: `{{a11yContrastForcedColorAdjust}}`
|
|
148
|
+
- Contrast CSS-Pflichten: `{{a11yContrastRequiredCssCsv}}`
|
|
149
|
+
- Fabric-Lane: `{{a11yMotionContrastFabricLane}}`
|
|
150
|
+
- Fabric-Fiber: `{{a11yMotionContrastFabricFiberKind}}`
|
|
151
|
+
- Schedule: `{{a11yMotionContrastFabricScheduleRef}}`
|
|
152
|
+
|
|
153
|
+
## Performance-Profil
|
|
154
|
+
|
|
155
|
+
Profil-Schema: `{{performanceProfileSchema}}`
|
|
156
|
+
|
|
157
|
+
Performance Policy: `{{performancePolicySchema}}`
|
|
158
|
+
|
|
159
|
+
Budget-Matrix: `{{performanceBudgetMatrixSchema}}` in `{{performanceBudgetMatrixPath}}`
|
|
160
|
+
|
|
161
|
+
Measurement Contract: `{{performanceMeasurementContract}}`
|
|
162
|
+
|
|
163
|
+
Regression Gate: `{{performanceRegressionGate}}`
|
|
164
|
+
|
|
165
|
+
Hydration Policy Contract: `{{performanceHydrationPolicyContract}}`
|
|
166
|
+
|
|
167
|
+
Das Scaffold erzeugt fuer jede neue Komponente ein Performance-Profil. Dieses Profil ist Teil des Component Contracts und nutzt dieselbe Policy wie die offizielle Autorendokumentation unter `{{performanceAuthorGuide}}`.
|
|
168
|
+
|
|
169
|
+
- Primaeres Performance-Profil: `{{performancePrimaryProfile}}`
|
|
170
|
+
- Budgetklasse: `{{performanceBudgetClass}}`
|
|
171
|
+
- Fabric-Lane: `{{performanceLane}}`
|
|
172
|
+
- Hydration Policy: `{{performanceHydrationPolicy}}`
|
|
173
|
+
- Idle/Background erlaubt: `{{performanceIdleOrBackgroundAllowed}}`
|
|
174
|
+
- Eigene A11y-Fiber erwartet: `{{performanceRequiresA11yFiber}}`
|
|
175
|
+
- Pflicht-Gates: `{{performanceRequiredGatesCsv}}`
|
|
176
|
+
|
|
177
|
+
Kritische Messpunkte:
|
|
178
|
+
|
|
179
|
+
| Messpunkt | Pflicht |
|
|
180
|
+
|-----------|---------|
|
|
181
|
+
{{performanceCriticalMeasurementsRows}}
|
|
182
|
+
|
|
183
|
+
## Performance-Regeln
|
|
184
|
+
|
|
185
|
+
{{performanceReviewRules}}
|
|
186
|
+
|
|
187
|
+
Der vorbereitete RMT-Anschluss bleibt adapterbasiert:
|
|
188
|
+
|
|
189
|
+
- Component-Adapter: `{{typeRmtAdapter}}`
|
|
190
|
+
- Component-Contract: `{{typeRmtComponentContractVersion}}`
|
|
191
|
+
- Router-Adapter: `{{typeRmtRouterAdapter}}`
|
|
192
|
+
- RMT-Domains: `{{typeRmtDomainsCsv}}`
|
|
193
|
+
- Manifest Lookup: XTend Host Adapter, nicht RMT Kernel
|
|
194
|
+
- Hydration: Custom Element Lifecycle mit `{{hydrationStateAttribute}}`
|
|
195
|
+
- Kernel-Grenze: {{typeRmtKernelBoundary}}
|
|
196
|
+
|
|
197
|
+
## RMT Template Authoring
|
|
198
|
+
|
|
199
|
+
Template-Authoring nutzt RMT als XTend-Templating-DSL und fuehrt keine zweite XTend-Syntax ein.
|
|
200
|
+
|
|
201
|
+
- Template-Contract: `{{typeRmtTemplateAuthoringContractVersion}}`
|
|
202
|
+
- Template-Adapter: `{{typeRmtTemplateAdapter}}`
|
|
203
|
+
- Template-Ref: `{{typeRmtTemplateRef}}`
|
|
204
|
+
- Component-Ref: `{{typeRmtTemplateComponentRef}}`
|
|
205
|
+
- Erlaubte Modi: `{{typeRmtTemplateAllowedModesUnion}}`
|
|
206
|
+
- Kernel-Grenze: {{typeRmtTemplateKernelBoundary}}
|
|
207
|
+
|
|
208
|
+
Slots, Props, Attributes und Events bleiben RMT Records. Der XTend Host Adapter materialisiert daraus Custom Elements, Slot-Projektion und Event-Command-Bindings.
|
|
209
|
+
|
|
210
|
+
## Extension-Punkte
|
|
211
|
+
|
|
212
|
+
Extension-Schema: `{{extensionContractSchema}}`
|
|
213
|
+
|
|
214
|
+
Status: `{{extensionStatus}}`
|
|
215
|
+
|
|
216
|
+
Root-Lifecycle:
|
|
217
|
+
|
|
218
|
+
| Hook | Phase | Default |
|
|
219
|
+
|------|-------|---------|
|
|
220
|
+
{{extensionHookRows}}
|
|
221
|
+
|
|
222
|
+
Template-Anschluss:
|
|
223
|
+
|
|
224
|
+
- Adapter: `{{extensionTemplateAdapter}}`
|
|
225
|
+
- Template-Ref: `{{extensionTemplateRef}}`
|
|
226
|
+
- Grenze: `{{extensionTemplateBoundary}}`
|
|
227
|
+
|
|
228
|
+
Rendering-Anschluss:
|
|
229
|
+
|
|
230
|
+
- Modus: `{{extensionRenderingMode}}`
|
|
231
|
+
- Ziel: `{{extensionRenderTarget}}`
|
|
232
|
+
- Schedule-Hint: `{{extensionScheduleHint}}`
|
|
233
|
+
|
|
234
|
+
Root-Lifecycle- und Scheduler-Handschlag:
|
|
235
|
+
|
|
236
|
+
- Contract: `{{typeRmtRootHandshakeContractVersion}}`
|
|
237
|
+
- Root-Ref: `{{typeRmtRootRef}}`
|
|
238
|
+
- Phasen: `{{typeRmtRootPhasesUnion}}`
|
|
239
|
+
- Kernel-Grenze: {{typeRmtRootKernelBoundary}}
|
|
240
|
+
|
|
241
|
+
## XTend Host Capabilities
|
|
242
|
+
|
|
243
|
+
Host-Capabilities beschreiben, welche XTend-Faehigkeiten ein RMT-Dokument ueber Adapterdaten nutzen darf. Der RMT Kernel darf daraus keine XTend-Imports oder direkte `window.XTend` Aufrufe ableiten.
|
|
244
|
+
|
|
245
|
+
- Contract: `{{typeRmtHostCapabilitiesContractVersion}}`
|
|
246
|
+
- Erforderlich: `{{typeRmtHostRequiredCapabilitiesCsv}}`
|
|
247
|
+
- Optional: `{{typeRmtHostOptionalCapabilitiesCsv}}`
|
|
248
|
+
- Manifest: `{{typeRmtHostManifestSource}}`
|
|
249
|
+
- State-Bridge: `{{typeRmtHostStateBridge}}`
|
|
250
|
+
- API-Root: `{{typeRmtHostApiNamespaceRoot}}`
|
|
251
|
+
- Kernel-Grenze: {{typeRmtHostKernelBoundary}}
|
|
252
|
+
|
|
253
|
+
## RMT-Kompatibilitaets-Binding
|
|
254
|
+
|
|
255
|
+
Das Binding verbindet Typing, Manifest-Plan, Preview-Plan und Extension-Punkte zu einem reviewbaren RMT-Kompatibilitaetscontract. Es erzeugt keine Bridge-Runtime und fuehrt keine RMT Scheduler Jobs aus.
|
|
256
|
+
|
|
257
|
+
- Schema: `{{rmtCompatibilitySchema}}`
|
|
258
|
+
- Contract-Refs: `{{rmtCompatibilityContractRefsCsv}}`
|
|
259
|
+
- Artefakte: `{{rmtCompatibilityArtifactsCsv}}`
|
|
260
|
+
- Dry-Run-Oberflaechen: `{{rmtCompatibilityDryRunSurfacesCsv}}`
|
|
261
|
+
- Mindestgate: `{{rmtCompatibilityMinimumGate}}`
|
|
262
|
+
- Vollgate: `{{rmtCompatibilityFullGate}}`
|
|
263
|
+
- Grenze: {{rmtCompatibilityBoundary}}
|
|
264
|
+
|
|
265
|
+
Review-Regeln fuer Extension-Punkte:
|
|
266
|
+
|
|
267
|
+
{{extensionReviewRules}}
|
|
268
|
+
|
|
269
|
+
## Accessibility und Hydration
|
|
270
|
+
|
|
271
|
+
- Die Komponente rendert repo-lokal ohne CDN-Abhaengigkeit.
|
|
272
|
+
- `xtendScaffoldA11yProfile` macht `{{a11yProfileSchema}}` im Component Source statisch pruefbar.
|
|
273
|
+
- Die Fixture setzt `{{a11yAccessibleNameSource}}` und meldet Rolle, zugaenglichen Namen und A11y-Profil im Hydration-Ergebnis.
|
|
274
|
+
- Die Fixture meldet den Screenreader-Signal-Contract `{{a11yScreenreaderContractSchema}}` und dessen Status-/Errorregionen.
|
|
275
|
+
- Die Komponente deklariert `{{a11yMotionContrastContractSchema}}` fuer `prefers-reduced-motion`, `forced-colors`, Fokus und Nicht-Farbstatus.
|
|
276
|
+
- `connectedCallback`, `attributeChangedCallback` und `disconnectedCallback` bilden den Hydration-Mindestcontract.
|
|
277
|
+
- `hydrate()` ist der explizite Rehydration-Pfad und markiert Instanzen mit `{{hydrationStateAttribute}}`.
|
|
278
|
+
- Die Fixture legt ein Ergebnisobjekt fuer Hydration-Smokes offen und dokumentiert den lokalen Scriptpfad `{{fixtureScriptPath}}`.
|
|
279
|
+
|
|
280
|
+
## Manifest-Wiring
|
|
281
|
+
|
|
282
|
+
- Patch-Plan: `{{manifestPatchSchema}}`
|
|
283
|
+
- Quelle: `{{manifestSource}}`
|
|
284
|
+
- Importmodus: `{{manifestImportMode}}`
|
|
285
|
+
- Hydration: `{{manifestHydrationMode}}`
|
|
286
|
+
- CDN erlaubt: `{{manifestCdnAllowed}}`
|
|
287
|
+
- Feature-Wiring: `{{featureWiringSchema}}`
|
|
288
|
+
|
|
289
|
+
## Lokale Verifikation
|
|
290
|
+
|
|
291
|
+
```bash
|
|
292
|
+
node scripts/run_xtend_tests.js components
|
|
293
|
+
node scripts/run_xtend_tests.js a11y-hydration
|
|
294
|
+
node scripts/run_xtend_tests.js screenreader-signals
|
|
295
|
+
node scripts/run_xtend_tests.js motion-contrast
|
|
296
|
+
node scripts/run_xtend_tests.js fabric-performance-measurements
|
|
297
|
+
node scripts/run_xtend_tests.js performance-regression
|
|
298
|
+
node scripts/run_xtend_tests.js hydration-policy
|
|
299
|
+
node scripts/run_xtend_tests.js references
|
|
300
|
+
node scripts/run_xtend_tests.js rmt-compatibility
|
|
301
|
+
```
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export const {{className}}FixtureData = {
|
|
2
|
+
schema: 'xtend.scaffold.typescript-component-fixture.v1',
|
|
3
|
+
tag: '{{tag}}',
|
|
4
|
+
className: '{{className}}',
|
|
5
|
+
attributes: {
|
|
6
|
+
'aria-label': '{{className}} component',
|
|
7
|
+
variant: 'default'
|
|
8
|
+
},
|
|
9
|
+
slots: {
|
|
10
|
+
default: '{{className}} fixture content'
|
|
11
|
+
},
|
|
12
|
+
rmt: {{rmtComponentMetadataJson}},
|
|
13
|
+
expectedTelemetry: {
|
|
14
|
+
schema: '{{componentLifecycleTelemetrySchema}}',
|
|
15
|
+
operations: [{{componentTelemetryOperationsJson}}],
|
|
16
|
+
lane: '{{performanceLane}}'
|
|
17
|
+
},
|
|
18
|
+
expectedA11y: {
|
|
19
|
+
role: '{{a11yRole}}',
|
|
20
|
+
accessibleName: '{{a11yAccessibleNameDefault}}'
|
|
21
|
+
},
|
|
22
|
+
expectedPerformance: {
|
|
23
|
+
budgetClass: '{{performanceBudgetClass}}',
|
|
24
|
+
hydrationPolicy: '{{performanceHydrationPolicy}}'
|
|
25
|
+
}
|
|
26
|
+
} as const;
|
|
27
|
+
|
|
28
|
+
export default {{className}}FixtureData;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8">
|
|
5
|
+
<title>{{tag}} component fixture</title>
|
|
6
|
+
<script src="{{fixtureScriptPath}}"></script>
|
|
7
|
+
</head>
|
|
8
|
+
<body>
|
|
9
|
+
<{{tag}} id="{{name}}-fixture" variant="default" aria-label="{{a11yAccessibleNameDefault}}">Fixture content for {{tag}}</{{tag}}>
|
|
10
|
+
<script>
|
|
11
|
+
customElements.whenDefined('{{tag}}').then(function () {
|
|
12
|
+
var element = document.getElementById('{{name}}-fixture');
|
|
13
|
+
var root = element && element.shadowRoot ? element.shadowRoot.querySelector('[part="root"]') : null;
|
|
14
|
+
window.{{fixtureResultName}} = {
|
|
15
|
+
defined: customElements.get('{{tag}}') !== undefined,
|
|
16
|
+
hasElement: Boolean(element),
|
|
17
|
+
hasShadowRoot: Boolean(element && element.shadowRoot),
|
|
18
|
+
hydrated: Boolean(element && element.hasAttribute('{{hydrationStateAttribute}}')),
|
|
19
|
+
a11yProfile: customElements.get('{{tag}}').xtendScaffoldA11yProfile.schema,
|
|
20
|
+
screenreaderSignals: customElements.get('{{tag}}').xtendScaffoldA11yProfile.screenreader.signalContract.schema,
|
|
21
|
+
screenreaderSignalCount: customElements.get('{{tag}}').xtendScaffoldA11yProfile.screenreader.signalContract.signals.length,
|
|
22
|
+
screenreaderStatusRegions: customElements.get('{{tag}}').xtendScaffoldA11yProfile.screenreader.signalContract.statusRegions.length,
|
|
23
|
+
screenreaderErrorRegions: customElements.get('{{tag}}').xtendScaffoldA11yProfile.screenreader.signalContract.errorRegions.length,
|
|
24
|
+
motionContrastPolicy: customElements.get('{{tag}}').xtendScaffoldA11yProfile.motionContrast.policy.schema,
|
|
25
|
+
motionMediaQuery: customElements.get('{{tag}}').xtendScaffoldA11yProfile.motionContrast.policy.motion.mediaQuery,
|
|
26
|
+
contrastMediaQuery: customElements.get('{{tag}}').xtendScaffoldA11yProfile.motionContrast.policy.contrast.mediaQuery,
|
|
27
|
+
role: root ? root.getAttribute('role') : null,
|
|
28
|
+
accessibleName: root ? root.getAttribute('aria-label') : null,
|
|
29
|
+
localImport: true,
|
|
30
|
+
cdnFree: true,
|
|
31
|
+
scriptPath: '{{fixtureScriptPath}}',
|
|
32
|
+
text: element ? element.textContent.trim() : ''
|
|
33
|
+
};
|
|
34
|
+
});
|
|
35
|
+
</script>
|
|
36
|
+
</body>
|
|
37
|
+
</html>
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "{{manifestPatchSchema}}",
|
|
3
|
+
"operation": "{{manifestOperation}}",
|
|
4
|
+
"tag": "{{tag}}",
|
|
5
|
+
"source": "{{manifestSource}}",
|
|
6
|
+
"profiles": [{{profilesJson}}],
|
|
7
|
+
"importMode": "{{manifestImportMode}}",
|
|
8
|
+
"loaderMode": "{{manifestLoaderMode}}",
|
|
9
|
+
"hydrationMode": "{{manifestHydrationMode}}",
|
|
10
|
+
"localImportOnly": {{manifestLocalImportOnly}},
|
|
11
|
+
"cdnAllowed": {{manifestCdnAllowed}},
|
|
12
|
+
"featureWiring": {{featureManifestJson}},
|
|
13
|
+
"a11yProfile": {{a11yManifestJson}},
|
|
14
|
+
"screenreaderSignals": {{a11yScreenreaderManifestJson}},
|
|
15
|
+
"motionContrastPolicy": {{a11yMotionContrastManifestJson}},
|
|
16
|
+
"performanceProfile": {{performanceManifestJson}},
|
|
17
|
+
"typing": {{typeManifestJson}},
|
|
18
|
+
"preview": {{previewManifestJson}},
|
|
19
|
+
"rmtCompatibility": {{rmtCompatibilityManifestJson}},
|
|
20
|
+
"{{extensionManifestKey}}": {{extensionManifestJson}},
|
|
21
|
+
"requiresReview": true
|
|
22
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export const {{className}}PerformanceProfile = {{performanceProfileJson}} as const;
|
|
2
|
+
|
|
3
|
+
export const {{className}}PerformanceScaffoldContract = {
|
|
4
|
+
componentProfile: '{{performanceProfileSchema}}',
|
|
5
|
+
policy: '{{performancePolicySchema}}',
|
|
6
|
+
budgetMatrix: '{{performanceBudgetMatrixSchema}}',
|
|
7
|
+
measurement: '{{performanceMeasurementContract}}',
|
|
8
|
+
regressionGate: '{{performanceRegressionGate}}',
|
|
9
|
+
hydrationPolicy: '{{performanceHydrationPolicyContract}}',
|
|
10
|
+
lane: '{{performanceLane}}'
|
|
11
|
+
} as const;
|
|
12
|
+
|
|
13
|
+
export default {{className}}PerformanceProfile;
|