@miragon/pulse-widget-shell 0.24.2 → 0.25.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/README.md +134 -127
- package/dist/caller.d.ts +3 -0
- package/dist/caller.d.ts.map +1 -0
- package/dist/caller.js +18 -0
- package/dist/caller.js.map +1 -0
- package/dist/composed-server.d.ts +34 -66
- package/dist/composed-server.d.ts.map +1 -1
- package/dist/composed-server.js +130 -137
- package/dist/composed-server.js.map +1 -1
- package/dist/composition.d.ts +61 -111
- package/dist/composition.d.ts.map +1 -1
- package/dist/composition.js +120 -54
- package/dist/composition.js.map +1 -1
- package/dist/font-assets.d.ts +7 -28
- package/dist/font-assets.d.ts.map +1 -1
- package/dist/font-assets.js +11 -43
- package/dist/font-assets.js.map +1 -1
- package/dist/health.d.ts +9 -45
- package/dist/health.d.ts.map +1 -1
- package/dist/health.js +6 -24
- package/dist/health.js.map +1 -1
- package/dist/host-boot.d.ts +8 -38
- package/dist/host-boot.d.ts.map +1 -1
- package/dist/host-boot.js +10 -32
- package/dist/host-boot.js.map +1 -1
- package/dist/http-edge.d.ts +20 -76
- package/dist/http-edge.d.ts.map +1 -1
- package/dist/http-edge.js +17 -60
- package/dist/http-edge.js.map +1 -1
- package/dist/metrics.d.ts +6 -21
- package/dist/metrics.d.ts.map +1 -1
- package/dist/metrics.js +8 -36
- package/dist/metrics.js.map +1 -1
- package/dist/node-listener.d.ts +7 -39
- package/dist/node-listener.d.ts.map +1 -1
- package/dist/node-listener.js +6 -18
- package/dist/node-listener.js.map +1 -1
- package/dist/oauth-env.d.ts +15 -35
- package/dist/oauth-env.d.ts.map +1 -1
- package/dist/oauth-env.js +122 -62
- package/dist/oauth-env.js.map +1 -1
- package/dist/protocol/bpmn-names.d.ts +19 -0
- package/dist/protocol/bpmn-names.d.ts.map +1 -0
- package/dist/{bpmn-names.js → protocol/bpmn-names.js} +9 -38
- package/dist/protocol/bpmn-names.js.map +1 -0
- package/dist/protocol/served-fonts.d.ts +17 -0
- package/dist/protocol/served-fonts.d.ts.map +1 -0
- package/dist/protocol/served-fonts.js +30 -0
- package/dist/protocol/served-fonts.js.map +1 -0
- package/dist/protocol/tool-result.d.ts +24 -0
- package/dist/protocol/tool-result.d.ts.map +1 -0
- package/dist/protocol/tool-result.js +37 -0
- package/dist/protocol/tool-result.js.map +1 -0
- package/dist/protocol/translator.d.ts +14 -0
- package/dist/protocol/translator.d.ts.map +1 -0
- package/dist/protocol/translator.js +18 -0
- package/dist/protocol/translator.js.map +1 -0
- package/dist/protocol/view-name.d.ts +11 -0
- package/dist/protocol/view-name.d.ts.map +1 -0
- package/dist/protocol/view-name.js +23 -0
- package/dist/protocol/view-name.js.map +1 -0
- package/dist/request-context.d.ts +4 -33
- package/dist/request-context.d.ts.map +1 -1
- package/dist/request-context.js +11 -43
- package/dist/request-context.js.map +1 -1
- package/dist/server.d.ts +19 -39
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +28 -32
- package/dist/server.js.map +1 -1
- package/dist/testing/glossary.d.ts +4 -32
- package/dist/testing/glossary.d.ts.map +1 -1
- package/dist/testing/glossary.js +6 -30
- package/dist/testing/glossary.js.map +1 -1
- package/dist/testing/index.d.ts +1 -38
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +1 -38
- package/dist/testing/index.js.map +1 -1
- package/dist/tool-errors.d.ts +16 -0
- package/dist/tool-errors.d.ts.map +1 -0
- package/dist/tool-errors.js +23 -0
- package/dist/tool-errors.js.map +1 -0
- package/dist/tool-registrar.d.ts +29 -0
- package/dist/tool-registrar.d.ts.map +1 -0
- package/dist/tool-registrar.js +47 -0
- package/dist/tool-registrar.js.map +1 -0
- package/dist/tool-registration.d.ts +35 -0
- package/dist/tool-registration.d.ts.map +1 -0
- package/dist/tool-registration.js +80 -0
- package/dist/tool-registration.js.map +1 -0
- package/dist/tool-schema-trim.d.ts +1 -15
- package/dist/tool-schema-trim.d.ts.map +1 -1
- package/dist/tool-schema-trim.js +1 -16
- package/dist/tool-schema-trim.js.map +1 -1
- package/dist/toolsets.d.ts +10 -56
- package/dist/toolsets.d.ts.map +1 -1
- package/dist/toolsets.js +2 -10
- package/dist/toolsets.js.map +1 -1
- package/dist/ui/action-feedback.d.ts +4 -26
- package/dist/ui/action-feedback.d.ts.map +1 -1
- package/dist/ui/action-feedback.js +5 -19
- package/dist/ui/action-feedback.js.map +1 -1
- package/dist/ui/ask-ai-button.d.ts +6 -43
- package/dist/ui/ask-ai-button.d.ts.map +1 -1
- package/dist/ui/ask-ai-button.js +6 -18
- package/dist/ui/ask-ai-button.js.map +1 -1
- package/dist/ui/ask-ai-prompt.d.ts +6 -82
- package/dist/ui/ask-ai-prompt.d.ts.map +1 -1
- package/dist/ui/ask-ai-prompt.js +10 -77
- package/dist/ui/ask-ai-prompt.js.map +1 -1
- package/dist/ui/bpmn-tokens.d.ts +3 -48
- package/dist/ui/bpmn-tokens.d.ts.map +1 -1
- package/dist/ui/bpmn-tokens.js +3 -46
- package/dist/ui/bpmn-tokens.js.map +1 -1
- package/dist/ui/bpmn-zoom-controls.d.ts +4 -17
- package/dist/ui/bpmn-zoom-controls.d.ts.map +1 -1
- package/dist/ui/bpmn-zoom-controls.js +2 -16
- package/dist/ui/bpmn-zoom-controls.js.map +1 -1
- package/dist/ui/call-observer.d.ts +35 -0
- package/dist/ui/call-observer.d.ts.map +1 -0
- package/dist/ui/call-observer.js +86 -0
- package/dist/ui/call-observer.js.map +1 -0
- package/dist/ui/confirm-dialog.d.ts +4 -31
- package/dist/ui/confirm-dialog.d.ts.map +1 -1
- package/dist/ui/confirm-dialog.js +4 -27
- package/dist/ui/confirm-dialog.js.map +1 -1
- package/dist/ui/count-tone.d.ts +3 -17
- package/dist/ui/count-tone.d.ts.map +1 -1
- package/dist/ui/count-tone.js +2 -16
- package/dist/ui/count-tone.js.map +1 -1
- package/dist/ui/declare-served-fonts.d.ts +4 -10
- package/dist/ui/declare-served-fonts.d.ts.map +1 -1
- package/dist/ui/declare-served-fonts.js +6 -13
- package/dist/ui/declare-served-fonts.js.map +1 -1
- package/dist/ui/describe-error.d.ts +5 -47
- package/dist/ui/describe-error.d.ts.map +1 -1
- package/dist/ui/describe-error.js +8 -45
- package/dist/ui/describe-error.js.map +1 -1
- package/dist/ui/display-mode-toggle.d.ts +3 -16
- package/dist/ui/display-mode-toggle.d.ts.map +1 -1
- package/dist/ui/display-mode-toggle.js +6 -15
- package/dist/ui/display-mode-toggle.js.map +1 -1
- package/dist/ui/error-labels.d.ts +3 -19
- package/dist/ui/error-labels.d.ts.map +1 -1
- package/dist/ui/error-labels.js +0 -1
- package/dist/ui/error-labels.js.map +1 -1
- package/dist/ui/hand-off-button.d.ts +3 -18
- package/dist/ui/hand-off-button.d.ts.map +1 -1
- package/dist/ui/hand-off-button.js +3 -18
- package/dist/ui/hand-off-button.js.map +1 -1
- package/dist/ui/host-context.d.ts +13 -50
- package/dist/ui/host-context.d.ts.map +1 -1
- package/dist/ui/host-context.js +20 -51
- package/dist/ui/host-context.js.map +1 -1
- package/dist/ui/host-contexts.d.ts +19 -0
- package/dist/ui/host-contexts.d.ts.map +1 -0
- package/dist/ui/host-contexts.js +31 -0
- package/dist/ui/host-contexts.js.map +1 -0
- package/dist/ui/host-document.d.ts +3 -18
- package/dist/ui/host-document.d.ts.map +1 -1
- package/dist/ui/host-document.js +7 -25
- package/dist/ui/host-document.js.map +1 -1
- package/dist/ui/host-widgets.d.ts +21 -4
- package/dist/ui/host-widgets.d.ts.map +1 -1
- package/dist/ui/host-widgets.js +19 -11
- package/dist/ui/host-widgets.js.map +1 -1
- package/dist/ui/id-text.d.ts +1 -17
- package/dist/ui/id-text.d.ts.map +1 -1
- package/dist/ui/id-text.js +5 -26
- package/dist/ui/id-text.js.map +1 -1
- package/dist/ui/index.d.ts +24 -43
- package/dist/ui/index.d.ts.map +1 -1
- package/dist/ui/index.js +36 -51
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/inline-budget.d.ts +2 -16
- package/dist/ui/inline-budget.d.ts.map +1 -1
- package/dist/ui/inline-budget.js +1 -8
- package/dist/ui/inline-budget.js.map +1 -1
- package/dist/ui/inline-fit-registry.d.ts +4 -31
- package/dist/ui/inline-fit-registry.d.ts.map +1 -1
- package/dist/ui/inline-fit-registry.js +9 -27
- package/dist/ui/inline-fit-registry.js.map +1 -1
- package/dist/ui/inline-fit-solve.d.ts +5 -27
- package/dist/ui/inline-fit-solve.d.ts.map +1 -1
- package/dist/ui/inline-fit-solve.js +4 -23
- package/dist/ui/inline-fit-solve.js.map +1 -1
- package/dist/ui/inline-fit.d.ts +4 -53
- package/dist/ui/inline-fit.d.ts.map +1 -1
- package/dist/ui/inline-fit.js +16 -62
- package/dist/ui/inline-fit.js.map +1 -1
- package/dist/ui/kit-labels.d.ts +12 -51
- package/dist/ui/kit-labels.d.ts.map +1 -1
- package/dist/ui/kit-labels.js +18 -28
- package/dist/ui/kit-labels.js.map +1 -1
- package/dist/ui/list-table.d.ts +15 -69
- package/dist/ui/list-table.d.ts.map +1 -1
- package/dist/ui/list-table.js +11 -69
- package/dist/ui/list-table.js.map +1 -1
- package/dist/ui/locale-gate.d.ts +11 -0
- package/dist/ui/locale-gate.d.ts.map +1 -0
- package/dist/ui/locale-gate.js +53 -0
- package/dist/ui/locale-gate.js.map +1 -0
- package/dist/ui/mcp-use-host.d.ts +20 -0
- package/dist/ui/mcp-use-host.d.ts.map +1 -0
- package/dist/ui/mcp-use-host.js +162 -0
- package/dist/ui/mcp-use-host.js.map +1 -0
- package/dist/ui/open-in-cockpit-link.d.ts +2 -21
- package/dist/ui/open-in-cockpit-link.d.ts.map +1 -1
- package/dist/ui/open-in-cockpit-link.js +5 -20
- package/dist/ui/open-in-cockpit-link.js.map +1 -1
- package/dist/ui/paged-rows.d.ts +3 -14
- package/dist/ui/paged-rows.d.ts.map +1 -1
- package/dist/ui/paged-rows.js +4 -14
- package/dist/ui/paged-rows.js.map +1 -1
- package/dist/ui/query-fallback.d.ts +2 -16
- package/dist/ui/query-fallback.d.ts.map +1 -1
- package/dist/ui/query-fallback.js +2 -14
- package/dist/ui/query-fallback.js.map +1 -1
- package/dist/ui/shell-host.d.ts +13 -23
- package/dist/ui/shell-host.d.ts.map +1 -1
- package/dist/ui/shell-host.js +1 -46
- package/dist/ui/shell-host.js.map +1 -1
- package/dist/ui/test-view-host.d.ts +51 -0
- package/dist/ui/test-view-host.d.ts.map +1 -0
- package/dist/ui/test-view-host.js +72 -0
- package/dist/ui/test-view-host.js.map +1 -0
- package/dist/ui/tool-query.d.ts +41 -0
- package/dist/ui/tool-query.d.ts.map +1 -0
- package/dist/ui/tool-query.js +128 -0
- package/dist/ui/tool-query.js.map +1 -0
- package/dist/ui/use-apply-theme.d.ts +1 -8
- package/dist/ui/use-apply-theme.d.ts.map +1 -1
- package/dist/ui/use-apply-theme.js +1 -8
- package/dist/ui/use-apply-theme.js.map +1 -1
- package/dist/ui/use-bpmn-viewer.d.ts +39 -73
- package/dist/ui/use-bpmn-viewer.d.ts.map +1 -1
- package/dist/ui/use-bpmn-viewer.js +18 -66
- package/dist/ui/use-bpmn-viewer.js.map +1 -1
- package/dist/ui/use-detail-view.d.ts +4 -26
- package/dist/ui/use-detail-view.d.ts.map +1 -1
- package/dist/ui/use-detail-view.js +7 -28
- package/dist/ui/use-detail-view.js.map +1 -1
- package/dist/ui/use-paged-list-view.d.ts +5 -25
- package/dist/ui/use-paged-list-view.d.ts.map +1 -1
- package/dist/ui/use-paged-list-view.js +5 -14
- package/dist/ui/use-paged-list-view.js.map +1 -1
- package/dist/ui/use-paged-view-data.d.ts +11 -66
- package/dist/ui/use-paged-view-data.d.ts.map +1 -1
- package/dist/ui/use-paged-view-data.js +20 -53
- package/dist/ui/use-paged-view-data.js.map +1 -1
- package/dist/ui/view-call.d.ts +66 -0
- package/dist/ui/view-call.d.ts.map +1 -0
- package/dist/ui/view-call.js +63 -0
- package/dist/ui/view-call.js.map +1 -0
- package/dist/ui/view-data-state.d.ts +1 -31
- package/dist/ui/view-data-state.d.ts.map +1 -1
- package/dist/ui/view-data-state.js +3 -32
- package/dist/ui/view-data-state.js.map +1 -1
- package/dist/ui/view-error-boundary.d.ts +24 -0
- package/dist/ui/view-error-boundary.d.ts.map +1 -0
- package/dist/ui/view-error-boundary.js +33 -0
- package/dist/ui/view-error-boundary.js.map +1 -0
- package/dist/ui/view-frame.d.ts +15 -0
- package/dist/ui/view-frame.d.ts.map +1 -0
- package/dist/ui/view-frame.js +72 -0
- package/dist/ui/view-frame.js.map +1 -0
- package/dist/ui/view-host.d.ts +35 -0
- package/dist/ui/view-host.d.ts.map +1 -0
- package/dist/ui/view-host.js +18 -0
- package/dist/ui/view-host.js.map +1 -0
- package/dist/ui/view-meta.d.ts +6 -29
- package/dist/ui/view-meta.d.ts.map +1 -1
- package/dist/ui/view-meta.js +2 -13
- package/dist/ui/view-meta.js.map +1 -1
- package/dist/ui/view-refresh-state.d.ts +4 -18
- package/dist/ui/view-refresh-state.d.ts.map +1 -1
- package/dist/ui/view-refresh-state.js +1 -7
- package/dist/ui/view-refresh-state.js.map +1 -1
- package/dist/ui/view-root.d.ts +26 -0
- package/dist/ui/view-root.d.ts.map +1 -0
- package/dist/ui/view-root.js +48 -0
- package/dist/ui/view-root.js.map +1 -0
- package/dist/ui/views.d.ts +17 -0
- package/dist/ui/views.d.ts.map +1 -0
- package/dist/ui/views.js +11 -0
- package/dist/ui/views.js.map +1 -0
- package/dist/ui/widget-shell.d.ts +1 -13
- package/dist/ui/widget-shell.d.ts.map +1 -1
- package/dist/ui/widget-shell.js +5 -30
- package/dist/ui/widget-shell.js.map +1 -1
- package/dist/view-bundle.d.ts +15 -0
- package/dist/view-bundle.d.ts.map +1 -0
- package/dist/view-bundle.js +23 -0
- package/dist/view-bundle.js.map +1 -0
- package/dist/view-results.d.ts +12 -23
- package/dist/view-results.d.ts.map +1 -1
- package/dist/view-results.js +14 -11
- package/dist/view-results.js.map +1 -1
- package/dist/widget-tool-bindings.d.ts +19 -48
- package/dist/widget-tool-bindings.d.ts.map +1 -1
- package/dist/widget-tool-bindings.js +21 -49
- package/dist/widget-tool-bindings.js.map +1 -1
- package/package.json +24 -36
- package/dist/adapt-data-widget.d.ts +0 -7
- package/dist/adapt-data-widget.d.ts.map +0 -1
- package/dist/adapt-data-widget.js +0 -7
- package/dist/adapt-data-widget.js.map +0 -1
- package/dist/bpmn-names.d.ts +0 -42
- package/dist/bpmn-names.d.ts.map +0 -1
- package/dist/bpmn-names.js.map +0 -1
- package/dist/bpmn-names.test.d.ts +0 -2
- package/dist/bpmn-names.test.d.ts.map +0 -1
- package/dist/bpmn-names.test.js +0 -143
- package/dist/bpmn-names.test.js.map +0 -1
- package/dist/build-data-feed-result.test.d.ts +0 -2
- package/dist/build-data-feed-result.test.d.ts.map +0 -1
- package/dist/build-data-feed-result.test.js +0 -28
- package/dist/build-data-feed-result.test.js.map +0 -1
- package/dist/build-single-widget-view.test.d.ts +0 -2
- package/dist/build-single-widget-view.test.d.ts.map +0 -1
- package/dist/build-single-widget-view.test.js +0 -136
- package/dist/build-single-widget-view.test.js.map +0 -1
- package/dist/builder-texts.d.ts +0 -27
- package/dist/builder-texts.d.ts.map +0 -1
- package/dist/builder-texts.js +0 -32
- package/dist/builder-texts.js.map +0 -1
- package/dist/builder-texts.test.d.ts +0 -2
- package/dist/builder-texts.test.d.ts.map +0 -1
- package/dist/builder-texts.test.js +0 -54
- package/dist/builder-texts.test.js.map +0 -1
- package/dist/catalogue-sync.d.ts +0 -18
- package/dist/catalogue-sync.d.ts.map +0 -1
- package/dist/catalogue-sync.js +0 -31
- package/dist/catalogue-sync.js.map +0 -1
- package/dist/catalogue-sync.test.d.ts +0 -2
- package/dist/catalogue-sync.test.d.ts.map +0 -1
- package/dist/catalogue-sync.test.js +0 -22
- package/dist/catalogue-sync.test.js.map +0 -1
- package/dist/composed-server.edge.test.d.ts +0 -2
- package/dist/composed-server.edge.test.d.ts.map +0 -1
- package/dist/composed-server.edge.test.js +0 -184
- package/dist/composed-server.edge.test.js.map +0 -1
- package/dist/composed-server.fonts.test.d.ts +0 -2
- package/dist/composed-server.fonts.test.d.ts.map +0 -1
- package/dist/composed-server.fonts.test.js +0 -186
- package/dist/composed-server.fonts.test.js.map +0 -1
- package/dist/composed-server.test.d.ts +0 -2
- package/dist/composed-server.test.d.ts.map +0 -1
- package/dist/composed-server.test.js +0 -332
- package/dist/composed-server.test.js.map +0 -1
- package/dist/composition.test.d.ts +0 -2
- package/dist/composition.test.d.ts.map +0 -1
- package/dist/composition.test.js +0 -275
- package/dist/composition.test.js.map +0 -1
- package/dist/dashboard-store-postgres.d.ts +0 -43
- package/dist/dashboard-store-postgres.d.ts.map +0 -1
- package/dist/dashboard-store-postgres.js +0 -225
- package/dist/dashboard-store-postgres.js.map +0 -1
- package/dist/dashboard-store-postgres.test.d.ts +0 -2
- package/dist/dashboard-store-postgres.test.d.ts.map +0 -1
- package/dist/dashboard-store-postgres.test.js +0 -272
- package/dist/dashboard-store-postgres.test.js.map +0 -1
- package/dist/font-assets.test.d.ts +0 -2
- package/dist/font-assets.test.d.ts.map +0 -1
- package/dist/font-assets.test.js +0 -123
- package/dist/font-assets.test.js.map +0 -1
- package/dist/health.test.d.ts +0 -2
- package/dist/health.test.d.ts.map +0 -1
- package/dist/health.test.js +0 -140
- package/dist/health.test.js.map +0 -1
- package/dist/host-boot.test.d.ts +0 -2
- package/dist/host-boot.test.d.ts.map +0 -1
- package/dist/host-boot.test.js +0 -59
- package/dist/host-boot.test.js.map +0 -1
- package/dist/http-edge.test.d.ts +0 -2
- package/dist/http-edge.test.d.ts.map +0 -1
- package/dist/http-edge.test.js +0 -255
- package/dist/http-edge.test.js.map +0 -1
- package/dist/metrics.test.d.ts +0 -2
- package/dist/metrics.test.d.ts.map +0 -1
- package/dist/metrics.test.js +0 -154
- package/dist/metrics.test.js.map +0 -1
- package/dist/node-listener.test.d.ts +0 -2
- package/dist/node-listener.test.d.ts.map +0 -1
- package/dist/node-listener.test.js +0 -331
- package/dist/node-listener.test.js.map +0 -1
- package/dist/oauth-env.test.d.ts +0 -2
- package/dist/oauth-env.test.d.ts.map +0 -1
- package/dist/oauth-env.test.js +0 -76
- package/dist/oauth-env.test.js.map +0 -1
- package/dist/postgres.d.ts +0 -59
- package/dist/postgres.d.ts.map +0 -1
- package/dist/postgres.js +0 -80
- package/dist/postgres.js.map +0 -1
- package/dist/profile-advisory.d.ts +0 -19
- package/dist/profile-advisory.d.ts.map +0 -1
- package/dist/profile-advisory.js +0 -48
- package/dist/profile-advisory.js.map +0 -1
- package/dist/profile-advisory.test.d.ts +0 -2
- package/dist/profile-advisory.test.d.ts.map +0 -1
- package/dist/profile-advisory.test.js +0 -53
- package/dist/profile-advisory.test.js.map +0 -1
- package/dist/profile-constants.d.ts +0 -37
- package/dist/profile-constants.d.ts.map +0 -1
- package/dist/profile-constants.js +0 -37
- package/dist/profile-constants.js.map +0 -1
- package/dist/profile-migrations.d.ts +0 -71
- package/dist/profile-migrations.d.ts.map +0 -1
- package/dist/profile-migrations.js +0 -88
- package/dist/profile-migrations.js.map +0 -1
- package/dist/profile-migrations.test.d.ts +0 -2
- package/dist/profile-migrations.test.d.ts.map +0 -1
- package/dist/profile-migrations.test.js +0 -200
- package/dist/profile-migrations.test.js.map +0 -1
- package/dist/profile-record.d.ts +0 -60
- package/dist/profile-record.d.ts.map +0 -1
- package/dist/profile-record.js +0 -78
- package/dist/profile-record.js.map +0 -1
- package/dist/profile-slice.d.ts +0 -53
- package/dist/profile-slice.d.ts.map +0 -1
- package/dist/profile-slice.js +0 -73
- package/dist/profile-slice.js.map +0 -1
- package/dist/profile-slice.test.d.ts +0 -2
- package/dist/profile-slice.test.d.ts.map +0 -1
- package/dist/profile-slice.test.js +0 -73
- package/dist/profile-slice.test.js.map +0 -1
- package/dist/profile-store-env.d.ts +0 -34
- package/dist/profile-store-env.d.ts.map +0 -1
- package/dist/profile-store-env.js +0 -44
- package/dist/profile-store-env.js.map +0 -1
- package/dist/profile-store-env.test.d.ts +0 -2
- package/dist/profile-store-env.test.d.ts.map +0 -1
- package/dist/profile-store-env.test.js +0 -69
- package/dist/profile-store-env.test.js.map +0 -1
- package/dist/profile-store-postgres.d.ts +0 -33
- package/dist/profile-store-postgres.d.ts.map +0 -1
- package/dist/profile-store-postgres.js +0 -87
- package/dist/profile-store-postgres.js.map +0 -1
- package/dist/profile-store-raw.test.d.ts +0 -2
- package/dist/profile-store-raw.test.d.ts.map +0 -1
- package/dist/profile-store-raw.test.js +0 -185
- package/dist/profile-store-raw.test.js.map +0 -1
- package/dist/profile-store.d.ts +0 -85
- package/dist/profile-store.d.ts.map +0 -1
- package/dist/profile-store.js +0 -182
- package/dist/profile-store.js.map +0 -1
- package/dist/profile-store.test.d.ts +0 -2
- package/dist/profile-store.test.d.ts.map +0 -1
- package/dist/profile-store.test.js +0 -353
- package/dist/profile-store.test.js.map +0 -1
- package/dist/profile.d.ts +0 -75
- package/dist/profile.d.ts.map +0 -1
- package/dist/profile.js +0 -85
- package/dist/profile.js.map +0 -1
- package/dist/profile.test.d.ts +0 -2
- package/dist/profile.test.d.ts.map +0 -1
- package/dist/profile.test.js +0 -71
- package/dist/profile.test.js.map +0 -1
- package/dist/request-context.test.d.ts +0 -2
- package/dist/request-context.test.d.ts.map +0 -1
- package/dist/request-context.test.js +0 -107
- package/dist/request-context.test.js.map +0 -1
- package/dist/served-fonts.d.ts +0 -38
- package/dist/served-fonts.d.ts.map +0 -1
- package/dist/served-fonts.js +0 -51
- package/dist/served-fonts.js.map +0 -1
- package/dist/served-fonts.test.d.ts +0 -2
- package/dist/served-fonts.test.d.ts.map +0 -1
- package/dist/served-fonts.test.js +0 -30
- package/dist/served-fonts.test.js.map +0 -1
- package/dist/server-locale.d.ts +0 -58
- package/dist/server-locale.d.ts.map +0 -1
- package/dist/server-locale.js +0 -64
- package/dist/server-locale.js.map +0 -1
- package/dist/server-locale.test.d.ts +0 -2
- package/dist/server-locale.test.d.ts.map +0 -1
- package/dist/server-locale.test.js +0 -90
- package/dist/server-locale.test.js.map +0 -1
- package/dist/shell-catalogue.d.ts +0 -12
- package/dist/shell-catalogue.d.ts.map +0 -1
- package/dist/shell-catalogue.js +0 -142
- package/dist/shell-catalogue.js.map +0 -1
- package/dist/shell-settings-contract.d.ts +0 -34
- package/dist/shell-settings-contract.d.ts.map +0 -1
- package/dist/shell-settings-contract.js +0 -21
- package/dist/shell-settings-contract.js.map +0 -1
- package/dist/shell-settings.d.ts +0 -24
- package/dist/shell-settings.d.ts.map +0 -1
- package/dist/shell-settings.js +0 -148
- package/dist/shell-settings.js.map +0 -1
- package/dist/shell-settings.test.d.ts +0 -2
- package/dist/shell-settings.test.d.ts.map +0 -1
- package/dist/shell-settings.test.js +0 -115
- package/dist/shell-settings.test.js.map +0 -1
- package/dist/testing/catalog-text.d.ts +0 -53
- package/dist/testing/catalog-text.d.ts.map +0 -1
- package/dist/testing/catalog-text.js +0 -146
- package/dist/testing/catalog-text.js.map +0 -1
- package/dist/testing/catalog-text.test.d.ts +0 -2
- package/dist/testing/catalog-text.test.d.ts.map +0 -1
- package/dist/testing/catalog-text.test.js +0 -137
- package/dist/testing/catalog-text.test.js.map +0 -1
- package/dist/testing/colors.d.ts +0 -34
- package/dist/testing/colors.d.ts.map +0 -1
- package/dist/testing/colors.js +0 -124
- package/dist/testing/colors.js.map +0 -1
- package/dist/testing/colors.test.d.ts +0 -2
- package/dist/testing/colors.test.d.ts.map +0 -1
- package/dist/testing/colors.test.js +0 -166
- package/dist/testing/colors.test.js.map +0 -1
- package/dist/testing/contrast.d.ts +0 -77
- package/dist/testing/contrast.d.ts.map +0 -1
- package/dist/testing/contrast.js +0 -382
- package/dist/testing/contrast.js.map +0 -1
- package/dist/testing/contrast.test.d.ts +0 -2
- package/dist/testing/contrast.test.d.ts.map +0 -1
- package/dist/testing/contrast.test.js +0 -230
- package/dist/testing/contrast.test.js.map +0 -1
- package/dist/testing/display-texts.d.ts +0 -23
- package/dist/testing/display-texts.d.ts.map +0 -1
- package/dist/testing/display-texts.js +0 -88
- package/dist/testing/display-texts.js.map +0 -1
- package/dist/testing/display-texts.test.d.ts +0 -2
- package/dist/testing/display-texts.test.d.ts.map +0 -1
- package/dist/testing/display-texts.test.js +0 -169
- package/dist/testing/display-texts.test.js.map +0 -1
- package/dist/testing/glossary.test.d.ts +0 -2
- package/dist/testing/glossary.test.d.ts.map +0 -1
- package/dist/testing/glossary.test.js +0 -78
- package/dist/testing/glossary.test.js.map +0 -1
- package/dist/testing/glyphs.d.ts +0 -27
- package/dist/testing/glyphs.d.ts.map +0 -1
- package/dist/testing/glyphs.js +0 -130
- package/dist/testing/glyphs.js.map +0 -1
- package/dist/testing/glyphs.test.d.ts +0 -2
- package/dist/testing/glyphs.test.d.ts.map +0 -1
- package/dist/testing/glyphs.test.js +0 -146
- package/dist/testing/glyphs.test.js.map +0 -1
- package/dist/testing/icon-sizes.d.ts +0 -22
- package/dist/testing/icon-sizes.d.ts.map +0 -1
- package/dist/testing/icon-sizes.js +0 -39
- package/dist/testing/icon-sizes.js.map +0 -1
- package/dist/testing/icon-sizes.test.d.ts +0 -2
- package/dist/testing/icon-sizes.test.d.ts.map +0 -1
- package/dist/testing/icon-sizes.test.js +0 -36
- package/dist/testing/icon-sizes.test.js.map +0 -1
- package/dist/testing/source-scan.d.ts +0 -16
- package/dist/testing/source-scan.d.ts.map +0 -1
- package/dist/testing/source-scan.js +0 -57
- package/dist/testing/source-scan.js.map +0 -1
- package/dist/testing/tone-pairs.d.ts +0 -20
- package/dist/testing/tone-pairs.d.ts.map +0 -1
- package/dist/testing/tone-pairs.js +0 -154
- package/dist/testing/tone-pairs.js.map +0 -1
- package/dist/testing/type-scale.d.ts +0 -40
- package/dist/testing/type-scale.d.ts.map +0 -1
- package/dist/testing/type-scale.js +0 -55
- package/dist/testing/type-scale.js.map +0 -1
- package/dist/testing/type-scale.test.d.ts +0 -2
- package/dist/testing/type-scale.test.d.ts.map +0 -1
- package/dist/testing/type-scale.test.js +0 -61
- package/dist/testing/type-scale.test.js.map +0 -1
- package/dist/tool-schema-trim.test.d.ts +0 -2
- package/dist/tool-schema-trim.test.d.ts.map +0 -1
- package/dist/tool-schema-trim.test.js +0 -53
- package/dist/tool-schema-trim.test.js.map +0 -1
- package/dist/toolsets.test.d.ts +0 -2
- package/dist/toolsets.test.d.ts.map +0 -1
- package/dist/toolsets.test.js +0 -86
- package/dist/toolsets.test.js.map +0 -1
- package/dist/ui/action-feedback.test.d.ts +0 -2
- package/dist/ui/action-feedback.test.d.ts.map +0 -1
- package/dist/ui/action-feedback.test.js +0 -77
- package/dist/ui/action-feedback.test.js.map +0 -1
- package/dist/ui/app-shell-providers.d.ts +0 -18
- package/dist/ui/app-shell-providers.d.ts.map +0 -1
- package/dist/ui/app-shell-providers.js +0 -19
- package/dist/ui/app-shell-providers.js.map +0 -1
- package/dist/ui/app-shell-providers.test.d.ts +0 -2
- package/dist/ui/app-shell-providers.test.d.ts.map +0 -1
- package/dist/ui/app-shell-providers.test.js +0 -249
- package/dist/ui/app-shell-providers.test.js.map +0 -1
- package/dist/ui/ask-ai-button.test.d.ts +0 -2
- package/dist/ui/ask-ai-button.test.d.ts.map +0 -1
- package/dist/ui/ask-ai-button.test.js +0 -103
- package/dist/ui/ask-ai-button.test.js.map +0 -1
- package/dist/ui/ask-ai-prompt.test.d.ts +0 -2
- package/dist/ui/ask-ai-prompt.test.d.ts.map +0 -1
- package/dist/ui/ask-ai-prompt.test.js +0 -240
- package/dist/ui/ask-ai-prompt.test.js.map +0 -1
- package/dist/ui/bpmn-heatmap/heat-ramp.test.d.ts +0 -2
- package/dist/ui/bpmn-heatmap/heat-ramp.test.d.ts.map +0 -1
- package/dist/ui/bpmn-heatmap/heat-ramp.test.js +0 -174
- package/dist/ui/bpmn-heatmap/heat-ramp.test.js.map +0 -1
- package/dist/ui/bpmn-heatmap/heat-utils.d.ts +0 -119
- package/dist/ui/bpmn-heatmap/heat-utils.d.ts.map +0 -1
- package/dist/ui/bpmn-heatmap/heat-utils.js +0 -231
- package/dist/ui/bpmn-heatmap/heat-utils.js.map +0 -1
- package/dist/ui/bpmn-heatmap/heat-utils.test.d.ts +0 -2
- package/dist/ui/bpmn-heatmap/heat-utils.test.d.ts.map +0 -1
- package/dist/ui/bpmn-heatmap/heat-utils.test.js +0 -59
- package/dist/ui/bpmn-heatmap/heat-utils.test.js.map +0 -1
- package/dist/ui/bpmn-heatmap-labels.d.ts +0 -46
- package/dist/ui/bpmn-heatmap-labels.d.ts.map +0 -1
- package/dist/ui/bpmn-heatmap-labels.js +0 -16
- package/dist/ui/bpmn-heatmap-labels.js.map +0 -1
- package/dist/ui/bpmn-heatmap-widget.d.ts +0 -38
- package/dist/ui/bpmn-heatmap-widget.d.ts.map +0 -1
- package/dist/ui/bpmn-heatmap-widget.js +0 -65
- package/dist/ui/bpmn-heatmap-widget.js.map +0 -1
- package/dist/ui/bpmn-heatmap-widget.test.d.ts +0 -2
- package/dist/ui/bpmn-heatmap-widget.test.d.ts.map +0 -1
- package/dist/ui/bpmn-heatmap-widget.test.js +0 -173
- package/dist/ui/bpmn-heatmap-widget.test.js.map +0 -1
- package/dist/ui/bpmn-heatmap.d.ts +0 -61
- package/dist/ui/bpmn-heatmap.d.ts.map +0 -1
- package/dist/ui/bpmn-heatmap.js +0 -119
- package/dist/ui/bpmn-heatmap.js.map +0 -1
- package/dist/ui/bpmn-tokens.test.d.ts +0 -2
- package/dist/ui/bpmn-tokens.test.d.ts.map +0 -1
- package/dist/ui/bpmn-tokens.test.js +0 -98
- package/dist/ui/bpmn-tokens.test.js.map +0 -1
- package/dist/ui/brand-gates.test.d.ts +0 -2
- package/dist/ui/brand-gates.test.d.ts.map +0 -1
- package/dist/ui/brand-gates.test.js +0 -131
- package/dist/ui/brand-gates.test.js.map +0 -1
- package/dist/ui/brand-mark.d.ts +0 -37
- package/dist/ui/brand-mark.d.ts.map +0 -1
- package/dist/ui/brand-mark.js +0 -33
- package/dist/ui/brand-mark.js.map +0 -1
- package/dist/ui/brand-mark.test.d.ts +0 -2
- package/dist/ui/brand-mark.test.d.ts.map +0 -1
- package/dist/ui/brand-mark.test.js +0 -111
- package/dist/ui/brand-mark.test.js.map +0 -1
- package/dist/ui/confirm-dialog.test.d.ts +0 -2
- package/dist/ui/confirm-dialog.test.d.ts.map +0 -1
- package/dist/ui/confirm-dialog.test.js +0 -115
- package/dist/ui/confirm-dialog.test.js.map +0 -1
- package/dist/ui/count-tone.test.d.ts +0 -2
- package/dist/ui/count-tone.test.d.ts.map +0 -1
- package/dist/ui/count-tone.test.js +0 -27
- package/dist/ui/count-tone.test.js.map +0 -1
- package/dist/ui/create-use-t.d.ts +0 -15
- package/dist/ui/create-use-t.d.ts.map +0 -1
- package/dist/ui/create-use-t.js +0 -17
- package/dist/ui/create-use-t.js.map +0 -1
- package/dist/ui/declare-served-fonts.test.d.ts +0 -2
- package/dist/ui/declare-served-fonts.test.d.ts.map +0 -1
- package/dist/ui/declare-served-fonts.test.js +0 -44
- package/dist/ui/declare-served-fonts.test.js.map +0 -1
- package/dist/ui/describe-error.test.d.ts +0 -2
- package/dist/ui/describe-error.test.d.ts.map +0 -1
- package/dist/ui/describe-error.test.js +0 -274
- package/dist/ui/describe-error.test.js.map +0 -1
- package/dist/ui/format.d.ts +0 -81
- package/dist/ui/format.d.ts.map +0 -1
- package/dist/ui/format.js +0 -189
- package/dist/ui/format.js.map +0 -1
- package/dist/ui/format.test.d.ts +0 -2
- package/dist/ui/format.test.d.ts.map +0 -1
- package/dist/ui/format.test.js +0 -181
- package/dist/ui/format.test.js.map +0 -1
- package/dist/ui/generic-widgets.d.ts +0 -15
- package/dist/ui/generic-widgets.d.ts.map +0 -1
- package/dist/ui/generic-widgets.js +0 -122
- package/dist/ui/generic-widgets.js.map +0 -1
- package/dist/ui/generic-widgets.test.d.ts +0 -2
- package/dist/ui/generic-widgets.test.d.ts.map +0 -1
- package/dist/ui/generic-widgets.test.js +0 -139
- package/dist/ui/generic-widgets.test.js.map +0 -1
- package/dist/ui/hand-off-button.test.d.ts +0 -2
- package/dist/ui/hand-off-button.test.d.ts.map +0 -1
- package/dist/ui/hand-off-button.test.js +0 -78
- package/dist/ui/hand-off-button.test.js.map +0 -1
- package/dist/ui/host-context.test.d.ts +0 -2
- package/dist/ui/host-context.test.d.ts.map +0 -1
- package/dist/ui/host-context.test.js +0 -160
- package/dist/ui/host-context.test.js.map +0 -1
- package/dist/ui/host-document.test.d.ts +0 -2
- package/dist/ui/host-document.test.d.ts.map +0 -1
- package/dist/ui/host-document.test.js +0 -112
- package/dist/ui/host-document.test.js.map +0 -1
- package/dist/ui/humanize-key.d.ts +0 -11
- package/dist/ui/humanize-key.d.ts.map +0 -1
- package/dist/ui/humanize-key.js +0 -26
- package/dist/ui/humanize-key.js.map +0 -1
- package/dist/ui/humanize-key.test.d.ts +0 -2
- package/dist/ui/humanize-key.test.d.ts.map +0 -1
- package/dist/ui/humanize-key.test.js +0 -42
- package/dist/ui/humanize-key.test.js.map +0 -1
- package/dist/ui/icon.d.ts +0 -37
- package/dist/ui/icon.d.ts.map +0 -1
- package/dist/ui/icon.js +0 -32
- package/dist/ui/icon.js.map +0 -1
- package/dist/ui/id-breaks.d.ts +0 -17
- package/dist/ui/id-breaks.d.ts.map +0 -1
- package/dist/ui/id-breaks.js +0 -36
- package/dist/ui/id-breaks.js.map +0 -1
- package/dist/ui/id-breaks.test.d.ts +0 -2
- package/dist/ui/id-breaks.test.d.ts.map +0 -1
- package/dist/ui/id-breaks.test.js +0 -37
- package/dist/ui/id-breaks.test.js.map +0 -1
- package/dist/ui/id-text.test.d.ts +0 -2
- package/dist/ui/id-text.test.d.ts.map +0 -1
- package/dist/ui/id-text.test.js +0 -122
- package/dist/ui/id-text.test.js.map +0 -1
- package/dist/ui/index.test.d.ts +0 -2
- package/dist/ui/index.test.d.ts.map +0 -1
- package/dist/ui/index.test.js +0 -34
- package/dist/ui/index.test.js.map +0 -1
- package/dist/ui/inline-fit-solve.test.d.ts +0 -2
- package/dist/ui/inline-fit-solve.test.d.ts.map +0 -1
- package/dist/ui/inline-fit-solve.test.js +0 -108
- package/dist/ui/inline-fit-solve.test.js.map +0 -1
- package/dist/ui/inline-fit-time.test.d.ts +0 -2
- package/dist/ui/inline-fit-time.test.d.ts.map +0 -1
- package/dist/ui/inline-fit-time.test.js +0 -110
- package/dist/ui/inline-fit-time.test.js.map +0 -1
- package/dist/ui/inline-fit.test-support.d.ts +0 -26
- package/dist/ui/inline-fit.test-support.d.ts.map +0 -1
- package/dist/ui/inline-fit.test-support.js +0 -34
- package/dist/ui/inline-fit.test-support.js.map +0 -1
- package/dist/ui/inline-fit.test.d.ts +0 -2
- package/dist/ui/inline-fit.test.d.ts.map +0 -1
- package/dist/ui/inline-fit.test.js +0 -159
- package/dist/ui/inline-fit.test.js.map +0 -1
- package/dist/ui/kit-labels.test.d.ts +0 -2
- package/dist/ui/kit-labels.test.d.ts.map +0 -1
- package/dist/ui/kit-labels.test.js +0 -98
- package/dist/ui/kit-labels.test.js.map +0 -1
- package/dist/ui/kit-type-roles.test.d.ts +0 -2
- package/dist/ui/kit-type-roles.test.d.ts.map +0 -1
- package/dist/ui/kit-type-roles.test.js +0 -122
- package/dist/ui/kit-type-roles.test.js.map +0 -1
- package/dist/ui/komet-svg.d.ts +0 -15
- package/dist/ui/komet-svg.d.ts.map +0 -1
- package/dist/ui/komet-svg.js +0 -21
- package/dist/ui/komet-svg.js.map +0 -1
- package/dist/ui/list-table.test.d.ts +0 -2
- package/dist/ui/list-table.test.d.ts.map +0 -1
- package/dist/ui/list-table.test.js +0 -169
- package/dist/ui/list-table.test.js.map +0 -1
- package/dist/ui/localized-app-view.d.ts +0 -40
- package/dist/ui/localized-app-view.d.ts.map +0 -1
- package/dist/ui/localized-app-view.js +0 -71
- package/dist/ui/localized-app-view.js.map +0 -1
- package/dist/ui/log-text.d.ts +0 -24
- package/dist/ui/log-text.d.ts.map +0 -1
- package/dist/ui/log-text.js +0 -31
- package/dist/ui/log-text.js.map +0 -1
- package/dist/ui/menu-item.d.ts +0 -12
- package/dist/ui/menu-item.d.ts.map +0 -1
- package/dist/ui/menu-item.js +0 -13
- package/dist/ui/menu-item.js.map +0 -1
- package/dist/ui/named-id.d.ts +0 -23
- package/dist/ui/named-id.d.ts.map +0 -1
- package/dist/ui/named-id.js +0 -21
- package/dist/ui/named-id.js.map +0 -1
- package/dist/ui/named-id.test.d.ts +0 -2
- package/dist/ui/named-id.test.d.ts.map +0 -1
- package/dist/ui/named-id.test.js +0 -57
- package/dist/ui/named-id.test.js.map +0 -1
- package/dist/ui/native-select.d.ts +0 -17
- package/dist/ui/native-select.d.ts.map +0 -1
- package/dist/ui/native-select.js +0 -20
- package/dist/ui/native-select.js.map +0 -1
- package/dist/ui/navigation-focus.d.ts +0 -20
- package/dist/ui/navigation-focus.d.ts.map +0 -1
- package/dist/ui/navigation-focus.js +0 -25
- package/dist/ui/navigation-focus.js.map +0 -1
- package/dist/ui/navigation-focus.test.d.ts +0 -2
- package/dist/ui/navigation-focus.test.d.ts.map +0 -1
- package/dist/ui/navigation-focus.test.js +0 -28
- package/dist/ui/navigation-focus.test.js.map +0 -1
- package/dist/ui/paged-list-footer.test.d.ts +0 -2
- package/dist/ui/paged-list-footer.test.d.ts.map +0 -1
- package/dist/ui/paged-list-footer.test.js +0 -128
- package/dist/ui/paged-list-footer.test.js.map +0 -1
- package/dist/ui/parse-tool-result.test.d.ts +0 -2
- package/dist/ui/parse-tool-result.test.d.ts.map +0 -1
- package/dist/ui/parse-tool-result.test.js +0 -88
- package/dist/ui/parse-tool-result.test.js.map +0 -1
- package/dist/ui/profile-gate.d.ts +0 -37
- package/dist/ui/profile-gate.d.ts.map +0 -1
- package/dist/ui/profile-gate.js +0 -126
- package/dist/ui/profile-gate.js.map +0 -1
- package/dist/ui/profile-gate.test.d.ts +0 -2
- package/dist/ui/profile-gate.test.d.ts.map +0 -1
- package/dist/ui/profile-gate.test.js +0 -246
- package/dist/ui/profile-gate.test.js.map +0 -1
- package/dist/ui/query-fallback.test.d.ts +0 -2
- package/dist/ui/query-fallback.test.d.ts.map +0 -1
- package/dist/ui/query-fallback.test.js +0 -49
- package/dist/ui/query-fallback.test.js.map +0 -1
- package/dist/ui/row-card.d.ts +0 -13
- package/dist/ui/row-card.d.ts.map +0 -1
- package/dist/ui/row-card.js +0 -11
- package/dist/ui/row-card.js.map +0 -1
- package/dist/ui/section.d.ts +0 -18
- package/dist/ui/section.d.ts.map +0 -1
- package/dist/ui/section.js +0 -14
- package/dist/ui/section.js.map +0 -1
- package/dist/ui/segmented-control.d.ts +0 -25
- package/dist/ui/segmented-control.d.ts.map +0 -1
- package/dist/ui/segmented-control.js +0 -22
- package/dist/ui/segmented-control.js.map +0 -1
- package/dist/ui/settings-labels.d.ts +0 -33
- package/dist/ui/settings-labels.d.ts.map +0 -1
- package/dist/ui/settings-labels.js +0 -50
- package/dist/ui/settings-labels.js.map +0 -1
- package/dist/ui/settings-layout.d.ts +0 -29
- package/dist/ui/settings-layout.d.ts.map +0 -1
- package/dist/ui/settings-layout.js +0 -49
- package/dist/ui/settings-layout.js.map +0 -1
- package/dist/ui/settings-layout.test.d.ts +0 -2
- package/dist/ui/settings-layout.test.d.ts.map +0 -1
- package/dist/ui/settings-layout.test.js +0 -73
- package/dist/ui/settings-layout.test.js.map +0 -1
- package/dist/ui/settings.d.ts +0 -47
- package/dist/ui/settings.d.ts.map +0 -1
- package/dist/ui/settings.js +0 -48
- package/dist/ui/settings.js.map +0 -1
- package/dist/ui/settings.test.d.ts +0 -2
- package/dist/ui/settings.test.d.ts.map +0 -1
- package/dist/ui/settings.test.js +0 -38
- package/dist/ui/settings.test.js.map +0 -1
- package/dist/ui/shell-settings.d.ts +0 -31
- package/dist/ui/shell-settings.d.ts.map +0 -1
- package/dist/ui/shell-settings.js +0 -97
- package/dist/ui/shell-settings.js.map +0 -1
- package/dist/ui/shell-settings.test.d.ts +0 -2
- package/dist/ui/shell-settings.test.d.ts.map +0 -1
- package/dist/ui/shell-settings.test.js +0 -108
- package/dist/ui/shell-settings.test.js.map +0 -1
- package/dist/ui/shell-widgets.d.ts +0 -14
- package/dist/ui/shell-widgets.d.ts.map +0 -1
- package/dist/ui/shell-widgets.js +0 -18
- package/dist/ui/shell-widgets.js.map +0 -1
- package/dist/ui/table.d.ts +0 -61
- package/dist/ui/table.d.ts.map +0 -1
- package/dist/ui/table.js +0 -43
- package/dist/ui/table.js.map +0 -1
- package/dist/ui/tone-components.test.d.ts +0 -2
- package/dist/ui/tone-components.test.d.ts.map +0 -1
- package/dist/ui/tone-components.test.js +0 -145
- package/dist/ui/tone-components.test.js.map +0 -1
- package/dist/ui/tone-contrast.test.d.ts +0 -2
- package/dist/ui/tone-contrast.test.d.ts.map +0 -1
- package/dist/ui/tone-contrast.test.js +0 -66
- package/dist/ui/tone-contrast.test.js.map +0 -1
- package/dist/ui/toolkit-overlap.test.d.ts +0 -2
- package/dist/ui/toolkit-overlap.test.d.ts.map +0 -1
- package/dist/ui/toolkit-overlap.test.js +0 -86
- package/dist/ui/toolkit-overlap.test.js.map +0 -1
- package/dist/ui/use-apply-theme.test.d.ts +0 -2
- package/dist/ui/use-apply-theme.test.d.ts.map +0 -1
- package/dist/ui/use-apply-theme.test.js +0 -102
- package/dist/ui/use-apply-theme.test.js.map +0 -1
- package/dist/ui/use-bpmn-viewer.test.d.ts +0 -2
- package/dist/ui/use-bpmn-viewer.test.d.ts.map +0 -1
- package/dist/ui/use-bpmn-viewer.test.js +0 -239
- package/dist/ui/use-bpmn-viewer.test.js.map +0 -1
- package/dist/ui/use-detail-view.test.d.ts +0 -2
- package/dist/ui/use-detail-view.test.d.ts.map +0 -1
- package/dist/ui/use-detail-view.test.js +0 -178
- package/dist/ui/use-detail-view.test.js.map +0 -1
- package/dist/ui/use-paged-list-view.test.d.ts +0 -2
- package/dist/ui/use-paged-list-view.test.d.ts.map +0 -1
- package/dist/ui/use-paged-list-view.test.js +0 -136
- package/dist/ui/use-paged-list-view.test.js.map +0 -1
- package/dist/ui/use-paged-view-data.seeded.test.d.ts +0 -2
- package/dist/ui/use-paged-view-data.seeded.test.d.ts.map +0 -1
- package/dist/ui/use-paged-view-data.seeded.test.js +0 -144
- package/dist/ui/use-paged-view-data.seeded.test.js.map +0 -1
- package/dist/ui/use-paged-view-data.test.d.ts +0 -2
- package/dist/ui/use-paged-view-data.test.d.ts.map +0 -1
- package/dist/ui/use-paged-view-data.test.js +0 -330
- package/dist/ui/use-paged-view-data.test.js.map +0 -1
- package/dist/ui/use-reset-on-change.d.ts +0 -22
- package/dist/ui/use-reset-on-change.d.ts.map +0 -1
- package/dist/ui/use-reset-on-change.js +0 -29
- package/dist/ui/use-reset-on-change.js.map +0 -1
- package/dist/ui/use-reset-on-change.test.d.ts +0 -2
- package/dist/ui/use-reset-on-change.test.d.ts.map +0 -1
- package/dist/ui/use-reset-on-change.test.js +0 -61
- package/dist/ui/use-reset-on-change.test.js.map +0 -1
- package/dist/ui/use-view-data.seeded.test.d.ts +0 -2
- package/dist/ui/use-view-data.seeded.test.d.ts.map +0 -1
- package/dist/ui/use-view-data.seeded.test.js +0 -168
- package/dist/ui/use-view-data.seeded.test.js.map +0 -1
- package/dist/ui/view-data-state.test.d.ts +0 -2
- package/dist/ui/view-data-state.test.d.ts.map +0 -1
- package/dist/ui/view-data-state.test.js +0 -62
- package/dist/ui/view-data-state.test.js.map +0 -1
- package/dist/ui/view-meta.test.d.ts +0 -2
- package/dist/ui/view-meta.test.d.ts.map +0 -1
- package/dist/ui/view-meta.test.js +0 -92
- package/dist/ui/view-meta.test.js.map +0 -1
- package/dist/ui/widget-shell.test.d.ts +0 -2
- package/dist/ui/widget-shell.test.d.ts.map +0 -1
- package/dist/ui/widget-shell.test.js +0 -41
- package/dist/ui/widget-shell.test.js.map +0 -1
- package/dist/widget-meta-defaults.d.ts +0 -48
- package/dist/widget-meta-defaults.d.ts.map +0 -1
- package/dist/widget-meta-defaults.js +0 -80
- package/dist/widget-meta-defaults.js.map +0 -1
- package/dist/widget-meta-defaults.test.d.ts +0 -2
- package/dist/widget-meta-defaults.test.d.ts.map +0 -1
- package/dist/widget-meta-defaults.test.js +0 -196
- package/dist/widget-meta-defaults.test.js.map +0 -1
- package/dist/widget-tool-bindings.test.d.ts +0 -2
- package/dist/widget-tool-bindings.test.d.ts.map +0 -1
- package/dist/widget-tool-bindings.test.js +0 -83
- package/dist/widget-tool-bindings.test.js.map +0 -1
- package/dist/with-tool-errors.test.d.ts +0 -2
- package/dist/with-tool-errors.test.d.ts.map +0 -1
- package/dist/with-tool-errors.test.js +0 -38
- package/dist/with-tool-errors.test.js.map +0 -1
package/dist/profile-store.js
DELETED
|
@@ -1,182 +0,0 @@
|
|
|
1
|
-
import { randomUUID } from "node:crypto";
|
|
2
|
-
import fs from "node:fs/promises";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import { PROFILE_SCHEMA_VERSION } from "./profile-constants.js";
|
|
5
|
-
import { migrateStoredProfile, parseStoredProfile } from "./profile-migrations.js";
|
|
6
|
-
import { defaultProfileRecord, projectProfileRecord, } from "./profile-record.js";
|
|
7
|
-
function nowIso() {
|
|
8
|
-
return new Date().toISOString();
|
|
9
|
-
}
|
|
10
|
-
function stripUndefined(obj) {
|
|
11
|
-
return Object.fromEntries(Object.entries(obj).filter(([, v]) => v !== undefined));
|
|
12
|
-
}
|
|
13
|
-
const isPlainObject = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
14
|
-
/**
|
|
15
|
-
* One-level module-slice merge: each module key in the patch spreads over the
|
|
16
|
-
* stored slice of the SAME module (non-object slices replace), other modules'
|
|
17
|
-
* slices stay untouched. A field explicitly set to `undefined` overrides the
|
|
18
|
-
* stored value and drops out on serialization — that is how a module's save
|
|
19
|
-
* tool clears a field.
|
|
20
|
-
*/
|
|
21
|
-
function mergeModuleSlices(prev, patch) {
|
|
22
|
-
const next = { ...prev };
|
|
23
|
-
for (const [module, slice] of Object.entries(patch ?? {})) {
|
|
24
|
-
const stored = next[module];
|
|
25
|
-
next[module] = isPlainObject(stored) && isPlainObject(slice) ? { ...stored, ...slice } : slice;
|
|
26
|
-
}
|
|
27
|
-
return next;
|
|
28
|
-
}
|
|
29
|
-
/**
|
|
30
|
-
* Merge a partial save over the RAW stored document (or a fresh default),
|
|
31
|
-
* preserving `id`/`userId`/`createdAt` and re-stamping `updatedAt`. Omitted
|
|
32
|
-
* input fields keep their previous value so single-field updates don't wipe
|
|
33
|
-
* the rest — and because the base is the stored JSON, not its parsed view,
|
|
34
|
-
* nothing this build cannot read is dropped either: a locale a newer build
|
|
35
|
-
* added, a top-level key it introduced, a whole newer-version document during
|
|
36
|
-
* a rolling deploy (whose `schemaVersion` is never stamped down). Shared by
|
|
37
|
-
* every store implementation (in-memory, filesystem, and the postgres sibling
|
|
38
|
-
* in `profile-store-postgres.ts`), each calling it INSIDE its per-key
|
|
39
|
-
* serialization, so the merge semantics stay single-sourced. Record-agnostic
|
|
40
|
-
* on purpose — module-specific normalization (e.g. camunda7's "empty string
|
|
41
|
-
* clears the field") happens at the owning module's save-tool boundary.
|
|
42
|
-
*/
|
|
43
|
-
export function mergeStoredProfile(key, stored, input, now, opts) {
|
|
44
|
-
const migrated = migrateStoredProfile(stored);
|
|
45
|
-
const prev = migrated?.doc ?? { ...defaultProfileRecord(key) };
|
|
46
|
-
const prevRecord = projectProfileRecord(prev, key);
|
|
47
|
-
const document = {
|
|
48
|
-
...prev,
|
|
49
|
-
...stripUndefined(input),
|
|
50
|
-
// Module slices merge per module key, one level deep: a save carrying
|
|
51
|
-
// `modules.analytics` spreads over the STORED analytics slice (a field
|
|
52
|
-
// explicitly set to `undefined` clears on serialization) and leaves other
|
|
53
|
-
// modules' slices intact. Merging here — inside the store's per-key
|
|
54
|
-
// serialization — rather than replacing means two concurrent saves of
|
|
55
|
-
// DISJOINT fields in the same slice both survive, as long as each save
|
|
56
|
-
// carries its patch alone (`saveModuleSlice`): a slice pre-read outside
|
|
57
|
-
// this lock would carry stale values that win here.
|
|
58
|
-
modules: mergeModuleSlices(prevRecord.modules, input.modules),
|
|
59
|
-
id: key,
|
|
60
|
-
// A stamped owner sticks: a later save without auth context keeps it.
|
|
61
|
-
userId: opts?.userId ?? prevRecord.userId,
|
|
62
|
-
createdAt: prevRecord.createdAt || now,
|
|
63
|
-
updatedAt: now,
|
|
64
|
-
schemaVersion: migrated?.version ?? PROFILE_SCHEMA_VERSION,
|
|
65
|
-
};
|
|
66
|
-
return { document, record: projectProfileRecord(document, key) };
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Process-local store. The default when `MCP_PROFILE_DIR` is unset — fine for
|
|
70
|
-
* dev and single-instance deployments; everything is lost on restart, and
|
|
71
|
-
* behind a load balancer each replica sees its own records. Each save runs
|
|
72
|
-
* synchronously inside one microtask, so saves of the same key never
|
|
73
|
-
* interleave.
|
|
74
|
-
*/
|
|
75
|
-
export function createInMemoryProfileStore() {
|
|
76
|
-
const byKey = new Map();
|
|
77
|
-
const read = (key) => parseStoredProfile(byKey.get(key), key);
|
|
78
|
-
return {
|
|
79
|
-
get(key) {
|
|
80
|
-
return Promise.resolve(read(key));
|
|
81
|
-
},
|
|
82
|
-
save(key, input, opts) {
|
|
83
|
-
return Promise.resolve().then(() => {
|
|
84
|
-
const merged = mergeStoredProfile(key, byKey.get(key), input, nowIso(), opts);
|
|
85
|
-
byKey.set(key, merged.document);
|
|
86
|
-
return merged.record;
|
|
87
|
-
});
|
|
88
|
-
},
|
|
89
|
-
delete(key) {
|
|
90
|
-
return Promise.resolve(byKey.delete(key));
|
|
91
|
-
},
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
/**
|
|
95
|
-
* The tail of each file's pending operations, keyed by absolute path —
|
|
96
|
-
* module-wide, so two store instances on the same directory (in one process)
|
|
97
|
-
* serialize too. An entry is dropped once its chain drains.
|
|
98
|
-
*/
|
|
99
|
-
const fileLocks = new Map();
|
|
100
|
-
/**
|
|
101
|
-
* Run `fn` once every earlier operation on `file` has settled — a promise
|
|
102
|
-
* chain per file, so a read-merge-write can never interleave with another one
|
|
103
|
-
* for the same key. A failed operation releases the lock like a successful one.
|
|
104
|
-
*/
|
|
105
|
-
function withFileLock(file, fn) {
|
|
106
|
-
const lockKey = path.resolve(file);
|
|
107
|
-
const run = (fileLocks.get(lockKey) ?? Promise.resolve()).then(fn);
|
|
108
|
-
const tail = run.then(() => undefined, () => undefined);
|
|
109
|
-
fileLocks.set(lockKey, tail);
|
|
110
|
-
void tail.then(() => {
|
|
111
|
-
if (fileLocks.get(lockKey) === tail)
|
|
112
|
-
fileLocks.delete(lockKey);
|
|
113
|
-
});
|
|
114
|
-
return run;
|
|
115
|
-
}
|
|
116
|
-
const isMissing = (err) => err.code === "ENOENT";
|
|
117
|
-
/**
|
|
118
|
-
* Profiles stored as one JSON file per key under `dir` (`<encodeURIComponent
|
|
119
|
-
* (key)>.json`). Selected when `MCP_PROFILE_DIR` is set so preferences survive
|
|
120
|
-
* restarts. Every operation on a key runs under a per-key lock, so concurrent
|
|
121
|
-
* saves of the same key (two settings sections, two modules' save tools in one
|
|
122
|
-
* model turn) merge one after the other instead of last-write-wins; writes are
|
|
123
|
-
* atomic (temp file + rename in the same directory), so a crash mid-write
|
|
124
|
-
* can't truncate a record. The lock is process-local: the store is
|
|
125
|
-
* SINGLE-WRITER — point one server process at a directory (the postgres store
|
|
126
|
-
* is the multi-instance answer).
|
|
127
|
-
*/
|
|
128
|
-
export function createFileSystemProfileStore(options) {
|
|
129
|
-
const { dir } = options;
|
|
130
|
-
const fileFor = (key) => path.join(dir, `${encodeURIComponent(key)}.json`);
|
|
131
|
-
/** The stored JSON, `undefined` when there is no file or it is not JSON. */
|
|
132
|
-
const readJson = async (key) => {
|
|
133
|
-
let raw;
|
|
134
|
-
try {
|
|
135
|
-
raw = await fs.readFile(fileFor(key), "utf-8");
|
|
136
|
-
}
|
|
137
|
-
catch (err) {
|
|
138
|
-
if (isMissing(err))
|
|
139
|
-
return undefined;
|
|
140
|
-
throw err;
|
|
141
|
-
}
|
|
142
|
-
// A file that is not JSON at all (hand-edited, foreign) cannot be merged
|
|
143
|
-
// over — it reads as "no record" and the next save replaces it. Valid JSON
|
|
144
|
-
// is never discarded: unknown keys and values survive every save.
|
|
145
|
-
try {
|
|
146
|
-
return JSON.parse(raw);
|
|
147
|
-
}
|
|
148
|
-
catch {
|
|
149
|
-
return undefined;
|
|
150
|
-
}
|
|
151
|
-
};
|
|
152
|
-
return {
|
|
153
|
-
get: async (key) => parseStoredProfile(await readJson(key), key),
|
|
154
|
-
save(key, input, opts) {
|
|
155
|
-
const file = fileFor(key);
|
|
156
|
-
return withFileLock(file, async () => {
|
|
157
|
-
const merged = mergeStoredProfile(key, await readJson(key), input, nowIso(), opts);
|
|
158
|
-
await fs.mkdir(dir, { recursive: true });
|
|
159
|
-
// Unique tmp name per write, renamed over the record in one step.
|
|
160
|
-
const tmp = `${file}.${randomUUID()}.tmp`;
|
|
161
|
-
await fs.writeFile(tmp, JSON.stringify(merged.document, null, 2), "utf-8");
|
|
162
|
-
await fs.rename(tmp, file);
|
|
163
|
-
return merged.record;
|
|
164
|
-
});
|
|
165
|
-
},
|
|
166
|
-
delete(key) {
|
|
167
|
-
const file = fileFor(key);
|
|
168
|
-
return withFileLock(file, async () => {
|
|
169
|
-
try {
|
|
170
|
-
await fs.unlink(file);
|
|
171
|
-
return true;
|
|
172
|
-
}
|
|
173
|
-
catch (err) {
|
|
174
|
-
if (isMissing(err))
|
|
175
|
-
return false;
|
|
176
|
-
throw err;
|
|
177
|
-
}
|
|
178
|
-
});
|
|
179
|
-
},
|
|
180
|
-
};
|
|
181
|
-
}
|
|
182
|
-
//# sourceMappingURL=profile-store.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"profile-store.js","sourceRoot":"","sources":["../src/profile-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"profile-store.test.d.ts","sourceRoot":"","sources":["../src/profile-store.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,353 +0,0 @@
|
|
|
1
|
-
import { mkdtemp, readFile, writeFile } from "node:fs/promises";
|
|
2
|
-
import { tmpdir } from "node:os";
|
|
3
|
-
import path from "node:path";
|
|
4
|
-
import postgres from "postgres";
|
|
5
|
-
import { afterAll, beforeAll, beforeEach, describe, expect, it } from "vitest";
|
|
6
|
-
import { createFileSystemProfileStore, createInMemoryProfileStore, } from "./profile-store.js";
|
|
7
|
-
import { createPostgresProfileStore, PROFILE_STORE_MIGRATIONS } from "./profile-store-postgres.js";
|
|
8
|
-
import { defaultProfileRecord } from "./profile-record.js";
|
|
9
|
-
import { saveModuleSlice } from "./profile-slice.js";
|
|
10
|
-
describe("defaultProfileRecord", () => {
|
|
11
|
-
it("returns a complete, defaulted record for an unsaved key", () => {
|
|
12
|
-
const p = defaultProfileRecord("sess-1");
|
|
13
|
-
expect(p).toMatchObject({
|
|
14
|
-
id: "sess-1",
|
|
15
|
-
language: "system",
|
|
16
|
-
modules: {},
|
|
17
|
-
schemaVersion: 3,
|
|
18
|
-
});
|
|
19
|
-
expect(p.userId).toBeUndefined();
|
|
20
|
-
expect(p.createdAt).toBe(p.updatedAt);
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
/**
|
|
24
|
-
* Behavioral contract every ProfileStore implementation must satisfy — run
|
|
25
|
-
* against each store so the implementations cannot drift apart. `makeStore`
|
|
26
|
-
* must return a store whose keys start out absent.
|
|
27
|
-
*/
|
|
28
|
-
function profileStoreContract(makeStore) {
|
|
29
|
-
it("returns undefined for an unknown key", async () => {
|
|
30
|
-
const store = await makeStore();
|
|
31
|
-
expect(await store.get("missing")).toBeUndefined();
|
|
32
|
-
});
|
|
33
|
-
it("creates, then merges partial updates without wiping other fields", async () => {
|
|
34
|
-
const store = await makeStore();
|
|
35
|
-
const created = await store.save("sess-1", { language: "de" });
|
|
36
|
-
expect(created.language).toBe("de");
|
|
37
|
-
// Untouched fields keep their defaults.
|
|
38
|
-
expect(created.modules).toEqual({});
|
|
39
|
-
// A single-field update must not reset language.
|
|
40
|
-
const updated = await store.save("sess-1", { modules: { analytics: { defaultPeriod: "7d" } } });
|
|
41
|
-
expect(updated.modules).toEqual({ analytics: { defaultPeriod: "7d" } });
|
|
42
|
-
expect(updated.language).toBe("de");
|
|
43
|
-
// createdAt is preserved across saves; updatedAt advances (or is unchanged).
|
|
44
|
-
expect(updated.createdAt).toBe(created.createdAt);
|
|
45
|
-
expect(updated.updatedAt >= created.updatedAt).toBe(true);
|
|
46
|
-
});
|
|
47
|
-
it("merges module slices per namespace without wiping other modules", async () => {
|
|
48
|
-
const store = await makeStore();
|
|
49
|
-
await store.save("sess-1", { modules: { analytics: { defaultPeriod: "30d" } } });
|
|
50
|
-
const updated = await store.save("sess-1", { modules: { other: { flag: true } } });
|
|
51
|
-
expect(updated.modules).toEqual({
|
|
52
|
-
analytics: { defaultPeriod: "30d" },
|
|
53
|
-
other: { flag: true },
|
|
54
|
-
});
|
|
55
|
-
// A save without `modules` leaves all slices untouched.
|
|
56
|
-
const untouched = await store.save("sess-1", { language: "de" });
|
|
57
|
-
expect(untouched.modules).toEqual(updated.modules);
|
|
58
|
-
});
|
|
59
|
-
it("merges the saved module slice one level deep, leaving siblings intact", async () => {
|
|
60
|
-
const store = await makeStore();
|
|
61
|
-
await store.save("sess-1", {
|
|
62
|
-
modules: { camunda7: { defaultEngineId: "prod-a" }, analytics: { defaultPeriod: "30d" } },
|
|
63
|
-
});
|
|
64
|
-
const updated = await store.save("sess-1", { modules: { camunda7: { pinned: ["d1"] } } });
|
|
65
|
-
// Per-key one-level MERGE (inside the store's lock, so concurrent saves
|
|
66
|
-
// of disjoint fields in the SAME slice both survive); a field clears via
|
|
67
|
-
// explicit `undefined`, tested below.
|
|
68
|
-
expect(updated.modules).toEqual({
|
|
69
|
-
camunda7: { defaultEngineId: "prod-a", pinned: ["d1"] },
|
|
70
|
-
analytics: { defaultPeriod: "30d" },
|
|
71
|
-
});
|
|
72
|
-
});
|
|
73
|
-
it("clears a slice field via explicit undefined and keeps merging afterwards", async () => {
|
|
74
|
-
const store = await makeStore();
|
|
75
|
-
await store.save("sess-1", {
|
|
76
|
-
modules: { camunda7: { defaultEngineId: "prod-a", pinned: ["d1"] } },
|
|
77
|
-
});
|
|
78
|
-
const cleared = await store.save("sess-1", {
|
|
79
|
-
modules: { camunda7: { defaultEngineId: undefined } },
|
|
80
|
-
});
|
|
81
|
-
expect(cleared.modules?.camunda7).toEqual({ pinned: ["d1"] });
|
|
82
|
-
const merged = await store.save("sess-1", { modules: { camunda7: { fresh: true } } });
|
|
83
|
-
expect(merged.modules?.camunda7).toEqual({ pinned: ["d1"], fresh: true });
|
|
84
|
-
});
|
|
85
|
-
it("deletes a stored profile", async () => {
|
|
86
|
-
const store = await makeStore();
|
|
87
|
-
await store.save("sess-1", { language: "de" });
|
|
88
|
-
expect(await store.delete("sess-1")).toBe(true);
|
|
89
|
-
expect(await store.get("sess-1")).toBeUndefined();
|
|
90
|
-
expect(await store.delete("sess-1")).toBe(false);
|
|
91
|
-
});
|
|
92
|
-
it("keeps both of two concurrent saves of disjoint top-level fields", async () => {
|
|
93
|
-
const store = await makeStore();
|
|
94
|
-
// The settings page has two independent save buttons — overlapping saves
|
|
95
|
-
// must both land: every store merges INSIDE its per-key serialization.
|
|
96
|
-
await Promise.all([
|
|
97
|
-
store.save("sess-1", { modules: { analytics: { defaultPeriod: "30d" } } }),
|
|
98
|
-
store.save("sess-1", { language: "de" }),
|
|
99
|
-
]);
|
|
100
|
-
const profile = await store.get("sess-1");
|
|
101
|
-
expect(profile?.modules).toEqual({ analytics: { defaultPeriod: "30d" } });
|
|
102
|
-
expect(profile?.language).toBe("de");
|
|
103
|
-
});
|
|
104
|
-
it("keeps concurrent saves from DIFFERENT modules — no module's update is lost", async () => {
|
|
105
|
-
const store = await makeStore();
|
|
106
|
-
// Exactly the tool paths: each module's save tool hands the store its
|
|
107
|
-
// patch (`saveModuleSlice`); the model may fire camunda7_select_engine
|
|
108
|
-
// and analytics_save_settings in one turn. Repeated, because an
|
|
109
|
-
// unserialized read-merge-write loses one of them only when the two
|
|
110
|
-
// calls interleave.
|
|
111
|
-
for (let round = 0; round < 10; round += 1) {
|
|
112
|
-
const key = `user-${round}`;
|
|
113
|
-
await store.save(key, { modules: { camunda7: { pinnedDashboardIds: ["d1"] } } });
|
|
114
|
-
await Promise.all([
|
|
115
|
-
saveModuleSlice(store, key, "camunda7", { defaultEngineId: "prod-a" }),
|
|
116
|
-
saveModuleSlice(store, key, "analytics", { defaultPeriod: "30d" }),
|
|
117
|
-
store.save(key, { language: "de" }),
|
|
118
|
-
]);
|
|
119
|
-
const profile = await store.get(key);
|
|
120
|
-
expect(profile?.modules).toEqual({
|
|
121
|
-
camunda7: { pinnedDashboardIds: ["d1"], defaultEngineId: "prod-a" },
|
|
122
|
-
analytics: { defaultPeriod: "30d" },
|
|
123
|
-
});
|
|
124
|
-
expect(profile?.language).toBe("de");
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
it("keeps concurrent saves of different fields in the SAME slice: a stale value never wins", async () => {
|
|
128
|
-
const store = await makeStore();
|
|
129
|
-
// The model fires camunda7_select_engine and camunda7_save_settings
|
|
130
|
-
// in one turn, and the field the select changes ALREADY holds a value.
|
|
131
|
-
// A save tool that hands the store a pre-read slice (read outside the
|
|
132
|
-
// lock) writes that stale value back. The patch alone, merged inside the
|
|
133
|
-
// store's per-key serialization, keeps both.
|
|
134
|
-
for (let round = 0; round < 10; round += 1) {
|
|
135
|
-
const key = `user-${round}`;
|
|
136
|
-
await store.save(key, { modules: { camunda7: { defaultEngineId: "prod-a", extra: 1 } } });
|
|
137
|
-
await Promise.all([
|
|
138
|
-
saveModuleSlice(store, key, "camunda7", { defaultEngineId: "prod-b" }),
|
|
139
|
-
saveModuleSlice(store, key, "camunda7", { pinnedDashboardIds: ["d1"] }),
|
|
140
|
-
]);
|
|
141
|
-
expect((await store.get(key))?.modules?.camunda7).toEqual({
|
|
142
|
-
defaultEngineId: "prod-b",
|
|
143
|
-
pinnedDashboardIds: ["d1"],
|
|
144
|
-
extra: 1,
|
|
145
|
-
});
|
|
146
|
-
}
|
|
147
|
-
});
|
|
148
|
-
it("saveModuleSlice clears a field patched to undefined and reports the saved slice", async () => {
|
|
149
|
-
const store = await makeStore();
|
|
150
|
-
await saveModuleSlice(store, "sess-1", "camunda7", { defaultEngineId: "prod-a", keep: true });
|
|
151
|
-
const slice = await saveModuleSlice(store, "sess-1", "camunda7", { defaultEngineId: undefined });
|
|
152
|
-
expect(slice).toEqual({ keep: true });
|
|
153
|
-
expect((await store.get("sess-1"))?.modules?.camunda7).toEqual({ keep: true });
|
|
154
|
-
});
|
|
155
|
-
it("stamps the owner and keeps it on later saves without auth context", async () => {
|
|
156
|
-
const store = await makeStore();
|
|
157
|
-
const created = await store.save("user-1", { language: "de" }, { userId: "user-1" });
|
|
158
|
-
expect(created.userId).toBe("user-1");
|
|
159
|
-
const updated = await store.save("user-1", { language: "en" });
|
|
160
|
-
expect(updated.userId).toBe("user-1");
|
|
161
|
-
});
|
|
162
|
-
}
|
|
163
|
-
describe("createInMemoryProfileStore", () => {
|
|
164
|
-
profileStoreContract(() => Promise.resolve(createInMemoryProfileStore()));
|
|
165
|
-
});
|
|
166
|
-
describe("createFileSystemProfileStore", () => {
|
|
167
|
-
profileStoreContract(async () => createFileSystemProfileStore({ dir: await mkdtemp(path.join(tmpdir(), "profile-store-")) }));
|
|
168
|
-
it("serializes saves per key across two store instances on the same directory", async () => {
|
|
169
|
-
const dir = await mkdtemp(path.join(tmpdir(), "profile-store-"));
|
|
170
|
-
const a = createFileSystemProfileStore({ dir });
|
|
171
|
-
const b = createFileSystemProfileStore({ dir });
|
|
172
|
-
await Promise.all([
|
|
173
|
-
a.save("sess-1", { modules: { camunda7: { defaultEngineId: "prod-a" } } }),
|
|
174
|
-
b.save("sess-1", { modules: { analytics: { defaultPeriod: "30d" } } }),
|
|
175
|
-
]);
|
|
176
|
-
expect((await a.get("sess-1"))?.modules).toEqual({
|
|
177
|
-
camunda7: { defaultEngineId: "prod-a" },
|
|
178
|
-
analytics: { defaultPeriod: "30d" },
|
|
179
|
-
});
|
|
180
|
-
});
|
|
181
|
-
it("keeps serving the key after a failed save (the lock is released on error)", async () => {
|
|
182
|
-
const dir = await mkdtemp(path.join(tmpdir(), "profile-store-"));
|
|
183
|
-
// A FILE where the store expects its directory: every write fails.
|
|
184
|
-
const blocked = path.join(dir, "blocked");
|
|
185
|
-
await writeFile(blocked, "", "utf-8");
|
|
186
|
-
const store = createFileSystemProfileStore({ dir: blocked });
|
|
187
|
-
await expect(store.save("sess-1", { language: "de" })).rejects.toThrow();
|
|
188
|
-
await expect(store.save("sess-1", { language: "de" })).rejects.toThrow();
|
|
189
|
-
});
|
|
190
|
-
it("reads a record from before the migration baseline fail-soft and adopts it on save", async () => {
|
|
191
|
-
const dir = await mkdtemp(path.join(tmpdir(), "profile-store-"));
|
|
192
|
-
const store = createFileSystemProfileStore({ dir });
|
|
193
|
-
const file = path.join(dir, "early.json");
|
|
194
|
-
await writeFile(file, JSON.stringify(V1_RECORD), "utf-8");
|
|
195
|
-
// No error, no reset: the fields every record carries survive; the flat
|
|
196
|
-
// module preferences of the pre-baseline shape read as the defaults.
|
|
197
|
-
expect(await store.get("early")).toEqual({
|
|
198
|
-
id: "early",
|
|
199
|
-
language: "de",
|
|
200
|
-
modules: {},
|
|
201
|
-
createdAt: V1_RECORD.createdAt,
|
|
202
|
-
updatedAt: V1_RECORD.updatedAt,
|
|
203
|
-
schemaVersion: 3,
|
|
204
|
-
});
|
|
205
|
-
const saved = await store.save("early", { modules: { analytics: { defaultPeriod: "7d" } } });
|
|
206
|
-
expect(saved).toMatchObject({ language: "de", modules: { analytics: { defaultPeriod: "7d" } } });
|
|
207
|
-
// Stamped at the baseline; the keys it does not know stay inert, raw —
|
|
208
|
-
// the retired theme preference included.
|
|
209
|
-
expect(JSON.parse(await readFile(file, "utf-8"))).toMatchObject({
|
|
210
|
-
schemaVersion: 3,
|
|
211
|
-
theme: "dark",
|
|
212
|
-
analyticsDefaultPeriod: "30d",
|
|
213
|
-
modules: { analytics: { defaultPeriod: "7d" } },
|
|
214
|
-
});
|
|
215
|
-
});
|
|
216
|
-
it("reads a record it cannot date (the next save stamps both timestamps)", async () => {
|
|
217
|
-
const dir = await mkdtemp(path.join(tmpdir(), "profile-store-"));
|
|
218
|
-
const store = createFileSystemProfileStore({ dir });
|
|
219
|
-
await writeFile(path.join(dir, "undated.json"), JSON.stringify({ schemaVersion: 3 }), "utf-8");
|
|
220
|
-
expect(await store.get("undated")).toMatchObject({ id: "undated", updatedAt: "" });
|
|
221
|
-
const saved = await store.save("undated", { language: "de" });
|
|
222
|
-
expect(saved.updatedAt).not.toBe("");
|
|
223
|
-
expect(saved.createdAt).toBe(saved.updatedAt);
|
|
224
|
-
});
|
|
225
|
-
it("treats a file that is not JSON as absent and replaces it on the next save", async () => {
|
|
226
|
-
const dir = await mkdtemp(path.join(tmpdir(), "profile-store-"));
|
|
227
|
-
const store = createFileSystemProfileStore({ dir });
|
|
228
|
-
await writeFile(path.join(dir, "broken.json"), "{ not json", "utf-8");
|
|
229
|
-
expect(await store.get("broken")).toBeUndefined();
|
|
230
|
-
expect((await store.save("broken", { language: "de" })).language).toBe("de");
|
|
231
|
-
expect((await store.get("broken"))?.language).toBe("de");
|
|
232
|
-
});
|
|
233
|
-
it("reads a record with the retired theme preference fail-soft and keeps the key inert", async () => {
|
|
234
|
-
const dir = await mkdtemp(path.join(tmpdir(), "profile-store-"));
|
|
235
|
-
const store = createFileSystemProfileStore({ dir });
|
|
236
|
-
const file = path.join(dir, "themed.json");
|
|
237
|
-
await writeFile(file, JSON.stringify(THEMED_RECORD), "utf-8");
|
|
238
|
-
// The view never carries it (widgets follow the host's theme) …
|
|
239
|
-
const read = await store.get("themed");
|
|
240
|
-
expect(read).toMatchObject({ id: "themed", language: "de", modules: {} });
|
|
241
|
-
expect(read).not.toHaveProperty("theme");
|
|
242
|
-
// … and a save merges over the raw document, so it stays there, unread.
|
|
243
|
-
const saved = await store.save("themed", { language: "en" });
|
|
244
|
-
expect(saved).not.toHaveProperty("theme");
|
|
245
|
-
expect(JSON.parse(await readFile(file, "utf-8"))).toMatchObject({
|
|
246
|
-
language: "en",
|
|
247
|
-
theme: "dark",
|
|
248
|
-
});
|
|
249
|
-
});
|
|
250
|
-
});
|
|
251
|
-
/** A current-shape record an earlier build saved with its theme preference. */
|
|
252
|
-
const THEMED_RECORD = {
|
|
253
|
-
id: "themed",
|
|
254
|
-
language: "de",
|
|
255
|
-
theme: "dark",
|
|
256
|
-
modules: {},
|
|
257
|
-
createdAt: "2026-09-01T00:00:00.000Z",
|
|
258
|
-
updatedAt: "2026-09-01T00:00:00.000Z",
|
|
259
|
-
schemaVersion: 3,
|
|
260
|
-
};
|
|
261
|
-
/** A record as a pre-baseline (v1) build persisted it: flat module fields. */
|
|
262
|
-
const V1_RECORD = {
|
|
263
|
-
id: "early",
|
|
264
|
-
language: "de",
|
|
265
|
-
theme: "dark",
|
|
266
|
-
pinnedDashboardIds: [],
|
|
267
|
-
analyticsDefaultPeriod: "30d",
|
|
268
|
-
analyticsMinBucketSize: 25,
|
|
269
|
-
createdAt: "2026-01-01T00:00:00.000Z",
|
|
270
|
-
updatedAt: "2026-01-01T00:00:00.000Z",
|
|
271
|
-
schemaVersion: 1,
|
|
272
|
-
};
|
|
273
|
-
// Opt-in integration slice (like test:host): needs a reachable Postgres, so it
|
|
274
|
-
// only runs when TEST_DATABASE_URL is set — `pnpm test:pg` at the repo root
|
|
275
|
-
// points it at the compose stack's dedicated test database. An own schema
|
|
276
|
-
// isolates it from the other packages' suites sharing that database.
|
|
277
|
-
const TEST_DATABASE_URL = process.env.TEST_DATABASE_URL;
|
|
278
|
-
const TEST_SCHEMA = "widget_shell_profile_store_test";
|
|
279
|
-
describe.skipIf(!TEST_DATABASE_URL)("createPostgresProfileStore", () => {
|
|
280
|
-
let sql;
|
|
281
|
-
beforeAll(async () => {
|
|
282
|
-
sql = postgres(TEST_DATABASE_URL, {
|
|
283
|
-
max: 2,
|
|
284
|
-
onnotice: () => { },
|
|
285
|
-
connection: { search_path: TEST_SCHEMA },
|
|
286
|
-
});
|
|
287
|
-
await sql.unsafe(`DROP SCHEMA IF EXISTS ${TEST_SCHEMA} CASCADE`);
|
|
288
|
-
await sql.unsafe(`CREATE SCHEMA ${TEST_SCHEMA}`);
|
|
289
|
-
for (const migration of PROFILE_STORE_MIGRATIONS) {
|
|
290
|
-
for (const statement of migration.statements) {
|
|
291
|
-
await sql.unsafe(statement);
|
|
292
|
-
}
|
|
293
|
-
}
|
|
294
|
-
});
|
|
295
|
-
beforeEach(async () => {
|
|
296
|
-
await sql `DELETE FROM user_profiles`;
|
|
297
|
-
});
|
|
298
|
-
afterAll(async () => {
|
|
299
|
-
await sql.end({ timeout: 5 });
|
|
300
|
-
});
|
|
301
|
-
profileStoreContract(() => Promise.resolve(createPostgresProfileStore({ sql })));
|
|
302
|
-
it("reads a row missing every field best-effort and keeps it on save", async () => {
|
|
303
|
-
const store = createPostgresProfileStore({ sql });
|
|
304
|
-
await sql `
|
|
305
|
-
INSERT INTO user_profiles (key, profile)
|
|
306
|
-
VALUES ('sess-sparse', '{"schemaVersion": 999}'::jsonb)
|
|
307
|
-
`;
|
|
308
|
-
expect(await store.get("sess-sparse")).toMatchObject({
|
|
309
|
-
id: "sess-sparse",
|
|
310
|
-
language: "system",
|
|
311
|
-
modules: {},
|
|
312
|
-
});
|
|
313
|
-
const saved = await store.save("sess-sparse", { language: "de" });
|
|
314
|
-
expect(saved.language).toBe("de");
|
|
315
|
-
expect(await store.get("sess-sparse")).toEqual(saved);
|
|
316
|
-
});
|
|
317
|
-
it("reads a row from before the migration baseline fail-soft and adopts it on save", async () => {
|
|
318
|
-
const store = createPostgresProfileStore({ sql });
|
|
319
|
-
await sql `
|
|
320
|
-
INSERT INTO user_profiles (key, profile)
|
|
321
|
-
VALUES ('early', ${sql.json(V1_RECORD)})
|
|
322
|
-
`;
|
|
323
|
-
const early = await store.get("early");
|
|
324
|
-
expect(early).toMatchObject({ language: "de", modules: {}, schemaVersion: 3 });
|
|
325
|
-
expect(early).not.toHaveProperty("theme");
|
|
326
|
-
const saved = await store.save("early", { language: "en" });
|
|
327
|
-
expect(saved).toMatchObject({ language: "en", modules: {} });
|
|
328
|
-
expect(saved).not.toHaveProperty("theme");
|
|
329
|
-
const rows = await sql `
|
|
330
|
-
SELECT profile FROM user_profiles WHERE key = 'early'
|
|
331
|
-
`;
|
|
332
|
-
// The keys this build does not know stay inert in the row, the retired
|
|
333
|
-
// theme preference included.
|
|
334
|
-
expect(rows[0]?.profile).toMatchObject({
|
|
335
|
-
schemaVersion: 3,
|
|
336
|
-
theme: "dark",
|
|
337
|
-
analyticsDefaultPeriod: "30d",
|
|
338
|
-
});
|
|
339
|
-
});
|
|
340
|
-
it("merges concurrent saves of disjoint fields in the SAME module slice", async () => {
|
|
341
|
-
const store = createPostgresProfileStore({ sql });
|
|
342
|
-
// The one-level slice merge runs inside the per-key lock, so neither
|
|
343
|
-
// field may get lost even though both writers pre-read the same (empty)
|
|
344
|
-
// slice outside it.
|
|
345
|
-
await Promise.all([
|
|
346
|
-
store.save("sess-2", { modules: { camunda7: { defaultEngineId: "prod-a" } } }),
|
|
347
|
-
store.save("sess-2", { modules: { camunda7: { pinned: ["d1"] } } }),
|
|
348
|
-
]);
|
|
349
|
-
const profile = await store.get("sess-2");
|
|
350
|
-
expect(profile?.modules?.camunda7).toEqual({ defaultEngineId: "prod-a", pinned: ["d1"] });
|
|
351
|
-
});
|
|
352
|
-
});
|
|
353
|
-
//# sourceMappingURL=profile-store.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"profile-store.test.js","sourceRoot":"","sources":["../src/profile-store.test.ts"],"names":[],"mappings":"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"}
|