@ccslabs/xtend 0.1.0-rc.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2 -0
- package/README.md +4 -0
- package/catalog/component-catalog-coverage.js +2 -0
- package/catalog/epic13-package-export-lock.js +11 -1
- package/catalog/epic13-rmt-production-readiness.js +0 -1
- package/catalog/epic18-rmt-action-effect-runtime.d.ts +36 -0
- package/catalog/epic18-rmt-action-effect-runtime.js +249 -0
- package/catalog/epic18-rmt-app-platform-authoring.d.ts +39 -0
- package/catalog/epic18-rmt-app-platform-authoring.js +319 -0
- package/catalog/epic18-rmt-app-platform-fixture.d.ts +33 -0
- package/catalog/epic18-rmt-app-platform-fixture.js +221 -0
- package/catalog/epic18-rmt-app-platform-release-handoff.d.ts +30 -0
- package/catalog/epic18-rmt-app-platform-release-handoff.js +231 -0
- package/catalog/epic18-rmt-app-platform-tooling.d.ts +38 -0
- package/catalog/epic18-rmt-app-platform-tooling.js +242 -0
- package/catalog/epic18-rmt-component-template-primitives.d.ts +33 -0
- package/catalog/epic18-rmt-component-template-primitives.js +240 -0
- package/catalog/epic18-rmt-dom-descriptor-renderer.d.ts +35 -0
- package/catalog/epic18-rmt-dom-descriptor-renderer.js +232 -0
- package/catalog/epic18-rmt-event-routing-runtime.d.ts +35 -0
- package/catalog/epic18-rmt-event-routing-runtime.js +234 -0
- package/catalog/epic18-rmt-state-selector-runtime.d.ts +34 -0
- package/catalog/epic18-rmt-state-selector-runtime.js +216 -0
- package/catalog/epic18-rmt-surface-resource-graph-runtime.d.ts +36 -0
- package/catalog/epic18-rmt-surface-resource-graph-runtime.js +256 -0
- package/catalog/surface-manager-controller.js +5 -1
- package/catalog/surface-manager-materialization.js +7 -1
- package/catalog/surface-manager-overlay-bridge.js +41 -6
- package/catalog/surface-manager-workbench-fixture.js +1 -1
- package/catalog/surface-type-capability-matrix.d.ts +61 -0
- package/catalog/surface-type-capability-matrix.js +183 -0
- package/catalog/type-exports-rmt.js +37 -1
- package/catalog/type-exports.js +3 -3
- package/components/icon-packs/lucide.js +4 -0
- package/components/manifest.json +2 -0
- package/components/prism-rmt.d.ts +34 -0
- package/components/prism-rmt.js +130 -0
- package/components/xcards.js +15 -0
- package/components/xcode.d.ts +36 -1
- package/components/xcode.js +215 -20
- package/components/xfooter.js +17 -0
- package/components/xheader.js +14 -0
- package/components/xhero.js +16 -1
- package/components/xlink.js +97 -14
- package/components/xmasonry.js +15 -0
- package/components/xplayer.d.ts +44 -2
- package/components/xplayer.js +242 -15
- package/components/xrouter.js +27 -2
- package/components/xsection.js +15 -0
- package/components/xsidepanel.js +10 -2
- package/components/xsurfacemanager-controller.d.ts +2 -1
- package/components/xsurfacemanager-controller.js +27 -3
- package/components/xsurfacemanager.d.ts +2 -0
- package/components/xsurfacemanager.js +20 -8
- package/components/xsurfaceoverlay-bridge.d.ts +20 -5
- package/components/xsurfaceoverlay-bridge.js +114 -18
- package/components/xsurfaceportal.d.ts +29 -0
- package/components/xsurfaceportal.js +122 -0
- package/components/xsurfaceregion.d.ts +50 -0
- package/components/xsurfaceregion.js +285 -0
- package/components/xsurfacewindow.js +2 -1
- package/components/xtooltip.js +89 -23
- package/docs/README.md +222 -298
- package/docs/changelog.md +107 -0
- package/docs/component-catalog-coverage.md +9 -9
- package/docs/component-platform.md +19 -1
- package/docs/component-ux-app-authoring.md +56 -63
- package/docs/components/xcode.md +83 -53
- package/docs/components/xsurfaceportal.md +32 -0
- package/docs/components/xsurfaceregion.md +37 -0
- package/docs/components.md +105 -69
- package/docs/de/README.md +264 -0
- package/docs/de/XTend-ADR.md +221 -0
- package/docs/de/a11y-keyboard-smokes.md +62 -0
- package/docs/de/about.md +18 -0
- package/docs/de/api.md +157 -0
- package/docs/de/best-practices.md +76 -0
- package/docs/de/changelog.md +107 -0
- package/docs/de/component-catalog-coverage.md +58 -0
- package/docs/de/component-lab.md +103 -0
- package/docs/de/component-long-tail-migration.md +41 -0
- package/docs/de/component-platform.md +177 -0
- package/docs/de/component-ux-app-authoring.md +123 -0
- package/docs/de/component-ux-authoring.md +96 -0
- package/docs/de/component-ux-gates.md +45 -0
- package/docs/de/components/x-rmt-lifecycle-demo-build.md +60 -0
- package/docs/de/components/xalert.md +81 -0
- package/docs/de/components/xbutton.md +103 -0
- package/docs/de/components/xcalendar.md +82 -0
- package/docs/de/components/xcards.md +128 -0
- package/docs/de/components/xcheckbox.md +102 -0
- package/docs/de/components/xcode.md +156 -0
- package/docs/de/components/xdialog.md +92 -0
- package/docs/de/components/xdrawer.md +84 -0
- package/docs/de/components/xfooter.md +126 -0
- package/docs/de/components/xform.md +128 -0
- package/docs/de/components/xheader.md +308 -0
- package/docs/de/components/xhero.md +142 -0
- package/docs/de/components/xicon.md +125 -0
- package/docs/de/components/xinput.md +129 -0
- package/docs/de/components/xlightbox.md +98 -0
- package/docs/de/components/xlink.md +109 -0
- package/docs/de/components/xmasonry.md +124 -0
- package/docs/de/components/xmenu.md +158 -0
- package/docs/de/components/xmodal.md +82 -0
- package/docs/de/components/xplayer.md +104 -0
- package/docs/de/components/xpopover.md +67 -0
- package/docs/de/components/xprogress.md +56 -0
- package/docs/de/components/xradio.md +103 -0
- package/docs/de/components/xrouter.md +260 -0
- package/docs/de/components/xsection.md +125 -0
- package/docs/de/components/xselect.md +105 -0
- package/docs/de/components/xsidepanel.md +30 -0
- package/docs/de/components/xspinner.md +102 -0
- package/docs/de/components/xstate.md +148 -0
- package/docs/de/components/xstatus.md +55 -0
- package/docs/de/components/xsummary.md +78 -0
- package/docs/de/components/xsurfacemanager.md +27 -0
- package/docs/de/components/xsurfacewindow.md +21 -0
- package/docs/de/components/xtabs.md +160 -0
- package/docs/de/components/xtextarea.md +98 -0
- package/docs/de/components/xtheme.md +167 -0
- package/docs/de/components/xtoast.md +62 -0
- package/docs/de/components/xtooltip.md +66 -0
- package/docs/de/components/xtype.md +82 -0
- package/docs/de/components/xutils.md +144 -0
- package/docs/de/components/xwriter.md +94 -0
- package/docs/de/components.md +153 -0
- package/docs/de/conditional-network-evidence-ci.md +38 -0
- package/docs/de/conditional-network-evidence.md +50 -0
- package/docs/de/core-migration-guide.md +110 -0
- package/docs/de/design-tokens.md +116 -0
- package/docs/de/docs-rmt-production-hardening.md +31 -0
- package/docs/de/enterprise-adoption.md +413 -0
- package/docs/de/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/de/epic10-platform-gates.md +62 -0
- package/docs/de/epic10-release-handoff.md +81 -0
- package/docs/de/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/de/epic12-rc0-handoff.md +61 -0
- package/docs/de/epic18-media-manager-vendor-upstream.md +318 -0
- package/docs/de/epic18-rmt-app-platform-release-handoff.md +67 -0
- package/docs/de/epic18-vendor-bugfixes.md +34 -0
- package/docs/de/existing-component-metadata.md +67 -0
- package/docs/de/hydration-performance-closure.md +34 -0
- package/docs/de/hydration-policies.md +71 -0
- package/docs/de/known-residual-triage.md +22 -0
- package/docs/de/manifest-import-policy.md +79 -0
- package/docs/de/manifest.md +112 -0
- package/docs/de/motion-contrast.md +67 -0
- package/docs/de/package-export-lock.md +44 -0
- package/docs/de/performance-measurements.md +106 -0
- package/docs/de/performance-regression.md +89 -0
- package/docs/de/performance.md +94 -0
- package/docs/de/previews/README.md +17 -0
- package/docs/de/prod-browser-csp-smokes.md +40 -0
- package/docs/de/public-component-types.md +79 -0
- package/docs/de/quick-start-guide.md +220 -0
- package/docs/de/rc0-adoption-guide.md +102 -0
- package/docs/de/rc0-gate-matrix.md +58 -0
- package/docs/de/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/de/rc1-migration-notes.md +69 -0
- package/docs/de/rc1-readiness.md +46 -0
- package/docs/de/release-owner-acceptance.md +56 -0
- package/docs/de/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/de/rmt-action-effect-runtime.md +81 -0
- package/docs/de/rmt-app-platform-authoring.md +54 -0
- package/docs/de/rmt-app-platform-fixture.md +46 -0
- package/docs/de/rmt-app-platform-migration-guide.md +88 -0
- package/docs/de/rmt-app-platform-tooling.md +79 -0
- package/docs/de/rmt-component-template-primitives.md +57 -0
- package/docs/de/rmt-dom-descriptor-renderer.md +64 -0
- package/docs/de/rmt-dsl-authoring-polish.md +145 -0
- package/docs/de/rmt-event-routing-runtime.md +81 -0
- package/docs/de/rmt-first-demo-app.md +77 -0
- package/docs/de/rmt-first-xtend-apps.md +129 -0
- package/docs/de/rmt-kernel-panic-recovery-incident-handoff.md +61 -0
- package/docs/de/rmt-kernel-security-hardening-migration.md +50 -0
- package/docs/de/rmt-kernel-trusted-output-authoring.md +69 -0
- package/docs/de/rmt-language-server.md +234 -0
- package/docs/de/rmt-lifecycle-demo.md +24 -0
- package/docs/de/rmt-linter.md +140 -0
- package/docs/de/rmt-node-ssr-adapter.md +100 -0
- package/docs/de/rmt-php-ssr-adapter.md +120 -0
- package/docs/de/rmt-production-readiness.md +63 -0
- package/docs/de/rmt-state-selector-runtime.md +47 -0
- package/docs/de/rmt-surface-resource-graph-runtime.md +92 -0
- package/docs/de/rmt-tooling-release-gates.md +77 -0
- package/docs/de/rmt-vnext-authoring.md +170 -0
- package/docs/de/rmt-vnext-component-primitives.md +188 -0
- package/docs/de/rmt-vnext-cross-surface-events.md +68 -0
- package/docs/de/rmt-vnext-enterprise-mfe-handoff.md +70 -0
- package/docs/de/rmt-vnext-fabric-bridge-evidence.md +81 -0
- package/docs/de/rmt-vnext-migration-notes.md +62 -0
- package/docs/de/rmt-vnext-primitive-authoring-tooling.md +247 -0
- package/docs/de/rmt-vnext-primitive-grammar-design.md +289 -0
- package/docs/de/rmt-vnext-primitive-lowering.md +108 -0
- package/docs/de/rmt-vnext-primitive-migration.md +119 -0
- package/docs/de/rmt-vnext-primitive-parser-ast.md +76 -0
- package/docs/de/rmt-vnext-primitive-semantic-graph.md +118 -0
- package/docs/de/rmt-vnext-primitives-compiler-backlog.md +739 -0
- package/docs/de/rmt-vnext-release-handoff.md +83 -0
- package/docs/de/rmt-vnext-remote-surfaces.md +90 -0
- package/docs/de/rmt-vnext-source-to-sea-gate.md +612 -0
- package/docs/de/rmt-vnext-surface-registry-enterprise.md +76 -0
- package/docs/de/screenreader-signals.md +56 -0
- package/docs/de/supply-chain-gates.md +100 -0
- package/docs/de/surface-manager-authoring-guide.md +94 -0
- package/docs/de/surface-manager-browser-lab.md +45 -0
- package/docs/de/surface-manager-component-lab.md +43 -0
- package/docs/de/surface-manager-controller.md +66 -0
- package/docs/de/surface-manager-layout-engines.md +32 -0
- package/docs/de/surface-manager-lazy-hydration.md +63 -0
- package/docs/de/surface-manager-migration-guide.md +122 -0
- package/docs/de/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/de/surface-manager-overlay-bridge.md +53 -0
- package/docs/de/surface-manager-persistence.md +30 -0
- package/docs/de/surface-manager-quality-gates.md +51 -0
- package/docs/de/surface-manager-release-handoff.md +68 -0
- package/docs/de/surface-manager-remote-policy.md +54 -0
- package/docs/de/surface-manager-rmt-authoring.md +102 -0
- package/docs/de/surface-manager-route-lifecycle.md +59 -0
- package/docs/de/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/de/surface-manager-side-panel-runtime.md +36 -0
- package/docs/de/surface-manager-stack-policy.md +39 -0
- package/docs/de/surface-manager-window-runtime.md +47 -0
- package/docs/de/surface-manager-workbench-fixture.md +43 -0
- package/docs/de/third-party-design-authoring.md +406 -0
- package/docs/de/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/de/trusted-dom-sanitizing.md +110 -0
- package/docs/de/type-exports.md +61 -0
- package/docs/de/typescript-components.md +63 -0
- package/docs/de/visual-browser-regression.md +83 -0
- package/docs/de/visual-owner-artifacts.md +46 -0
- package/docs/de/visual-snapshot-automation.md +87 -0
- package/docs/de/xtend-api-types.md +55 -0
- package/docs/de/xtend-builder-types.md +55 -0
- package/docs/de/xtend-catalog-types.md +44 -0
- package/docs/de/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/de/xtend-fabric.md +474 -0
- package/docs/de/xtend-loader-types.md +58 -0
- package/docs/de/xtend-loader.md +265 -0
- package/docs/de/xtend-policy-types.md +38 -0
- package/docs/de/xtend-rmt-types.md +40 -0
- package/docs/de/xtend-vendor-types.md +36 -0
- package/docs/de/xtendrmt-app-dsl.md +334 -0
- package/docs/de/xtendrmt-migration-guide.md +266 -0
- package/docs/de/xtendrmt-native-authoring.md +333 -0
- package/docs/de/xtendrmt-overview.md +109 -0
- package/docs/de/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/de/xtendrmt-runtime-bridge.md +155 -0
- package/docs/en/README.md +163 -0
- package/docs/en/XTend-ADR.md +221 -0
- package/docs/en/a11y-keyboard-smokes.md +68 -0
- package/docs/en/about.md +25 -0
- package/docs/en/api.md +171 -0
- package/docs/en/best-practices.md +125 -0
- package/docs/en/changelog.md +104 -0
- package/docs/en/component-catalog-coverage.md +104 -0
- package/docs/en/component-lab.md +103 -0
- package/docs/en/component-long-tail-migration.md +41 -0
- package/docs/en/component-platform.md +243 -0
- package/docs/en/component-ux-app-authoring.md +118 -0
- package/docs/en/component-ux-authoring.md +96 -0
- package/docs/en/component-ux-gates.md +45 -0
- package/docs/en/components/x-rmt-lifecycle-demo-build.md +75 -0
- package/docs/en/components/xalert.md +94 -0
- package/docs/en/components/xbutton.md +118 -0
- package/docs/en/components/xcalendar.md +95 -0
- package/docs/en/components/xcards.md +139 -0
- package/docs/en/components/xcheckbox.md +118 -0
- package/docs/en/components/xcode.md +153 -0
- package/docs/en/components/xdialog.md +108 -0
- package/docs/en/components/xdrawer.md +110 -0
- package/docs/en/components/xfooter.md +138 -0
- package/docs/en/components/xform.md +147 -0
- package/docs/en/components/xheader.md +308 -0
- package/docs/en/components/xhero.md +157 -0
- package/docs/en/components/xicon.md +149 -0
- package/docs/en/components/xinput.md +147 -0
- package/docs/en/components/xlightbox.md +113 -0
- package/docs/en/components/xlink.md +130 -0
- package/docs/en/components/xmasonry.md +136 -0
- package/docs/en/components/xmenu.md +185 -0
- package/docs/en/components/xmodal.md +102 -0
- package/docs/en/components/xplayer.md +114 -0
- package/docs/en/components/xpopover.md +87 -0
- package/docs/en/components/xprogress.md +73 -0
- package/docs/en/components/xradio.md +119 -0
- package/docs/en/components/xrouter.md +260 -0
- package/docs/en/components/xsection.md +136 -0
- package/docs/en/components/xselect.md +122 -0
- package/docs/en/components/xsidepanel.md +48 -0
- package/docs/en/components/xspinner.md +118 -0
- package/docs/en/components/xstate.md +163 -0
- package/docs/en/components/xstatus.md +71 -0
- package/docs/en/components/xsummary.md +90 -0
- package/docs/en/components/xsurfacemanager.md +42 -0
- package/docs/en/components/xsurfacewindow.md +31 -0
- package/docs/en/components/xtabs.md +187 -0
- package/docs/en/components/xtextarea.md +115 -0
- package/docs/en/components/xtheme.md +203 -0
- package/docs/en/components/xtoast.md +78 -0
- package/docs/en/components/xtooltip.md +85 -0
- package/docs/en/components/xtype.md +91 -0
- package/docs/en/components/xutils.md +161 -0
- package/docs/en/components/xwriter.md +106 -0
- package/docs/en/components.md +151 -0
- package/docs/en/conditional-network-evidence-ci.md +38 -0
- package/docs/en/conditional-network-evidence.md +50 -0
- package/docs/en/core-migration-guide.md +110 -0
- package/docs/en/design-tokens.md +137 -0
- package/docs/en/docs-rmt-production-hardening.md +31 -0
- package/docs/en/enterprise-adoption.md +413 -0
- package/docs/en/enterprise-component-flex-release-handoff.md +129 -0
- package/docs/en/epic10-platform-gates.md +62 -0
- package/docs/en/epic10-release-handoff.md +81 -0
- package/docs/en/epic11-enterprise-ux-handoff.md +70 -0
- package/docs/en/epic12-rc0-handoff.md +61 -0
- package/docs/en/epic18-media-manager-vendor-upstream.md +232 -0
- package/docs/en/epic18-rmt-app-platform-release-handoff.md +60 -0
- package/docs/en/epic18-vendor-bugfixes.md +29 -0
- package/docs/en/existing-component-metadata.md +67 -0
- package/docs/en/hydration-performance-closure.md +34 -0
- package/docs/en/hydration-policies.md +75 -0
- package/docs/en/known-residual-triage.md +22 -0
- package/docs/en/manifest-import-policy.md +81 -0
- package/docs/en/manifest.md +135 -0
- package/docs/en/motion-contrast.md +67 -0
- package/docs/en/package-export-lock.md +44 -0
- package/docs/en/performance-measurements.md +106 -0
- package/docs/en/performance-regression.md +89 -0
- package/docs/en/performance.md +132 -0
- package/docs/en/previews/README.md +17 -0
- package/docs/en/prod-browser-csp-smokes.md +40 -0
- package/docs/en/public-component-types.md +79 -0
- package/docs/en/quick-start-guide.md +189 -0
- package/docs/en/rc0-adoption-guide.md +102 -0
- package/docs/en/rc0-gate-matrix.md +58 -0
- package/docs/en/rc1-gate-matrix-ci-handoff.md +56 -0
- package/docs/en/rc1-migration-notes.md +69 -0
- package/docs/en/rc1-readiness.md +46 -0
- package/docs/en/release-owner-acceptance.md +56 -0
- package/docs/en/release-report-pack-dry-run-evidence.md +39 -0
- package/docs/en/rmt-action-effect-runtime.md +101 -0
- package/docs/en/rmt-app-platform-authoring.md +47 -0
- package/docs/en/rmt-app-platform-fixture.md +35 -0
- package/docs/en/rmt-app-platform-migration-guide.md +75 -0
- package/docs/en/rmt-app-platform-tooling.md +58 -0
- package/docs/en/rmt-component-template-primitives.md +49 -0
- package/docs/en/rmt-dom-descriptor-renderer.md +54 -0
- package/docs/en/rmt-dsl-authoring-polish.md +143 -0
- package/docs/en/rmt-event-routing-runtime.md +98 -0
- package/docs/en/rmt-first-demo-app.md +87 -0
- package/docs/en/rmt-first-xtend-apps.md +127 -0
- package/docs/en/rmt-kernel-panic-recovery-incident-handoff.md +60 -0
- package/docs/en/rmt-kernel-security-hardening-migration.md +49 -0
- package/docs/en/rmt-kernel-trusted-output-authoring.md +68 -0
- package/docs/en/rmt-language-server.md +243 -0
- package/docs/en/rmt-lifecycle-demo.md +23 -0
- package/docs/en/rmt-linter.md +146 -0
- package/docs/en/rmt-node-ssr-adapter.md +99 -0
- package/docs/en/rmt-php-ssr-adapter.md +118 -0
- package/docs/en/rmt-production-readiness.md +63 -0
- package/docs/en/rmt-state-selector-runtime.md +34 -0
- package/docs/en/rmt-surface-resource-graph-runtime.md +68 -0
- package/docs/en/rmt-tooling-release-gates.md +77 -0
- package/docs/en/rmt-vnext-authoring.md +102 -0
- package/docs/en/rmt-vnext-component-primitives.md +185 -0
- package/docs/en/rmt-vnext-cross-surface-events.md +59 -0
- package/docs/en/rmt-vnext-enterprise-mfe-handoff.md +62 -0
- package/docs/en/rmt-vnext-fabric-bridge-evidence.md +64 -0
- package/docs/en/rmt-vnext-migration-notes.md +62 -0
- package/docs/en/rmt-vnext-primitive-authoring-tooling.md +174 -0
- package/docs/en/rmt-vnext-primitive-grammar-design.md +268 -0
- package/docs/en/rmt-vnext-primitive-lowering.md +91 -0
- package/docs/en/rmt-vnext-primitive-migration.md +93 -0
- package/docs/en/rmt-vnext-primitive-parser-ast.md +59 -0
- package/docs/en/rmt-vnext-primitive-semantic-graph.md +103 -0
- package/docs/en/rmt-vnext-primitives-compiler-backlog.md +327 -0
- package/docs/en/rmt-vnext-release-handoff.md +83 -0
- package/docs/en/rmt-vnext-remote-surfaces.md +81 -0
- package/docs/en/rmt-vnext-source-to-sea-gate.md +482 -0
- package/docs/en/rmt-vnext-surface-registry-enterprise.md +68 -0
- package/docs/en/screenreader-signals.md +56 -0
- package/docs/en/supply-chain-gates.md +106 -0
- package/docs/en/surface-manager-authoring-guide.md +94 -0
- package/docs/en/surface-manager-browser-lab.md +45 -0
- package/docs/en/surface-manager-component-lab.md +43 -0
- package/docs/en/surface-manager-controller.md +66 -0
- package/docs/en/surface-manager-layout-engines.md +32 -0
- package/docs/en/surface-manager-lazy-hydration.md +63 -0
- package/docs/en/surface-manager-migration-guide.md +113 -0
- package/docs/en/surface-manager-native-rmt-surfaces.md +38 -0
- package/docs/en/surface-manager-overlay-bridge.md +53 -0
- package/docs/en/surface-manager-persistence.md +30 -0
- package/docs/en/surface-manager-quality-gates.md +51 -0
- package/docs/en/surface-manager-release-handoff.md +68 -0
- package/docs/en/surface-manager-remote-policy.md +54 -0
- package/docs/en/surface-manager-rmt-authoring.md +89 -0
- package/docs/en/surface-manager-route-lifecycle.md +59 -0
- package/docs/en/surface-manager-runtime-release-handoff.md +69 -0
- package/docs/en/surface-manager-side-panel-runtime.md +36 -0
- package/docs/en/surface-manager-stack-policy.md +39 -0
- package/docs/en/surface-manager-window-runtime.md +47 -0
- package/docs/en/surface-manager-workbench-fixture.md +43 -0
- package/docs/en/third-party-design-authoring.md +406 -0
- package/docs/en/trusted-dom-boundary-browser-proof.md +32 -0
- package/docs/en/trusted-dom-sanitizing.md +124 -0
- package/docs/en/type-exports.md +61 -0
- package/docs/en/typescript-components.md +63 -0
- package/docs/en/visual-browser-regression.md +83 -0
- package/docs/en/visual-owner-artifacts.md +46 -0
- package/docs/en/visual-snapshot-automation.md +87 -0
- package/docs/en/xtend-api-types.md +55 -0
- package/docs/en/xtend-builder-types.md +55 -0
- package/docs/en/xtend-catalog-types.md +44 -0
- package/docs/en/xtend-fabric-rmt-lane-mapping.md +143 -0
- package/docs/en/xtend-fabric.md +474 -0
- package/docs/en/xtend-loader-types.md +58 -0
- package/docs/en/xtend-loader.md +265 -0
- package/docs/en/xtend-policy-types.md +38 -0
- package/docs/en/xtend-rmt-types.md +40 -0
- package/docs/en/xtend-vendor-types.md +36 -0
- package/docs/en/xtendrmt-app-dsl.md +331 -0
- package/docs/en/xtendrmt-migration-guide.md +256 -0
- package/docs/en/xtendrmt-native-authoring.md +336 -0
- package/docs/en/xtendrmt-overview.md +63 -0
- package/docs/en/xtendrmt-parsedown-scheduling.md +301 -0
- package/docs/en/xtendrmt-runtime-bridge.md +155 -0
- package/docs/enterprise-adoption.md +4 -2
- package/docs/epic18-media-manager-vendor-upstream.md +318 -0
- package/docs/epic18-rmt-app-platform-release-handoff.md +67 -0
- package/docs/epic18-vendor-bugfixes.md +34 -0
- package/docs/index.php +1056 -109
- package/docs/manifest.md +8 -2
- package/docs/menu.json +986 -133
- package/docs/package-export-lock.md +2 -2
- package/docs/public-component-types.md +2 -2
- package/docs/quick-start-guide.md +126 -58
- package/docs/rmt-action-effect-runtime.md +101 -0
- package/docs/rmt-app-platform-authoring.md +54 -0
- package/docs/rmt-app-platform-fixture.md +46 -0
- package/docs/rmt-app-platform-migration-guide.md +88 -0
- package/docs/rmt-app-platform-tooling.md +79 -0
- package/docs/rmt-component-template-primitives.md +57 -0
- package/docs/rmt-dom-descriptor-renderer.md +64 -0
- package/docs/rmt-dsl-authoring-polish.md +67 -44
- package/docs/rmt-event-routing-runtime.md +98 -0
- package/docs/rmt-first-demo-app.md +2 -2
- package/docs/rmt-first-xtend-apps.md +70 -46
- package/docs/rmt-language-server.md +61 -4
- package/docs/rmt-lifecycle-demo.md +1 -2
- package/docs/rmt-node-ssr-adapter.md +144 -0
- package/docs/rmt-php-ssr-adapter.md +158 -0
- package/docs/rmt-state-selector-runtime.md +47 -0
- package/docs/rmt-surface-resource-graph-runtime.md +92 -0
- package/docs/rmt-vnext-authoring.md +128 -18
- package/docs/rmt-vnext-component-primitives.md +188 -0
- package/docs/rmt-vnext-fabric-bridge-evidence.md +81 -0
- package/docs/rmt-vnext-primitive-authoring-tooling.md +247 -0
- package/docs/rmt-vnext-primitive-grammar-design.md +289 -0
- package/docs/rmt-vnext-primitive-lowering.md +108 -0
- package/docs/rmt-vnext-primitive-migration.md +119 -0
- package/docs/rmt-vnext-primitive-parser-ast.md +76 -0
- package/docs/rmt-vnext-primitive-semantic-graph.md +118 -0
- package/docs/rmt-vnext-primitives-compiler-backlog.md +742 -0
- package/docs/rmt-vnext-release-handoff.md +14 -0
- package/docs/rmt-vnext-source-to-sea-gate.md +629 -0
- package/docs/surface-manager-migration-guide.md +34 -6
- package/docs/surface-manager-overlay-bridge.md +9 -4
- package/docs/surface-manager-rmt-authoring.md +50 -34
- package/docs/surface-manager-workbench-fixture.md +1 -2
- package/docs/third-party-design-authoring.md +1 -1
- package/docs/type-exports.md +3 -3
- package/docs/utils/pageloader.js +811 -62
- package/docs/visual-browser-regression.md +1 -1
- package/docs/xtend-rmt-types.md +3 -2
- package/docs/xtendrmt-app-dsl.md +187 -122
- package/docs/xtendrmt-docs-shell-vnext.rmt +165 -0
- package/docs/xtendrmt-migration-guide.md +48 -17
- package/docs/xtendrmt-native-authoring.md +213 -217
- package/docs/xtendrmt-overview.md +81 -61
- package/docs/xtendrmt-parsedown-scheduling.md +23 -8
- package/fabric/package.json +1 -1
- package/package.json +684 -21
- package/tools/package.json +5 -1
- package/tools/rmt-editor/vscode/README.md +72 -5
- package/tools/rmt-editor/vscode/XTend-Logo.png +0 -0
- package/tools/rmt-editor/vscode/extension.d.ts +33 -0
- package/tools/rmt-editor/vscode/extension.js +1816 -7
- package/tools/rmt-editor/vscode/language-configuration.json +2 -1
- package/tools/rmt-editor/vscode/package.json +193 -2
- package/tools/rmt-editor/vscode/snippets/rmt.code-snippets +41 -0
- package/tools/rmt-editor/vscode/syntaxes/rmt.tmLanguage.json +103 -1
- package/tools/rmt-editor/vscode/templates/launch.json +70 -0
- package/tools/rmt-editor/vscode/templates/tasks.json +172 -0
- package/tools/rmt-editor/vscode/xtend-rmt-language-0.0.0-enterprise-readiness.vsix +0 -0
- package/tools/rmt-language/app-platform-tooling.d.ts +128 -0
- package/tools/rmt-language/app-platform-tooling.js +677 -0
- package/tools/rmt-language/completions.d.ts +5 -0
- package/tools/rmt-language/completions.js +185 -3
- package/tools/rmt-language/diagnostics.js +54 -0
- package/tools/rmt-language/hover.js +36 -0
- package/tools/rmt-language/rmt-tooling-public-types.d.ts +7 -0
- package/tools/rmt-language/rules/app-platform-policy.js +39 -0
- package/tools/rmt-language/rules/index.js +5 -1
- package/tools/rmt-language/semantic-graph.d.ts +6 -0
- package/tools/rmt-language/semantic-graph.js +928 -0
- package/tools/rmt-language/snippets/index.js +44 -0
- package/tools/rmt-language/snippets/rmt.code-snippets +41 -0
- package/tools/rmt-language/vnext-compatibility.d.ts +10 -0
- package/tools/rmt-language/vnext-compatibility.js +642 -0
- package/tools/rmt-language/vnext-compiler.d.ts +5 -0
- package/tools/rmt-language/vnext-compiler.js +863 -17
- package/tools/rmt-language/vnext-parser.js +725 -9
- package/tools/rmt-language/vnext-release.d.ts +1 -0
- package/tools/rmt-language/vnext-release.js +20 -0
- package/tools/rmt-language/vnext-source-to-sea.d.ts +33 -0
- package/tools/rmt-language/vnext-source-to-sea.js +2227 -0
- package/tools/rmt-language/vnext-surfaces.js +111 -52
- package/tools/rmt-language/vnext-tooling.d.ts +19 -1
- package/tools/rmt-language/vnext-tooling.js +1247 -5
- package/tools/rmt-language-server/protocol.js +3 -0
- package/tools/rmt-language-server/server.d.ts +2 -0
- package/tools/rmt-language-server/server.js +176 -22
- package/tools/rmt-linter/cli.d.ts +2 -0
- package/tools/rmt-linter/cli.js +62 -0
- package/xtend-builder/generators/registry.js +11 -0
- package/xtend-builder/generators/rmt-app-platform.js +239 -0
- package/xtend-builder/generators/rmt-lifecycle-demo.js +3 -11
- package/xtend-builder/lib/cli.js +38 -0
- package/xtend-builder/package.json +3 -3
- package/xtend-builder/scaffold.config.js +29 -2
- package/xtend.css +49 -2
- package/xtendrmt/package.json +49 -1
- package/xtendrmt/rmt-action-effect-runtime.d.ts +126 -0
- package/xtendrmt/rmt-action-effect-runtime.js +494 -0
- package/xtendrmt/rmt-component-capability-registry.d.ts +180 -0
- package/xtendrmt/rmt-component-capability-registry.js +636 -0
- package/xtendrmt/rmt-core.d.ts +6 -0
- package/xtendrmt/rmt-core.esm.js +32 -6
- package/xtendrmt/rmt-dom-descriptor-renderer.d.ts +107 -0
- package/xtendrmt/rmt-dom-descriptor-renderer.js +1066 -0
- package/xtendrmt/rmt-event-routing-runtime.d.ts +144 -0
- package/xtendrmt/rmt-event-routing-runtime.js +666 -0
- package/xtendrmt/rmt-lifecycle-demo.app.js +2 -2
- package/xtendrmt/rmt-lifecycle-demo.core.json +4 -0
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.app.js +1 -1
- package/xtendrmt/rmt-lifecycle-demo.rmt-build.scaffold.json +2 -2
- package/xtendrmt/rmt-lifecycle-demo.scaffold.json +4 -4
- package/xtendrmt/rmt-native-shell-runtime.d.ts +77 -0
- package/xtendrmt/rmt-native-shell-runtime.js +309 -0
- package/xtendrmt/rmt-node-ssr-adapter.d.ts +197 -0
- package/xtendrmt/rmt-node-ssr-adapter.js +1006 -0
- package/xtendrmt/rmt-php-ssr-adapter.php +976 -0
- package/xtendrmt/rmt-runtime.browser.js +32 -6
- package/xtendrmt/rmt-runtime.esm.js +32 -6
- package/xtendrmt/rmt-state-selector-runtime.d.ts +166 -0
- package/xtendrmt/rmt-state-selector-runtime.js +866 -0
- package/xtendrmt/rmt-surface-resource-graph-runtime.d.ts +224 -0
- package/xtendrmt/rmt-surface-resource-graph-runtime.js +932 -0
- package/xtendrmt/rmt-vnext-enterprise-mfe-demo.core.json +3 -0
- package/xtendrmt/rmt-vnext-reference-demo.core.json +3 -0
- package/xtendrmt/xtendrmt-bestcase-demo.core.json +3420 -372
- package/xtendrmt/xtendrmt-bestcase-demo.js +424 -8
- package/xtendrmt/xtendrmt-bestcase-demo.rmt +214 -6
|
@@ -0,0 +1,289 @@
|
|
|
1
|
+
# RMT vNext Primitive Grammar Design
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.rmt.vnext-primitive-grammar-design.v1`
|
|
4
|
+
- Workpackage: `RMT-VNEXT-PRIM-01`
|
|
5
|
+
- Status: `completed`
|
|
6
|
+
- Parent backlog: [RMT vNext Primitive Compiler Backlog](./rmt-vnext-primitives-compiler-backlog.md)
|
|
7
|
+
- Design fixture: `tests/rmt-language/fixtures/vnext-primitives-grammar-design.rmt`
|
|
8
|
+
|
|
9
|
+
## Ziel
|
|
10
|
+
|
|
11
|
+
Dieser Slice definiert die vNext-Syntax, mit der App-Platform-Primitives direkt
|
|
12
|
+
in RMT authoriert werden sollen. Er ist bewusst ein Grammar-Design-Contract.
|
|
13
|
+
Parser-/AST-Implementierung ist in `RMT-VNEXT-PRIM-02` abgeschlossen; die erste
|
|
14
|
+
Semantic-Graph-Schicht ist in `RMT-VNEXT-PRIM-03` gestartet. Compiler-Lowering
|
|
15
|
+
folgt in `RMT-VNEXT-PRIM-04`.
|
|
16
|
+
|
|
17
|
+
Die Syntax muss App-Autoren aus Legacy-/JSON-Authoring herausfuehren. Ein
|
|
18
|
+
normaler App-Shell-Entwickler soll State, Selectors, Actions, Events,
|
|
19
|
+
DataSources, Surfaces, Overlays, Portals und Resources in einer lesbaren RMT
|
|
20
|
+
vNext-Datei deklarieren koennen.
|
|
21
|
+
|
|
22
|
+
## Design-Prinzipien
|
|
23
|
+
|
|
24
|
+
- **vNext first:** Die menschenfreundliche DSL ist die primaere Authoring-
|
|
25
|
+
Oberflaeche. JSON bleibt Compiler-Output oder Migrationsinput.
|
|
26
|
+
- **Kernel-neutral:** Syntax kann XTend-Komponenten referenzieren, aber der
|
|
27
|
+
RMT-Kernel importiert keine XTend-, Fabric- oder Browser-Module.
|
|
28
|
+
- **App-Graph vor Runtime:** Referenzen, Ownership, Payload Contracts und
|
|
29
|
+
Trust Boundaries muessen aus dem Source Graph pruefbar sein.
|
|
30
|
+
- **Source-map-faehig:** Jede Primitive-Deklaration braucht einen stabilen
|
|
31
|
+
Source Range und eine Primitive ID.
|
|
32
|
+
- **Composable:** App Shell, UI-Templates, State, Events und Resources duerfen
|
|
33
|
+
getrennt deklarierbar sein, muessen aber zu einem App Graph verbunden werden.
|
|
34
|
+
- **Legacy im Hintergrund:** Klassische Core-/Scaffold-Artefakte duerfen
|
|
35
|
+
weiterhin Targets sein, aber Entwickler sollen sie nicht bearbeiten muessen.
|
|
36
|
+
|
|
37
|
+
## Top-Level-Grammatik
|
|
38
|
+
|
|
39
|
+
Eine vNext-Datei kann weiterhin `import`, `template`, `surface` und `remote`
|
|
40
|
+
nutzen. Neu kommen primitive Deklarationen hinzu. Sie sind innerhalb eines
|
|
41
|
+
`template`-Blocks bevorzugt, duerfen fuer wiederverwendbare Bibliotheken aber
|
|
42
|
+
auch top-level authoriert werden.
|
|
43
|
+
|
|
44
|
+
```rmt
|
|
45
|
+
template media.manager {
|
|
46
|
+
state media.records type MediaRecord[] initial []
|
|
47
|
+
|
|
48
|
+
selector media.filtered from state media.records {
|
|
49
|
+
where record.kind == state.media.filters.kind || state.media.filters.kind == "all"
|
|
50
|
+
sort by record.name asc
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
datasource media.index from endpoint "/api/media?pageSize=200" {
|
|
54
|
+
method GET
|
|
55
|
+
contract MediaIndex
|
|
56
|
+
result records
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
action media.select {
|
|
60
|
+
input mediaId string
|
|
61
|
+
reduce state.media.selection.activeId = input.mediaId
|
|
62
|
+
emit media.selected with mediaId input.mediaId
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
portal surface.root root "#media-manager-root" layer surface
|
|
66
|
+
overlay feedback.toast kind toast portal surface.root
|
|
67
|
+
resource player.stream kind stream owner surface.player source state.media.selection.activeId
|
|
68
|
+
|
|
69
|
+
surface media.explorer kind window component x-surface-window {
|
|
70
|
+
source selector media.filtered
|
|
71
|
+
key record.id
|
|
72
|
+
portal surface.root
|
|
73
|
+
|
|
74
|
+
lane visible weight 80 {
|
|
75
|
+
hydrate explorer-list from selector media.filtered
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
on click "[data-media-id]" -> action media.select {
|
|
79
|
+
payload mediaId from target.dataset.mediaId
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Primitive-Formen
|
|
86
|
+
|
|
87
|
+
### State
|
|
88
|
+
|
|
89
|
+
```rmt
|
|
90
|
+
state media.filters type object preserve {
|
|
91
|
+
initial {
|
|
92
|
+
query ""
|
|
93
|
+
kind "all"
|
|
94
|
+
collection "all"
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Lowering-Ziel:
|
|
100
|
+
|
|
101
|
+
- `core.state[]`
|
|
102
|
+
- Source-map entry mit `primitiveType: "state"`
|
|
103
|
+
- optionaler XState-Bridge-Hint fuer Host-Adapter
|
|
104
|
+
|
|
105
|
+
### Selector
|
|
106
|
+
|
|
107
|
+
```rmt
|
|
108
|
+
selector media.filtered from state media.records {
|
|
109
|
+
where record.kind == state.media.filters.kind || state.media.filters.kind == "all"
|
|
110
|
+
where contains(record.name, state.media.filters.query)
|
|
111
|
+
sort by record.name asc
|
|
112
|
+
output MediaRecord[]
|
|
113
|
+
}
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Einschraenkung fuer PRIM-01: Funktionen wie `contains()` sind als deklarative
|
|
117
|
+
Selector-Operatoren erlaubt, aber nicht als beliebige JS-Calls. PRIM-02 muss
|
|
118
|
+
sie als eigene AST-Nodes modellieren.
|
|
119
|
+
|
|
120
|
+
Lowering-Ziel:
|
|
121
|
+
|
|
122
|
+
- `core.selectors[]`
|
|
123
|
+
- Referenzen auf `core.state[]`
|
|
124
|
+
- Diagnose fuer unbekannte State- oder Record-Pfade
|
|
125
|
+
|
|
126
|
+
### DataSource
|
|
127
|
+
|
|
128
|
+
```rmt
|
|
129
|
+
datasource media.index from endpoint "/api/media?pageSize=200" {
|
|
130
|
+
method GET
|
|
131
|
+
contract MediaIndex
|
|
132
|
+
result records
|
|
133
|
+
fallback fixture media.fixture
|
|
134
|
+
}
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Lowering-Ziel:
|
|
138
|
+
|
|
139
|
+
- `core.dataSources[]`
|
|
140
|
+
- App-Platform-Report-Domain `dataSources`
|
|
141
|
+
- optionaler SSR-/Fixture-Fallback
|
|
142
|
+
|
|
143
|
+
### Action und Effect
|
|
144
|
+
|
|
145
|
+
```rmt
|
|
146
|
+
action media.reindex {
|
|
147
|
+
status state.actionStatus.reindex
|
|
148
|
+
effect fetch datasource media.reindex
|
|
149
|
+
on success -> reduce state.media.records = result.records
|
|
150
|
+
on success -> emit media.index.loaded with count result.records.length
|
|
151
|
+
on error -> overlay feedback.toast message error.message tone "danger"
|
|
152
|
+
}
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
Lowering-Ziel:
|
|
156
|
+
|
|
157
|
+
- `core.actions[]`
|
|
158
|
+
- `core.effects[]` oder action-scoped `effects`
|
|
159
|
+
- Event-/Feedback-Result-Routing
|
|
160
|
+
- Resource ownership fuer async handles
|
|
161
|
+
|
|
162
|
+
### Event Binding
|
|
163
|
+
|
|
164
|
+
```rmt
|
|
165
|
+
on click "[data-command='scan']" -> action media.reindex {
|
|
166
|
+
preventDefault true
|
|
167
|
+
payload source from target.dataset.command
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
on xplayer-play target player.surface -> action media.playback.started {
|
|
171
|
+
payload mediaId from detail.mediaId
|
|
172
|
+
payload surfaceId from surface.id
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Lowering-Ziel:
|
|
177
|
+
|
|
178
|
+
- `core.events[]`
|
|
179
|
+
- Payload Contract
|
|
180
|
+
- DOM/custom event routing metadata
|
|
181
|
+
- Source pointer fuer jedes Payload Mapping
|
|
182
|
+
|
|
183
|
+
### Surface
|
|
184
|
+
|
|
185
|
+
```rmt
|
|
186
|
+
surface media.player kind window component x-surface-window {
|
|
187
|
+
repeat from selector player.instances
|
|
188
|
+
key instance.surfaceId
|
|
189
|
+
portal surface.root
|
|
190
|
+
bounds x 920 y 96 width 760 height 500
|
|
191
|
+
preserve on minimize
|
|
192
|
+
destroy releases resource player.stream
|
|
193
|
+
|
|
194
|
+
lane visible weight 90 {
|
|
195
|
+
hydrate player-view from selector media.activeRecord
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
Lowering-Ziel:
|
|
201
|
+
|
|
202
|
+
- `core.surfaces[]`
|
|
203
|
+
- `core.lanes[]`
|
|
204
|
+
- `core.operations[]`
|
|
205
|
+
- Surface Graph Runtime records
|
|
206
|
+
- keyed repeater diagnostics
|
|
207
|
+
|
|
208
|
+
### Portal und Overlay
|
|
209
|
+
|
|
210
|
+
```rmt
|
|
211
|
+
portal overlay.root root "body" layer overlay z 1000 {
|
|
212
|
+
focus policy restore
|
|
213
|
+
pointer policy passthrough
|
|
214
|
+
scroll policy lock-when-modal
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
overlay media.lightbox kind lightbox portal overlay.root {
|
|
218
|
+
escape close topmost
|
|
219
|
+
focus trap
|
|
220
|
+
resource lightbox.import
|
|
221
|
+
}
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
Lowering-Ziel:
|
|
225
|
+
|
|
226
|
+
- `core.portals[]`
|
|
227
|
+
- `core.overlays[]`
|
|
228
|
+
- portal reference diagnostics
|
|
229
|
+
- overlay stack policy
|
|
230
|
+
|
|
231
|
+
### Resource
|
|
232
|
+
|
|
233
|
+
```rmt
|
|
234
|
+
resource lightbox.import kind lazy-import owner overlay.media.lightbox {
|
|
235
|
+
import "@ccslabs/xtend/components/xlightbox"
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
resource preview.objectUrl kind object-url owner surface.media.player {
|
|
239
|
+
source selector media.activeRecord
|
|
240
|
+
dispose on surface.destroy
|
|
241
|
+
}
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
Lowering-Ziel:
|
|
245
|
+
|
|
246
|
+
- `core.resources[]`
|
|
247
|
+
- owner-scoped lifecycle records
|
|
248
|
+
- teardown diagnostics fuer ownerless resources
|
|
249
|
+
|
|
250
|
+
## AST-Node-Namen
|
|
251
|
+
|
|
252
|
+
PRIM-02 soll mindestens diese Node-Typen erzeugen:
|
|
253
|
+
|
|
254
|
+
| Syntax | AST Node |
|
|
255
|
+
|--------|----------|
|
|
256
|
+
| `state` | `RmtStateDeclaration` |
|
|
257
|
+
| `selector` | `RmtSelectorDeclaration` |
|
|
258
|
+
| `datasource` | `RmtDataSourceDeclaration` |
|
|
259
|
+
| `action` | `RmtActionDeclaration` |
|
|
260
|
+
| `effect` | `RmtEffectStatement` |
|
|
261
|
+
| `on ... -> action ...` | `RmtEventBinding` mit Payload-Block |
|
|
262
|
+
| `surface ... kind ... component ...` | `RmtSurfaceDeclaration` mit Primitive-Metadata |
|
|
263
|
+
| `portal` | `RmtPortalDeclaration` |
|
|
264
|
+
| `overlay` | `RmtOverlayDeclaration` |
|
|
265
|
+
| `resource` | `RmtResourceDeclaration` |
|
|
266
|
+
| `template` primitive block | `RmtTemplateDeclaration.body[]` |
|
|
267
|
+
|
|
268
|
+
## Diagnostik-Mindestumfang
|
|
269
|
+
|
|
270
|
+
Der Grammar-Slice definiert folgende Fehlerklassen fuer PRIM-02/03:
|
|
271
|
+
|
|
272
|
+
| Code | Bedeutung |
|
|
273
|
+
|------|-----------|
|
|
274
|
+
| `rmt.vnext.primitive.unknown-reference` | Primitive referenziert unbekannten State, Selector, Action, Portal, Resource oder Surface. |
|
|
275
|
+
| `rmt.vnext.primitive.owner-missing` | Resource oder Overlay besitzt keinen stabilen Owner. |
|
|
276
|
+
| `rmt.vnext.primitive.unkeyed-repeat` | Surface oder Template wiederholt Records ohne `key`. |
|
|
277
|
+
| `rmt.vnext.primitive.payload-contract-missing` | Event bindet eine Action ohne Payload Contract oder Mapping. |
|
|
278
|
+
| `rmt.vnext.primitive.unsafe-html` | Template nutzt HTML ohne Trusted-DOM-Boundary. |
|
|
279
|
+
| `rmt.vnext.primitive.kernel-boundary` | Primitive verlangt Kernel-Import aus XTend, Fabric oder Browser Runtime. |
|
|
280
|
+
|
|
281
|
+
## Akzeptanz fuer PRIM-01
|
|
282
|
+
|
|
283
|
+
- Dieses Dokument definiert eine zusammenhaengende vNext-Syntax fuer alle P0-
|
|
284
|
+
Primitive-Familien.
|
|
285
|
+
- Die Fixture `tests/rmt-language/fixtures/vnext-primitives-grammar-design.rmt`
|
|
286
|
+
zeigt denselben Syntaxumfang in einer kompakten App-Shell.
|
|
287
|
+
- Das Backlog markiert `RMT-VNEXT-PRIM-01` als `in_progress`.
|
|
288
|
+
- PRIM-02 kann direkt mit Parser-/AST-Arbeit starten, ohne die Syntaxfrage neu
|
|
289
|
+
zu klaeren.
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
# RMT vNext Primitive Lowering
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.rmt.vnext.primitive-lowering.v1`
|
|
4
|
+
- Workpackage: `RMT-VNEXT-PRIM-04`
|
|
5
|
+
- Status: `completed`
|
|
6
|
+
- Quelle: Media-Manager-Downstream-Transfer, `2026-05-19`
|
|
7
|
+
|
|
8
|
+
## Ziel
|
|
9
|
+
|
|
10
|
+
`RMT-VNEXT-PRIM-04` senkt validierte vNext-Primitives aus dem PRIM-03 Semantic
|
|
11
|
+
Graph in deterministische Core-, App-Platform- und Kernel-Records ab. App-
|
|
12
|
+
Autoren bleiben dabei in RMT vNext; JSON bleibt Compiler-Output und nicht der
|
|
13
|
+
Authoring-Pfad.
|
|
14
|
+
|
|
15
|
+
Die Lowering-Stufe ist Teil des bestehenden vNext-Compilers:
|
|
16
|
+
|
|
17
|
+
```js
|
|
18
|
+
const {
|
|
19
|
+
compileRmtVNextSource
|
|
20
|
+
} = require('./tools/rmt-language/vnext-compiler');
|
|
21
|
+
|
|
22
|
+
const result = compileRmtVNextSource({ text, filePath });
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Bei Primitive-Quellen baut der Compiler zuerst
|
|
26
|
+
`buildRmtVNextPrimitiveSemanticGraph(...)`. Error-Diagnostics aus dem Graph
|
|
27
|
+
stoppen das Lowering mit `status: "semantic_error"` und ohne Core-Document.
|
|
28
|
+
|
|
29
|
+
## Core-Domains
|
|
30
|
+
|
|
31
|
+
Der vNext-Core erhaelt zusaetzliche Primitive-Domains:
|
|
32
|
+
|
|
33
|
+
- `states`
|
|
34
|
+
- `selectors`
|
|
35
|
+
- `actions`
|
|
36
|
+
- `effects`
|
|
37
|
+
- `portals`
|
|
38
|
+
- `overlays`
|
|
39
|
+
- `resources`
|
|
40
|
+
|
|
41
|
+
Vorhandene Domains wie `surfaces`, `lanes`, `operations`, `events` und
|
|
42
|
+
`dataSources` werden fuer Primitive angereichert, statt einen zweiten Runtime-
|
|
43
|
+
Pfad zu erzeugen.
|
|
44
|
+
|
|
45
|
+
## App-Platform Artifact
|
|
46
|
+
|
|
47
|
+
Wenn Primitive vorhanden sind, enthaelt das Core-Document `appPlatform`:
|
|
48
|
+
|
|
49
|
+
```json
|
|
50
|
+
{
|
|
51
|
+
"schema": "xtend.rmt.vnext.app-platform-records.v1",
|
|
52
|
+
"sourceSyntax": "rmt-vnext",
|
|
53
|
+
"surfaces": [],
|
|
54
|
+
"events": [],
|
|
55
|
+
"resources": []
|
|
56
|
+
}
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Dieses Artefakt ist fuer Host-/Scaffold-Adapter gedacht. Host-spezifische
|
|
60
|
+
Imports, etwa Lazy Component Imports, bleiben dort sichtbar und tragen
|
|
61
|
+
`kernelVisible: false`.
|
|
62
|
+
|
|
63
|
+
## Kernel Records
|
|
64
|
+
|
|
65
|
+
Das Core-Document enthaelt bei Primitive-Quellen ausserdem `kernelRecords`:
|
|
66
|
+
|
|
67
|
+
```json
|
|
68
|
+
{
|
|
69
|
+
"schema": "xtend.rmt.vnext.kernel-records.v1",
|
|
70
|
+
"boundary": "no-rmt-kernel-import-of-host-runtime-types",
|
|
71
|
+
"schedules": [],
|
|
72
|
+
"fibers": [],
|
|
73
|
+
"lifecycleRecords": []
|
|
74
|
+
}
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
Der Kernel-Record-Slice enthaelt Lanes, Fibers, Lifecycle-, State-, Selector-,
|
|
78
|
+
Action-, DataSource- und Resource-Fakten ohne Host-Runtime-Imports. Dadurch ist
|
|
79
|
+
PRIM-05 vorbereitet: Fabric kann Lane/Fiber-Evidence aus Compiler-Output
|
|
80
|
+
ableiten, ohne dass der Kernel Fabric oder XTend importieren muss.
|
|
81
|
+
|
|
82
|
+
## Evidence
|
|
83
|
+
|
|
84
|
+
Die Compiler-Suite prueft:
|
|
85
|
+
|
|
86
|
+
- positive Primitive-Fixture kompiliert zu State-, Selector-, DataSource-,
|
|
87
|
+
Action-, Effect-, Portal-, Overlay-, Resource-, Surface- und Event-Records;
|
|
88
|
+
- App-Platform-Artefakt und Kernel-Records werden erzeugt;
|
|
89
|
+
- keyed Surface-Repeater und Event-Payload-Contracts bleiben erhalten;
|
|
90
|
+
- Host-Imports bleiben ausserhalb der Kernel-Sichtbarkeit;
|
|
91
|
+
- negative PRIM-03-Fixture stoppt vor dem Lowering mit Semantic-Diagnostics;
|
|
92
|
+
- Core JSON bleibt byte-stabil.
|
|
93
|
+
|
|
94
|
+
Gezielte lokale Gates:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
node --check tools/rmt-language/vnext-compiler.js
|
|
98
|
+
node --check tests/rmt-language/rmt_vnext_compiler_suite.js
|
|
99
|
+
node -e "const suite=require('./tests/rmt-language/rmt_vnext_compiler_suite'); const result=suite.runRmtVNextCompilerSuite({rootDir:process.cwd()}); process.exit(result.ok ? 0 : 1);"
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## PRIM-06 Anschluss
|
|
103
|
+
|
|
104
|
+
`RMT-VNEXT-PRIM-06` setzt auf `kernelRecords.schedules` und
|
|
105
|
+
`kernelRecords.fibers` auf. Die erste Source-to-Sea-Scheibe erzeugt daraus
|
|
106
|
+
Evidence, die vNext-Source-Maps, Kernel-Schedules, ableitbare Fabric-Fibers,
|
|
107
|
+
UI-Marker und eine Browser-Smoke-Fixture unter derselben Primitive-ID
|
|
108
|
+
korreliert.
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
# RMT vNext Primitive Migration
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.rmt.vnext.primitive-migration-preview.v1`
|
|
4
|
+
- Workpackage: `RMT-VNEXT-PRIM-08`
|
|
5
|
+
- Status: `in_progress`
|
|
6
|
+
- Source fixture: `tests/fixtures/rmt-app-platform-tooling.rmt`
|
|
7
|
+
- Local gate: `node scripts/run_xtend_tests.js rmt-vnext-compatibility --json`
|
|
8
|
+
|
|
9
|
+
## Ziel
|
|
10
|
+
|
|
11
|
+
`RMT-VNEXT-PRIM-08` schiebt Legacy- und App-Platform-JSON-Authoring in den
|
|
12
|
+
Hintergrund. Bestehende App-Platform-Primitive-Records bleiben als
|
|
13
|
+
Compiler-Target und Compatibility-Evidence erhalten, aber die primaere
|
|
14
|
+
Authoring-Flaeche ist RMT vNext.
|
|
15
|
+
|
|
16
|
+
Der Migrationspfad erzeugt deshalb keinen neuen Legacy-Arbeitsmodus. Er erzeugt
|
|
17
|
+
einen vNext-Preview-Draft aus vorhandenen App-Platform-Records und kompiliert
|
|
18
|
+
diesen Draft direkt wieder durch den vNext-Compiler. Erst wenn dieser Draft
|
|
19
|
+
State, DataSources, Actions, Events, Portals, Overlays, Resources, Surfaces,
|
|
20
|
+
Lanes und Kernel-Records absenken kann, gilt die Migration als kompatibel.
|
|
21
|
+
|
|
22
|
+
## Preview- und Apply-Plan-Vertrag
|
|
23
|
+
|
|
24
|
+
Die API `createAppPlatformPrimitiveMigrationPreview(...)` erkennt
|
|
25
|
+
App-Platform-JSON-Dokumente mit Primitive-Domains wie `state`, `dataSources`,
|
|
26
|
+
`actions`, `events`, `portals`, `overlays`, `resources` und `surfaces`.
|
|
27
|
+
|
|
28
|
+
Der Preview-Report enthaelt:
|
|
29
|
+
|
|
30
|
+
- `schema: "xtend.rmt.vnext.primitive-migration-preview.v1"`
|
|
31
|
+
- `workpackage: "RMT-VNEXT-PRIM-08"`
|
|
32
|
+
- `languageMode: "legacy-app-platform-json"`
|
|
33
|
+
- `vNextAuthoring.role: "default"`
|
|
34
|
+
- `legacyAuthoring.role: "compiler-target"`
|
|
35
|
+
- `legacyAuthoring.backgrounded: true`
|
|
36
|
+
- `authoringDraft` mit vNext-Primitive-Syntax
|
|
37
|
+
- `authoringDraftCompileStatus: "compiled"`
|
|
38
|
+
- `projection.appPlatform` und `projection.kernelRecords`
|
|
39
|
+
- `domainMapping` fuer die erkannten Primitive-Familien
|
|
40
|
+
|
|
41
|
+
Report-only-Mode schreibt keine Quelle um. Er meldet stattdessen
|
|
42
|
+
`rmt.vnext.migration.opt_in_required` und
|
|
43
|
+
`rmt.vnext.primitive_migration.preview_available`. Preview-Mode ist bewusst
|
|
44
|
+
opt-in, damit vorhandene downstream Fixtures nicht still migriert werden.
|
|
45
|
+
|
|
46
|
+
Die API `createAppPlatformPrimitiveMigrationApplyPlan(...)` baut darauf auf
|
|
47
|
+
und erzeugt einen deterministischen Apply-Plan:
|
|
48
|
+
|
|
49
|
+
- `schema: "xtend.rmt.vnext.primitive-migration-apply-plan.v1"`
|
|
50
|
+
- `status: "apply-plan-ready"`, wenn der vNext-Draft kompiliert und eine
|
|
51
|
+
Projektion erzeugt werden kann
|
|
52
|
+
- `status: "blocked"`, wenn JSON-Parsing oder vNext-Kompilation fehlschlagen
|
|
53
|
+
- `targetPath` als Zielpfad-Hinweis, standardmaessig
|
|
54
|
+
`<quelle>.vnext.rmt`
|
|
55
|
+
- `automaticWrite: false`
|
|
56
|
+
- `writePolicy: "manual-apply-only"`
|
|
57
|
+
|
|
58
|
+
Der Apply-Plan fuehrt keinen Datei-Write aus. Er ist ein pruefbarer Handoff
|
|
59
|
+
fuer Agenten, CLIs oder Editoren, die den vNext-Draft nach Review in einen
|
|
60
|
+
neuen Authoring-Pfad uebernehmen wollen. Legacy/App-Platform-JSON bleibt dabei
|
|
61
|
+
Mirror und Compiler-Target, nicht die Benutzeroberflaeche.
|
|
62
|
+
|
|
63
|
+
## Authoring-Draft
|
|
64
|
+
|
|
65
|
+
Das App-Platform-Fixture wird in eine vNext-Shell dieser Form ueberfuehrt:
|
|
66
|
+
|
|
67
|
+
```rmt
|
|
68
|
+
template epic18.app-platform-tooling.fixture {
|
|
69
|
+
state items type collection initial []
|
|
70
|
+
|
|
71
|
+
datasource items from fixture records.generic-items {
|
|
72
|
+
contract "domain.record.generic-item.v1[]"
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
action load-items {
|
|
76
|
+
effect fetch datasource items
|
|
77
|
+
reduce state.items = result.records
|
|
78
|
+
}
|
|
79
|
+
|
|
80
|
+
portal app root "#app-root" layer surface
|
|
81
|
+
|
|
82
|
+
surface workspace kind window component workspace {
|
|
83
|
+
repeat from datasource items
|
|
84
|
+
portal app
|
|
85
|
+
|
|
86
|
+
lane visible weight 70 {
|
|
87
|
+
hydrate workspace from datasource items
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
on open-detail target ref.row -> action open-detail {
|
|
91
|
+
payload id from detail.id
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Die Preview normalisiert bekannte App-Platform-Prefixes fuer vNext-Authoring:
|
|
98
|
+
`state.items` wird zu `state items`, `datasource.items` zu
|
|
99
|
+
`datasource items`, `surface.workspace` zu `surface workspace` und
|
|
100
|
+
`action.open-detail` zu `action open-detail`. Runtime- und Kernel-Records
|
|
101
|
+
bleiben ueber die Compiler-Projektion korrelierbar.
|
|
102
|
+
|
|
103
|
+
## Gate-Erwartung
|
|
104
|
+
|
|
105
|
+
Das Compatibility-Gate prueft fuer PRIM-08:
|
|
106
|
+
|
|
107
|
+
- App-Platform-Primitive-JSON wird als `legacy-app-platform-json` erkannt.
|
|
108
|
+
- Report-only-Mode verlangt explizites Preview-Opt-in.
|
|
109
|
+
- Preview-Mode erzeugt einen vNext-Draft und kompiliert ihn.
|
|
110
|
+
- Apply-Plan-Mode erzeugt denselben Draft, einen Zielpfad-Hinweis und eine
|
|
111
|
+
blockierende Compile-/Parse-Pruefung, ohne Dateien zu schreiben.
|
|
112
|
+
- Die Projektion enthaelt App-Platform- und Kernel-Records.
|
|
113
|
+
- Legacy wird als `compiler-target` markiert, nicht als Authoring-Pfad.
|
|
114
|
+
- Die Compatibility-Matrix akzeptiert App-Platform-Preview und native vNext-
|
|
115
|
+
Quelle gemeinsam.
|
|
116
|
+
|
|
117
|
+
Damit wird die Upgrade-Regel testbar: Legacy ist weiterhin beweisbar
|
|
118
|
+
kompatibel, aber die Developer Experience fuer neue App-Shell-Arbeit liegt in
|
|
119
|
+
vNext.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# RMT vNext Primitive Parser AST
|
|
2
|
+
|
|
3
|
+
- Contract: `xtend.rmt.vnext-primitive-parser-ast.v1`
|
|
4
|
+
- Workpackage: `RMT-VNEXT-PRIM-02`
|
|
5
|
+
- Status: `completed`
|
|
6
|
+
- Parent backlog: [RMT vNext Primitive Compiler Backlog](./rmt-vnext-primitives-compiler-backlog.md)
|
|
7
|
+
- Grammar contract: [RMT vNext Primitive Grammar Design](./rmt-vnext-primitive-grammar-design.md)
|
|
8
|
+
- Parser module: `tools/rmt-language/vnext-parser.js`
|
|
9
|
+
- Parser suite: `tests/rmt-language/rmt_vnext_parser_suite.js`
|
|
10
|
+
- Fixture: `tests/rmt-language/fixtures/vnext-primitives-grammar-design.rmt`
|
|
11
|
+
|
|
12
|
+
## Ziel
|
|
13
|
+
|
|
14
|
+
PRIM-02 erweitert den bestehenden vNext-Parser so, dass die in PRIM-01
|
|
15
|
+
definierte Primitive-Syntax als echte AST-Nodes sichtbar wird. Der Slice bleibt
|
|
16
|
+
abwaertskompatibel mit der bisherigen `template/surface/lane`-Syntax.
|
|
17
|
+
|
|
18
|
+
Compiler-Lowering und Kernel-Ingestion bleiben Folgearbeit in
|
|
19
|
+
`RMT-VNEXT-PRIM-04`. Die erste App-Graph-Semantik ist in
|
|
20
|
+
`RMT-VNEXT-PRIM-03` gestartet.
|
|
21
|
+
|
|
22
|
+
## Implementierter Parser-Umfang
|
|
23
|
+
|
|
24
|
+
Der Parser akzeptiert jetzt die Design-Fixture
|
|
25
|
+
`vnext-primitives-grammar-design.rmt` ohne Syntaxdiagnosen und erzeugt
|
|
26
|
+
initiale AST-Nodes fuer:
|
|
27
|
+
|
|
28
|
+
| Primitive | AST Nodes |
|
|
29
|
+
|-----------|-----------|
|
|
30
|
+
| State | `RmtStateDeclaration`, `RmtInitialBlock`, `RmtInitialValueEntry`, `RmtPrimitiveValue`, `RmtTypeReference` |
|
|
31
|
+
| Selector | `RmtSelectorDeclaration`, `RmtSelectorWhereClause`, `RmtSelectorFindClause`, `RmtSelectorSortClause`, `RmtSelectorOutputClause` |
|
|
32
|
+
| DataSource | `RmtDataSourceDeclaration`, `RmtPrimitiveSourceReference`, `RmtDataSourceMethodClause`, `RmtDataSourceContractClause`, `RmtDataSourceResultClause`, `RmtDataSourceFallbackClause` |
|
|
33
|
+
| Action | `RmtActionDeclaration`, `RmtActionInputClause`, `RmtActionStatusClause`, `RmtEffectStatement`, `RmtReducerStatement`, `RmtEmitStatement`, `RmtActionResultHandler` |
|
|
34
|
+
| Portal | `RmtPortalDeclaration`, `RmtPrimitiveAttribute`, `RmtPortalPolicyClause` |
|
|
35
|
+
| Overlay | `RmtOverlayDeclaration`, `RmtOverlayPolicyClause` |
|
|
36
|
+
| Resource | `RmtResourceDeclaration`, `RmtResourceImportClause`, `RmtResourceSourceClause`, `RmtResourceDisposeClause` |
|
|
37
|
+
| Surface | erweiterte `RmtSurfaceDeclaration`, `RmtSurfaceHeaderClause`, `RmtSurfaceSourceClause`, `RmtSurfaceRepeatClause`, `RmtSurfaceKeyClause`, `RmtSurfacePortalClause`, `RmtSurfaceBoundsClause`, `RmtSurfacePreserveClause`, `RmtSurfaceDestroyClause` |
|
|
38
|
+
| Event | erweiterte `RmtEventBinding`, `RmtEventSelector`, `RmtEventPayloadBlock`, `RmtEventPayloadMapping`, `RmtEventOptionClause` |
|
|
39
|
+
|
|
40
|
+
## Parser-Grenzen
|
|
41
|
+
|
|
42
|
+
- Selector-Ausdruecke wie `contains(record.name, state.media.filters.query)`
|
|
43
|
+
werden in PRIM-02 als deklarative Raw-Clause mit Source Range erhalten.
|
|
44
|
+
Die semantische Operator-AST folgt in PRIM-03.
|
|
45
|
+
- Action-Result-Handler wie `on success -> reduce ...` erhalten den Effekttext
|
|
46
|
+
und die Source Range. Typisierte Effect-Nodes folgen in PRIM-03/04.
|
|
47
|
+
- Der Compiler ignoriert unbekannte Template-Body-Nodes weiterhin, damit
|
|
48
|
+
bestehende vNext-Core-Builds stabil bleiben. Primitive-Lowering ist PRIM-04.
|
|
49
|
+
- Der RMT-Kernel wird in PRIM-02 nicht ingestiert. Das Source-to-Sea-Gate ist
|
|
50
|
+
PRIM-06.
|
|
51
|
+
|
|
52
|
+
## Verifikation
|
|
53
|
+
|
|
54
|
+
Direkte lokale Checks:
|
|
55
|
+
|
|
56
|
+
```bash
|
|
57
|
+
node --check tools/rmt-language/vnext-parser.js
|
|
58
|
+
node --check tests/rmt-language/rmt_vnext_parser_suite.js
|
|
59
|
+
node -e "const { runRmtVNextParserSuite } = require('./tests/rmt-language/rmt_vnext_parser_suite'); const result = runRmtVNextParserSuite(); process.exit(result.ok ? 0 : 1)"
|
|
60
|
+
node -e "const { runRmtVNextCompilerSuite } = require('./tests/rmt-language/rmt_vnext_compiler_suite'); const result = runRmtVNextCompilerSuite(); process.exit(result.ok ? 0 : 1)"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Der globale Runner `node scripts/run_xtend_tests.js rmt-vnext-parser --json`
|
|
64
|
+
ist aktuell durch bestehende Merge-Conflict-Marker in
|
|
65
|
+
`tests/references/reference_path_suite.js` blockiert, weil der Runner diese
|
|
66
|
+
Suite beim Start importiert.
|
|
67
|
+
|
|
68
|
+
## Handoff
|
|
69
|
+
|
|
70
|
+
- `RMT-VNEXT-PRIM-03`: [RMT vNext Primitive Semantic Graph](./rmt-vnext-primitive-semantic-graph.md)
|
|
71
|
+
baut Indexe, Referenzen und Pre-Runtime-Diagnostics fuer die Primitive-AST-
|
|
72
|
+
Nodes auf.
|
|
73
|
+
- `RMT-VNEXT-PRIM-04`: Primitive-AST und Semantic Graph in Core-/App-Platform-
|
|
74
|
+
Records absenken.
|
|
75
|
+
- Language Server nachziehen: completions, hover, symbols und code actions fuer
|
|
76
|
+
die neuen Node-Typen.
|