@tasenor/common-plugins 1.9.126 → 1.9.128

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.
@@ -1,4 +1,4 @@
1
1
 
2
- > @tasenor/common-plugins@1.9.125 build /home/wigy/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
2
+ > @tasenor/common-plugins@1.9.127 build /home/wigy/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
3
3
  > rm -fr dist && tsc
4
4
 
@@ -1,8 +1,8 @@
1
1
 
2
- > @tasenor/common-plugins@1.9.125 ci /home/wigy/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
2
+ > @tasenor/common-plugins@1.9.127 ci /home/wigy/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
3
3
  > pnpm run lint
4
4
 
5
5
 
6
- > @tasenor/common-plugins@1.9.125 lint /home/wigy/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
6
+ > @tasenor/common-plugins@1.9.127 lint /home/wigy/tasenor-qa/tasenor-bookkeeper/packages/tasenor-common-plugins
7
7
  > eslint 'src/**/*.{ts,tsx}' 'data/**/*.mjs'
8
8
 
@@ -32,11 +32,23 @@ interface TickerInfo {
32
32
  * ...others done manually so far (need some source and conversion tool)...
33
33
  *
34
34
  * Note: there is useful tool to generate from CSV in `tasenor-bookkeeper/apps/cli/bin/convert-csv-to-map.mjs`.
35
+ *
36
+ * Data file is simply a mapping from ticker to its name. If the ticker has aliases, it can be expressed
37
+ * as an array like
38
+ * {
39
+ * ...
40
+ * "MAIN": ["Name of the main", "ALIAS1", "ALIAS2"]
41
+ * ...
42
+ * }
35
43
  */
36
44
  declare class TickerData extends DataPlugin {
37
45
  constructor();
38
46
  queryBackend<T>(dataSet: string, query: typeof ALL | string): Promise<undefined | T>;
39
47
  queryExchange(query: typeof ALL | string): Promise<undefined | ExchangeInfo | ExchangeInfo[]>;
48
+ /**
49
+ * Fill in aliases.
50
+ */
51
+ afterLoad<T>(fileName: string, data: Record<string, T>): Record<string, T>;
40
52
  /**
41
53
  * If the result is ambiquous, all results are returned.
42
54
  */
@@ -19,6 +19,14 @@ import { ALL, error } from '@tasenor/common';
19
19
  * ...others done manually so far (need some source and conversion tool)...
20
20
  *
21
21
  * Note: there is useful tool to generate from CSV in `tasenor-bookkeeper/apps/cli/bin/convert-csv-to-map.mjs`.
22
+ *
23
+ * Data file is simply a mapping from ticker to its name. If the ticker has aliases, it can be expressed
24
+ * as an array like
25
+ * {
26
+ * ...
27
+ * "MAIN": ["Name of the main", "ALIAS1", "ALIAS2"]
28
+ * ...
29
+ * }
22
30
  */
23
31
  class TickerData extends DataPlugin {
24
32
  // TODO: Currency name data.
@@ -127,6 +135,25 @@ class TickerData extends DataPlugin {
127
135
  }
128
136
  return undefined;
129
137
  }
138
+ /**
139
+ * Fill in aliases.
140
+ */
141
+ afterLoad(fileName, data) {
142
+ Object.keys(data).forEach(ticker => {
143
+ if (data[ticker] instanceof Array) {
144
+ for (const alias of data[ticker].splice(1)) {
145
+ if (data[`${alias}`] !== undefined) {
146
+ error(`${this.code}: Cannot re-use '${alias}' as an alias since it has already used as ${JSON.stringify(data[`${alias}`])}.`);
147
+ }
148
+ else {
149
+ data[`${alias}`] = data[ticker][0];
150
+ }
151
+ }
152
+ data[ticker] = data[ticker][0];
153
+ }
154
+ });
155
+ return data;
156
+ }
130
157
  /**
131
158
  * If the result is ambiquous, all results are returned.
132
159
  */
@@ -149,8 +176,6 @@ class TickerData extends DataPlugin {
149
176
  error(`${this.code}: Invalid type '${type}' when queried from exchange '${exchange}'.`);
150
177
  return undefined;
151
178
  }
152
- // TODO: Alias support. Perhaps post-load hook and if instead of the company name we have
153
- // ["Name of the company", "ALIAS1", "ALIAS2"] the aliases are taken from there.
154
179
  const tickers = this.loadCached(ex.file);
155
180
  if (tickers[ticker] === undefined) {
156
181
  return undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/TickerData/backend/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/TickerData/backend/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tasenor/common-plugins",
3
- "version": "1.9.126",
3
+ "version": "1.9.128",
4
4
  "description": "Shared common plugins of Tasenor project",
5
5
  "repository": "git@github.com:dataplugoy/tasenor-bookkeeper.git",
6
6
  "author": "Tommi Ronkainen <tommi.ronkainen@gmail.com>",
@@ -13,9 +13,9 @@
13
13
  "dayjs": "1.10.8",
14
14
  "sprintf-js": "^1.1.2",
15
15
  "tsx": "3.12.7",
16
- "@tasenor/common": "1.9.126",
17
- "@tasenor/common-ui": "1.9.125",
18
- "@tasenor/common-node": "1.9.126"
16
+ "@tasenor/common": "1.9.127",
17
+ "@tasenor/common-ui": "1.9.128",
18
+ "@tasenor/common-node": "1.9.127"
19
19
  },
20
20
  "devDependencies": {
21
21
  "@mui/icons-material": "^5.14.1",
@@ -31,8 +31,8 @@
31
31
  "react-i18next": "^13.0.2",
32
32
  "react-router-dom": "^6.14.1",
33
33
  "typescript": "^5.1.6",
34
- "eslint-config-tasenor": "0.0.0",
35
- "@tasenor/config": "1.9.126"
34
+ "@tasenor/config": "1.9.128",
35
+ "eslint-config-tasenor": "0.0.0"
36
36
  },
37
37
  "peerDependencies": {
38
38
  "@mui/icons-material": "^5.14.1",
@@ -2958,7 +2958,7 @@
2958
2958
  "SOCC": "SocialCoin",
2959
2959
  "SOIL": "SoilCoin",
2960
2960
  "SOJ": "Sojourn Coin",
2961
- "SOL": "Sola",
2961
+ "SOL": "Solana",
2962
2962
  "SOLE": "SoleCoin",
2963
2963
  "SOLID": "Solidified",
2964
2964
  "SONG": "Song Coin",
@@ -32,6 +32,7 @@
32
32
  "EVLI": "Evli Oyj",
33
33
  "EXL1V": "Exel Composites Oyj",
34
34
  "FIA1S": "Finnair Oyj",
35
+ "FONDIA": "Fondia Oyj",
35
36
  "FORTUM": "Fortum Oyj",
36
37
  "FSECURE": "F-Secure Oyj",
37
38
  "FSKRS": "Fiskars Oyj Abp",
@@ -35,6 +35,14 @@ interface TickerInfo {
35
35
  * ...others done manually so far (need some source and conversion tool)...
36
36
  *
37
37
  * Note: there is useful tool to generate from CSV in `tasenor-bookkeeper/apps/cli/bin/convert-csv-to-map.mjs`.
38
+ *
39
+ * Data file is simply a mapping from ticker to its name. If the ticker has aliases, it can be expressed
40
+ * as an array like
41
+ * {
42
+ * ...
43
+ * "MAIN": ["Name of the main", "ALIAS1", "ALIAS2"]
44
+ * ...
45
+ * }
38
46
  */
39
47
  class TickerData extends DataPlugin {
40
48
 
@@ -151,6 +159,26 @@ class TickerData extends DataPlugin {
151
159
  return undefined
152
160
  }
153
161
 
162
+ /**
163
+ * Fill in aliases.
164
+ */
165
+ afterLoad<T>(fileName: string, data: Record<string, T>): Record<string, T> {
166
+ Object.keys(data).forEach(ticker => {
167
+ if (data[ticker] instanceof Array) {
168
+ for (const alias of (data[ticker] as Array<unknown>).splice(1)) {
169
+ if (data[`${alias}`] !== undefined) {
170
+ error(`${this.code}: Cannot re-use '${alias}' as an alias since it has already used as ${JSON.stringify(data[`${alias}`])}.`)
171
+ } else {
172
+ data[`${alias}`] = data[ticker][0]
173
+ }
174
+ }
175
+ data[ticker] = data[ticker][0]
176
+ }
177
+ })
178
+
179
+ return data
180
+ }
181
+
154
182
  /**
155
183
  * If the result is ambiquous, all results are returned.
156
184
  */
@@ -175,8 +203,6 @@ class TickerData extends DataPlugin {
175
203
  error(`${this.code}: Invalid type '${type}' when queried from exchange '${exchange}'.`)
176
204
  return undefined
177
205
  }
178
- // TODO: Alias support. Perhaps post-load hook and if instead of the company name we have
179
- // ["Name of the company", "ALIAS1", "ALIAS2"] the aliases are taken from there.
180
206
  const tickers: Record<string, string> = this.loadCached(ex.file)
181
207
  if (tickers[ticker] === undefined) {
182
208
  return undefined
@@ -74,6 +74,7 @@
74
74
  "BRK.A": "Berkshire Hathaway Inc.",
75
75
  "BRK.B": "Berkshire Hathaway Inc.",
76
76
  "BRO": "Brown & Brown, Inc.",
77
+ "BRX": "Brixmor Property Group Inc.",
77
78
  "BSBR": "Banco Santander (Brasil) S.A.",
78
79
  "BSX": "Boston Scientific Corporation",
79
80
  "BTI": "British American Tobacco p.l.c.",
@@ -269,6 +270,7 @@
269
270
  "KR": "The Kroger Co.",
270
271
  "KVUE": "Kenvue Inc.",
271
272
  "L": "Loews Corporation",
273
+ "LADR": "Ladder Capital Corp",
272
274
  "LDOS": "Leidos Holdings, Inc.",
273
275
  "LEN.B": "Lennar Corporation",
274
276
  "LEN": "Lennar Corporation",
@@ -416,6 +418,7 @@
416
418
  "SQM": "Sociedad Química y Minera de Chile S.A.",
417
419
  "SRE": "Sempra",
418
420
  "STAG": "STAG Industrial, Inc.",
421
+ "STAR": "Istar Inc.",
419
422
  "STE": "STERIS plc",
420
423
  "STLA": "Stellantis N.V.",
421
424
  "STM": "ST Microelectronics",
@@ -467,6 +470,7 @@
467
470
  "UHAL": "U-Haul Holding Company",
468
471
  "UL": "Unilever PLC",
469
472
  "UMC": "United Microelectronics Corporation",
473
+ "UMH": "UMH Properties, Inc.",
470
474
  "UNH": "UnitedHealth Group Incorporated",
471
475
  "UNP": "Union Pacific Corporation",
472
476
  "UPS": "United Parcel Service, Inc.",