@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,51 @@
|
|
|
1
|
+
const fs = require('fs');
|
|
2
|
+
const path = require('path');
|
|
3
|
+
const {
|
|
4
|
+
getTemplateForArtifact
|
|
5
|
+
} = require('./registry');
|
|
6
|
+
|
|
7
|
+
const rootDir = path.resolve(__dirname, '..', '..');
|
|
8
|
+
|
|
9
|
+
function getTemplateAbsolutePath(template) {
|
|
10
|
+
return path.join(rootDir, template.path);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function renderTemplateString(template, values) {
|
|
14
|
+
return String(template).replace(/\{\{([a-zA-Z0-9_]+)\}\}/g, (match, key) => {
|
|
15
|
+
if (Object.prototype.hasOwnProperty.call(values, key)) {
|
|
16
|
+
return String(values[key]);
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
return match;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
function renderTemplateForArtifact(artifact, values) {
|
|
24
|
+
const template = getTemplateForArtifact(artifact);
|
|
25
|
+
if (!template) {
|
|
26
|
+
return {
|
|
27
|
+
ok: false,
|
|
28
|
+
error: `No template registered for artifact "${artifact}".`
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
const absolutePath = getTemplateAbsolutePath(template);
|
|
33
|
+
if (!fs.existsSync(absolutePath)) {
|
|
34
|
+
return {
|
|
35
|
+
ok: false,
|
|
36
|
+
error: `Template file missing: ${template.path}`,
|
|
37
|
+
template
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return {
|
|
42
|
+
ok: true,
|
|
43
|
+
template,
|
|
44
|
+
content: renderTemplateString(fs.readFileSync(absolutePath, 'utf8'), values)
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
module.exports = {
|
|
49
|
+
renderTemplateForArtifact,
|
|
50
|
+
renderTemplateString
|
|
51
|
+
};
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { XtendBuilderTemplateDefinition, XtendBuilderTemplateRegistry } from '../builder-public-types';
|
|
2
|
+
|
|
3
|
+
export declare const TEMPLATE_REGISTRY: XtendBuilderTemplateDefinition[];
|
|
4
|
+
export declare const TEMPLATE_REGISTRY_SCHEMA: string;
|
|
5
|
+
export declare function getTemplateForArtifact(artifactId: string): XtendBuilderTemplateDefinition | null;
|
|
6
|
+
export declare function getTemplateRegistry(): XtendBuilderTemplateRegistry;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
const TEMPLATE_REGISTRY_SCHEMA = 'xtend.scaffold.template-registry.v1';
|
|
2
|
+
|
|
3
|
+
const TEMPLATE_REGISTRY = [
|
|
4
|
+
{
|
|
5
|
+
id: 'component.source',
|
|
6
|
+
artifact: 'component',
|
|
7
|
+
path: 'xtend-builder/templates/component/source.template.js',
|
|
8
|
+
status: 'implemented-WP-E03-07',
|
|
9
|
+
purpose: 'Productive component source template for scaffold previews.'
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
id: 'component.docs',
|
|
13
|
+
artifact: 'docs',
|
|
14
|
+
path: 'xtend-builder/templates/component/docs.template.md',
|
|
15
|
+
status: 'implemented-WP-E03-07',
|
|
16
|
+
purpose: 'Public component documentation template.'
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: 'component.tests',
|
|
20
|
+
artifact: 'tests',
|
|
21
|
+
path: 'xtend-builder/templates/component/component-suite.template.js',
|
|
22
|
+
status: 'implemented-WP-E03-07',
|
|
23
|
+
purpose: 'Component-level test suite template with real assertions.'
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
id: 'component.fixture',
|
|
27
|
+
artifact: 'fixtures',
|
|
28
|
+
path: 'xtend-builder/templates/component/fixture.template.html',
|
|
29
|
+
status: 'implemented-WP-E03-07',
|
|
30
|
+
purpose: 'Repo-local component fixture template.'
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
id: 'component.types',
|
|
34
|
+
artifact: 'types',
|
|
35
|
+
path: 'xtend-builder/templates/component/types.template.d.ts',
|
|
36
|
+
status: 'implemented-WP-E03-09',
|
|
37
|
+
purpose: 'TypeScript public API and XTendRMT adapter attachment template.'
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
id: 'component.manifest-plan',
|
|
41
|
+
artifact: 'manifest',
|
|
42
|
+
path: 'xtend-builder/templates/component/manifest-plan.template.json',
|
|
43
|
+
status: 'implemented-WP-E03-07',
|
|
44
|
+
purpose: 'Manifest patch-plan template.'
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
id: 'component.demo-plan',
|
|
48
|
+
artifact: 'demo',
|
|
49
|
+
path: 'xtend-builder/templates/component/demo-plan.template.md',
|
|
50
|
+
status: 'implemented-WP-E03-10',
|
|
51
|
+
purpose: 'Preview reference-plan template for local reference-gate registration.'
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
id: 'component.ts-source',
|
|
55
|
+
artifact: 'ts-source',
|
|
56
|
+
path: 'xtend-builder/templates/component/source.template.ts',
|
|
57
|
+
status: 'implemented-WP-E10-07',
|
|
58
|
+
purpose: 'TypeScript-first component source template with RMT, Fabric, A11y and Performance metadata.'
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
id: 'component.ts-contract',
|
|
62
|
+
artifact: 'ts-contract',
|
|
63
|
+
path: 'xtend-builder/templates/component/contract.template.ts',
|
|
64
|
+
status: 'implemented-WP-E10-07',
|
|
65
|
+
purpose: 'Component Contract v2 source template.'
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
id: 'component.ts-rmt',
|
|
69
|
+
artifact: 'ts-rmt',
|
|
70
|
+
path: 'xtend-builder/templates/component/rmt.template.ts',
|
|
71
|
+
status: 'implemented-WP-E10-07',
|
|
72
|
+
purpose: 'RMT component metadata template for xtend.component adapter authoring.'
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
id: 'component.ts-a11y',
|
|
76
|
+
artifact: 'ts-a11y',
|
|
77
|
+
path: 'xtend-builder/templates/component/a11y.template.ts',
|
|
78
|
+
status: 'implemented-WP-E10-07',
|
|
79
|
+
purpose: 'Typed A11y profile template for new TypeScript components.'
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
id: 'component.ts-performance',
|
|
83
|
+
artifact: 'ts-performance',
|
|
84
|
+
path: 'xtend-builder/templates/component/performance.template.ts',
|
|
85
|
+
status: 'implemented-WP-E10-07',
|
|
86
|
+
purpose: 'Typed Performance profile template for new TypeScript components.'
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
id: 'component.ts-fixture',
|
|
90
|
+
artifact: 'ts-fixture',
|
|
91
|
+
path: 'xtend-builder/templates/component/fixture-data.template.ts',
|
|
92
|
+
status: 'implemented-WP-E10-07',
|
|
93
|
+
purpose: 'Typed fixture-data template for Component Lab, tests and RMT previews.'
|
|
94
|
+
}
|
|
95
|
+
];
|
|
96
|
+
|
|
97
|
+
function clone(value) {
|
|
98
|
+
return JSON.parse(JSON.stringify(value));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
function getTemplateRegistry() {
|
|
102
|
+
return {
|
|
103
|
+
schema: TEMPLATE_REGISTRY_SCHEMA,
|
|
104
|
+
root: 'xtend-builder/templates/',
|
|
105
|
+
templates: clone(TEMPLATE_REGISTRY)
|
|
106
|
+
};
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
function getTemplateForArtifact(artifact) {
|
|
110
|
+
const template = TEMPLATE_REGISTRY.find((entry) => entry.artifact === artifact);
|
|
111
|
+
return template ? clone(template) : null;
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
module.exports = {
|
|
115
|
+
TEMPLATE_REGISTRY,
|
|
116
|
+
TEMPLATE_REGISTRY_SCHEMA,
|
|
117
|
+
getTemplateForArtifact,
|
|
118
|
+
getTemplateRegistry
|
|
119
|
+
};
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
# XTend-Scaffold Typing
|
|
2
|
+
|
|
3
|
+
Dieser Bereich enthaelt ab `WP-E03-09` den Typisierungs-Contract fuer scaffolded Komponenten.
|
|
4
|
+
|
|
5
|
+
`xtend-builder/typing/component-types.js` stellt das Schema `xtend.scaffold.component-typing.v1` bereit. Das Modul erzeugt keine Runtime und schreibt keine Dateien. Es leitet aus Component-Plan und Feature-Wiring einen reviewbaren Contract fuer `.d.ts`-Artefakte ab.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
node xtend-builder/scaffold.js typing --tag x-example --profile display --feature state --json
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Contract
|
|
12
|
+
|
|
13
|
+
Der Typing-Contract umfasst:
|
|
14
|
+
|
|
15
|
+
- Zielpfad `components/<tag>.d.ts`
|
|
16
|
+
- Event-Name-Union und Event-Detail-Interface
|
|
17
|
+
- Attribute-Map fuer oeffentliche Attribute
|
|
18
|
+
- Property-Map fuer spaetere explizite Properties
|
|
19
|
+
- HTMLElementTagNameMap-Erweiterung
|
|
20
|
+
- ab Epic 10 / `WP-E10-03` den Component Contract v2 `xtend.component.contract.v2` fuer TypeScript Source, Public API, RMT, Fabric, Telemetry, Lanes, A11y, Performance, Tests, Docs und Maturity
|
|
21
|
+
- Scaffold-Wiring-Interface fuer State-, Event- und API-Signale
|
|
22
|
+
- vorbereitete XTendRMT-Anschluss-Typen fuer `xtend.component` und `xtend.xrouter`
|
|
23
|
+
- ab Epic 04 / `WP-E04-03` den Component Contract `xtend.rmt.component-contract.v1` mit Manifest Lookup, Attributes, Hydration, Diagnostics und Kernel-Grenzen
|
|
24
|
+
- ab Epic 04 / `WP-E04-04` den Template Authoring Contract `xtend.rmt.template-authoring.v1` mit Template-Refs, Component-Refs, Slots, Events, Hydration und Adapter-Grenzen
|
|
25
|
+
- ab Epic 04 / `WP-E04-05` den Root Handshake Contract `xtend.rmt.root-handshake.v1` mit Root-Refs, Lifecycle-Phasen, Scheduler-Endpoint-Hints und Digital-Twin-State-Policy
|
|
26
|
+
- ab Epic 04 / `WP-E04-06` den Host Capability Contract `xtend.rmt.host-capabilities.v1` fuer Manifest, Custom Elements, `xstate`, Hydration, Scheduler-Endpoints, Theme, API, Router und Diagnostics
|
|
27
|
+
- ab Epic 04 / `WP-E04-07` das RMT Compatibility Binding `xtend.scaffold.rmt-compatibility-binding.v1`, das Typing, Manifest-Plan, Preview-Plan und Extension-Punkte zusammenfuehrt
|
|
28
|
+
- ab Epic 04 / `WP-E04-08` den dedizierten Gate `node scripts/run_xtend_tests.js rmt-compatibility --json`
|
|
29
|
+
|
|
30
|
+
## XTendRMT-Grenze
|
|
31
|
+
|
|
32
|
+
Der RMT-Anschluss ist ein Typ- und Adapter-Contract. Er implementiert keine Bridge, erweitert keinen RMT-Kernel und schreibt keine `.rmt` Dateien. Ab `WP-E04-03` beschreibt er explizit, welche Felder der neutrale RMT Component Record besitzt und welche Arbeit beim XTend Host Adapter bleibt. Ab `WP-E04-04` beschreibt er zusaetzlich, wie RMT Templates XTend-Komponenten ueber `xtend.template`, `componentRef`, `slots` und `events` authoren koennen. Ab `WP-E04-05` beschreibt er, wie der RMT Scheduler Root-Phasen plant, ohne Custom-Element-Lifecycle, `xstate` oder Host Cleanup selbst auszufuehren. Ab `WP-E04-06` beschreibt er, welche XTend Host Capabilities als Adapterdaten verhandelbar sind. Ab `WP-E04-07` bindet er diese Vertrage in einen gemeinsamen Dry-Run-Contract fuer Typing, Manifest, Preview und Extensions. Ab `WP-E04-08` prueft `rmt-compatibility` diesen Contract als eigenen Runner-Gate. Die produktive Bridge bleibt Epic 05 vorbehalten.
|
|
33
|
+
|
|
34
|
+
## Component Contract v2
|
|
35
|
+
|
|
36
|
+
`component-contract-v2.js` stellt ab `WP-E10-03` den Contract `xtend.component.contract.v2` bereit. Das Modul erzeugt einen reviewbaren Contract fuer neue TypeScript-first Komponenten und bietet einen Validator fuer Pflichtdomains, ESM-Runtime, RMT-Kernel-Boundary und Public-API-Form.
|
|
37
|
+
|
|
38
|
+
```bash
|
|
39
|
+
node scripts/run_xtend_tests.js component-contract-v2 --json
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
Der Contract ist generator-only. Er fuehrt keine Runtime-Imports, keine XTendRMT-Kernel-Imports und keine produktiven Writes aus.
|
|
43
|
+
|
|
44
|
+
## Component Network Contract
|
|
45
|
+
|
|
46
|
+
`component-network-contract.js` stellt ab `WP-E11-06` den Contract `xtend.component.network.v1` bereit. Das Modul modelliert Events, Commands, Contexts, Forms, Validation, Feedback, Overlays, Routing, Theme, State, RMT Authoring und Fabric Diagnostics fuer vernetzbare Enterprise-Komponenten.
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
node scripts/run_xtend_tests.js component-network-contract --json
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Der Contract ist generator-only. Er beschreibt Adapterdaten fuer RMT ueber `xtend.rmt.component-network-authoring.v1`, importiert aber keine XTend-Typen in den RMT Kernel.
|
|
53
|
+
|
|
54
|
+
## RMT Shell Authoring Contract
|
|
55
|
+
|
|
56
|
+
`rmt-shell-authoring-contract.js` stellt ab `WP-E11-07` den Contract `xtend.rmt.shell-authoring.v1` bereit. Das Modul fuehrt Shell, Styling, Runtime-A11y, UX-Performance und Component Network in ein RMT-first Authoring-Modell fuer sichtbare Component UX zusammen.
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
node scripts/run_xtend_tests.js rmt-shell-authoring-ux --json
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Der Contract ist generator-only. RMT deklariert `shell`, `style`, `a11y`, `commands`, `events`, `variants`, `density`, `hydration`, `schedule` und `fabric`; XTend-Komponentenausfuehrung, XRouter, Fabric und DOM-Materialisierung bleiben Host-Adapterarbeit.
|
|
63
|
+
|
|
64
|
+
## RMT DSL Authoring Polish
|
|
65
|
+
|
|
66
|
+
`rmt-dsl-authoring-polish.js` stellt ab `WP-E12-13` den Contract `xtend.rmt.dsl-authoring-polish.v1` bereit. Das Modul beschreibt Alias-Sugar, Diagnostik, Token Bridge und XRouter-/XLink-Routing-Sugar fuer Component Shells, damit XTendRMT upstream die DSL benutzerfreundlicher machen kann.
|
|
67
|
+
|
|
68
|
+
```bash
|
|
69
|
+
node scripts/run_xtend_tests.js rmt-dsl-authoring-polish --json
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Der Contract ist generator-only und upstream-orientiert. Er normalisiert keine produktiven `.rmt` Dateien selbst und haelt `no-rmt-kernel-import-of-xtend-types` als harte Grenze sichtbar.
|
|
73
|
+
|
|
74
|
+
## Form Controls UX Contract
|
|
75
|
+
|
|
76
|
+
`form-controls-ux-contract.js` stellt ab `WP-E11-08` den Contract `xtend.component.form-controls-ux.v1` bereit. Das Modul beschreibt die UX-Reife der Form-Control-Familie, das Runtime-Profil `xtendFormControlUxProfile`, RMT Shell-first Authoring, Validation, A11y, Fabric-Lanes und die Zielkomponenten `x-input`, `x-select`, `x-checkbox`, `x-radio`, `x-textarea`, `x-calendar`, `x-form` und `x-writer`.
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
node scripts/run_xtend_tests.js form-controls-ux --json
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Der Contract ist generator-only. Die produktive UI bleibt in den Komponenten; RMT beschreibt Shell, Events, Commands und Schedules ueber `xtend.component`.
|
|
83
|
+
|
|
84
|
+
## Feedback Status UX Contract
|
|
85
|
+
|
|
86
|
+
`feedback-status-ux-contract.js` stellt ab `WP-E11-09` den Contract `xtend.component.feedback-status-ux.v1` bereit. Das Modul beschreibt die UX-Reife der Feedback- und Status-Familie, das Runtime-Profil `xtendFeedbackStatusUxProfile`, RMT Shell-first Authoring, Live Regions, Dismiss/Timeout, Motion Safety, Fabric-Lanes und die Zielkomponenten `x-alert`, `x-toast`, `x-status`, `x-progress` und `x-spinner`.
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
node scripts/run_xtend_tests.js feedback-status-ux --json
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Der Contract ist generator-only. RMT beschreibt Shell, A11y, Events, Commands und Schedules ueber `xtend.component`; XTend rendert und hydriert die Custom Elements im Host.
|
|
93
|
+
|
|
94
|
+
## Navigation Routing UX Contract
|
|
95
|
+
|
|
96
|
+
`navigation-routing-ux-contract.js` stellt ab `WP-E11-10` den Contract `xtend.component.navigation-routing-ux.v1` bereit. Das Modul beschreibt die UX-Reife der Navigation- und Routing-Familie, das Runtime-Profil `xtendNavigationRoutingUxProfile`, RMT Shell-first Authoring, Active State, Focus Restore, Route Announcements, Keyboard Navigation, Fabric-Lanes und die Zielkomponenten `x-router` und `x-link`.
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
node scripts/run_xtend_tests.js navigation-routing-ux --json
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Der Contract ist generator-only. RMT beschreibt Route Context, Links, Events, Commands und Schedules ueber `xtend.xrouter` und `xtend.component`; XTend rendert, fokussiert, announced und hydriert die Custom Elements im Host.
|
|
103
|
+
|
|
104
|
+
## Overlay Interaction UX Contract
|
|
105
|
+
|
|
106
|
+
`overlay-interaction-ux-contract.js` stellt ab `WP-E11-11` den Contract `xtend.component.overlay-interaction-ux.v1` bereit. Das Modul beschreibt die UX-Reife der Overlay- und Interaction-Familie, das Runtime-Profil `xtendOverlayInteractionUxProfile`, RMT Shell-first Authoring, Overlay Stack, Focus Trap, Inert, Scroll Lock, Escape, Portal-Semantik, Fabric-Lanes und die Zielkomponenten `x-modal`, `x-dialog`, `x-popover`, `x-tooltip` und `x-drawer`.
|
|
107
|
+
|
|
108
|
+
```bash
|
|
109
|
+
node scripts/run_xtend_tests.js overlay-interaction-ux --json
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Der Contract ist generator-only. RMT beschreibt Overlay-Shells, Events, Commands und Schedules ueber `xtend.component` und `rmt.overlay-stack`; XTend rendert, trappt Fokus, verwaltet Rueckfokus und DOM-nahe Inert-/Scroll-Lock-Regeln im Host.
|
|
113
|
+
|
|
114
|
+
## Layout Display Media UX Contract
|
|
115
|
+
|
|
116
|
+
`layout-display-media-ux-contract.js` stellt ab `WP-E11-12` den Contract `xtend.component.layout-display-media-ux.v1` bereit. Das Modul beschreibt die UX-Reife der Layout-, Display- und Media-Familie, das Runtime-Profil `xtendLayoutDisplayMediaUxProfile`, RMT Shell-first Authoring, Responsive Slots, CSS Parts, Lazy Media, Fabric-Lanes und die Zielkomponenten `x-section`, `x-cards`, `x-header`, `x-footer`, `x-hero`, `x-type`, `x-code`, `x-masonry`, `x-summary`, `x-player` und `x-lightbox`.
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
node scripts/run_xtend_tests.js layout-display-media-ux --json
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Der Contract ist generator-only. RMT beschreibt Shell, Layout, Media-Lifecycle, Events, Commands und Schedules ueber `xtend.component`, `rmt.layout-host` und `rmt.media-host`; XTend rendert, misst, hydriert und bedient Media im Host.
|
|
123
|
+
|
|
124
|
+
## Ausnahmeprozess
|
|
125
|
+
|
|
126
|
+
Typfreie Komponenten sind nur mit dokumentierter Ausnahme erlaubt. Verboten bleiben:
|
|
127
|
+
|
|
128
|
+
- undokumentierte Typ-Luecken
|
|
129
|
+
- implizites `any` fuer oeffentliche APIs
|
|
130
|
+
- Runtime-Imports aus `.d.ts` Artefakten
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { XtendBuilderComponentInput, XtendBuilderOptions, XtendBuilderRecord, XtendBuilderReport } from '../builder-public-types';
|
|
2
|
+
|
|
3
|
+
export declare const COMPONENT_CONTRACT_V2_SCHEMA: string;
|
|
4
|
+
export declare const COMPONENT_CONTRACT_REPORT_V2_SCHEMA: string;
|
|
5
|
+
export declare const COMPONENT_CONTRACT_V2_WORKPACKAGE: string;
|
|
6
|
+
export declare const COMPONENT_CONTRACT_V2_DOC: string;
|
|
7
|
+
export declare const TYPESCRIPT_SOURCE_STRATEGY_SCHEMA: string;
|
|
8
|
+
export declare const RMT_COMPONENT_CONTRACT_SCHEMA: string;
|
|
9
|
+
export declare const FABRIC_BOUNDARY_SCHEMA: string;
|
|
10
|
+
export declare const TELEMETRY_SNAPSHOT_SCHEMA: string;
|
|
11
|
+
export declare const CONTRACT_V2_REQUIRED_DOMAINS: string[];
|
|
12
|
+
export declare const CONTRACT_V2_LIFECYCLE_OPERATIONS: string[];
|
|
13
|
+
export declare const CONTRACT_V2_LANE_PRECEDENCE: string[];
|
|
14
|
+
export declare function createComponentContractV2(input?: XtendBuilderComponentInput, options?: XtendBuilderOptions): XtendBuilderRecord;
|
|
15
|
+
export declare function validateComponentContractV2(contract: unknown): XtendBuilderReport<XtendBuilderRecord>;
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
const COMPONENT_CONTRACT_V2_SCHEMA = 'xtend.component.contract.v2';
|
|
2
|
+
const COMPONENT_CONTRACT_REPORT_V2_SCHEMA = 'xtend.component.contract-report.v2';
|
|
3
|
+
const COMPONENT_CONTRACT_V2_WORKPACKAGE = 'WP-E10-03';
|
|
4
|
+
const COMPONENT_CONTRACT_V2_DOC = 'development/XTend-Component-Contract-v2.md';
|
|
5
|
+
const TYPESCRIPT_SOURCE_STRATEGY_SCHEMA = 'xtend.typescript.component-source-strategy.v1';
|
|
6
|
+
const RMT_COMPONENT_CONTRACT_SCHEMA = 'xtend.rmt.component-contract.v1';
|
|
7
|
+
const FABRIC_BOUNDARY_SCHEMA = 'xtend.component.fabric-boundary.v2';
|
|
8
|
+
const A11Y_COMPONENT_CONTRACT_SCHEMA = 'xtend.a11y.component-contract.v1';
|
|
9
|
+
const PERFORMANCE_COMPONENT_PROFILE_SCHEMA = 'xtend.performance.component-profile.v1';
|
|
10
|
+
const TELEMETRY_SNAPSHOT_SCHEMA = 'xtend.fabric.telemetry-snapshot.v1';
|
|
11
|
+
|
|
12
|
+
const CONTRACT_V2_REQUIRED_DOMAINS = [
|
|
13
|
+
'source',
|
|
14
|
+
'runtime',
|
|
15
|
+
'publicApi',
|
|
16
|
+
'rmt',
|
|
17
|
+
'fabric',
|
|
18
|
+
'telemetry',
|
|
19
|
+
'lanes',
|
|
20
|
+
'a11y',
|
|
21
|
+
'performance',
|
|
22
|
+
'tests',
|
|
23
|
+
'docs',
|
|
24
|
+
'maturity'
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
const CONTRACT_V2_LIFECYCLE_OPERATIONS = [
|
|
28
|
+
'mount',
|
|
29
|
+
'hydrate',
|
|
30
|
+
'render',
|
|
31
|
+
'update',
|
|
32
|
+
'event',
|
|
33
|
+
'error',
|
|
34
|
+
'unmount'
|
|
35
|
+
];
|
|
36
|
+
|
|
37
|
+
const CONTRACT_V2_LANE_PRECEDENCE = [
|
|
38
|
+
'rmt.schedule-record',
|
|
39
|
+
'rmt.component-metadata',
|
|
40
|
+
'fabric.runtime-override',
|
|
41
|
+
'component.static-contract',
|
|
42
|
+
'scaffold.blueprint-default'
|
|
43
|
+
];
|
|
44
|
+
|
|
45
|
+
function toBasename(tag) {
|
|
46
|
+
return String(tag || 'x-example').replace(/-/g, '');
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
function toClassName(tag) {
|
|
50
|
+
return String(tag || 'x-example')
|
|
51
|
+
.split('-')
|
|
52
|
+
.filter(Boolean)
|
|
53
|
+
.map((part) => part.charAt(0).toUpperCase() + part.slice(1))
|
|
54
|
+
.join('');
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
function normalizeArray(value) {
|
|
58
|
+
return Array.isArray(value) ? value.slice() : [];
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
function createAttributeContract(attributes = []) {
|
|
62
|
+
const normalized = attributes.length > 0 ? attributes : ['variant'];
|
|
63
|
+
return normalized.map((name) => ({
|
|
64
|
+
name,
|
|
65
|
+
type: 'string | null',
|
|
66
|
+
reflects: true,
|
|
67
|
+
required: false,
|
|
68
|
+
source: 'observedAttributes'
|
|
69
|
+
}));
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
function createEventContract(events = [], className) {
|
|
73
|
+
return normalizeArray(events).map((name) => ({
|
|
74
|
+
name,
|
|
75
|
+
typeName: `${className}EventDetail`,
|
|
76
|
+
eventType: `CustomEvent<${className}EventDetail>`,
|
|
77
|
+
bubbles: true,
|
|
78
|
+
composed: true,
|
|
79
|
+
detailShape: {
|
|
80
|
+
id: 'string',
|
|
81
|
+
source: 'string',
|
|
82
|
+
value: 'unknown'
|
|
83
|
+
}
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
function createComponentContractV2(input = {}, options = {}) {
|
|
88
|
+
const tag = input.tag || 'x-example';
|
|
89
|
+
const basename = input.basename || toBasename(tag);
|
|
90
|
+
const className = input.className || toClassName(tag);
|
|
91
|
+
const sourceRoot = options.sourceRoot || 'src/components/';
|
|
92
|
+
const runtimeOutputRoot = options.runtimeOutputRoot || 'components/';
|
|
93
|
+
const declarationOutputRoot = options.declarationOutputRoot || 'components/';
|
|
94
|
+
const maturity = input.maturity || 'preview';
|
|
95
|
+
const sourceState = input.sourceState || (input.typescript === false ? 'js-legacy' : 'ts-source');
|
|
96
|
+
const attributes = createAttributeContract(normalizeArray(input.attributes));
|
|
97
|
+
const events = createEventContract(normalizeArray(input.events), className);
|
|
98
|
+
const slots = normalizeArray(input.slots).length > 0
|
|
99
|
+
? normalizeArray(input.slots).map((name) => ({ name, required: false, content: 'RmtTemplateRef | string | HTMLElement' }))
|
|
100
|
+
: [{ name: 'default', required: false, content: 'RmtTemplateRef | string | HTMLElement' }];
|
|
101
|
+
|
|
102
|
+
return {
|
|
103
|
+
schema: COMPONENT_CONTRACT_V2_SCHEMA,
|
|
104
|
+
status: 'contract-draft',
|
|
105
|
+
workpackage: COMPONENT_CONTRACT_V2_WORKPACKAGE,
|
|
106
|
+
tag,
|
|
107
|
+
className,
|
|
108
|
+
maturity,
|
|
109
|
+
source: {
|
|
110
|
+
strategy: TYPESCRIPT_SOURCE_STRATEGY_SCHEMA,
|
|
111
|
+
state: sourceState,
|
|
112
|
+
sourceRoot,
|
|
113
|
+
sourcePath: `${sourceRoot}${tag}/${tag}.ts`,
|
|
114
|
+
contractPath: `${sourceRoot}${tag}/${tag}.contract.ts`,
|
|
115
|
+
rmtMetadataPath: `${sourceRoot}${tag}/${tag}.rmt.ts`,
|
|
116
|
+
a11yProfilePath: `${sourceRoot}${tag}/${tag}.a11y.ts`,
|
|
117
|
+
performanceProfilePath: `${sourceRoot}${tag}/${tag}.performance.ts`,
|
|
118
|
+
fixtureDataPath: `${sourceRoot}${tag}/${tag}.fixture.ts`,
|
|
119
|
+
migrationAllowedStates: ['js-legacy', 'ts-planned', 'ts-source', 'ts-generated-esm', 'contract-only']
|
|
120
|
+
},
|
|
121
|
+
runtime: {
|
|
122
|
+
format: 'esm',
|
|
123
|
+
loader: 'xtend-loader.js',
|
|
124
|
+
manifest: 'components/manifest.json',
|
|
125
|
+
artifact: `${runtimeOutputRoot}${basename}.js`,
|
|
126
|
+
declaration: `${declarationOutputRoot}${basename}.d.ts`,
|
|
127
|
+
localOnly: true,
|
|
128
|
+
cdnAllowed: false,
|
|
129
|
+
newRuntimeDependenciesAllowed: false
|
|
130
|
+
},
|
|
131
|
+
publicApi: {
|
|
132
|
+
attributes,
|
|
133
|
+
properties: normalizeArray(input.properties),
|
|
134
|
+
slots,
|
|
135
|
+
events,
|
|
136
|
+
methods: normalizeArray(input.methods),
|
|
137
|
+
state: normalizeArray(input.state),
|
|
138
|
+
theme: normalizeArray(input.theme),
|
|
139
|
+
typeExports: [`${className}Element`, `${className}EventName`, `${className}EventDetail`]
|
|
140
|
+
},
|
|
141
|
+
rmt: {
|
|
142
|
+
schema: RMT_COMPONENT_CONTRACT_SCHEMA,
|
|
143
|
+
adapter: 'xtend.component',
|
|
144
|
+
componentRecordKind: 'custom_element',
|
|
145
|
+
fields: ['id', 'kind', 'adapter', 'tag', 'props', 'attributes', 'slots', 'events', 'schedule', 'hydration', 'fabric', 'a11y', 'performance'],
|
|
146
|
+
routeAdapter: input.routeAdapter || null,
|
|
147
|
+
kernelBoundary: 'no-rmt-kernel-import-of-xtend-types'
|
|
148
|
+
},
|
|
149
|
+
fabric: {
|
|
150
|
+
schema: FABRIC_BOUNDARY_SCHEMA,
|
|
151
|
+
api: '@xtend-fabric',
|
|
152
|
+
operations: CONTRACT_V2_LIFECYCLE_OPERATIONS.slice(),
|
|
153
|
+
boundaryRequired: true,
|
|
154
|
+
diagnosticFields: ['component', 'phase', 'fiberId', 'lane', 'severity', 'cause']
|
|
155
|
+
},
|
|
156
|
+
telemetry: {
|
|
157
|
+
schema: TELEMETRY_SNAPSHOT_SCHEMA,
|
|
158
|
+
requiredOperations: CONTRACT_V2_LIFECYCLE_OPERATIONS.slice(),
|
|
159
|
+
requiredFields: ['componentId', 'routeId', 'rmtId', 'scheduleId', 'fiberId', 'lane', 'durationMs', 'status'],
|
|
160
|
+
backpressureAware: true
|
|
161
|
+
},
|
|
162
|
+
lanes: {
|
|
163
|
+
precedence: CONTRACT_V2_LANE_PRECEDENCE.slice(),
|
|
164
|
+
defaultLane: input.defaultLane || 'visible',
|
|
165
|
+
diagnosticsOnConflict: true
|
|
166
|
+
},
|
|
167
|
+
a11y: {
|
|
168
|
+
schema: A11Y_COMPONENT_CONTRACT_SCHEMA,
|
|
169
|
+
requiredProfile: true,
|
|
170
|
+
requiredFields: ['role', 'accessibleName', 'focusStrategy', 'keyboard', 'ariaStates', 'screenreader', 'motion', 'contrast']
|
|
171
|
+
},
|
|
172
|
+
performance: {
|
|
173
|
+
schema: PERFORMANCE_COMPONENT_PROFILE_SCHEMA,
|
|
174
|
+
budgetMatrix: 'development/XTend-Performance-Budget-Matrix.md',
|
|
175
|
+
requiredProfile: true,
|
|
176
|
+
requiredFields: ['budgetClass', 'lane', 'hydrationPolicy', 'criticalMeasurements', 'cleanup']
|
|
177
|
+
},
|
|
178
|
+
tests: {
|
|
179
|
+
requiredSuites: ['components', 'a11y-hydration', 'rmt-compatibility', 'references'],
|
|
180
|
+
futureSuites: ['component-contract-v2', 'performance-regression', 'browser'],
|
|
181
|
+
fixtureRequired: true
|
|
182
|
+
},
|
|
183
|
+
docs: {
|
|
184
|
+
componentGuide: `docs/components/${tag.replace(/^x-/, '')}.md`,
|
|
185
|
+
requiredSections: ['API', 'Events', 'RMT Authoring', 'Fabric', 'A11y', 'Performance']
|
|
186
|
+
},
|
|
187
|
+
maturity: {
|
|
188
|
+
model: 'xtend.component.maturity-model.v2',
|
|
189
|
+
target: maturity,
|
|
190
|
+
stableRequires: ['publicApi', 'rmt', 'fabric', 'telemetry', 'lanes', 'a11y', 'performance', 'tests', 'docs']
|
|
191
|
+
}
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
function validateComponentContractV2(contract = {}) {
|
|
196
|
+
const errors = [];
|
|
197
|
+
|
|
198
|
+
if (contract.schema !== COMPONENT_CONTRACT_V2_SCHEMA) {
|
|
199
|
+
errors.push(`schema must be ${COMPONENT_CONTRACT_V2_SCHEMA}`);
|
|
200
|
+
}
|
|
201
|
+
if (!/^x-[a-z0-9]+(?:-[a-z0-9]+)*$/.test(String(contract.tag || ''))) {
|
|
202
|
+
errors.push('tag must be a valid XTend custom element tag');
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
CONTRACT_V2_REQUIRED_DOMAINS.forEach((domain) => {
|
|
206
|
+
if (!contract[domain]) {
|
|
207
|
+
errors.push(`missing domain: ${domain}`);
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
|
|
211
|
+
if (contract.runtime && contract.runtime.format !== 'esm') {
|
|
212
|
+
errors.push('runtime.format must be esm');
|
|
213
|
+
}
|
|
214
|
+
if (contract.runtime && contract.runtime.cdnAllowed !== false) {
|
|
215
|
+
errors.push('runtime.cdnAllowed must be false');
|
|
216
|
+
}
|
|
217
|
+
if (contract.rmt && contract.rmt.kernelBoundary !== 'no-rmt-kernel-import-of-xtend-types') {
|
|
218
|
+
errors.push('rmt.kernelBoundary must keep the RMT kernel decoupled from XTend types');
|
|
219
|
+
}
|
|
220
|
+
if (contract.fabric && !Array.isArray(contract.fabric.operations)) {
|
|
221
|
+
errors.push('fabric.operations must be an array');
|
|
222
|
+
}
|
|
223
|
+
if (contract.publicApi && !Array.isArray(contract.publicApi.events)) {
|
|
224
|
+
errors.push('publicApi.events must be an array');
|
|
225
|
+
}
|
|
226
|
+
|
|
227
|
+
return {
|
|
228
|
+
schema: COMPONENT_CONTRACT_REPORT_V2_SCHEMA,
|
|
229
|
+
ok: errors.length === 0,
|
|
230
|
+
errors
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
|
|
234
|
+
module.exports = {
|
|
235
|
+
COMPONENT_CONTRACT_V2_SCHEMA,
|
|
236
|
+
COMPONENT_CONTRACT_REPORT_V2_SCHEMA,
|
|
237
|
+
COMPONENT_CONTRACT_V2_WORKPACKAGE,
|
|
238
|
+
COMPONENT_CONTRACT_V2_DOC,
|
|
239
|
+
TYPESCRIPT_SOURCE_STRATEGY_SCHEMA,
|
|
240
|
+
RMT_COMPONENT_CONTRACT_SCHEMA,
|
|
241
|
+
FABRIC_BOUNDARY_SCHEMA,
|
|
242
|
+
TELEMETRY_SNAPSHOT_SCHEMA,
|
|
243
|
+
CONTRACT_V2_REQUIRED_DOMAINS,
|
|
244
|
+
CONTRACT_V2_LIFECYCLE_OPERATIONS,
|
|
245
|
+
CONTRACT_V2_LANE_PRECEDENCE,
|
|
246
|
+
createComponentContractV2,
|
|
247
|
+
validateComponentContractV2
|
|
248
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { XtendBuilderComponentInput, XtendBuilderOptions, XtendBuilderRecord, XtendBuilderReport } from '../builder-public-types';
|
|
2
|
+
|
|
3
|
+
export declare const COMPONENT_CONTRACT_V2_SCHEMA: string;
|
|
4
|
+
export declare const COMPONENT_NETWORK_ASSERTIONS: string[];
|
|
5
|
+
export declare const COMPONENT_NETWORK_CONTEXTS: string[];
|
|
6
|
+
export declare const COMPONENT_NETWORK_CONTRACT_DOC: string;
|
|
7
|
+
export declare const COMPONENT_NETWORK_CONTRACT_SCHEMA: string;
|
|
8
|
+
export declare const COMPONENT_NETWORK_PROFILES: string[];
|
|
9
|
+
export declare const COMPONENT_NETWORK_REPORT_SCHEMA: string;
|
|
10
|
+
export declare const COMPONENT_NETWORK_REQUIRED_COMMANDS: string[];
|
|
11
|
+
export declare const COMPONENT_NETWORK_REQUIRED_DOMAINS: string[];
|
|
12
|
+
export declare const COMPONENT_NETWORK_REQUIRED_EVENTS: string[];
|
|
13
|
+
export declare const COMPONENT_NETWORK_WORKPACKAGE: string;
|
|
14
|
+
export declare const COMPONENT_SHELL_CONTRACT_SCHEMA: string;
|
|
15
|
+
export declare const COMPONENT_STYLING_CONTRACT_SCHEMA: string;
|
|
16
|
+
export declare const COMPONENT_UX_PERFORMANCE_CONTRACT_SCHEMA: string;
|
|
17
|
+
export declare const FABRIC_BOUNDARY_SCHEMA: string;
|
|
18
|
+
export declare const KERNEL_BOUNDARY: string;
|
|
19
|
+
export declare const RMT_NETWORK_AUTHORING_SCHEMA: string;
|
|
20
|
+
export declare const RUNTIME_A11Y_CONTRACT_SCHEMA: string;
|
|
21
|
+
export declare function createComponentNetworkContract(input?: XtendBuilderComponentInput, options?: XtendBuilderOptions): XtendBuilderRecord;
|
|
22
|
+
export declare function validateComponentNetworkContract(contract: unknown): XtendBuilderReport<XtendBuilderRecord>;
|