@sonarwatch/portfolio-core 0.16.107 → 0.16.111
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/CHANGELOG.md +51 -0
- package/package.json +1 -1
- package/src/TokenPrice.d.ts +7 -0
- package/src/TokenPrice.js +39 -42
- package/src/TokenPrice.js.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,57 @@
|
|
|
2
2
|
|
|
3
3
|
This file was generated using [@jscutlery/semver](https://github.com/jscutlery/semver).
|
|
4
4
|
|
|
5
|
+
## [0.16.111](https://github.com/sonarwatch/portfolio/compare/core-0.16.110...core-0.16.111) (2026-01-14)
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
### Features
|
|
9
|
+
|
|
10
|
+
* **plugins:** manifest order book ([55571b9](https://github.com/sonarwatch/portfolio/commit/55571b9041df5dedb404b1a0381e03ef84ea588c))
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
## [0.16.110](https://github.com/sonarwatch/portfolio/compare/core-0.16.109...core-0.16.110) (2026-01-06)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
## [0.16.109](https://github.com/sonarwatch/portfolio/compare/core-0.16.108...core-0.16.109) (2026-01-06)
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
## [0.16.108](https://github.com/sonarwatch/portfolio/compare/core-0.16.107...core-0.16.108) (2026-01-06)
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
### Bug Fixes
|
|
26
|
+
|
|
27
|
+
* **core:** dont use isProtocoleSource in getPriceInfoFromSources ([108e944](https://github.com/sonarwatch/portfolio/commit/108e944794b4a2f12a0cea48af0ec77760642c2f))
|
|
28
|
+
* **core:** prioritize first source directly in getPriceFromSources ([578ff9d](https://github.com/sonarwatch/portfolio/commit/578ff9d319c24ec9abe8c5e85aab30c760c1ca37))
|
|
29
|
+
* **plugins:** field is now addToMissingToken ([ac0ae37](https://github.com/sonarwatch/portfolio/commit/ac0ae37871edc1298fecc649a532d8e277c23eec))
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
### Features
|
|
33
|
+
|
|
34
|
+
* **core:** update TokenPrice comment for missing tokens ([1ba1265](https://github.com/sonarwatch/portfolio/commit/1ba126554aab4bbf6c4374612ce372e4d7b1e3d4))
|
|
35
|
+
* **plugins:** unify and prioritize token price sources with isProtocolSource flag ([3be53c7](https://github.com/sonarwatch/portfolio/commit/3be53c75943c837fc18da7cee05cd75f6502016a))
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
## [0.16.108](https://github.com/sonarwatch/portfolio/compare/core-0.16.107...core-0.16.108) (2026-01-06)
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
### Bug Fixes
|
|
43
|
+
|
|
44
|
+
* **core:** dont use isProtocoleSource in getPriceInfoFromSources ([108e944](https://github.com/sonarwatch/portfolio/commit/108e944794b4a2f12a0cea48af0ec77760642c2f))
|
|
45
|
+
* **core:** prioritize first source directly in getPriceFromSources ([578ff9d](https://github.com/sonarwatch/portfolio/commit/578ff9d319c24ec9abe8c5e85aab30c760c1ca37))
|
|
46
|
+
* **plugins:** field is now addToMissingToken ([ac0ae37](https://github.com/sonarwatch/portfolio/commit/ac0ae37871edc1298fecc649a532d8e277c23eec))
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
### Features
|
|
50
|
+
|
|
51
|
+
* **core:** update TokenPrice comment for missing tokens ([1ba1265](https://github.com/sonarwatch/portfolio/commit/1ba126554aab4bbf6c4374612ce372e4d7b1e3d4))
|
|
52
|
+
* **plugins:** unify and prioritize token price sources with isProtocolSource flag ([3be53c7](https://github.com/sonarwatch/portfolio/commit/3be53c75943c837fc18da7cee05cd75f6502016a))
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
5
56
|
## [0.16.107](https://github.com/sonarwatch/portfolio/compare/core-0.16.106...core-0.16.107) (2026-01-05)
|
|
6
57
|
|
|
7
58
|
|
package/package.json
CHANGED
package/src/TokenPrice.d.ts
CHANGED
|
@@ -18,6 +18,7 @@ export declare const coingeckoSourceId = "coingecko";
|
|
|
18
18
|
export declare const jupiterSourceId = "jupiter-datapi";
|
|
19
19
|
export declare const solvSourceId = "solv-tokens-pricing";
|
|
20
20
|
export declare const flashSourceId = "flash-pools";
|
|
21
|
+
export declare const manifestSourceId = "manifest-pools";
|
|
21
22
|
/**
|
|
22
23
|
* List of source ids to prioritise when computing the token price.
|
|
23
24
|
* The first id in the list has the highest priority.
|
|
@@ -48,6 +49,10 @@ export type TokenPriceSource = {
|
|
|
48
49
|
timestamp: number;
|
|
49
50
|
sourceRefs?: SourceRef[];
|
|
50
51
|
link?: string;
|
|
52
|
+
/**
|
|
53
|
+
* Token will be added to the missing tokens list, and price will be sent to datapi
|
|
54
|
+
*/
|
|
55
|
+
addToMissingToken?: boolean;
|
|
51
56
|
};
|
|
52
57
|
export type TokenPrice = {
|
|
53
58
|
address: string;
|
|
@@ -70,6 +75,7 @@ export declare function pushTokenPriceSource(sources: TokenPriceSource[], source
|
|
|
70
75
|
export declare function updateTokenPriceSources(sources: TokenPriceSource[]): TokenPriceSource[] | undefined;
|
|
71
76
|
export declare function getTokenPriceUnderlyingFromTokenPrice(tokenPrice: TokenPrice, amountPerLp: number): TokenPriceUnderlying;
|
|
72
77
|
export declare function getTokenPricesUnderlyingsFromTokensPrices(tokensPrices: TokenPrice[], amountsPerLp: number[]): TokenPriceUnderlying[];
|
|
78
|
+
export declare function getHighestPrioritisedSource(sources: TokenPriceSource[]): TokenPriceSource | undefined;
|
|
73
79
|
/**
|
|
74
80
|
* Get the price information from a list of sources.
|
|
75
81
|
* The price is determined by prioritising sources present in the prioritisedSourceIds list
|
|
@@ -79,4 +85,5 @@ export declare function getTokenPricesUnderlyingsFromTokensPrices(tokensPrices:
|
|
|
79
85
|
export declare function getPriceInfoFromSources(sources: TokenPriceSource[]): {
|
|
80
86
|
price: number;
|
|
81
87
|
priceChange24h?: number;
|
|
88
|
+
timestamp: number;
|
|
82
89
|
};
|
package/src/TokenPrice.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.getPriceInfoFromSources = exports.getTokenPricesUnderlyingsFromTokensPrices = exports.getTokenPriceUnderlyingFromTokenPrice = exports.updateTokenPriceSources = exports.pushTokenPriceSource = exports.tokenPriceFromSources = exports.tokenPriceSourceTtl = exports.prioritisedSourceIds = exports.flashSourceId = exports.solvSourceId = exports.jupiterSourceId = exports.coingeckoSourceId = exports.piggyBankSourceId = exports.xStakingSourceId = exports.sandglassSourceId = exports.usdcPlusSourceId = exports.rainSourceId = exports.xOrcaSourceId = exports.jupLendSourceId = exports.jitoSourceId = exports.fragmetricSourceId = exports.fragmetricApiSourceId = exports.exponentSourceId = exports.adrenaSourceId = exports.adrasteaSourceId = exports.hyloSourceId = void 0;
|
|
3
|
+
exports.getPriceInfoFromSources = exports.getHighestPrioritisedSource = exports.getTokenPricesUnderlyingsFromTokensPrices = exports.getTokenPriceUnderlyingFromTokenPrice = exports.updateTokenPriceSources = exports.pushTokenPriceSource = exports.tokenPriceFromSources = exports.tokenPriceSourceTtl = exports.prioritisedSourceIds = exports.manifestSourceId = exports.flashSourceId = exports.solvSourceId = exports.jupiterSourceId = exports.coingeckoSourceId = exports.piggyBankSourceId = exports.xStakingSourceId = exports.sandglassSourceId = exports.usdcPlusSourceId = exports.rainSourceId = exports.xOrcaSourceId = exports.jupLendSourceId = exports.jitoSourceId = exports.fragmetricSourceId = exports.fragmetricApiSourceId = exports.exponentSourceId = exports.adrenaSourceId = exports.adrasteaSourceId = exports.hyloSourceId = void 0;
|
|
4
4
|
const helpers_1 = require("./helpers");
|
|
5
5
|
const constants_1 = require("./constants");
|
|
6
6
|
exports.hyloSourceId = 'hylo-tokens-pricing';
|
|
@@ -21,6 +21,7 @@ exports.coingeckoSourceId = 'coingecko';
|
|
|
21
21
|
exports.jupiterSourceId = 'jupiter-datapi';
|
|
22
22
|
exports.solvSourceId = 'solv-tokens-pricing';
|
|
23
23
|
exports.flashSourceId = 'flash-pools';
|
|
24
|
+
exports.manifestSourceId = 'manifest-pools';
|
|
24
25
|
/**
|
|
25
26
|
* List of source ids to prioritise when computing the token price.
|
|
26
27
|
* The first id in the list has the highest priority.
|
|
@@ -42,8 +43,9 @@ exports.prioritisedSourceIds = [
|
|
|
42
43
|
exports.xStakingSourceId,
|
|
43
44
|
exports.piggyBankSourceId,
|
|
44
45
|
exports.flashSourceId,
|
|
45
|
-
exports.jupiterSourceId,
|
|
46
46
|
exports.solvSourceId,
|
|
47
|
+
exports.manifestSourceId,
|
|
48
|
+
exports.jupiterSourceId,
|
|
47
49
|
// Always leave coingeckoSourceId at the end to use it as fallback
|
|
48
50
|
exports.coingeckoSourceId,
|
|
49
51
|
];
|
|
@@ -69,7 +71,7 @@ function tokenPriceFromSources(sources) {
|
|
|
69
71
|
return current;
|
|
70
72
|
return prev;
|
|
71
73
|
});
|
|
72
|
-
const { price, priceChange24h } = getPriceInfoFromSources(updatedSources);
|
|
74
|
+
const { price, priceChange24h, timestamp } = getPriceInfoFromSources(updatedSources);
|
|
73
75
|
return {
|
|
74
76
|
address: displaySource.address,
|
|
75
77
|
networkId: displaySource.networkId,
|
|
@@ -81,9 +83,9 @@ function tokenPriceFromSources(sources) {
|
|
|
81
83
|
link: displaySource.link,
|
|
82
84
|
decimals: displaySource.decimals,
|
|
83
85
|
sourceRefs: displaySource.sourceRefs,
|
|
84
|
-
price
|
|
86
|
+
price,
|
|
85
87
|
priceChange24h,
|
|
86
|
-
timestamp
|
|
88
|
+
timestamp,
|
|
87
89
|
sources: updatedSources,
|
|
88
90
|
};
|
|
89
91
|
}
|
|
@@ -136,6 +138,29 @@ function getTokenPricesUnderlyingsFromTokensPrices(tokensPrices, amountsPerLp) {
|
|
|
136
138
|
}));
|
|
137
139
|
}
|
|
138
140
|
exports.getTokenPricesUnderlyingsFromTokensPrices = getTokenPricesUnderlyingsFromTokensPrices;
|
|
141
|
+
function getWeightedPriceFromSources(sources) {
|
|
142
|
+
const [priceSum, weightSum] = sources.reduce(([cPriceSum, cWeightSum], source) => [
|
|
143
|
+
cPriceSum + source.price * source.weight,
|
|
144
|
+
cWeightSum + source.weight,
|
|
145
|
+
], [0, 0]);
|
|
146
|
+
return weightSum === 0 ? 0 : priceSum / weightSum;
|
|
147
|
+
}
|
|
148
|
+
function getHighestPrioritisedSource(sources) {
|
|
149
|
+
for (const priorityId of exports.prioritisedSourceIds) {
|
|
150
|
+
const source = sources.find((s) => s.id === priorityId);
|
|
151
|
+
if (source)
|
|
152
|
+
return source;
|
|
153
|
+
}
|
|
154
|
+
return undefined;
|
|
155
|
+
}
|
|
156
|
+
exports.getHighestPrioritisedSource = getHighestPrioritisedSource;
|
|
157
|
+
function getOldestTimestamp(sources) {
|
|
158
|
+
if (sources.length === 0)
|
|
159
|
+
return Date.now();
|
|
160
|
+
return sources.reduce((oldest, source) => {
|
|
161
|
+
return source.timestamp < oldest ? source.timestamp : oldest;
|
|
162
|
+
}, Date.now());
|
|
163
|
+
}
|
|
139
164
|
/**
|
|
140
165
|
* Get the price information from a list of sources.
|
|
141
166
|
* The price is determined by prioritising sources present in the prioritisedSourceIds list
|
|
@@ -143,44 +168,16 @@ exports.getTokenPricesUnderlyingsFromTokensPrices = getTokenPricesUnderlyingsFro
|
|
|
143
168
|
* @sources : list of TokenPriceSources
|
|
144
169
|
*/
|
|
145
170
|
function getPriceInfoFromSources(sources) {
|
|
146
|
-
const
|
|
147
|
-
|
|
148
|
-
let priceChange24h;
|
|
149
|
-
sources.forEach((s) => {
|
|
150
|
-
if (exports.prioritisedSourceIds.includes(s.id)) {
|
|
151
|
-
prioritisedSources.push(s);
|
|
152
|
-
}
|
|
153
|
-
// Get jupiter price change 24h if available
|
|
154
|
-
if (s.id === exports.jupiterSourceId) {
|
|
155
|
-
priceChange24h = s.priceChange24h;
|
|
156
|
-
}
|
|
157
|
-
});
|
|
158
|
-
const [priceSum, weightSum] = sources.reduce(([cPriceSum, cWeightSum], source) => [
|
|
159
|
-
cPriceSum + source.price * source.weight,
|
|
160
|
-
cWeightSum + source.weight,
|
|
161
|
-
], [0, 0]);
|
|
162
|
-
price = weightSum === 0 ? 0 : priceSum / weightSum;
|
|
163
|
-
// If there is no high priority sources, return the weighted average of all sources price
|
|
164
|
-
if (!prioritisedSources)
|
|
165
|
-
return {
|
|
166
|
-
price,
|
|
167
|
-
priceChange24h,
|
|
168
|
-
};
|
|
169
|
-
// Else, find the highest priority source available and use its price
|
|
170
|
-
let highestPrioritySource;
|
|
171
|
-
let highestSourceIndex = Number.MAX_SAFE_INTEGER;
|
|
172
|
-
for (const prioritySource of prioritisedSources) {
|
|
173
|
-
const sourceIndex = exports.prioritisedSourceIds.indexOf(prioritySource.id);
|
|
174
|
-
if (sourceIndex !== -1 && sourceIndex < highestSourceIndex) {
|
|
175
|
-
highestPrioritySource = prioritySource;
|
|
176
|
-
highestSourceIndex = sourceIndex;
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
if (highestPrioritySource)
|
|
180
|
-
price = highestPrioritySource.price;
|
|
171
|
+
const firstPrioritisedSource = getHighestPrioritisedSource(sources);
|
|
172
|
+
const jupiterSource = sources.find((s) => s.id === exports.jupiterSourceId);
|
|
181
173
|
return {
|
|
182
|
-
price
|
|
183
|
-
|
|
174
|
+
price: firstPrioritisedSource
|
|
175
|
+
? firstPrioritisedSource.price
|
|
176
|
+
: getWeightedPriceFromSources(sources),
|
|
177
|
+
priceChange24h: jupiterSource ? jupiterSource.priceChange24h : undefined,
|
|
178
|
+
timestamp: firstPrioritisedSource
|
|
179
|
+
? firstPrioritisedSource.timestamp
|
|
180
|
+
: getOldestTimestamp(sources),
|
|
184
181
|
};
|
|
185
182
|
}
|
|
186
183
|
exports.getPriceInfoFromSources = getPriceInfoFromSources;
|
package/src/TokenPrice.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenPrice.js","sourceRoot":"","sources":["../../../../packages/core/src/TokenPrice.ts"],"names":[],"mappings":";;;AACA,uCAAsC;AACtC,2CAAqD;AAGxC,QAAA,YAAY,GAAG,qBAAqB,CAAC;AACrC,QAAA,gBAAgB,GAAG,sBAAsB,CAAC;AAC1C,QAAA,cAAc,GAAG,sBAAsB,CAAC;AACxC,QAAA,gBAAgB,GAAG,wBAAwB,CAAC;AAC5C,QAAA,qBAAqB,GAAG,wBAAwB,CAAC;AACjD,QAAA,kBAAkB,GAAG,iCAAiC,CAAC;AACvD,QAAA,YAAY,GAAG,qBAAqB,CAAC;AACrC,QAAA,eAAe,GAAG,yBAAyB,CAAC;AAC5C,QAAA,aAAa,GAAG,gBAAgB,CAAC;AACjC,QAAA,YAAY,GAAG,qBAAqB,CAAC;AACrC,QAAA,gBAAgB,GAAG,2BAA2B,CAAC;AAC/C,QAAA,iBAAiB,GAAG,2BAA2B,CAAC;AAChD,QAAA,gBAAgB,GAAG,mBAAmB,CAAC;AACvC,QAAA,iBAAiB,GAAG,oBAAoB,CAAC;AACzC,QAAA,iBAAiB,GAAG,WAAW,CAAC;AAChC,QAAA,eAAe,GAAG,gBAAgB,CAAC;AACnC,QAAA,YAAY,GAAG,qBAAqB,CAAC;AACrC,QAAA,aAAa,GAAG,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"TokenPrice.js","sourceRoot":"","sources":["../../../../packages/core/src/TokenPrice.ts"],"names":[],"mappings":"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"}
|