@miragon/pulse-widget-shell 0.0.0-bootstrap.0 → 0.21.0
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/LICENSE +21 -0
- package/README.md +163 -3
- package/dist/adapt-data-widget.d.ts +7 -0
- package/dist/adapt-data-widget.d.ts.map +1 -0
- package/dist/adapt-data-widget.js +7 -0
- package/dist/adapt-data-widget.js.map +1 -0
- package/dist/bpmn-names.d.ts +42 -0
- package/dist/bpmn-names.d.ts.map +1 -0
- package/dist/bpmn-names.js +151 -0
- package/dist/bpmn-names.js.map +1 -0
- package/dist/bpmn-names.test.d.ts +2 -0
- package/dist/bpmn-names.test.d.ts.map +1 -0
- package/dist/bpmn-names.test.js +143 -0
- package/dist/bpmn-names.test.js.map +1 -0
- package/dist/build-data-feed-result.test.d.ts +2 -0
- package/dist/build-data-feed-result.test.d.ts.map +1 -0
- package/dist/build-data-feed-result.test.js +28 -0
- package/dist/build-data-feed-result.test.js.map +1 -0
- package/dist/build-single-widget-view.test.d.ts +2 -0
- package/dist/build-single-widget-view.test.d.ts.map +1 -0
- package/dist/build-single-widget-view.test.js +136 -0
- package/dist/build-single-widget-view.test.js.map +1 -0
- package/dist/builder-texts.d.ts +27 -0
- package/dist/builder-texts.d.ts.map +1 -0
- package/dist/builder-texts.js +32 -0
- package/dist/builder-texts.js.map +1 -0
- package/dist/builder-texts.test.d.ts +2 -0
- package/dist/builder-texts.test.d.ts.map +1 -0
- package/dist/builder-texts.test.js +54 -0
- package/dist/builder-texts.test.js.map +1 -0
- package/dist/catalogue-sync.d.ts +18 -0
- package/dist/catalogue-sync.d.ts.map +1 -0
- package/dist/catalogue-sync.js +31 -0
- package/dist/catalogue-sync.js.map +1 -0
- package/dist/catalogue-sync.test.d.ts +2 -0
- package/dist/catalogue-sync.test.d.ts.map +1 -0
- package/dist/catalogue-sync.test.js +22 -0
- package/dist/catalogue-sync.test.js.map +1 -0
- package/dist/composed-server.d.ts +110 -0
- package/dist/composed-server.d.ts.map +1 -0
- package/dist/composed-server.edge.test.d.ts +2 -0
- package/dist/composed-server.edge.test.d.ts.map +1 -0
- package/dist/composed-server.edge.test.js +184 -0
- package/dist/composed-server.edge.test.js.map +1 -0
- package/dist/composed-server.fonts.test.d.ts +2 -0
- package/dist/composed-server.fonts.test.d.ts.map +1 -0
- package/dist/composed-server.fonts.test.js +186 -0
- package/dist/composed-server.fonts.test.js.map +1 -0
- package/dist/composed-server.js +260 -0
- package/dist/composed-server.js.map +1 -0
- package/dist/composed-server.test.d.ts +2 -0
- package/dist/composed-server.test.d.ts.map +1 -0
- package/dist/composed-server.test.js +332 -0
- package/dist/composed-server.test.js.map +1 -0
- package/dist/composition.d.ts +155 -0
- package/dist/composition.d.ts.map +1 -0
- package/dist/composition.js +163 -0
- package/dist/composition.js.map +1 -0
- package/dist/composition.test.d.ts +2 -0
- package/dist/composition.test.d.ts.map +1 -0
- package/dist/composition.test.js +275 -0
- package/dist/composition.test.js.map +1 -0
- package/dist/dashboard-store-postgres.d.ts +43 -0
- package/dist/dashboard-store-postgres.d.ts.map +1 -0
- package/dist/dashboard-store-postgres.js +225 -0
- package/dist/dashboard-store-postgres.js.map +1 -0
- package/dist/dashboard-store-postgres.test.d.ts +2 -0
- package/dist/dashboard-store-postgres.test.d.ts.map +1 -0
- package/dist/dashboard-store-postgres.test.js +272 -0
- package/dist/dashboard-store-postgres.test.js.map +1 -0
- package/dist/font-assets.d.ts +47 -0
- package/dist/font-assets.d.ts.map +1 -0
- package/dist/font-assets.js +93 -0
- package/dist/font-assets.js.map +1 -0
- package/dist/font-assets.test.d.ts +2 -0
- package/dist/font-assets.test.d.ts.map +1 -0
- package/dist/font-assets.test.js +123 -0
- package/dist/font-assets.test.js.map +1 -0
- package/dist/health.d.ts +59 -0
- package/dist/health.d.ts.map +1 -0
- package/dist/health.js +74 -0
- package/dist/health.js.map +1 -0
- package/dist/health.test.d.ts +2 -0
- package/dist/health.test.d.ts.map +1 -0
- package/dist/health.test.js +140 -0
- package/dist/health.test.js.map +1 -0
- package/dist/host-boot.d.ts +56 -0
- package/dist/host-boot.d.ts.map +1 -0
- package/dist/host-boot.js +64 -0
- package/dist/host-boot.js.map +1 -0
- package/dist/host-boot.test.d.ts +2 -0
- package/dist/host-boot.test.d.ts.map +1 -0
- package/dist/host-boot.test.js +59 -0
- package/dist/host-boot.test.js.map +1 -0
- package/dist/http-edge.d.ts +117 -0
- package/dist/http-edge.d.ts.map +1 -0
- package/dist/http-edge.js +219 -0
- package/dist/http-edge.js.map +1 -0
- package/dist/http-edge.test.d.ts +2 -0
- package/dist/http-edge.test.d.ts.map +1 -0
- package/dist/http-edge.test.js +255 -0
- package/dist/http-edge.test.js.map +1 -0
- package/dist/metrics.d.ts +48 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +124 -0
- package/dist/metrics.js.map +1 -0
- package/dist/metrics.test.d.ts +2 -0
- package/dist/metrics.test.d.ts.map +1 -0
- package/dist/metrics.test.js +154 -0
- package/dist/metrics.test.js.map +1 -0
- package/dist/node-listener.d.ts +61 -0
- package/dist/node-listener.d.ts.map +1 -0
- package/dist/node-listener.js +165 -0
- package/dist/node-listener.js.map +1 -0
- package/dist/node-listener.test.d.ts +2 -0
- package/dist/node-listener.test.d.ts.map +1 -0
- package/dist/node-listener.test.js +331 -0
- package/dist/node-listener.test.js.map +1 -0
- package/dist/oauth-env.d.ts +42 -0
- package/dist/oauth-env.d.ts.map +1 -0
- package/dist/oauth-env.js +78 -0
- package/dist/oauth-env.js.map +1 -0
- package/dist/oauth-env.test.d.ts +2 -0
- package/dist/oauth-env.test.d.ts.map +1 -0
- package/dist/oauth-env.test.js +76 -0
- package/dist/oauth-env.test.js.map +1 -0
- package/dist/postgres.d.ts +59 -0
- package/dist/postgres.d.ts.map +1 -0
- package/dist/postgres.js +80 -0
- package/dist/postgres.js.map +1 -0
- package/dist/profile-advisory.d.ts +19 -0
- package/dist/profile-advisory.d.ts.map +1 -0
- package/dist/profile-advisory.js +48 -0
- package/dist/profile-advisory.js.map +1 -0
- package/dist/profile-advisory.test.d.ts +2 -0
- package/dist/profile-advisory.test.d.ts.map +1 -0
- package/dist/profile-advisory.test.js +53 -0
- package/dist/profile-advisory.test.js.map +1 -0
- package/dist/profile-constants.d.ts +37 -0
- package/dist/profile-constants.d.ts.map +1 -0
- package/dist/profile-constants.js +37 -0
- package/dist/profile-constants.js.map +1 -0
- package/dist/profile-migrations.d.ts +71 -0
- package/dist/profile-migrations.d.ts.map +1 -0
- package/dist/profile-migrations.js +88 -0
- package/dist/profile-migrations.js.map +1 -0
- package/dist/profile-migrations.test.d.ts +2 -0
- package/dist/profile-migrations.test.d.ts.map +1 -0
- package/dist/profile-migrations.test.js +200 -0
- package/dist/profile-migrations.test.js.map +1 -0
- package/dist/profile-record.d.ts +60 -0
- package/dist/profile-record.d.ts.map +1 -0
- package/dist/profile-record.js +78 -0
- package/dist/profile-record.js.map +1 -0
- package/dist/profile-slice.d.ts +53 -0
- package/dist/profile-slice.d.ts.map +1 -0
- package/dist/profile-slice.js +73 -0
- package/dist/profile-slice.js.map +1 -0
- package/dist/profile-slice.test.d.ts +2 -0
- package/dist/profile-slice.test.d.ts.map +1 -0
- package/dist/profile-slice.test.js +73 -0
- package/dist/profile-slice.test.js.map +1 -0
- package/dist/profile-store-env.d.ts +34 -0
- package/dist/profile-store-env.d.ts.map +1 -0
- package/dist/profile-store-env.js +44 -0
- package/dist/profile-store-env.js.map +1 -0
- package/dist/profile-store-env.test.d.ts +2 -0
- package/dist/profile-store-env.test.d.ts.map +1 -0
- package/dist/profile-store-env.test.js +69 -0
- package/dist/profile-store-env.test.js.map +1 -0
- package/dist/profile-store-postgres.d.ts +33 -0
- package/dist/profile-store-postgres.d.ts.map +1 -0
- package/dist/profile-store-postgres.js +87 -0
- package/dist/profile-store-postgres.js.map +1 -0
- package/dist/profile-store-raw.test.d.ts +2 -0
- package/dist/profile-store-raw.test.d.ts.map +1 -0
- package/dist/profile-store-raw.test.js +185 -0
- package/dist/profile-store-raw.test.js.map +1 -0
- package/dist/profile-store.d.ts +85 -0
- package/dist/profile-store.d.ts.map +1 -0
- package/dist/profile-store.js +182 -0
- package/dist/profile-store.js.map +1 -0
- package/dist/profile-store.test.d.ts +2 -0
- package/dist/profile-store.test.d.ts.map +1 -0
- package/dist/profile-store.test.js +353 -0
- package/dist/profile-store.test.js.map +1 -0
- package/dist/profile.d.ts +75 -0
- package/dist/profile.d.ts.map +1 -0
- package/dist/profile.js +85 -0
- package/dist/profile.js.map +1 -0
- package/dist/profile.test.d.ts +2 -0
- package/dist/profile.test.d.ts.map +1 -0
- package/dist/profile.test.js +71 -0
- package/dist/profile.test.js.map +1 -0
- package/dist/request-context.d.ts +47 -0
- package/dist/request-context.d.ts.map +1 -0
- package/dist/request-context.js +85 -0
- package/dist/request-context.js.map +1 -0
- package/dist/request-context.test.d.ts +2 -0
- package/dist/request-context.test.d.ts.map +1 -0
- package/dist/request-context.test.js +107 -0
- package/dist/request-context.test.js.map +1 -0
- package/dist/served-fonts.d.ts +38 -0
- package/dist/served-fonts.d.ts.map +1 -0
- package/dist/served-fonts.js +51 -0
- package/dist/served-fonts.js.map +1 -0
- package/dist/served-fonts.test.d.ts +2 -0
- package/dist/served-fonts.test.d.ts.map +1 -0
- package/dist/served-fonts.test.js +30 -0
- package/dist/served-fonts.test.js.map +1 -0
- package/dist/server-locale.d.ts +58 -0
- package/dist/server-locale.d.ts.map +1 -0
- package/dist/server-locale.js +64 -0
- package/dist/server-locale.js.map +1 -0
- package/dist/server-locale.test.d.ts +2 -0
- package/dist/server-locale.test.d.ts.map +1 -0
- package/dist/server-locale.test.js +90 -0
- package/dist/server-locale.test.js.map +1 -0
- package/dist/server.d.ts +43 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +34 -0
- package/dist/server.js.map +1 -0
- package/dist/shell-catalogue.d.ts +12 -0
- package/dist/shell-catalogue.d.ts.map +1 -0
- package/dist/shell-catalogue.js +142 -0
- package/dist/shell-catalogue.js.map +1 -0
- package/dist/shell-settings-contract.d.ts +34 -0
- package/dist/shell-settings-contract.d.ts.map +1 -0
- package/dist/shell-settings-contract.js +21 -0
- package/dist/shell-settings-contract.js.map +1 -0
- package/dist/shell-settings.d.ts +24 -0
- package/dist/shell-settings.d.ts.map +1 -0
- package/dist/shell-settings.js +148 -0
- package/dist/shell-settings.js.map +1 -0
- package/dist/shell-settings.test.d.ts +2 -0
- package/dist/shell-settings.test.d.ts.map +1 -0
- package/dist/shell-settings.test.js +115 -0
- package/dist/shell-settings.test.js.map +1 -0
- package/dist/testing/catalog-text.d.ts +53 -0
- package/dist/testing/catalog-text.d.ts.map +1 -0
- package/dist/testing/catalog-text.js +146 -0
- package/dist/testing/catalog-text.js.map +1 -0
- package/dist/testing/catalog-text.test.d.ts +2 -0
- package/dist/testing/catalog-text.test.d.ts.map +1 -0
- package/dist/testing/catalog-text.test.js +137 -0
- package/dist/testing/catalog-text.test.js.map +1 -0
- package/dist/testing/colors.d.ts +34 -0
- package/dist/testing/colors.d.ts.map +1 -0
- package/dist/testing/colors.js +124 -0
- package/dist/testing/colors.js.map +1 -0
- package/dist/testing/colors.test.d.ts +2 -0
- package/dist/testing/colors.test.d.ts.map +1 -0
- package/dist/testing/colors.test.js +166 -0
- package/dist/testing/colors.test.js.map +1 -0
- package/dist/testing/contrast.d.ts +77 -0
- package/dist/testing/contrast.d.ts.map +1 -0
- package/dist/testing/contrast.js +382 -0
- package/dist/testing/contrast.js.map +1 -0
- package/dist/testing/contrast.test.d.ts +2 -0
- package/dist/testing/contrast.test.d.ts.map +1 -0
- package/dist/testing/contrast.test.js +230 -0
- package/dist/testing/contrast.test.js.map +1 -0
- package/dist/testing/display-texts.d.ts +23 -0
- package/dist/testing/display-texts.d.ts.map +1 -0
- package/dist/testing/display-texts.js +88 -0
- package/dist/testing/display-texts.js.map +1 -0
- package/dist/testing/display-texts.test.d.ts +2 -0
- package/dist/testing/display-texts.test.d.ts.map +1 -0
- package/dist/testing/display-texts.test.js +169 -0
- package/dist/testing/display-texts.test.js.map +1 -0
- package/dist/testing/glossary.d.ts +52 -0
- package/dist/testing/glossary.d.ts.map +1 -0
- package/dist/testing/glossary.js +135 -0
- package/dist/testing/glossary.js.map +1 -0
- package/dist/testing/glossary.test.d.ts +2 -0
- package/dist/testing/glossary.test.d.ts.map +1 -0
- package/dist/testing/glossary.test.js +78 -0
- package/dist/testing/glossary.test.js.map +1 -0
- package/dist/testing/glyphs.d.ts +27 -0
- package/dist/testing/glyphs.d.ts.map +1 -0
- package/dist/testing/glyphs.js +130 -0
- package/dist/testing/glyphs.js.map +1 -0
- package/dist/testing/glyphs.test.d.ts +2 -0
- package/dist/testing/glyphs.test.d.ts.map +1 -0
- package/dist/testing/glyphs.test.js +146 -0
- package/dist/testing/glyphs.test.js.map +1 -0
- package/dist/testing/icon-sizes.d.ts +22 -0
- package/dist/testing/icon-sizes.d.ts.map +1 -0
- package/dist/testing/icon-sizes.js +39 -0
- package/dist/testing/icon-sizes.js.map +1 -0
- package/dist/testing/icon-sizes.test.d.ts +2 -0
- package/dist/testing/icon-sizes.test.d.ts.map +1 -0
- package/dist/testing/icon-sizes.test.js +36 -0
- package/dist/testing/icon-sizes.test.js.map +1 -0
- package/dist/testing/index.d.ts +40 -0
- package/dist/testing/index.d.ts.map +1 -0
- package/dist/testing/index.js +40 -0
- package/dist/testing/index.js.map +1 -0
- package/dist/testing/source-scan.d.ts +16 -0
- package/dist/testing/source-scan.d.ts.map +1 -0
- package/dist/testing/source-scan.js +57 -0
- package/dist/testing/source-scan.js.map +1 -0
- package/dist/testing/tone-pairs.d.ts +20 -0
- package/dist/testing/tone-pairs.d.ts.map +1 -0
- package/dist/testing/tone-pairs.js +154 -0
- package/dist/testing/tone-pairs.js.map +1 -0
- package/dist/testing/type-scale.d.ts +40 -0
- package/dist/testing/type-scale.d.ts.map +1 -0
- package/dist/testing/type-scale.js +55 -0
- package/dist/testing/type-scale.js.map +1 -0
- package/dist/testing/type-scale.test.d.ts +2 -0
- package/dist/testing/type-scale.test.d.ts.map +1 -0
- package/dist/testing/type-scale.test.js +61 -0
- package/dist/testing/type-scale.test.js.map +1 -0
- package/dist/tool-schema-trim.d.ts +24 -0
- package/dist/tool-schema-trim.d.ts.map +1 -0
- package/dist/tool-schema-trim.js +49 -0
- package/dist/tool-schema-trim.js.map +1 -0
- package/dist/tool-schema-trim.test.d.ts +2 -0
- package/dist/tool-schema-trim.test.d.ts.map +1 -0
- package/dist/tool-schema-trim.test.js +53 -0
- package/dist/tool-schema-trim.test.js.map +1 -0
- package/dist/toolsets.d.ts +76 -0
- package/dist/toolsets.d.ts.map +1 -0
- package/dist/toolsets.js +41 -0
- package/dist/toolsets.js.map +1 -0
- package/dist/toolsets.test.d.ts +2 -0
- package/dist/toolsets.test.d.ts.map +1 -0
- package/dist/toolsets.test.js +86 -0
- package/dist/toolsets.test.js.map +1 -0
- package/dist/ui/action-feedback.d.ts +33 -0
- package/dist/ui/action-feedback.d.ts.map +1 -0
- package/dist/ui/action-feedback.js +51 -0
- package/dist/ui/action-feedback.js.map +1 -0
- package/dist/ui/action-feedback.test.d.ts +2 -0
- package/dist/ui/action-feedback.test.d.ts.map +1 -0
- package/dist/ui/action-feedback.test.js +77 -0
- package/dist/ui/action-feedback.test.js.map +1 -0
- package/dist/ui/app-shell-providers.d.ts +18 -0
- package/dist/ui/app-shell-providers.d.ts.map +1 -0
- package/dist/ui/app-shell-providers.js +19 -0
- package/dist/ui/app-shell-providers.js.map +1 -0
- package/dist/ui/app-shell-providers.test.d.ts +2 -0
- package/dist/ui/app-shell-providers.test.d.ts.map +1 -0
- package/dist/ui/app-shell-providers.test.js +249 -0
- package/dist/ui/app-shell-providers.test.js.map +1 -0
- package/dist/ui/ask-ai-button.d.ts +56 -0
- package/dist/ui/ask-ai-button.d.ts.map +1 -0
- package/dist/ui/ask-ai-button.js +36 -0
- package/dist/ui/ask-ai-button.js.map +1 -0
- package/dist/ui/ask-ai-button.test.d.ts +2 -0
- package/dist/ui/ask-ai-button.test.d.ts.map +1 -0
- package/dist/ui/ask-ai-button.test.js +103 -0
- package/dist/ui/ask-ai-button.test.js.map +1 -0
- package/dist/ui/ask-ai-prompt.d.ts +115 -0
- package/dist/ui/ask-ai-prompt.d.ts.map +1 -0
- package/dist/ui/ask-ai-prompt.js +174 -0
- package/dist/ui/ask-ai-prompt.js.map +1 -0
- package/dist/ui/ask-ai-prompt.test.d.ts +2 -0
- package/dist/ui/ask-ai-prompt.test.d.ts.map +1 -0
- package/dist/ui/ask-ai-prompt.test.js +240 -0
- package/dist/ui/ask-ai-prompt.test.js.map +1 -0
- package/dist/ui/bpmn-heatmap/heat-ramp.test.d.ts +2 -0
- package/dist/ui/bpmn-heatmap/heat-ramp.test.d.ts.map +1 -0
- package/dist/ui/bpmn-heatmap/heat-ramp.test.js +174 -0
- package/dist/ui/bpmn-heatmap/heat-ramp.test.js.map +1 -0
- package/dist/ui/bpmn-heatmap/heat-utils.d.ts +119 -0
- package/dist/ui/bpmn-heatmap/heat-utils.d.ts.map +1 -0
- package/dist/ui/bpmn-heatmap/heat-utils.js +231 -0
- package/dist/ui/bpmn-heatmap/heat-utils.js.map +1 -0
- package/dist/ui/bpmn-heatmap/heat-utils.test.d.ts +2 -0
- package/dist/ui/bpmn-heatmap/heat-utils.test.d.ts.map +1 -0
- package/dist/ui/bpmn-heatmap/heat-utils.test.js +59 -0
- package/dist/ui/bpmn-heatmap/heat-utils.test.js.map +1 -0
- package/dist/ui/bpmn-heatmap-labels.d.ts +46 -0
- package/dist/ui/bpmn-heatmap-labels.d.ts.map +1 -0
- package/dist/ui/bpmn-heatmap-labels.js +16 -0
- package/dist/ui/bpmn-heatmap-labels.js.map +1 -0
- package/dist/ui/bpmn-heatmap-widget.d.ts +38 -0
- package/dist/ui/bpmn-heatmap-widget.d.ts.map +1 -0
- package/dist/ui/bpmn-heatmap-widget.js +65 -0
- package/dist/ui/bpmn-heatmap-widget.js.map +1 -0
- package/dist/ui/bpmn-heatmap-widget.test.d.ts +2 -0
- package/dist/ui/bpmn-heatmap-widget.test.d.ts.map +1 -0
- package/dist/ui/bpmn-heatmap-widget.test.js +173 -0
- package/dist/ui/bpmn-heatmap-widget.test.js.map +1 -0
- package/dist/ui/bpmn-heatmap.d.ts +61 -0
- package/dist/ui/bpmn-heatmap.d.ts.map +1 -0
- package/dist/ui/bpmn-heatmap.js +119 -0
- package/dist/ui/bpmn-heatmap.js.map +1 -0
- package/dist/ui/bpmn-tokens.d.ts +81 -0
- package/dist/ui/bpmn-tokens.d.ts.map +1 -0
- package/dist/ui/bpmn-tokens.js +114 -0
- package/dist/ui/bpmn-tokens.js.map +1 -0
- package/dist/ui/bpmn-tokens.test.d.ts +2 -0
- package/dist/ui/bpmn-tokens.test.d.ts.map +1 -0
- package/dist/ui/bpmn-tokens.test.js +98 -0
- package/dist/ui/bpmn-tokens.test.js.map +1 -0
- package/dist/ui/bpmn-zoom-controls.d.ts +30 -0
- package/dist/ui/bpmn-zoom-controls.d.ts.map +1 -0
- package/dist/ui/bpmn-zoom-controls.js +29 -0
- package/dist/ui/bpmn-zoom-controls.js.map +1 -0
- package/dist/ui/brand-gates.test.d.ts +2 -0
- package/dist/ui/brand-gates.test.d.ts.map +1 -0
- package/dist/ui/brand-gates.test.js +131 -0
- package/dist/ui/brand-gates.test.js.map +1 -0
- package/dist/ui/brand-mark.d.ts +37 -0
- package/dist/ui/brand-mark.d.ts.map +1 -0
- package/dist/ui/brand-mark.js +33 -0
- package/dist/ui/brand-mark.js.map +1 -0
- package/dist/ui/brand-mark.test.d.ts +2 -0
- package/dist/ui/brand-mark.test.d.ts.map +1 -0
- package/dist/ui/brand-mark.test.js +111 -0
- package/dist/ui/brand-mark.test.js.map +1 -0
- package/dist/ui/confirm-dialog.d.ts +55 -0
- package/dist/ui/confirm-dialog.d.ts.map +1 -0
- package/dist/ui/confirm-dialog.js +59 -0
- package/dist/ui/confirm-dialog.js.map +1 -0
- package/dist/ui/confirm-dialog.test.d.ts +2 -0
- package/dist/ui/confirm-dialog.test.d.ts.map +1 -0
- package/dist/ui/confirm-dialog.test.js +115 -0
- package/dist/ui/confirm-dialog.test.js.map +1 -0
- package/dist/ui/count-tone.d.ts +20 -0
- package/dist/ui/count-tone.d.ts.map +1 -0
- package/dist/ui/count-tone.js +27 -0
- package/dist/ui/count-tone.js.map +1 -0
- package/dist/ui/count-tone.test.d.ts +2 -0
- package/dist/ui/count-tone.test.d.ts.map +1 -0
- package/dist/ui/count-tone.test.js +27 -0
- package/dist/ui/count-tone.test.js.map +1 -0
- package/dist/ui/create-use-t.d.ts +15 -0
- package/dist/ui/create-use-t.d.ts.map +1 -0
- package/dist/ui/create-use-t.js +17 -0
- package/dist/ui/create-use-t.js.map +1 -0
- package/dist/ui/declare-served-fonts.d.ts +14 -0
- package/dist/ui/declare-served-fonts.d.ts.map +1 -0
- package/dist/ui/declare-served-fonts.js +38 -0
- package/dist/ui/declare-served-fonts.js.map +1 -0
- package/dist/ui/declare-served-fonts.test.d.ts +2 -0
- package/dist/ui/declare-served-fonts.test.d.ts.map +1 -0
- package/dist/ui/declare-served-fonts.test.js +44 -0
- package/dist/ui/declare-served-fonts.test.js.map +1 -0
- package/dist/ui/describe-error.d.ts +71 -0
- package/dist/ui/describe-error.d.ts.map +1 -0
- package/dist/ui/describe-error.js +175 -0
- package/dist/ui/describe-error.js.map +1 -0
- package/dist/ui/describe-error.test.d.ts +2 -0
- package/dist/ui/describe-error.test.d.ts.map +1 -0
- package/dist/ui/describe-error.test.js +274 -0
- package/dist/ui/describe-error.test.js.map +1 -0
- package/dist/ui/display-mode-toggle.d.ts +32 -0
- package/dist/ui/display-mode-toggle.d.ts.map +1 -0
- package/dist/ui/display-mode-toggle.js +39 -0
- package/dist/ui/display-mode-toggle.js.map +1 -0
- package/dist/ui/error-labels.d.ts +65 -0
- package/dist/ui/error-labels.d.ts.map +1 -0
- package/dist/ui/error-labels.js +111 -0
- package/dist/ui/error-labels.js.map +1 -0
- package/dist/ui/format.d.ts +81 -0
- package/dist/ui/format.d.ts.map +1 -0
- package/dist/ui/format.js +189 -0
- package/dist/ui/format.js.map +1 -0
- package/dist/ui/format.test.d.ts +2 -0
- package/dist/ui/format.test.d.ts.map +1 -0
- package/dist/ui/format.test.js +181 -0
- package/dist/ui/format.test.js.map +1 -0
- package/dist/ui/generic-widgets.d.ts +15 -0
- package/dist/ui/generic-widgets.d.ts.map +1 -0
- package/dist/ui/generic-widgets.js +122 -0
- package/dist/ui/generic-widgets.js.map +1 -0
- package/dist/ui/generic-widgets.test.d.ts +2 -0
- package/dist/ui/generic-widgets.test.d.ts.map +1 -0
- package/dist/ui/generic-widgets.test.js +139 -0
- package/dist/ui/generic-widgets.test.js.map +1 -0
- package/dist/ui/hand-off-button.d.ts +44 -0
- package/dist/ui/hand-off-button.d.ts.map +1 -0
- package/dist/ui/hand-off-button.js +44 -0
- package/dist/ui/hand-off-button.js.map +1 -0
- package/dist/ui/hand-off-button.test.d.ts +2 -0
- package/dist/ui/hand-off-button.test.d.ts.map +1 -0
- package/dist/ui/hand-off-button.test.js +78 -0
- package/dist/ui/hand-off-button.test.js.map +1 -0
- package/dist/ui/host-context.d.ts +66 -0
- package/dist/ui/host-context.d.ts.map +1 -0
- package/dist/ui/host-context.js +122 -0
- package/dist/ui/host-context.js.map +1 -0
- package/dist/ui/host-context.test.d.ts +2 -0
- package/dist/ui/host-context.test.d.ts.map +1 -0
- package/dist/ui/host-context.test.js +160 -0
- package/dist/ui/host-context.test.js.map +1 -0
- package/dist/ui/host-document.d.ts +25 -0
- package/dist/ui/host-document.d.ts.map +1 -0
- package/dist/ui/host-document.js +93 -0
- package/dist/ui/host-document.js.map +1 -0
- package/dist/ui/host-document.test.d.ts +2 -0
- package/dist/ui/host-document.test.d.ts.map +1 -0
- package/dist/ui/host-document.test.js +112 -0
- package/dist/ui/host-document.test.js.map +1 -0
- package/dist/ui/host-widgets.d.ts +8 -0
- package/dist/ui/host-widgets.d.ts.map +1 -0
- package/dist/ui/host-widgets.js +18 -0
- package/dist/ui/host-widgets.js.map +1 -0
- package/dist/ui/humanize-key.d.ts +11 -0
- package/dist/ui/humanize-key.d.ts.map +1 -0
- package/dist/ui/humanize-key.js +26 -0
- package/dist/ui/humanize-key.js.map +1 -0
- package/dist/ui/humanize-key.test.d.ts +2 -0
- package/dist/ui/humanize-key.test.d.ts.map +1 -0
- package/dist/ui/humanize-key.test.js +42 -0
- package/dist/ui/humanize-key.test.js.map +1 -0
- package/dist/ui/icon.d.ts +37 -0
- package/dist/ui/icon.d.ts.map +1 -0
- package/dist/ui/icon.js +32 -0
- package/dist/ui/icon.js.map +1 -0
- package/dist/ui/id-breaks.d.ts +17 -0
- package/dist/ui/id-breaks.d.ts.map +1 -0
- package/dist/ui/id-breaks.js +36 -0
- package/dist/ui/id-breaks.js.map +1 -0
- package/dist/ui/id-breaks.test.d.ts +2 -0
- package/dist/ui/id-breaks.test.d.ts.map +1 -0
- package/dist/ui/id-breaks.test.js +37 -0
- package/dist/ui/id-breaks.test.js.map +1 -0
- package/dist/ui/id-text.d.ts +29 -0
- package/dist/ui/id-text.d.ts.map +1 -0
- package/dist/ui/id-text.js +103 -0
- package/dist/ui/id-text.js.map +1 -0
- package/dist/ui/id-text.test.d.ts +2 -0
- package/dist/ui/id-text.test.d.ts.map +1 -0
- package/dist/ui/id-text.test.js +122 -0
- package/dist/ui/id-text.test.js.map +1 -0
- package/dist/ui/index.d.ts +57 -0
- package/dist/ui/index.d.ts.map +1 -0
- package/dist/ui/index.js +65 -0
- package/dist/ui/index.js.map +1 -0
- package/dist/ui/index.test.d.ts +2 -0
- package/dist/ui/index.test.d.ts.map +1 -0
- package/dist/ui/index.test.js +34 -0
- package/dist/ui/index.test.js.map +1 -0
- package/dist/ui/inline-budget.d.ts +35 -0
- package/dist/ui/inline-budget.d.ts.map +1 -0
- package/dist/ui/inline-budget.js +27 -0
- package/dist/ui/inline-budget.js.map +1 -0
- package/dist/ui/inline-fit-registry.d.ts +56 -0
- package/dist/ui/inline-fit-registry.d.ts.map +1 -0
- package/dist/ui/inline-fit-registry.js +114 -0
- package/dist/ui/inline-fit-registry.js.map +1 -0
- package/dist/ui/inline-fit-solve.d.ts +50 -0
- package/dist/ui/inline-fit-solve.d.ts.map +1 -0
- package/dist/ui/inline-fit-solve.js +83 -0
- package/dist/ui/inline-fit-solve.js.map +1 -0
- package/dist/ui/inline-fit-solve.test.d.ts +2 -0
- package/dist/ui/inline-fit-solve.test.d.ts.map +1 -0
- package/dist/ui/inline-fit-solve.test.js +108 -0
- package/dist/ui/inline-fit-solve.test.js.map +1 -0
- package/dist/ui/inline-fit-time.test.d.ts +2 -0
- package/dist/ui/inline-fit-time.test.d.ts.map +1 -0
- package/dist/ui/inline-fit-time.test.js +110 -0
- package/dist/ui/inline-fit-time.test.js.map +1 -0
- package/dist/ui/inline-fit.d.ts +77 -0
- package/dist/ui/inline-fit.d.ts.map +1 -0
- package/dist/ui/inline-fit.js +242 -0
- package/dist/ui/inline-fit.js.map +1 -0
- package/dist/ui/inline-fit.test-support.d.ts +26 -0
- package/dist/ui/inline-fit.test-support.d.ts.map +1 -0
- package/dist/ui/inline-fit.test-support.js +34 -0
- package/dist/ui/inline-fit.test-support.js.map +1 -0
- package/dist/ui/inline-fit.test.d.ts +2 -0
- package/dist/ui/inline-fit.test.d.ts.map +1 -0
- package/dist/ui/inline-fit.test.js +159 -0
- package/dist/ui/inline-fit.test.js.map +1 -0
- package/dist/ui/kit-labels.d.ts +80 -0
- package/dist/ui/kit-labels.d.ts.map +1 -0
- package/dist/ui/kit-labels.js +110 -0
- package/dist/ui/kit-labels.js.map +1 -0
- package/dist/ui/kit-labels.test.d.ts +2 -0
- package/dist/ui/kit-labels.test.d.ts.map +1 -0
- package/dist/ui/kit-labels.test.js +98 -0
- package/dist/ui/kit-labels.test.js.map +1 -0
- package/dist/ui/kit-type-roles.test.d.ts +2 -0
- package/dist/ui/kit-type-roles.test.d.ts.map +1 -0
- package/dist/ui/kit-type-roles.test.js +122 -0
- package/dist/ui/kit-type-roles.test.js.map +1 -0
- package/dist/ui/komet-svg.d.ts +15 -0
- package/dist/ui/komet-svg.d.ts.map +1 -0
- package/dist/ui/komet-svg.js +21 -0
- package/dist/ui/komet-svg.js.map +1 -0
- package/dist/ui/list-table.d.ts +108 -0
- package/dist/ui/list-table.d.ts.map +1 -0
- package/dist/ui/list-table.js +161 -0
- package/dist/ui/list-table.js.map +1 -0
- package/dist/ui/list-table.test.d.ts +2 -0
- package/dist/ui/list-table.test.d.ts.map +1 -0
- package/dist/ui/list-table.test.js +169 -0
- package/dist/ui/list-table.test.js.map +1 -0
- package/dist/ui/localized-app-view.d.ts +40 -0
- package/dist/ui/localized-app-view.d.ts.map +1 -0
- package/dist/ui/localized-app-view.js +71 -0
- package/dist/ui/localized-app-view.js.map +1 -0
- package/dist/ui/log-text.d.ts +24 -0
- package/dist/ui/log-text.d.ts.map +1 -0
- package/dist/ui/log-text.js +31 -0
- package/dist/ui/log-text.js.map +1 -0
- package/dist/ui/menu-item.d.ts +12 -0
- package/dist/ui/menu-item.d.ts.map +1 -0
- package/dist/ui/menu-item.js +13 -0
- package/dist/ui/menu-item.js.map +1 -0
- package/dist/ui/named-id.d.ts +23 -0
- package/dist/ui/named-id.d.ts.map +1 -0
- package/dist/ui/named-id.js +21 -0
- package/dist/ui/named-id.js.map +1 -0
- package/dist/ui/named-id.test.d.ts +2 -0
- package/dist/ui/named-id.test.d.ts.map +1 -0
- package/dist/ui/named-id.test.js +57 -0
- package/dist/ui/named-id.test.js.map +1 -0
- package/dist/ui/native-select.d.ts +17 -0
- package/dist/ui/native-select.d.ts.map +1 -0
- package/dist/ui/native-select.js +20 -0
- package/dist/ui/native-select.js.map +1 -0
- package/dist/ui/navigation-focus.d.ts +20 -0
- package/dist/ui/navigation-focus.d.ts.map +1 -0
- package/dist/ui/navigation-focus.js +25 -0
- package/dist/ui/navigation-focus.js.map +1 -0
- package/dist/ui/navigation-focus.test.d.ts +2 -0
- package/dist/ui/navigation-focus.test.d.ts.map +1 -0
- package/dist/ui/navigation-focus.test.js +28 -0
- package/dist/ui/navigation-focus.test.js.map +1 -0
- package/dist/ui/open-in-cockpit-link.d.ts +28 -0
- package/dist/ui/open-in-cockpit-link.d.ts.map +1 -0
- package/dist/ui/open-in-cockpit-link.js +41 -0
- package/dist/ui/open-in-cockpit-link.js.map +1 -0
- package/dist/ui/paged-list-footer.test.d.ts +2 -0
- package/dist/ui/paged-list-footer.test.d.ts.map +1 -0
- package/dist/ui/paged-list-footer.test.js +128 -0
- package/dist/ui/paged-list-footer.test.js.map +1 -0
- package/dist/ui/paged-rows.d.ts +24 -0
- package/dist/ui/paged-rows.d.ts.map +1 -0
- package/dist/ui/paged-rows.js +25 -0
- package/dist/ui/paged-rows.js.map +1 -0
- package/dist/ui/parse-tool-result.test.d.ts +2 -0
- package/dist/ui/parse-tool-result.test.d.ts.map +1 -0
- package/dist/ui/parse-tool-result.test.js +88 -0
- package/dist/ui/parse-tool-result.test.js.map +1 -0
- package/dist/ui/profile-gate.d.ts +37 -0
- package/dist/ui/profile-gate.d.ts.map +1 -0
- package/dist/ui/profile-gate.js +126 -0
- package/dist/ui/profile-gate.js.map +1 -0
- package/dist/ui/profile-gate.test.d.ts +2 -0
- package/dist/ui/profile-gate.test.d.ts.map +1 -0
- package/dist/ui/profile-gate.test.js +246 -0
- package/dist/ui/profile-gate.test.js.map +1 -0
- package/dist/ui/query-fallback.d.ts +27 -0
- package/dist/ui/query-fallback.d.ts.map +1 -0
- package/dist/ui/query-fallback.js +30 -0
- package/dist/ui/query-fallback.js.map +1 -0
- package/dist/ui/query-fallback.test.d.ts +2 -0
- package/dist/ui/query-fallback.test.d.ts.map +1 -0
- package/dist/ui/query-fallback.test.js +49 -0
- package/dist/ui/query-fallback.test.js.map +1 -0
- package/dist/ui/row-card.d.ts +13 -0
- package/dist/ui/row-card.d.ts.map +1 -0
- package/dist/ui/row-card.js +11 -0
- package/dist/ui/row-card.js.map +1 -0
- package/dist/ui/section.d.ts +18 -0
- package/dist/ui/section.d.ts.map +1 -0
- package/dist/ui/section.js +14 -0
- package/dist/ui/section.js.map +1 -0
- package/dist/ui/segmented-control.d.ts +25 -0
- package/dist/ui/segmented-control.d.ts.map +1 -0
- package/dist/ui/segmented-control.js +22 -0
- package/dist/ui/segmented-control.js.map +1 -0
- package/dist/ui/settings-labels.d.ts +33 -0
- package/dist/ui/settings-labels.d.ts.map +1 -0
- package/dist/ui/settings-labels.js +50 -0
- package/dist/ui/settings-labels.js.map +1 -0
- package/dist/ui/settings-layout.d.ts +29 -0
- package/dist/ui/settings-layout.d.ts.map +1 -0
- package/dist/ui/settings-layout.js +49 -0
- package/dist/ui/settings-layout.js.map +1 -0
- package/dist/ui/settings-layout.test.d.ts +2 -0
- package/dist/ui/settings-layout.test.d.ts.map +1 -0
- package/dist/ui/settings-layout.test.js +73 -0
- package/dist/ui/settings-layout.test.js.map +1 -0
- package/dist/ui/settings.d.ts +47 -0
- package/dist/ui/settings.d.ts.map +1 -0
- package/dist/ui/settings.js +48 -0
- package/dist/ui/settings.js.map +1 -0
- package/dist/ui/settings.test.d.ts +2 -0
- package/dist/ui/settings.test.d.ts.map +1 -0
- package/dist/ui/settings.test.js +38 -0
- package/dist/ui/settings.test.js.map +1 -0
- package/dist/ui/shell-host.d.ts +46 -0
- package/dist/ui/shell-host.d.ts.map +1 -0
- package/dist/ui/shell-host.js +56 -0
- package/dist/ui/shell-host.js.map +1 -0
- package/dist/ui/shell-settings.d.ts +31 -0
- package/dist/ui/shell-settings.d.ts.map +1 -0
- package/dist/ui/shell-settings.js +97 -0
- package/dist/ui/shell-settings.js.map +1 -0
- package/dist/ui/shell-settings.test.d.ts +2 -0
- package/dist/ui/shell-settings.test.d.ts.map +1 -0
- package/dist/ui/shell-settings.test.js +108 -0
- package/dist/ui/shell-settings.test.js.map +1 -0
- package/dist/ui/shell-widgets.d.ts +14 -0
- package/dist/ui/shell-widgets.d.ts.map +1 -0
- package/dist/ui/shell-widgets.js +18 -0
- package/dist/ui/shell-widgets.js.map +1 -0
- package/dist/ui/table.d.ts +61 -0
- package/dist/ui/table.d.ts.map +1 -0
- package/dist/ui/table.js +43 -0
- package/dist/ui/table.js.map +1 -0
- package/dist/ui/tone-components.test.d.ts +2 -0
- package/dist/ui/tone-components.test.d.ts.map +1 -0
- package/dist/ui/tone-components.test.js +145 -0
- package/dist/ui/tone-components.test.js.map +1 -0
- package/dist/ui/tone-contrast.test.d.ts +2 -0
- package/dist/ui/tone-contrast.test.d.ts.map +1 -0
- package/dist/ui/tone-contrast.test.js +66 -0
- package/dist/ui/tone-contrast.test.js.map +1 -0
- package/dist/ui/toolkit-overlap.test.d.ts +2 -0
- package/dist/ui/toolkit-overlap.test.d.ts.map +1 -0
- package/dist/ui/toolkit-overlap.test.js +86 -0
- package/dist/ui/toolkit-overlap.test.js.map +1 -0
- package/dist/ui/use-apply-theme.d.ts +11 -0
- package/dist/ui/use-apply-theme.d.ts.map +1 -0
- package/dist/ui/use-apply-theme.js +37 -0
- package/dist/ui/use-apply-theme.js.map +1 -0
- package/dist/ui/use-apply-theme.test.d.ts +2 -0
- package/dist/ui/use-apply-theme.test.d.ts.map +1 -0
- package/dist/ui/use-apply-theme.test.js +102 -0
- package/dist/ui/use-apply-theme.test.js.map +1 -0
- package/dist/ui/use-bpmn-viewer.d.ts +135 -0
- package/dist/ui/use-bpmn-viewer.d.ts.map +1 -0
- package/dist/ui/use-bpmn-viewer.js +257 -0
- package/dist/ui/use-bpmn-viewer.js.map +1 -0
- package/dist/ui/use-bpmn-viewer.test.d.ts +2 -0
- package/dist/ui/use-bpmn-viewer.test.d.ts.map +1 -0
- package/dist/ui/use-bpmn-viewer.test.js +239 -0
- package/dist/ui/use-bpmn-viewer.test.js.map +1 -0
- package/dist/ui/use-detail-view.d.ts +49 -0
- package/dist/ui/use-detail-view.d.ts.map +1 -0
- package/dist/ui/use-detail-view.js +52 -0
- package/dist/ui/use-detail-view.js.map +1 -0
- package/dist/ui/use-detail-view.test.d.ts +2 -0
- package/dist/ui/use-detail-view.test.d.ts.map +1 -0
- package/dist/ui/use-detail-view.test.js +178 -0
- package/dist/ui/use-detail-view.test.js.map +1 -0
- package/dist/ui/use-paged-list-view.d.ts +48 -0
- package/dist/ui/use-paged-list-view.d.ts.map +1 -0
- package/dist/ui/use-paged-list-view.js +41 -0
- package/dist/ui/use-paged-list-view.js.map +1 -0
- package/dist/ui/use-paged-list-view.test.d.ts +2 -0
- package/dist/ui/use-paged-list-view.test.d.ts.map +1 -0
- package/dist/ui/use-paged-list-view.test.js +136 -0
- package/dist/ui/use-paged-list-view.test.js.map +1 -0
- package/dist/ui/use-paged-view-data.d.ts +103 -0
- package/dist/ui/use-paged-view-data.d.ts.map +1 -0
- package/dist/ui/use-paged-view-data.js +173 -0
- package/dist/ui/use-paged-view-data.js.map +1 -0
- package/dist/ui/use-paged-view-data.seeded.test.d.ts +2 -0
- package/dist/ui/use-paged-view-data.seeded.test.d.ts.map +1 -0
- package/dist/ui/use-paged-view-data.seeded.test.js +144 -0
- package/dist/ui/use-paged-view-data.seeded.test.js.map +1 -0
- package/dist/ui/use-paged-view-data.test.d.ts +2 -0
- package/dist/ui/use-paged-view-data.test.d.ts.map +1 -0
- package/dist/ui/use-paged-view-data.test.js +330 -0
- package/dist/ui/use-paged-view-data.test.js.map +1 -0
- package/dist/ui/use-reset-on-change.d.ts +22 -0
- package/dist/ui/use-reset-on-change.d.ts.map +1 -0
- package/dist/ui/use-reset-on-change.js +29 -0
- package/dist/ui/use-reset-on-change.js.map +1 -0
- package/dist/ui/use-reset-on-change.test.d.ts +2 -0
- package/dist/ui/use-reset-on-change.test.d.ts.map +1 -0
- package/dist/ui/use-reset-on-change.test.js +61 -0
- package/dist/ui/use-reset-on-change.test.js.map +1 -0
- package/dist/ui/use-view-data.seeded.test.d.ts +2 -0
- package/dist/ui/use-view-data.seeded.test.d.ts.map +1 -0
- package/dist/ui/use-view-data.seeded.test.js +168 -0
- package/dist/ui/use-view-data.seeded.test.js.map +1 -0
- package/dist/ui/view-data-state.d.ts +52 -0
- package/dist/ui/view-data-state.d.ts.map +1 -0
- package/dist/ui/view-data-state.js +54 -0
- package/dist/ui/view-data-state.js.map +1 -0
- package/dist/ui/view-data-state.test.d.ts +2 -0
- package/dist/ui/view-data-state.test.d.ts.map +1 -0
- package/dist/ui/view-data-state.test.js +62 -0
- package/dist/ui/view-data-state.test.js.map +1 -0
- package/dist/ui/view-meta.d.ts +70 -0
- package/dist/ui/view-meta.d.ts.map +1 -0
- package/dist/ui/view-meta.js +84 -0
- package/dist/ui/view-meta.js.map +1 -0
- package/dist/ui/view-meta.test.d.ts +2 -0
- package/dist/ui/view-meta.test.d.ts.map +1 -0
- package/dist/ui/view-meta.test.js +92 -0
- package/dist/ui/view-meta.test.js.map +1 -0
- package/dist/ui/view-refresh-state.d.ts +26 -0
- package/dist/ui/view-refresh-state.d.ts.map +1 -0
- package/dist/ui/view-refresh-state.js +15 -0
- package/dist/ui/view-refresh-state.js.map +1 -0
- package/dist/ui/widget-shell.d.ts +24 -0
- package/dist/ui/widget-shell.d.ts.map +1 -0
- package/dist/ui/widget-shell.js +50 -0
- package/dist/ui/widget-shell.js.map +1 -0
- package/dist/ui/widget-shell.test.d.ts +2 -0
- package/dist/ui/widget-shell.test.d.ts.map +1 -0
- package/dist/ui/widget-shell.test.js +41 -0
- package/dist/ui/widget-shell.test.js.map +1 -0
- package/dist/view-results.d.ts +42 -0
- package/dist/view-results.d.ts.map +1 -0
- package/dist/view-results.js +17 -0
- package/dist/view-results.js.map +1 -0
- package/dist/widget-meta-defaults.d.ts +48 -0
- package/dist/widget-meta-defaults.d.ts.map +1 -0
- package/dist/widget-meta-defaults.js +80 -0
- package/dist/widget-meta-defaults.js.map +1 -0
- package/dist/widget-meta-defaults.test.d.ts +2 -0
- package/dist/widget-meta-defaults.test.d.ts.map +1 -0
- package/dist/widget-meta-defaults.test.js +196 -0
- package/dist/widget-meta-defaults.test.js.map +1 -0
- package/dist/widget-tool-bindings.d.ts +71 -0
- package/dist/widget-tool-bindings.d.ts.map +1 -0
- package/dist/widget-tool-bindings.js +80 -0
- package/dist/widget-tool-bindings.js.map +1 -0
- package/dist/widget-tool-bindings.test.d.ts +2 -0
- package/dist/widget-tool-bindings.test.d.ts.map +1 -0
- package/dist/widget-tool-bindings.test.js +83 -0
- package/dist/widget-tool-bindings.test.js.map +1 -0
- package/dist/with-tool-errors.test.d.ts +2 -0
- package/dist/with-tool-errors.test.d.ts.map +1 -0
- package/dist/with-tool-errors.test.js +38 -0
- package/dist/with-tool-errors.test.js.map +1 -0
- package/package.json +113 -5
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
// @vitest-environment happy-dom
|
|
2
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
3
|
+
import { declareServedFonts, SERVED_FONTS_STYLE_ID } from "./declare-served-fonts.js";
|
|
4
|
+
const PUBLIC_BASE = "https://mcp.example.com/mcp/_mcp-use/public/";
|
|
5
|
+
const FONT_BASE = "https://mcp.example.com/fonts/geist-5.3.0";
|
|
6
|
+
const declared = () => document.getElementById(SERVED_FONTS_STYLE_ID);
|
|
7
|
+
afterEach(() => {
|
|
8
|
+
declared()?.remove();
|
|
9
|
+
delete globalThis.__mcpUseViewConfig;
|
|
10
|
+
});
|
|
11
|
+
describe("declareServedFonts", () => {
|
|
12
|
+
it("declares Geist and Geist Mono from the view's own server, swap, once per document", () => {
|
|
13
|
+
expect(declareServedFonts(document, PUBLIC_BASE)).toBe(FONT_BASE);
|
|
14
|
+
const style = declared();
|
|
15
|
+
expect(style.parentElement).toBe(document.head);
|
|
16
|
+
expect(style.dataset.baseUrl).toBe(FONT_BASE);
|
|
17
|
+
const css = style.textContent;
|
|
18
|
+
expect(css).toContain('font-family: "Geist";');
|
|
19
|
+
expect(css).toContain('font-family: "Geist Mono";');
|
|
20
|
+
expect(css).toContain(`url("${FONT_BASE}/geist-latin-wght-normal.woff2") format("woff2")`);
|
|
21
|
+
expect(css).toContain(`url("${FONT_BASE}/geist-mono-latin-wght-normal.woff2") format("woff2")`);
|
|
22
|
+
expect(css.match(/font-display: swap;/g)).toHaveLength(2);
|
|
23
|
+
// Never inlined: the files are fetched once and cached across views.
|
|
24
|
+
expect(css).not.toContain("data:");
|
|
25
|
+
// A second mount (StrictMode, a re-rendered shell) adds nothing.
|
|
26
|
+
expect(declareServedFonts(document, "https://other.example/mcp/_mcp-use/public/")).toBe(FONT_BASE);
|
|
27
|
+
expect(document.querySelectorAll(`#${SERVED_FONTS_STYLE_ID}`)).toHaveLength(1);
|
|
28
|
+
});
|
|
29
|
+
it("reads the public base mcp-use injects into the served view document by default", () => {
|
|
30
|
+
globalThis.__mcpUseViewConfig = { publicBase: PUBLIC_BASE };
|
|
31
|
+
expect(declareServedFonts()).toBe(FONT_BASE);
|
|
32
|
+
expect(declared()).not.toBeNull();
|
|
33
|
+
});
|
|
34
|
+
it("declares nothing outside a served view document — the host's font renders", () => {
|
|
35
|
+
expect(declareServedFonts()).toBeUndefined();
|
|
36
|
+
expect(declareServedFonts(document, "")).toBeUndefined();
|
|
37
|
+
expect(declared()).toBeNull();
|
|
38
|
+
});
|
|
39
|
+
it("declares nothing for a base it cannot write into a CSS url()", () => {
|
|
40
|
+
expect(declareServedFonts(document, "http://a(b/mcp/_mcp-use/public/")).toBeUndefined();
|
|
41
|
+
expect(declared()).toBeNull();
|
|
42
|
+
});
|
|
43
|
+
});
|
|
44
|
+
//# sourceMappingURL=declare-served-fonts.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"declare-served-fonts.test.js","sourceRoot":"","sources":["../../src/ui/declare-served-fonts.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { type ErrorSource } from "./error-labels.js";
|
|
2
|
+
export type { ErrorSource } from "./error-labels.js";
|
|
3
|
+
/**
|
|
4
|
+
* What kind of failure an error text describes:
|
|
5
|
+
* - `unreachable`: no connection, or the source answered 502/503;
|
|
6
|
+
* - `timeout`: the deadline passed (the client's, or a 408/504);
|
|
7
|
+
* - `notOnServer`: the tool is not on this server (its module is inactive);
|
|
8
|
+
* - `unauthorized` / `forbidden`: the source refused the server (401 / 403);
|
|
9
|
+
* - `notFound`: the entry is gone (404);
|
|
10
|
+
* - `failed`: any other error status or engine exception;
|
|
11
|
+
* - `unknown`: nothing the kit recognises.
|
|
12
|
+
*/
|
|
13
|
+
export declare const ERROR_KINDS: readonly ["unreachable", "timeout", "notOnServer", "unauthorized", "forbidden", "notFound", "failed", "unknown"];
|
|
14
|
+
export type ErrorKind = (typeof ERROR_KINDS)[number];
|
|
15
|
+
/** The facts `classifyError` reads from an error, before any words. */
|
|
16
|
+
export interface ErrorFacts {
|
|
17
|
+
kind: ErrorKind;
|
|
18
|
+
/** HTTP status the text names, if any. */
|
|
19
|
+
status?: number;
|
|
20
|
+
source: ErrorSource;
|
|
21
|
+
/** The raw text (the error's message), or null for an error without one. */
|
|
22
|
+
raw: string | null;
|
|
23
|
+
/**
|
|
24
|
+
* The source's own words, readable: the raw text without its bracketed
|
|
25
|
+
* status code, the engine-id suffix and the write caveat
|
|
26
|
+
* ("Cannot resolve incident"); null when nothing is left.
|
|
27
|
+
*/
|
|
28
|
+
reason: string | null;
|
|
29
|
+
/**
|
|
30
|
+
* The text says a write may still have gone through (the camunda7
|
|
31
|
+
* client's caveat for a write whose answer never came: a timeout, a
|
|
32
|
+
* connection lost mid-request). Retrying blindly could apply it twice.
|
|
33
|
+
*/
|
|
34
|
+
mayHaveApplied: boolean;
|
|
35
|
+
}
|
|
36
|
+
/** An error in words: for the toolkit's `ErrorState` (title, description, details). */
|
|
37
|
+
export interface DescribedError {
|
|
38
|
+
kind: ErrorKind;
|
|
39
|
+
/** What happened, one line ("Die Engine prod ist nicht erreichbar (HTTP 503)"). */
|
|
40
|
+
title: string;
|
|
41
|
+
/** What you can do next. */
|
|
42
|
+
hint: string;
|
|
43
|
+
/** The raw reason for the collapsed "Details"; null when there was none. */
|
|
44
|
+
details: string | null;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The facts of an engine or transport error, read from its text (the wire
|
|
48
|
+
* carries text only: a tool's `isError` answer, a JSON-RPC error, a failed
|
|
49
|
+
* fetch) plus a numeric `status`/`httpStatus` when the object has one. Pure:
|
|
50
|
+
* no words, no locale.
|
|
51
|
+
*/
|
|
52
|
+
export declare function classifyError(error: unknown): ErrorFacts;
|
|
53
|
+
export interface DescribeErrorOptions {
|
|
54
|
+
/**
|
|
55
|
+
* The title for an error the kit cannot classify, in the caller's words
|
|
56
|
+
* ("Die Prozessliste konnte nicht geladen werden"). Default: the kit's
|
|
57
|
+
* "Das hat nicht geklappt" / "Something went wrong".
|
|
58
|
+
*/
|
|
59
|
+
fallbackTitle?: string;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* An engine or transport error in the words of the active locale (en/de by
|
|
63
|
+
* `supportedLanguage`, English otherwise): what happened, what you can do,
|
|
64
|
+
* and the raw text for a collapsed "Details" — never the raw
|
|
65
|
+
* "[503 ProcessEngineException] …" as the headline. Feed the result to the
|
|
66
|
+
* toolkit's `ErrorState` (`title`, `description` = hint, `details`); the
|
|
67
|
+
* kit's `ViewDataState`, `QueryFallback`, `useDetailView`, `ConfirmDialog`
|
|
68
|
+
* and `useActionFeedback` do.
|
|
69
|
+
*/
|
|
70
|
+
export declare function describeError(error: unknown, locale: string | undefined, options?: DescribeErrorOptions): DescribedError;
|
|
71
|
+
//# sourceMappingURL=describe-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describe-error.d.ts","sourceRoot":"","sources":["../../src/ui/describe-error.ts"],"names":[],"mappings":"AACA,OAAO,EAAsC,KAAK,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAExF,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEpD;;;;;;;;;GASG;AACH,eAAO,MAAM,WAAW,kHASd,CAAA;AAEV,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAA;AAEpD,uEAAuE;AACvE,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,SAAS,CAAA;IACf,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,WAAW,CAAA;IACnB,4EAA4E;IAC5E,GAAG,EAAE,MAAM,GAAG,IAAI,CAAA;IAClB;;;;OAIG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB;;;;OAIG;IACH,cAAc,EAAE,OAAO,CAAA;CACxB;AAED,uFAAuF;AACvF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,SAAS,CAAA;IACf,mFAAmF;IACnF,KAAK,EAAE,MAAM,CAAA;IACb,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAA;IACZ,4EAA4E;IAC5E,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;CACvB;AAyGD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,UAAU,CAYxD;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,OAAO,GAAE,oBAAyB,GACjC,cAAc,CAgBhB"}
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
import { supportedLanguage } from "./host-context.js";
|
|
2
|
+
import { ERROR_LABELS } from "./error-labels.js";
|
|
3
|
+
/**
|
|
4
|
+
* What kind of failure an error text describes:
|
|
5
|
+
* - `unreachable`: no connection, or the source answered 502/503;
|
|
6
|
+
* - `timeout`: the deadline passed (the client's, or a 408/504);
|
|
7
|
+
* - `notOnServer`: the tool is not on this server (its module is inactive);
|
|
8
|
+
* - `unauthorized` / `forbidden`: the source refused the server (401 / 403);
|
|
9
|
+
* - `notFound`: the entry is gone (404);
|
|
10
|
+
* - `failed`: any other error status or engine exception;
|
|
11
|
+
* - `unknown`: nothing the kit recognises.
|
|
12
|
+
*/
|
|
13
|
+
export const ERROR_KINDS = [
|
|
14
|
+
"unreachable",
|
|
15
|
+
"timeout",
|
|
16
|
+
"notOnServer",
|
|
17
|
+
"unauthorized",
|
|
18
|
+
"forbidden",
|
|
19
|
+
"notFound",
|
|
20
|
+
"failed",
|
|
21
|
+
"unknown",
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* `[503 ProcessEngineException] …` (the camunda7 client's engine responses,
|
|
25
|
+
* `withToolErrors`' `[code] …`) and `Prometheus query failed (503 …)`.
|
|
26
|
+
*/
|
|
27
|
+
const BRACKET_STATUS = /\[(\d{3})(?:[\s\]])/;
|
|
28
|
+
const PROMETHEUS_STATUS = /Prometheus query failed \((\d{3})\b/;
|
|
29
|
+
/** The engine id the camunda7 client appends or leads with. */
|
|
30
|
+
const ENGINE_ID = /\(engine ([^\s)]+)\)|\bengine (\S+) (?:unreachable|did not respond)|connection to engine (\S+) failed/;
|
|
31
|
+
const ENGINE = /\bengine\b|ProcessEngineException|\bCamunda\b|\bCIB seven\b/i;
|
|
32
|
+
const PROMETHEUS = /\bPrometheus\b/;
|
|
33
|
+
const TOOL_MISSING = /\btool\b[^\n]*\bnot found\b|\bunknown tool\b|-32601\b|\bmethod not found\b/i;
|
|
34
|
+
const TIMEOUT = /\(timeout\)|\btimed? ?out\b|-32001\b|did not respond within/i;
|
|
35
|
+
const UNREACHABLE = /\bunreachable\b|\bconnection to \S+(?: \S+)? failed\b|ECONNREFUSED|ENOTFOUND|EHOSTUNREACH|ENETUNREACH|EAI_AGAIN|\bfailed to fetch\b|\bfetch failed\b|\bnetworkerror\b|\bload failed\b/i;
|
|
36
|
+
/** The camunda7 client's caveat on a write whose outcome is unknown. */
|
|
37
|
+
const WRITE_CAVEAT = /the \w+ may still have been applied\b/i;
|
|
38
|
+
/** The bracketed status and exception: `[500 ProcessEngineException] `. */
|
|
39
|
+
const STATUS_CODE = /\[\d{3}(?:\s[^\]\n]{0,120})?\]\s*/;
|
|
40
|
+
/** Any other leading bracketed code (`withToolErrors`' `[code] …`). */
|
|
41
|
+
const LEADING_CODE = /^\[[^\]\n]{1,120}\]\s*/;
|
|
42
|
+
/** The engine id the camunda7 client appends: ` (engine prod)`. */
|
|
43
|
+
const ENGINE_SUFFIX = /\(engine [^\s)]+\)$/;
|
|
44
|
+
/*
|
|
45
|
+
* The cuts below trim whitespace with String#trimEnd instead of `\s*` in the
|
|
46
|
+
* patterns: a leading `\s*` on an unanchored pattern backtracks polynomially
|
|
47
|
+
* over a long whitespace run (CodeQL js/polynomial-redos), and these helpers
|
|
48
|
+
* read error text that comes from the wire.
|
|
49
|
+
*/
|
|
50
|
+
/** The text before the write caveat, without the separator that led into it. */
|
|
51
|
+
function withoutWriteCaveat(text) {
|
|
52
|
+
const caveat = WRITE_CAVEAT.exec(text);
|
|
53
|
+
if (!caveat)
|
|
54
|
+
return text;
|
|
55
|
+
const head = text.slice(0, caveat.index).trimEnd();
|
|
56
|
+
return /[—;-]$/.test(head) ? head.slice(0, -1).trimEnd() : head;
|
|
57
|
+
}
|
|
58
|
+
/** The text without the trailing ` (engine <id>)` the client appends. */
|
|
59
|
+
function withoutEngineSuffix(text) {
|
|
60
|
+
const trimmed = text.trimEnd();
|
|
61
|
+
const suffix = ENGINE_SUFFIX.exec(trimmed);
|
|
62
|
+
return suffix ? trimmed.slice(0, suffix.index).trimEnd() : text;
|
|
63
|
+
}
|
|
64
|
+
/** The raw text as the source's own words (see {@link ErrorFacts.reason}). */
|
|
65
|
+
function reasonOf(text) {
|
|
66
|
+
const rest = withoutWriteCaveat(text);
|
|
67
|
+
const code = STATUS_CODE.exec(rest);
|
|
68
|
+
const words = code ? rest.slice(code.index + code[0].length) : rest.replace(LEADING_CODE, "");
|
|
69
|
+
return withoutEngineSuffix(words).trim() || null;
|
|
70
|
+
}
|
|
71
|
+
/** The message of whatever was thrown (an `Error`, a string, an `{ message }`). */
|
|
72
|
+
function rawText(error) {
|
|
73
|
+
if (error instanceof Error)
|
|
74
|
+
return error.message.trim() || null;
|
|
75
|
+
if (typeof error === "string")
|
|
76
|
+
return error.trim() || null;
|
|
77
|
+
if (typeof error === "object" && error !== null) {
|
|
78
|
+
const message = error.message;
|
|
79
|
+
if (typeof message === "string")
|
|
80
|
+
return message.trim() || null;
|
|
81
|
+
}
|
|
82
|
+
return null;
|
|
83
|
+
}
|
|
84
|
+
/** A numeric HTTP status on the error object (`status` / `httpStatus`), or in its text. */
|
|
85
|
+
function statusOf(error, text) {
|
|
86
|
+
if (typeof error === "object" && error !== null) {
|
|
87
|
+
for (const key of ["httpStatus", "status"]) {
|
|
88
|
+
const value = error[key];
|
|
89
|
+
if (typeof value === "number" && value >= 100 && value <= 599)
|
|
90
|
+
return value;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
const match = BRACKET_STATUS.exec(text) ?? PROMETHEUS_STATUS.exec(text);
|
|
94
|
+
return match ? Number(match[1]) : undefined;
|
|
95
|
+
}
|
|
96
|
+
function sourceOf(text) {
|
|
97
|
+
const id = ENGINE_ID.exec(text);
|
|
98
|
+
if (id)
|
|
99
|
+
return { type: "engine", id: id[1] ?? id[2] ?? id[3] };
|
|
100
|
+
if (PROMETHEUS.test(text))
|
|
101
|
+
return { type: "prometheus" };
|
|
102
|
+
if (ENGINE.test(text))
|
|
103
|
+
return { type: "engine" };
|
|
104
|
+
return { type: "unknown" };
|
|
105
|
+
}
|
|
106
|
+
/** The kind an HTTP status stands for. */
|
|
107
|
+
function kindOfStatus(status) {
|
|
108
|
+
if (status === 401)
|
|
109
|
+
return "unauthorized";
|
|
110
|
+
if (status === 403)
|
|
111
|
+
return "forbidden";
|
|
112
|
+
if (status === 404)
|
|
113
|
+
return "notFound";
|
|
114
|
+
if (status === 408 || status === 504)
|
|
115
|
+
return "timeout";
|
|
116
|
+
if (status === 502 || status === 503)
|
|
117
|
+
return "unreachable";
|
|
118
|
+
return "failed";
|
|
119
|
+
}
|
|
120
|
+
function kindOf(text, status) {
|
|
121
|
+
if (TOOL_MISSING.test(text))
|
|
122
|
+
return "notOnServer";
|
|
123
|
+
if (status !== undefined)
|
|
124
|
+
return kindOfStatus(status);
|
|
125
|
+
if (TIMEOUT.test(text))
|
|
126
|
+
return "timeout";
|
|
127
|
+
if (UNREACHABLE.test(text))
|
|
128
|
+
return "unreachable";
|
|
129
|
+
return "unknown";
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* The facts of an engine or transport error, read from its text (the wire
|
|
133
|
+
* carries text only: a tool's `isError` answer, a JSON-RPC error, a failed
|
|
134
|
+
* fetch) plus a numeric `status`/`httpStatus` when the object has one. Pure:
|
|
135
|
+
* no words, no locale.
|
|
136
|
+
*/
|
|
137
|
+
export function classifyError(error) {
|
|
138
|
+
const raw = rawText(error);
|
|
139
|
+
const text = raw ?? "";
|
|
140
|
+
const status = statusOf(error, text);
|
|
141
|
+
return {
|
|
142
|
+
kind: kindOf(text, status),
|
|
143
|
+
...(status !== undefined ? { status } : {}),
|
|
144
|
+
source: sourceOf(text),
|
|
145
|
+
raw,
|
|
146
|
+
reason: reasonOf(text),
|
|
147
|
+
mayHaveApplied: WRITE_CAVEAT.test(text),
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* An engine or transport error in the words of the active locale (en/de by
|
|
152
|
+
* `supportedLanguage`, English otherwise): what happened, what you can do,
|
|
153
|
+
* and the raw text for a collapsed "Details" — never the raw
|
|
154
|
+
* "[503 ProcessEngineException] …" as the headline. Feed the result to the
|
|
155
|
+
* toolkit's `ErrorState` (`title`, `description` = hint, `details`); the
|
|
156
|
+
* kit's `ViewDataState`, `QueryFallback`, `useDetailView`, `ConfirmDialog`
|
|
157
|
+
* and `useActionFeedback` do.
|
|
158
|
+
*/
|
|
159
|
+
export function describeError(error, locale, options = {}) {
|
|
160
|
+
const labels = ERROR_LABELS[supportedLanguage(locale) ?? "en"];
|
|
161
|
+
const facts = classifyError(error);
|
|
162
|
+
const words = labels[facts.kind];
|
|
163
|
+
const source = labels.source({ source: facts.source });
|
|
164
|
+
const status = facts.status === undefined ? "" : labels.status({ status: facts.status });
|
|
165
|
+
const title = facts.kind === "unknown" && options.fallbackTitle
|
|
166
|
+
? options.fallbackTitle
|
|
167
|
+
: words.title({ source, status });
|
|
168
|
+
return {
|
|
169
|
+
kind: facts.kind,
|
|
170
|
+
title,
|
|
171
|
+
hint: words.hint({ source: facts.source.type }),
|
|
172
|
+
details: facts.raw,
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
//# sourceMappingURL=describe-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describe-error.js","sourceRoot":"","sources":["../../src/ui/describe-error.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describe-error.test.d.ts","sourceRoot":"","sources":["../../src/ui/describe-error.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,274 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { classifyError, describeError } from "./describe-error.js";
|
|
3
|
+
/**
|
|
4
|
+
* The mapping table (U1): every error text the wire carries into a widget —
|
|
5
|
+
* the camunda7 client's engine responses through `withToolErrors`, its
|
|
6
|
+
* network and deadline failures, Prometheus', a JSON-RPC "tool not found"
|
|
7
|
+
* from a server without the module, a browser's failed fetch — onto one
|
|
8
|
+
* kind, its status and its source.
|
|
9
|
+
*/
|
|
10
|
+
const TABLE = [
|
|
11
|
+
[
|
|
12
|
+
"[503 ProcessEngineException] Engine is shutting down (engine prod-leasing)",
|
|
13
|
+
"unreachable",
|
|
14
|
+
503,
|
|
15
|
+
"engine:prod-leasing",
|
|
16
|
+
],
|
|
17
|
+
[
|
|
18
|
+
"[502] Bad Gateway — empty response body (engine billing)",
|
|
19
|
+
"unreachable",
|
|
20
|
+
502,
|
|
21
|
+
"engine:billing",
|
|
22
|
+
],
|
|
23
|
+
["engine prod-a unreachable (ECONNREFUSED)", "unreachable", undefined, "engine:prod-a"],
|
|
24
|
+
[
|
|
25
|
+
"connection to engine prod-a failed (UND_ERR_SOCKET) — the POST may still have been applied",
|
|
26
|
+
"unreachable",
|
|
27
|
+
undefined,
|
|
28
|
+
"engine:prod-a",
|
|
29
|
+
],
|
|
30
|
+
["Prometheus unreachable (ENOTFOUND)", "unreachable", undefined, "prometheus"],
|
|
31
|
+
["Prometheus query failed (503): service unavailable", "unreachable", 503, "prometheus"],
|
|
32
|
+
["TypeError: Failed to fetch", "unreachable", undefined, "unknown"],
|
|
33
|
+
[
|
|
34
|
+
"engine prod-a did not respond within 30000 ms (timeout)",
|
|
35
|
+
"timeout",
|
|
36
|
+
undefined,
|
|
37
|
+
"engine:prod-a",
|
|
38
|
+
],
|
|
39
|
+
["Prometheus did not respond within 10000 ms (timeout)", "timeout", undefined, "prometheus"],
|
|
40
|
+
["MCP error -32001: Request timed out", "timeout", undefined, "unknown"],
|
|
41
|
+
["[504] Gateway Timeout (engine prod)", "timeout", 504, "engine:prod"],
|
|
42
|
+
["Tool camunda7_process_list_data not found", "notOnServer", undefined, "unknown"],
|
|
43
|
+
["MCP error -32602: Tool analytics_settings_data not found", "notOnServer", undefined, "unknown"],
|
|
44
|
+
["Unknown tool: camunda7_jobs_data", "notOnServer", undefined, "unknown"],
|
|
45
|
+
[
|
|
46
|
+
"[401] Unauthorized (engine prod). Check CAMUNDA_ENGINES_JSON credentials",
|
|
47
|
+
"unauthorized",
|
|
48
|
+
401,
|
|
49
|
+
"engine:prod",
|
|
50
|
+
],
|
|
51
|
+
[
|
|
52
|
+
"Prometheus query failed (403): forbidden — check the configured Prometheus credentials",
|
|
53
|
+
"forbidden",
|
|
54
|
+
403,
|
|
55
|
+
"prometheus",
|
|
56
|
+
],
|
|
57
|
+
[
|
|
58
|
+
"[404 InvalidRequestException] Process instance with id x does not exist (engine prod-a)",
|
|
59
|
+
"notFound",
|
|
60
|
+
404,
|
|
61
|
+
"engine:prod-a",
|
|
62
|
+
],
|
|
63
|
+
[
|
|
64
|
+
"[500 ProcessEngineException] Cannot resolve incident (engine prod-a)",
|
|
65
|
+
"failed",
|
|
66
|
+
500,
|
|
67
|
+
"engine:prod-a",
|
|
68
|
+
],
|
|
69
|
+
["[400 InvalidRequestException] Invalid variable value", "failed", 400, "unknown"],
|
|
70
|
+
[
|
|
71
|
+
"[ENGINE_NOT_SELECTED] No engine specified and no default engine saved.",
|
|
72
|
+
"unknown",
|
|
73
|
+
undefined,
|
|
74
|
+
"engine",
|
|
75
|
+
],
|
|
76
|
+
["Something odd happened", "unknown", undefined, "unknown"],
|
|
77
|
+
];
|
|
78
|
+
function sourceTag(source) {
|
|
79
|
+
if (source.type === "engine")
|
|
80
|
+
return source.id ? `engine:${source.id}` : "engine";
|
|
81
|
+
return source.type;
|
|
82
|
+
}
|
|
83
|
+
describe("classifyError — the mapping table", () => {
|
|
84
|
+
it.each(TABLE)("%s → %s", (raw, kind, status, source) => {
|
|
85
|
+
const facts = classifyError(new Error(raw));
|
|
86
|
+
expect(facts.kind).toBe(kind);
|
|
87
|
+
expect(facts.status).toBe(status);
|
|
88
|
+
expect(sourceTag(facts.source)).toBe(source);
|
|
89
|
+
expect(facts.raw).toBe(raw);
|
|
90
|
+
});
|
|
91
|
+
it("reads a numeric status off the error object before the text", () => {
|
|
92
|
+
const error = Object.assign(new Error("no details"), { httpStatus: 403 });
|
|
93
|
+
expect(classifyError(error)).toMatchObject({ kind: "forbidden", status: 403 });
|
|
94
|
+
expect(classifyError({ message: "x", status: 401 })).toMatchObject({ kind: "unauthorized" });
|
|
95
|
+
// Out of range or not a number: ignored.
|
|
96
|
+
expect(classifyError({ message: "x", status: 42 }).kind).toBe("unknown");
|
|
97
|
+
expect(classifyError({ message: "x", status: "503" }).kind).toBe("unknown");
|
|
98
|
+
});
|
|
99
|
+
it("takes strings, { message } objects and anything else", () => {
|
|
100
|
+
expect(classifyError("engine e unreachable (ECONNREFUSED)").kind).toBe("unreachable");
|
|
101
|
+
expect(classifyError({ message: "Prometheus unreachable (x)" }).source).toEqual({
|
|
102
|
+
type: "prometheus",
|
|
103
|
+
});
|
|
104
|
+
expect(classifyError(null)).toEqual({
|
|
105
|
+
kind: "unknown",
|
|
106
|
+
source: { type: "unknown" },
|
|
107
|
+
raw: null,
|
|
108
|
+
reason: null,
|
|
109
|
+
mayHaveApplied: false,
|
|
110
|
+
});
|
|
111
|
+
expect(classifyError(42).raw).toBeNull();
|
|
112
|
+
expect(classifyError({ message: 7 }).raw).toBeNull();
|
|
113
|
+
expect(classifyError(new Error(" ")).raw).toBeNull();
|
|
114
|
+
expect(classifyError(" ").raw).toBeNull();
|
|
115
|
+
});
|
|
116
|
+
it("a missing tool wins over a status in the same text", () => {
|
|
117
|
+
expect(classifyError("[404] Tool x not found").kind).toBe("notOnServer");
|
|
118
|
+
});
|
|
119
|
+
it("reads the source's own reason: no status code, engine suffix or write caveat", () => {
|
|
120
|
+
const reason = (text) => classifyError(text).reason;
|
|
121
|
+
expect(reason("[500 ProcessEngineException] Cannot resolve incident (engine prod)")).toBe("Cannot resolve incident");
|
|
122
|
+
// A prefix before the bracket (a transport's wrapper) goes with it.
|
|
123
|
+
expect(reason("Error: [400 InvalidRequestException] Bad value. (engine p)")).toBe("Bad value.");
|
|
124
|
+
expect(reason("[VALIDATION] amount must be positive")).toBe("amount must be positive");
|
|
125
|
+
expect(reason("connection to engine prod failed (UND_ERR_SOCKET) — the POST may still have been applied; check the current state before retrying")).toBe("connection to engine prod failed (UND_ERR_SOCKET)");
|
|
126
|
+
expect(reason("[500] (engine prod)")).toBeNull();
|
|
127
|
+
expect(reason("plain words")).toBe("plain words");
|
|
128
|
+
});
|
|
129
|
+
it("knows a write whose answer never came may have gone through", () => {
|
|
130
|
+
expect(classifyError("engine prod did not respond within 30000 ms (timeout) — the PUT may still have been applied; check the current state before retrying").mayHaveApplied).toBe(true);
|
|
131
|
+
// A read's timeout carries no caveat; an engine refusal never does.
|
|
132
|
+
expect(classifyError("engine prod did not respond within 30000 ms (timeout)").mayHaveApplied).toBe(false);
|
|
133
|
+
expect(classifyError("[500 X] boom (engine prod)").mayHaveApplied).toBe(false);
|
|
134
|
+
});
|
|
135
|
+
});
|
|
136
|
+
describe("classifyError — hostile input stays linear (CodeQL js/polynomial-redos)", () => {
|
|
137
|
+
const spaces = " ".repeat(100_000);
|
|
138
|
+
it("reads a long whitespace run before the write caveat and the engine suffix quickly", () => {
|
|
139
|
+
const started = performance.now();
|
|
140
|
+
const facts = classifyError(`[500 X] boom${spaces}— the POST may still have been applied`);
|
|
141
|
+
expect(facts.mayHaveApplied).toBe(true);
|
|
142
|
+
expect(facts.reason).toBe("boom");
|
|
143
|
+
expect(classifyError(`[500 X] boom${spaces}(engine prod)${spaces}`).reason).toBe("boom");
|
|
144
|
+
expect(classifyError(`[500 X] ${spaces}x`).reason).toBe("x");
|
|
145
|
+
expect(performance.now() - started).toBeLessThan(500);
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
describe("describeError — the words, en and de", () => {
|
|
149
|
+
const down = new Error("[503 ProcessEngineException] Engine is shutting down (engine prod-leasing)");
|
|
150
|
+
it("never leads with the raw engine text; it stays for Details", () => {
|
|
151
|
+
expect(describeError(down, "de-DE")).toEqual({
|
|
152
|
+
kind: "unreachable",
|
|
153
|
+
title: "Die Engine prod-leasing ist nicht erreichbar (HTTP 503)",
|
|
154
|
+
hint: "Prüf, ob die Engine läuft, oder wähl eine andere Engine.",
|
|
155
|
+
details: "[503 ProcessEngineException] Engine is shutting down (engine prod-leasing)",
|
|
156
|
+
});
|
|
157
|
+
expect(describeError(down, "en-US")).toMatchObject({
|
|
158
|
+
title: "Engine prod-leasing is unreachable (HTTP 503)",
|
|
159
|
+
hint: "Check that the engine is running, or pick another engine.",
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
it.each([
|
|
163
|
+
[
|
|
164
|
+
"engine e did not respond within 1 ms (timeout)",
|
|
165
|
+
"Die Engine e antwortet nicht rechtzeitig",
|
|
166
|
+
"Versuch es gleich noch mal. Passiert das öfter, ist die Engine vielleicht stark ausgelastet.",
|
|
167
|
+
],
|
|
168
|
+
[
|
|
169
|
+
"Prometheus did not respond within 1 ms (timeout)",
|
|
170
|
+
"Prometheus antwortet nicht rechtzeitig",
|
|
171
|
+
"Versuch es gleich noch mal.",
|
|
172
|
+
],
|
|
173
|
+
[
|
|
174
|
+
"Prometheus unreachable (ECONNREFUSED)",
|
|
175
|
+
"Prometheus ist nicht erreichbar",
|
|
176
|
+
"Prüf, ob Prometheus läuft und erreichbar ist.",
|
|
177
|
+
],
|
|
178
|
+
[
|
|
179
|
+
"Failed to fetch",
|
|
180
|
+
"Die Datenquelle ist nicht erreichbar",
|
|
181
|
+
"Prüf die Verbindung und versuch es noch mal.",
|
|
182
|
+
],
|
|
183
|
+
[
|
|
184
|
+
"Tool x not found",
|
|
185
|
+
"Diese Daten gibt es auf diesem Server nicht",
|
|
186
|
+
"Das zuständige Modul ist hier nicht aktiv. Frag im Chat, was du stattdessen tun kannst.",
|
|
187
|
+
],
|
|
188
|
+
[
|
|
189
|
+
"[401] no (engine p)",
|
|
190
|
+
"Die Engine p lehnt die Zugangsdaten des Servers ab (HTTP 401)",
|
|
191
|
+
"Bitte die Person, die den Server betreibt, die Zugangsdaten zu prüfen.",
|
|
192
|
+
],
|
|
193
|
+
[
|
|
194
|
+
"[403] no (engine p)",
|
|
195
|
+
"Die Engine p verweigert den Zugriff (HTTP 403)",
|
|
196
|
+
"Dem Konto des Servers fehlt dafür die Berechtigung. Bitte die Person, die den Server betreibt, das zu prüfen.",
|
|
197
|
+
],
|
|
198
|
+
[
|
|
199
|
+
"[404] gone (engine p)",
|
|
200
|
+
"Diesen Eintrag gibt es nicht mehr",
|
|
201
|
+
"Er wurde vielleicht beendet oder gelöscht. Geh zurück zur Liste oder versuch es noch mal.",
|
|
202
|
+
],
|
|
203
|
+
[
|
|
204
|
+
"[500 ProcessEngineException] boom",
|
|
205
|
+
"Die Engine meldet einen Fehler (HTTP 500)",
|
|
206
|
+
"Den Grund findest du unter Details. Versuch es noch mal oder frag im Chat nach.",
|
|
207
|
+
],
|
|
208
|
+
[
|
|
209
|
+
"odd",
|
|
210
|
+
"Das hat nicht geklappt",
|
|
211
|
+
"Versuch es noch mal. Klappt es wieder nicht, frag im Chat nach.",
|
|
212
|
+
],
|
|
213
|
+
])("de: %s", (raw, title, hint) => {
|
|
214
|
+
expect(describeError(raw, "de")).toMatchObject({ title, hint });
|
|
215
|
+
});
|
|
216
|
+
it.each([
|
|
217
|
+
[
|
|
218
|
+
"engine e did not respond within 1 ms (timeout)",
|
|
219
|
+
"Engine e did not respond in time",
|
|
220
|
+
"Try again in a moment. If it keeps happening, the engine may be under heavy load.",
|
|
221
|
+
],
|
|
222
|
+
[
|
|
223
|
+
"Prometheus did not respond within 1 ms (timeout)",
|
|
224
|
+
"Prometheus did not respond in time",
|
|
225
|
+
"Try again in a moment.",
|
|
226
|
+
],
|
|
227
|
+
[
|
|
228
|
+
"Prometheus unreachable (ECONNREFUSED)",
|
|
229
|
+
"Prometheus is unreachable",
|
|
230
|
+
"Check that Prometheus is running and reachable.",
|
|
231
|
+
],
|
|
232
|
+
["Failed to fetch", "The data source is unreachable", "Check the connection, then try again."],
|
|
233
|
+
[
|
|
234
|
+
"Tool x not found",
|
|
235
|
+
"This data isn't available on this server",
|
|
236
|
+
"The module behind it isn't active here. Ask in the chat what you can do instead.",
|
|
237
|
+
],
|
|
238
|
+
[
|
|
239
|
+
"[401] no (engine p)",
|
|
240
|
+
"Engine p rejected the server's credentials (HTTP 401)",
|
|
241
|
+
"Ask whoever runs this server to check its credentials.",
|
|
242
|
+
],
|
|
243
|
+
[
|
|
244
|
+
"[403] no",
|
|
245
|
+
"The data source denied access (HTTP 403)",
|
|
246
|
+
"The server's account lacks the permission for this. Ask whoever runs the server to check it.",
|
|
247
|
+
],
|
|
248
|
+
[
|
|
249
|
+
"[404] gone",
|
|
250
|
+
"This entry no longer exists",
|
|
251
|
+
"It may have ended or been deleted. Go back to the list, or try again.",
|
|
252
|
+
],
|
|
253
|
+
[
|
|
254
|
+
"[500] boom (engine p)",
|
|
255
|
+
"Engine p reported an error (HTTP 500)",
|
|
256
|
+
"You'll find the reason under Details. Try again, or ask in the chat.",
|
|
257
|
+
],
|
|
258
|
+
["odd", "Something went wrong", "Try again. If it fails again, ask in the chat."],
|
|
259
|
+
])("en: %s", (raw, title, hint) => {
|
|
260
|
+
expect(describeError(raw, "en")).toMatchObject({ title, hint });
|
|
261
|
+
});
|
|
262
|
+
it("English for an unsupported or missing locale", () => {
|
|
263
|
+
expect(describeError("odd", "fr-FR").title).toBe("Something went wrong");
|
|
264
|
+
expect(describeError("odd", undefined).title).toBe("Something went wrong");
|
|
265
|
+
});
|
|
266
|
+
it("an unclassified error takes the caller's title; a classified one keeps its own", () => {
|
|
267
|
+
expect(describeError("odd", "de", { fallbackTitle: "Liste nicht geladen" }).title).toBe("Liste nicht geladen");
|
|
268
|
+
expect(describeError(down, "de", { fallbackTitle: "Liste nicht geladen" }).title).toBe("Die Engine prod-leasing ist nicht erreichbar (HTTP 503)");
|
|
269
|
+
});
|
|
270
|
+
it("has no details without a raw text", () => {
|
|
271
|
+
expect(describeError(undefined, "en").details).toBeNull();
|
|
272
|
+
});
|
|
273
|
+
});
|
|
274
|
+
//# sourceMappingURL=describe-error.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"describe-error.test.js","sourceRoot":"","sources":["../../src/ui/describe-error.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAA;AAC7C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAkB,MAAM,qBAAqB,CAAA;AAElF;;;;;;GAMG;AACH,MAAM,KAAK,GAAsF;IAC/F;QACE,4EAA4E;QAC5E,aAAa;QACb,GAAG;QACH,qBAAqB;KACtB;IACD;QACE,0DAA0D;QAC1D,aAAa;QACb,GAAG;QACH,gBAAgB;KACjB;IACD,CAAC,0CAA0C,EAAE,aAAa,EAAE,SAAS,EAAE,eAAe,CAAC;IACvF;QACE,4FAA4F;QAC5F,aAAa;QACb,SAAS;QACT,eAAe;KAChB;IACD,CAAC,oCAAoC,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,CAAC;IAC9E,CAAC,oDAAoD,EAAE,aAAa,EAAE,GAAG,EAAE,YAAY,CAAC;IACxF,CAAC,4BAA4B,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,CAAC;IACnE;QACE,yDAAyD;QACzD,SAAS;QACT,SAAS;QACT,eAAe;KAChB;IACD,CAAC,sDAAsD,EAAE,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC;IAC5F,CAAC,qCAAqC,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;IACxE,CAAC,qCAAqC,EAAE,SAAS,EAAE,GAAG,EAAE,aAAa,CAAC;IACtE,CAAC,2CAA2C,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,CAAC;IAClF,CAAC,0DAA0D,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,CAAC;IACjG,CAAC,kCAAkC,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,CAAC;IACzE;QACE,0EAA0E;QAC1E,cAAc;QACd,GAAG;QACH,aAAa;KACd;IACD;QACE,wFAAwF;QACxF,WAAW;QACX,GAAG;QACH,YAAY;KACb;IACD;QACE,yFAAyF;QACzF,UAAU;QACV,GAAG;QACH,eAAe;KAChB;IACD;QACE,sEAAsE;QACtE,QAAQ;QACR,GAAG;QACH,eAAe;KAChB;IACD,CAAC,sDAAsD,EAAE,QAAQ,EAAE,GAAG,EAAE,SAAS,CAAC;IAClF;QACE,wEAAwE;QACxE,SAAS;QACT,SAAS;QACT,QAAQ;KACT;IACD,CAAC,wBAAwB,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;CAC5D,CAAA;AAED,SAAS,SAAS,CAAC,MAAkD;IACnE,IAAI,MAAM,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAA;IACjF,OAAO,MAAM,CAAC,IAAI,CAAA;AACpB,CAAC;AAED,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;QACtD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;QAC3C,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QAC5C,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IAC7B,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAA;QACzE,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;QAC9E,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,CAAC,CAAA;QAC5F,yCAAyC;QACzC,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACxE,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC7E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC,aAAa,CAAC,qCAAqC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;QACrF,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;YAC9E,IAAI,EAAE,YAAY;SACnB,CAAC,CAAA;QACF,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC;YAClC,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;YAC3B,GAAG,EAAE,IAAI;YACT,MAAM,EAAE,IAAI;YACZ,cAAc,EAAE,KAAK;SACtB,CAAC,CAAA;QACF,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAA;QACxC,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAA;QACpD,MAAM,CAAC,aAAa,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAA;QACtD,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC5C,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;QAC5D,MAAM,CAAC,aAAa,CAAC,wBAAwB,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAC1E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8EAA8E,EAAE,GAAG,EAAE;QACtF,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,CAAA;QAC3D,MAAM,CAAC,MAAM,CAAC,oEAAoE,CAAC,CAAC,CAAC,IAAI,CACvF,yBAAyB,CAC1B,CAAA;QACD,oEAAoE;QACpE,MAAM,CAAC,MAAM,CAAC,4DAA4D,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAA;QAC/F,MAAM,CAAC,MAAM,CAAC,sCAAsC,CAAC,CAAC,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;QACtF,MAAM,CACJ,MAAM,CACJ,mIAAmI,CACpI,CACF,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAA;QAC3D,MAAM,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAA;QAChD,MAAM,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IACnD,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,6DAA6D,EAAE,GAAG,EAAE;QACrE,MAAM,CACJ,aAAa,CACX,sIAAsI,CACvI,CAAC,cAAc,CACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACZ,oEAAoE;QACpE,MAAM,CACJ,aAAa,CAAC,uDAAuD,CAAC,CAAC,cAAc,CACtF,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACb,MAAM,CAAC,aAAa,CAAC,4BAA4B,CAAC,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAChF,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,yEAAyE,EAAE,GAAG,EAAE;IACvF,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAElC,EAAE,CAAC,mFAAmF,EAAE,GAAG,EAAE;QAC3F,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,EAAE,CAAA;QACjC,MAAM,KAAK,GAAG,aAAa,CAAC,eAAe,MAAM,wCAAwC,CAAC,CAAA;QAC1F,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACvC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACjC,MAAM,CAAC,aAAa,CAAC,eAAe,MAAM,gBAAgB,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACxF,MAAM,CAAC,aAAa,CAAC,WAAW,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;QAC5D,MAAM,CAAC,WAAW,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAA;IACvD,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA;AAEF,QAAQ,CAAC,sCAAsC,EAAE,GAAG,EAAE;IACpD,MAAM,IAAI,GAAG,IAAI,KAAK,CACpB,4EAA4E,CAC7E,CAAA;IAED,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;YAC3C,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE,yDAAyD;YAChE,IAAI,EAAE,0DAA0D;YAChE,OAAO,EAAE,4EAA4E;SACtF,CAAC,CAAA;QACF,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC;YACjD,KAAK,EAAE,+CAA+C;YACtD,IAAI,EAAE,2DAA2D;SAClE,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC;QACN;YACE,gDAAgD;YAChD,0CAA0C;YAC1C,8FAA8F;SAC/F;QACD;YACE,kDAAkD;YAClD,wCAAwC;YACxC,6BAA6B;SAC9B;QACD;YACE,uCAAuC;YACvC,iCAAiC;YACjC,+CAA+C;SAChD;QACD;YACE,iBAAiB;YACjB,sCAAsC;YACtC,8CAA8C;SAC/C;QACD;YACE,kBAAkB;YAClB,6CAA6C;YAC7C,yFAAyF;SAC1F;QACD;YACE,qBAAqB;YACrB,+DAA+D;YAC/D,wEAAwE;SACzE;QACD;YACE,qBAAqB;YACrB,gDAAgD;YAChD,+GAA+G;SAChH;QACD;YACE,uBAAuB;YACvB,mCAAmC;YACnC,2FAA2F;SAC5F;QACD;YACE,mCAAmC;YACnC,2CAA2C;YAC3C,iFAAiF;SAClF;QACD;YACE,KAAK;YACL,wBAAwB;YACxB,iEAAiE;SAClE;KACF,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAChC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,IAAI,CAAC;QACN;YACE,gDAAgD;YAChD,kCAAkC;YAClC,mFAAmF;SACpF;QACD;YACE,kDAAkD;YAClD,oCAAoC;YACpC,wBAAwB;SACzB;QACD;YACE,uCAAuC;YACvC,2BAA2B;YAC3B,iDAAiD;SAClD;QACD,CAAC,iBAAiB,EAAE,gCAAgC,EAAE,uCAAuC,CAAC;QAC9F;YACE,kBAAkB;YAClB,0CAA0C;YAC1C,kFAAkF;SACnF;QACD;YACE,qBAAqB;YACrB,uDAAuD;YACvD,wDAAwD;SACzD;QACD;YACE,UAAU;YACV,0CAA0C;YAC1C,8FAA8F;SAC/F;QACD;YACE,YAAY;YACZ,6BAA6B;YAC7B,uEAAuE;SACxE;QACD;YACE,uBAAuB;YACvB,uCAAuC;YACvC,sEAAsE;SACvE;QACD,CAAC,KAAK,EAAE,sBAAsB,EAAE,gDAAgD,CAAC;KAClF,CAAC,CAAC,QAAQ,EAAE,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QAChC,MAAM,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,aAAa,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACjE,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;QACtD,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;QACxE,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAA;IAC5E,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,gFAAgF,EAAE,GAAG,EAAE;QACxF,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CACrF,qBAAqB,CACtB,CAAA;QACD,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,aAAa,EAAE,qBAAqB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CACpF,yDAAyD,CAC1D,CAAA;IACH,CAAC,CAAC,CAAA;IAEF,EAAE,CAAC,mCAAmC,EAAE,GAAG,EAAE;QAC3C,MAAM,CAAC,aAAa,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,EAAE,CAAA;IAC3D,CAAC,CAAC,CAAA;AACJ,CAAC,CAAC,CAAA"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { type ReactNode } from "react";
|
|
2
|
+
/**
|
|
3
|
+
* The host's display mode as something a view can SWITCH — provided by the
|
|
4
|
+
* host bridge (`ViewHostBridge`); outside a host nothing can be switched.
|
|
5
|
+
*/
|
|
6
|
+
export interface DisplayModeControl {
|
|
7
|
+
displayMode: string;
|
|
8
|
+
/** The host offers fullscreen to this view. */
|
|
9
|
+
canFullscreen: boolean;
|
|
10
|
+
request: (mode: "inline" | "fullscreen") => void;
|
|
11
|
+
}
|
|
12
|
+
export declare function DisplayModeControlProvider({ control, children, }: {
|
|
13
|
+
control: DisplayModeControl;
|
|
14
|
+
children: ReactNode;
|
|
15
|
+
}): import("react").JSX.Element;
|
|
16
|
+
export declare function useDisplayModeControl(): DisplayModeControl;
|
|
17
|
+
/**
|
|
18
|
+
* Fullscreen and back, for a surface that hides the view's own chrome (the
|
|
19
|
+
* standalone drill-down, #344 N109): the same words as the toolkit's toolbar
|
|
20
|
+
* toggle, nothing where the host offers no fullscreen.
|
|
21
|
+
*/
|
|
22
|
+
export declare function DisplayModeToggle(): import("react").JSX.Element | null;
|
|
23
|
+
/**
|
|
24
|
+
* The display modes every view of the bundle supports, for the roots'
|
|
25
|
+
* `bootstrapView({ default, viewConfig })` (#344 N159): inline as a card,
|
|
26
|
+
* fullscreen for the rest. Not picture-in-picture: no view is laid out for a
|
|
27
|
+
* small floating frame, so a host must not offer one.
|
|
28
|
+
*/
|
|
29
|
+
export declare const SHELL_VIEW_CONFIG: {
|
|
30
|
+
readonly displayModes: readonly ["inline", "fullscreen"];
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=display-mode-toggle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"display-mode-toggle.d.ts","sourceRoot":"","sources":["../../src/ui/display-mode-toggle.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6B,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAKjE;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAA;IACnB,+CAA+C;IAC/C,aAAa,EAAE,OAAO,CAAA;IACtB,OAAO,EAAE,CAAC,IAAI,EAAE,QAAQ,GAAG,YAAY,KAAK,IAAI,CAAA;CACjD;AAUD,wBAAgB,0BAA0B,CAAC,EACzC,OAAO,EACP,QAAQ,GACT,EAAE;IACD,OAAO,EAAE,kBAAkB,CAAA;IAC3B,QAAQ,EAAE,SAAS,CAAA;CACpB,+BAMA;AAED,wBAAgB,qBAAqB,IAAI,kBAAkB,CAE1D;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,uCAkBhC;AAED;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB;;CAAsD,CAAA"}
|