gloomberb 0.18.0 → 0.18.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (365) hide show
  1. package/package.json +1 -1
  2. package/src/api-client/commodity-balances.ts +6 -0
  3. package/src/api-client/company-kpis.ts +9 -0
  4. package/src/api-client/crypto-markets.ts +9 -0
  5. package/src/api-client/data.ts +6 -5
  6. package/src/api-client/equity-screener.ts +2 -0
  7. package/src/api-client/market-movers.ts +7 -0
  8. package/src/api-client/types.ts +14 -0
  9. package/src/app/pane-runtime/plugin-bindings.ts +3 -1
  10. package/src/app/pane-runtime/ticker-open-runtime.ts +17 -5
  11. package/src/app/runtime/plugin-bindings.ts +6 -2
  12. package/src/brokers/logos.ts +66 -0
  13. package/src/brokers/profile-form.ts +3 -0
  14. package/src/brokers/remote-broker-adapter.ts +13 -3
  15. package/src/capabilities/index.ts +1 -1
  16. package/src/capabilities/service-capabilities.ts +7 -1
  17. package/src/cli/base-converter.ts +60 -18
  18. package/src/cli/commands/fred-series.ts +15 -5
  19. package/src/cli/commands/market.ts +290 -159
  20. package/src/cli/commands/news-search.ts +35 -8
  21. package/src/cli/commands/overview.ts +31 -6
  22. package/src/cli/commands/system.ts +35 -1
  23. package/src/cli/commands/ticker.ts +105 -52
  24. package/src/cli/currency-hints.ts +27 -0
  25. package/src/cli/fx-pair.ts +41 -4
  26. package/src/cli/glossary.ts +57 -4
  27. package/src/cli/helpers.ts +36 -3
  28. package/src/cli/index.ts +4 -1
  29. package/src/cli/known-gaps.ts +37 -1
  30. package/src/cli/listing-arg.ts +37 -2
  31. package/src/cli/pane-functions/catalog.ts +3 -1
  32. package/src/cli/pane-functions/discovery.ts +15 -1
  33. package/src/cli/pane-functions/dom.ts +9 -4
  34. package/src/cli/pane-functions/freshness.ts +4 -4
  35. package/src/cli/pane-functions/function-help.ts +31 -7
  36. package/src/cli/pane-functions/headless.ts +6 -5
  37. package/src/cli/pane-functions/index.ts +3 -2
  38. package/src/cli/pane-functions/lock-note.ts +7 -4
  39. package/src/cli/pane-functions/resolver.ts +2 -1
  40. package/src/cli/quote-answer.ts +179 -0
  41. package/src/cli/series-search.ts +2 -1
  42. package/src/cli/symbol-list.ts +51 -16
  43. package/src/cli/types.ts +4 -0
  44. package/src/components/chart/composite/composite-chart.tsx +22 -7
  45. package/src/components/chart/composite/format.ts +13 -1
  46. package/src/components/chart/composite/level-labels.ts +30 -0
  47. package/src/components/chart/composite/levels.ts +17 -6
  48. package/src/components/chart/composite/panel-surface.tsx +64 -16
  49. package/src/components/chart/composite/price-axis-labels.tsx +2 -1
  50. package/src/components/chart/composite/types.ts +4 -0
  51. package/src/components/command-bar/routes/ticker-search/actions.ts +6 -0
  52. package/src/components/command-bar/workflow/collection-actions.ts +4 -0
  53. package/src/components/index.ts +2 -0
  54. package/src/components/layout/pane/content.tsx +16 -14
  55. package/src/components/layout/pane/footer/index.tsx +22 -3
  56. package/src/components/layout/pane/footer/model.ts +99 -4
  57. package/src/components/layout/pane/header-tabs.tsx +15 -1
  58. package/src/components/onboarding/onboarding-frame.tsx +9 -11
  59. package/src/components/onboarding/use-onboarding-broker-form.ts +5 -2
  60. package/src/components/onboarding/wizard-model.ts +10 -3
  61. package/src/components/onboarding/wizard-positions.ts +8 -0
  62. package/src/components/ui/button.tsx +11 -4
  63. package/src/components/ui/choice-dialog.tsx +8 -5
  64. package/src/components/ui/display.tsx +11 -6
  65. package/src/components/ui/fields.tsx +100 -20
  66. package/src/components/ui/icon.tsx +6 -1
  67. package/src/components/ui/list-row-lines.tsx +87 -0
  68. package/src/components/ui/list-view.tsx +14 -0
  69. package/src/components/ui/logo-mark.tsx +64 -0
  70. package/src/components/ui/number-step.ts +54 -0
  71. package/src/components/ui/select-button.tsx +5 -4
  72. package/src/components/ui/select-field.tsx +3 -3
  73. package/src/components/ui/status.tsx +17 -3
  74. package/src/components/ui/tabs.tsx +9 -1
  75. package/src/components/ui/toggle.tsx +17 -3
  76. package/src/core/state/app/instrument.ts +8 -3
  77. package/src/data/config/store/normalize.ts +4 -1
  78. package/src/data/plugin-cache.ts +32 -6
  79. package/src/docs/snapshot.json +57 -22
  80. package/src/i18n/es.ts +9 -3
  81. package/src/i18n/ja.ts +9 -3
  82. package/src/i18n/ko.ts +9 -3
  83. package/src/i18n/zh-cn.ts +10 -4
  84. package/src/i18n/zh-tw.ts +10 -4
  85. package/src/market-data/commodity-names.ts +80 -0
  86. package/src/market-data/coordinator/auxiliary.ts +3 -1
  87. package/src/market-data/coordinator/chart.ts +3 -1
  88. package/src/market-data/futures-board.ts +38 -1
  89. package/src/market-data/futures-contract.ts +91 -0
  90. package/src/market-data/fx-closes.ts +78 -1
  91. package/src/market-data/market/change-basis.ts +219 -0
  92. package/src/market-data/market/format.ts +28 -12
  93. package/src/market-data/market/freshness.ts +38 -0
  94. package/src/market-data/market/status.ts +55 -9
  95. package/src/market-data/market/year-to-date.ts +46 -0
  96. package/src/market-data/quotes/contributions.ts +12 -0
  97. package/src/market-data/quotes/delisting.ts +34 -0
  98. package/src/market-data/quotes/live-valuation.ts +23 -0
  99. package/src/market-data/quotes/resolution.ts +8 -2
  100. package/src/market-data/tax-equivalent.ts +10 -2
  101. package/src/notifications/app-notifier.ts +2 -2
  102. package/src/notifications/notification-log.ts +8 -6
  103. package/src/plugins/builtin/alerts/cli.ts +26 -18
  104. package/src/plugins/builtin/alerts/headless.ts +1 -1
  105. package/src/plugins/builtin/alerts/index.tsx +13 -4
  106. package/src/plugins/builtin/analytics/index.tsx +1 -1
  107. package/src/plugins/builtin/analytics/risk-client.ts +44 -11
  108. package/src/plugins/builtin/analytics/risk-fx.ts +61 -0
  109. package/src/plugins/builtin/analytics/risk-headless.ts +10 -1
  110. package/src/plugins/builtin/analytics/risk-model.ts +79 -16
  111. package/src/plugins/builtin/analytics/risk-pane.tsx +8 -2
  112. package/src/plugins/builtin/analytics/risk-test-data.ts +3 -0
  113. package/src/plugins/builtin/attention/trending.tsx +8 -6
  114. package/src/plugins/builtin/backtest/client.ts +5 -2
  115. package/src/plugins/builtin/backtest/window.ts +16 -3
  116. package/src/plugins/builtin/broker-manager/add-flow.tsx +40 -8
  117. package/src/plugins/builtin/broker-manager/detail.tsx +26 -1
  118. package/src/plugins/builtin/broker-manager/index.tsx +20 -9
  119. package/src/plugins/builtin/broker-manager/model.ts +5 -0
  120. package/src/plugins/builtin/broker-manager/pane-actions.tsx +8 -1
  121. package/src/plugins/builtin/broker-manager/table.ts +5 -1
  122. package/src/plugins/builtin/broker-trading/account-picker.tsx +91 -0
  123. package/src/plugins/builtin/broker-trading/chart-levels.ts +54 -0
  124. package/src/plugins/builtin/broker-trading/command.ts +103 -0
  125. package/src/plugins/builtin/broker-trading/controller.ts +688 -0
  126. package/src/plugins/builtin/broker-trading/dock.tsx +182 -0
  127. package/src/plugins/builtin/broker-trading/headless.ts +76 -0
  128. package/src/plugins/builtin/broker-trading/index.tsx +77 -0
  129. package/src/plugins/builtin/broker-trading/order-feed.ts +383 -0
  130. package/src/plugins/builtin/broker-trading/orders-data.ts +133 -0
  131. package/src/plugins/builtin/broker-trading/orders.tsx +437 -0
  132. package/src/plugins/builtin/broker-trading/overview-orders.tsx +121 -0
  133. package/src/plugins/builtin/broker-trading/pane-model.ts +207 -0
  134. package/src/plugins/builtin/broker-trading/pane.tsx +505 -0
  135. package/src/plugins/builtin/broker-trading/strategy.ts +153 -0
  136. package/src/plugins/builtin/broker-trading/ticket-parts.tsx +117 -0
  137. package/src/plugins/builtin/broker-trading/ticket.tsx +573 -0
  138. package/src/plugins/builtin/buildout/data-runtime.ts +1 -1
  139. package/src/plugins/builtin/buildout/format.ts +1 -0
  140. package/src/plugins/builtin/buildout/model/index.ts +16 -7
  141. package/src/plugins/builtin/buildout/pane/index.tsx +3 -2
  142. package/src/plugins/builtin/buildout/pane/status.tsx +3 -3
  143. package/src/plugins/builtin/chart-composer/cli-options.ts +19 -0
  144. package/src/plugins/builtin/chart-composer/data-catalog-pane.tsx +2 -1
  145. package/src/plugins/builtin/chart-composer/headless-schema.ts +3 -3
  146. package/src/plugins/builtin/chart-composer/headless.ts +2 -1
  147. package/src/plugins/builtin/chart-composer/option-range.ts +39 -0
  148. package/src/plugins/builtin/chart-composer/pane.tsx +31 -11
  149. package/src/plugins/builtin/chart-composer/presets.ts +2 -2
  150. package/src/plugins/builtin/chart-composer/series-catalog.ts +4 -2
  151. package/src/plugins/builtin/chart-composer/shortcuts.ts +3 -3
  152. package/src/plugins/builtin/chart-composer/viewport-labels.ts +5 -2
  153. package/src/plugins/builtin/chat/index.tsx +1 -1
  154. package/src/plugins/builtin/chat/status-widget.tsx +1 -1
  155. package/src/plugins/builtin/chat/unread-inbox-pane.tsx +6 -1
  156. package/src/plugins/builtin/chat/unread-inbox.ts +1 -1
  157. package/src/plugins/builtin/cloud/team/pane-sections.tsx +10 -3
  158. package/src/plugins/builtin/cloud/team/pane.tsx +30 -9
  159. package/src/plugins/builtin/commodity-balances/client.ts +6 -4
  160. package/src/plugins/builtin/commodity-balances/headless.ts +41 -7
  161. package/src/plugins/builtin/commodity-balances/index.tsx +19 -4
  162. package/src/plugins/builtin/commodity-balances/model.ts +22 -0
  163. package/src/plugins/builtin/commodity-balances/pane.tsx +36 -5
  164. package/src/plugins/builtin/company-kpis/client.ts +3 -2
  165. package/src/plugins/builtin/company-kpis/headless.ts +5 -7
  166. package/src/plugins/builtin/company-kpis/model.ts +85 -2
  167. package/src/plugins/builtin/company-kpis/pane.tsx +26 -12
  168. package/src/plugins/builtin/composite-plugins.ts +3 -2
  169. package/src/plugins/builtin/cot/headless.ts +1 -1
  170. package/src/plugins/builtin/cot/index.tsx +1 -1
  171. package/src/plugins/builtin/cot/model.ts +35 -12
  172. package/src/plugins/builtin/credit-boards/cdx-pane.tsx +2 -1
  173. package/src/plugins/builtin/credit-boards/sovr-pane.tsx +2 -1
  174. package/src/plugins/builtin/credit-conditions/index.tsx +2 -1
  175. package/src/plugins/builtin/crypto-board/client.ts +33 -2
  176. package/src/plugins/builtin/crypto-board/headless.ts +5 -2
  177. package/src/plugins/builtin/crypto-board/model.ts +28 -8
  178. package/src/plugins/builtin/custom-view/loader.ts +3 -2
  179. package/src/plugins/builtin/custom-view/pane.tsx +5 -4
  180. package/src/plugins/builtin/custom-view/view-spec.ts +1 -0
  181. package/src/plugins/builtin/dividend-yield/headless.ts +30 -8
  182. package/src/plugins/builtin/dividend-yield/provider-client.ts +3 -1
  183. package/src/plugins/builtin/earnings-calls/headless.ts +4 -4
  184. package/src/plugins/builtin/earnings-calls/lock-note.ts +12 -3
  185. package/src/plugins/builtin/econ/calendar-model.ts +38 -2
  186. package/src/plugins/builtin/econ/fred-catalog.ts +6 -2
  187. package/src/plugins/builtin/econ/fred-series-map.ts +12 -1
  188. package/src/plugins/builtin/econ/index.tsx +31 -4
  189. package/src/plugins/builtin/econ/print-watch.ts +279 -0
  190. package/src/plugins/builtin/equity-screener/headless.ts +20 -5
  191. package/src/plugins/builtin/equity-screener/model.ts +40 -2
  192. package/src/plugins/builtin/equity-screener/pane.tsx +24 -21
  193. package/src/plugins/builtin/estimate-revisions/headless.ts +3 -2
  194. package/src/plugins/builtin/estimate-revisions/lock-note.ts +29 -7
  195. package/src/plugins/builtin/executives/data.ts +24 -8
  196. package/src/plugins/builtin/executives/index.tsx +2 -18
  197. package/src/plugins/builtin/executives/pane.tsx +34 -10
  198. package/src/plugins/builtin/exposure/client.ts +4 -1
  199. package/src/plugins/builtin/exposure/editor.tsx +3 -3
  200. package/src/plugins/builtin/exposure/evidence.ts +4 -1
  201. package/src/plugins/builtin/exposure/holdings.ts +3 -1
  202. package/src/plugins/builtin/exposure/pane.tsx +37 -16
  203. package/src/plugins/builtin/filing-events/index.tsx +9 -3
  204. package/src/plugins/builtin/futures/table.tsx +6 -3
  205. package/src/plugins/builtin/futures-curve/pane.tsx +2 -2
  206. package/src/plugins/builtin/insider/base-values.ts +72 -0
  207. package/src/plugins/builtin/insider/headless.ts +29 -4
  208. package/src/plugins/builtin/jobs/headless.ts +2 -2
  209. package/src/plugins/builtin/jobs/lock-note.ts +14 -3
  210. package/src/plugins/builtin/market-halts/model.ts +31 -6
  211. package/src/plugins/builtin/market-halts/pane.tsx +3 -0
  212. package/src/plugins/builtin/market-movers/client.ts +2 -2
  213. package/src/plugins/builtin/market-movers/index.tsx +0 -3
  214. package/src/plugins/builtin/market-movers/session-body.tsx +27 -11
  215. package/src/plugins/builtin/market-movers/session.ts +25 -10
  216. package/src/plugins/builtin/market-valuation/pane.tsx +2 -1
  217. package/src/plugins/builtin/members/pane.tsx +8 -3
  218. package/src/plugins/builtin/news/wire/feed-config.ts +33 -13
  219. package/src/plugins/builtin/news/wire/index.tsx +7 -2
  220. package/src/plugins/builtin/news/wire/letters/client.ts +1 -0
  221. package/src/plugins/builtin/news/wire/news/command-bar-search.ts +6 -3
  222. package/src/plugins/builtin/news/wire/news/detail-view.tsx +2 -1
  223. package/src/plugins/builtin/news/wire/news/preset-pane.tsx +11 -3
  224. package/src/plugins/builtin/news/wire/news/table.tsx +2 -1
  225. package/src/plugins/builtin/news/wire/rss/cli.ts +3 -2
  226. package/src/plugins/builtin/news/wire/rss/feed-xml.ts +6 -1
  227. package/src/plugins/builtin/news/wire/rss/managed-feed.ts +1 -0
  228. package/src/plugins/builtin/news/wire/rss/source.ts +13 -4
  229. package/src/plugins/builtin/notes/cli.ts +33 -8
  230. package/src/plugins/builtin/notes/export.ts +49 -3
  231. package/src/plugins/builtin/notes/files.ts +14 -3
  232. package/src/plugins/builtin/notes/index.tsx +3 -3
  233. package/src/plugins/builtin/notes/quick-notes-pane.tsx +45 -10
  234. package/src/plugins/builtin/notes/store.ts +13 -3
  235. package/src/plugins/builtin/options/footer.ts +25 -20
  236. package/src/plugins/builtin/options/live-quotes.ts +33 -18
  237. package/src/plugins/builtin/options/view.tsx +77 -22
  238. package/src/plugins/builtin/options-calculator/pane.tsx +4 -2
  239. package/src/plugins/builtin/options-scenario/pane.tsx +41 -6
  240. package/src/plugins/builtin/portfolio-list/account-metrics.ts +3 -0
  241. package/src/plugins/builtin/portfolio-list/cli/bulk-symbols.ts +8 -7
  242. package/src/plugins/builtin/portfolio-list/cli/portfolio-command.ts +166 -15
  243. package/src/plugins/builtin/portfolio-list/cli/render.ts +69 -15
  244. package/src/plugins/builtin/portfolio-list/cli/watchlist-command.ts +2 -2
  245. package/src/plugins/builtin/portfolio-list/headless.ts +3 -1
  246. package/src/plugins/builtin/portfolio-list/pane/data.ts +23 -1
  247. package/src/plugins/builtin/portfolio-list/pane/index.tsx +44 -17
  248. package/src/plugins/builtin/portfolio-list/settings.ts +20 -2
  249. package/src/plugins/builtin/portfolio-list/summary/index.tsx +22 -1
  250. package/src/plugins/builtin/portfolio-list/summary/live-accounts.ts +42 -7
  251. package/src/plugins/builtin/portfolio-list/summary/totals.ts +24 -3
  252. package/src/plugins/builtin/primary-dealers/client.ts +137 -62
  253. package/src/plugins/builtin/primary-dealers/headless.ts +30 -5
  254. package/src/plugins/builtin/primary-dealers/index.tsx +3 -2
  255. package/src/plugins/builtin/primary-dealers/model.ts +179 -129
  256. package/src/plugins/builtin/primary-dealers/pane.tsx +135 -15
  257. package/src/plugins/builtin/research/analyst-model.ts +5 -1
  258. package/src/plugins/builtin/risk-factors/index.tsx +12 -3
  259. package/src/plugins/builtin/scanner/feed.ts +6 -1
  260. package/src/plugins/builtin/scanner/headless.ts +1 -1
  261. package/src/plugins/builtin/scanner/lock-note.ts +3 -2
  262. package/src/plugins/builtin/series-inventory.ts +1 -0
  263. package/src/plugins/builtin/shared/broker-reconnect.ts +105 -0
  264. package/src/plugins/builtin/shared/cloud-denied.ts +7 -6
  265. package/src/plugins/builtin/shared/cloud-upgrade.ts +10 -11
  266. package/src/plugins/builtin/shared/free-routes.ts +24 -0
  267. package/src/plugins/builtin/shared/headless-options.ts +11 -0
  268. package/src/plugins/builtin/shared/pro-feature-wall.tsx +9 -4
  269. package/src/plugins/builtin/shared/pro-lock-note.ts +89 -7
  270. package/src/plugins/builtin/shared/research-trading.tsx +62 -0
  271. package/src/plugins/builtin/social-mentions/headless.ts +1 -1
  272. package/src/plugins/builtin/social-mentions/lock-note.ts +1 -1
  273. package/src/plugins/builtin/themes/headless.ts +8 -2
  274. package/src/plugins/builtin/themes/model.ts +43 -10
  275. package/src/plugins/builtin/themes/pane.tsx +8 -6
  276. package/src/plugins/builtin/thirteenf/api.ts +4 -1
  277. package/src/plugins/builtin/thirteenf/data.ts +5 -1
  278. package/src/plugins/builtin/thirteenf/headless.ts +3 -1
  279. package/src/plugins/builtin/thirteenf/pane.tsx +8 -3
  280. package/src/plugins/builtin/ticker-detail/overview/model.ts +44 -10
  281. package/src/plugins/builtin/ticker-detail/overview/option-contract.ts +64 -0
  282. package/src/plugins/builtin/ticker-detail/overview-tab.tsx +82 -21
  283. package/src/plugins/builtin/ticker-detail/pane.tsx +21 -14
  284. package/src/plugins/builtin/ticker-detail/quote-footer.ts +5 -1
  285. package/src/plugins/builtin/ticker-detail/quote-monitor/card.tsx +37 -8
  286. package/src/plugins/builtin/time-sales/pane.tsx +2 -2
  287. package/src/plugins/builtin/trace-bonds/client.ts +14 -3
  288. package/src/plugins/builtin/trace-bonds/headless.ts +1 -1
  289. package/src/plugins/builtin/vol-surface/pane.tsx +2 -2
  290. package/src/plugins/builtin-editorial.ts +1 -1
  291. package/src/plugins/compat.ts +3 -0
  292. package/src/plugins/external-runtime.ts +5 -0
  293. package/src/plugins/loader.ts +6 -0
  294. package/src/plugins/plugin-icon.ts +61 -0
  295. package/src/plugins/registry/host-actions.ts +2 -1
  296. package/src/plugins/registry/index.ts +9 -1
  297. package/src/plugins/runtime/context.tsx +5 -0
  298. package/src/plugins/runtime/index.tsx +3 -0
  299. package/src/portfolio/column-values.ts +13 -4
  300. package/src/portfolio/cost-fx.ts +61 -0
  301. package/src/portfolio/mutations.ts +16 -2
  302. package/src/portfolio/position-metrics.ts +45 -4
  303. package/src/portfolio/position-quantity.ts +43 -0
  304. package/src/public/__snapshots__/public-api.test.ts.snap +5 -0
  305. package/src/public/broker.ts +8 -0
  306. package/src/public/market-data.ts +5 -0
  307. package/src/renderers/dom/desktop/control-styles.ts +7 -1
  308. package/src/renderers/dom/desktop/controls.tsx +39 -7
  309. package/src/renderers/dom/desktop/icons.tsx +14 -0
  310. package/src/renderers/dom/desktop/list-view.tsx +51 -19
  311. package/src/renderers/dom/desktop/menu.tsx +10 -1
  312. package/src/renderers/dom/desktop/select-field.tsx +8 -6
  313. package/src/renderers/dom/host/style.ts +6 -1
  314. package/src/renderers/dom/host/tabs.tsx +6 -0
  315. package/src/renderers/dom/styles.css +12 -5
  316. package/src/renderers/electrobun/bun/core-capabilities.ts +12 -0
  317. package/src/renderers/electrobun/bun/external-plugins.ts +3 -0
  318. package/src/renderers/electrobun/shared/protocol.ts +2 -0
  319. package/src/renderers/electrobun/view/broker-remote-client.ts +16 -0
  320. package/src/renderers/electrobun/view/external-plugins.ts +1 -0
  321. package/src/series/validate.ts +2 -2
  322. package/src/sources/gloomberb-cloud/fred-series.ts +27 -2
  323. package/src/sources/gloomberb-cloud/index.ts +50 -17
  324. package/src/sources/gloomberb-cloud/normalizers.ts +4 -0
  325. package/src/sources/history-result.ts +3 -0
  326. package/src/sources/provider-errors.ts +3 -1
  327. package/src/sources/provider-router/history.ts +49 -6
  328. package/src/sources/provider-router/index.ts +2 -1
  329. package/src/state/app/activity.ts +13 -0
  330. package/src/sync/controller.ts +4 -0
  331. package/src/sync/core-contributors.ts +63 -11
  332. package/src/sync/local-only.ts +121 -0
  333. package/src/sync/react.ts +6 -0
  334. package/src/sync/types.ts +3 -0
  335. package/src/team/collections.ts +2 -0
  336. package/src/tickers/listing-fate.ts +27 -8
  337. package/src/tickers/metadata.ts +10 -0
  338. package/src/tickers/search/index.ts +24 -3
  339. package/src/time-series/price-comparison.ts +35 -0
  340. package/src/time-series/resolve.ts +52 -11
  341. package/src/time-series/spec.ts +1 -1
  342. package/src/time-series/types.ts +5 -0
  343. package/src/types/broker.ts +56 -1
  344. package/src/types/config.ts +6 -0
  345. package/src/types/data-provider.ts +5 -1
  346. package/src/types/financials.ts +23 -0
  347. package/src/types/headless.ts +12 -2
  348. package/src/types/instrument.ts +4 -0
  349. package/src/types/plugin.ts +24 -6
  350. package/src/types/price-history.ts +6 -1
  351. package/src/types/ticker.ts +9 -0
  352. package/src/types/trading.ts +67 -0
  353. package/src/ui/host.tsx +4 -0
  354. package/src/utils/base-currency.ts +108 -0
  355. package/src/utils/currency-names.ts +128 -0
  356. package/src/utils/currency-pair.ts +2 -1
  357. package/src/utils/currency-units.ts +41 -1
  358. package/src/utils/dom-screenshot.ts +22 -9
  359. package/src/utils/exchange-notation.generated.ts +360 -0
  360. package/src/utils/exchanges.ts +15 -322
  361. package/src/utils/format.ts +31 -1
  362. package/src/utils/instrument-identity.ts +38 -1
  363. package/src/utils/options.ts +46 -1
  364. package/src/utils/price-history.ts +4 -0
  365. package/src/utils/reported-money.ts +8 -4
