@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,298 @@
|
|
|
1
|
+
<?php
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Lightweight Parsedown-compatible adapter for the local XTend docs app.
|
|
5
|
+
*
|
|
6
|
+
* The original Docs host expects the public Parsedown API surface:
|
|
7
|
+
* - new Parsedown()
|
|
8
|
+
* - setSafeMode(true)
|
|
9
|
+
* - text($markdown)
|
|
10
|
+
*
|
|
11
|
+
* This adapter intentionally keeps the surface tiny and safe for local
|
|
12
|
+
* development. It supports the Markdown constructs used by the XTend docs
|
|
13
|
+
* without adding a Composer/runtime dependency to the repository.
|
|
14
|
+
*/
|
|
15
|
+
class Parsedown
|
|
16
|
+
{
|
|
17
|
+
private bool $safeMode = false;
|
|
18
|
+
|
|
19
|
+
public function setSafeMode($safeMode): self
|
|
20
|
+
{
|
|
21
|
+
$this->safeMode = (bool) $safeMode;
|
|
22
|
+
return $this;
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
public function text($text): string
|
|
26
|
+
{
|
|
27
|
+
$lines = preg_split('/\r\n|\r|\n/', (string) $text);
|
|
28
|
+
$html = [];
|
|
29
|
+
$paragraph = [];
|
|
30
|
+
$listType = null;
|
|
31
|
+
$table = [];
|
|
32
|
+
$inCode = false;
|
|
33
|
+
$codeFence = '';
|
|
34
|
+
$codeLines = [];
|
|
35
|
+
|
|
36
|
+
$flushParagraph = function () use (&$html, &$paragraph): void {
|
|
37
|
+
if (!$paragraph) return;
|
|
38
|
+
$content = trim(implode(' ', $paragraph));
|
|
39
|
+
if ($content !== '') {
|
|
40
|
+
$html[] = '<p>' . $this->inline($content) . '</p>';
|
|
41
|
+
}
|
|
42
|
+
$paragraph = [];
|
|
43
|
+
};
|
|
44
|
+
|
|
45
|
+
$flushList = function () use (&$html, &$listType): void {
|
|
46
|
+
if ($listType) {
|
|
47
|
+
$html[] = '</' . $listType . '>';
|
|
48
|
+
$listType = null;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
$flushTable = function () use (&$html, &$table): void {
|
|
53
|
+
if (!$table) return;
|
|
54
|
+
$html[] = $this->renderTable($table);
|
|
55
|
+
$table = [];
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
foreach ($lines as $line) {
|
|
59
|
+
$raw = rtrim($line, "\r\n");
|
|
60
|
+
|
|
61
|
+
if ($inCode) {
|
|
62
|
+
if (preg_match('/^\s*```\s*$/', $raw)) {
|
|
63
|
+
$html[] = '<pre><code' . ($codeFence ? ' class="language-' . $this->escapeAttribute($codeFence) . '"' : '') . '>'
|
|
64
|
+
. $this->escapeHtml(implode("\n", $codeLines))
|
|
65
|
+
. '</code></pre>';
|
|
66
|
+
$inCode = false;
|
|
67
|
+
$codeFence = '';
|
|
68
|
+
$codeLines = [];
|
|
69
|
+
} else {
|
|
70
|
+
$codeLines[] = $raw;
|
|
71
|
+
}
|
|
72
|
+
continue;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (preg_match('/^\s*```\s*([A-Za-z0-9_-]+)?\s*$/', $raw, $matches)) {
|
|
76
|
+
$flushParagraph();
|
|
77
|
+
$flushList();
|
|
78
|
+
$flushTable();
|
|
79
|
+
$inCode = true;
|
|
80
|
+
$codeFence = $matches[1] ?? '';
|
|
81
|
+
$codeLines = [];
|
|
82
|
+
continue;
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
if (trim($raw) === '') {
|
|
86
|
+
$flushParagraph();
|
|
87
|
+
$flushList();
|
|
88
|
+
$flushTable();
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
if ($this->isHorizontalRule($raw)) {
|
|
93
|
+
$flushParagraph();
|
|
94
|
+
$flushList();
|
|
95
|
+
$flushTable();
|
|
96
|
+
$html[] = '<hr>';
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
if (preg_match('/^\s{0,3}(#{1,6})\s+(.+?)\s*#*\s*$/', $raw, $matches)) {
|
|
101
|
+
$flushParagraph();
|
|
102
|
+
$flushList();
|
|
103
|
+
$flushTable();
|
|
104
|
+
$level = strlen($matches[1]);
|
|
105
|
+
$content = trim($matches[2]);
|
|
106
|
+
$id = $this->slug($content);
|
|
107
|
+
$html[] = '<h' . $level . ($id ? ' id="' . $this->escapeAttribute($id) . '"' : '') . '>'
|
|
108
|
+
. $this->inline($content)
|
|
109
|
+
. '</h' . $level . '>';
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
if (preg_match('/^\s{0,3}>\s?(.*)$/', $raw, $matches)) {
|
|
114
|
+
$flushParagraph();
|
|
115
|
+
$flushList();
|
|
116
|
+
$flushTable();
|
|
117
|
+
$html[] = '<blockquote><p>' . $this->inline($matches[1]) . '</p></blockquote>';
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
if ($this->isTableLine($raw)) {
|
|
122
|
+
$flushParagraph();
|
|
123
|
+
$flushList();
|
|
124
|
+
$table[] = $raw;
|
|
125
|
+
continue;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
if (preg_match('/^\s*[-*+]\s+(.+)$/', $raw, $matches)) {
|
|
129
|
+
$flushParagraph();
|
|
130
|
+
$flushTable();
|
|
131
|
+
if ($listType !== 'ul') {
|
|
132
|
+
$flushList();
|
|
133
|
+
$listType = 'ul';
|
|
134
|
+
$html[] = '<ul>';
|
|
135
|
+
}
|
|
136
|
+
$html[] = '<li>' . $this->inline(trim($matches[1])) . '</li>';
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (preg_match('/^\s*\d+[.)]\s+(.+)$/', $raw, $matches)) {
|
|
141
|
+
$flushParagraph();
|
|
142
|
+
$flushTable();
|
|
143
|
+
if ($listType !== 'ol') {
|
|
144
|
+
$flushList();
|
|
145
|
+
$listType = 'ol';
|
|
146
|
+
$html[] = '<ol>';
|
|
147
|
+
}
|
|
148
|
+
$html[] = '<li>' . $this->inline(trim($matches[1])) . '</li>';
|
|
149
|
+
continue;
|
|
150
|
+
}
|
|
151
|
+
|
|
152
|
+
$flushList();
|
|
153
|
+
$flushTable();
|
|
154
|
+
$paragraph[] = trim($raw);
|
|
155
|
+
}
|
|
156
|
+
|
|
157
|
+
if ($inCode) {
|
|
158
|
+
$html[] = '<pre><code' . ($codeFence ? ' class="language-' . $this->escapeAttribute($codeFence) . '"' : '') . '>'
|
|
159
|
+
. $this->escapeHtml(implode("\n", $codeLines))
|
|
160
|
+
. '</code></pre>';
|
|
161
|
+
}
|
|
162
|
+
|
|
163
|
+
$flushParagraph();
|
|
164
|
+
$flushList();
|
|
165
|
+
$flushTable();
|
|
166
|
+
|
|
167
|
+
return implode("\n", $html);
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
private function inline(string $text): string
|
|
171
|
+
{
|
|
172
|
+
$escaped = $this->safeMode ? $this->escapeHtml($text) : $text;
|
|
173
|
+
$tokens = [];
|
|
174
|
+
|
|
175
|
+
$escaped = preg_replace_callback('/`([^`]+)`/', function ($matches) use (&$tokens) {
|
|
176
|
+
$token = "\x1A" . count($tokens) . "\x1A";
|
|
177
|
+
$tokens[$token] = '<code>' . $this->escapeHtml($matches[1]) . '</code>';
|
|
178
|
+
return $token;
|
|
179
|
+
}, $escaped);
|
|
180
|
+
|
|
181
|
+
$escaped = preg_replace_callback('/!\[([^\]]*)\]\(([^)\s]+)(?:\s+"([^"]*)")?\)/', function ($matches) {
|
|
182
|
+
$alt = $this->escapeAttribute($matches[1]);
|
|
183
|
+
$src = $this->sanitizeUrl($matches[2]);
|
|
184
|
+
$title = isset($matches[3]) ? ' title="' . $this->escapeAttribute($matches[3]) . '"' : '';
|
|
185
|
+
return '<img src="' . $this->escapeAttribute($src) . '" alt="' . $alt . '"' . $title . '>';
|
|
186
|
+
}, $escaped);
|
|
187
|
+
|
|
188
|
+
$escaped = preg_replace_callback('/\[([^\]]+)\]\(([^)\s]+)(?:\s+"([^"]*)")?\)/', function ($matches) {
|
|
189
|
+
$href = $this->sanitizeUrl($matches[2]);
|
|
190
|
+
$title = isset($matches[3]) ? ' title="' . $this->escapeAttribute($matches[3]) . '"' : '';
|
|
191
|
+
return '<a href="' . $this->escapeAttribute($href) . '"' . $title . '>' . $matches[1] . '</a>';
|
|
192
|
+
}, $escaped);
|
|
193
|
+
|
|
194
|
+
$escaped = preg_replace('/\*\*([^*]+)\*\*/', '<strong>$1</strong>', $escaped);
|
|
195
|
+
$escaped = preg_replace('/__([^_]+)__/', '<strong>$1</strong>', $escaped);
|
|
196
|
+
$escaped = preg_replace('/\*([^*]+)\*/', '<em>$1</em>', $escaped);
|
|
197
|
+
$escaped = preg_replace('/_([^_]+)_/', '<em>$1</em>', $escaped);
|
|
198
|
+
|
|
199
|
+
return strtr($escaped, $tokens);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
private function renderTable(array $lines): string
|
|
203
|
+
{
|
|
204
|
+
if (count($lines) < 2 || !$this->isSeparatorLine($lines[1])) {
|
|
205
|
+
return '<p>' . $this->inline(implode(' ', array_map('trim', $lines))) . '</p>';
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
$headers = $this->splitTableRow($lines[0]);
|
|
209
|
+
$align = $this->splitTableRow($lines[1]);
|
|
210
|
+
$rows = array_slice($lines, 2);
|
|
211
|
+
$html = ['<table>', '<thead><tr>'];
|
|
212
|
+
|
|
213
|
+
foreach ($headers as $index => $header) {
|
|
214
|
+
$style = $this->tableAlignStyle($align[$index] ?? '');
|
|
215
|
+
$html[] = '<th' . $style . '>' . $this->inline(trim($header)) . '</th>';
|
|
216
|
+
}
|
|
217
|
+
|
|
218
|
+
$html[] = '</tr></thead>';
|
|
219
|
+
if ($rows) {
|
|
220
|
+
$html[] = '<tbody>';
|
|
221
|
+
foreach ($rows as $row) {
|
|
222
|
+
$html[] = '<tr>';
|
|
223
|
+
foreach ($this->splitTableRow($row) as $index => $cell) {
|
|
224
|
+
$style = $this->tableAlignStyle($align[$index] ?? '');
|
|
225
|
+
$html[] = '<td' . $style . '>' . $this->inline(trim($cell)) . '</td>';
|
|
226
|
+
}
|
|
227
|
+
$html[] = '</tr>';
|
|
228
|
+
}
|
|
229
|
+
$html[] = '</tbody>';
|
|
230
|
+
}
|
|
231
|
+
|
|
232
|
+
$html[] = '</table>';
|
|
233
|
+
return implode('', $html);
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
private function isTableLine(string $line): bool
|
|
237
|
+
{
|
|
238
|
+
return str_contains($line, '|');
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
private function isSeparatorLine(string $line): bool
|
|
242
|
+
{
|
|
243
|
+
return (bool) preg_match('/^\s*\|?\s*:?-{3,}:?\s*(\|\s*:?-{3,}:?\s*)+\|?\s*$/', $line);
|
|
244
|
+
}
|
|
245
|
+
|
|
246
|
+
private function isHorizontalRule(string $line): bool
|
|
247
|
+
{
|
|
248
|
+
return (bool) preg_match('/^\s{0,3}(?:-{3,}|\*{3,}|_{3,})\s*$/', $line);
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
private function splitTableRow(string $line): array
|
|
252
|
+
{
|
|
253
|
+
$line = trim($line);
|
|
254
|
+
$line = trim($line, '|');
|
|
255
|
+
return array_map('trim', explode('|', $line));
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
private function tableAlignStyle(string $marker): string
|
|
259
|
+
{
|
|
260
|
+
$marker = trim($marker);
|
|
261
|
+
if (str_starts_with($marker, ':') && str_ends_with($marker, ':')) {
|
|
262
|
+
return ' style="text-align:center"';
|
|
263
|
+
}
|
|
264
|
+
if (str_ends_with($marker, ':')) {
|
|
265
|
+
return ' style="text-align:right"';
|
|
266
|
+
}
|
|
267
|
+
if (str_starts_with($marker, ':')) {
|
|
268
|
+
return ' style="text-align:left"';
|
|
269
|
+
}
|
|
270
|
+
return '';
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
private function sanitizeUrl(string $url): string
|
|
274
|
+
{
|
|
275
|
+
$url = trim($url);
|
|
276
|
+
if (preg_match('/^\s*(javascript|vbscript|data):/i', $url)) {
|
|
277
|
+
return '#';
|
|
278
|
+
}
|
|
279
|
+
return $url;
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
private function slug(string $text): string
|
|
283
|
+
{
|
|
284
|
+
$slug = strtolower(strip_tags($text));
|
|
285
|
+
$slug = preg_replace('/[^a-z0-9]+/i', '-', $slug);
|
|
286
|
+
return trim((string) $slug, '-');
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
private function escapeHtml(string $value): string
|
|
290
|
+
{
|
|
291
|
+
return htmlspecialchars($value, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
private function escapeAttribute(string $value): string
|
|
295
|
+
{
|
|
296
|
+
return htmlspecialchars($value, ENT_QUOTES | ENT_SUBSTITUTE, 'UTF-8');
|
|
297
|
+
}
|
|
298
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Visual Browser Regression
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.docs.visual-browser-regression.v1`
|
|
4
|
+
- Plan Contract: `xtend.catalog.component-regression-priority-plan.v1`
|
|
5
|
+
- Gate Contract: `xtend.catalog.component-regression-priority-gate.v1`
|
|
6
|
+
- Snapshot Contract: `xtend.epic12.visual-snapshot-automation-contract.v1`
|
|
7
|
+
- Workpackage: `ER-WP-35`
|
|
8
|
+
|
|
9
|
+
Diese Seite beschreibt den aktuellen XTend-Plan fuer visuelle und browsernahe Regression. ER-WP-35 fuehrt noch keinen Screenshot-Runner ein. Stattdessen erzeugt XTend einen stabilen Prioritaetsplan, der pro Manifest-Komponente festlegt, welche Browser-Smokes, Viewports, Theme-Varianten, visuellen Zustaende und Performance-Profile zuerst automatisiert werden muessen.
|
|
10
|
+
|
|
11
|
+
## Lokal pruefen
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
node scripts/run_xtend_tests.js regression-priority
|
|
15
|
+
node scripts/run_xtend_tests.js regression-priority --json
|
|
16
|
+
npm run test:regression-priority
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Der Gate ist Teil des lokalen Test-Runners und nutzt die Component Catalog Coverage Matrix als Quelle. Er bleibt CDN-frei und braucht keine externe Browser-Automation.
|
|
20
|
+
|
|
21
|
+
## Mindestabdeckung
|
|
22
|
+
|
|
23
|
+
Jede Komponente im Plan erhaelt:
|
|
24
|
+
|
|
25
|
+
- Viewports: `desktop-1280`, `mobile-390`
|
|
26
|
+
- Theme-/Preference-Varianten: `light`, `dark`, `forced-colors`, `reduced-motion`
|
|
27
|
+
- Performance-Profil: `xtend.performance.component-profile.v1`
|
|
28
|
+
- Handoff-Gates: `browser`, `performance-regression`, `catalog-coverage`, `references`
|
|
29
|
+
|
|
30
|
+
P0-Komponenten wie `x-router`, `x-link`, `x-modal`, `x-input`, `x-select`, `x-checkbox`, `x-radio`, `x-textarea`, `x-tooltip`, `x-popover`, `x-drawer`, `x-form`, `x-calendar`, `x-writer`, `x-dialog` und `x-lightbox` werden als `p0-browser-critical` eingeordnet. P1-Komponenten wie `x-status` und `x-progress` bilden die visuelle und Performance-Baseline. P2-Komponenten bleiben als Long-Tail sichtbar.
|
|
31
|
+
|
|
32
|
+
## Profil-Regeln
|
|
33
|
+
|
|
34
|
+
| Profil | Browser-Smokes | Visuelle Zustaende |
|
|
35
|
+
|--------|----------------|--------------------|
|
|
36
|
+
| `routing` | Route-Wechsel, Keyboard Navigation, History State, RMT Route Adapter | Initial Route, Active Route, RMT Scheduled Route |
|
|
37
|
+
| `form` | Input Sync, Validation Feedback, Keyboard Entry, Form Submit | Default, Focus, Invalid, Disabled |
|
|
38
|
+
| `overlay` | Focus Trap, Escape Close, Scroll Lock, Focus Restore | Closed, Open, Focus Trapped, Reduced Motion Open |
|
|
39
|
+
| `feedback` | Live Region, Dismiss Timer, Reduced Motion | Info, Warning, Error, Dismissed |
|
|
40
|
+
| `interactive` | Keyboard Activation, Focus Visible, Mobile Tap | Default, Hover, Focus Visible, Active, Disabled |
|
|
41
|
+
| `media` | Media Controls, Poster Load, Fullscreen Toggle | Poster, Playing, Controls Focus |
|
|
42
|
+
| `theme` | Theme Switch, Token Contrast, Forced Colors | Light Theme, Dark Theme, Forced Colors |
|
|
43
|
+
| `display` | Layout Stability, Responsive Overflow | Default Layout, Narrow Layout |
|
|
44
|
+
| `iconography` | Layout Stability, Theme Token Color | Default Layout, High Contrast CurrentColor |
|
|
45
|
+
| `utility` | Utility Integration Probe | Helper Ready |
|
|
46
|
+
|
|
47
|
+
## Boundary-Abschluss
|
|
48
|
+
|
|
49
|
+
Der Plan haelt die frueheren Boundary-Luecken nachvollziehbar, aber nicht mehr als offene RC1-Restpunkte:
|
|
50
|
+
|
|
51
|
+
- 0 Manifest-Eintraege brauchen noch Suite-, Fixture- oder Type-Nacharbeit.
|
|
52
|
+
- `xstate` ist seit `WP-E13-05` als Runtime-Boundary geschlossen.
|
|
53
|
+
- `x-utils` ist seit `WP-E13-05` als Utility-Boundary geschlossen.
|
|
54
|
+
- Die 40 sichtbaren Runtime-/UI-Komponenten behalten explizite Performance-Profile; `xstate` und `x-utils` werden nicht kuenstlich zu visuellen Profiltraegern umgedeutet.
|
|
55
|
+
|
|
56
|
+
Damit ist klar, dass `ER-WP-35` priorisiert, aber die eigentliche Screenshot-/Pixel-Regression an CI und Release Readiness uebergibt.
|
|
57
|
+
|
|
58
|
+
## Snapshot Automation Contract
|
|
59
|
+
|
|
60
|
+
Seit `WP-E12-10` ist der naechste Schritt ueber `xtend.epic12.visual-snapshot-automation-contract.v1` festgelegt:
|
|
61
|
+
|
|
62
|
+
```bash
|
|
63
|
+
node scripts/run_xtend_tests.js visual-snapshot-automation --json
|
|
64
|
+
npm run test:visual-snapshot-automation
|
|
65
|
+
node scripts/run_xtend_tests.js visual-snapshots --json
|
|
66
|
+
npm run test:visual-snapshots
|
|
67
|
+
node scripts/run_xtend_tests.js design-tokens --json
|
|
68
|
+
npm run test:design-tokens
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Der Snapshot-Contract uebernimmt die 360 Kombinationen aus der Component Shell Theme Matrix und beschreibt `shell-structure`, `visual-state`, `theme-token-state`, `motion-density-state`, `viewport-layout`, `focus-a11y-state` und `rmt-shell-descriptor` als Snapshot Scopes. Die Diff-Strategie ist `dom-first-pixel-ready`: DOM-Struktur und CSS Token werden mit Toleranz `0` behandelt. Seit `WP-E12-11` vergleicht `xtend.epic12.visual-snapshot-runner.v1` die lokale Fixture gegen eine textuelle JSON DOM-Baseline. Pixel-Diff ist als `optional-local-pixel-diff` vorbereitet und bleibt ausserhalb des Node-Contract-Gates. Seit `WP-E12-12` werden diese CSS Token als `xtend.design-tokens.product-contract.v1` produktisiert und ueber dieselben `--xtend-*` Namen in `x-theme`, Theme Matrix und Snapshot Baseline geprueft.
|
|
72
|
+
|
|
73
|
+
## Handoff
|
|
74
|
+
|
|
75
|
+
- `WP-E12-10`: Visual Snapshot Automation Contract ist abgeschlossen.
|
|
76
|
+
- `WP-E12-11`: lokales Snapshot Fixture und DOM-first Runner ist abgeschlossen.
|
|
77
|
+
- `WP-E12-12`: Enterprise Design System Token Productization ist abgeschlossen.
|
|
78
|
+
- `ER-WP-36`: CI Workflow fuer Default Gates und Regression Priority Gate produktisieren.
|
|
79
|
+
- `ER-WP-38`: Release Checklist um Browser-/Visual-Regression, Artefakte und SemVer-Risiken erweitern.
|
|
80
|
+
- `ER-WP-39`: Enterprise Adoption Guide mit QS-Empfehlungen und Baseline-Strategie ist abgeschlossen.
|
|
81
|
+
- `ER-WP-40`: Docs-App mit RMT Parsedown Scheduling Pilot ist abgeschlossen.
|
|
82
|
+
|
|
83
|
+
Die maschinenlesbare Umsetzung liegt in `catalog/component-regression-priority.js`. Die Architekturentscheidung liegt in `development/XTend-Visuelle-und-Browsernahe-Regression-Prioritaetsplan.md`.
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
# Visual Owner Artifacts
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic13.visual-owner-artifact.v1`
|
|
4
|
+
- Manifest Contract: `xtend.epic13.visual-owner-artifact-manifest.v1`
|
|
5
|
+
- Report: `xtend.epic13.visual-owner-artifact-report.v1`
|
|
6
|
+
- Workpackage: `WP-E13-08`
|
|
7
|
+
- Lokaler Gate: `node scripts/run_xtend_tests.js epic13-visual-owner-artifact --json`
|
|
8
|
+
- Package Script: `npm run test:epic13-visual-owner-artifact`
|
|
9
|
+
- Manifest: `tests/browser/visual-baselines/rc1-visual-owner-artifact.manifest.json`
|
|
10
|
+
- Publish Boundary: `private-until-release-owner-acceptance`
|
|
11
|
+
|
|
12
|
+
## Zweck
|
|
13
|
+
|
|
14
|
+
Visual Owner Artifacts verbinden die bestehende DOM-first Visual Snapshot Automation mit einem reproduzierbaren Screenshot-/Pixel-Artefaktpfad fuer RC1. Der lokale Gate validiert Contract, Manifest und DOM-Snapshot-Zustand. Die eigentliche Screenshot-Erzeugung bleibt optional und gehoert in stabile Browser- oder CI-Umgebungen.
|
|
15
|
+
|
|
16
|
+
## Pfadkonvention
|
|
17
|
+
|
|
18
|
+
```text
|
|
19
|
+
.xtend-test-results/visual-snapshots/rc1/{family}/{viewport}/{theme}/{density}/{motion}.png
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
Der Report liegt unter:
|
|
23
|
+
|
|
24
|
+
```text
|
|
25
|
+
.xtend-test-results/visual-snapshots/rc1/visual-owner-artifact-report.json
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Die Fixture bleibt `tests/browser/fixtures/visual-snapshots-fixture.html`, die DOM-Baseline bleibt `tests/browser/visual-baselines/visual-snapshots.dom-baseline.json`.
|
|
29
|
+
|
|
30
|
+
## Lokale Nutzung
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
npm run test:epic13-visual-owner-artifact
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Der lokale Modus ist `static-artifact-manifest-plus-dom-snapshot-gate`. `pixelDiffRequiredInLocalGate`, `screenshotRequiredInLocalGate` und `binaryBaselineCommitted` sind `false`.
|
|
37
|
+
|
|
38
|
+
## Beziehung zu vorhandenen Gates
|
|
39
|
+
|
|
40
|
+
- Die DOM-Struktur kommt aus [Visual Snapshot Automation](./visual-snapshot-automation.md).
|
|
41
|
+
- Die PROD-nahe Browser-/CSP-Vorbereitung kommt aus [PROD Browser CSP Smokes](./prod-browser-csp-smokes.md).
|
|
42
|
+
- Das Owner-Artefakt bleibt `optional-browser-driver-or-ci-artifact`, bis eine stabile Browser-Capture-Umgebung als verpflichtender Release-Gate entschieden wird.
|
|
43
|
+
|
|
44
|
+
## Handoff
|
|
45
|
+
|
|
46
|
+
`WP-E13-08` ist abgeschlossen. `WP-E13-09` hat `xtend.epic13.rmt-production-readiness.v1` unter [RMT Production Readiness](./rmt-production-readiness.md) gebuendelt. `WP-E13-10` hat [Docs RMT Production Hardening](./docs-rmt-production-hardening.md) abgeschlossen. `WP-E13-11` hat [Trusted DOM Boundary Browser Proof](./trusted-dom-boundary-browser-proof.md) und `xtend.epic13.trusted-dom-boundary.v1` abgeschlossen. `WP-E13-12` hat [RC1 Migration Notes](./rc1-migration-notes.md) und `xtend.epic13.rc1-migration-notes-semver.v1` abgeschlossen. `WP-E13-13` hat [RC1 Gate Matrix und CI-Handoff](./rc1-gate-matrix-ci-handoff.md) und `xtend.epic13.rc1-gate-matrix-ci-handoff.v1` abgeschlossen.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Visual Snapshot Automation
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.epic12.visual-snapshot-automation-contract.v1`
|
|
4
|
+
- Entry Contract: `xtend.epic12.visual-snapshot-automation-entry.v1`
|
|
5
|
+
- Automation Report Contract: `xtend.epic12.visual-snapshot-automation-report.v1`
|
|
6
|
+
- Runner Contract: `xtend.epic12.visual-snapshot-runner.v1`
|
|
7
|
+
- Fixture Contract: `xtend.epic12.visual-snapshot-fixture.v1`
|
|
8
|
+
- Runner Report Contract: `xtend.epic12.visual-snapshot-runner-report.v1`
|
|
9
|
+
- Design Token Contract: `xtend.design-tokens.product-contract.v1`
|
|
10
|
+
- Workpackages: `WP-E12-10`, `WP-E12-11`, `WP-E12-12`
|
|
11
|
+
- Contract Gate: `node scripts/run_xtend_tests.js visual-snapshot-automation --json`
|
|
12
|
+
- Snapshot Gate: `node scripts/run_xtend_tests.js visual-snapshots --json`
|
|
13
|
+
|
|
14
|
+
XTend Visual Snapshot Automation ist die Epic-12-Linie fuer lokale visuelle Regression. `WP-E12-10` definiert Scopes, Matrix, Toleranzen und Artefaktpolitik. `WP-E12-11` setzt darauf einen lokalen DOM-first Snapshot Runner mit JSON-Baseline auf.
|
|
15
|
+
|
|
16
|
+
## Lokal pruefen
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
node scripts/run_xtend_tests.js visual-snapshot-automation
|
|
20
|
+
node scripts/run_xtend_tests.js visual-snapshot-automation --json
|
|
21
|
+
npm run test:visual-snapshot-automation
|
|
22
|
+
node scripts/run_xtend_tests.js visual-snapshots --json
|
|
23
|
+
npm run test:visual-snapshots
|
|
24
|
+
node scripts/run_xtend_tests.js design-tokens --json
|
|
25
|
+
npm run test:design-tokens
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Der Gate ist local-only, CDN-frei und nutzt keine externen Browserdienste.
|
|
29
|
+
|
|
30
|
+
## Matrix
|
|
31
|
+
|
|
32
|
+
Der Contract uebernimmt die 360 Kombinationen der Component Shell Theme Matrix:
|
|
33
|
+
|
|
34
|
+
- Themes: `light`, `dark`, `high-contrast`, `forced-colors`
|
|
35
|
+
- Motion: `default-motion`, `reduced-motion`
|
|
36
|
+
- Density: `comfortable`, `compact`, `dense`
|
|
37
|
+
- Viewports: `desktop-1280`, `tablet-768`, `mobile-390`
|
|
38
|
+
- UX-Familien: `form-controls`, `feedback-status`, `navigation-routing`, `overlay-interaction`, `layout-display-media`
|
|
39
|
+
|
|
40
|
+
## Snapshot Scopes
|
|
41
|
+
|
|
42
|
+
- `shell-structure`
|
|
43
|
+
- `visual-state`
|
|
44
|
+
- `theme-token-state`
|
|
45
|
+
- `motion-density-state`
|
|
46
|
+
- `viewport-layout`
|
|
47
|
+
- `focus-a11y-state`
|
|
48
|
+
- `rmt-shell-descriptor`
|
|
49
|
+
|
|
50
|
+
Die RMT-Grenze bleibt `no-rmt-kernel-import-of-xtend-types`: RMT beschreibt und scheduled Shells, importiert aber keine XTend-Typen in den Kernel.
|
|
51
|
+
|
|
52
|
+
Ab `WP-E12-12` nutzt die Snapshot-Fixture dieselben Produkt-Tokens wie `x-theme` und die Component Shell Theme Matrix. Die DOM-Baseline trackt `--xtend-surface`, `--xtend-text`, `--xtend-color-primary`, `--xtend-density-spacing` und `--xtend-radius`; lokale Fixture-Namen wie `--snapshot-*` sind entfernt.
|
|
53
|
+
|
|
54
|
+
## Diff-Strategie
|
|
55
|
+
|
|
56
|
+
`WP-E12-10` legt `dom-first-pixel-ready` fest, `WP-E12-11` fuehrt den lokalen DOM-Diff aus:
|
|
57
|
+
|
|
58
|
+
- DOM-Struktur und CSS Token haben Toleranz `0`.
|
|
59
|
+
- Pixel-Diff ist vorbereitet als `optional-local-pixel-diff`, laeuft im Node-Contract-Gate aber nicht.
|
|
60
|
+
- Maximaler Pixel-Mismatch ist `0.01`.
|
|
61
|
+
- Layout Shift ist auf `1px` begrenzt.
|
|
62
|
+
- Vor Capture muss der Runner auf Custom Elements, Fonts, Loader-Abschluss und einen Animation Frame warten.
|
|
63
|
+
|
|
64
|
+
## Artefakte
|
|
65
|
+
|
|
66
|
+
| Artefakt | Pfad |
|
|
67
|
+
|----------|------|
|
|
68
|
+
| Contract | `development/XTend-Visual-Snapshot-Automation-Contract.md` |
|
|
69
|
+
| Plan | `tests/browser/visual-snapshot-automation-plan.js` |
|
|
70
|
+
| Automation Suite | `tests/browser/visual_snapshot_automation_suite.js` |
|
|
71
|
+
| Runner | `tests/browser/visual-snapshots-runner.js` |
|
|
72
|
+
| Fixture | `tests/browser/fixtures/visual-snapshots-fixture.html` |
|
|
73
|
+
| DOM Baseline | `tests/browser/visual-baselines/visual-snapshots.dom-baseline.json` |
|
|
74
|
+
| Snapshot Suite | `tests/browser/visual_snapshots_suite.js` |
|
|
75
|
+
| Output Root | `.xtend-test-results/visual-snapshots` |
|
|
76
|
+
| Report Path | `.xtend-test-results/visual-snapshots/visual-snapshots-report.json` |
|
|
77
|
+
| RC1 Owner Manifest | `tests/browser/visual-baselines/rc1-visual-owner-artifact.manifest.json` |
|
|
78
|
+
|
|
79
|
+
Die Baseline ist in `WP-E12-11` textuell und reviewbar. Binary- oder Screenshot-Baselines bleiben einem optionalen lokalen Pixel-Diff-Modus vorbehalten.
|
|
80
|
+
|
|
81
|
+
## RC1 Visual Owner Artifact
|
|
82
|
+
|
|
83
|
+
Ab `WP-E13-08` nutzt [Visual Owner Artifacts](./visual-owner-artifacts.md) diese DOM-first Linie als Quelle fuer `xtend.epic13.visual-owner-artifact.v1`. Der lokale Gate `node scripts/run_xtend_tests.js epic13-visual-owner-artifact --json` normalisiert Artifact Root, Report-Pfad, Screenshot-Template und Viewports. Die Screenshot-/Pixel-Erzeugung bleibt `optional-browser-driver-or-ci-artifact`.
|
|
84
|
+
|
|
85
|
+
## RC0 Adoption Update
|
|
86
|
+
|
|
87
|
+
Seit `WP-E12-15` verweist der [RC0 Adoption Guide](./rc0-adoption-guide.md) auf diesen DOM-first Snapshot-Pfad als RC0-Baseline. Component Authors behandeln `visual-snapshots`, `design-tokens` und `component-shell-theme-matrix` gemeinsam als lokale Review-Kette; Pixel-Baselines bleiben optional und duerfen den lokalen RC0 Dry Run nicht blockieren.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# XTend API Types
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.type-exports.api-declarations.v1`
|
|
4
|
+
- Workpackage: `WP-TypeExports-03`
|
|
5
|
+
- Gate: `node scripts/run_xtend_tests.js type-exports-api --json`
|
|
6
|
+
- Report: `.xtend-test-results/xtend-type-exports-api-report.json`
|
|
7
|
+
- Declaration: `api.d.ts`
|
|
8
|
+
|
|
9
|
+
## Zweck
|
|
10
|
+
|
|
11
|
+
`api.d.ts` beschreibt die oeffentliche Core-API aus `api.js`: `initXTendAPI(manifest)`, den globalen Namespace `window.XTend.*`, die Legacy-Aliase und das Event `xtend-api-ready`. Die Declaration ist types-only; `api.js` bleibt runtime-unveraendert.
|
|
12
|
+
|
|
13
|
+
## Namespace
|
|
14
|
+
|
|
15
|
+
Der zentrale Namespace-Typ heisst `XTendNamespace`.
|
|
16
|
+
|
|
17
|
+
| API | Typ |
|
|
18
|
+
| --- | --- |
|
|
19
|
+
| `window.XTend.compliance` | `XTendComplianceApi` |
|
|
20
|
+
| `window.XTend.theme` | `XTendThemeApi` |
|
|
21
|
+
| `window.XTend.toast` | `XTendToastApi` |
|
|
22
|
+
| `window.XTend.alert` | `XTendAlertApi` |
|
|
23
|
+
| `window.XTend.dialog` | `XTendDialogApi` |
|
|
24
|
+
| `window.XTend.modal` | `XTendModalApi` |
|
|
25
|
+
|
|
26
|
+
## Legacy-Aliase
|
|
27
|
+
|
|
28
|
+
`api.d.ts` typisiert weiterhin die bestehenden globalen Komfort-Aliase:
|
|
29
|
+
|
|
30
|
+
- `window.XTheme`
|
|
31
|
+
- `window.XToast`
|
|
32
|
+
- `window.XAlert`
|
|
33
|
+
- `window.XDialog`
|
|
34
|
+
- `window.XModal`
|
|
35
|
+
- `window.showToast`
|
|
36
|
+
- `window.showAlert`
|
|
37
|
+
- `window.showDialog`
|
|
38
|
+
- `window.showModal`
|
|
39
|
+
|
|
40
|
+
## Event
|
|
41
|
+
|
|
42
|
+
`WindowEventMap` enthaelt `xtend-api-ready` mit `XTendApiReadyDetail`. Der Payload meldet, ob Toast, Alert, Dialog, Modal und Theme APIs initialisiert sind.
|
|
43
|
+
|
|
44
|
+
## Package Export
|
|
45
|
+
|
|
46
|
+
Der Package-Export `./api` besitzt ab `WP-TypeExports-03` die `types`-Condition `./api.d.ts`. `browser` und `default` zeigen weiter auf `./api.js`.
|
|
47
|
+
|
|
48
|
+
## Drift Gate
|
|
49
|
+
|
|
50
|
+
Der Gate `type-exports-api` prueft:
|
|
51
|
+
|
|
52
|
+
- `api.d.ts` existiert und ist im Package enthalten.
|
|
53
|
+
- `./api` zeigt per `types` auf `./api.d.ts`.
|
|
54
|
+
- `initXTendAPI`, `window.XTend.*`, Legacy-Aliase und `xtend-api-ready` sind in Runtime und Declaration sichtbar.
|
|
55
|
+
- `api.js` importiert keine Declaration-Datei.
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# XTend Builder Types
|
|
2
|
+
|
|
3
|
+
Status: `completed`
|
|
4
|
+
Workpackage: `WP-TypeExports-06`
|
|
5
|
+
Schema: `xtend.type-exports.builder-declarations.v1`
|
|
6
|
+
Gate: `node scripts/run_xtend_tests.js type-exports-builder --json`
|
|
7
|
+
|
|
8
|
+
## Scope
|
|
9
|
+
|
|
10
|
+
`WP-TypeExports-06` typisiert die Builder-, Scaffold- und Component-Lab-Programm-APIs, ohne die CLI oder die Generatoren nach TypeScript zu portieren.
|
|
11
|
+
|
|
12
|
+
Die gemeinsame Grundlage liegt in `./xtend-builder/builder-public-types.d.ts`:
|
|
13
|
+
|
|
14
|
+
- `XtendBuilderComponentInput`
|
|
15
|
+
- `XtendBuilderComponentPlan`
|
|
16
|
+
- `XtendBuilderComponentFilesResult`
|
|
17
|
+
- `XtendBuilderWorkflow`
|
|
18
|
+
- `XtendBuilderComponentLabPlan`
|
|
19
|
+
|
|
20
|
+
## Declaration Pack
|
|
21
|
+
|
|
22
|
+
Die Root- und Workflow-APIs sind ueber diese Facades stabilisiert:
|
|
23
|
+
|
|
24
|
+
- `./xtend-builder/scaffold.d.ts`
|
|
25
|
+
- `./xtend-builder/lib/cli.d.ts`
|
|
26
|
+
- `./xtend-builder/blueprints/component-blueprint.contract.d.ts`
|
|
27
|
+
- `./xtend-builder/generators/component-plan.d.ts`
|
|
28
|
+
- `./xtend-builder/generators/component-files.d.ts`
|
|
29
|
+
- `./xtend-builder/generators/registry.d.ts`
|
|
30
|
+
- `./xtend-builder/workflows/developer-workflow.d.ts`
|
|
31
|
+
|
|
32
|
+
Component-Lab- und Preview-Consumer erhalten eigene Contracts:
|
|
33
|
+
|
|
34
|
+
- `./xtend-builder/preview/component-preview.d.ts`
|
|
35
|
+
- `./xtend-builder/preview/component-lab.d.ts`
|
|
36
|
+
- `./xtend-builder/preview/component-lab-ux-inspector.d.ts`
|
|
37
|
+
|
|
38
|
+
Die bereits exportierten Typing- und UX-Contract-Module sind als schmale Facades abgebildet, darunter `component-shell-contract`, `component-styling-contract`, `component-network-contract`, `rmt-shell-authoring-contract`, `rmt-dsl-authoring-polish`, die Form-/Feedback-/Navigation-/Overlay-/Layout-UX Contracts und `component-ux-performance-contract`.
|
|
39
|
+
|
|
40
|
+
## Package Exports
|
|
41
|
+
|
|
42
|
+
Die Package-Exports `./builder`, `./builder/*` sowie die expliziten Builder-Subexports erhalten `types`-Conditions. Beispiel:
|
|
43
|
+
|
|
44
|
+
```json
|
|
45
|
+
"./builder": {
|
|
46
|
+
"types": "./xtend-builder/scaffold.d.ts",
|
|
47
|
+
"default": "./xtend-builder/scaffold.js"
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
`./builder/*` bleibt als generischer Anschluss fuer repo-lokale Builder-Module erhalten und zeigt auf `./xtend-builder/*.d.ts`.
|
|
52
|
+
|
|
53
|
+
## Boundary
|
|
54
|
+
|
|
55
|
+
Die Declarations bleiben `types-only-no-runtime-imports`. Sie importieren keine Builder-Runtime, keine Komponenten, keinen RMT-Kernel und keine Loader-/API-Laufzeit. Der lokale Gate vergleicht Runtime-Exports, Package-`types`-Conditions, vorhandene Declaration-Dateien und die gemeinsame Builder-Type-Basis.
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
# XTend Catalog Types
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.type-exports.catalog-declarations.v1`
|
|
4
|
+
- Workpackage: `WP-TypeExports-07`
|
|
5
|
+
- Gate: `node scripts/run_xtend_tests.js type-exports-catalog --json`
|
|
6
|
+
- Report: `.xtend-test-results/xtend-type-exports-catalog-report.json`
|
|
7
|
+
|
|
8
|
+
## Zweck
|
|
9
|
+
|
|
10
|
+
Catalog-Module beschreiben XTend-Gates, Handoffs, Release-Plaene und SurfaceManager-Runtime-Scopes als maschinenlesbare Plan-/Report-Strukturen. `WP-TypeExports-07` fuehrt dafuer ein gemeinsames Declaration-Pattern ein, damit neue Catalogs nicht pro Property neu typisiert werden muessen.
|
|
11
|
+
|
|
12
|
+
`./catalog/catalog-public-types.d.ts` definiert die gemeinsamen Basistypen `XtendCatalogPlan`, `XtendCatalogReport`, `XtendCatalogGate`, `XtendCatalogFactory`, `XtendCatalogValidator` und `XtendCatalogDiagnostic`. Die einzelnen Catalog-Facades exportieren die Runtime-Symbole des jeweiligen `.js`-Moduls und binden Funktionen wie `create*Plan`, `create*Report`, `create*Gate` und `validate*Plan` an diese Basistypen.
|
|
13
|
+
|
|
14
|
+
## Package Surface
|
|
15
|
+
|
|
16
|
+
Alle oeffentlichen `./catalog/*` Package-Exports besitzen nun eine eigene `types`-Condition. Beispiele:
|
|
17
|
+
|
|
18
|
+
```json
|
|
19
|
+
"./catalog/epic13-package-export-lock": {
|
|
20
|
+
"types": "./catalog/epic13-package-export-lock.d.ts",
|
|
21
|
+
"default": "./catalog/epic13-package-export-lock.js"
|
|
22
|
+
}
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Das Runtime-Ziel bleibt unveraendert. Die Declarations importieren keine Runtime-Dateien und sind als Consumer-Facades gedacht.
|
|
26
|
+
|
|
27
|
+
## Catalog Familien
|
|
28
|
+
|
|
29
|
+
Der Gate klassifiziert drei fuer XTend wichtige Catalog-Familien:
|
|
30
|
+
|
|
31
|
+
- SurfaceManager-Catalogs bleiben interne XTend-UI-Unterstuetzung und dokumentieren App-Shell-, Surface-, Routing- und Runtime-Handoffs.
|
|
32
|
+
- Epic-Catalogs beschreiben Workpackage-, Gate- und Contract-Plaene ueber mehrere Epics hinweg.
|
|
33
|
+
- Release-Catalogs bündeln Handoff-, Readiness-, Export-Lock- und Migration-Entscheidungen.
|
|
34
|
+
|
|
35
|
+
Die SurfaceManager-Catalogs ersetzen keine Fabric-, RMT-Kernel- oder Runtime-Schicht. Sie bleiben deklarative Plaene und Reports, die UI-Surfaces unterstuetzen.
|
|
36
|
+
|
|
37
|
+
## Drift Gate
|
|
38
|
+
|
|
39
|
+
```bash
|
|
40
|
+
node scripts/run_xtend_tests.js type-exports-catalog --json
|
|
41
|
+
npm run test:type-exports-catalog
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Der Gate prueft, dass Package-Catalogs ihre `types`-Conditions besitzen, dass alle Catalog-Runtime-Exports in den `.d.ts`-Facades auftauchen, dass SurfaceManager-/Epic-/Release-Catalogs klassifiziert sind und dass keine Runtime-Dateien Declaration-Imports erhalten.
|