gloomberb 0.15.7 → 0.16.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 +11 -2
- package/package.json +1 -1
- package/src/api-client/app-attention.ts +147 -0
- package/src/api-client/attention.ts +26 -0
- package/src/api-client/awards.ts +215 -0
- package/src/api-client/catalysts.ts +160 -0
- package/src/api-client/chat.ts +137 -14
- package/src/api-client/company-kpis.ts +153 -0
- package/src/api-client/cpi.ts +52 -0
- package/src/api-client/credit-documents.ts +107 -0
- package/src/api-client/data.ts +192 -3
- package/src/api-client/distress.ts +164 -0
- package/src/api-client/doe.ts +75 -0
- package/src/api-client/equity-screener.ts +11 -0
- package/src/api-client/exposure.ts +202 -0
- package/src/api-client/gpu.ts +93 -0
- package/src/api-client/hiring.ts +110 -0
- package/src/api-client/index.ts +78 -3
- package/src/api-client/normalizers.ts +31 -1
- package/src/api-client/paths.ts +3 -0
- package/src/api-client/perps.ts +127 -0
- package/src/api-client/power.ts +148 -0
- package/src/api-client/request.ts +58 -1
- package/src/api-client/research-activity.ts +172 -13
- package/src/api-client/socket.ts +75 -27
- package/src/api-client/supply-chain-graph.ts +40 -0
- package/src/api-client/supply-chain.ts +98 -0
- package/src/api-client/telemetry.ts +29 -0
- package/src/api-client/themes.ts +28 -0
- package/src/api-client/types.ts +33 -1
- package/src/api-client/wall-experiments.ts +100 -0
- package/src/api-client/wall-summary.ts +49 -0
- package/src/api-client/web-experiments.ts +136 -0
- package/src/app/pane-runtime/plugin-bindings.ts +5 -0
- package/src/app/pane-runtime/ticker-open-runtime.ts +8 -2
- package/src/app/runtime/update.ts +13 -1
- package/src/cli/commands/system.ts +2 -0
- package/src/cli/desktop-pane-shot.ts +3 -4
- package/src/cli/pane-functions/data.ts +78 -0
- package/src/cli/pane-functions/financial-ratio-shot.ts +160 -0
- package/src/cli/pane-functions/function-help.ts +220 -8
- package/src/cli/pane-functions/headless.ts +4 -0
- package/src/cli/pane-functions/screenshot-evidence.ts +21 -0
- package/src/cli/pane-functions/screenshot.ts +49 -5
- package/src/components/chart/composite/composite-chart.tsx +15 -2
- package/src/components/chart/composite/format.ts +24 -11
- package/src/components/chart/composite/rasterizer.ts +67 -16
- package/src/components/chart/composite/scene.ts +53 -2
- package/src/components/chart/composite/session-shading.ts +3 -2
- package/src/components/chart/composite/text-renderer.ts +52 -1
- package/src/components/chart/composite/time-axis.ts +100 -30
- package/src/components/chart/composite/tools.ts +2 -1
- package/src/components/chart/composite/types.ts +4 -0
- package/src/components/chart-table/index.ts +1 -0
- package/src/components/chart-table/layout.ts +15 -0
- package/src/components/command-bar/action-runtime.ts +1 -0
- package/src/components/command-bar/commands/direct/index.ts +32 -0
- package/src/components/command-bar/commands/registry.ts +7 -0
- package/src/components/command-bar/pane-templates/items.ts +11 -0
- package/src/components/command-bar/pane-templates/workflow.ts +19 -4
- package/src/components/command-bar/routes/root/command-items.ts +6 -0
- package/src/components/command-bar/routes/root/provider-search.ts +2 -0
- package/src/components/command-bar/routes/root/results.ts +64 -0
- package/src/components/command-bar/routes/root/runtime.ts +8 -0
- package/src/components/command-bar/routes/ticker-search/results.ts +89 -24
- package/src/components/command-bar/routes/ticker-search/route.ts +2 -0
- package/src/components/command-bar/surface/index.tsx +15 -0
- package/src/components/command-bar/view-model.ts +3 -0
- package/src/components/command-bar/workflow/collection-actions.ts +9 -7
- package/src/components/command-bar/workflow/ops.ts +19 -0
- package/src/components/command-bar/workflow/tickers.ts +5 -0
- package/src/components/company-logo.tsx +15 -2
- package/src/components/data-table/table-pane.ts +2 -1
- package/src/components/index.ts +1 -0
- package/src/components/layout/detached-pane-shell.tsx +12 -1
- package/src/components/layout/missing-pane.tsx +87 -23
- package/src/components/layout/pane/footer/index.tsx +64 -18
- package/src/components/layout/pane/footer/model.ts +85 -0
- package/src/components/layout/pane/sidebar.tsx +19 -1
- package/src/components/layout/shell/index.tsx +38 -28
- package/src/components/layout/shell/pane/management-shortcuts.ts +13 -1
- package/src/components/layout/status-bar.tsx +93 -28
- package/src/components/layout/status-widget-space.ts +72 -0
- package/src/components/onboarding/first-run-workspace.ts +8 -2
- package/src/components/onboarding/onboarding-wizard.tsx +35 -16
- package/src/components/onboarding/portfolio-step/positions-panel.tsx +14 -5
- package/src/components/onboarding/wizard-model.ts +13 -5
- package/src/components/onboarding/wizard-positions.ts +56 -7
- package/src/components/price-performance.tsx +31 -34
- package/src/components/ui/data-table/index.tsx +11 -8
- package/src/components/ui/display.tsx +15 -6
- package/src/components/ui/fields.tsx +5 -0
- package/src/components/ui/figure.tsx +94 -0
- package/src/components/ui/header-case.ts +25 -3
- package/src/components/ui/icon.tsx +3 -1
- package/src/components/ui/message-composer.tsx +8 -1
- package/src/components/ui/query-bar.tsx +8 -1
- package/src/components/ui/ratio-bar.tsx +84 -0
- package/src/components/ui/toggle.tsx +3 -1
- package/src/components/use-scrollbox-layout.ts +17 -0
- package/src/core/state/app/layout.ts +35 -1
- package/src/core/state/app/state.ts +15 -0
- package/src/core/state/app/types.ts +1 -0
- package/src/data/config/store/normalize.ts +24 -0
- package/src/i18n/es.ts +2 -0
- package/src/i18n/ja.ts +2 -0
- package/src/i18n/ko.ts +2 -0
- package/src/i18n/zh-cn.ts +2 -0
- package/src/i18n/zh-tw.ts +2 -0
- package/src/layout-marketplace/pane-imagery.ts +1 -0
- package/src/market-data/coordinator/entries.ts +13 -0
- package/src/market-data/coordinator/financials.ts +33 -8
- package/src/market-data/market/freshness.ts +16 -5
- package/src/market-data/market/trading-sessions.ts +65 -1
- package/src/market-data/published-cn-sessions.ts +25 -0
- package/src/market-data/published-nse-sessions.ts +20 -0
- package/src/news/aggregator.ts +4 -0
- package/src/plugins/builtin/account-management/model.ts +6 -1
- package/src/plugins/builtin/account-management/pane.tsx +36 -25
- package/src/plugins/builtin/alerts/catalysts.ts +77 -0
- package/src/plugins/builtin/alerts/events-pane.tsx +3 -0
- package/src/plugins/builtin/alerts/events.ts +10 -4
- package/src/plugins/builtin/alerts/history-pane.tsx +1 -1
- package/src/plugins/builtin/alerts/history.ts +1 -0
- package/src/plugins/builtin/alerts/index.tsx +6 -0
- package/src/plugins/builtin/alerts/research-builder.ts +10 -3
- package/src/plugins/builtin/alerts/research-rules.ts +15 -1
- package/src/plugins/builtin/analytics/risk-client.ts +15 -3
- package/src/plugins/builtin/analytics/risk-headless.ts +123 -18
- package/src/plugins/builtin/attention/client.ts +80 -0
- package/src/plugins/builtin/attention/evidence.ts +30 -0
- package/src/plugins/builtin/attention/headless.ts +33 -0
- package/src/plugins/builtin/attention/index.tsx +18 -0
- package/src/plugins/builtin/attention/model.ts +59 -0
- package/src/plugins/builtin/attention/pane.tsx +211 -0
- package/src/plugins/builtin/attention/trending.tsx +59 -0
- package/src/plugins/builtin/awards/alerts.ts +32 -0
- package/src/plugins/builtin/awards/client.ts +82 -0
- package/src/plugins/builtin/awards/detail.tsx +107 -0
- package/src/plugins/builtin/awards/evidence.ts +36 -0
- package/src/plugins/builtin/awards/headless.ts +55 -0
- package/src/plugins/builtin/awards/index.tsx +20 -0
- package/src/plugins/builtin/awards/model.ts +42 -0
- package/src/plugins/builtin/awards/pane.tsx +263 -0
- package/src/plugins/builtin/catalysts/client.ts +28 -0
- package/src/plugins/builtin/catalysts/detail.tsx +88 -0
- package/src/plugins/builtin/catalysts/evidence.ts +47 -0
- package/src/plugins/builtin/catalysts/headless.ts +42 -0
- package/src/plugins/builtin/catalysts/history.ts +26 -0
- package/src/plugins/builtin/catalysts/index.tsx +29 -0
- package/src/plugins/builtin/catalysts/model.ts +135 -0
- package/src/plugins/builtin/catalysts/pane.tsx +159 -0
- package/src/plugins/builtin/chart-composer/cli-options.ts +4 -0
- package/src/plugins/builtin/chart-composer/headless-schema.ts +6 -0
- package/src/plugins/builtin/chart-composer/index.tsx +8 -1
- package/src/plugins/builtin/chart-composer/pane.tsx +28 -1
- package/src/plugins/builtin/chat/attachments/desktop.tsx +610 -0
- package/src/plugins/builtin/chat/attachments/files.ts +45 -0
- package/src/plugins/builtin/chat/attachments/model.ts +164 -0
- package/src/plugins/builtin/chat/attachments/terminal.tsx +72 -0
- package/src/plugins/builtin/chat/attachments/transfer.ts +165 -0
- package/src/plugins/builtin/chat/content/channel-navigation.ts +13 -12
- package/src/plugins/builtin/chat/content/composer-runtime.ts +25 -4
- package/src/plugins/builtin/chat/content/composer.tsx +46 -4
- package/src/plugins/builtin/chat/content/footer.tsx +46 -8
- package/src/plugins/builtin/chat/content/index.tsx +263 -62
- package/src/plugins/builtin/chat/content/layout-metrics.ts +10 -2
- package/src/plugins/builtin/chat/content/open-targets.ts +17 -3
- package/src/plugins/builtin/chat/content/scroll.ts +7 -1
- package/src/plugins/builtin/chat/content/shortcuts.ts +36 -11
- package/src/plugins/builtin/chat/content/snapshot.ts +3 -0
- package/src/plugins/builtin/chat/content/transcript.tsx +17 -1
- package/src/plugins/builtin/chat/content/types.ts +7 -0
- package/src/plugins/builtin/chat/controller/attachments.ts +213 -0
- package/src/plugins/builtin/chat/controller/connections.ts +3 -1
- package/src/plugins/builtin/chat/controller/index.ts +114 -2
- package/src/plugins/builtin/chat/controller/lifecycle.ts +9 -0
- package/src/plugins/builtin/chat/controller/messages.ts +35 -2
- package/src/plugins/builtin/chat/controller/send.ts +128 -25
- package/src/plugins/builtin/chat/controller/state.ts +12 -1
- package/src/plugins/builtin/chat/controller/utils.ts +7 -5
- package/src/plugins/builtin/chat/controller/view.ts +2 -0
- package/src/plugins/builtin/chat/index.tsx +21 -0
- package/src/plugins/builtin/chat/layout.ts +9 -4
- package/src/plugins/builtin/chat/message/desktop.tsx +55 -20
- package/src/plugins/builtin/chat/message/header.tsx +30 -5
- package/src/plugins/builtin/chat/message/inline-tokens.tsx +9 -0
- package/src/plugins/builtin/chat/message/pending-send.ts +35 -0
- package/src/plugins/builtin/chat/message/profile-popover.tsx +5 -1
- package/src/plugins/builtin/chat/message/render-state.ts +12 -2
- package/src/plugins/builtin/chat/message/terminal.tsx +51 -4
- package/src/plugins/builtin/chat/message/types.ts +6 -1
- package/src/plugins/builtin/chat/pane-state.ts +59 -1
- package/src/plugins/builtin/chat/profile-popover.ts +50 -1
- package/src/plugins/builtin/chat/sidebar.tsx +8 -3
- package/src/plugins/builtin/chat/status-widget.tsx +29 -12
- package/src/plugins/builtin/chat/unread-inbox-pane.tsx +143 -0
- package/src/plugins/builtin/chat/unread-inbox.ts +91 -0
- package/src/plugins/builtin/clinical-trials/client.ts +237 -0
- package/src/plugins/builtin/clinical-trials/index.tsx +74 -0
- package/src/plugins/builtin/clinical-trials/pane.tsx +225 -0
- package/src/plugins/builtin/clinical-trials/types.ts +2 -0
- package/src/plugins/builtin/cloud/askg/controller.ts +37 -6
- package/src/plugins/builtin/cloud/askg/executor.ts +59 -44
- package/src/plugins/builtin/cloud/askg/host.ts +8 -1
- package/src/plugins/builtin/cloud/askg/manifest.ts +29 -2
- package/src/plugins/builtin/cloud/askg/model.ts +47 -13
- package/src/plugins/builtin/cloud/askg/notes.ts +100 -0
- package/src/plugins/builtin/cloud/askg/pane.tsx +50 -14
- package/src/plugins/builtin/cloud/askg/protocol.ts +39 -1
- package/src/plugins/builtin/cloud/askg/result-budget.ts +156 -0
- package/src/plugins/builtin/cloud/askg/user-data.ts +89 -0
- package/src/plugins/builtin/cloud/auth-actions.tsx +55 -31
- package/src/plugins/builtin/cloud/plugin.tsx +4 -1
- package/src/plugins/builtin/cloud/team/pane-sections.tsx +10 -1
- package/src/plugins/builtin/cloud/team/pane.tsx +3 -2
- package/src/plugins/builtin/cloud/thesis/board-pane.tsx +2 -2
- package/src/plugins/builtin/cloud/thesis/detail.tsx +1 -1
- package/src/plugins/builtin/cloud/thesis/ticker-tab.tsx +2 -2
- package/src/plugins/builtin/cloud/trial-offer-status-widget.tsx +202 -0
- package/src/plugins/builtin/cloud/upgrade-command.ts +1 -1
- package/src/plugins/builtin/cloud/upgrade-dialog.tsx +29 -3
- package/src/plugins/builtin/cloud/upgrade-status-widget.tsx +1 -1
- package/src/plugins/builtin/cloud-tweets/table.tsx +1 -1
- package/src/plugins/builtin/comment-letters/client.ts +342 -0
- package/src/plugins/builtin/comment-letters/index.tsx +74 -0
- package/src/plugins/builtin/comment-letters/pane.tsx +295 -0
- package/src/plugins/builtin/comment-letters/types.ts +43 -0
- package/src/plugins/builtin/company-attention/app-rank.tsx +79 -0
- package/src/plugins/builtin/company-attention/client.ts +69 -0
- package/src/plugins/builtin/company-attention/evidence.ts +45 -0
- package/src/plugins/builtin/company-attention/headless.ts +47 -0
- package/src/plugins/builtin/company-attention/index.tsx +30 -0
- package/src/plugins/builtin/company-attention/model.ts +129 -0
- package/src/plugins/builtin/company-attention/pane.tsx +183 -0
- package/src/plugins/builtin/company-kpis/client.ts +92 -0
- package/src/plugins/builtin/company-kpis/headless.ts +32 -0
- package/src/plugins/builtin/company-kpis/index.tsx +26 -0
- package/src/plugins/builtin/company-kpis/model.ts +124 -0
- package/src/plugins/builtin/company-kpis/pane.tsx +226 -0
- package/src/plugins/builtin/company-kpis/related.ts +11 -0
- package/src/plugins/builtin/company-kpis/screenshot-evidence.ts +44 -0
- package/src/plugins/builtin/composite-plugins.ts +34 -0
- package/src/plugins/builtin/correlation/history.ts +4 -1
- package/src/plugins/builtin/correlation/index.tsx +139 -80
- package/src/plugins/builtin/correlation/matrix/pair-chart.tsx +48 -0
- package/src/plugins/builtin/correlation/matrix/selection.ts +77 -0
- package/src/plugins/builtin/correlation/relationship/model.ts +2 -2
- package/src/plugins/builtin/cpi/client.ts +66 -0
- package/src/plugins/builtin/cpi/headless.ts +78 -0
- package/src/plugins/builtin/cpi/index.tsx +31 -0
- package/src/plugins/builtin/cpi/model.ts +198 -0
- package/src/plugins/builtin/cpi/pane.tsx +157 -0
- package/src/plugins/builtin/credit-documents/client.ts +99 -0
- package/src/plugins/builtin/credit-documents/detail.tsx +109 -0
- package/src/plugins/builtin/credit-documents/evidence.ts +64 -0
- package/src/plugins/builtin/credit-documents/gauge.tsx +55 -0
- package/src/plugins/builtin/credit-documents/headless.ts +40 -0
- package/src/plugins/builtin/credit-documents/index.tsx +19 -0
- package/src/plugins/builtin/credit-documents/model.ts +336 -0
- package/src/plugins/builtin/credit-documents/pane.tsx +185 -0
- package/src/plugins/builtin/custom-view/view-spec.ts +14 -2
- package/src/plugins/builtin/debt-maturities/pane.tsx +1 -0
- package/src/plugins/builtin/dividend-yield/pane.tsx +1 -1
- package/src/plugins/builtin/doe/client.ts +73 -0
- package/src/plugins/builtin/doe/headless.ts +93 -0
- package/src/plugins/builtin/doe/index.tsx +41 -0
- package/src/plugins/builtin/doe/model.ts +215 -0
- package/src/plugins/builtin/doe/pane.tsx +148 -0
- package/src/plugins/builtin/doe/range-bar.tsx +45 -0
- package/src/plugins/builtin/earnings/board.tsx +3 -0
- package/src/plugins/builtin/earnings/index.tsx +2 -0
- package/src/plugins/builtin/earnings-calls/pane.tsx +7 -1
- package/src/plugins/builtin/earnings-calls/transcript-view.tsx +7 -7
- package/src/plugins/builtin/earnings-ripple/client.ts +60 -0
- package/src/plugins/builtin/earnings-ripple/headless.ts +35 -0
- package/src/plugins/builtin/earnings-ripple/index.tsx +35 -0
- package/src/plugins/builtin/earnings-ripple/model.ts +98 -0
- package/src/plugins/builtin/earnings-ripple/pane.tsx +103 -0
- package/src/plugins/builtin/equity-screener/client.ts +1 -1
- package/src/plugins/builtin/equity-screener/criterion-editor.tsx +1 -1
- package/src/plugins/builtin/equity-screener/model.ts +74 -9
- package/src/plugins/builtin/equity-screener/pane.tsx +2 -0
- package/src/plugins/builtin/estimate-revisions/pane.tsx +3 -0
- package/src/plugins/builtin/executives/pane.tsx +7 -5
- package/src/plugins/builtin/exposure/charts.tsx +66 -0
- package/src/plugins/builtin/exposure/client.ts +53 -0
- package/src/plugins/builtin/exposure/drivers.ts +29 -0
- package/src/plugins/builtin/exposure/editor.tsx +61 -0
- package/src/plugins/builtin/exposure/evidence.ts +39 -0
- package/src/plugins/builtin/exposure/headless.ts +51 -0
- package/src/plugins/builtin/exposure/holdings.ts +56 -0
- package/src/plugins/builtin/exposure/index.tsx +13 -0
- package/src/plugins/builtin/exposure/model.ts +104 -0
- package/src/plugins/builtin/exposure/pane.tsx +247 -0
- package/src/plugins/builtin/fear-greed/charts.tsx +1 -1
- package/src/plugins/builtin/fear-greed/pane.tsx +2 -9
- package/src/plugins/builtin/filing-events/pane.tsx +2 -1
- package/src/plugins/builtin/gpu/board.tsx +163 -0
- package/src/plugins/builtin/gpu/changes.tsx +94 -0
- package/src/plugins/builtin/gpu/client.ts +130 -0
- package/src/plugins/builtin/gpu/equities.tsx +112 -0
- package/src/plugins/builtin/gpu/headless.ts +67 -0
- package/src/plugins/builtin/gpu/history.tsx +140 -0
- package/src/plugins/builtin/gpu/index.tsx +18 -0
- package/src/plugins/builtin/gpu/ladder.tsx +127 -0
- package/src/plugins/builtin/gpu/model.ts +317 -0
- package/src/plugins/builtin/gpu/pane.tsx +63 -0
- package/src/plugins/builtin/help/index.tsx +19 -2
- package/src/plugins/builtin/holders/pane.tsx +5 -9
- package/src/plugins/builtin/insider/detail.tsx +119 -0
- package/src/plugins/builtin/insider/display.ts +221 -0
- package/src/plugins/builtin/insider/headless.ts +24 -3
- package/src/plugins/builtin/insider/index.tsx +206 -108
- package/src/plugins/builtin/insider/insider-data.ts +31 -3
- package/src/plugins/builtin/insider/model.ts +53 -4
- package/src/plugins/builtin/insider/table-model.ts +226 -0
- package/src/plugins/builtin/insider/table.tsx +79 -0
- package/src/plugins/builtin/iv-history/screen-pane.tsx +1 -1
- package/src/plugins/builtin/jobs/pane.tsx +14 -7
- package/src/plugins/builtin/kelly-sizer/pane.tsx +1 -1
- package/src/plugins/builtin/macro-day/client.ts +50 -0
- package/src/plugins/builtin/macro-day/headless.ts +51 -0
- package/src/plugins/builtin/macro-day/index.tsx +21 -0
- package/src/plugins/builtin/macro-day/model.ts +137 -0
- package/src/plugins/builtin/macro-day/pane.tsx +118 -0
- package/src/plugins/builtin/macro-day/releases.ts +58 -0
- package/src/plugins/builtin/market-halts/model.ts +30 -17
- package/src/plugins/builtin/market-halts/pane.tsx +15 -21
- package/src/plugins/builtin/market-heatmap/data.ts +1 -1
- package/src/plugins/builtin/market-heatmap/index.tsx +198 -50
- package/src/plugins/builtin/market-heatmap/portfolio.ts +220 -0
- package/src/plugins/builtin/market-movers/index.tsx +1 -0
- package/src/plugins/builtin/market-movers/session-body.tsx +5 -2
- package/src/plugins/builtin/mna/distress/client.ts +326 -0
- package/src/plugins/builtin/mna/distress/detail.tsx +247 -0
- package/src/plugins/builtin/mna/distress/headless.ts +257 -0
- package/src/plugins/builtin/mna/distress/model.ts +427 -0
- package/src/plugins/builtin/mna/distress/pane.tsx +606 -0
- package/src/plugins/builtin/mna/index.tsx +15 -0
- package/src/plugins/builtin/mna/pane.tsx +42 -1
- package/src/plugins/builtin/news/index.tsx +62 -16
- package/src/plugins/builtin/news/wire/filter-articles.ts +54 -0
- package/src/plugins/builtin/news/wire/index.tsx +37 -3
- package/src/plugins/builtin/news/wire/industry-pane.tsx +29 -13
- package/src/plugins/builtin/news/wire/mutes.ts +253 -0
- package/src/plugins/builtin/news/wire/news/command-bar-search.ts +117 -0
- package/src/plugins/builtin/news/wire/news/footer.ts +4 -0
- package/src/plugins/builtin/news/wire/news/list-search.ts +34 -0
- package/src/plugins/builtin/news/wire/news/pop-out.tsx +158 -0
- package/src/plugins/builtin/news/wire/news/preset-pane.tsx +64 -19
- package/src/plugins/builtin/openfda/client.ts +300 -0
- package/src/plugins/builtin/openfda/index.tsx +71 -0
- package/src/plugins/builtin/openfda/pane.tsx +382 -0
- package/src/plugins/builtin/openfda/types.ts +76 -0
- package/src/plugins/builtin/options/footer.ts +1 -0
- package/src/plugins/builtin/options/view.tsx +1 -1
- package/src/plugins/builtin/options-calculator/pane.tsx +0 -1
- package/src/plugins/builtin/options-positioning/index.tsx +4 -2
- package/src/plugins/builtin/options-positioning/pane.tsx +1 -1
- package/src/plugins/builtin/pe-band/client.ts +61 -0
- package/src/plugins/builtin/pe-band/headless.ts +51 -0
- package/src/plugins/builtin/pe-band/index.tsx +20 -0
- package/src/plugins/builtin/pe-band/model.ts +267 -0
- package/src/plugins/builtin/pe-band/pane.tsx +159 -0
- package/src/plugins/builtin/perps/client.ts +66 -0
- package/src/plugins/builtin/perps/equity-row.tsx +28 -0
- package/src/plugins/builtin/perps/headless.ts +34 -0
- package/src/plugins/builtin/perps/index.tsx +14 -0
- package/src/plugins/builtin/perps/model.ts +58 -0
- package/src/plugins/builtin/perps/pane.tsx +185 -0
- package/src/plugins/builtin/plugin-marketplace/pane.tsx +0 -1
- package/src/plugins/builtin/portfolio-list/cli/render.ts +177 -87
- package/src/plugins/builtin/portfolio-list/cli/watchlist-command.ts +6 -20
- package/src/plugins/builtin/portfolio-list/command-bar.ts +6 -2
- package/src/plugins/builtin/portfolio-list/headless.ts +237 -0
- package/src/plugins/builtin/portfolio-list/index.tsx +2 -0
- package/src/plugins/builtin/portfolio-list/mutations.ts +70 -1
- package/src/plugins/builtin/portfolio-list/pane/data.ts +17 -0
- package/src/plugins/builtin/portfolio-list/pane/index.tsx +88 -5
- package/src/plugins/builtin/portfolio-list/pane/remove-ticker.ts +85 -0
- package/src/plugins/builtin/portfolio-list/pane/streaming.ts +18 -12
- package/src/plugins/builtin/portfolio-list/quick-add/index.tsx +6 -0
- package/src/plugins/builtin/power/client.ts +100 -0
- package/src/plugins/builtin/power/detail.tsx +82 -0
- package/src/plugins/builtin/power/evidence.ts +56 -0
- package/src/plugins/builtin/power/generation.tsx +37 -0
- package/src/plugins/builtin/power/headless.ts +43 -0
- package/src/plugins/builtin/power/index.tsx +16 -0
- package/src/plugins/builtin/power/model.ts +89 -0
- package/src/plugins/builtin/power/pane.tsx +209 -0
- package/src/plugins/builtin/power/query.ts +25 -0
- package/src/plugins/builtin/relative-rotation/pane.tsx +3 -3
- package/src/plugins/builtin/research/analyst-pane.tsx +1 -1
- package/src/plugins/builtin/research/corporate-actions-pane.tsx +13 -4
- package/src/plugins/builtin/research/equity-diagnostic-pane.tsx +11 -9
- package/src/plugins/builtin/research-search/pane.tsx +21 -7
- package/src/plugins/builtin/revenue-breakdown/pane.tsx +1 -1
- package/src/plugins/builtin/reverse-dcf/client.ts +35 -0
- package/src/plugins/builtin/reverse-dcf/headless.ts +44 -0
- package/src/plugins/builtin/reverse-dcf/index.tsx +20 -0
- package/src/plugins/builtin/reverse-dcf/model.ts +87 -0
- package/src/plugins/builtin/reverse-dcf/pane.tsx +107 -0
- package/src/plugins/builtin/risk-factors/pane.tsx +6 -5
- package/src/plugins/builtin/scanner/denied.tsx +4 -2
- package/src/plugins/builtin/scanner/feed.ts +1 -0
- package/src/plugins/builtin/scanner/flow-pane.tsx +3 -2
- package/src/plugins/builtin/scanner/hilo-pane.tsx +1 -1
- package/src/plugins/builtin/seasonality/client.ts +4 -1
- package/src/plugins/builtin/sec/command-bar-search.ts +217 -0
- package/src/plugins/builtin/sec/forms.ts +54 -0
- package/src/plugins/builtin/sec/headless.ts +31 -5
- package/src/plugins/builtin/sec/index.tsx +67 -11
- package/src/plugins/builtin/sec/model.ts +35 -5
- package/src/plugins/builtin/sectors/headless.ts +1 -0
- package/src/plugins/builtin/sectors/index.tsx +72 -26
- package/src/plugins/builtin/shared/cloud-upgrade.ts +143 -39
- package/src/plugins/builtin/shared/pro-feature-wall.tsx +8 -4
- package/src/plugins/builtin/shared/research-cells.tsx +107 -0
- package/src/plugins/builtin/shared/series-list-detail.tsx +5 -1
- package/src/plugins/builtin/shared/ticker-request.ts +1 -1
- package/src/plugins/builtin/shared/wall-teaser-catalog.ts +80 -0
- package/src/plugins/builtin/shared/wall-teaser.tsx +192 -0
- package/src/plugins/builtin/shared/wall-view-lifecycle.ts +43 -0
- package/src/plugins/builtin/short-interest/index.tsx +31 -0
- package/src/plugins/builtin/short-interest/watch-client.ts +70 -0
- package/src/plugins/builtin/short-interest/watch-headless.ts +49 -0
- package/src/plugins/builtin/short-interest/watch-model.ts +185 -0
- package/src/plugins/builtin/short-interest/watch-pane.tsx +169 -0
- package/src/plugins/builtin/short-volume/pane.tsx +1 -1
- package/src/plugins/builtin/social-mentions/pane.tsx +1 -1
- package/src/plugins/builtin/supply-chain/client.ts +104 -0
- package/src/plugins/builtin/supply-chain/disclosure-quote.tsx +17 -0
- package/src/plugins/builtin/supply-chain/evidence.ts +88 -0
- package/src/plugins/builtin/supply-chain/flow-layout.ts +133 -0
- package/src/plugins/builtin/supply-chain/flow.tsx +323 -0
- package/src/plugins/builtin/supply-chain/graph-client.ts +83 -0
- package/src/plugins/builtin/supply-chain/graph-evidence.ts +25 -0
- package/src/plugins/builtin/supply-chain/graph-model.ts +45 -0
- package/src/plugins/builtin/supply-chain/graph-pane.tsx +218 -0
- package/src/plugins/builtin/supply-chain/graph.tsx +163 -0
- package/src/plugins/builtin/supply-chain/headless.ts +105 -0
- package/src/plugins/builtin/supply-chain/index.tsx +17 -0
- package/src/plugins/builtin/supply-chain/model.ts +145 -0
- package/src/plugins/builtin/supply-chain/pane.tsx +276 -0
- package/src/plugins/builtin/supply-chain/row-evidence.tsx +96 -0
- package/src/plugins/builtin/supply-chain/trust.ts +34 -0
- package/src/plugins/builtin/themes/client.ts +39 -0
- package/src/plugins/builtin/themes/headless.ts +38 -0
- package/src/plugins/builtin/themes/model.ts +92 -0
- package/src/plugins/builtin/themes/pane.tsx +125 -0
- package/src/plugins/builtin/thirteenf/pane.tsx +6 -15
- package/src/plugins/builtin/ticker-detail/data-panes/historical-prices.tsx +5 -6
- package/src/plugins/builtin/ticker-detail/data-panes/returns-model.ts +201 -0
- package/src/plugins/builtin/ticker-detail/data-panes/returns-pane.tsx +327 -0
- package/src/plugins/builtin/ticker-detail/financials/period-end-history.ts +5 -2
- package/src/plugins/builtin/ticker-detail/financials/ratios.ts +60 -12
- package/src/plugins/builtin/ticker-detail/financials/tab.tsx +2 -1
- package/src/plugins/builtin/ticker-detail/headless.ts +7 -2
- package/src/plugins/builtin/ticker-detail/index.tsx +22 -0
- package/src/plugins/builtin/ticker-detail/overview/components.tsx +53 -30
- package/src/plugins/builtin/ticker-detail/overview/pane.tsx +2 -0
- package/src/plugins/builtin/ticker-detail/overview-tab.tsx +112 -47
- package/src/plugins/builtin/ticker-detail/pane.tsx +50 -6
- package/src/plugins/builtin/ticker-detail/quote-monitor/card.tsx +21 -42
- package/src/plugins/builtin/ticker-detail/quote-monitor/index.tsx +3 -0
- package/src/plugins/builtin/time-sales/pane.tsx +1 -1
- package/src/plugins/builtin/world-indices/indices.ts +1 -0
- package/src/plugins/catalog-browser.ts +40 -0
- package/src/plugins/catalog-manifest.ts +3 -0
- package/src/plugins/catalog-ui.ts +6 -0
- package/src/plugins/current-target.ts +0 -9
- package/src/public/__snapshots__/public-api.test.ts.snap +1 -0
- package/src/renderers/browser/cloud-transport.ts +66 -1
- package/src/renderers/browser/main.tsx +2 -0
- package/src/renderers/dom/data-table/row.tsx +2 -0
- package/src/renderers/dom/desktop/controls.tsx +38 -25
- package/src/renderers/dom/desktop/icons.tsx +8 -0
- package/src/renderers/dom/host/chart-surface.tsx +36 -2
- package/src/renderers/dom/host/focus-scope.ts +11 -1
- package/src/renderers/dom/styles.css +28 -0
- package/src/renderers/electrobun/view/backend-rpc.ts +3 -2
- package/src/renderers/electrobun/view/cli-pane-shot-entry.tsx +1 -1
- package/src/renderers/electrobun/view/http-fetch.ts +2 -0
- package/src/renderers/electrobun/view/main.tsx +3 -1
- package/src/renderers/electrobun/view/rpc-timeout.ts +59 -0
- package/src/renderers/opentui/start.tsx +3 -0
- package/src/shares/api.ts +3 -1
- package/src/sources/gloomberb-cloud/index.ts +47 -13
- package/src/sources/history-result.ts +1 -0
- package/src/sources/history-retention.ts +16 -0
- package/src/sources/provider-router/history.ts +4 -2
- package/src/sources/sec-edgar/identity.ts +36 -0
- package/src/sources/sec-edgar.ts +1 -34
- package/src/state/app/context/index.tsx +8 -0
- package/src/sync/core-contributors.ts +20 -2
- package/src/telemetry/attention-counts.ts +164 -0
- package/src/telemetry/live-config.ts +7 -0
- package/src/test-support/rpc-loopback.ts +7 -3
- package/src/test-support/shell-pane-keys.tsx +34 -0
- package/src/tickers/instrument-kind.ts +12 -6
- package/src/tickers/open-target.ts +1 -1
- package/src/tickers/search/asset-classes.ts +91 -0
- package/src/tickers/search/index.ts +62 -15
- package/src/tickers/search/ranking.ts +22 -3
- package/src/tickers/search/upsert.ts +4 -1
- package/src/time-series/live-bars.ts +8 -3
- package/src/time-series/resolve.ts +224 -17
- package/src/time-series/spec.ts +1 -0
- package/src/time-series/types.ts +9 -1
- package/src/types/config.ts +23 -1
- package/src/types/data-provider.ts +2 -0
- package/src/types/headless.ts +17 -0
- package/src/types/price-history.ts +2 -0
- package/src/ui/host.tsx +6 -0
- package/src/utils/double-escape-close.ts +20 -0
- package/src/utils/exchanges.ts +1 -0
- package/src/utils/html-entities.ts +15 -0
- package/src/utils/http-proxy-response.ts +44 -7
- package/src/utils/plugin-proxy-hosts.json +3 -0
- package/src/utils/price-history.ts +35 -1
- package/src/utils/sec.ts +21 -2
- package/src/utils/text-wrap.ts +13 -8
- package/src/utils/zoned-date-time.ts +67 -0
package/src/api-client/data.ts
CHANGED
|
@@ -1,8 +1,27 @@
|
|
|
1
|
+
import type { AttentionPayload, AttentionWindow } from "./attention";
|
|
2
|
+
import type { HiringBoard, HiringPayload } from "./hiring";
|
|
3
|
+
import type { AppAttentionFilter, AppAttentionPayload, AppRankPayload } from "./app-attention";
|
|
4
|
+
import type { CatalystResponse, CatalystDetail, CatalystFilters, CatalystStatus, CatalystChanges } from "./catalysts";
|
|
5
|
+
import type { KpisPayload, GuidancePayload, KpiQueryOptions } from "./company-kpis";
|
|
6
|
+
import { companyDisclosurePath } from "./company-kpis";
|
|
7
|
+
import type { PowerBoard, PowerDetail, PowerFilter, PowerHistory } from "./power";
|
|
8
|
+
import type { PerpBoardPayload, PerpHistoryPayload, PerpRankingsPayload, PerpBoardQuery, PerpHistoryQuery, PerpMarketPayload } from "./perps";
|
|
9
|
+
import type { ExposureRequest, ExposurePayload, ExposureScenario } from "./exposure";
|
|
10
|
+
import type { SupplyChainPayload, SupplyOptions } from "./supply-chain";
|
|
11
|
+
import { supplyGraphQuery, type GraphOptions, type GraphPayload } from "./supply-chain-graph";
|
|
12
|
+
import type { AwardDetailPayload, AwardFilter, AwardsPayload } from "./awards";
|
|
1
13
|
import type { EarningsEvent } from "../types/data-provider";
|
|
2
14
|
import type { MarketDividendsPayload, MarketHeatmapResult, MarketHeatmapUniverseId, MarketMoversPayload } from "./market-discovery";
|
|
3
15
|
import type { DebtMaturitiesPayload } from "./debt-maturities";
|
|
4
16
|
import type { RevenueBreakdownPayload, RevenueBreakdownView } from "./revenue-breakdown";
|
|
5
17
|
import type { MnaDealPayload, MnaDealsParams, MnaDealsPayload } from "./mna";
|
|
18
|
+
import {
|
|
19
|
+
distressQuery,
|
|
20
|
+
type DistressDesignationsParams,
|
|
21
|
+
type DistressFilingsParams,
|
|
22
|
+
type GoingConcernParams,
|
|
23
|
+
type InsolvencyNoticesParams,
|
|
24
|
+
} from "./distress";
|
|
6
25
|
import type { IpoCalendarParams, IpoCalendarPayload } from "./ipo";
|
|
7
26
|
import type { CryptoMarketsPayload } from "./crypto-markets";
|
|
8
27
|
import type { CentralBankRatesPayload } from "./central-bank-rates";
|
|
@@ -14,6 +33,9 @@ import type { ShortVolumePayload, ShortVolumeScope } from "./short-volume";
|
|
|
14
33
|
import type { SocialMentionDayPosts, SocialMentionsPayload, SocialMentionsRange } from "./social-mentions";
|
|
15
34
|
import type { FuturesCurveAsOfPayload, FuturesCurvePayload } from "./futures-curve";
|
|
16
35
|
import type { CotBoardPayload, CotContractPayload, CotFamily, CotClass } from "./cot";
|
|
36
|
+
import type { DoeBoardPayload } from "./doe";
|
|
37
|
+
import type { GpuBoardPayload, GpuEventsPayload, GpuHistoryPayload, GpuHistoryQuery } from "./gpu";
|
|
38
|
+
import type { CpiBoardPayload } from "./cpi";
|
|
17
39
|
import type { TapeSnapshot } from "./tape";
|
|
18
40
|
import type { ExchangeRateSnapshot } from "../types/exchange-rate";
|
|
19
41
|
import type { RatePathPayload } from "./rates";
|
|
@@ -145,10 +167,12 @@ export class CloudDataApi {
|
|
|
145
167
|
path: string,
|
|
146
168
|
targets: CloudMarketBatchTarget[],
|
|
147
169
|
mode: "cache-first" | "refresh",
|
|
170
|
+
signal?: AbortSignal,
|
|
148
171
|
): Promise<CloudMarketResponse<CloudMarketBatchPayload<T>>> {
|
|
149
172
|
return this.request<CloudMarketResponse<CloudMarketBatchPayload<T>>>(path, {
|
|
150
173
|
method: "POST",
|
|
151
174
|
body: JSON.stringify({ targets, mode }),
|
|
175
|
+
...(signal ? { signal } : {}),
|
|
152
176
|
});
|
|
153
177
|
}
|
|
154
178
|
|
|
@@ -157,6 +181,14 @@ export class CloudDataApi {
|
|
|
157
181
|
return this.request<T>(`/cloud/equity-screener/${path}`, init);
|
|
158
182
|
}
|
|
159
183
|
|
|
184
|
+
getCloudThemes() {
|
|
185
|
+
return this.request<import("./themes").ThemesPayload>("/cloud/themes");
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
getCloudThemeMembers(id: string) {
|
|
189
|
+
return this.request<import("./themes").ThemeMembersPayload>(`/cloud/themes/${encodeURIComponent(id)}`);
|
|
190
|
+
}
|
|
191
|
+
|
|
160
192
|
/** Stored implied volatility (HIVG, VCA, OVDV dates); one prefix-scoped method, like EQS. */
|
|
161
193
|
impliedVolatility<T>(path: string, init?: RequestInit) {
|
|
162
194
|
return this.request<T>(`/cloud/iv/${path}`, init);
|
|
@@ -203,8 +235,9 @@ export class CloudDataApi {
|
|
|
203
235
|
async getCloudQuotesBatch(
|
|
204
236
|
targets: CloudMarketBatchTarget[],
|
|
205
237
|
mode: "cache-first" | "refresh" = "cache-first",
|
|
238
|
+
options: { signal?: AbortSignal } = {},
|
|
206
239
|
): Promise<CloudMarketResponse<CloudMarketBatchPayload<CloudQuotePayload>>> {
|
|
207
|
-
return this.postMarketBatch("/market/quotes/batch", targets, mode);
|
|
240
|
+
return this.postMarketBatch("/market/quotes/batch", targets, mode, options.signal);
|
|
208
241
|
}
|
|
209
242
|
|
|
210
243
|
async getCloudWorldVenues(): Promise<
|
|
@@ -323,9 +356,11 @@ export class CloudDataApi {
|
|
|
323
356
|
symbol: string,
|
|
324
357
|
exchange: string,
|
|
325
358
|
params: CloudHistoryParams = {},
|
|
359
|
+
options: { signal?: AbortSignal } = {},
|
|
326
360
|
): Promise<CloudMarketResponse<CloudPricePointPayload[]>> {
|
|
327
361
|
return this.request<CloudMarketResponse<CloudPricePointPayload[]>>(
|
|
328
362
|
cloudHistoryPath(symbol, exchange, params),
|
|
363
|
+
options.signal ? { signal: options.signal } : undefined,
|
|
329
364
|
);
|
|
330
365
|
}
|
|
331
366
|
|
|
@@ -367,9 +402,11 @@ export class CloudDataApi {
|
|
|
367
402
|
async getCloudFredSeries(
|
|
368
403
|
seriesId: string,
|
|
369
404
|
params: CloudFredSeriesParams = {},
|
|
405
|
+
options: { signal?: AbortSignal } = {},
|
|
370
406
|
): Promise<CloudFredSeriesPayload> {
|
|
371
407
|
return this.request<CloudFredSeriesPayload>(
|
|
372
408
|
cloudFredSeriesPath(seriesId, params),
|
|
409
|
+
options.signal ? { signal: options.signal } : undefined,
|
|
373
410
|
);
|
|
374
411
|
}
|
|
375
412
|
|
|
@@ -385,6 +422,140 @@ export class CloudDataApi {
|
|
|
385
422
|
return this.request<CotContractPayload>(`/cloud/cot/contracts/${encodeURIComponent(code)}?${new URLSearchParams({ report })}`);
|
|
386
423
|
}
|
|
387
424
|
|
|
425
|
+
/** Credit-document paths stay with their pane; keep the shared client small. */
|
|
426
|
+
creditDocuments<T>(path: string): Promise<T> {
|
|
427
|
+
return this.request<T>(`/cloud/credit-documents/${path}`);
|
|
428
|
+
}
|
|
429
|
+
|
|
430
|
+
async getCloudHiring(symbol?: string, query: { limit?: number; offset?: number } = {}, signal?: AbortSignal): Promise<HiringBoard | HiringPayload> {
|
|
431
|
+
const params = new URLSearchParams({ limit: String(query.limit ?? 100), offset: String(query.offset ?? 0) });
|
|
432
|
+
return this.request<HiringBoard | HiringPayload>(symbol ? `/cloud/hiring/${encodeURIComponent(symbol)}` : `/cloud/hiring?${params}`, { signal });
|
|
433
|
+
}
|
|
434
|
+
|
|
435
|
+
async getCloudAppRankHistory(store: "app-store" | "google-play", appId: string, query: AppAttentionFilter = {}, signal?: AbortSignal): Promise<AppRankPayload> {
|
|
436
|
+
const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
|
|
437
|
+
return this.request<AppRankPayload>(`/cloud/app-attention/app/${store}/${encodeURIComponent(appId)}?${params}`, { signal });
|
|
438
|
+
}
|
|
439
|
+
|
|
440
|
+
async getCloudAppAttention(query: AppAttentionFilter = {}, signal?: AbortSignal): Promise<AppAttentionPayload> {
|
|
441
|
+
const { symbol, ...filters } = query;
|
|
442
|
+
const params = new URLSearchParams(Object.entries(filters).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
|
|
443
|
+
return this.request<AppAttentionPayload>(`/cloud/app-attention/${symbol ? encodeURIComponent(symbol) : "board"}?${params}`, { signal });
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
async getCloudCatalysts(query: CatalystFilters = {}, signal?: AbortSignal): Promise<CatalystResponse> {
|
|
447
|
+
const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
|
|
448
|
+
const route = query.litigation && query.symbol ? `/cloud/catalysts/litigation/${encodeURIComponent(query.symbol)}` : "/cloud/catalysts";
|
|
449
|
+
return this.request<CatalystResponse>(`${route}?${params}`, { signal });
|
|
450
|
+
}
|
|
451
|
+
|
|
452
|
+
async getCloudCatalystChanges(query: { since: string; cursor?: string; limit?: number }, signal?: AbortSignal): Promise<CatalystChanges> {
|
|
453
|
+
const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
|
|
454
|
+
return this.request<CatalystChanges>(`/cloud/catalysts/changes?${params}`, { signal });
|
|
455
|
+
}
|
|
456
|
+
|
|
457
|
+
async getCloudCatalystEvent(id: string, signal?: AbortSignal, query: { offset?: number; limit?: number } = {}): Promise<CatalystDetail> {
|
|
458
|
+
const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
|
|
459
|
+
return this.request<CatalystDetail>(`/cloud/catalysts/events/${encodeURIComponent(id)}?${params}`, { signal });
|
|
460
|
+
}
|
|
461
|
+
|
|
462
|
+
async getCloudCatalystStatus(): Promise<CatalystStatus> {
|
|
463
|
+
return this.request<CatalystStatus>("/cloud/catalysts/status");
|
|
464
|
+
}
|
|
465
|
+
|
|
466
|
+
async getCloudCompanyKpis(symbol: string, options: KpiQueryOptions = {}): Promise<KpisPayload> {
|
|
467
|
+
return this.request<KpisPayload>(companyDisclosurePath("kpis", symbol, options));
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
async getCloudCompanyGuidance(symbol: string, options: KpiQueryOptions = {}): Promise<GuidancePayload> {
|
|
471
|
+
return this.request<GuidancePayload>(companyDisclosurePath("guidance", symbol, options));
|
|
472
|
+
}
|
|
473
|
+
async getCloudPerpsBoard(query: PerpBoardQuery = {}): Promise<PerpBoardPayload> {
|
|
474
|
+
return this.request(`/cloud/perps/board?${new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]))}`);
|
|
475
|
+
}
|
|
476
|
+
async getCloudPerpsHistory(query: PerpHistoryQuery): Promise<PerpHistoryPayload> {
|
|
477
|
+
return this.request(`/cloud/perps/history?${new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]))}`);
|
|
478
|
+
}
|
|
479
|
+
async getCloudPerpsRankings(): Promise<PerpRankingsPayload> { return this.request("/cloud/perps/rankings"); }
|
|
480
|
+
async getCloudPerpsCompare(baseAsset: string): Promise<PerpBoardPayload> { return this.request(`/cloud/perps/compare?${new URLSearchParams({ baseAsset })}`); }
|
|
481
|
+
async getCloudPerpsEquity(symbol: string): Promise<PerpBoardPayload> { return this.request(`/cloud/perps/equity/${encodeURIComponent(symbol)}`); }
|
|
482
|
+
async getCloudPerpsMarket(marketId: string): Promise<PerpMarketPayload> { return this.request(`/cloud/perps/market?${new URLSearchParams({ marketId })}`); }
|
|
483
|
+
|
|
484
|
+
async analyzeCloudExposure(request: ExposureRequest): Promise<ExposurePayload> {
|
|
485
|
+
return this.request<ExposurePayload>("/cloud/exposure/analyze", { method: "POST", body: JSON.stringify(request) });
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
async getCloudExposureScenarios(): Promise<{ scenarios: ExposureScenario[] }> {
|
|
489
|
+
return this.request<{ scenarios: ExposureScenario[] }>("/cloud/exposure/scenarios");
|
|
490
|
+
}
|
|
491
|
+
|
|
492
|
+
async getCloudSupplyChain(symbol: string, options: SupplyOptions = {}): Promise<SupplyChainPayload> {
|
|
493
|
+
const query = new URLSearchParams();
|
|
494
|
+
if (options.tiers?.length) query.set("tiers", options.tiers.join(","));
|
|
495
|
+
if (options.includeLeads) query.set("includeLeads", "1");
|
|
496
|
+
return this.request<SupplyChainPayload>(`/cloud/supply-chain/${encodeURIComponent(symbol)}${query.size ? `?${query}` : ""}`);
|
|
497
|
+
}
|
|
498
|
+
|
|
499
|
+
getCloudAwards(query: AwardFilter = {}, signal?: AbortSignal): Promise<AwardsPayload> {
|
|
500
|
+
const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value != null).map(([key, value]) => [key, `${value}`]));
|
|
501
|
+
return this.request<AwardsPayload>(`/cloud/awards?${params}`, { signal });
|
|
502
|
+
}
|
|
503
|
+
|
|
504
|
+
getCloudAward(id: string, signal?: AbortSignal, revisionsCursor?: string): Promise<AwardDetailPayload> {
|
|
505
|
+
const query = revisionsCursor ? `?${new URLSearchParams({ revisionsCursor })}` : "";
|
|
506
|
+
return this.request<AwardDetailPayload>(`/cloud/awards/detail/${encodeURIComponent(id)}${query}`, { signal });
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
async getCloudSupplyGraph(symbol: string, options: Partial<GraphOptions> = {}): Promise<GraphPayload> {
|
|
510
|
+
return this.request<GraphPayload>(`/cloud/supply-chain/${encodeURIComponent(symbol)}/graph?${supplyGraphQuery(options)}`);
|
|
511
|
+
}
|
|
512
|
+
|
|
513
|
+
async getCloudSupplyPaths(from: string, to: string, options: Partial<GraphOptions> = {}): Promise<GraphPayload> {
|
|
514
|
+
return this.request<GraphPayload>(`/cloud/supply-chain/paths?from=${encodeURIComponent(from)}&to=${encodeURIComponent(to)}&${supplyGraphQuery(options)}`);
|
|
515
|
+
}
|
|
516
|
+
|
|
517
|
+
async getCloudDoeBoard(): Promise<DoeBoardPayload> {
|
|
518
|
+
return this.request<DoeBoardPayload>("/cloud/doe/board");
|
|
519
|
+
}
|
|
520
|
+
|
|
521
|
+
async getCloudAttention(window: AttentionWindow = "now", symbol?: string): Promise<AttentionPayload> {
|
|
522
|
+
const path = symbol ? `/cloud/attention/${encodeURIComponent(symbol)}` : "/cloud/attention";
|
|
523
|
+
return this.request<AttentionPayload>(`${path}?window=${window}`);
|
|
524
|
+
}
|
|
525
|
+
|
|
526
|
+
async getCloudPowerBoard(query: PowerFilter = {}, signal?: AbortSignal): Promise<PowerBoard> {
|
|
527
|
+
const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
|
|
528
|
+
return this.request<PowerBoard>(`/cloud/power/board?${params}`, { signal });
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
async getCloudPowerHistory(query: PowerFilter = {}): Promise<PowerHistory> {
|
|
532
|
+
const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
|
|
533
|
+
return this.request<PowerHistory>(`/cloud/power/history?${params}`);
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
async getCloudPowerProject(id: string, query: Pick<PowerFilter, "offset" | "limit"> = {}, signal?: AbortSignal): Promise<PowerDetail> {
|
|
537
|
+
const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
|
|
538
|
+
return this.request<PowerDetail>(`/cloud/power/projects/${encodeURIComponent(id)}?${params}`, { signal });
|
|
539
|
+
}
|
|
540
|
+
|
|
541
|
+
async getCloudGpuBoard(): Promise<GpuBoardPayload> {
|
|
542
|
+
return this.request<GpuBoardPayload>("/cloud/gpu/board");
|
|
543
|
+
}
|
|
544
|
+
|
|
545
|
+
async getCloudGpuHistory(query: GpuHistoryQuery = {}): Promise<GpuHistoryPayload> {
|
|
546
|
+
const params = new URLSearchParams(Object.entries(query).filter(([, value]) => value !== undefined).map(([key, value]) => [key, String(value)]));
|
|
547
|
+
return this.request<GpuHistoryPayload>(`/cloud/gpu/history?${params}`);
|
|
548
|
+
}
|
|
549
|
+
|
|
550
|
+
async getCloudGpuEvents(gpuModel?: string): Promise<GpuEventsPayload> {
|
|
551
|
+
const params = new URLSearchParams({ limit: "1000", ...(gpuModel ? { gpuModel } : {}) });
|
|
552
|
+
return this.request<GpuEventsPayload>(`/cloud/gpu/events?${params}`);
|
|
553
|
+
}
|
|
554
|
+
|
|
555
|
+
async getCloudCpiBoard(): Promise<CpiBoardPayload> {
|
|
556
|
+
return this.request<CpiBoardPayload>("/cloud/cpi/board");
|
|
557
|
+
}
|
|
558
|
+
|
|
388
559
|
async getCloudTape(symbol: string, exchange: string, signal?: AbortSignal): Promise<TapeSnapshot> {
|
|
389
560
|
return this.request<TapeSnapshot>(`/cloud/tape/${encodeURIComponent(symbol)}?exchange=${encodeURIComponent(exchange)}`, { signal: signal ?? AbortSignal.timeout(30_000) });
|
|
390
561
|
}
|
|
@@ -449,6 +620,24 @@ export class CloudDataApi {
|
|
|
449
620
|
return this.request<MnaDealPayload>(`/cloud/mna/deals/${encodeURIComponent(id)}`, { signal: options?.signal ?? AbortSignal.timeout(30_000) });
|
|
450
621
|
}
|
|
451
622
|
|
|
623
|
+
// Public records about companies in difficulty. The answers are unchecked
|
|
624
|
+
// JSON: the distress tab's parsers validate them before anything is drawn.
|
|
625
|
+
async getPublicDistressFilings(params: DistressFilingsParams, options?: { signal?: AbortSignal }): Promise<unknown> {
|
|
626
|
+
return this.request<unknown>(`/public/events${distressQuery(params)}`, { signal: options?.signal ?? AbortSignal.timeout(30_000) });
|
|
627
|
+
}
|
|
628
|
+
|
|
629
|
+
async getPublicGoingConcern(params: GoingConcernParams = {}, options?: { signal?: AbortSignal }): Promise<unknown> {
|
|
630
|
+
return this.request<unknown>(`/public/going-concern${distressQuery(params)}`, { signal: options?.signal ?? AbortSignal.timeout(30_000) });
|
|
631
|
+
}
|
|
632
|
+
|
|
633
|
+
async getPublicDistressDesignations(params: DistressDesignationsParams = {}, options?: { signal?: AbortSignal }): Promise<unknown> {
|
|
634
|
+
return this.request<unknown>(`/public/distress-designations${distressQuery(params)}`, { signal: options?.signal ?? AbortSignal.timeout(30_000) });
|
|
635
|
+
}
|
|
636
|
+
|
|
637
|
+
async getPublicInsolvencyNotices(params: InsolvencyNoticesParams = {}, options?: { signal?: AbortSignal }): Promise<unknown> {
|
|
638
|
+
return this.request<unknown>(`/public/insolvency-notices${distressQuery(params)}`, { signal: options?.signal ?? AbortSignal.timeout(30_000) });
|
|
639
|
+
}
|
|
640
|
+
|
|
452
641
|
async getCloudIpoCalendar(params: IpoCalendarParams = {}, options?: { signal?: AbortSignal }): Promise<IpoCalendarPayload> {
|
|
453
642
|
const query = new URLSearchParams();
|
|
454
643
|
for (const [key, value] of Object.entries(params)) {
|
|
@@ -615,8 +804,8 @@ export class CloudDataApi {
|
|
|
615
804
|
}
|
|
616
805
|
|
|
617
806
|
/**
|
|
618
|
-
* Cross-document full-text search
|
|
619
|
-
*
|
|
807
|
+
* Cross-document full-text search, open to every signed-in account; signed
|
|
808
|
+
* out it answers 401. Only alerts on a saved search need Pro.
|
|
620
809
|
*/
|
|
621
810
|
async searchCloudDocuments(
|
|
622
811
|
params: CloudSearchParams,
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public records about companies in difficulty: US 8-K filings under the
|
|
3
|
+
* bankruptcy, obligation and listing items, SEC going-concern disclosures,
|
|
4
|
+
* exchange listing designations and company insolvency notices. Every route
|
|
5
|
+
* is anonymous; field names follow the server, which serves the last three in
|
|
6
|
+
* snake case.
|
|
7
|
+
*/
|
|
8
|
+
import type { CloudFilingEventPayload } from "./types";
|
|
9
|
+
|
|
10
|
+
/** `distress` is Items 1.03 and 2.04; `listing` is Item 3.01. */
|
|
11
|
+
export type DistressFilingKind = "distress" | "listing";
|
|
12
|
+
|
|
13
|
+
export interface DistressFilingsParams {
|
|
14
|
+
kind: DistressFilingKind;
|
|
15
|
+
/** 1 to 200; the route has no offset, so this is the whole list. */
|
|
16
|
+
limit?: number;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export interface DistressFilingsPayload {
|
|
20
|
+
events: CloudFilingEventPayload[];
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export type GoingConcernVerdict = "doubt_raised" | "doubt_alleviated" | "policy_only" | "unclear";
|
|
24
|
+
|
|
25
|
+
export interface GoingConcernParams {
|
|
26
|
+
verdict?: GoingConcernVerdict;
|
|
27
|
+
limit?: number;
|
|
28
|
+
offset?: number;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export interface GoingConcernDisclosure {
|
|
32
|
+
id: string;
|
|
33
|
+
cik: string;
|
|
34
|
+
/** Venue-qualified trading symbol (`BMRA:NASDAQ`), null for a filer without one. */
|
|
35
|
+
ticker: string | null;
|
|
36
|
+
accession: string;
|
|
37
|
+
form: string;
|
|
38
|
+
period_end: string | null;
|
|
39
|
+
filed_at: string;
|
|
40
|
+
fact_date: string | null;
|
|
41
|
+
tag: string;
|
|
42
|
+
verdict: GoingConcernVerdict;
|
|
43
|
+
/** Whether the filing frames its assessment over one year; null when it does not say. */
|
|
44
|
+
within_one_year: boolean | null;
|
|
45
|
+
source_within_one_year: boolean | null;
|
|
46
|
+
summary: string;
|
|
47
|
+
quote: string;
|
|
48
|
+
text: string;
|
|
49
|
+
text_truncated: boolean;
|
|
50
|
+
dataset_month: string;
|
|
51
|
+
company: { ticker: string; cik: string | null; name: string; shortName: string };
|
|
52
|
+
filing_url: string;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export interface GoingConcernPayload {
|
|
56
|
+
disclosures: GoingConcernDisclosure[];
|
|
57
|
+
hasMore: boolean;
|
|
58
|
+
limit: number;
|
|
59
|
+
offset: number;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
export type DesignationDateBasis = "designation" | "effective" | "first_observed";
|
|
63
|
+
|
|
64
|
+
export interface DistressDesignationsParams {
|
|
65
|
+
kind?: string;
|
|
66
|
+
exchange?: string;
|
|
67
|
+
limit?: number;
|
|
68
|
+
offset?: number;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
export interface DistressDesignation {
|
|
72
|
+
id: string;
|
|
73
|
+
source: string;
|
|
74
|
+
region: string;
|
|
75
|
+
exchange: string;
|
|
76
|
+
/** Canonical listing key, e.g. `2867:TWSE`. */
|
|
77
|
+
symbol: string | null;
|
|
78
|
+
local_code: string;
|
|
79
|
+
entity_name: string;
|
|
80
|
+
entity_name_en: string | null;
|
|
81
|
+
market_segment: string | null;
|
|
82
|
+
/** `delisted`, `changed_trading_method` or `suspended`. */
|
|
83
|
+
kind: string;
|
|
84
|
+
designated_at: string | null;
|
|
85
|
+
effective_at: string | null;
|
|
86
|
+
first_seen_at: string;
|
|
87
|
+
last_seen_at: string;
|
|
88
|
+
ended_at: string | null;
|
|
89
|
+
remarks: string;
|
|
90
|
+
source_url: string;
|
|
91
|
+
notice_url: string | null;
|
|
92
|
+
date_basis: DesignationDateBasis;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
/** The licence terms a source's rows are published under, reproduced with them. */
|
|
96
|
+
export interface DistressAttribution {
|
|
97
|
+
source: string;
|
|
98
|
+
organization: string;
|
|
99
|
+
dataset: string | null;
|
|
100
|
+
version: string | null;
|
|
101
|
+
year: number | null;
|
|
102
|
+
datasetUrls: string[];
|
|
103
|
+
licence: string;
|
|
104
|
+
licenceUrl: string;
|
|
105
|
+
notice: string;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export interface DistressDesignationsPayload {
|
|
109
|
+
designations: DistressDesignation[];
|
|
110
|
+
hasMore: boolean;
|
|
111
|
+
limit: number;
|
|
112
|
+
offset: number;
|
|
113
|
+
attributions: DistressAttribution[];
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
export interface InsolvencyNoticesParams {
|
|
117
|
+
country?: string;
|
|
118
|
+
kind?: string;
|
|
119
|
+
/** Company name prefix, two characters or more. */
|
|
120
|
+
name_prefix?: string;
|
|
121
|
+
limit?: number;
|
|
122
|
+
offset?: number;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
export interface InsolvencyNotice {
|
|
126
|
+
source: string;
|
|
127
|
+
country: string;
|
|
128
|
+
/** SIREN in France, the Companies House number in the UK. */
|
|
129
|
+
registry_id: string;
|
|
130
|
+
entity_name: string;
|
|
131
|
+
symbol: string | null;
|
|
132
|
+
kind: string;
|
|
133
|
+
/** The official judgment label (France) or Gazette notice code (UK). */
|
|
134
|
+
raw_code: string;
|
|
135
|
+
/** Judgment or procedure date, when the notice states one. */
|
|
136
|
+
notice_date: string | null;
|
|
137
|
+
published_date: string;
|
|
138
|
+
court: string;
|
|
139
|
+
notice_id: string;
|
|
140
|
+
notice_url: string;
|
|
141
|
+
/** `annonce`, `rectificatif` or `annulation`. */
|
|
142
|
+
notice_type: string;
|
|
143
|
+
original_notice_id: string | null;
|
|
144
|
+
/** `active`, `superseded` or `cancelled`. */
|
|
145
|
+
status: string;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export interface InsolvencyNoticesPayload {
|
|
149
|
+
notices: InsolvencyNotice[];
|
|
150
|
+
hasMore: boolean;
|
|
151
|
+
limit: number;
|
|
152
|
+
offset: number;
|
|
153
|
+
attributions: DistressAttribution[];
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/** `?a=1&b=2` from the defined, non-empty values; empty when there are none. */
|
|
157
|
+
export function distressQuery(params: object): string {
|
|
158
|
+
const query = new URLSearchParams();
|
|
159
|
+
for (const [key, value] of Object.entries(params)) {
|
|
160
|
+
if (value !== undefined && value !== null && value !== "") query.set(key, String(value));
|
|
161
|
+
}
|
|
162
|
+
const text = query.toString();
|
|
163
|
+
return text ? `?${text}` : "";
|
|
164
|
+
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/** EIA weekly petroleum and natural gas storage, as GET /cloud/doe/board serves it. */
|
|
2
|
+
export type DoeReport = "petroleum" | "gas";
|
|
3
|
+
export type DoeTab = "crude" | "products" | "gas";
|
|
4
|
+
/** Thousand barrels, thousand barrels a day, percent, billion cubic feet: as published. */
|
|
5
|
+
export type DoeUnit = "kb" | "kbd" | "pct" | "bcf";
|
|
6
|
+
|
|
7
|
+
interface DoeFiveYear {
|
|
8
|
+
/** Calendar years in the band, oldest first; fewer than five where history is short. */
|
|
9
|
+
years: number[];
|
|
10
|
+
min: number;
|
|
11
|
+
max: number;
|
|
12
|
+
average: number;
|
|
13
|
+
/** The average change into this week over the same years. */
|
|
14
|
+
averageChange: number | null;
|
|
15
|
+
vsAverage: number;
|
|
16
|
+
vsAveragePercent: number | null;
|
|
17
|
+
/** 0 at the five-year low, 100 at the high, beyond either outside the range. */
|
|
18
|
+
position: number | null;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
interface DoeYearAgo {
|
|
22
|
+
weekEnding: string;
|
|
23
|
+
value: number;
|
|
24
|
+
change: number;
|
|
25
|
+
changePercent: number | null;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
interface DoeSeasonal {
|
|
29
|
+
/** The calendar year of the latest week. */
|
|
30
|
+
year: number;
|
|
31
|
+
/** Fridays in that year: 52 or 53. */
|
|
32
|
+
weeks: number;
|
|
33
|
+
/** [week of year, value]. */
|
|
34
|
+
current: Array<[number, number]>;
|
|
35
|
+
previous: Array<[number, number]>;
|
|
36
|
+
/** [week, min, average, max] of the band years on that week's day. */
|
|
37
|
+
band: Array<[number, number | null, number | null, number | null]>;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export interface DoeSeriesRow {
|
|
41
|
+
id: string;
|
|
42
|
+
key: string;
|
|
43
|
+
report: DoeReport;
|
|
44
|
+
tab: DoeTab;
|
|
45
|
+
label: string;
|
|
46
|
+
unit: DoeUnit;
|
|
47
|
+
weekEnding: string | null;
|
|
48
|
+
value: number | null;
|
|
49
|
+
previousWeekEnding: string | null;
|
|
50
|
+
weekChange: number | null;
|
|
51
|
+
yearAgo: DoeYearAgo | null;
|
|
52
|
+
fiveYear: DoeFiveYear | null;
|
|
53
|
+
/** One plain read worked out from the numbers. */
|
|
54
|
+
read: string | null;
|
|
55
|
+
seasonal: DoeSeasonal | null;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
export interface DoeReportStatus {
|
|
59
|
+
id: DoeReport;
|
|
60
|
+
weekEnding: string | null;
|
|
61
|
+
releasedAt: string | null;
|
|
62
|
+
releaseHoliday: string | null;
|
|
63
|
+
nextWeekEnding: string | null;
|
|
64
|
+
nextReleaseAt: string | null;
|
|
65
|
+
nextReleaseHoliday: string | null;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
export interface DoeBoardPayload {
|
|
69
|
+
source: "EIA";
|
|
70
|
+
generatedAt: string;
|
|
71
|
+
status: "available" | "partial" | "unavailable";
|
|
72
|
+
gaps: string[];
|
|
73
|
+
reports: DoeReportStatus[];
|
|
74
|
+
series: DoeSeriesRow[];
|
|
75
|
+
}
|
|
@@ -1,4 +1,7 @@
|
|
|
1
|
+
/** Cited company disclosures; Pro, omitted by older servers. */
|
|
2
|
+
export const KPI_FIELDS = ["kpiArr", "kpiNrrPercent", "kpiRpo", "kpiCrpo", "kpiSubscribers", "kpiDau", "kpiMau", "kpiGmv", "kpiTakeRatePercent", "kpiSameStoreSalesPercent", "kpiStores", "kpiBacklog", "kpiBookToBill", "kpiNimPercent", "kpiCet1Percent", "kpiCombinedRatioPercent", "kpiOccupancyPercent", "kpiLoadFactorPercent", "guideRevenueChangePercent", "guideEpsChangePercent"] as const;
|
|
1
3
|
export const NUMERIC_FIELDS = [
|
|
4
|
+
...KPI_FIELDS,
|
|
2
5
|
"price",
|
|
3
6
|
"changePercent",
|
|
4
7
|
"volume",
|
|
@@ -26,6 +29,8 @@ export const NUMERIC_FIELDS = [
|
|
|
26
29
|
"xPostsVsMedian",
|
|
27
30
|
"wikiViewsPerDay",
|
|
28
31
|
"wikiViewsVsMedian",
|
|
32
|
+
"attentionResearchUnits",
|
|
33
|
+
"attentionZScore",
|
|
29
34
|
"return1WPercent",
|
|
30
35
|
"return1MPercent",
|
|
31
36
|
"return3MPercent",
|
|
@@ -40,9 +45,14 @@ export const NUMERIC_FIELDS = [
|
|
|
40
45
|
"analystUpsidePercent",
|
|
41
46
|
"ivRank",
|
|
42
47
|
"ivToHv",
|
|
48
|
+
"hiringOpenRoles", "hiringNetAddsWeek", "hiringRemotePercent", "hiringZScore",
|
|
49
|
+
"appAttentionScore", "appRankVelocity7d", "appRatingDrift7d", "appRatingCountGrowth7d",
|
|
43
50
|
] as const;
|
|
51
|
+
/** Hiring and app attention are optional when connecting to an older server. */
|
|
52
|
+
export const HIRING_APP_FIELDS = ["hiringOpenRoles", "hiringNetAddsWeek", "hiringRemotePercent", "hiringZScore", "appAttentionScore", "appRankVelocity7d", "appRatingDrift7d", "appRatingCountGrowth7d"] as const;
|
|
44
53
|
/** Social attention; a server from before them omits these metrics. */
|
|
45
54
|
export const SOCIAL_FIELDS = ["xPostsPerDay", "xPostsVsMedian", "wikiViewsPerDay", "wikiViewsVsMedian"] as const;
|
|
55
|
+
export const ATTENTION_FIELDS = ["attentionResearchUnits", "attentionZScore"] as const;
|
|
46
56
|
/** Returns, valuation, estimates and options; a server from before them omits these metrics. */
|
|
47
57
|
export const RESEARCH_FIELDS = [
|
|
48
58
|
"return1WPercent", "return1MPercent", "return3MPercent", "returnYtdPercent", "return1YPercent", "fromHigh52WPercent",
|
|
@@ -147,6 +157,7 @@ export interface SavedScreen {
|
|
|
147
157
|
updatedAt: string;
|
|
148
158
|
}
|
|
149
159
|
export interface ScreenFieldDefinition {
|
|
160
|
+
access?: "pro";
|
|
150
161
|
id: ScreenField;
|
|
151
162
|
label: string;
|
|
152
163
|
kind: "number" | "category";
|