@@ -0,0 +1,360 @@
1
+ // Generated from gloomberb-platform server/src/lib/exchange-notation/table.ts,
2
+ // the one table of how venues are written. Do not edit: change the table and
3
+ // run server/scripts/exchange-notation.ts write there. A parity test fails
4
+ // when this copy is edited by hand.
5
+
6
+ export interface ExchangeNotation {
7
+ /** Every spelling read as a venue, by the venue's code. */
8
+ aliases: Readonly<Record<string, string>>
9
+ /** What a listing key writes for a venue when it is not the code (its MIC). */
10
+ keyCodes: Readonly<Record<string, string>>
11
+ /** Venue names, for output that says where a listing trades. */
12
+ names: Readonly<Record<string, string>>
13
+ /**
14
+ * Codes written for more than one venue: every venue each can name, the one
15
+ * a bare code reads as first, and the symbol shapes that settle it.
16
+ */
17
+ sharedCodes: Readonly<
18
+ Record<
19
+ string,
20
+ {
21
+ venues: readonly string[]
22
+ bySymbol?: readonly { pattern: string; venue: string }[]
23
+ }
24
+ >
25
+ >
26
+ }
27
+
28
+ export const EXCHANGE_NOTATION: ExchangeNotation = {
29
+ aliases: {
30
+ NAS: "NASDAQ",
31
+ NASDAQ: "NASDAQ",
32
+ XNAS: "NASDAQ",
33
+ NMS: "NASDAQ",
34
+ NGM: "NASDAQ",
35
+ NASDAQGM: "NASDAQ",
36
+ NASDAQGS: "NASDAQ",
37
+ NASDAQCM: "NASDAQ",
38
+ NCM: "NASDAQ",
39
+ NYQ: "NYSE",
40
+ NYS: "NYSE",
41
+ NYSE: "NYSE",
42
+ XNYS: "NYSE",
43
+ ASE: "AMEX",
44
+ AMEX: "AMEX",
45
+ XASE: "AMEX",
46
+ "NYSE AMERICAN": "AMEX",
47
+ NYSEAMERICAN: "AMEX",
48
+ PCX: "ARCA",
49
+ NYSEARCA: "ARCA",
50
+ "NYSE ARCA": "ARCA",
51
+ ARCA: "ARCA",
52
+ ARCX: "ARCA",
53
+ BATS: "BATS",
54
+ "CBOE US": "BATS",
55
+ BTS: "BATS",
56
+ TYO: "JPX",
57
+ TSEJ: "JPX",
58
+ JPX: "JPX",
59
+ XTKS: "JPX",
60
+ "TOKYO STOCK EXCHANGE": "JPX",
61
+ HKG: "HKEX",
62
+ HKEX: "HKEX",
63
+ SEHK: "HKEX",
64
+ XHKG: "HKEX",
65
+ LON: "LSE",
66
+ LSE: "LSE",
67
+ LSEETF: "LSE",
68
+ XLON: "LSE",
69
+ TOR: "TSX",
70
+ TSX: "TSX",
71
+ XTSE: "TSX",
72
+ TSXV: "TSXV",
73
+ XTSX: "TSXV",
74
+ VAN: "TSXV",
75
+ VENTURE: "TSXV",
76
+ CVE: "TSXV",
77
+ CN: "CSE",
78
+ CNSX: "CSE",
79
+ CSE: "CSE",
80
+ XCNQ: "CSE",
81
+ ASX: "ASX",
82
+ XASX: "ASX",
83
+ NZX: "NZX",
84
+ NZE: "NZX",
85
+ XNZE: "NZX",
86
+ SIX: "SWX",
87
+ SWX: "SWX",
88
+ EBS: "SWX",
89
+ XSWX: "SWX",
90
+ XETR: "XETRA",
91
+ ETR: "XETRA",
92
+ XETRA: "XETRA",
93
+ IBIS: "XETRA",
94
+ IBIS2: "XETRA",
95
+ GER: "XETRA",
96
+ FSE: "FWB2",
97
+ FSX: "FWB2",
98
+ XFRA: "FWB2",
99
+ FWB: "FWB2",
100
+ FWB2: "FWB2",
101
+ FRA: "FWB2",
102
+ EPA: "EPA",
103
+ XPAR: "EPA",
104
+ PAR: "EPA",
105
+ SBF: "EPA",
106
+ AMS: "AMS",
107
+ XAMS: "AMS",
108
+ AEB: "AMS",
109
+ AEX: "AMS",
110
+ BRU: "BRU",
111
+ XBRU: "BRU",
112
+ LIS: "LIS",
113
+ XLIS: "LIS",
114
+ BIT: "BIT",
115
+ XMIL: "BIT",
116
+ MIL: "BIT",
117
+ OMX: "SFB",
118
+ SFB: "SFB",
119
+ STO: "SFB",
120
+ XSTO: "SFB",
121
+ HEL: "HEL",
122
+ XHEL: "HEL",
123
+ OMXH: "HEL",
124
+ CPH: "CPH",
125
+ XCSE: "CPH",
126
+ OMXC: "CPH",
127
+ OSL: "OSL",
128
+ XOSL: "OSL",
129
+ ICE: "ICEX",
130
+ ICEX: "ICEX",
131
+ XICE: "ICEX",
132
+ WSE: "WSE",
133
+ GPW: "WSE",
134
+ XWAR: "WSE",
135
+ PRA: "PSE",
136
+ XPRA: "PSE",
137
+ VIE: "VIE",
138
+ VIENNA: "VIE",
139
+ XWBO: "VIE",
140
+ WBDM: "WBDM",
141
+ "VIENNA MTF": "WBDM",
142
+ VMTF: "WBDM",
143
+ TPE: "TWSE",
144
+ TWSE: "TWSE",
145
+ TAI: "TWSE",
146
+ TAIWAN: "TWSE",
147
+ TWO: "TPEX",
148
+ TPEX: "TPEX",
149
+ ROCO: "TPEX",
150
+ NSE: "NSE",
151
+ NSI: "NSE",
152
+ XNSE: "NSE",
153
+ BSE: "BSE",
154
+ BOM: "BSE",
155
+ XBOM: "BSE",
156
+ SSE: "SSE",
157
+ XSHG: "SSE",
158
+ SHH: "SSE",
159
+ SHA: "SSE",
160
+ SZSE: "SZSE",
161
+ XSHE: "SZSE",
162
+ SHE: "SZSE",
163
+ SHZ: "SZSE",
164
+ XKRX: "KRX",
165
+ KOSPI: "KRX",
166
+ KSC: "KRX",
167
+ KOSDAQ: "KOSDAQ",
168
+ XKOS: "KOSDAQ",
169
+ KOE: "KOSDAQ",
170
+ SGX: "SGX",
171
+ XSES: "SGX",
172
+ BMV: "BMV",
173
+ XMEX: "BMV",
174
+ B3: "B3",
175
+ BVMF: "B3",
176
+ B3SA: "B3",
177
+ SAO: "B3",
178
+ BUE: "BYMA",
179
+ BCBA: "BYMA",
180
+ JSE: "JSE",
181
+ XJSE: "JSE",
182
+ JOHANNESBURG: "JSE",
183
+ TLV: "TASE",
184
+ XTAE: "TASE",
185
+ "TEL AVIV": "TASE",
186
+ CCC: "CCC",
187
+ TADAWUL: "TADAWUL",
188
+ SAU: "TADAWUL",
189
+ SAUDI: "TADAWUL",
190
+ XSAU: "TADAWUL",
191
+ QE: "QE",
192
+ QSE: "QE",
193
+ DOH: "QE",
194
+ DSMD: "QE",
195
+ QATAR: "QE",
196
+ BHB: "BHB",
197
+ XBAH: "BHB",
198
+ "BAHRAIN BOURSE": "BHB",
199
+ BAHRAIN: "BHB",
200
+ DFM: "DFM",
201
+ XDFM: "DFM",
202
+ DUBAI: "DFM",
203
+ MSX: "MSX",
204
+ XMUS: "MSX",
205
+ MSM: "MSX",
206
+ MUSCAT: "MSX",
207
+ OMAN: "MSX",
208
+ KUWAIT: "KUWAIT",
209
+ XKUW: "KUWAIT",
210
+ BOURSA: "KUWAIT",
211
+ "BOURSA KUWAIT": "KUWAIT",
212
+ EGX: "EGX",
213
+ CAI: "EGX",
214
+ XCAI: "EGX",
215
+ EGYPT: "EGX",
216
+ CAIRO: "EGX",
217
+ CME: "CME",
218
+ CBT: "CBT",
219
+ CBOT: "CBT",
220
+ NYM: "NYM",
221
+ NYMEX: "NYM",
222
+ "NY MERCANTILE": "NYM",
223
+ CMX: "CMX",
224
+ COMEX: "CMX",
225
+ NYB: "NYB",
226
+ NYBOT: "NYB",
227
+ "ICE FUTURES": "NYB",
228
+ CFE: "CFE",
229
+ "CBOE FUTURES": "CFE",
230
+ CCY: "CCY",
231
+ FX: "CCY",
232
+ "PHYSICAL CURRENCY": "CCY",
233
+ HYPERLIQUID: "HYPERLIQUID",
234
+ BINANCE: "BINANCE",
235
+ BYBIT: "BYBIT",
236
+ OKX: "OKX",
237
+ DERIBIT: "DERIBIT",
238
+ DYDX: "DYDX",
239
+ TSE: "TSX",
240
+ KRX: "KRX",
241
+ EURONEXT: "AMS",
242
+ },
243
+ keyCodes: {
244
+ NASDAQ: "XNAS",
245
+ NYSE: "XNYS",
246
+ AMEX: "XASE",
247
+ ARCA: "ARCX",
248
+ HKEX: "XHKG",
249
+ LSE: "XLON",
250
+ TSX: "XTSE",
251
+ TSXV: "XTSX",
252
+ CSE: "XCNQ",
253
+ ASX: "XASX",
254
+ NZX: "XNZE",
255
+ SWX: "XSWX",
256
+ XETRA: "XETR",
257
+ FWB2: "XFRA",
258
+ EPA: "XPAR",
259
+ AMS: "XAMS",
260
+ BRU: "XBRU",
261
+ LIS: "XLIS",
262
+ BIT: "XMIL",
263
+ SFB: "XSTO",
264
+ HEL: "XHEL",
265
+ CPH: "XCSE",
266
+ OSL: "XOSL",
267
+ ICEX: "XICE",
268
+ WSE: "XWAR",
269
+ PSE: "XPRA",
270
+ VIE: "XWBO",
271
+ NSE: "XNSE",
272
+ BSE: "XBOM",
273
+ SSE: "XSHG",
274
+ SZSE: "XSHE",
275
+ KRX: "XKRX",
276
+ KOSDAQ: "XKOS",
277
+ SGX: "XSES",
278
+ BMV: "XMEX",
279
+ B3: "BVMF",
280
+ JSE: "XJSE",
281
+ TASE: "XTAE",
282
+ },
283
+ names: {
284
+ NYSE: "New York Stock Exchange",
285
+ AMEX: "NYSE American",
286
+ ARCA: "NYSE Arca",
287
+ BATS: "Cboe BZX",
288
+ JPX: "Tokyo Stock Exchange",
289
+ HKEX: "Hong Kong Stock Exchange",
290
+ LSE: "London Stock Exchange",
291
+ TSX: "Toronto Stock Exchange",
292
+ TSXV: "TSX Venture Exchange",
293
+ CSE: "Canadian Securities Exchange",
294
+ ASX: "Australian Securities Exchange",
295
+ NZX: "New Zealand Exchange",
296
+ SWX: "SIX Swiss Exchange",
297
+ XETRA: "Xetra",
298
+ FWB2: "Frankfurt Stock Exchange",
299
+ EPA: "Euronext Paris",
300
+ AMS: "Euronext Amsterdam",
301
+ BRU: "Euronext Brussels",
302
+ LIS: "Euronext Lisbon",
303
+ BIT: "Borsa Italiana",
304
+ MCE: "Bolsa de Madrid",
305
+ SFB: "Nasdaq Stockholm",
306
+ HEL: "Nasdaq Helsinki",
307
+ CPH: "Nasdaq Copenhagen",
308
+ OSL: "Euronext Oslo",
309
+ ICEX: "Nasdaq Iceland",
310
+ WSE: "Warsaw Stock Exchange",
311
+ PSE: "Prague Stock Exchange",
312
+ VIE: "Vienna Stock Exchange",
313
+ WBDM: "Vienna MTF",
314
+ TWSE: "Taiwan Stock Exchange",
315
+ TPEX: "Taipei Exchange",
316
+ NSE: "National Stock Exchange of India",
317
+ BSE: "BSE India",
318
+ SSE: "Shanghai Stock Exchange",
319
+ SZSE: "Shenzhen Stock Exchange",
320
+ KRX: "Korea Exchange",
321
+ SGX: "Singapore Exchange",
322
+ BMV: "Mexican Stock Exchange",
323
+ BYMA: "Bolsas y Mercados Argentinos",
324
+ JSE: "Johannesburg Stock Exchange",
325
+ TASE: "Tel Aviv Stock Exchange",
326
+ TADAWUL: "Saudi Exchange",
327
+ QE: "Qatar Stock Exchange",
328
+ BHB: "Bahrain Bourse",
329
+ DFM: "Dubai Financial Market",
330
+ MSX: "Muscat Stock Exchange",
331
+ KUWAIT: "Boursa Kuwait",
332
+ EGX: "Egyptian Exchange",
333
+ CBT: "CBOT",
334
+ NYM: "NYMEX",
335
+ CMX: "COMEX",
336
+ NYB: "ICE Futures U.S.",
337
+ CFE: "Cboe Futures Exchange",
338
+ HYPERLIQUID: "Hyperliquid",
339
+ BINANCE: "Binance",
340
+ BYBIT: "Bybit",
341
+ DERIBIT: "Deribit",
342
+ DYDX: "dYdX",
343
+ OTC: "OTC Markets",
344
+ NEO: "Cboe Canada",
345
+ CXA: "Cboe Australia",
346
+ },
347
+ sharedCodes: {
348
+ TSE: {
349
+ venues: ["TSX", "JPX"],
350
+ bySymbol: [
351
+ { pattern: "^[0-9][0-9A-Z][0-9][0-9A-Z]$", venue: "JPX" },
352
+ { pattern: "^[A-Z]", venue: "TSX" },
353
+ ],
354
+ },
355
+ KRX: { venues: ["KRX", "KOSDAQ"] },
356
+ EURONEXT: { venues: ["AMS", "EPA", "BRU", "LIS", "OSL", "BIT"] },
357
+ },
358
+ }
359
+
360
+ export const EXCHANGE_NOTATION_VERSION = "936f2769090c78dd"
@@ -1,257 +1,15 @@
1
- export const CANONICAL_EXCHANGE_ALIASES: Record<string, string> = {
2
- NAS: "NASDAQ",
3
- NASDAQ: "NASDAQ",
4
- XNAS: "NASDAQ",
5
- NMS: "NASDAQ",
6
- NGM: "NASDAQ",
7
- NASDAQGM: "NASDAQ",
8
- NASDAQGS: "NASDAQ",
9
- NCM: "NASDAQ",
10
- NYQ: "NYSE",
11
- NYS: "NYSE",
12
- NYSE: "NYSE",
13
- XNYS: "NYSE",
14
- ASE: "AMEX",
15
- AMEX: "AMEX",
16
- XASE: "AMEX",
17
- PCX: "ARCA",
18
- NYSEARCA: "ARCA",
19
- "NYSE ARCA": "ARCA",
20
- ARCA: "ARCA",
21
- ARCX: "ARCA",
22
- BATS: "BATS",
23
- // Cboe's US equities listing venue (BZX); quotes label it "CBOE US" or BTS.
24
- "CBOE US": "BATS",
25
- BTS: "BATS",
26
- TYO: "JPX",
27
- // Toronto, as brokers and quote sites spell it; typed after a symbol it can
28
- // also be Tokyo (SHARED_EXCHANGE_CODES).
29
- TSE: "TSX",
30
- TSEJ: "JPX",
31
- JPX: "JPX",
32
- XTKS: "JPX",
33
- HKG: "HKEX",
34
- HKEX: "HKEX",
35
- SEHK: "HKEX",
36
- XHKG: "HKEX",
37
- LON: "LSE",
38
- LSE: "LSE",
39
- LSEETF: "LSE",
40
- XLON: "LSE",
41
- TOR: "TSX",
42
- TSX: "TSX",
43
- XTSE: "TSX",
44
- TSXV: "TSXV",
45
- XTSX: "TSXV",
46
- VAN: "TSXV",
47
- CVE: "TSXV",
48
- CN: "CSE",
49
- CNSX: "CSE",
50
- XCNQ: "CSE",
51
- CSE: "CSE",
52
- ASX: "ASX",
53
- XASX: "ASX",
54
- NZX: "NZX",
55
- XNZE: "NZX",
56
- NZE: "NZX",
57
- SIX: "SWX",
58
- SWX: "SWX",
59
- EBS: "SWX",
60
- XSWX: "SWX",
61
- ETR: "XETRA",
62
- XETR: "XETRA",
63
- XETRA: "XETRA",
64
- IBIS: "XETRA",
65
- IBIS2: "XETRA",
66
- GER: "XETRA",
67
- FSE: "FWB2",
68
- FSX: "FWB2",
69
- FRA: "FWB2",
70
- XFRA: "FWB2",
71
- FWB: "FWB2",
72
- FWB2: "FWB2",
73
- EPA: "EPA",
74
- XPAR: "EPA",
75
- PAR: "EPA",
76
- SBF: "EPA",
77
- AMS: "AMS",
78
- XAMS: "AMS",
79
- AEB: "AMS",
80
- EURONEXT: "AMS",
81
- BRU: "BRU",
82
- XBRU: "BRU",
83
- LIS: "LIS",
84
- XLIS: "LIS",
85
- BIT: "BIT",
86
- XMIL: "BIT",
87
- MIL: "BIT",
88
- OMX: "SFB",
89
- STO: "SFB",
90
- XSTO: "SFB",
91
- HEL: "HEL",
92
- XHEL: "HEL",
93
- CPH: "CPH",
94
- XCSE: "CPH",
95
- OSL: "OSL",
96
- XOSL: "OSL",
97
- ICE: "ICEX",
98
- ICEX: "ICEX",
99
- XICE: "ICEX",
100
- WSE: "WSE",
101
- GPW: "WSE",
102
- XWAR: "WSE",
103
- PRA: "PSE",
104
- XPRA: "PSE",
105
- VIE: "VIE",
106
- XWBO: "VIE",
107
- // The Vienna MTF, Wiener Boerse's multilateral trading facility, which Gloom
108
- // Cloud names by its segment MIC. Its ETPs and notes are its own listings.
109
- WBDM: "WBDM",
110
- "VIENNA MTF": "WBDM",
111
- VMTF: "WBDM",
112
- TPE: "TWSE",
113
- TWSE: "TWSE",
114
- TAI: "TWSE",
115
- TWO: "TPEX",
116
- TPEX: "TPEX",
117
- ROCO: "TPEX",
118
- NSE: "NSE",
119
- NSI: "NSE",
120
- XNSE: "NSE",
121
- BSE: "BSE",
122
- BOM: "BSE",
123
- XBOM: "BSE",
124
- SSE: "SSE",
125
- XSHG: "SSE",
126
- SHH: "SSE",
127
- SHA: "SSE",
128
- SZSE: "SZSE",
129
- XSHE: "SZSE",
130
- SHE: "SZSE",
131
- SHZ: "SZSE",
132
- // KOSPI; typed after a symbol it can also be KOSDAQ, which the Korea Exchange runs too.
133
- KRX: "KRX",
134
- XKRX: "KRX",
135
- KOSPI: "KRX",
136
- KSC: "KRX",
137
- KOSDAQ: "KOSDAQ",
138
- XKOS: "KOSDAQ",
139
- KOE: "KOSDAQ",
140
- SGX: "SGX",
141
- XSES: "SGX",
142
- BMV: "BMV",
143
- XMEX: "BMV",
144
- B3: "B3",
145
- BVMF: "B3",
146
- B3SA: "B3",
147
- SAO: "B3",
148
- BUE: "BYMA",
149
- BCBA: "BYMA",
150
- JSE: "JSE",
151
- XJSE: "JSE",
152
- TLV: "TASE",
153
- XTAE: "TASE",
154
- TADAWUL: "TADAWUL",
155
- XSAU: "TADAWUL",
156
- QE: "QE",
157
- QSE: "QE",
158
- DSMD: "QE",
159
- // Bahrain Bourse, which Gloom Cloud names BHB.
160
- BHB: "BHB",
161
- XBAH: "BHB",
162
- BAHRAIN: "BHB",
163
- "BAHRAIN BOURSE": "BHB",
164
- DFM: "DFM",
165
- XDFM: "DFM",
166
- // The Muscat Stock Exchange, which Gloom Cloud names MSX.
167
- MSX: "MSX",
168
- XMUS: "MSX",
169
- MSM: "MSX",
170
- MUSCAT: "MSX",
171
- OMAN: "MSX",
172
- // Boursa Kuwait, which Gloom Cloud names KUWAIT.
173
- KUWAIT: "KUWAIT",
174
- XKUW: "KUWAIT",
175
- BOURSA: "KUWAIT",
176
- "BOURSA KUWAIT": "KUWAIT",
177
- // The Egyptian Exchange, which Gloom Cloud names EGX.
178
- EGX: "EGX",
179
- CAI: "EGX",
180
- XCAI: "EGX",
181
- EGYPT: "EGX",
182
- CAIRO: "EGX",
183
- CCC: "CCC",
184
- // Futures venues, by the code search gives each (GC=F on CMX). Quotes spell
185
- // the venue out (COMEX, NY MERCANTILE); both spellings are one venue, or the
186
- // quote for GC=F:CMX reads as another venue's and is dropped.
187
- CME: "CME",
188
- CBT: "CBT",
189
- CBOT: "CBT",
190
- NYM: "NYM",
191
- NYMEX: "NYM",
192
- "NY MERCANTILE": "NYM",
193
- CMX: "CMX",
194
- COMEX: "CMX",
195
- NYB: "NYB",
196
- NYBOT: "NYB",
197
- "ICE FUTURES": "NYB",
198
- CFE: "CFE",
199
- "CBOE FUTURES": "CFE",
200
- // The currency venue: EURUSD:CCY and EURUSD:FX are the pair EURUSD=X. Pairs
201
- // saved from an older search answer are on PHYSICAL CURRENCY.
202
- CCY: "CCY",
203
- FX: "CCY",
204
- "PHYSICAL CURRENCY": "CCY",
205
- // Perpetual futures venues: a contract is a listing on its venue
206
- // (BZUSDT:BINANCE), see tickers/perpetual-listing.
207
- HYPERLIQUID: "HYPERLIQUID",
208
- BINANCE: "BINANCE",
209
- BYBIT: "BYBIT",
210
- OKX: "OKX",
211
- DERIBIT: "DERIBIT",
212
- DYDX: "DYDX",
213
- };
1
+ import { EXCHANGE_NOTATION } from "./exchange-notation.generated";
214
2
 
