@fileverse-dev/formulajs 4.4.11-mod-22-patch-5 → 4.4.11-mod-23-patch-1
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/browser/formula.js +855 -204
- package/lib/browser/formula.min.js +2 -2
- package/lib/browser/formula.min.js.map +1 -1
- package/lib/cjs/index.cjs +331 -60
- package/lib/esm/crypto-constants.mjs +581 -19
- package/lib/esm/index.mjs +327 -61
- package/package.json +2 -1
- package/types/cjs/index.d.cts +26 -2
- package/types/esm/index.d.mts +26 -2
package/lib/esm/index.mjs
CHANGED
|
@@ -13099,13 +13099,20 @@ const ERROR_MESSAGES_FLAG = {
|
|
|
13099
13099
|
INVALID_API_KEY: '_INVALID_KEY',
|
|
13100
13100
|
RATE_LIMIT: '_RATE_LIMIT_REACHED',
|
|
13101
13101
|
DEFAULT: 'FETCH_ERROR',
|
|
13102
|
-
MISSING_KEY: '_MISSING'
|
|
13102
|
+
MISSING_KEY: '_MISSING',
|
|
13103
|
+
INVALID_CHAIN: '_INVALID_CHAIN',
|
|
13104
|
+
INVALID_TYPE: '_INVALID_TYPE',
|
|
13105
|
+
INVALID_ADDRESS: '_INVALID_ADDRESS',
|
|
13106
|
+
INVALID_PARAM: '_INVALID_PARAM'
|
|
13103
13107
|
};
|
|
13104
13108
|
|
|
13105
13109
|
const SERVICE_API_KEY = {
|
|
13106
13110
|
Etherscan: "ETHERSCAN_API_KEY",
|
|
13107
13111
|
Coingecko: "COINGECKO_API_KEY",
|
|
13108
13112
|
Safe: "SAFE_API_KEY",
|
|
13113
|
+
Basescan: "BASESCAN_API_KEY",
|
|
13114
|
+
Gnosisscan: "GNOSIS_API_KEY",
|
|
13115
|
+
Firefly: "FIRE_FLY_API_KEY"
|
|
13109
13116
|
};
|
|
13110
13117
|
|
|
13111
13118
|
const fromTimeStampToBlock = async (timestamp, chain, apiKey) => {
|
|
@@ -13118,6 +13125,131 @@ if(!timestamp || !chain || !apiKey) return
|
|
|
13118
13125
|
|
|
13119
13126
|
};
|
|
13120
13127
|
|
|
13128
|
+
async function handleScanRequest({
|
|
13129
|
+
scanKey,
|
|
13130
|
+
baseUrl,
|
|
13131
|
+
type,
|
|
13132
|
+
chain,
|
|
13133
|
+
address,
|
|
13134
|
+
startDate,
|
|
13135
|
+
endDate,
|
|
13136
|
+
}) {
|
|
13137
|
+
const API_KEY = window.localStorage.getItem(scanKey);
|
|
13138
|
+
if (!API_KEY) return `${scanKey}${ERROR_MESSAGES_FLAG.MISSING_KEY}`;
|
|
13139
|
+
if (API_KEY === 'xxxx') return `${scanKey}${ERROR_MESSAGES_FLAG.RATE_LIMIT}`;
|
|
13140
|
+
|
|
13141
|
+
const chainId = CHAIN_ID_MAP[chain?.toLowerCase()];
|
|
13142
|
+
if (!chainId) return `${scanKey}${ERROR_MESSAGES_FLAG.INVALID_CHAIN}`;
|
|
13143
|
+
|
|
13144
|
+
const ACTION_MAP = {
|
|
13145
|
+
'all-txns': 'txlist',
|
|
13146
|
+
'token-txns': 'tokentx',
|
|
13147
|
+
'nft-txns': 'tokennfttx',
|
|
13148
|
+
'gas': 'gastracker',
|
|
13149
|
+
};
|
|
13150
|
+
|
|
13151
|
+
const action = ACTION_MAP[type];
|
|
13152
|
+
if (!action) return `${scanKey}${ERROR_MESSAGES_FLAG.INVALID_TYPE}`;
|
|
13153
|
+
|
|
13154
|
+
let url = `${baseUrl}?chainid=${chainId}&module=account&action=${action}&apikey=${API_KEY}`;
|
|
13155
|
+
|
|
13156
|
+
if (['all-txns', 'token-txns', 'nft-txns'].includes(type)) {
|
|
13157
|
+
if (!address) return `${scanKey}${ERROR_MESSAGES_FLAG.INVALID_ADDRESS}`;
|
|
13158
|
+
url += `&address=${address}&startblock=0&endblock=99999999&sort=asc`;
|
|
13159
|
+
|
|
13160
|
+
if (!isNaN(startDate) && !isNaN(endDate)) {
|
|
13161
|
+
const [startBlock, endBlock] = await Promise.all([
|
|
13162
|
+
fromTimeStampToBlock(startDate, chain, API_KEY),
|
|
13163
|
+
fromTimeStampToBlock(endDate, chain, API_KEY),
|
|
13164
|
+
]);
|
|
13165
|
+
url += `&startblock=${startBlock}&endblock=${endBlock}`;
|
|
13166
|
+
}
|
|
13167
|
+
}
|
|
13168
|
+
|
|
13169
|
+
try {
|
|
13170
|
+
const res = await fetch(url);
|
|
13171
|
+
if (!res.ok) throw new Error(`HTTP error: ${res.status}`);
|
|
13172
|
+
const json = await res.json();
|
|
13173
|
+
|
|
13174
|
+
if (typeof json.result === 'string') {
|
|
13175
|
+
if (json.result.includes('Invalid API Key')) return `${scanKey}${ERROR_MESSAGES_FLAG.INVALID_API_KEY}`;
|
|
13176
|
+
if (json.result.includes('Max rate limit reached')) return `${scanKey}${ERROR_MESSAGES_FLAG.RATE_LIMIT}`;
|
|
13177
|
+
}
|
|
13178
|
+
|
|
13179
|
+
return json.result;
|
|
13180
|
+
} catch (err) {
|
|
13181
|
+
console.error(`[${scanKey}]`, err);
|
|
13182
|
+
return ERROR_MESSAGES_FLAG.DEFAULT;
|
|
13183
|
+
}
|
|
13184
|
+
}
|
|
13185
|
+
|
|
13186
|
+
async function FIREFLY(platform, contentType, identifier) {
|
|
13187
|
+
const API_KEY = window.localStorage.getItem(SERVICE_API_KEY.Firefly);
|
|
13188
|
+
if (!API_KEY) return `${SERVICE_API_KEY.Firefly}${ERROR_MESSAGES_FLAG.MISSING_KEY}`;
|
|
13189
|
+
|
|
13190
|
+
const baseUrl = "https://openapi.firefly.land/v1/fileverse/fetch";
|
|
13191
|
+
const headers = {
|
|
13192
|
+
"x-api-key": API_KEY,
|
|
13193
|
+
};
|
|
13194
|
+
|
|
13195
|
+
let query = "";
|
|
13196
|
+
let type = "";
|
|
13197
|
+
|
|
13198
|
+
// normalize input
|
|
13199
|
+
const normalizedId = identifier.trim().replace(/.*\/([^\/]+)$/, "$1"); // extract last part of URL if needed
|
|
13200
|
+
|
|
13201
|
+
if (platform === "farcaster") {
|
|
13202
|
+
if (contentType === "posts") {
|
|
13203
|
+
type = "farcasterid";
|
|
13204
|
+
query = normalizedId;
|
|
13205
|
+
} else if (contentType === "replies") {
|
|
13206
|
+
type = "farcasterpostid";
|
|
13207
|
+
query = normalizedId.startsWith("0x") ? normalizedId : Number(normalizedId).toString();
|
|
13208
|
+
} else {
|
|
13209
|
+
return `${SERVICE_API_KEY.Firefly}${ERROR_MESSAGES_FLAG.INVALID_TYPE}`;
|
|
13210
|
+
}
|
|
13211
|
+
} else if (platform === "lens") {
|
|
13212
|
+
if (contentType === "posts") {
|
|
13213
|
+
type = "lensid";
|
|
13214
|
+
query = normalizedId;
|
|
13215
|
+
} else if (contentType === "replies") {
|
|
13216
|
+
type = "lenspostid";
|
|
13217
|
+
query = normalizedId;
|
|
13218
|
+
} else {
|
|
13219
|
+
return `${SERVICE_API_KEY.Firefly}${ERROR_MESSAGES_FLAG.INVALID_TYPE}`;
|
|
13220
|
+
}
|
|
13221
|
+
} else {
|
|
13222
|
+
return `${SERVICE_API_KEY.Firefly}${ERROR_MESSAGES_FLAG.INVALID_PARAM}`;
|
|
13223
|
+
}
|
|
13224
|
+
|
|
13225
|
+
const url = new URL(baseUrl);
|
|
13226
|
+
url.searchParams.set("query", query);
|
|
13227
|
+
url.searchParams.set("type", type);
|
|
13228
|
+
url.searchParams.set("size", "10");
|
|
13229
|
+
url.searchParams.set("cursor", "0");
|
|
13230
|
+
|
|
13231
|
+
try {
|
|
13232
|
+
const res = await fetch(url.toString(), { headers });
|
|
13233
|
+
if (!res.ok) throw new Error(`HTTP ${res.status}`);
|
|
13234
|
+
const json = await res.json();
|
|
13235
|
+
const flattened = Array.isArray(json?.data)
|
|
13236
|
+
? json.data.map(item => ({
|
|
13237
|
+
id: item?.id || null,
|
|
13238
|
+
author: item?.author?.username || item?.author?.handle || "",
|
|
13239
|
+
text: item?.text || item?.metadata?.content?.content || "",
|
|
13240
|
+
createdAt: item?.createdAt || "",
|
|
13241
|
+
platform: platform,
|
|
13242
|
+
}))
|
|
13243
|
+
: [];
|
|
13244
|
+
|
|
13245
|
+
return flattened;
|
|
13246
|
+
} catch (err) {
|
|
13247
|
+
console.error("FIREFLY fetch error:", err);
|
|
13248
|
+
return ERROR_MESSAGES_FLAG.DEFAULT;
|
|
13249
|
+
}
|
|
13250
|
+
}
|
|
13251
|
+
|
|
13252
|
+
|
|
13121
13253
|
async function BLOCKSCOUT(address, type, chain, startTimestamp, endTimestamp, page, offset) {
|
|
13122
13254
|
if (!chain) {
|
|
13123
13255
|
chain = 'ethereum';
|
|
@@ -13187,38 +13319,146 @@ async function BLOCKSCOUT(address, type, chain, startTimestamp, endTimestamp, pa
|
|
|
13187
13319
|
}
|
|
13188
13320
|
}
|
|
13189
13321
|
|
|
13190
|
-
async function
|
|
13191
|
-
const
|
|
13192
|
-
|
|
13193
|
-
|
|
13322
|
+
async function BASESCAN(...args) {
|
|
13323
|
+
const [type, chain, address, startDate, endDate] = args;
|
|
13324
|
+
return handleScanRequest({
|
|
13325
|
+
scanKey: SERVICE_API_KEY.Basescan,
|
|
13326
|
+
baseUrl: 'https://api.basescan.org/api',
|
|
13327
|
+
type,
|
|
13328
|
+
chain,
|
|
13329
|
+
address,
|
|
13330
|
+
startDate,
|
|
13331
|
+
endDate,
|
|
13332
|
+
});
|
|
13333
|
+
}
|
|
13334
|
+
async function GNOSISSCAN(...args) {
|
|
13335
|
+
const [type, chain, address, startDate, endDate] = args;
|
|
13336
|
+
return handleScanRequest({
|
|
13337
|
+
scanKey: SERVICE_API_KEY.Gnosisscan,
|
|
13338
|
+
baseUrl: 'https://api.gnosisscan.io/api',
|
|
13339
|
+
type,
|
|
13340
|
+
chain,
|
|
13341
|
+
address,
|
|
13342
|
+
startDate,
|
|
13343
|
+
endDate,
|
|
13344
|
+
});
|
|
13345
|
+
}
|
|
13346
|
+
|
|
13347
|
+
async function NEYNAR(
|
|
13348
|
+
fid,
|
|
13349
|
+
viewerFid,
|
|
13350
|
+
sortType,
|
|
13351
|
+
limit,
|
|
13352
|
+
cursor
|
|
13353
|
+
) {
|
|
13354
|
+
const API_KEY = window.localStorage.getItem(SERVICE_API_KEY.Neynar);
|
|
13355
|
+
if (!API_KEY) return `${SERVICE_API_KEY.Neynar}${ERROR_MESSAGES_FLAG.MISSING_KEY}`;
|
|
13356
|
+
|
|
13357
|
+
|
|
13358
|
+
const url = new URL('https://api.neynar.com/v2/farcaster/followers');
|
|
13359
|
+
url.searchParams.set('fid', fid.toString());
|
|
13360
|
+
url.searchParams.set('sort_type', sortType);
|
|
13361
|
+
url.searchParams.set('limit', limit.toString());
|
|
13362
|
+
if (viewerFid !== null) url.searchParams.set('viewer_fid', viewerFid.toString());
|
|
13363
|
+
if (cursor) url.searchParams.set('cursor', cursor);
|
|
13364
|
+
|
|
13365
|
+
try {
|
|
13366
|
+
const response = await fetch(url.toString(), {
|
|
13367
|
+
headers: {
|
|
13368
|
+
'x-api-key': API_KEY,
|
|
13369
|
+
'x-neynar-experimental': 'false'
|
|
13370
|
+
}
|
|
13371
|
+
});
|
|
13372
|
+
if (!response.ok) throw new Error(`HTTP ${response.status}`);
|
|
13373
|
+
const json = await response.json();
|
|
13374
|
+
if (!json?.users?.length) return [];
|
|
13375
|
+
|
|
13376
|
+
return json.users.map(({ user }) => ({
|
|
13377
|
+
username: user.username,
|
|
13378
|
+
custody_address: user.custody_address,
|
|
13379
|
+
follower_count: user.follower_count,
|
|
13380
|
+
country: user.profile?.location?.address?.country || '',
|
|
13381
|
+
city: user.profile?.location?.address?.city || ''
|
|
13382
|
+
}));
|
|
13383
|
+
} catch (err) {
|
|
13384
|
+
console.error('NEYNAR_FETCH_FOLLOWERS error:', err);
|
|
13385
|
+
return ERROR_MESSAGES_FLAG.DEFAULT;
|
|
13194
13386
|
}
|
|
13195
|
-
|
|
13196
|
-
|
|
13197
|
-
|
|
13387
|
+
}
|
|
13388
|
+
async function GNOSIS({
|
|
13389
|
+
cardId,
|
|
13390
|
+
startDate,
|
|
13391
|
+
endDate,
|
|
13392
|
+
limit = 20,
|
|
13393
|
+
offset = 0,
|
|
13394
|
+
}) {
|
|
13395
|
+
const apiKeyKey = SERVICE_API_KEY.GnosisPay;
|
|
13396
|
+
const API_KEY = window.localStorage.getItem(apiKeyKey);
|
|
13397
|
+
if (!API_KEY) return `${apiKeyKey}${ERROR_MESSAGES_FLAG.MISSING_KEY}`;
|
|
13398
|
+
if (!cardId) return `${apiKeyKey}${ERROR_MESSAGES_FLAG.INVALID_PARAM}`;
|
|
13399
|
+
|
|
13400
|
+
const url = new URL(`https://api.gnosispay.com/cards/${cardId}/transactions`);
|
|
13401
|
+
url.searchParams.set('limit', limit.toString());
|
|
13402
|
+
url.searchParams.set('offset', offset.toString());
|
|
13403
|
+
|
|
13404
|
+
if (!isNaN(startDate)) {
|
|
13405
|
+
url.searchParams.set('startDate', new Date(startDate * 1000).toISOString());
|
|
13406
|
+
}
|
|
13407
|
+
|
|
13408
|
+
if (!isNaN(endDate)) {
|
|
13409
|
+
url.searchParams.set('endDate', new Date(endDate * 1000).toISOString());
|
|
13198
13410
|
}
|
|
13199
|
-
const url = `https://api.etherscan.io/v2/api?chainid=1&module=account&action=txlist&address=${address}&startblock=0&endblock=99999999&page=${page || 1}&offset=${offset || 10}&sort=asc&apikey=${API_KEY}`;
|
|
13200
13411
|
|
|
13201
13412
|
try {
|
|
13202
|
-
const
|
|
13203
|
-
|
|
13204
|
-
|
|
13205
|
-
|
|
13206
|
-
|
|
13207
|
-
|
|
13208
|
-
|
|
13209
|
-
}
|
|
13210
|
-
|
|
13211
|
-
|
|
13212
|
-
|
|
13213
|
-
|
|
13214
|
-
|
|
13215
|
-
|
|
13216
|
-
|
|
13217
|
-
|
|
13218
|
-
|
|
13413
|
+
const res = await fetch(url.toString(), {
|
|
13414
|
+
headers: {
|
|
13415
|
+
Authorization: `Bearer ${API_KEY}`,
|
|
13416
|
+
'Content-Type': 'application/json',
|
|
13417
|
+
},
|
|
13418
|
+
});
|
|
13419
|
+
|
|
13420
|
+
if (!res.ok) throw new Error(`HTTP error! Status: ${res.status}`);
|
|
13421
|
+
|
|
13422
|
+
const json = await res.json();
|
|
13423
|
+
|
|
13424
|
+
if (!Array.isArray(json)) return [];
|
|
13425
|
+
|
|
13426
|
+
return json.map(tx => ({
|
|
13427
|
+
createdAt: tx.createdAt,
|
|
13428
|
+
clearedAt: tx.clearedAt,
|
|
13429
|
+
country: tx.country,
|
|
13430
|
+
merchant: tx.merchant,
|
|
13431
|
+
billingAmount: tx.billingAmount,
|
|
13432
|
+
billingCurrency: tx.billingCurrency,
|
|
13433
|
+
transactionAmount: tx.transactionAmount,
|
|
13434
|
+
transactionCurrency: tx.transactionCurrency,
|
|
13435
|
+
transactionType: tx.transactionType,
|
|
13436
|
+
kind: tx.kind,
|
|
13437
|
+
status: tx.status || null,
|
|
13438
|
+
mcc: tx.mcc,
|
|
13439
|
+
}));
|
|
13440
|
+
} catch (err) {
|
|
13441
|
+
console.error('GNOSISPAY_CARD_TXNS error:', err);
|
|
13442
|
+
return ERROR_MESSAGES_FLAG.DEFAULT;
|
|
13219
13443
|
}
|
|
13220
13444
|
}
|
|
13221
13445
|
|
|
13446
|
+
|
|
13447
|
+
|
|
13448
|
+
async function ETHERSCAN(...args) {
|
|
13449
|
+
const [type, chain, address, startDate, endDate] = args;
|
|
13450
|
+
return handleScanRequest({
|
|
13451
|
+
scanKey: SERVICE_API_KEY.Etherscan,
|
|
13452
|
+
baseUrl: 'https://api.etherscan.io/v2/api',
|
|
13453
|
+
type,
|
|
13454
|
+
chain,
|
|
13455
|
+
address,
|
|
13456
|
+
startDate,
|
|
13457
|
+
endDate,
|
|
13458
|
+
});
|
|
13459
|
+
}
|
|
13460
|
+
|
|
13461
|
+
|
|
13222
13462
|
async function COINGECKO(token, vs_currencies) {
|
|
13223
13463
|
const API_KEY = window.localStorage.getItem(SERVICE_API_KEY.Coingecko);
|
|
13224
13464
|
const url = `https://api.coingecko.com/api/v3/simple/price?vs_currencies=${vs_currencies}&ids=${token}`;
|
|
@@ -13255,50 +13495,76 @@ async function COINGECKO(token, vs_currencies) {
|
|
|
13255
13495
|
*/
|
|
13256
13496
|
return [output];
|
|
13257
13497
|
} catch (error) {
|
|
13498
|
+
console.log(error);
|
|
13258
13499
|
return ERROR_MESSAGES_FLAG.DEFAULT
|
|
13259
13500
|
}
|
|
13260
13501
|
}
|
|
13261
13502
|
|
|
13262
|
-
async function EOA(
|
|
13263
|
-
const API_KEYS = {
|
|
13264
|
-
ethereum: window.localStorage.getItem(SERVICE_API_KEY.Etherscan),
|
|
13265
|
-
gnosis: window.localStorage.getItem(SERVICE_API_KEY.Gnosisscan),
|
|
13266
|
-
base: window.localStorage.getItem(SERVICE_API_KEY.Basescan),
|
|
13267
|
-
};
|
|
13268
|
-
const apiKey = API_KEYS[chain];
|
|
13269
|
-
const chainId = CHAIN_ID_MAP[chain];
|
|
13270
|
-
if (!apiKey || !chainId) return `${chain.toUpperCase()}_MISSING`;
|
|
13271
|
-
|
|
13272
|
-
let action = '';
|
|
13273
|
-
if (categories === 'txns') action = 'account.txlist';
|
|
13274
|
-
else { action = 'account.balance'; } let timeQuery = '';
|
|
13275
|
-
if (!isNaN(startTime) && !isNaN(endTime)) {
|
|
13276
|
-
const startBlock = await fromTimeStampToBlock(startTime, chain, apiKey);
|
|
13277
|
-
const endBlock = await fromTimeStampToBlock(endTime, chain, apiKey);
|
|
13278
|
-
timeQuery = `&startblock=${startBlock}&endblock=${endBlock}`;
|
|
13279
|
-
} else if (categories === 'balance') {
|
|
13280
|
-
timeQuery = `&tag=latest`;
|
|
13281
|
-
} else {
|
|
13282
|
-
throw new Error('Start and End Time is required for querying transaction list ')
|
|
13283
|
-
}
|
|
13284
|
-
const url = `https://api.etherscan.io/v2/api?module=${action.split('.')[0]}&action=${action.split('.')[1]}&address=${address}&sort=asc&chainid=${chainId}&apikey=${apiKey}${timeQuery}`;
|
|
13503
|
+
async function EOA(addresses, category, chains, startTime, endTime) {
|
|
13285
13504
|
try {
|
|
13286
|
-
const
|
|
13287
|
-
|
|
13288
|
-
|
|
13289
|
-
|
|
13290
|
-
|
|
13291
|
-
|
|
13292
|
-
if(
|
|
13293
|
-
|
|
13505
|
+
const ADDRESSES = addresses.split(',').map(a => a.trim());
|
|
13506
|
+
const CHAINS = typeof chains === 'string' ? chains.split(',').map(c => c.trim()) : chains;
|
|
13507
|
+
|
|
13508
|
+
const flatResults = [];
|
|
13509
|
+
const API_KEY = window.localStorage.getItem(SERVICE_API_KEY.Etherscan);
|
|
13510
|
+
|
|
13511
|
+
if (!API_KEY) return `${SERVICE_API_KEY.Etherscan}${ERROR_MESSAGES_FLAG.MISSING_KEY}`;
|
|
13512
|
+
|
|
13513
|
+
for (const chain of CHAINS) {
|
|
13514
|
+
const chainId = CHAIN_ID_MAP[chain];
|
|
13515
|
+
if (!chainId) throw new Error('Unsupported chain');
|
|
13516
|
+
|
|
13517
|
+
for (const address of ADDRESSES) {
|
|
13518
|
+
let action = category === 'txns' ? 'account.txlist' : 'account.balance';
|
|
13519
|
+
let timeQuery = '';
|
|
13520
|
+
|
|
13521
|
+
if (category === 'txns') {
|
|
13522
|
+
const startBlock = await fromTimeStampToBlock(startTime, chain, API_KEY);
|
|
13523
|
+
const endBlock = await fromTimeStampToBlock(endTime, chain, API_KEY);
|
|
13524
|
+
timeQuery = `&startblock=${startBlock}&endblock=${endBlock}`;
|
|
13525
|
+
} else {
|
|
13526
|
+
timeQuery = `&tag=latest`;
|
|
13527
|
+
}
|
|
13528
|
+
|
|
13529
|
+
const url = `https://api.etherscan.io/v2/api?module=${action.split('.')[0]}&action=${action.split('.')[1]}&address=${address}&sort=asc&chainid=${chainId}&apikey=${API_KEY}${timeQuery}`;
|
|
13530
|
+
|
|
13531
|
+
try {
|
|
13532
|
+
const response = await fetch(url);
|
|
13533
|
+
if (!response.ok) {
|
|
13534
|
+
return `HTTP_${response.status}`;
|
|
13535
|
+
}
|
|
13536
|
+
|
|
13537
|
+
const json = await response.json();
|
|
13538
|
+
|
|
13539
|
+
if (json.result?.includes?.('Invalid API Key')) {
|
|
13540
|
+
return `${SERVICE_API_KEY.Etherscan}${ERROR_MESSAGES_FLAG.INVALID_API_KEY}`;
|
|
13541
|
+
}
|
|
13542
|
+
|
|
13543
|
+
if (json.result?.includes?.('Max rate limit reached')) {
|
|
13544
|
+
return `${SERVICE_API_KEY.Etherscan}${ERROR_MESSAGES_FLAG.RATE_LIMIT}`;
|
|
13545
|
+
}
|
|
13546
|
+
|
|
13547
|
+
const entries = Array.isArray(json.result) ? json.result : [json.result];
|
|
13548
|
+
for (const entry of entries) {
|
|
13549
|
+
flatResults.push({ chain, address, ...entry });
|
|
13550
|
+
}
|
|
13551
|
+
|
|
13552
|
+
} catch (e) {
|
|
13553
|
+
return ERROR_MESSAGES_FLAG.DEFAULT;
|
|
13554
|
+
}
|
|
13555
|
+
}
|
|
13294
13556
|
}
|
|
13295
|
-
|
|
13296
|
-
|
|
13297
|
-
|
|
13557
|
+
|
|
13558
|
+
return flatResults;
|
|
13559
|
+
} catch (error) {
|
|
13560
|
+
console.log(error);
|
|
13298
13561
|
return ERROR_MESSAGES_FLAG.DEFAULT;
|
|
13299
13562
|
}
|
|
13300
13563
|
}
|
|
13301
13564
|
|
|
13565
|
+
|
|
13566
|
+
|
|
13567
|
+
|
|
13302
13568
|
async function FLVURL(token, vs_currencies) {
|
|
13303
13569
|
return new Promise((resolve) => {
|
|
13304
13570
|
setTimeout(() => {
|
|
@@ -13343,4 +13609,4 @@ async function SAFE(address, utility, chain, limit, offset) {
|
|
|
13343
13609
|
|
|
13344
13610
|
const utils = { errors, symbols, date };
|
|
13345
13611
|
|
|
13346
|
-
export { ABS, ACCRINT, ACOS, ACOSH, ACOT, ACOTH, AGGREGATE, AND, ARABIC, ASIN, ASINH, ATAN, ATAN2, ATANH, AVEDEV, AVERAGE, AVERAGEA, AVERAGEIF, AVERAGEIFS, BASE, BESSELI, BESSELJ, BESSELK, BESSELY, BETA, BETADIST, BETAINV, BIN2DEC, BIN2HEX, BIN2OCT, BINOM, BINOMDIST, BITAND, BITLSHIFT, BITOR, BITRSHIFT, BITXOR, BLOCKSCOUT, CEILING, CEILINGMATH, CEILINGPRECISE, CHAR, CHIDIST, CHIDISTRT, CHIINV, CHIINVRT, CHISQ, CHITEST, CHOOSE, CLEAN, CODE, COINGECKO, COLUMN, COLUMNS, COMBIN, COMBINA, COMPLEX, CONCAT, CONCATENATE, CONFIDENCE, CONVERT, CORREL, COS, COSH, COT, COTH, COUNT, COUNTA, COUNTBLANK, COUNTIF, COUNTIFS, COUPDAYS, COVAR, COVARIANCE, COVARIANCEP, COVARIANCES, CRITBINOM, CSC, CSCH, CUMIPMT, CUMPRINC, DATE, DATEDIF, DATEVALUE, DAVERAGE, DAY, DAYS, DAYS360, DB, DCOUNT, DCOUNTA, DDB, DEC2BIN, DEC2HEX, DEC2OCT, DECIMAL, DEGREES, DELTA, DEVSQ, DGET, DISC, DMAX, DMIN, DOLLAR, DOLLARDE, DOLLARFR, DPRODUCT, DSTDEV, DSTDEVP, DSUM, DVAR, DVARP, EDATE, EFFECT, EOA, EOMONTH, ERF, ERFC, ERFCPRECISE, ERFPRECISE, ERROR, ETHERSCAN, EVEN, EXACT, EXP, EXPON, EXPONDIST, F, FACT, FACTDOUBLE, FALSE, FDIST, FDISTRT, FIND, FINV, FINVRT, FISHER, FISHERINV, FIXED, FLOOR, FLOORMATH, FLOORPRECISE, FLVURL, FORECAST, FREQUENCY, FTEST, FV, FVSCHEDULE, GAMMA, GAMMADIST, GAMMAINV, GAMMALN, GAMMALNPRECISE, GAUSS, GCD, GEOMEAN, GESTEP, GROWTH, HARMEAN, HEX2BIN, HEX2DEC, HEX2OCT, HLOOKUP, HOUR, HYPGEOM, HYPGEOMDIST, IF, IFERROR, IFNA, IFS, IMABS, IMAGINARY, IMARGUMENT, IMCONJUGATE, IMCOS, IMCOSH, IMCOT, IMCSC, IMCSCH, IMDIV, IMEXP, IMLN, IMLOG10, IMLOG2, IMPOWER, IMPRODUCT, IMREAL, IMSEC, IMSECH, IMSIN, IMSINH, IMSQRT, IMSUB, IMSUM, IMTAN, INDEX, INT, INTERCEPT, IPMT, IRR, ISBLANK, ISDATE, ISERR, ISERROR, ISEVEN, ISLOGICAL, ISNA, ISNONTEXT, ISNUMBER, ISO, ISODD, ISOWEEKNUM, ISPMT, ISTEXT, KURT, LARGE, LCM, LEFT, LEN, LINEST, LN, LOG, LOG10, LOGEST, LOGINV, LOGNORM, LOGNORMDIST, LOGNORMINV, LOOKUP, LOWER, MATCH, MAX, MAXA, MAXIFS, MEDIAN, MID, MIN, MINA, MINIFS, MINUTE, MIRR, MMULT, MOD, MODE, MODEMULT, MODESNGL, MONTH, MROUND, MULTINOMIAL, MUNIT, N, NA, NEGBINOM, NEGBINOMDIST, NETWORKDAYS, NETWORKDAYSINTL, NETWORKDAYS_INTL, NOMINAL, NORM, NORMDIST, NORMINV, NORMSDIST, NORMSINV, NOT, NOW, NPER, NPV, NUMBERVALUE, OCT2BIN, OCT2DEC, OCT2HEX, ODD, OR, PDURATION, PEARSON, PERCENTILE, PERCENTILEEXC, PERCENTILEINC, PERCENTRANK, PERCENTRANKEXC, PERCENTRANKINC, PERMUT, PERMUTATIONA, PHI, PI, PMT, PNL, POISSON, POISSONDIST, POWER, PPMT, PRICEDISC, PROB, PRODUCT, PROPER, PV, QUARTILE, QUARTILEEXC, QUARTILEINC, QUOTIENT, RADIANS, RAND, RANDBETWEEN, RANK, RANKAVG, RANKEQ, RATE, REPLACE, REPT, RIGHT, ROMAN, ROUND, ROUNDDOWN, ROUNDUP, ROW, ROWS, RRI, RSQ, SAFE, SEARCH, SEC, SECH, SECOND, SERIESSUM, SIGN, SIN, SINH, SKEW, SKEWP, SLN, SLOPE, SMALL, SORT, SQRT, SQRTPI, STANDARDIZE, STDEV, STDEVA, STDEVP, STDEVPA, STDEVS, STEYX, SUBSTITUTE, SUBTOTAL, SUM, SUMIF, SUMIFS, SUMPRODUCT, SUMSQ, SUMX2MY2, SUMX2PY2, SUMXMY2, SWITCH, SYD, T, TAN, TANH, TBILLEQ, TBILLPRICE, TBILLYIELD, TDIST, TDISTRT, TEXT, TEXTJOIN, TIME, TIMEVALUE, TINV, TODAY, TRANSPOSE, TREND, TRIM, TRIMMEAN, TRUE, TRUNC, TTEST, TYPE, UNICHAR, UNICODE, UNIQUE, UPPER, VALUE, VAR, VARA, VARP, VARPA, VARS, VLOOKUP, WEEKDAY, WEEKNUM, WEIBULL, WEIBULLDIST, WORKDAY, WORKDAYINTL, WORKDAY_INTL, XIRR, XNPV, XOR, YEAR, YEARFRAC, Z, ZTEST, utils };
|
|
13612
|
+
export { ABS, ACCRINT, ACOS, ACOSH, ACOT, ACOTH, AGGREGATE, AND, ARABIC, ASIN, ASINH, ATAN, ATAN2, ATANH, AVEDEV, AVERAGE, AVERAGEA, AVERAGEIF, AVERAGEIFS, BASE, BASESCAN, BESSELI, BESSELJ, BESSELK, BESSELY, BETA, BETADIST, BETAINV, BIN2DEC, BIN2HEX, BIN2OCT, BINOM, BINOMDIST, BITAND, BITLSHIFT, BITOR, BITRSHIFT, BITXOR, BLOCKSCOUT, CEILING, CEILINGMATH, CEILINGPRECISE, CHAR, CHIDIST, CHIDISTRT, CHIINV, CHIINVRT, CHISQ, CHITEST, CHOOSE, CLEAN, CODE, COINGECKO, COLUMN, COLUMNS, COMBIN, COMBINA, COMPLEX, CONCAT, CONCATENATE, CONFIDENCE, CONVERT, CORREL, COS, COSH, COT, COTH, COUNT, COUNTA, COUNTBLANK, COUNTIF, COUNTIFS, COUPDAYS, COVAR, COVARIANCE, COVARIANCEP, COVARIANCES, CRITBINOM, CSC, CSCH, CUMIPMT, CUMPRINC, DATE, DATEDIF, DATEVALUE, DAVERAGE, DAY, DAYS, DAYS360, DB, DCOUNT, DCOUNTA, DDB, DEC2BIN, DEC2HEX, DEC2OCT, DECIMAL, DEGREES, DELTA, DEVSQ, DGET, DISC, DMAX, DMIN, DOLLAR, DOLLARDE, DOLLARFR, DPRODUCT, DSTDEV, DSTDEVP, DSUM, DVAR, DVARP, EDATE, EFFECT, EOA, EOMONTH, ERF, ERFC, ERFCPRECISE, ERFPRECISE, ERROR, ETHERSCAN, EVEN, EXACT, EXP, EXPON, EXPONDIST, F, FACT, FACTDOUBLE, FALSE, FDIST, FDISTRT, FIND, FINV, FINVRT, FIREFLY, FISHER, FISHERINV, FIXED, FLOOR, FLOORMATH, FLOORPRECISE, FLVURL, FORECAST, FREQUENCY, FTEST, FV, FVSCHEDULE, GAMMA, GAMMADIST, GAMMAINV, GAMMALN, GAMMALNPRECISE, GAUSS, GCD, GEOMEAN, GESTEP, GNOSIS, GNOSISSCAN, GROWTH, HARMEAN, HEX2BIN, HEX2DEC, HEX2OCT, HLOOKUP, HOUR, HYPGEOM, HYPGEOMDIST, IF, IFERROR, IFNA, IFS, IMABS, IMAGINARY, IMARGUMENT, IMCONJUGATE, IMCOS, IMCOSH, IMCOT, IMCSC, IMCSCH, IMDIV, IMEXP, IMLN, IMLOG10, IMLOG2, IMPOWER, IMPRODUCT, IMREAL, IMSEC, IMSECH, IMSIN, IMSINH, IMSQRT, IMSUB, IMSUM, IMTAN, INDEX, INT, INTERCEPT, IPMT, IRR, ISBLANK, ISDATE, ISERR, ISERROR, ISEVEN, ISLOGICAL, ISNA, ISNONTEXT, ISNUMBER, ISO, ISODD, ISOWEEKNUM, ISPMT, ISTEXT, KURT, LARGE, LCM, LEFT, LEN, LINEST, LN, LOG, LOG10, LOGEST, LOGINV, LOGNORM, LOGNORMDIST, LOGNORMINV, LOOKUP, LOWER, MATCH, MAX, MAXA, MAXIFS, MEDIAN, MID, MIN, MINA, MINIFS, MINUTE, MIRR, MMULT, MOD, MODE, MODEMULT, MODESNGL, MONTH, MROUND, MULTINOMIAL, MUNIT, N, NA, NEGBINOM, NEGBINOMDIST, NETWORKDAYS, NETWORKDAYSINTL, NETWORKDAYS_INTL, NEYNAR, NOMINAL, NORM, NORMDIST, NORMINV, NORMSDIST, NORMSINV, NOT, NOW, NPER, NPV, NUMBERVALUE, OCT2BIN, OCT2DEC, OCT2HEX, ODD, OR, PDURATION, PEARSON, PERCENTILE, PERCENTILEEXC, PERCENTILEINC, PERCENTRANK, PERCENTRANKEXC, PERCENTRANKINC, PERMUT, PERMUTATIONA, PHI, PI, PMT, PNL, POISSON, POISSONDIST, POWER, PPMT, PRICEDISC, PROB, PRODUCT, PROPER, PV, QUARTILE, QUARTILEEXC, QUARTILEINC, QUOTIENT, RADIANS, RAND, RANDBETWEEN, RANK, RANKAVG, RANKEQ, RATE, REPLACE, REPT, RIGHT, ROMAN, ROUND, ROUNDDOWN, ROUNDUP, ROW, ROWS, RRI, RSQ, SAFE, SEARCH, SEC, SECH, SECOND, SERIESSUM, SIGN, SIN, SINH, SKEW, SKEWP, SLN, SLOPE, SMALL, SORT, SQRT, SQRTPI, STANDARDIZE, STDEV, STDEVA, STDEVP, STDEVPA, STDEVS, STEYX, SUBSTITUTE, SUBTOTAL, SUM, SUMIF, SUMIFS, SUMPRODUCT, SUMSQ, SUMX2MY2, SUMX2PY2, SUMXMY2, SWITCH, SYD, T, TAN, TANH, TBILLEQ, TBILLPRICE, TBILLYIELD, TDIST, TDISTRT, TEXT, TEXTJOIN, TIME, TIMEVALUE, TINV, TODAY, TRANSPOSE, TREND, TRIM, TRIMMEAN, TRUE, TRUNC, TTEST, TYPE, UNICHAR, UNICODE, UNIQUE, UPPER, VALUE, VAR, VARA, VARP, VARPA, VARS, VLOOKUP, WEEKDAY, WEEKNUM, WEIBULL, WEIBULLDIST, WORKDAY, WORKDAYINTL, WORKDAY_INTL, XIRR, XNPV, XOR, YEAR, YEARFRAC, Z, ZTEST, utils };
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fileverse-dev/formulajs",
|
|
3
|
-
"version": "4.4.11-mod-
|
|
3
|
+
"version": "4.4.11-mod-23-patch-1",
|
|
4
4
|
"description": "JavaScript implementation of most Microsoft Excel formula functions",
|
|
5
5
|
"author": "Formulajs",
|
|
6
6
|
"publishConfig": {
|
|
@@ -59,6 +59,7 @@
|
|
|
59
59
|
"types": "tsc"
|
|
60
60
|
},
|
|
61
61
|
"dependencies": {
|
|
62
|
+
"@fileverse-dev/formulajs": "^4.4.11-mod-23",
|
|
62
63
|
"bessel": "^1.0.2",
|
|
63
64
|
"esbuild": "^0.25.4",
|
|
64
65
|
"jstat": "^1.9.6"
|
package/types/cjs/index.d.cts
CHANGED
|
@@ -192,6 +192,7 @@ export function AVERAGEIFS(...args: any[]): number;
|
|
|
192
192
|
* @returns
|
|
193
193
|
*/
|
|
194
194
|
export function BASE(number: any, radix: any, min_length: any): any;
|
|
195
|
+
export function BASESCAN(...args: any[]): Promise<any>;
|
|
195
196
|
/**
|
|
196
197
|
* Returns the modified Bessel function In(x).
|
|
197
198
|
*
|
|
@@ -1295,7 +1296,7 @@ export function EDATE(start_date: any, months: any): any;
|
|
|
1295
1296
|
* @returns
|
|
1296
1297
|
*/
|
|
1297
1298
|
export function EFFECT(nominal_rate: any, npery: any): number | Error;
|
|
1298
|
-
export function EOA(
|
|
1299
|
+
export function EOA(addresses: any, category: any, chains: any, startTime: any, endTime: any): Promise<string | any[]>;
|
|
1299
1300
|
/**
|
|
1300
1301
|
* Returns the serial number of the last day of the month before or after a specified number of months.
|
|
1301
1302
|
*
|
|
@@ -1330,7 +1331,7 @@ export const ERFPRECISE: any;
|
|
|
1330
1331
|
export namespace ERROR {
|
|
1331
1332
|
function TYPE(error_val: any): Error | 1 | 2 | 3 | 4 | 8 | 5 | 6 | 7;
|
|
1332
1333
|
}
|
|
1333
|
-
export function ETHERSCAN(
|
|
1334
|
+
export function ETHERSCAN(...args: any[]): Promise<any>;
|
|
1334
1335
|
/**
|
|
1335
1336
|
* Rounds a number up to the nearest even integer.
|
|
1336
1337
|
*
|
|
@@ -1528,6 +1529,7 @@ export namespace FINV { }
|
|
|
1528
1529
|
* @returns
|
|
1529
1530
|
*/
|
|
1530
1531
|
export function FINVRT(probability: any, deg_freedom1: any, deg_freedom2: any, ...args: any[]): any;
|
|
1532
|
+
export function FIREFLY(platform: any, contentType: any, identifier: any): Promise<any>;
|
|
1531
1533
|
/**
|
|
1532
1534
|
* Returns the Fisher transformation.
|
|
1533
1535
|
*
|
|
@@ -1789,6 +1791,27 @@ export function GEOMEAN(...args: any[]): any;
|
|
|
1789
1791
|
* @returns
|
|
1790
1792
|
*/
|
|
1791
1793
|
export function GESTEP(number: any, step: any): any;
|
|
1794
|
+
export function GNOSIS({ cardId, startDate, endDate, limit, offset, }: {
|
|
1795
|
+
cardId: any;
|
|
1796
|
+
startDate: any;
|
|
1797
|
+
endDate: any;
|
|
1798
|
+
limit?: number;
|
|
1799
|
+
offset?: number;
|
|
1800
|
+
}): Promise<string | {
|
|
1801
|
+
createdAt: any;
|
|
1802
|
+
clearedAt: any;
|
|
1803
|
+
country: any;
|
|
1804
|
+
merchant: any;
|
|
1805
|
+
billingAmount: any;
|
|
1806
|
+
billingCurrency: any;
|
|
1807
|
+
transactionAmount: any;
|
|
1808
|
+
transactionCurrency: any;
|
|
1809
|
+
transactionType: any;
|
|
1810
|
+
kind: any;
|
|
1811
|
+
status: any;
|
|
1812
|
+
mcc: any;
|
|
1813
|
+
}[]>;
|
|
1814
|
+
export function GNOSISSCAN(...args: any[]): Promise<any>;
|
|
1792
1815
|
/**
|
|
1793
1816
|
* Returns values along an exponential trend.
|
|
1794
1817
|
*
|
|
@@ -2818,6 +2841,7 @@ export function NETWORKDAYSINTL(start_date: any, end_date: any, weekend: any, ho
|
|
|
2818
2841
|
* @returns
|
|
2819
2842
|
*/
|
|
2820
2843
|
export function NETWORKDAYS_INTL(start_date: any, end_date: any, weekend: any, holidays: any): number | Error;
|
|
2844
|
+
export function NEYNAR(fid: any, viewerFid: any, sortType: any, limit: any, cursor: any): Promise<any>;
|
|
2821
2845
|
/**
|
|
2822
2846
|
* Returns the annual nominal interest rate.
|
|
2823
2847
|
*
|
package/types/esm/index.d.mts
CHANGED
|
@@ -192,6 +192,7 @@ export function AVERAGEIFS(...args: any[]): number;
|
|
|
192
192
|
* @returns
|
|
193
193
|
*/
|
|
194
194
|
export function BASE(number: any, radix: any, min_length: any): any;
|
|
195
|
+
export function BASESCAN(...args: any[]): Promise<any>;
|
|
195
196
|
/**
|
|
196
197
|
* Returns the modified Bessel function In(x).
|
|
197
198
|
*
|
|
@@ -1295,7 +1296,7 @@ export function EDATE(start_date: any, months: any): any;
|
|
|
1295
1296
|
* @returns
|
|
1296
1297
|
*/
|
|
1297
1298
|
export function EFFECT(nominal_rate: any, npery: any): number | Error;
|
|
1298
|
-
export function EOA(
|
|
1299
|
+
export function EOA(addresses: any, category: any, chains: any, startTime: any, endTime: any): Promise<string | any[]>;
|
|
1299
1300
|
/**
|
|
1300
1301
|
* Returns the serial number of the last day of the month before or after a specified number of months.
|
|
1301
1302
|
*
|
|
@@ -1330,7 +1331,7 @@ export const ERFPRECISE: any;
|
|
|
1330
1331
|
export namespace ERROR {
|
|
1331
1332
|
function TYPE(error_val: any): Error | 1 | 2 | 3 | 4 | 8 | 5 | 6 | 7;
|
|
1332
1333
|
}
|
|
1333
|
-
export function ETHERSCAN(
|
|
1334
|
+
export function ETHERSCAN(...args: any[]): Promise<any>;
|
|
1334
1335
|
/**
|
|
1335
1336
|
* Rounds a number up to the nearest even integer.
|
|
1336
1337
|
*
|
|
@@ -1528,6 +1529,7 @@ export namespace FINV { }
|
|
|
1528
1529
|
* @returns
|
|
1529
1530
|
*/
|
|
1530
1531
|
export function FINVRT(probability: any, deg_freedom1: any, deg_freedom2: any, ...args: any[]): any;
|
|
1532
|
+
export function FIREFLY(platform: any, contentType: any, identifier: any): Promise<any>;
|
|
1531
1533
|
/**
|
|
1532
1534
|
* Returns the Fisher transformation.
|
|
1533
1535
|
*
|
|
@@ -1789,6 +1791,27 @@ export function GEOMEAN(...args: any[]): any;
|
|
|
1789
1791
|
* @returns
|
|
1790
1792
|
*/
|
|
1791
1793
|
export function GESTEP(number: any, step: any): any;
|
|
1794
|
+
export function GNOSIS({ cardId, startDate, endDate, limit, offset, }: {
|
|
1795
|
+
cardId: any;
|
|
1796
|
+
startDate: any;
|
|
1797
|
+
endDate: any;
|
|
1798
|
+
limit?: number;
|
|
1799
|
+
offset?: number;
|
|
1800
|
+
}): Promise<string | {
|
|
1801
|
+
createdAt: any;
|
|
1802
|
+
clearedAt: any;
|
|
1803
|
+
country: any;
|
|
1804
|
+
merchant: any;
|
|
1805
|
+
billingAmount: any;
|
|
1806
|
+
billingCurrency: any;
|
|
1807
|
+
transactionAmount: any;
|
|
1808
|
+
transactionCurrency: any;
|
|
1809
|
+
transactionType: any;
|
|
1810
|
+
kind: any;
|
|
1811
|
+
status: any;
|
|
1812
|
+
mcc: any;
|
|
1813
|
+
}[]>;
|
|
1814
|
+
export function GNOSISSCAN(...args: any[]): Promise<any>;
|
|
1792
1815
|
/**
|
|
1793
1816
|
* Returns values along an exponential trend.
|
|
1794
1817
|
*
|
|
@@ -2818,6 +2841,7 @@ export function NETWORKDAYSINTL(start_date: any, end_date: any, weekend: any, ho
|
|
|
2818
2841
|
* @returns
|
|
2819
2842
|
*/
|
|
2820
2843
|
export function NETWORKDAYS_INTL(start_date: any, end_date: any, weekend: any, holidays: any): number | Error;
|
|
2844
|
+
export function NEYNAR(fid: any, viewerFid: any, sortType: any, limit: any, cursor: any): Promise<any>;
|
|
2821
2845
|
/**
|
|
2822
2846
|
* Returns the annual nominal interest rate.
|
|
2823
2847
|
*
|