@sonarwatch/portfolio-core 0.0.3
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 +13 -0
- package/README.md +11 -0
- package/package.json +17 -0
- package/src/Address.d.ts +7 -0
- package/src/Address.js +10 -0
- package/src/Address.js.map +1 -0
- package/src/Cache.d.ts +17 -0
- package/src/Cache.js +82 -0
- package/src/Cache.js.map +1 -0
- package/src/Client.d.ts +7 -0
- package/src/Client.js +3 -0
- package/src/Client.js.map +1 -0
- package/src/Context.d.ts +6 -0
- package/src/Context.js +3 -0
- package/src/Context.js.map +1 -0
- package/src/Fetcher.d.ts +10 -0
- package/src/Fetcher.js +10 -0
- package/src/Fetcher.js.map +1 -0
- package/src/Job.d.ts +6 -0
- package/src/Job.js +3 -0
- package/src/Job.js.map +1 -0
- package/src/Network.d.ts +37 -0
- package/src/Network.js +12 -0
- package/src/Network.js.map +1 -0
- package/src/Platform.d.ts +10 -0
- package/src/Platform.js +3 -0
- package/src/Platform.js.map +1 -0
- package/src/Portfolio.d.ts +116 -0
- package/src/Portfolio.js +15 -0
- package/src/Portfolio.js.map +1 -0
- package/src/Storage.d.ts +18 -0
- package/src/Storage.js +51 -0
- package/src/Storage.js.map +1 -0
- package/src/TokenList.d.ts +23 -0
- package/src/TokenList.js +4 -0
- package/src/TokenList.js.map +1 -0
- package/src/TokenPrice.d.ts +36 -0
- package/src/TokenPrice.js +70 -0
- package/src/TokenPrice.js.map +1 -0
- package/src/TokenPriceCache.d.ts +13 -0
- package/src/TokenPriceCache.js +125 -0
- package/src/TokenPriceCache.js.map +1 -0
- package/src/UsdValue.d.ts +1 -0
- package/src/UsdValue.js +3 -0
- package/src/UsdValue.js.map +1 -0
- package/src/Yield.d.ts +8 -0
- package/src/Yield.js +22 -0
- package/src/Yield.js.map +1 -0
- package/src/constants/addresses.d.ts +13 -0
- package/src/constants/addresses.js +17 -0
- package/src/constants/addresses.js.map +1 -0
- package/src/constants/index.d.ts +4 -0
- package/src/constants/index.js +10 -0
- package/src/constants/index.js.map +1 -0
- package/src/constants/networks.d.ts +8 -0
- package/src/constants/networks.js +119 -0
- package/src/constants/networks.js.map +1 -0
- package/src/constants/platforms.d.ts +5 -0
- package/src/constants/platforms.js +24 -0
- package/src/constants/platforms.js.map +1 -0
- package/src/errors/AdapterFetchError.d.ts +6 -0
- package/src/errors/AdapterFetchError.js +13 -0
- package/src/errors/AdapterFetchError.js.map +1 -0
- package/src/errors/AdapterFetchTimedOutError.d.ts +6 -0
- package/src/errors/AdapterFetchTimedOutError.js +13 -0
- package/src/errors/AdapterFetchTimedOutError.js.map +1 -0
- package/src/errors/AdapterRefreshError.d.ts +6 -0
- package/src/errors/AdapterRefreshError.js +13 -0
- package/src/errors/AdapterRefreshError.js.map +1 -0
- package/src/errors/AdapterRefreshTimedOutError.d.ts +6 -0
- package/src/errors/AdapterRefreshTimedOutError.js +13 -0
- package/src/errors/AdapterRefreshTimedOutError.js.map +1 -0
- package/src/errors/PortfolioError.d.ts +12 -0
- package/src/errors/PortfolioError.js +27 -0
- package/src/errors/PortfolioError.js.map +1 -0
- package/src/errors/index.d.ts +5 -0
- package/src/errors/index.js +9 -0
- package/src/errors/index.js.map +1 -0
- package/src/helpers.d.ts +1 -0
- package/src/helpers.js +8 -0
- package/src/helpers.js.map +1 -0
- package/src/index.d.ts +17 -0
- package/src/index.js +21 -0
- package/src/index.js.map +1 -0
- package/src/utils/addressValid.d.ts +11 -0
- package/src/utils/addressValid.js +76 -0
- package/src/utils/addressValid.js.map +1 -0
- package/src/utils/compareName.d.ts +1 -0
- package/src/utils/compareName.js +18 -0
- package/src/utils/compareName.js.map +1 -0
- package/src/utils/compareUsdValue.d.ts +2 -0
- package/src/utils/compareUsdValue.js +14 -0
- package/src/utils/compareUsdValue.js.map +1 -0
- package/src/utils/formatAddress.d.ts +6 -0
- package/src/utils/formatAddress.js +42 -0
- package/src/utils/formatAddress.js.map +1 -0
- package/src/utils/formatTokenAddress.d.ts +6 -0
- package/src/utils/formatTokenAddress.js +41 -0
- package/src/utils/formatTokenAddress.js.map +1 -0
- package/src/utils/formatTokenPrice.d.ts +2 -0
- package/src/utils/formatTokenPrice.js +13 -0
- package/src/utils/formatTokenPrice.js.map +1 -0
- package/src/utils/formatUniTokenInfo.d.ts +3 -0
- package/src/utils/formatUniTokenInfo.js +9 -0
- package/src/utils/formatUniTokenInfo.js.map +1 -0
- package/src/utils/getAssetsFromElement.d.ts +2 -0
- package/src/utils/getAssetsFromElement.js +23 -0
- package/src/utils/getAssetsFromElement.js.map +1 -0
- package/src/utils/getAssetsFromElements.d.ts +2 -0
- package/src/utils/getAssetsFromElements.js +9 -0
- package/src/utils/getAssetsFromElements.js.map +1 -0
- package/src/utils/getElementLendingValues.d.ts +8 -0
- package/src/utils/getElementLendingValues.js +33 -0
- package/src/utils/getElementLendingValues.js.map +1 -0
- package/src/utils/index.d.ts +13 -0
- package/src/utils/index.js +17 -0
- package/src/utils/index.js.map +1 -0
- package/src/utils/networkIdIncluded.d.ts +3 -0
- package/src/utils/networkIdIncluded.js +13 -0
- package/src/utils/networkIdIncluded.js.map +1 -0
- package/src/utils/sortPortfolioElement.d.ts +5 -0
- package/src/utils/sortPortfolioElement.js +46 -0
- package/src/utils/sortPortfolioElement.js.map +1 -0
- package/src/utils/sortPortfolioElements.d.ts +2 -0
- package/src/utils/sortPortfolioElements.js +12 -0
- package/src/utils/sortPortfolioElements.js.map +1 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.updateTokenPriceSources = exports.pushTokenPriceSource = exports.tokenPriceFromSources = void 0;
|
|
4
|
+
const helpers_1 = require("./helpers");
|
|
5
|
+
const SOURCE_TTL = 60 * 60 * 1000;
|
|
6
|
+
const MAX_N_SOURCES = 10;
|
|
7
|
+
const coingeckoSourceId = 'coingecko';
|
|
8
|
+
function tokenPriceFromSources(sources) {
|
|
9
|
+
const updatedSources = updateTokenPriceSources(sources);
|
|
10
|
+
if (!updatedSources || updatedSources.length === 0)
|
|
11
|
+
return undefined;
|
|
12
|
+
const latestSource = updatedSources.reduce((prev, current) => prev.timestamp > current.timestamp ? prev : current);
|
|
13
|
+
let price;
|
|
14
|
+
const coingeckoSource = updatedSources.find((source) => source.id === coingeckoSourceId);
|
|
15
|
+
if (coingeckoSource)
|
|
16
|
+
price = coingeckoSource.price;
|
|
17
|
+
else {
|
|
18
|
+
const [priceSum, weightSum] = updatedSources.reduce(([cPriceSum, cWeightSum], source) => [
|
|
19
|
+
cPriceSum + source.price * source.weight,
|
|
20
|
+
cWeightSum + source.weight,
|
|
21
|
+
], [0, 0]);
|
|
22
|
+
price = weightSum === 0 ? 0 : priceSum / weightSum;
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
address: latestSource.address,
|
|
26
|
+
networkId: latestSource.networkId,
|
|
27
|
+
isBase: latestSource.isBase,
|
|
28
|
+
decimals: latestSource.decimals,
|
|
29
|
+
price,
|
|
30
|
+
underlyings: latestSource.underlyings,
|
|
31
|
+
timestamp: Date.now(),
|
|
32
|
+
sources: updatedSources,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
exports.tokenPriceFromSources = tokenPriceFromSources;
|
|
36
|
+
function pushTokenPriceSource(sources, source) {
|
|
37
|
+
// Clone sources
|
|
38
|
+
const newSources = (0, helpers_1.deepClone)(sources);
|
|
39
|
+
// Push source
|
|
40
|
+
const index = newSources.findIndex((s) => s.id === source.id);
|
|
41
|
+
if (index === -1)
|
|
42
|
+
newSources.push(source);
|
|
43
|
+
else
|
|
44
|
+
newSources[index] = source;
|
|
45
|
+
return updateTokenPriceSources(newSources);
|
|
46
|
+
}
|
|
47
|
+
exports.pushTokenPriceSource = pushTokenPriceSource;
|
|
48
|
+
function updateTokenPriceSources(sources) {
|
|
49
|
+
if (sources.length === 0)
|
|
50
|
+
return undefined;
|
|
51
|
+
// Clone sources
|
|
52
|
+
let newSources = (0, helpers_1.deepClone)(sources);
|
|
53
|
+
// Remove too old sources
|
|
54
|
+
const tsThreshold = Date.now() - SOURCE_TTL;
|
|
55
|
+
newSources = newSources.filter((source) => source.timestamp > tsThreshold);
|
|
56
|
+
if (newSources.length === 0)
|
|
57
|
+
return undefined;
|
|
58
|
+
// Keep only MAX_N_SOURCES
|
|
59
|
+
newSources.sort((sourceA, sourceB) => {
|
|
60
|
+
if (sourceA.id === coingeckoSourceId)
|
|
61
|
+
return -1;
|
|
62
|
+
if (sourceB.id === coingeckoSourceId)
|
|
63
|
+
return 1;
|
|
64
|
+
return sourceB.weight - sourceA.weight;
|
|
65
|
+
});
|
|
66
|
+
newSources = newSources.slice(0, MAX_N_SOURCES);
|
|
67
|
+
return newSources;
|
|
68
|
+
}
|
|
69
|
+
exports.updateTokenPriceSources = updateTokenPriceSources;
|
|
70
|
+
//# sourceMappingURL=TokenPrice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenPrice.js","sourceRoot":"","sources":["../../../../packages/core/src/TokenPrice.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Driver } from 'unstorage';
|
|
2
|
+
import { NetworkIdType } from './Network';
|
|
3
|
+
import { TokenPrice, TokenPriceSource } from './TokenPrice';
|
|
4
|
+
export declare class TokenPriceCache {
|
|
5
|
+
private readonly cache;
|
|
6
|
+
constructor(driver: Driver);
|
|
7
|
+
has(address: string, networkId: NetworkIdType): Promise<boolean>;
|
|
8
|
+
get(address: string, networkId: NetworkIdType): Promise<TokenPrice | undefined>;
|
|
9
|
+
refresh(address: string, networkId: NetworkIdType): Promise<void>;
|
|
10
|
+
refreshAll(networkId: NetworkIdType): Promise<void>;
|
|
11
|
+
set(source: TokenPriceSource): Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
export declare function getTokenPriceCache(): TokenPriceCache;
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getTokenPriceCache = exports.TokenPriceCache = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const fs_1 = tslib_1.__importDefault(require("unstorage/drivers/fs"));
|
|
6
|
+
const mongodb_1 = tslib_1.__importDefault(require("unstorage/drivers/mongodb"));
|
|
7
|
+
const redis_1 = tslib_1.__importDefault(require("unstorage/drivers/redis"));
|
|
8
|
+
const Cache_1 = require("./Cache");
|
|
9
|
+
const TokenPrice_1 = require("./TokenPrice");
|
|
10
|
+
const TOKEN_PRICE_TIMEOUT = 60 * 1000;
|
|
11
|
+
const TOKEN_PRICE_PREFIX = 'tokenprice';
|
|
12
|
+
class TokenPriceCache {
|
|
13
|
+
constructor(driver) {
|
|
14
|
+
this.cache = new Cache_1.Cache(driver);
|
|
15
|
+
}
|
|
16
|
+
has(address, networkId) {
|
|
17
|
+
return this.cache.has(address, { prefix: TOKEN_PRICE_PREFIX, networkId });
|
|
18
|
+
}
|
|
19
|
+
get(address, networkId) {
|
|
20
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
21
|
+
const tokenPrice = yield this.cache.get(address, {
|
|
22
|
+
prefix: TOKEN_PRICE_PREFIX,
|
|
23
|
+
networkId,
|
|
24
|
+
});
|
|
25
|
+
// Refresh tokenPrice is old
|
|
26
|
+
if (tokenPrice && Date.now() - TOKEN_PRICE_TIMEOUT > tokenPrice.timestamp)
|
|
27
|
+
this.refresh(address, networkId);
|
|
28
|
+
return tokenPrice;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
refresh(address, networkId) {
|
|
32
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
const cachedTokenPrice = yield this.cache.get(address, {
|
|
34
|
+
prefix: TOKEN_PRICE_PREFIX,
|
|
35
|
+
networkId,
|
|
36
|
+
});
|
|
37
|
+
if (!cachedTokenPrice)
|
|
38
|
+
return;
|
|
39
|
+
const newTokenPrice = (0, TokenPrice_1.tokenPriceFromSources)(cachedTokenPrice.sources);
|
|
40
|
+
if (!newTokenPrice) {
|
|
41
|
+
yield this.cache.remove(address, {
|
|
42
|
+
prefix: TOKEN_PRICE_PREFIX,
|
|
43
|
+
networkId,
|
|
44
|
+
});
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
yield this.cache.set(newTokenPrice.address, newTokenPrice, {
|
|
48
|
+
prefix: TOKEN_PRICE_PREFIX,
|
|
49
|
+
networkId: newTokenPrice.networkId,
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
refreshAll(networkId) {
|
|
54
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
55
|
+
const addresses = yield this.cache.keys({
|
|
56
|
+
prefix: TOKEN_PRICE_PREFIX,
|
|
57
|
+
networkId,
|
|
58
|
+
});
|
|
59
|
+
for (let i = 0; i < addresses.length; i += 1) {
|
|
60
|
+
const address = addresses[i];
|
|
61
|
+
yield this.refresh(address, networkId);
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
set(source) {
|
|
66
|
+
return tslib_1.__awaiter(this, void 0, void 0, function* () {
|
|
67
|
+
const cachedTokenPrice = yield this.cache.get(source.address, {
|
|
68
|
+
prefix: TOKEN_PRICE_PREFIX,
|
|
69
|
+
networkId: source.networkId,
|
|
70
|
+
});
|
|
71
|
+
const cachedSources = (cachedTokenPrice === null || cachedTokenPrice === void 0 ? void 0 : cachedTokenPrice.sources) || [];
|
|
72
|
+
const newSources = (0, TokenPrice_1.pushTokenPriceSource)(cachedSources, source);
|
|
73
|
+
if (!newSources) {
|
|
74
|
+
yield this.cache.remove(source.address, {
|
|
75
|
+
prefix: TOKEN_PRICE_PREFIX,
|
|
76
|
+
networkId: source.networkId,
|
|
77
|
+
});
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
const newTokenPrice = (0, TokenPrice_1.tokenPriceFromSources)(newSources);
|
|
81
|
+
if (!newTokenPrice) {
|
|
82
|
+
yield this.cache.remove(source.address, {
|
|
83
|
+
prefix: TOKEN_PRICE_PREFIX,
|
|
84
|
+
networkId: source.networkId,
|
|
85
|
+
});
|
|
86
|
+
return;
|
|
87
|
+
}
|
|
88
|
+
yield this.cache.set(newTokenPrice.address, newTokenPrice, {
|
|
89
|
+
prefix: TOKEN_PRICE_PREFIX,
|
|
90
|
+
networkId: newTokenPrice.networkId,
|
|
91
|
+
});
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
exports.TokenPriceCache = TokenPriceCache;
|
|
96
|
+
function getDriver() {
|
|
97
|
+
switch (process.env['CACHE_DRIVER']) {
|
|
98
|
+
case 'filesystem':
|
|
99
|
+
return (0, fs_1.default)({
|
|
100
|
+
base: process.env['CACHE_FILESYSTEM_BASE']
|
|
101
|
+
? `${process.env['CACHE_FILESYSTEM_BASE']}/tokencache`
|
|
102
|
+
: './cache/tokencache',
|
|
103
|
+
});
|
|
104
|
+
case 'mongodb':
|
|
105
|
+
return (0, mongodb_1.default)({
|
|
106
|
+
connectionString: process.env['CACHE_MONGODB_CONNECTION'] ||
|
|
107
|
+
'mongodb://localhost:27017/',
|
|
108
|
+
databaseName: process.env['CACHE_MONGODB_DATABASE'] || 'portfolio',
|
|
109
|
+
collectionName: 'tokencache',
|
|
110
|
+
});
|
|
111
|
+
case 'redis':
|
|
112
|
+
return (0, redis_1.default)({
|
|
113
|
+
url: process.env['CACHE_REDIS_URL'] || '127.0.0.1:6379',
|
|
114
|
+
tls: process.env['CACHE_REDIS_TLS'] === 'true' ? {} : undefined,
|
|
115
|
+
base: 'tokencache',
|
|
116
|
+
});
|
|
117
|
+
default:
|
|
118
|
+
return (0, fs_1.default)({ base: './cache/tokencache' });
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function getTokenPriceCache() {
|
|
122
|
+
return new TokenPriceCache(getDriver());
|
|
123
|
+
}
|
|
124
|
+
exports.getTokenPriceCache = getTokenPriceCache;
|
|
125
|
+
//# sourceMappingURL=TokenPriceCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TokenPriceCache.js","sourceRoot":"","sources":["../../../../packages/core/src/TokenPriceCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type UsdValue = number | null;
|
package/src/UsdValue.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UsdValue.js","sourceRoot":"","sources":["../../../../packages/core/src/UsdValue.ts"],"names":[],"mappings":""}
|
package/src/Yield.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function aprToApy(apr: number, compoundFrequency?: number): number;
|
|
2
|
+
export declare function apyToApr(apy: number, compoundFrequency?: number): number;
|
|
3
|
+
export type Yield = {
|
|
4
|
+
apr: number;
|
|
5
|
+
apy: number;
|
|
6
|
+
};
|
|
7
|
+
export declare const createYieldFromApr: (apr: number) => Yield;
|
|
8
|
+
export declare const createYieldFromApy: (apy: number) => Yield;
|
package/src/Yield.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createYieldFromApy = exports.createYieldFromApr = exports.apyToApr = exports.aprToApy = void 0;
|
|
4
|
+
function aprToApy(apr, compoundFrequency = 365) {
|
|
5
|
+
return Math.pow((1 + apr / compoundFrequency), compoundFrequency) - 1;
|
|
6
|
+
}
|
|
7
|
+
exports.aprToApy = aprToApy;
|
|
8
|
+
function apyToApr(apy, compoundFrequency = 365) {
|
|
9
|
+
return (Math.pow((1 + apy), (1 / compoundFrequency)) - 1) * compoundFrequency;
|
|
10
|
+
}
|
|
11
|
+
exports.apyToApr = apyToApr;
|
|
12
|
+
const createYieldFromApr = (apr) => ({
|
|
13
|
+
apr,
|
|
14
|
+
apy: aprToApy(apr),
|
|
15
|
+
});
|
|
16
|
+
exports.createYieldFromApr = createYieldFromApr;
|
|
17
|
+
const createYieldFromApy = (apy) => ({
|
|
18
|
+
apr: apyToApr(apy),
|
|
19
|
+
apy,
|
|
20
|
+
});
|
|
21
|
+
exports.createYieldFromApy = createYieldFromApy;
|
|
22
|
+
//# sourceMappingURL=Yield.js.map
|
package/src/Yield.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Yield.js","sourceRoot":"","sources":["../../../../packages/core/src/Yield.ts"],"names":[],"mappings":";;;AAAA,SAAgB,QAAQ,CAAC,GAAW,EAAE,iBAAiB,GAAG,GAAG;IAC3D,OAAO,SAAA,CAAC,CAAC,GAAG,GAAG,GAAG,iBAAiB,CAAC,EAAI,iBAAiB,CAAA,GAAG,CAAC,CAAC;AAChE,CAAC;AAFD,4BAEC;AAED,SAAgB,QAAQ,CAAC,GAAW,EAAE,iBAAiB,GAAG,GAAG;IAC3D,OAAO,CAAC,SAAA,CAAC,CAAC,GAAG,GAAG,CAAC,EAAI,CAAC,CAAC,GAAG,iBAAiB,CAAC,CAAA,GAAG,CAAC,CAAC,GAAG,iBAAiB,CAAC;AACxE,CAAC;AAFD,4BAEC;AASM,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAS,EAAE,CAAC,CAAC;IACzD,GAAG;IACH,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC;CACnB,CAAC,CAAC;AAHU,QAAA,kBAAkB,sBAG5B;AAEI,MAAM,kBAAkB,GAAG,CAAC,GAAW,EAAS,EAAE,CAAC,CAAC;IACzD,GAAG,EAAE,QAAQ,CAAC,GAAG,CAAC;IAClB,GAAG;CACJ,CAAC,CAAC;AAHU,QAAA,kBAAkB,sBAG5B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const bitcoinNativeAddress = "bitcoin";
|
|
2
|
+
export declare const solanaNativeAddress = "11111111111111111111111111111111";
|
|
3
|
+
export declare const aptosNativeAddress = "0x1::aptos_coin::AptosCoin";
|
|
4
|
+
export declare const suiNativeAddress = "0x2::sui::SUI";
|
|
5
|
+
export declare const ethereumNativeAddress = "0x0000000000000000000000000000000000000000";
|
|
6
|
+
export declare const polygonNativeAddress = "0x0000000000000000000000000000000000001010";
|
|
7
|
+
export declare const avalancheNativeAddress = "0x0000000000000000000000000000000000000000";
|
|
8
|
+
export declare const optimismNativeAddress = "0x0000000000000000000000000000000000000000";
|
|
9
|
+
export declare const solanaNativeWrappedAddress = "So11111111111111111111111111111111111111112";
|
|
10
|
+
export declare const ethereumNativeWrappedAddress = "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2";
|
|
11
|
+
export declare const polygonNativeWrappedAddress = "0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270";
|
|
12
|
+
export declare const avalancheNativeWrappedAddress = "0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7";
|
|
13
|
+
export declare const optimismNativeWrappedAddress = "0x4200000000000000000000000000000000000006";
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.optimismNativeWrappedAddress = exports.avalancheNativeWrappedAddress = exports.polygonNativeWrappedAddress = exports.ethereumNativeWrappedAddress = exports.solanaNativeWrappedAddress = exports.optimismNativeAddress = exports.avalancheNativeAddress = exports.polygonNativeAddress = exports.ethereumNativeAddress = exports.suiNativeAddress = exports.aptosNativeAddress = exports.solanaNativeAddress = exports.bitcoinNativeAddress = void 0;
|
|
4
|
+
exports.bitcoinNativeAddress = 'bitcoin';
|
|
5
|
+
exports.solanaNativeAddress = '11111111111111111111111111111111';
|
|
6
|
+
exports.aptosNativeAddress = '0x1::aptos_coin::AptosCoin';
|
|
7
|
+
exports.suiNativeAddress = '0x2::sui::SUI';
|
|
8
|
+
exports.ethereumNativeAddress = '0x0000000000000000000000000000000000000000';
|
|
9
|
+
exports.polygonNativeAddress = '0x0000000000000000000000000000000000001010';
|
|
10
|
+
exports.avalancheNativeAddress = exports.ethereumNativeAddress;
|
|
11
|
+
exports.optimismNativeAddress = exports.ethereumNativeAddress;
|
|
12
|
+
exports.solanaNativeWrappedAddress = 'So11111111111111111111111111111111111111112';
|
|
13
|
+
exports.ethereumNativeWrappedAddress = '0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2';
|
|
14
|
+
exports.polygonNativeWrappedAddress = '0x0d500B1d8E8eF31E21C99d1Db9A6444d3ADf1270';
|
|
15
|
+
exports.avalancheNativeWrappedAddress = '0xB31f66AA3C1e785363F0875A1B74E27b85FD66c7';
|
|
16
|
+
exports.optimismNativeWrappedAddress = '0x4200000000000000000000000000000000000006';
|
|
17
|
+
//# sourceMappingURL=addresses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"addresses.js","sourceRoot":"","sources":["../../../../../packages/core/src/constants/addresses.ts"],"names":[],"mappings":";;;AAAa,QAAA,oBAAoB,GAAG,SAAS,CAAC;AACjC,QAAA,mBAAmB,GAAG,kCAAkC,CAAC;AACzD,QAAA,kBAAkB,GAAG,4BAA4B,CAAC;AAClD,QAAA,gBAAgB,GAAG,eAAe,CAAC;AACnC,QAAA,qBAAqB,GAAG,4CAA4C,CAAC;AACrE,QAAA,oBAAoB,GAAG,4CAA4C,CAAC;AACpE,QAAA,sBAAsB,GAAG,6BAAqB,CAAC;AAC/C,QAAA,qBAAqB,GAAG,6BAAqB,CAAC;AAE9C,QAAA,0BAA0B,GAAG,6CAA6C,CAAC;AAC3E,QAAA,4BAA4B,GAAG,4CAA4C,CAAC;AAC5E,QAAA,2BAA2B,GAAG,4CAA4C,CAAC;AAC3E,QAAA,6BAA6B,GAAG,4CAA4C,CAAC;AAC7E,QAAA,4BAA4B,GAAG,4CAA4C,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.platforms = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const _platforms = tslib_1.__importStar(require("./platforms"));
|
|
6
|
+
tslib_1.__exportStar(require("./addresses"), exports);
|
|
7
|
+
tslib_1.__exportStar(require("./networks"), exports);
|
|
8
|
+
tslib_1.__exportStar(require("./platforms"), exports);
|
|
9
|
+
exports.platforms = Object.values(_platforms);
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../packages/core/src/constants/index.ts"],"names":[],"mappings":";;;;AAAA,gEAA0C;AAE1C,sDAA4B;AAC5B,qDAA2B;AAC3B,sDAA4B;AAEf,QAAA,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Network, NetworkIdType } from '../Network';
|
|
2
|
+
export declare const bitcoinNetwork: Network;
|
|
3
|
+
export declare const ethereumNetwork: Network;
|
|
4
|
+
export declare const avalancheNetwork: Network;
|
|
5
|
+
export declare const solanaNetwork: Network;
|
|
6
|
+
export declare const aptosNetwork: Network;
|
|
7
|
+
export declare const suiNetwork: Network;
|
|
8
|
+
export declare const networks: Record<NetworkIdType, Network>;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.networks = exports.suiNetwork = exports.aptosNetwork = exports.solanaNetwork = exports.avalancheNetwork = exports.ethereumNetwork = exports.bitcoinNetwork = void 0;
|
|
4
|
+
const Address_1 = require("../Address");
|
|
5
|
+
const Network_1 = require("../Network");
|
|
6
|
+
const addresses_1 = require("./addresses");
|
|
7
|
+
exports.bitcoinNetwork = {
|
|
8
|
+
id: Network_1.NetworkId.bitcoin,
|
|
9
|
+
name: 'Bitcoin',
|
|
10
|
+
image: 'https://beta.sonar.watch/img/networks/bitcoin.png',
|
|
11
|
+
addressSystem: Address_1.AddressSystem.bitcoin,
|
|
12
|
+
chainId: 1,
|
|
13
|
+
native: {
|
|
14
|
+
address: addresses_1.bitcoinNativeAddress,
|
|
15
|
+
decimals: 8,
|
|
16
|
+
coingeckoId: 'bitcoin',
|
|
17
|
+
},
|
|
18
|
+
nativeWrapped: null,
|
|
19
|
+
isLive: true,
|
|
20
|
+
coingeckoPlatformId: 'bitcoin',
|
|
21
|
+
tokenListUrl: 'https://cdn.jsdelivr.net/npm/@sonarwatch/token-lists/build/sonarwatch.bitcoin.tokenlist.json',
|
|
22
|
+
};
|
|
23
|
+
exports.ethereumNetwork = {
|
|
24
|
+
id: Network_1.NetworkId.ethereum,
|
|
25
|
+
name: 'Ethereum',
|
|
26
|
+
image: 'https://beta.sonar.watch/img/networks/ethereum.png',
|
|
27
|
+
addressSystem: Address_1.AddressSystem.evm,
|
|
28
|
+
chainId: 1,
|
|
29
|
+
native: {
|
|
30
|
+
address: addresses_1.ethereumNativeAddress,
|
|
31
|
+
decimals: 18,
|
|
32
|
+
coingeckoId: 'ethereum',
|
|
33
|
+
},
|
|
34
|
+
nativeWrapped: {
|
|
35
|
+
address: addresses_1.ethereumNativeWrappedAddress,
|
|
36
|
+
decimals: 18,
|
|
37
|
+
coingeckoId: 'weth',
|
|
38
|
+
},
|
|
39
|
+
isLive: true,
|
|
40
|
+
coingeckoPlatformId: 'ethereum',
|
|
41
|
+
tokenListUrl: 'https://cdn.jsdelivr.net/npm/@sonarwatch/token-lists/build/sonarwatch.ethereum.tokenlist.json',
|
|
42
|
+
};
|
|
43
|
+
exports.avalancheNetwork = {
|
|
44
|
+
id: Network_1.NetworkId.avalanche,
|
|
45
|
+
name: 'Avalanche',
|
|
46
|
+
image: 'https://beta.sonar.watch/img/networks/avalanche.png',
|
|
47
|
+
addressSystem: Address_1.AddressSystem.evm,
|
|
48
|
+
chainId: 43114,
|
|
49
|
+
native: {
|
|
50
|
+
address: addresses_1.avalancheNativeAddress,
|
|
51
|
+
decimals: 18,
|
|
52
|
+
coingeckoId: 'avalanche-2',
|
|
53
|
+
},
|
|
54
|
+
nativeWrapped: {
|
|
55
|
+
address: addresses_1.avalancheNativeWrappedAddress,
|
|
56
|
+
decimals: 18,
|
|
57
|
+
coingeckoId: 'wrapped-avax',
|
|
58
|
+
},
|
|
59
|
+
isLive: true,
|
|
60
|
+
coingeckoPlatformId: 'avalanche',
|
|
61
|
+
tokenListUrl: 'https://cdn.jsdelivr.net/npm/@sonarwatch/token-lists/build/sonarwatch.avalanche.tokenlist.json',
|
|
62
|
+
};
|
|
63
|
+
exports.solanaNetwork = {
|
|
64
|
+
id: Network_1.NetworkId.solana,
|
|
65
|
+
name: 'Solana',
|
|
66
|
+
image: 'https://beta.sonar.watch/img/networks/solana.png',
|
|
67
|
+
addressSystem: Address_1.AddressSystem.solana,
|
|
68
|
+
chainId: 101,
|
|
69
|
+
native: {
|
|
70
|
+
address: addresses_1.solanaNativeAddress,
|
|
71
|
+
decimals: 9,
|
|
72
|
+
coingeckoId: 'solana',
|
|
73
|
+
},
|
|
74
|
+
nativeWrapped: null,
|
|
75
|
+
isLive: true,
|
|
76
|
+
coingeckoPlatformId: 'solana',
|
|
77
|
+
tokenListUrl: 'https://cdn.jsdelivr.net/npm/@sonarwatch/token-lists/build/sonarwatch.solana.tokenlist.json',
|
|
78
|
+
};
|
|
79
|
+
exports.aptosNetwork = {
|
|
80
|
+
id: Network_1.NetworkId.aptos,
|
|
81
|
+
name: 'Aptos',
|
|
82
|
+
image: 'https://beta.sonar.watch/img/networks/aptos.png',
|
|
83
|
+
addressSystem: Address_1.AddressSystem.move,
|
|
84
|
+
chainId: 1,
|
|
85
|
+
native: {
|
|
86
|
+
address: addresses_1.aptosNativeAddress,
|
|
87
|
+
decimals: 8,
|
|
88
|
+
coingeckoId: 'aptos',
|
|
89
|
+
},
|
|
90
|
+
nativeWrapped: null,
|
|
91
|
+
isLive: true,
|
|
92
|
+
coingeckoPlatformId: 'aptos',
|
|
93
|
+
tokenListUrl: 'https://cdn.jsdelivr.net/npm/@sonarwatch/token-lists/build/sonarwatch.aptos.tokenlist.json',
|
|
94
|
+
};
|
|
95
|
+
exports.suiNetwork = {
|
|
96
|
+
id: Network_1.NetworkId.sui,
|
|
97
|
+
name: 'Sui',
|
|
98
|
+
image: 'https://beta.sonar.watch/img/networks/sui.png',
|
|
99
|
+
addressSystem: Address_1.AddressSystem.move,
|
|
100
|
+
chainId: 1,
|
|
101
|
+
native: {
|
|
102
|
+
address: addresses_1.suiNativeAddress,
|
|
103
|
+
decimals: 9,
|
|
104
|
+
coingeckoId: 'sui',
|
|
105
|
+
},
|
|
106
|
+
nativeWrapped: null,
|
|
107
|
+
isLive: true,
|
|
108
|
+
coingeckoPlatformId: 'sui',
|
|
109
|
+
tokenListUrl: 'https://cdn.jsdelivr.net/npm/@sonarwatch/token-lists/build/sonarwatch.sui.tokenlist.json',
|
|
110
|
+
};
|
|
111
|
+
exports.networks = {
|
|
112
|
+
[Network_1.NetworkId.aptos]: exports.aptosNetwork,
|
|
113
|
+
[Network_1.NetworkId.avalanche]: exports.avalancheNetwork,
|
|
114
|
+
[Network_1.NetworkId.bitcoin]: exports.bitcoinNetwork,
|
|
115
|
+
[Network_1.NetworkId.ethereum]: exports.ethereumNetwork,
|
|
116
|
+
[Network_1.NetworkId.solana]: exports.solanaNetwork,
|
|
117
|
+
[Network_1.NetworkId.sui]: exports.suiNetwork,
|
|
118
|
+
};
|
|
119
|
+
//# sourceMappingURL=networks.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"networks.js","sourceRoot":"","sources":["../../../../../packages/core/src/constants/networks.ts"],"names":[],"mappings":";;;AAAA,wCAA2C;AAC3C,wCAA+D;AAC/D,2CASqB;AAER,QAAA,cAAc,GAAY;IACrC,EAAE,EAAE,mBAAS,CAAC,OAAO;IACrB,IAAI,EAAE,SAAS;IACf,KAAK,EAAE,mDAAmD;IAC1D,aAAa,EAAE,uBAAa,CAAC,OAAO;IACpC,OAAO,EAAE,CAAC;IACV,MAAM,EAAE;QACN,OAAO,EAAE,gCAAoB;QAC7B,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,SAAS;KACvB;IACD,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,IAAI;IACZ,mBAAmB,EAAE,SAAS;IAC9B,YAAY,EACV,8FAA8F;CACjG,CAAC;AACW,QAAA,eAAe,GAAY;IACtC,EAAE,EAAE,mBAAS,CAAC,QAAQ;IACtB,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,oDAAoD;IAC3D,aAAa,EAAE,uBAAa,CAAC,GAAG;IAChC,OAAO,EAAE,CAAC;IACV,MAAM,EAAE;QACN,OAAO,EAAE,iCAAqB;QAC9B,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,UAAU;KACxB;IACD,aAAa,EAAE;QACb,OAAO,EAAE,wCAA4B;QACrC,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,MAAM;KACpB;IACD,MAAM,EAAE,IAAI;IACZ,mBAAmB,EAAE,UAAU;IAC/B,YAAY,EACV,+FAA+F;CAClG,CAAC;AACW,QAAA,gBAAgB,GAAY;IACvC,EAAE,EAAE,mBAAS,CAAC,SAAS;IACvB,IAAI,EAAE,WAAW;IACjB,KAAK,EAAE,qDAAqD;IAC5D,aAAa,EAAE,uBAAa,CAAC,GAAG;IAChC,OAAO,EAAE,KAAK;IACd,MAAM,EAAE;QACN,OAAO,EAAE,kCAAsB;QAC/B,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,aAAa;KAC3B;IACD,aAAa,EAAE;QACb,OAAO,EAAE,yCAA6B;QACtC,QAAQ,EAAE,EAAE;QACZ,WAAW,EAAE,cAAc;KAC5B;IACD,MAAM,EAAE,IAAI;IACZ,mBAAmB,EAAE,WAAW;IAChC,YAAY,EACV,gGAAgG;CACnG,CAAC;AACW,QAAA,aAAa,GAAY;IACpC,EAAE,EAAE,mBAAS,CAAC,MAAM;IACpB,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,kDAAkD;IACzD,aAAa,EAAE,uBAAa,CAAC,MAAM;IACnC,OAAO,EAAE,GAAG;IACZ,MAAM,EAAE;QACN,OAAO,EAAE,+BAAmB;QAC5B,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,QAAQ;KACtB;IACD,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,IAAI;IACZ,mBAAmB,EAAE,QAAQ;IAC7B,YAAY,EACV,6FAA6F;CAChG,CAAC;AACW,QAAA,YAAY,GAAY;IACnC,EAAE,EAAE,mBAAS,CAAC,KAAK;IACnB,IAAI,EAAE,OAAO;IACb,KAAK,EAAE,iDAAiD;IACxD,aAAa,EAAE,uBAAa,CAAC,IAAI;IACjC,OAAO,EAAE,CAAC;IACV,MAAM,EAAE;QACN,OAAO,EAAE,8BAAkB;QAC3B,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,OAAO;KACrB;IACD,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,IAAI;IACZ,mBAAmB,EAAE,OAAO;IAC5B,YAAY,EACV,4FAA4F;CAC/F,CAAC;AACW,QAAA,UAAU,GAAY;IACjC,EAAE,EAAE,mBAAS,CAAC,GAAG;IACjB,IAAI,EAAE,KAAK;IACX,KAAK,EAAE,+CAA+C;IACtD,aAAa,EAAE,uBAAa,CAAC,IAAI;IACjC,OAAO,EAAE,CAAC;IACV,MAAM,EAAE;QACN,OAAO,EAAE,4BAAgB;QACzB,QAAQ,EAAE,CAAC;QACX,WAAW,EAAE,KAAK;KACnB;IACD,aAAa,EAAE,IAAI;IACnB,MAAM,EAAE,IAAI;IACZ,mBAAmB,EAAE,KAAK;IAC1B,YAAY,EACV,0FAA0F;CAC7F,CAAC;AAEW,QAAA,QAAQ,GAAmC;IACtD,CAAC,mBAAS,CAAC,KAAK,CAAC,EAAE,oBAAY;IAC/B,CAAC,mBAAS,CAAC,SAAS,CAAC,EAAE,wBAAgB;IACvC,CAAC,mBAAS,CAAC,OAAO,CAAC,EAAE,sBAAc;IACnC,CAAC,mBAAS,CAAC,QAAQ,CAAC,EAAE,uBAAe;IACrC,CAAC,mBAAS,CAAC,MAAM,CAAC,EAAE,qBAAa;IACjC,CAAC,mBAAS,CAAC,GAAG,CAAC,EAAE,kBAAU;CAC5B,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.wallettokensPlatform = exports.walletnftsPlatform = exports.aavePlatform = exports.marinadePlatform = void 0;
|
|
4
|
+
exports.marinadePlatform = {
|
|
5
|
+
id: 'marinade',
|
|
6
|
+
name: 'Marinade',
|
|
7
|
+
image: 'https://beta.sonar.watch/img/platforms/marinade.png',
|
|
8
|
+
};
|
|
9
|
+
exports.aavePlatform = {
|
|
10
|
+
id: 'aave',
|
|
11
|
+
name: 'AAVE',
|
|
12
|
+
image: 'https://beta.sonar.watch/img/platforms/aave.png',
|
|
13
|
+
};
|
|
14
|
+
exports.walletnftsPlatform = {
|
|
15
|
+
id: 'walletnfts',
|
|
16
|
+
name: 'NFTs',
|
|
17
|
+
image: 'https://beta.sonar.watch/img/platforms/walletnfts.png',
|
|
18
|
+
};
|
|
19
|
+
exports.wallettokensPlatform = {
|
|
20
|
+
id: 'wallettokens',
|
|
21
|
+
name: 'Tokens',
|
|
22
|
+
image: 'https://beta.sonar.watch/img/platforms/wallettokens.png',
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=platforms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platforms.js","sourceRoot":"","sources":["../../../../../packages/core/src/constants/platforms.ts"],"names":[],"mappings":";;;AAEa,QAAA,gBAAgB,GAAa;IACxC,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,UAAU;IAChB,KAAK,EAAE,qDAAqD;CAC7D,CAAC;AACW,QAAA,YAAY,GAAa;IACpC,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,iDAAiD;CACzD,CAAC;AACW,QAAA,kBAAkB,GAAa;IAC1C,EAAE,EAAE,YAAY;IAChB,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,uDAAuD;CAC/D,CAAC;AACW,QAAA,oBAAoB,GAAa;IAC5C,EAAE,EAAE,cAAc;IAClB,IAAI,EAAE,QAAQ;IACd,KAAK,EAAE,yDAAyD;CACjE,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AdapterFetchError = void 0;
|
|
4
|
+
const PortfolioError_1 = require("./PortfolioError");
|
|
5
|
+
class AdapterFetchError extends PortfolioError_1.PortfolioError {
|
|
6
|
+
constructor(adapterId, cause) {
|
|
7
|
+
super('Fetch error', 'adapter', adapterId, cause);
|
|
8
|
+
this.name = 'AdapterError';
|
|
9
|
+
this.adapterId = adapterId;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.AdapterFetchError = AdapterFetchError;
|
|
13
|
+
//# sourceMappingURL=AdapterFetchError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdapterFetchError.js","sourceRoot":"","sources":["../../../../../packages/core/src/errors/AdapterFetchError.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD,MAAa,iBAAkB,SAAQ,+BAAc;IAInD,YAAY,SAAiB,EAAE,KAAa;QAC1C,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAJlC,SAAI,GAAW,cAAc,CAAC;QAK9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AARD,8CAQC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AdapterFetchTimedOutError = void 0;
|
|
4
|
+
const PortfolioError_1 = require("./PortfolioError");
|
|
5
|
+
class AdapterFetchTimedOutError extends PortfolioError_1.PortfolioError {
|
|
6
|
+
constructor(adapterId, cause) {
|
|
7
|
+
super('Fetch timed out error', 'adapter', adapterId, cause);
|
|
8
|
+
this.name = 'AdapterError';
|
|
9
|
+
this.adapterId = adapterId;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.AdapterFetchTimedOutError = AdapterFetchTimedOutError;
|
|
13
|
+
//# sourceMappingURL=AdapterFetchTimedOutError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdapterFetchTimedOutError.js","sourceRoot":"","sources":["../../../../../packages/core/src/errors/AdapterFetchTimedOutError.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD,MAAa,yBAA0B,SAAQ,+BAAc;IAI3D,YAAY,SAAiB,EAAE,KAAa;QAC1C,KAAK,CAAC,uBAAuB,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAJ5C,SAAI,GAAW,cAAc,CAAC;QAK9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AARD,8DAQC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AdapterRefreshError = void 0;
|
|
4
|
+
const PortfolioError_1 = require("./PortfolioError");
|
|
5
|
+
class AdapterRefreshError extends PortfolioError_1.PortfolioError {
|
|
6
|
+
constructor(adapterId, cause) {
|
|
7
|
+
super('Refresh error', 'adapter', adapterId, cause);
|
|
8
|
+
this.name = 'AdapterError';
|
|
9
|
+
this.adapterId = adapterId;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.AdapterRefreshError = AdapterRefreshError;
|
|
13
|
+
//# sourceMappingURL=AdapterRefreshError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdapterRefreshError.js","sourceRoot":"","sources":["../../../../../packages/core/src/errors/AdapterRefreshError.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD,MAAa,mBAAoB,SAAQ,+BAAc;IAIrD,YAAY,SAAiB,EAAE,KAAa;QAC1C,KAAK,CAAC,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAJpC,SAAI,GAAW,cAAc,CAAC;QAK9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AARD,kDAQC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AdapterRefreshTimedOutError = void 0;
|
|
4
|
+
const PortfolioError_1 = require("./PortfolioError");
|
|
5
|
+
class AdapterRefreshTimedOutError extends PortfolioError_1.PortfolioError {
|
|
6
|
+
constructor(adapterId, cause) {
|
|
7
|
+
super('Refresh timed out error', 'adapter', adapterId, cause);
|
|
8
|
+
this.name = 'AdapterError';
|
|
9
|
+
this.adapterId = adapterId;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
exports.AdapterRefreshTimedOutError = AdapterRefreshTimedOutError;
|
|
13
|
+
//# sourceMappingURL=AdapterRefreshTimedOutError.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AdapterRefreshTimedOutError.js","sourceRoot":"","sources":["../../../../../packages/core/src/errors/AdapterRefreshTimedOutError.ts"],"names":[],"mappings":";;;AAAA,qDAAkD;AAElD,MAAa,2BAA4B,SAAQ,+BAAc;IAI7D,YAAY,SAAiB,EAAE,KAAa;QAC1C,KAAK,CAAC,yBAAyB,EAAE,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAJ9C,SAAI,GAAW,cAAc,CAAC;QAK9C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;CACF;AARD,kEAQC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare class PortfolioError extends Error {
|
|
2
|
+
readonly name: string;
|
|
3
|
+
readonly isPorfolioError = true;
|
|
4
|
+
readonly source: PorfolioErrorSource;
|
|
5
|
+
readonly sourceDetails?: string;
|
|
6
|
+
readonly cause?: Error;
|
|
7
|
+
constructor(message: string, source: PorfolioErrorSource, sourceDetails?: string, cause?: Error);
|
|
8
|
+
getCapitalizedSource(): string;
|
|
9
|
+
getFullSource(): string;
|
|
10
|
+
toString(): string;
|
|
11
|
+
}
|
|
12
|
+
export type PorfolioErrorSource = 'adapter' | 'manager';
|