215
- const PUBLIC_EXCHANGE_ALIASES: Record<string, string> = {
216
- NASDAQ: "XNAS",
217
- NYSE: "XNYS",
218
- AMEX: "XASE",
219
- ARCA: "ARCX",
220
- HKEX: "XHKG",
221
- LSE: "XLON",
222
- TSX: "XTSE",
223
- TSXV: "XTSX",
224
- CSE: "XCNQ",
225
- ASX: "XASX",
226
- NZX: "XNZE",
227
- SWX: "XSWX",
228
- XETRA: "XETR",
229
- FWB2: "XFRA",
230
- EPA: "XPAR",
231
- AMS: "XAMS",
232
- BRU: "XBRU",
233
- LIS: "XLIS",
234
- BIT: "XMIL",
235
- SFB: "XSTO",
236
- HEL: "XHEL",
237
- CPH: "XCSE",
238
- OSL: "XOSL",
239
- ICEX: "XICE",
240
- WSE: "XWAR",
241
- PSE: "XPRA",
242
- VIE: "XWBO",
243
- NSE: "XNSE",
244
- BSE: "XBOM",
245
- SSE: "XSHG",
246
- SZSE: "XSHE",
247
- KRX: "XKRX",
248
- KOSDAQ: "XKOS",
249
- SGX: "XSES",
250
- BMV: "XMEX",
251
- B3: "BVMF",
252
- JSE: "XJSE",
253
- TASE: "XTAE",
254
- };
3
+ /**
4
+ * Every spelling read as a venue, by the venue's code. The table is Gloom
5
+ * Cloud's, generated into exchange-notation.generated.ts so the terminal, the
6
+ * phone and Gloom Cloud read every spelling the same way: add one there, not
7
+ * here.
8
+ */
9
+ export const CANONICAL_EXCHANGE_ALIASES: Readonly<Record<string, string>> = EXCHANGE_NOTATION.aliases;
10
+
11
+ /** What a listing key writes for a venue when it is not the code: its MIC (VOD:XLON). */
12
+ const PUBLIC_EXCHANGE_ALIASES: Readonly<Record<string, string>> = EXCHANGE_NOTATION.keyCodes;
255
13
 
