@dshtrading/router 0.1.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/lib/catalog.js ADDED
@@ -0,0 +1,1073 @@
1
+ //#region src/catalog.ts
2
+ const SYMBOL_CATALOG = {
3
+ crypto: [
4
+ {
5
+ symbol: "BTCUSDT",
6
+ name: "比特币",
7
+ pinyin: "BTC,BITCOIN,BITEBI"
8
+ },
9
+ {
10
+ symbol: "ETHUSDT",
11
+ name: "以太坊",
12
+ pinyin: "ETH,ETHEREUM,YITAIFANG"
13
+ },
14
+ {
15
+ symbol: "SOLUSDT",
16
+ name: "Solana",
17
+ pinyin: "SOL"
18
+ },
19
+ {
20
+ symbol: "BNBUSDT",
21
+ name: "BNB",
22
+ pinyin: "BNB"
23
+ },
24
+ {
25
+ symbol: "XRPUSDT",
26
+ name: "XRP",
27
+ pinyin: "XRP,RIPPLE,RUIBO"
28
+ },
29
+ {
30
+ symbol: "DOGEUSDT",
31
+ name: "狗狗币",
32
+ pinyin: "DOGE,GOUGOUBI"
33
+ },
34
+ {
35
+ symbol: "ADAUSDT",
36
+ name: "艾达币",
37
+ pinyin: "ADA,AIDABI"
38
+ },
39
+ {
40
+ symbol: "TRXUSDT",
41
+ name: "波场",
42
+ pinyin: "TRX,BOCHANG"
43
+ },
44
+ {
45
+ symbol: "AVAXUSDT",
46
+ name: "雪崩",
47
+ pinyin: "AVAX,XUEBENG"
48
+ },
49
+ {
50
+ symbol: "LINKUSDT",
51
+ name: "链link",
52
+ pinyin: "LINK"
53
+ },
54
+ {
55
+ symbol: "TONUSDT",
56
+ name: "Toncoin",
57
+ pinyin: "TON"
58
+ },
59
+ {
60
+ symbol: "SHIBUSDT",
61
+ name: "屎币",
62
+ pinyin: "SHIB,SHIBI"
63
+ },
64
+ {
65
+ symbol: "SUIUSDT",
66
+ name: "Sui",
67
+ pinyin: "SUI"
68
+ },
69
+ {
70
+ symbol: "DOTUSDT",
71
+ name: "波卡",
72
+ pinyin: "DOT,BOKA"
73
+ },
74
+ {
75
+ symbol: "LTCUSDT",
76
+ name: "莱特币",
77
+ pinyin: "LTC,LAITEBI"
78
+ },
79
+ {
80
+ symbol: "BCHUSDT",
81
+ name: "比特币现金",
82
+ pinyin: "BCH"
83
+ },
84
+ {
85
+ symbol: "NEARUSDT",
86
+ name: "NEAR",
87
+ pinyin: "NEAR"
88
+ },
89
+ {
90
+ symbol: "APTUSDT",
91
+ name: "Aptos",
92
+ pinyin: "APT"
93
+ },
94
+ {
95
+ symbol: "ARBUSDT",
96
+ name: "Arbitrum",
97
+ pinyin: "ARB"
98
+ },
99
+ {
100
+ symbol: "OPUSDT",
101
+ name: "Optimism",
102
+ pinyin: "OP"
103
+ },
104
+ {
105
+ symbol: "ATOMUSDT",
106
+ name: "Cosmos",
107
+ pinyin: "ATOM"
108
+ },
109
+ {
110
+ symbol: "XLMUSDT",
111
+ name: "恒星币",
112
+ pinyin: "XLM"
113
+ },
114
+ {
115
+ symbol: "HBARUSDT",
116
+ name: "Hedera",
117
+ pinyin: "HBAR"
118
+ },
119
+ {
120
+ symbol: "INJUSDT",
121
+ name: "Injective",
122
+ pinyin: "INJ"
123
+ },
124
+ {
125
+ symbol: "SEIUSDT",
126
+ name: "Sei",
127
+ pinyin: "SEI"
128
+ },
129
+ {
130
+ symbol: "TIAUSDT",
131
+ name: "Celestia",
132
+ pinyin: "TIA"
133
+ },
134
+ {
135
+ symbol: "PEPEUSDT",
136
+ name: "Pepe",
137
+ pinyin: "PEPE"
138
+ },
139
+ {
140
+ symbol: "WIFUSDT",
141
+ name: "dogwifhat",
142
+ pinyin: "WIF"
143
+ },
144
+ {
145
+ symbol: "BONKUSDT",
146
+ name: "Bonk",
147
+ pinyin: "BONK"
148
+ },
149
+ {
150
+ symbol: "ORDIUSDT",
151
+ name: "ORDI",
152
+ pinyin: "ORDI"
153
+ },
154
+ {
155
+ symbol: "NOTUSDT",
156
+ name: "Notcoin",
157
+ pinyin: "NOT"
158
+ },
159
+ {
160
+ symbol: "UNIUSDT",
161
+ name: "Uniswap",
162
+ pinyin: "UNI"
163
+ },
164
+ {
165
+ symbol: "AAVEUSDT",
166
+ name: "Aave",
167
+ pinyin: "AAVE"
168
+ },
169
+ {
170
+ symbol: "RENDERUSDT",
171
+ name: "Render",
172
+ pinyin: "RENDER"
173
+ },
174
+ {
175
+ symbol: "FETUSDT",
176
+ name: "ASAI",
177
+ pinyin: "FET"
178
+ },
179
+ {
180
+ symbol: "WLDUSDT",
181
+ name: "世界币",
182
+ pinyin: "WLD,SHIJIEBI"
183
+ },
184
+ {
185
+ symbol: "JUPUSDT",
186
+ name: "Jupiter",
187
+ pinyin: "JUP"
188
+ },
189
+ {
190
+ symbol: "PYTHUSDT",
191
+ name: "Pyth",
192
+ pinyin: "PYTH"
193
+ },
194
+ {
195
+ symbol: "STXUSDT",
196
+ name: "Stacks",
197
+ pinyin: "STX"
198
+ },
199
+ {
200
+ symbol: "IMXUSDT",
201
+ name: "Immutable",
202
+ pinyin: "IMX"
203
+ },
204
+ {
205
+ symbol: "GALAUSDT",
206
+ name: "Gala",
207
+ pinyin: "GALA"
208
+ },
209
+ {
210
+ symbol: "SANDUSDT",
211
+ name: "The Sandbox",
212
+ pinyin: "SAND"
213
+ },
214
+ {
215
+ symbol: "MANAUSDT",
216
+ name: "Decentraland",
217
+ pinyin: "MANA"
218
+ },
219
+ {
220
+ symbol: "AXSUSDT",
221
+ name: "Axie Infinity",
222
+ pinyin: "AXS"
223
+ },
224
+ {
225
+ symbol: "CRVUSDT",
226
+ name: "Curve",
227
+ pinyin: "CRV"
228
+ },
229
+ {
230
+ symbol: "LDOUSDT",
231
+ name: "Lido DAO",
232
+ pinyin: "LDO"
233
+ },
234
+ {
235
+ symbol: "ETCUSDT",
236
+ name: "以太经典",
237
+ pinyin: "ETC"
238
+ },
239
+ {
240
+ symbol: "FILUSDT",
241
+ name: "Filecoin",
242
+ pinyin: "FIL"
243
+ },
244
+ {
245
+ symbol: "MATICUSDT",
246
+ name: "Polygon",
247
+ pinyin: "MATIC"
248
+ },
249
+ {
250
+ symbol: "ETHBTC",
251
+ name: "ETH/BTC",
252
+ pinyin: "ETHBTC"
253
+ }
254
+ ],
255
+ us: [
256
+ {
257
+ symbol: "AAPL",
258
+ name: "苹果",
259
+ pinyin: "AAPL,APPLE,PG,PINGGUO"
260
+ },
261
+ {
262
+ symbol: "MSFT",
263
+ name: "微软",
264
+ pinyin: "MSFT,MICROSOFT,WR,WEIRUAN"
265
+ },
266
+ {
267
+ symbol: "GOOGL",
268
+ name: "谷歌",
269
+ pinyin: "GOOGL,GOOGLE,GG,GUGE"
270
+ },
271
+ {
272
+ symbol: "AMZN",
273
+ name: "亚马逊",
274
+ pinyin: "AMZN,AMAZON,YMX,YAMAXUN"
275
+ },
276
+ {
277
+ symbol: "META",
278
+ name: "Meta",
279
+ pinyin: "META,FACEBOOK,FB"
280
+ },
281
+ {
282
+ symbol: "NVDA",
283
+ name: "英伟达",
284
+ pinyin: "NVDA,NVIDIA,YWD,YINGWEIDA"
285
+ },
286
+ {
287
+ symbol: "TSLA",
288
+ name: "特斯拉",
289
+ pinyin: "TSLA,TESLA,TSL,TESILA"
290
+ },
291
+ {
292
+ symbol: "AVGO",
293
+ name: "博通",
294
+ pinyin: "AVGO,BROADCOM,BT,BOTONG"
295
+ },
296
+ {
297
+ symbol: "TSM",
298
+ name: "台积电",
299
+ pinyin: "TSM,TSMC,TJD,TAIJIDIAN"
300
+ },
301
+ {
302
+ symbol: "LLY",
303
+ name: "礼来",
304
+ pinyin: "LLY,LILLY,LL,LILAI"
305
+ },
306
+ {
307
+ symbol: "JPM",
308
+ name: "摩根大通",
309
+ pinyin: "JPM,MGDT,MOGENDATONG"
310
+ },
311
+ {
312
+ symbol: "V",
313
+ name: "Visa",
314
+ pinyin: "V,VISA"
315
+ },
316
+ {
317
+ symbol: "MA",
318
+ name: "万事达",
319
+ pinyin: "MA,MASTERCARD,WSD,WANSHIDA"
320
+ },
321
+ {
322
+ symbol: "UNH",
323
+ name: "联合健康",
324
+ pinyin: "UNH,LHJK,LIANHEJIANKANG"
325
+ },
326
+ {
327
+ symbol: "JNJ",
328
+ name: "强生",
329
+ pinyin: "JNJ,QS,QIANGSHENG"
330
+ },
331
+ {
332
+ symbol: "WMT",
333
+ name: "沃尔玛",
334
+ pinyin: "WMT,WALMART,WEM,WOERMA"
335
+ },
336
+ {
337
+ symbol: "PG",
338
+ name: "宝洁",
339
+ pinyin: "PG,BJ,BAOJIE"
340
+ },
341
+ {
342
+ symbol: "HD",
343
+ name: "家得宝",
344
+ pinyin: "HD,HOMEDEPOT,JDB,JIADEBAO"
345
+ },
346
+ {
347
+ symbol: "ORCL",
348
+ name: "甲骨文",
349
+ pinyin: "ORCL,ORACLE,JGW,JIAGUWEN"
350
+ },
351
+ {
352
+ symbol: "CRM",
353
+ name: "赛富时",
354
+ pinyin: "CRM,SALESFORCE,SFS,SAIFUSHI"
355
+ },
356
+ {
357
+ symbol: "NFLX",
358
+ name: "奈飞",
359
+ pinyin: "NFLX,NETFLIX,NF,NAIFEI"
360
+ },
361
+ {
362
+ symbol: "AMD",
363
+ name: "超威半导体",
364
+ pinyin: "AMD,CWBDT,CHAOWEI"
365
+ },
366
+ {
367
+ symbol: "INTC",
368
+ name: "英特尔",
369
+ pinyin: "INTC,INTEL,YTE,YINGTEER"
370
+ },
371
+ {
372
+ symbol: "QCOM",
373
+ name: "高通",
374
+ pinyin: "QCOM,QUALCOMM,GT,GAOTONG"
375
+ },
376
+ {
377
+ symbol: "TXN",
378
+ name: "德州仪器",
379
+ pinyin: "TXN,DZYQ,DEZHOUYIQI"
380
+ },
381
+ {
382
+ symbol: "ADBE",
383
+ name: "Adobe",
384
+ pinyin: "ADBE,ADOBE"
385
+ },
386
+ {
387
+ symbol: "PYPL",
388
+ name: "PayPal",
389
+ pinyin: "PYPL,PAYPAL"
390
+ },
391
+ {
392
+ symbol: "DIS",
393
+ name: "迪士尼",
394
+ pinyin: "DIS,DISNEY,DSN,DISHINI"
395
+ },
396
+ {
397
+ symbol: "KO",
398
+ name: "可口可乐",
399
+ pinyin: "KO,COCACOLA,KKKL,KEKOUKELE"
400
+ },
401
+ {
402
+ symbol: "PEP",
403
+ name: "百事",
404
+ pinyin: "PEP,PEPSI,BS,BAISHI"
405
+ },
406
+ {
407
+ symbol: "MCD",
408
+ name: "麦当劳",
409
+ pinyin: "MCD,MCDONALDS,MDL,MAIDANGLAO"
410
+ },
411
+ {
412
+ symbol: "NKE",
413
+ name: "耐克",
414
+ pinyin: "NKE,NIKE,NK,NAIKE"
415
+ },
416
+ {
417
+ symbol: "BA",
418
+ name: "波音",
419
+ pinyin: "BA,BOEING,BY,BOYIN"
420
+ },
421
+ {
422
+ symbol: "CAT",
423
+ name: "卡特彼勒",
424
+ pinyin: "CAT,KTPL,KATEBILE"
425
+ },
426
+ {
427
+ symbol: "XOM",
428
+ name: "埃克森美孚",
429
+ pinyin: "XOM,EXXON,AKSMF"
430
+ },
431
+ {
432
+ symbol: "CVX",
433
+ name: "雪佛龙",
434
+ pinyin: "CVX,CHEVRON,XFL,XUEFOLONG"
435
+ },
436
+ {
437
+ symbol: "BAC",
438
+ name: "美国银行",
439
+ pinyin: "BAC,MGYH,MEIGUOYINHANG"
440
+ },
441
+ {
442
+ symbol: "C",
443
+ name: "花旗",
444
+ pinyin: "C,CITI,HQ,HUAQI"
445
+ },
446
+ {
447
+ symbol: "GS",
448
+ name: "高盛",
449
+ pinyin: "GS,GOLDMAN,GS,GAOSHENG"
450
+ },
451
+ {
452
+ symbol: "MS",
453
+ name: "摩根士丹利",
454
+ pinyin: "MS,MORGAN,MGSDL"
455
+ },
456
+ {
457
+ symbol: "BLK",
458
+ name: "贝莱德",
459
+ pinyin: "BLK,BLACKROCK,BLD,BEILAIDE"
460
+ },
461
+ {
462
+ symbol: "UBER",
463
+ name: "优步",
464
+ pinyin: "UBER,YB,YOUBU"
465
+ },
466
+ {
467
+ symbol: "ABNB",
468
+ name: "爱彼迎",
469
+ pinyin: "ABNB,AIRBNB,ABY,AIBIYING"
470
+ },
471
+ {
472
+ symbol: "COIN",
473
+ name: "Coinbase",
474
+ pinyin: "COIN,COINBASE"
475
+ },
476
+ {
477
+ symbol: "MSTR",
478
+ name: "微策略",
479
+ pinyin: "MSTR,MICROSTRATEGY,WCL,WEICELVE"
480
+ },
481
+ {
482
+ symbol: "PLTR",
483
+ name: "Palantir",
484
+ pinyin: "PLTR,PALANTIR"
485
+ },
486
+ {
487
+ symbol: "SMCI",
488
+ name: "超微电脑",
489
+ pinyin: "SMCI,CWDN,CHAOWEIDIANNAO"
490
+ },
491
+ {
492
+ symbol: "BABA",
493
+ name: "阿里巴巴",
494
+ pinyin: "BABA,ALIBABA,ALBB"
495
+ },
496
+ {
497
+ symbol: "GM",
498
+ name: "通用汽车",
499
+ pinyin: "GM,TYQC,TONGYONGQICHE"
500
+ },
501
+ {
502
+ symbol: "F",
503
+ name: "福特",
504
+ pinyin: "F,FORD,FT,FUTE"
505
+ }
506
+ ],
507
+ cn: [
508
+ {
509
+ symbol: "600519.SH",
510
+ name: "贵州茅台",
511
+ pinyin: "GZMT,MT,GUIZHOUMAOTAI,MAOTAI"
512
+ },
513
+ {
514
+ symbol: "000001.SZ",
515
+ name: "平安银行",
516
+ pinyin: "PAYH,PA,PINGANYINHANG,PINGAN"
517
+ },
518
+ {
519
+ symbol: "600036.SH",
520
+ name: "招商银行",
521
+ pinyin: "ZSYH,ZS,ZHAOSHANGYINHANG,ZHAOSHANG"
522
+ },
523
+ {
524
+ symbol: "000333.SZ",
525
+ name: "美的集团",
526
+ pinyin: "MDJT,MD,MEIDEJITUAN,MEIDE"
527
+ },
528
+ {
529
+ symbol: "000651.SZ",
530
+ name: "格力电器",
531
+ pinyin: "GLDQ,GL,GELIDIANQI,GELI"
532
+ },
533
+ {
534
+ symbol: "601318.SH",
535
+ name: "中国平安",
536
+ pinyin: "ZGPA,PA,ZHONGGUOPINGAN,PINGAN"
537
+ },
538
+ {
539
+ symbol: "600900.SH",
540
+ name: "长江电力",
541
+ pinyin: "CJDL,CHANGJIANGDIANLI"
542
+ },
543
+ {
544
+ symbol: "601398.SH",
545
+ name: "工商银行",
546
+ pinyin: "GSYH,GS,GONGSHANGYINHANG,GONGHANG"
547
+ },
548
+ {
549
+ symbol: "601988.SH",
550
+ name: "中国银行",
551
+ pinyin: "ZGYH,ZG,ZHONGGUOYINHANG,ZHONGHANG"
552
+ },
553
+ {
554
+ symbol: "601939.SH",
555
+ name: "建设银行",
556
+ pinyin: "JSYH,JS,JIANSHANG,JIANHANG"
557
+ },
558
+ {
559
+ symbol: "600030.SH",
560
+ name: "中信证券",
561
+ pinyin: "ZXZQ,ZX,ZHONGXINZHENGQUAN,ZHONGXIN"
562
+ },
563
+ {
564
+ symbol: "601899.SH",
565
+ name: "紫金矿业",
566
+ pinyin: "ZJKY,ZJ,ZIJINKUANGYE,ZIJIN"
567
+ },
568
+ {
569
+ symbol: "000002.SZ",
570
+ name: "万科A",
571
+ pinyin: "WKA,WK,WANKEA,WANKE"
572
+ },
573
+ {
574
+ symbol: "002594.SZ",
575
+ name: "比亚迪",
576
+ pinyin: "BYD,BIYADI"
577
+ },
578
+ {
579
+ symbol: "300750.SZ",
580
+ name: "宁德时代",
581
+ pinyin: "NDSD,ND,NINGDESHIDAI,NINGDE"
582
+ },
583
+ {
584
+ symbol: "002475.SZ",
585
+ name: "立讯精密",
586
+ pinyin: "LXJM,LX,LIXUNJINMI,LIXUN"
587
+ },
588
+ {
589
+ symbol: "603259.SH",
590
+ name: "药明康德",
591
+ pinyin: "YMKD,YM,YAOMINGKANGDE,YAOMING"
592
+ },
593
+ {
594
+ symbol: "600276.SH",
595
+ name: "恒瑞医药",
596
+ pinyin: "HRYY,HR,HENGRUIYIYAO,HENGRUI"
597
+ },
598
+ {
599
+ symbol: "000858.SZ",
600
+ name: "五粮液",
601
+ pinyin: "WLY,WULIANGYE"
602
+ },
603
+ {
604
+ symbol: "002415.SZ",
605
+ name: "海康威视",
606
+ pinyin: "HKWS,HK,HAIKANGWEISHI,HAIKANG"
607
+ },
608
+ {
609
+ symbol: "688981.SH",
610
+ name: "中芯国际",
611
+ pinyin: "ZXGJ,ZX,ZHONGXINGUOJI,ZHONGXIN"
612
+ },
613
+ {
614
+ symbol: "601012.SH",
615
+ name: "隆基绿能",
616
+ pinyin: "LJLN,LJ,LONGJILVNENG,LONGJI"
617
+ },
618
+ {
619
+ symbol: "600887.SH",
620
+ name: "伊利股份",
621
+ pinyin: "YLGF,YL,YILIGUFEN,YILI"
622
+ },
623
+ {
624
+ symbol: "601888.SH",
625
+ name: "中国中免",
626
+ pinyin: "ZGZM,ZM,ZHONGGUOZHONGMIAN,ZHONGMIAN"
627
+ },
628
+ {
629
+ symbol: "600028.SH",
630
+ name: "中国石化",
631
+ pinyin: "ZGSH,SH,ZHONGGUOSHIHUA,ZHONGSHIHUA"
632
+ },
633
+ {
634
+ symbol: "601857.SH",
635
+ name: "中国石油",
636
+ pinyin: "ZGSY,SY,ZHONGGUOSHIYOU,ZHONGSHIYOU"
637
+ },
638
+ {
639
+ symbol: "601668.SH",
640
+ name: "中国建筑",
641
+ pinyin: "ZGJZ,JZ,ZHONGGUOJIANZHU,ZHONGJIAN"
642
+ },
643
+ {
644
+ symbol: "601728.SH",
645
+ name: "中国电信",
646
+ pinyin: "ZGDX,DX,ZHONGGUODIANXIN,ZHONGDIANXIN"
647
+ },
648
+ {
649
+ symbol: "600941.SH",
650
+ name: "中国移动",
651
+ pinyin: "ZGYD,YD,ZHONGGUOYIDONG,ZHONGYIDONG"
652
+ },
653
+ {
654
+ symbol: "600050.SH",
655
+ name: "中国联通",
656
+ pinyin: "ZGLT,LT,ZHONGGUOLIANTONG,ZHONGLIANTONG"
657
+ },
658
+ {
659
+ symbol: "300059.SZ",
660
+ name: "东方财富",
661
+ pinyin: "DFCF,DC,DONGFANGCAIFU,DONGCAI"
662
+ },
663
+ {
664
+ symbol: "300124.SZ",
665
+ name: "汇川技术",
666
+ pinyin: "HCJS,HC,HUICHUANJISHU,HUICHUAN"
667
+ },
668
+ {
669
+ symbol: "002230.SZ",
670
+ name: "科大讯飞",
671
+ pinyin: "KDXF,XF,KEDAXUNFEI,XUNFEI"
672
+ },
673
+ {
674
+ symbol: "688111.SH",
675
+ name: "金山办公",
676
+ pinyin: "JSBG,WPS,JINSHANBANGONG,JINSHAN"
677
+ },
678
+ {
679
+ symbol: "688041.SH",
680
+ name: "海光信息",
681
+ pinyin: "HGXX,HG,HAIGUANGXINXI,HAIGUANG"
682
+ },
683
+ {
684
+ symbol: "002371.SZ",
685
+ name: "北方华创",
686
+ pinyin: "BFHC,HC,BEIFANGHUACHUANG,HUACHUANG"
687
+ },
688
+ {
689
+ symbol: "603501.SH",
690
+ name: "韦尔股份",
691
+ pinyin: "WEGF,WE,WEIERGUFEN,WEIER"
692
+ },
693
+ {
694
+ symbol: "600584.SH",
695
+ name: "长电科技",
696
+ pinyin: "CDKJ,CD,CHANGDIANKEJI,CHANGDIAN"
697
+ },
698
+ {
699
+ symbol: "601127.SH",
700
+ name: "赛力斯",
701
+ pinyin: "SLS,SAILISI"
702
+ },
703
+ {
704
+ symbol: "002714.SZ",
705
+ name: "牧原股份",
706
+ pinyin: "MYGF,MY,MUYUANGUFEN,MUYUAN"
707
+ },
708
+ {
709
+ symbol: "002745.SZ",
710
+ name: "木林森",
711
+ pinyin: "MLS,MULINSEN"
712
+ },
713
+ {
714
+ symbol: "002240.SZ",
715
+ name: "盛新锂能",
716
+ pinyin: "SXLN,SX,SHENGXINLINENG,SHENGXIN"
717
+ },
718
+ {
719
+ symbol: "002466.SZ",
720
+ name: "天齐锂业",
721
+ pinyin: "TQLY,TQ,TIANQILIYE,TIANQI"
722
+ },
723
+ {
724
+ symbol: "002460.SZ",
725
+ name: "赣锋锂业",
726
+ pinyin: "GFLY,GF,GANFENGLIYE,GANFENG"
727
+ },
728
+ {
729
+ symbol: "600438.SH",
730
+ name: "通威股份",
731
+ pinyin: "TWGF,TW,TONGWEIGUFEN,TONGWEI"
732
+ },
733
+ {
734
+ symbol: "300274.SZ",
735
+ name: "阳光电源",
736
+ pinyin: "YGDY,YG,YANGGUANGDIANYUAN,YANGGUANG"
737
+ },
738
+ {
739
+ symbol: "600000.SH",
740
+ name: "浦发银行",
741
+ pinyin: "PFYH,PF,PUFAYINHANG,PUFA"
742
+ },
743
+ {
744
+ symbol: "002142.SZ",
745
+ name: "宁波银行",
746
+ pinyin: "NBYH,NB,NINGBOYINHANG,NINGBO"
747
+ },
748
+ {
749
+ symbol: "601166.SH",
750
+ name: "兴业银行",
751
+ pinyin: "XYYH,XY,XINGYEYINHANG,XINGYE"
752
+ },
753
+ {
754
+ symbol: "601919.SH",
755
+ name: "中远海控",
756
+ pinyin: "ZYHK,ZY,ZHONGYUANHAIKONG,HAIKONG"
757
+ },
758
+ {
759
+ symbol: "000063.SZ",
760
+ name: "中兴通讯",
761
+ pinyin: "ZXTX,ZX,ZHONGXINGTONGXUN,ZHONGXIN"
762
+ },
763
+ {
764
+ symbol: "002241.SZ",
765
+ name: "歌尔股份",
766
+ pinyin: "GEGF,GE,GEERGUFEN,GEER"
767
+ },
768
+ {
769
+ symbol: "300433.SZ",
770
+ name: "蓝思科技",
771
+ pinyin: "LSKJ,LS,LANSIKEJI,LANSI"
772
+ },
773
+ {
774
+ symbol: "603986.SH",
775
+ name: "兆易创新",
776
+ pinyin: "ZYCX,ZY,ZHAOYICHUANGXIN,ZHAOYI"
777
+ },
778
+ {
779
+ symbol: "002156.SZ",
780
+ name: "通富微电",
781
+ pinyin: "TFMD,TF,TONGFUWEIDIAN,TONGFU"
782
+ },
783
+ {
784
+ symbol: "600460.SH",
785
+ name: "士兰微",
786
+ pinyin: "SLW,SL,SHILANWEI"
787
+ },
788
+ {
789
+ symbol: "300014.SZ",
790
+ name: "亿纬锂能",
791
+ pinyin: "YWLN,YW,YIWEILINENG,YIWEI"
792
+ },
793
+ {
794
+ symbol: "300015.SZ",
795
+ name: "爱尔眼科",
796
+ pinyin: "AEYK,AE,AERYANKE,AIER"
797
+ }
798
+ ],
799
+ hk: [
800
+ {
801
+ symbol: "00700.HK",
802
+ name: "腾讯控股",
803
+ pinyin: "TXKG,TX,TENGXUN,TENGXUNGUFEN"
804
+ },
805
+ {
806
+ symbol: "09988.HK",
807
+ name: "阿里巴巴-W",
808
+ pinyin: "ALBB,ALI,ALIBABA"
809
+ },
810
+ {
811
+ symbol: "03690.HK",
812
+ name: "美团-W",
813
+ pinyin: "MT,MEITUAN"
814
+ },
815
+ {
816
+ symbol: "09618.HK",
817
+ name: "京东集团-SW",
818
+ pinyin: "JDJT,JD,JINGDONG"
819
+ },
820
+ {
821
+ symbol: "09999.HK",
822
+ name: "网易-S",
823
+ pinyin: "WY,WANGYI,NTES"
824
+ },
825
+ {
826
+ symbol: "09888.HK",
827
+ name: "百度集团-SW",
828
+ pinyin: "BDJT,BD,BAIDU"
829
+ },
830
+ {
831
+ symbol: "01024.HK",
832
+ name: "快手-W",
833
+ pinyin: "KS,KUAISHOU"
834
+ },
835
+ {
836
+ symbol: "09626.HK",
837
+ name: "哔哩哔哩-W",
838
+ pinyin: "BLBL,BILI,BILIBILI"
839
+ },
840
+ {
841
+ symbol: "01810.HK",
842
+ name: "小米集团-W",
843
+ pinyin: "XMJT,XM,XIAOMI"
844
+ },
845
+ {
846
+ symbol: "02015.HK",
847
+ name: "理想汽车-W",
848
+ pinyin: "LXQC,LX,LIXIANG,LI"
849
+ },
850
+ {
851
+ symbol: "09868.HK",
852
+ name: "小鹏汽车-W",
853
+ pinyin: "XPQC,XP,XIAOPENG,XPEV"
854
+ },
855
+ {
856
+ symbol: "09866.HK",
857
+ name: "蔚来-SW",
858
+ pinyin: "WL,WEILAI,NIO"
859
+ },
860
+ {
861
+ symbol: "09863.HK",
862
+ name: "零跑汽车",
863
+ pinyin: "LPQC,LP,LINGPAO"
864
+ },
865
+ {
866
+ symbol: "01211.HK",
867
+ name: "比亚迪股份",
868
+ pinyin: "BYD,BIYADI"
869
+ },
870
+ {
871
+ symbol: "02333.HK",
872
+ name: "长城汽车",
873
+ pinyin: "CCQC,CC,CHANGCHENG"
874
+ },
875
+ {
876
+ symbol: "00175.HK",
877
+ name: "吉利汽车",
878
+ pinyin: "JLQC,JL,JILI"
879
+ },
880
+ {
881
+ symbol: "00981.HK",
882
+ name: "中芯国际",
883
+ pinyin: "ZXGJ,ZX,ZHONGXINGUOJI,SMIC"
884
+ },
885
+ {
886
+ symbol: "00939.HK",
887
+ name: "建设银行",
888
+ pinyin: "JSYH,JS,JIANSHANG"
889
+ },
890
+ {
891
+ symbol: "01398.HK",
892
+ name: "工商银行",
893
+ pinyin: "GSYH,GS,GONGSHANG"
894
+ },
895
+ {
896
+ symbol: "01299.HK",
897
+ name: "友邦保险",
898
+ pinyin: "YBBX,YB,YOUBANG"
899
+ },
900
+ {
901
+ symbol: "02318.HK",
902
+ name: "中国平安",
903
+ pinyin: "ZGPA,PA,PINGAN"
904
+ },
905
+ {
906
+ symbol: "00388.HK",
907
+ name: "香港交易所",
908
+ pinyin: "HKEX,XGJYS,GANGJIAOSUO"
909
+ },
910
+ {
911
+ symbol: "00005.HK",
912
+ name: "汇丰控股",
913
+ pinyin: "HSBC,HFKG,HUIFENG"
914
+ },
915
+ {
916
+ symbol: "00941.HK",
917
+ name: "中国移动",
918
+ pinyin: "ZGYD,YD,YIDONG"
919
+ },
920
+ {
921
+ symbol: "00857.HK",
922
+ name: "中国石油股份",
923
+ pinyin: "ZGSY,SY,SHIYOU"
924
+ },
925
+ {
926
+ symbol: "00883.HK",
927
+ name: "中国海洋石油",
928
+ pinyin: "ZGHY,CNOOC,HAIYOU"
929
+ },
930
+ {
931
+ symbol: "03888.HK",
932
+ name: "金山软件",
933
+ pinyin: "JSRJ,JS,JINSHAN"
934
+ },
935
+ {
936
+ symbol: "02628.HK",
937
+ name: "中国人寿",
938
+ pinyin: "ZGRS,RS,RENSHOU"
939
+ },
940
+ {
941
+ symbol: "00322.HK",
942
+ name: "康师傅控股",
943
+ pinyin: "KSF,KANGSHIFU"
944
+ },
945
+ {
946
+ symbol: "02319.HK",
947
+ name: "蒙牛乳业",
948
+ pinyin: "MNRY,MN,MENGNIU"
949
+ },
950
+ {
951
+ symbol: "01876.HK",
952
+ name: "百威亚太",
953
+ pinyin: "BWYT,BW,BAIWEI"
954
+ },
955
+ {
956
+ symbol: "00316.HK",
957
+ name: "东方海外国际",
958
+ pinyin: "DFHW,DONGFA"
959
+ },
960
+ {
961
+ symbol: "00669.HK",
962
+ name: "创科实业",
963
+ pinyin: "CKSY,CHUANGKE"
964
+ }
965
+ ]
966
+ };
967
+ const dynamicCatalogs = /* @__PURE__ */ new Map();
968
+ /** 注入某市场的动态标的全集(由桥端点拉取并入)。 */
969
+ function setDynamicCatalog(market, entries) {
970
+ const normalized = entries.map((e) => ({
971
+ symbol: e.symbol,
972
+ name: e.name ?? e.symbol,
973
+ pinyin: e.pinyin
974
+ }));
975
+ dynamicCatalogs.set(market, normalized);
976
+ }
977
+ /** 累加/增量更新某市场的动态标的名称(由实时行情查询或联想补齐触发)。 */
978
+ function updateDynamicCatalog(market, entries) {
979
+ const existing = dynamicCatalogs.get(market) ?? [];
980
+ const map = /* @__PURE__ */ new Map();
981
+ for (const e of existing) map.set(e.symbol.toUpperCase(), e);
982
+ for (const e of entries) {
983
+ if (!e.symbol || !e.name) continue;
984
+ const sym = e.symbol.toUpperCase();
985
+ if (e.name === e.symbol || /\(A股\)|\(港股\)/.test(e.name)) continue;
986
+ const old = map.get(sym);
987
+ map.set(sym, {
988
+ symbol: e.symbol,
989
+ name: e.name,
990
+ pinyin: e.pinyin ?? old?.pinyin
991
+ });
992
+ }
993
+ dynamicCatalogs.set(market, Array.from(map.values()));
994
+ }
995
+ /** 获取静态快照 ∪ 动态全集融合后的标的列表(静态优先保留中文名,动态补充新标的)。 */
996
+ function getMergedCatalog(market) {
997
+ const staticList = SYMBOL_CATALOG[market] ?? [];
998
+ const dynamicList = dynamicCatalogs.get(market) ?? [];
999
+ if (dynamicList.length === 0) return staticList;
1000
+ const seen = /* @__PURE__ */ new Set();
1001
+ const merged = [];
1002
+ for (const entry of staticList) {
1003
+ seen.add(entry.symbol.toUpperCase());
1004
+ merged.push(entry);
1005
+ }
1006
+ for (const entry of dynamicList) {
1007
+ const sym = entry.symbol.toUpperCase();
1008
+ if (!seen.has(sym)) {
1009
+ seen.add(sym);
1010
+ merged.push(entry);
1011
+ }
1012
+ }
1013
+ return merged;
1014
+ }
1015
+ /**
1016
+ * 联想搜索:静态 ∪ 动态全集融合,symbol 前缀/包含(大小写不敏感)或中文名包含,返回前 limit 条。
1017
+ * 空查询返回空(不打扰)。
1018
+ */
1019
+ function searchSymbols(market, query, limit = 8) {
1020
+ const q = query.trim().toUpperCase();
1021
+ if (q === "") return [];
1022
+ const catalog = getMergedCatalog(market);
1023
+ const scored = [];
1024
+ for (const entry of catalog) {
1025
+ const symbol = entry.symbol.toUpperCase();
1026
+ const name = entry.name ? entry.name.toUpperCase() : "";
1027
+ const pinyinList = entry.pinyin ? entry.pinyin.toUpperCase().split(",") : [];
1028
+ let score = -1;
1029
+ if (symbol === q || pinyinList.includes(q)) score = 0;
1030
+ else if (symbol.startsWith(q) || pinyinList.some((p) => p.startsWith(q))) score = 1;
1031
+ else if (name && name.includes(q)) score = 2;
1032
+ else if (symbol.includes(q) || pinyinList.some((p) => p.includes(q))) score = 3;
1033
+ if (score >= 0) scored.push({
1034
+ entry,
1035
+ score
1036
+ });
1037
+ }
1038
+ return scored.sort((a, b) => a.score - b.score).slice(0, limit).map((s) => s.entry);
1039
+ }
1040
+ function searchAllMarkets(query, limit = 8) {
1041
+ const q = query.trim().toUpperCase();
1042
+ if (q === "") return [];
1043
+ const markets = [
1044
+ "crypto",
1045
+ "us",
1046
+ "cn",
1047
+ "hk"
1048
+ ];
1049
+ const all = [];
1050
+ for (const market of markets) {
1051
+ const catalog = getMergedCatalog(market);
1052
+ for (const entry of catalog) {
1053
+ const symbol = entry.symbol.toUpperCase();
1054
+ const name = entry.name ? entry.name.toUpperCase() : "";
1055
+ const pinyinList = entry.pinyin ? entry.pinyin.toUpperCase().split(",") : [];
1056
+ let score = -1;
1057
+ if (symbol === q || pinyinList.includes(q)) score = 0;
1058
+ else if (symbol.startsWith(q) || pinyinList.some((p) => p.startsWith(q))) score = 1;
1059
+ else if (name && name.includes(q)) score = 2;
1060
+ else if (symbol.includes(q) || pinyinList.some((p) => p.includes(q))) score = 3;
1061
+ if (score >= 0) all.push({
1062
+ entry: {
1063
+ ...entry,
1064
+ market
1065
+ },
1066
+ score
1067
+ });
1068
+ }
1069
+ }
1070
+ return all.sort((a, b) => a.score - b.score).slice(0, limit).map((s) => s.entry);
1071
+ }
1072
+ //#endregion
1073
+ export { SYMBOL_CATALOG, getMergedCatalog, searchAllMarkets, searchSymbols, setDynamicCatalog, updateDynamicCatalog };