@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,472 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const { pathToFileURL } = require('url');
|
|
4
|
+
const {
|
|
5
|
+
buildSemanticGraph
|
|
6
|
+
} = require('../rmt-language/semantic-graph');
|
|
7
|
+
const {
|
|
8
|
+
lintRmtSource
|
|
9
|
+
} = require('../rmt-language/diagnostics');
|
|
10
|
+
const {
|
|
11
|
+
getRmtCodeActions
|
|
12
|
+
} = require('../rmt-language/code-actions');
|
|
13
|
+
const {
|
|
14
|
+
analyzeRmtVNextToolingSource,
|
|
15
|
+
isLikelyRmtVNextSource,
|
|
16
|
+
lintRmtVNextToolingSource
|
|
17
|
+
} = require('../rmt-language/vnext-tooling');
|
|
18
|
+
|
|
19
|
+
const RMT_AGENT_REPAIR_REPORT_SCHEMA = 'xtend.rmt.ai-agent-repair-report.v1';
|
|
20
|
+
const RMT_AGENT_REPAIR_FILE_SCHEMA = 'xtend.rmt.ai-agent-repair-file.v1';
|
|
21
|
+
const RMT_AGENT_REPAIR_STEP_SCHEMA = 'xtend.rmt.ai-agent-repair-step.v1';
|
|
22
|
+
const RMT_AGENT_NOOP_SCHEMA = 'xtend.rmt.ai-agent-noop.v1';
|
|
23
|
+
const RMT_AGENT_REPAIR_REPORT_WORKPACKAGE = 'WP-E14-11';
|
|
24
|
+
const RMT_AGENT_REPAIR_REPORT_MODULE_PATH = 'tools/rmt-linter/reporter.js';
|
|
25
|
+
const RMT_AGENT_REPAIR_REPORT_SUITE_PATH = 'tests/rmt-language/rmt_agent_repair_report_suite.js';
|
|
26
|
+
const RMT_AGENT_REPAIR_REPORT_PACKAGE_SCRIPT = 'npm run test:rmt-agent-report';
|
|
27
|
+
const DEFAULT_TOOL_ROOT_DIR = path.resolve(__dirname, '..', '..');
|
|
28
|
+
|
|
29
|
+
const SEVERITY_RANK = Object.freeze({
|
|
30
|
+
error: 0,
|
|
31
|
+
warning: 1,
|
|
32
|
+
info: 2,
|
|
33
|
+
hint: 3
|
|
34
|
+
});
|
|
35
|
+
|
|
36
|
+
const REPAIR_PRIORITY = Object.freeze({
|
|
37
|
+
'rename-file-extension': 10,
|
|
38
|
+
'create-schedule': 20,
|
|
39
|
+
'create-template-stub': 30,
|
|
40
|
+
'create-component-stub': 40,
|
|
41
|
+
'replace-field-value': 50,
|
|
42
|
+
'add-route-title': 60,
|
|
43
|
+
'append-property': 70
|
|
44
|
+
});
|
|
45
|
+
|
|
46
|
+
function normalizeString(value) {
|
|
47
|
+
return typeof value === 'string' ? value.trim() : '';
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
function toArray(value) {
|
|
51
|
+
return Array.isArray(value) ? value : [];
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
function normalizeSeverity(value) {
|
|
55
|
+
return Object.prototype.hasOwnProperty.call(SEVERITY_RANK, value) ? value : 'info';
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
function severityRank(value) {
|
|
59
|
+
return SEVERITY_RANK[normalizeSeverity(value)];
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
function shouldFail(summary, failOn = 'error') {
|
|
63
|
+
const threshold = severityRank(failOn);
|
|
64
|
+
|
|
65
|
+
return Object.entries(SEVERITY_RANK).some(([severity, rank]) => {
|
|
66
|
+
if (rank > threshold) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return (summary[`${severity}Count`] || 0) > 0;
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
function createUri(input = {}) {
|
|
75
|
+
if (input.uri) {
|
|
76
|
+
return input.uri;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
if (input.filePath) {
|
|
80
|
+
return pathToFileURL(path.resolve(input.filePath)).href;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
return 'untitled:rmt-agent-report';
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
function createLanguageToolingOptions(options = {}) {
|
|
87
|
+
return {
|
|
88
|
+
...options,
|
|
89
|
+
workspaceRoot: options.rootDir || options.workspaceRoot || null,
|
|
90
|
+
rootDir: path.resolve(options.toolRootDir || options.formatRootDir || DEFAULT_TOOL_ROOT_DIR)
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
function normalizeDiagnostic(diagnostic = {}) {
|
|
95
|
+
return {
|
|
96
|
+
schema: diagnostic.schema || 'xtend.rmt.linter.diagnostic.v1',
|
|
97
|
+
source: diagnostic.source || 'rmt-linter',
|
|
98
|
+
code: diagnostic.code || 'rmt.diagnostic',
|
|
99
|
+
ruleId: diagnostic.ruleId || null,
|
|
100
|
+
severity: normalizeSeverity(diagnostic.severity),
|
|
101
|
+
category: diagnostic.category || null,
|
|
102
|
+
message: diagnostic.message || diagnostic.code || 'RMT diagnostic',
|
|
103
|
+
uri: diagnostic.uri || null,
|
|
104
|
+
file: diagnostic.file || null,
|
|
105
|
+
pointer: diagnostic.pointer || null,
|
|
106
|
+
range: diagnostic.range || null,
|
|
107
|
+
repair: diagnostic.repair || null,
|
|
108
|
+
relatedInformation: toArray(diagnostic.relatedInformation)
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
function summarizeDiagnostics(diagnostics) {
|
|
113
|
+
return diagnostics.reduce((summary, diagnostic) => {
|
|
114
|
+
const severity = normalizeSeverity(diagnostic.severity);
|
|
115
|
+
const key = `${severity}Count`;
|
|
116
|
+
|
|
117
|
+
summary.totalCount += 1;
|
|
118
|
+
summary[key] += 1;
|
|
119
|
+
|
|
120
|
+
return summary;
|
|
121
|
+
}, {
|
|
122
|
+
totalCount: 0,
|
|
123
|
+
errorCount: 0,
|
|
124
|
+
warningCount: 0,
|
|
125
|
+
infoCount: 0,
|
|
126
|
+
hintCount: 0
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
function inferImpact(diagnostic = {}) {
|
|
131
|
+
if (diagnostic.code === 'rmt.template.inline-script.refused'
|
|
132
|
+
|| diagnostic.code === 'rmt.xtend.kernel-boundary.violation') {
|
|
133
|
+
return 'critical';
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (diagnostic.severity === 'error') {
|
|
137
|
+
return 'high';
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (diagnostic.severity === 'warning') {
|
|
141
|
+
return 'medium';
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return 'low';
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
function inferNoopReason(diagnostic = {}, actions = []) {
|
|
148
|
+
if (actions.some((action) => action.diagnosticCode === diagnostic.code)) {
|
|
149
|
+
return 'covered-by-related-repair';
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
if (diagnostic.code === 'rmt.syntax.invalid-json') {
|
|
153
|
+
return 'source-not-parseable';
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
if (diagnostic.code === 'rmt.template.inline-script.refused'
|
|
157
|
+
|| diagnostic.code === 'rmt.xtend.kernel-boundary.violation') {
|
|
158
|
+
return 'unsafe-automatic-edit';
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
if (diagnostic.code && diagnostic.code.startsWith('rmt.ref.component')) {
|
|
162
|
+
return 'component-stub-needs-authoring-context';
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
return 'no-safe-mvp-fix';
|
|
166
|
+
}
|
|
167
|
+
|
|
168
|
+
function explainNoop(diagnostic = {}, actions = []) {
|
|
169
|
+
const reason = inferNoopReason(diagnostic, actions);
|
|
170
|
+
|
|
171
|
+
if (reason === 'covered-by-related-repair') {
|
|
172
|
+
return 'Eine verwandte Diagnose desselben Typs erzeugt bereits einen deduplizierten Fix. Diesen Fix zuerst anwenden und danach erneut linten.';
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
if (reason === 'source-not-parseable') {
|
|
176
|
+
return 'Die Quelle ist syntaktisch nicht parsebar. Erst JSON/RMT-Syntax korrigieren, dann semantische Fixes erneut anfordern.';
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
if (reason === 'unsafe-automatic-edit') {
|
|
180
|
+
return 'Die Diagnose betrifft Security- oder Kernel-Boundary-Verhalten. Automatisches Entfernen waere zu riskant und benoetigt Review.';
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
if (reason === 'component-stub-needs-authoring-context') {
|
|
184
|
+
return 'Ein Component-Stub benoetigt bewusstes UI-/Adapter-Authoring. Der MVP erzeugt dafuer keinen automatischen Stub.';
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
return 'Fuer diese Diagnose gibt es im sicheren MVP noch keinen deterministischen Quick Fix.';
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
function repairKindForAction(action = {}) {
|
|
191
|
+
if (action.edit && action.edit.metadata && action.edit.metadata.repairKind) {
|
|
192
|
+
return action.edit.metadata.repairKind;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
if (action.command && action.command.command === 'xtend.rmt.renameFileExtension') {
|
|
196
|
+
return 'rename-file-extension';
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
return action.diagnosticCode || 'manual-review';
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
function repairPriority(action = {}) {
|
|
203
|
+
const repairKind = repairKindForAction(action);
|
|
204
|
+
|
|
205
|
+
return REPAIR_PRIORITY[repairKind] || 100;
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
function relatedDiagnosticsFor(diagnostic, diagnostics) {
|
|
209
|
+
const pointer = diagnostic.pointer || null;
|
|
210
|
+
|
|
211
|
+
if (!pointer) {
|
|
212
|
+
return [];
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
return diagnostics
|
|
216
|
+
.filter((entry) => entry !== diagnostic && entry.pointer === pointer)
|
|
217
|
+
.map((entry) => ({
|
|
218
|
+
code: entry.code,
|
|
219
|
+
severity: entry.severity,
|
|
220
|
+
message: entry.message,
|
|
221
|
+
pointer: entry.pointer,
|
|
222
|
+
impact: inferImpact(entry)
|
|
223
|
+
}));
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
function actionMatchesDiagnostic(action, diagnostic) {
|
|
227
|
+
return toArray(action.diagnostics).some((entry) => {
|
|
228
|
+
return entry.code === diagnostic.code && (entry.pointer || null) === (diagnostic.pointer || null);
|
|
229
|
+
});
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
function normalizeActionForAgent(action, diagnostic, diagnostics, order) {
|
|
233
|
+
const repairKind = repairKindForAction(action);
|
|
234
|
+
|
|
235
|
+
return {
|
|
236
|
+
schema: RMT_AGENT_REPAIR_STEP_SCHEMA,
|
|
237
|
+
order,
|
|
238
|
+
title: action.title,
|
|
239
|
+
diagnosticCode: action.diagnosticCode,
|
|
240
|
+
pointer: action.pointer || (diagnostic && diagnostic.pointer) || null,
|
|
241
|
+
severity: diagnostic ? diagnostic.severity : 'info',
|
|
242
|
+
impact: diagnostic ? inferImpact(diagnostic) : 'low',
|
|
243
|
+
confidence: action.confidence || 'high',
|
|
244
|
+
safe: action.safe !== false,
|
|
245
|
+
repairKind,
|
|
246
|
+
applyMode: action.edit ? 'workspace-edit' : action.command ? 'command' : 'manual',
|
|
247
|
+
action,
|
|
248
|
+
edit: action.edit || null,
|
|
249
|
+
command: action.command || null,
|
|
250
|
+
relatedDiagnostics: diagnostic ? relatedDiagnosticsFor(diagnostic, diagnostics) : []
|
|
251
|
+
};
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
function createNoop(diagnostic, diagnostics, actions = []) {
|
|
255
|
+
return {
|
|
256
|
+
schema: RMT_AGENT_NOOP_SCHEMA,
|
|
257
|
+
diagnosticCode: diagnostic.code,
|
|
258
|
+
pointer: diagnostic.pointer || null,
|
|
259
|
+
severity: diagnostic.severity,
|
|
260
|
+
impact: inferImpact(diagnostic),
|
|
261
|
+
confidence: 'none',
|
|
262
|
+
repairable: false,
|
|
263
|
+
reason: inferNoopReason(diagnostic, actions),
|
|
264
|
+
explanation: explainNoop(diagnostic, actions),
|
|
265
|
+
relatedDiagnostics: relatedDiagnosticsFor(diagnostic, diagnostics)
|
|
266
|
+
};
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
function sortRepairSteps(steps) {
|
|
270
|
+
return steps.sort((a, b) => {
|
|
271
|
+
const severityDiff = severityRank(a.severity) - severityRank(b.severity);
|
|
272
|
+
|
|
273
|
+
if (severityDiff !== 0) {
|
|
274
|
+
return severityDiff;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
const priorityDiff = repairPriority(a.action) - repairPriority(b.action);
|
|
278
|
+
|
|
279
|
+
if (priorityDiff !== 0) {
|
|
280
|
+
return priorityDiff;
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
const pointerDiff = String(a.pointer || '').localeCompare(String(b.pointer || ''));
|
|
284
|
+
|
|
285
|
+
if (pointerDiff !== 0) {
|
|
286
|
+
return pointerDiff;
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
return String(a.title || '').localeCompare(String(b.title || ''));
|
|
290
|
+
}).map((step, index) => ({
|
|
291
|
+
...step,
|
|
292
|
+
order: index + 1
|
|
293
|
+
}));
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
function createFileAgentReport(input = {}, options = {}) {
|
|
297
|
+
const sourceInput = {
|
|
298
|
+
text: String(input.text || ''),
|
|
299
|
+
uri: input.uri,
|
|
300
|
+
filePath: input.filePath || null,
|
|
301
|
+
version: input.version || 0,
|
|
302
|
+
languageId: input.languageId || 'rmt'
|
|
303
|
+
};
|
|
304
|
+
const uri = createUri(sourceInput);
|
|
305
|
+
const languageOptions = createLanguageToolingOptions(options);
|
|
306
|
+
const vnext = isLikelyRmtVNextSource(sourceInput, languageOptions);
|
|
307
|
+
const graph = options.graph || (vnext
|
|
308
|
+
? analyzeRmtVNextToolingSource(sourceInput, languageOptions)
|
|
309
|
+
: buildSemanticGraph(sourceInput, languageOptions));
|
|
310
|
+
const lintReport = options.lintReport || (vnext
|
|
311
|
+
? lintRmtVNextToolingSource(sourceInput, {
|
|
312
|
+
...languageOptions,
|
|
313
|
+
analysis: graph
|
|
314
|
+
})
|
|
315
|
+
: lintRmtSource(sourceInput, {
|
|
316
|
+
...languageOptions,
|
|
317
|
+
graph
|
|
318
|
+
}));
|
|
319
|
+
const codeActionReport = options.codeActionReport || (vnext
|
|
320
|
+
? {
|
|
321
|
+
actions: []
|
|
322
|
+
}
|
|
323
|
+
: getCodeActionReport(sourceInput, graph, lintReport, languageOptions));
|
|
324
|
+
const diagnostics = toArray(lintReport.diagnostics).map(normalizeDiagnostic);
|
|
325
|
+
const actions = toArray(codeActionReport.actions);
|
|
326
|
+
const matchedDiagnostics = new Set();
|
|
327
|
+
const repairSteps = [];
|
|
328
|
+
|
|
329
|
+
actions.forEach((action) => {
|
|
330
|
+
const diagnostic = diagnostics.find((entry) => actionMatchesDiagnostic(action, entry))
|
|
331
|
+
|| diagnostics.find((entry) => entry.code === action.diagnosticCode);
|
|
332
|
+
|
|
333
|
+
if (diagnostic) {
|
|
334
|
+
matchedDiagnostics.add(diagnostic);
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
repairSteps.push(normalizeActionForAgent(action, diagnostic, diagnostics, repairSteps.length + 1));
|
|
338
|
+
});
|
|
339
|
+
|
|
340
|
+
const sortedRepairSteps = sortRepairSteps(repairSteps);
|
|
341
|
+
const noOps = diagnostics
|
|
342
|
+
.filter((diagnostic) => !matchedDiagnostics.has(diagnostic))
|
|
343
|
+
.map((diagnostic) => createNoop(diagnostic, diagnostics, actions))
|
|
344
|
+
.sort((a, b) => {
|
|
345
|
+
const severityDiff = severityRank(a.severity) - severityRank(b.severity);
|
|
346
|
+
|
|
347
|
+
if (severityDiff !== 0) {
|
|
348
|
+
return severityDiff;
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
const pointerDiff = String(a.pointer || '').localeCompare(String(b.pointer || ''));
|
|
352
|
+
|
|
353
|
+
if (pointerDiff !== 0) {
|
|
354
|
+
return pointerDiff;
|
|
355
|
+
}
|
|
356
|
+
|
|
357
|
+
return String(a.diagnosticCode || '').localeCompare(String(b.diagnosticCode || ''));
|
|
358
|
+
});
|
|
359
|
+
const summary = summarizeDiagnostics(diagnostics);
|
|
360
|
+
|
|
361
|
+
return {
|
|
362
|
+
schema: RMT_AGENT_REPAIR_FILE_SCHEMA,
|
|
363
|
+
uri,
|
|
364
|
+
file: sourceInput.filePath,
|
|
365
|
+
status: lintReport.status,
|
|
366
|
+
ok: lintReport.ok,
|
|
367
|
+
languageMode: vnext ? 'vnext' : 'legacy',
|
|
368
|
+
graphStatus: graph.status,
|
|
369
|
+
sourceMapSummary: graph.sourceMapSummary || null,
|
|
370
|
+
diagnostics,
|
|
371
|
+
repairPlan: sortedRepairSteps,
|
|
372
|
+
noOps,
|
|
373
|
+
actionableCount: sortedRepairSteps.length,
|
|
374
|
+
noOpCount: noOps.length,
|
|
375
|
+
...summary
|
|
376
|
+
};
|
|
377
|
+
}
|
|
378
|
+
|
|
379
|
+
function getCodeActionReport(sourceInput, graph, lintReport, options = {}) {
|
|
380
|
+
const {
|
|
381
|
+
getRmtCodeActions
|
|
382
|
+
} = require('../rmt-language/code-actions');
|
|
383
|
+
|
|
384
|
+
return getRmtCodeActions(sourceInput, {
|
|
385
|
+
...options,
|
|
386
|
+
graph,
|
|
387
|
+
lintReport
|
|
388
|
+
});
|
|
389
|
+
}
|
|
390
|
+
|
|
391
|
+
function createFileInputFromPath(filePath) {
|
|
392
|
+
const absolutePath = path.resolve(filePath);
|
|
393
|
+
|
|
394
|
+
return {
|
|
395
|
+
text: fs.readFileSync(absolutePath, 'utf8'),
|
|
396
|
+
filePath: absolutePath
|
|
397
|
+
};
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
function createRmtAgentRepairReport(inputs = [], options = {}) {
|
|
401
|
+
const sourceInputs = (Array.isArray(inputs) ? inputs : [inputs]).map((input) => {
|
|
402
|
+
if (typeof input === 'string') {
|
|
403
|
+
return createFileInputFromPath(input);
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
return input;
|
|
407
|
+
});
|
|
408
|
+
const fileReports = sourceInputs.map((input) => createFileAgentReport(input, options));
|
|
409
|
+
const diagnostics = fileReports.flatMap((fileReport) => fileReport.diagnostics);
|
|
410
|
+
const repairPlan = fileReports.flatMap((fileReport) => fileReport.repairPlan.map((step) => ({
|
|
411
|
+
...step,
|
|
412
|
+
uri: fileReport.uri,
|
|
413
|
+
file: fileReport.file
|
|
414
|
+
})));
|
|
415
|
+
const sortedRepairPlan = sortRepairSteps(repairPlan);
|
|
416
|
+
const noOps = fileReports.flatMap((fileReport) => fileReport.noOps.map((noop) => ({
|
|
417
|
+
...noop,
|
|
418
|
+
uri: fileReport.uri,
|
|
419
|
+
file: fileReport.file
|
|
420
|
+
})));
|
|
421
|
+
const summary = summarizeDiagnostics(diagnostics);
|
|
422
|
+
const failOn = normalizeSeverity(options.failOn || 'error');
|
|
423
|
+
const status = shouldFail(summary, failOn) ? 'failed' : 'passed';
|
|
424
|
+
|
|
425
|
+
return {
|
|
426
|
+
schema: RMT_AGENT_REPAIR_REPORT_SCHEMA,
|
|
427
|
+
sourceReportSchema: 'xtend.rmt.linter.report.v1',
|
|
428
|
+
codeActionProviderSchema: 'xtend.rmt.code-action-provider.v1',
|
|
429
|
+
workpackage: RMT_AGENT_REPAIR_REPORT_WORKPACKAGE,
|
|
430
|
+
status,
|
|
431
|
+
ok: status === 'passed',
|
|
432
|
+
failOn,
|
|
433
|
+
files: fileReports.length,
|
|
434
|
+
fileReports,
|
|
435
|
+
diagnostics,
|
|
436
|
+
repairPlan: sortedRepairPlan,
|
|
437
|
+
fixOrder: sortedRepairPlan.map((step) => ({
|
|
438
|
+
order: step.order,
|
|
439
|
+
title: step.title,
|
|
440
|
+
diagnosticCode: step.diagnosticCode,
|
|
441
|
+
pointer: step.pointer,
|
|
442
|
+
uri: step.uri,
|
|
443
|
+
applyMode: step.applyMode,
|
|
444
|
+
safe: step.safe,
|
|
445
|
+
confidence: step.confidence,
|
|
446
|
+
impact: step.impact
|
|
447
|
+
})),
|
|
448
|
+
noOps,
|
|
449
|
+
actionableCount: sortedRepairPlan.length,
|
|
450
|
+
noOpCount: noOps.length,
|
|
451
|
+
...summary
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
|
|
455
|
+
function createRmtAgentRepairReportForFiles(files = [], options = {}) {
|
|
456
|
+
return createRmtAgentRepairReport(files, options);
|
|
457
|
+
}
|
|
458
|
+
|
|
459
|
+
module.exports = {
|
|
460
|
+
RMT_AGENT_NOOP_SCHEMA,
|
|
461
|
+
RMT_AGENT_REPAIR_FILE_SCHEMA,
|
|
462
|
+
RMT_AGENT_REPAIR_REPORT_MODULE_PATH,
|
|
463
|
+
RMT_AGENT_REPAIR_REPORT_PACKAGE_SCRIPT,
|
|
464
|
+
RMT_AGENT_REPAIR_REPORT_SCHEMA,
|
|
465
|
+
RMT_AGENT_REPAIR_REPORT_SUITE_PATH,
|
|
466
|
+
RMT_AGENT_REPAIR_REPORT_WORKPACKAGE,
|
|
467
|
+
RMT_AGENT_REPAIR_STEP_SCHEMA,
|
|
468
|
+
createRmtAgentRepairReport,
|
|
469
|
+
createRmtAgentRepairReportForFiles,
|
|
470
|
+
createFileAgentReport,
|
|
471
|
+
inferImpact
|
|
472
|
+
};
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# XTend-Scaffold
|
|
2
|
+
|
|
3
|
+
`XTend-Scaffold` ist das repo-lokale Build-Environment fuer kuenftige XTend-Generatoren. Epic 03 hat es als generator-only, dry-run-first Scaffold abgeschlossen; Epic 17 baut daraus einen dry-run-first, aber produktiv schreibfaehigen Buildpfad.
|
|
4
|
+
|
|
5
|
+
## Local Entry Points
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
xt --help
|
|
9
|
+
xt validate --json
|
|
10
|
+
xt component-files --tag x-example --profile display --json
|
|
11
|
+
xtend validate --json
|
|
12
|
+
xtend-scaffold verify --json
|
|
13
|
+
node xtend-builder/scaffold.js --help
|
|
14
|
+
node xtend-builder/scaffold.js layout
|
|
15
|
+
node xtend-builder/scaffold.js layout --json
|
|
16
|
+
node xtend-builder/scaffold.js blueprint --json
|
|
17
|
+
node xtend-builder/scaffold.js generators --json
|
|
18
|
+
node xtend-builder/scaffold.js templates --json
|
|
19
|
+
node xtend-builder/scaffold.js component-plan --tag x-example --profile display --json
|
|
20
|
+
node xtend-builder/scaffold.js component-files --tag x-example --profile display --json
|
|
21
|
+
node xtend-builder/scaffold.js component-files --tag x-example --profile display --write --json
|
|
22
|
+
node xtend-builder/scaffold.js component-files --tag x-example --profile display --check --json
|
|
23
|
+
node xtend-builder/scaffold.js typing --tag x-example --profile display --json
|
|
24
|
+
node xtend-builder/scaffold.js preview --tag x-example --profile display --json
|
|
25
|
+
node xtend-builder/scaffold.js extensions --tag x-example --profile display --json
|
|
26
|
+
node xtend-builder/scaffold.js rmt-build --source xtendrmt/rmt-lifecycle-demo.rmt --write --json
|
|
27
|
+
node xtend-builder/scaffold.js workflow --json
|
|
28
|
+
node xtend-builder/scaffold.js verify --json
|
|
29
|
+
node scripts/run_xtend_tests.js rmt-compatibility --json
|
|
30
|
+
npm run scaffold -- layout
|
|
31
|
+
npm run scaffold:workflow
|
|
32
|
+
npm run scaffold:verify
|
|
33
|
+
npm run scaffold:dry-run
|
|
34
|
+
npm run scaffold:typing
|
|
35
|
+
npm run scaffold:preview
|
|
36
|
+
npm run scaffold:extensions
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
`xt` ist der kurze lokale CLI-Alias fuer dieselbe Scaffold-Implementierung wie `xtend` und `xtend-scaffold`. `validate` ist ein stabiler Alias fuer `verify`, damit lokale Gates kurz als `xt validate --json` aufgerufen werden koennen.
|
|
40
|
+
|
|
41
|
+
## Projektlayout
|
|
42
|
+
|
|
43
|
+
| Bereich | Pfad | Grenze |
|
|
44
|
+
|---------|------|--------|
|
|
45
|
+
| CLI | `xtend-builder/scaffold.js` | lokaler Einstieg fuer Hilfe, Layout und spaetere Generatorbefehle |
|
|
46
|
+
| CLI-Modul | `xtend-builder/lib/cli.js` | Argumentauswertung und Dispatch ohne Schreiblogik |
|
|
47
|
+
| Layout-Contract | `xtend-builder/lib/layout.js` | maschinenlesbare Struktur fuer Docs, Tests und CLI |
|
|
48
|
+
| Blueprints | `xtend-builder/blueprints/` | Komponenten-Blueprint und Artefaktcontract |
|
|
49
|
+
| Generators | `xtend-builder/generators/` | Generator-Registry, Component-Plan und dry-run Component-Files |
|
|
50
|
+
| Templates | `xtend-builder/templates/` | Template-Registry, Ladepfad und konkrete Pflichtartefakt-Templates |
|
|
51
|
+
| Wiring | `xtend-builder/wiring/` | Manifest-, Hydrations- und Feature-Contracts fuer dry-run Component-Files |
|
|
52
|
+
| Typing | `xtend-builder/typing/` | Type-Contracts fuer `.d.ts` Artefakte und vorbereiteten XTendRMT-Anschluss |
|
|
53
|
+
| Preview | `xtend-builder/preview/` | Preview- und Referenzpfad-Contracts fuer scaffolded Demo-Plaene |
|
|
54
|
+
| Extensions | `xtend-builder/extensions/` | Extension-Point-Contracts fuer Templating, Rendering und Root-Lifecycle |
|
|
55
|
+
| A11y | `xtend-builder/a11y/` | A11y- und Screenreader-Signal-Profilplan fuer neue Komponenten, Fixtures, Docs, Tests, Types und Manifest |
|
|
56
|
+
| Performance | `xtend-builder/performance/` | Performance-Profilplan fuer neue Komponenten, Budgets, Lanes, Hydration und Gates |
|
|
57
|
+
| Workflows | `xtend-builder/workflows/` | lokale Dry-Run-, Verify- und Reporting-Schrittfolgen |
|
|
58
|
+
| Utils | `xtend-builder/utils/` | pure Helfer fuer Naming, Tokenersetzung und Validierung |
|
|
59
|
+
| Writing | `xtend-builder/writing/` | zentraler WritePlan, strukturierte Patcher und kontrollierte Dateischreibpfade fuer produktive Scaffold-Builds |
|
|
60
|
+
| Config | `xtend-builder/scaffold.config.js` | zentrale Profile, Pfade, Testpflicht und Tooling-Entscheidung |
|
|
61
|
+
|
|
62
|
+
## Modulgrenzen
|
|
63
|
+
|
|
64
|
+
- `lib/` darf CLI-, Layout- und spaeter reine Orchestrierungslogik enthalten.
|
|
65
|
+
- `blueprints/` beschreibt Zielartefakte und Contracts, erzeugt aber nichts selbst.
|
|
66
|
+
- `generators/` enthaelt ab `WP-E03-11` Plan-, Render-, Typing-, Preview- und Extension-Contract-Generatorlogik.
|
|
67
|
+
- `templates/` enthaelt ab `WP-E03-05` konkrete Ausgabetemplates fuer Komponente, Doku, Tests, Fixture, Types und Manifest-Patch-Plan.
|
|
68
|
+
- `wiring/` enthaelt ab `WP-E03-07` reine Builder-Contracts fuer Manifest-Patchplaene, Hydration-Mindestpfade und profilbasierte Feature-Wiring-Patterns.
|
|
69
|
+
- `typing/` enthaelt ab `WP-E03-09` reine Type-Contracts fuer oeffentliche APIs, Events, Attribute und vorbereitete XTendRMT-Adapter-Anbindung.
|
|
70
|
+
- `preview/` enthaelt ab `WP-E03-10` reine Preview- und Reference-Gate-Contracts fuer scaffolded Komponenten.
|
|
71
|
+
- `extensions/` enthaelt ab `WP-E03-11` reine Extension-Point-Contracts fuer Templating, Rendering und Root-Lifecycle.
|
|
72
|
+
- `a11y/` enthaelt ab `ER-WP-23` reine A11y-Profilplaene nach `xtend.a11y.profile.v1`; ab `ER-WP-25` haengt es `xtend.a11y.screenreader-signals.v1` fuer Live-Region-, Status- und Error-Signale an; ab `ER-WP-26` haengt es `xtend.a11y.motion-contrast-policy.v1` fuer Reduced Motion und High Contrast an. Die Schicht erzeugt keine Runtime, sondern verpflichtet neue Artefakte auf Rolle, Namen, Fokus, Keyboard, ARIA, Screenreader, Reduced Motion und Kontrast.
|
|
73
|
+
- `performance/` enthaelt ab `ER-WP-21` reine Performance-Profilplaene nach `xtend.performance.component-profile.v1`; sie erzeugen keine Runtime, sondern verpflichten neue Artefakte auf Budgetklasse, Lane, Hydration Policy, Messpunkte und lokale Gates.
|
|
74
|
+
- `workflows/` enthaelt ab `WP-E03-08` lokale Dry-Run- und Verify-Contracts ohne Schreibzugriff.
|
|
75
|
+
- `utils/` enthaelt nur seiteneffektarme Helfer; Schreibstrategien muessen dry-run-first bleiben.
|
|
76
|
+
- `writing/` enthaelt ab `WP-E17-01` den zentralen WritePlan und Writer fuer kontrollierte Dateioperationen. Produktive Buildbefehle duerfen darueber schreiben, muessen aber weiterhin dry-run-first, reportbar und root-begrenzt bleiben.
|
|
77
|
+
- `component-files --write` nutzt ab `WP-E17-02` das Sidecar `.xtend-build/scaffold-ownership.json` nach `xtend.scaffold.generated-ownership.v1`, damit generierte Dateien idempotent aktualisiert und unowned Dateien ohne `--force` blockiert werden.
|
|
78
|
+
- `manifest-patcher.js` patcht ab `WP-E17-03` `components/manifest.json` als echtes JSON nach `xtend.scaffold.manifest-patcher.v1` und schreibt stabile Build Reports nach `.xtend-build/component-files/`.
|
|
79
|
+
- `rmt-build` uebersetzt ab `WP-E17-04` RMT vNext Templates in Core JSON, XTend Custom Element, App-Modul, HTTP-Host, Browser-Smoke-Fixture und Scaffold Report.
|
|
80
|
+
|
|
81
|
+
## Aktueller Stand
|
|
82
|
+
|
|
83
|
+
Epic 03 ist abgeschlossen. `WP-E03-02` definiert Struktur und Entry Points. `WP-E03-03` definiert den Komponenten-Blueprint und Artefaktcontract. `WP-E03-04` definiert Generator-Registry, Template-Ladepfad, Eingabevalidierung und Plan-Ausgabe. `WP-E03-05` rendert daraus echte Pflichtartefakt-Inhalte im Dry-Run-Modus. `WP-E03-06` ergaenzt deterministisches Manifest-Wiring und den Hydration-Mindestcontract ohne externe Importquellen. `WP-E03-07` ergaenzt State-, API- und Feature-Wiring-Patterns nach Core-Contract. `WP-E03-08` standardisiert lokale Dry-Run-, Verify- und Reporting-Workflows. `WP-E03-09` standardisiert Typ-Artefakte und den vorbereiteten Template-/XTendRMT-Anschluss. `WP-E03-10` bindet Preview- und Referenzpfade an die lokale Reference-Suite an. `WP-E03-11` bereitet Templating-, Rendering- und Root-Lifecycle-Extension-Punkte als Dry-Run-Contract vor. `WP-E03-12` nimmt den Epic gegen KPI, Testpflicht und Erweiterbarkeit final ab. Epic 04 / `WP-E04-08` fuehrt den dedizierten `rmt-compatibility` Gate fuer RMT-kompatible Scaffold-Artefakte ein. `ER-WP-21` erweitert die Scaffold-Ausgaben um Performance-Profilpflichten nach `xtend.performance.component-profile.v1`; `ER-WP-23` erweitert sie um A11y-Profilpflichten nach `xtend.a11y.profile.v1`; `ER-WP-25` fuegt Screenreader-Signal-Contracts nach `xtend.a11y.screenreader-signals.v1` hinzu; `ER-WP-26` fuegt Motion-/Contrast-Policies nach `xtend.a11y.motion-contrast-policy.v1` hinzu.
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
# XTend Scaffold A11y
|
|
2
|
+
|
|
3
|
+
Status: implemented by ER-WP-23, extended by ER-WP-25 and ER-WP-26
|
|
4
|
+
|
|
5
|
+
## Zweck
|
|
6
|
+
|
|
7
|
+
`xtend-builder/a11y/` enthaelt den A11y-Profilplan fuer neue Scaffold-Komponenten. Der Plan uebersetzt den A11y Component Contract `xtend.a11y.component-contract.v1` in konkrete Dry-Run-Artefakte.
|
|
8
|
+
|
|
9
|
+
Ab ER-WP-25 haengt das Profil zusätzlich den Screenreader-Signal-Contract an. Neue Komponenten deklarieren damit nicht nur Rolle, Namen und Keyboard-Pflichten, sondern auch maschinenlesbare Live-Region-, Status- und Error-Signale fuer Fabric/RMT-A11y-Lanes.
|
|
10
|
+
|
|
11
|
+
Ab ER-WP-26 haengt das Profil zudem `xtend.a11y.motion-contrast-policy.v1` an. Neue Komponenten erhalten damit pruefbare Regeln fuer `prefers-reduced-motion`, `forced-colors`, Fokus, Theme Tokens und Nicht-Farbstatus.
|
|
12
|
+
|
|
13
|
+
## Contract IDs
|
|
14
|
+
|
|
15
|
+
- Component Contract: `xtend.a11y.component-contract.v1`
|
|
16
|
+
- Profil: `xtend.a11y.profile.v1`
|
|
17
|
+
- Screenreader Signals: `xtend.a11y.screenreader-signals.v1`
|
|
18
|
+
- Screenreader Signal Record: `xtend.a11y.screenreader-signal.v1`
|
|
19
|
+
- Motion/Contrast Policy: `xtend.a11y.motion-contrast-policy.v1`
|
|
20
|
+
- Motion Policy: `xtend.a11y.motion-policy.v1`
|
|
21
|
+
- Contrast Policy: `xtend.a11y.contrast-policy.v1`
|
|
22
|
+
- Test Contract: `xtend.a11y.test-contract.v1`
|
|
23
|
+
- Scaffold Plan: `xtend.scaffold.a11y-profile-plan.v1`
|
|
24
|
+
|
|
25
|
+
## Artefaktwirkung
|
|
26
|
+
|
|
27
|
+
- Source: statischer Getter `xtendScaffoldA11yProfile`
|
|
28
|
+
- Docs: Abschnitte `A11y-Profil`, `Screenreader-Signale` und `Motion-und-Contrast-Policy`
|
|
29
|
+
- Fixture: `aria-label` und Hydration-Ergebnis fuer Rolle, Name, Profil, Screenreader-Signale und Motion/Contrast
|
|
30
|
+
- Tests: Assertions fuer A11y-Profil, Rolle, Name, Screenreader-Signale, Motion/Contrast und A11y-Hydration-Gate
|
|
31
|
+
- Manifest: `a11yProfile`, `screenreaderSignals` und `motionContrastPolicy`
|
|
32
|
+
- Types: `X<Component>A11yProfile`, `X<Component>ScreenreaderSignalContract` und `X<Component>MotionContrastPolicy`
|
|
33
|
+
|
|
34
|
+
## Gates
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
node scripts/run_xtend_tests.js components
|
|
38
|
+
node scripts/run_xtend_tests.js a11y-hydration
|
|
39
|
+
node scripts/run_xtend_tests.js screenreader-signals
|
|
40
|
+
node scripts/run_xtend_tests.js motion-contrast
|
|
41
|
+
node scripts/run_xtend_tests.js references
|
|
42
|
+
```
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { XtendBuilderComponentInput, XtendBuilderRecord } from '../builder-public-types';
|
|
2
|
+
|
|
3
|
+
export declare const A11Y_COMPONENT_CONTRACT_SCHEMA: string;
|
|
4
|
+
export declare const A11Y_PROFILE_SCHEMA: string;
|
|
5
|
+
export declare const A11Y_MOTION_CONTRAST_POLICY_SCHEMA: string;
|
|
6
|
+
export declare const A11Y_MOTION_POLICY_SCHEMA: string;
|
|
7
|
+
export declare const A11Y_CONTRAST_POLICY_SCHEMA: string;
|
|
8
|
+
export declare const A11Y_MOTION_CONTRAST_TEST_SCHEMA: string;
|
|
9
|
+
export declare const A11Y_SCREENREADER_SIGNALS_SCHEMA: string;
|
|
10
|
+
export declare const A11Y_SCREENREADER_SIGNAL_RECORD_SCHEMA: string;
|
|
11
|
+
export declare const A11Y_TEST_CONTRACT_SCHEMA: string;
|
|
12
|
+
export declare const PROFILE_A11Y_RULES: XtendBuilderRecord;
|
|
13
|
+
export declare const SCAFFOLD_A11Y_PROFILE_PLAN_SCHEMA: string;
|
|
14
|
+
export declare function createComponentA11yProfile(input?: XtendBuilderComponentInput, options?: XtendBuilderRecord): XtendBuilderRecord;
|