@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/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 ETHERSCAN(address, page, offset) {
13191
- const API_KEY = window.localStorage.getItem(SERVICE_API_KEY.Etherscan);
13192
- if(!API_KEY){
13193
- return `${SERVICE_API_KEY.Etherscan}${ERROR_MESSAGES_FLAG.MISSING_KEY}`
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
- // temporary added for testing rate limit flow
13196
- if(API_KEY === 'xxxx'){
13197
- return `${SERVICE_API_KEY.Etherscan}${ERROR_MESSAGES_FLAG.RATE_LIMIT}`
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 response = await fetch(url);
13203
- if (!response.ok) {
13204
- throw new Error(`HTTP error! Status: ${response.status}`)
13205
- }
13206
- const json = await response.json();
13207
- if (json.result.includes("Invalid API Key")) {
13208
- return `${SERVICE_API_KEY.Etherscan}${ERROR_MESSAGES_FLAG.INVALID_API_KEY}`
13209
- }
13210
- if(json.result.includes('Max rate limit reached')){
13211
- return `${SERVICE_API_KEY.Etherscan}${ERROR_MESSAGES_FLAG.RATE_LIMIT}`
13212
- }
13213
- /*
13214
- [{blockNumber: '0x1d3d1', timeStamp: '0x5f7e4f', hash: '0x3c3c3c3c', nonce: '0x1',}]
13215
- */
13216
- return json.result;
13217
- } catch (error) {
13218
- return ERROR_MESSAGES_FLAG.DEFAULT
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(address, categories, chain, startTime, endTime) {
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 response = await fetch(url);
13287
- if (!response.ok) throw new Error(`HTTP error! Status: ${response.status}`);
13288
- const json = await response.json();
13289
- if (json.result?.includes?.("Invalid API Key")) {
13290
- return `${SERVICE_API_KEY[chain.charAt(0).toUpperCase() + chain.slice(1)]}_MISSING`;
13291
- }
13292
- if(json.result.includes('Max rate limit reached')){
13293
- return `${SERVICE_API_KEY.Etherscan}${ERROR_MESSAGES_FLAG.RATE_LIMIT}`
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
- return json.result;
13296
- } catch (e) {
13297
- console.log(e);
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-22-patch-5",
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"
@@ -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(address: any, categories: any, chain: any, startTime: any, endTime: any): Promise<any>;
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(address: any, page: any, offset: any): Promise<any>;
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
  *
@@ -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(address: any, categories: any, chain: any, startTime: any, endTime: any): Promise<any>;
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(address: any, page: any, offset: any): Promise<any>;
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
  *