256
14
  export const EXCHANGE_TIME_ZONES: Record<string, string> = {
257
15
  NASDAQ: "America/New_York",
@@ -320,70 +78,7 @@ export const EXCHANGE_TIME_ZONES: Record<string, string> = {
320
78
  * resolved ("Euronext Paris (EPA)"). Codes whose name is the code itself
321
79
  * (NASDAQ, BSE) are left out.
322
80
  */
323
- const EXCHANGE_NAMES: Record<string, string> = {
324
- NYSE: "New York Stock Exchange",
325
- AMEX: "NYSE American",
326
- ARCA: "NYSE Arca",
327
- BATS: "Cboe BZX",
328
- OTC: "OTC Markets",
329
- JPX: "Tokyo Stock Exchange",
330
- HKEX: "Hong Kong Stock Exchange",
331
- LSE: "London Stock Exchange",
332
- TSX: "Toronto Stock Exchange",
333
- TSXV: "TSX Venture Exchange",
334
- CSE: "Canadian Securities Exchange",
335
- NEO: "Cboe Canada",
336
- ASX: "Australian Securities Exchange",
337
- CXA: "Cboe Australia",
338
- NZX: "New Zealand Exchange",
339
- SWX: "SIX Swiss Exchange",
340
- XETRA: "Xetra",
341
- FWB2: "Frankfurt Stock Exchange",
342
- EPA: "Euronext Paris",
343
- AMS: "Euronext Amsterdam",
344
- BRU: "Euronext Brussels",
345
- LIS: "Euronext Lisbon",
346
- BIT: "Borsa Italiana",
347
- MCE: "Bolsa de Madrid",
348
- SFB: "Nasdaq Stockholm",
349
- HEL: "Nasdaq Helsinki",
350
- CPH: "Nasdaq Copenhagen",
351
- OSL: "Euronext Oslo",
352
- ICEX: "Nasdaq Iceland",
353
- WSE: "Warsaw Stock Exchange",
354
- PSE: "Prague Stock Exchange",
355
- VIE: "Vienna Stock Exchange",
356
- WBDM: "Vienna MTF",
357
- TWSE: "Taiwan Stock Exchange",
358
- TPEX: "Taipei Exchange",
359
- NSE: "National Stock Exchange of India",
360
- BSE: "BSE India",
361
- SSE: "Shanghai Stock Exchange",
362
- SZSE: "Shenzhen Stock Exchange",
363
- KRX: "Korea Exchange",
364
- SGX: "Singapore Exchange",
365
- BMV: "Mexican Stock Exchange",
366
- BYMA: "Bolsas y Mercados Argentinos",
367
- JSE: "Johannesburg Stock Exchange",
368
- TASE: "Tel Aviv Stock Exchange",
369
- TADAWUL: "Saudi Exchange",
370
- QE: "Qatar Stock Exchange",
371
- BHB: "Bahrain Bourse",
372
- DFM: "Dubai Financial Market",
373
- MSX: "Muscat Stock Exchange",
374
- KUWAIT: "Boursa Kuwait",
375
- EGX: "Egyptian Exchange",
376
- CBT: "CBOT",
377
- NYM: "NYMEX",
378
- CMX: "COMEX",
379
- NYB: "ICE Futures U.S.",
380
- CFE: "Cboe Futures Exchange",
381
- HYPERLIQUID: "Hyperliquid",
382
- BINANCE: "Binance",
383
- BYBIT: "Bybit",
384
- DERIBIT: "Deribit",
385
- DYDX: "dYdX",
386
- };
81
+ const EXCHANGE_NAMES: Readonly<Record<string, string>> = EXCHANGE_NOTATION.names;
387
82
 
388
83
  const KNOWN_EXCHANGE_CODES: ReadonlySet<string> = new Set([
389
84
  ...Object.keys(CANONICAL_EXCHANGE_ALIASES),
@@ -427,11 +122,9 @@ export function canonicalExchange(value?: string): string {
427
122
  * keeps the first venue; a listing typed with one is the venue its symbol
428
123
  * trades on.
429
124
  */
430
- const SHARED_EXCHANGE_CODES: Record<string, readonly string[]> = {
431
- TSE: ["TSX", "JPX"],
432
- KRX: ["KRX", "KOSDAQ"],
433
- EURONEXT: ["AMS", "EPA", "BRU", "LIS", "OSL", "BIT"],
434
- };
125
+ const SHARED_EXCHANGE_CODES: Readonly<Record<string, readonly string[]>> = Object.fromEntries(
126
+ Object.entries(EXCHANGE_NOTATION.sharedCodes).map(([code, shared]) => [code, shared.venues]),
127
+ );
435
128
 
436
129
  /** Whether a typed exchange code names more than one venue (TSE: Tokyo or Toronto). */
437
130
  export function isSharedExchangeCode(value?: string): boolean {