@fileverse-dev/formulajs 4.4.12-mod-2 → 4.4.12-mod-3-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/cjs/index.cjs CHANGED
@@ -1271,6 +1271,7 @@ function ROWS(array) {
1271
1271
  * @returns
1272
1272
  */
1273
1273
  function SORT(array, sort_index = 1, sort_order = 1, by_col = false) {
1274
+ // Accept multiple sort keys like Google Sheets: SORT(range, sort_column, is_ascending, [sort_column2, is_ascending2, ...])
1274
1275
  if (!array || !Array.isArray(array)) {
1275
1276
  return na
1276
1277
  }
@@ -1279,37 +1280,104 @@ function SORT(array, sort_index = 1, sort_order = 1, by_col = false) {
1279
1280
  return 0
1280
1281
  }
1281
1282
 
1282
- sort_index = parseNumber(sort_index);
1283
- if (!sort_index || sort_index < 1) {
1284
- return value
1283
+ by_col = parseBool(by_col);
1284
+ if (typeof by_col !== 'boolean') {
1285
+ return name
1285
1286
  }
1286
1287
 
1287
- sort_order = parseNumber(sort_order);
1288
- if (sort_order !== 1 && sort_order !== -1) {
1288
+ // Collect sort keys (index and order). First key comes from sort_index/sort_order.
1289
+ const sortKeys = [];
1290
+
1291
+ const normalizeOrder = (o) => {
1292
+ // Try boolean first (TRUE -> ascending)
1293
+ const b = parseBool(o);
1294
+ if (typeof b === 'boolean') {
1295
+ return b ? 1 : -1
1296
+ }
1297
+
1298
+ const n = parseNumber(o);
1299
+ if (n === 1 || n === -1) {
1300
+ return n
1301
+ }
1302
+
1303
+ return null
1304
+ };
1305
+
1306
+ const firstIndex = parseNumber(sort_index);
1307
+ if (!firstIndex || firstIndex < 1) {
1289
1308
  return value
1290
1309
  }
1291
1310
 
1292
- by_col = parseBool(by_col);
1293
- if (typeof by_col !== 'boolean') {
1294
- return name
1311
+ const firstOrder = normalizeOrder(sort_order);
1312
+ if (firstOrder === null) {
1313
+ return value
1295
1314
  }
1296
1315
 
1297
- const sortArray = (arr) =>
1298
- arr.sort((a, b) => {
1299
- a = parseString(a[sort_index - 1]);
1300
- b = parseString(b[sort_index - 1]);
1316
+ sortKeys.push({ index: firstIndex, order: firstOrder });
1301
1317
 
1302
- return sort_order === 1 ? (a < b ? sort_order * -1 : sort_order) : a > b ? sort_order : sort_order * -1
1303
- });
1318
+ // Additional args may contain more sort_index/sort_order pairs
1319
+ if (arguments.length > 4) {
1320
+ // arguments: 0=array,1=sort_index,2=sort_order,3=by_col,4=nextIndex,5=nextOrder,...
1321
+ for (let i = 4; i < arguments.length; i += 2) {
1322
+ const idx = parseNumber(arguments[i]);
1323
+ if (!idx || idx < 1) {
1324
+ return value
1325
+ }
1326
+
1327
+ const ordArg = i + 1 < arguments.length ? arguments[i + 1] : 1;
1328
+ const ord = normalizeOrder(ordArg);
1329
+ if (ord === null) {
1330
+ return value
1331
+ }
1332
+
1333
+ sortKeys.push({ index: idx, order: ord });
1334
+ }
1335
+ }
1304
1336
 
1305
1337
  const matrix = fillMatrix(array);
1306
- const result = by_col ? transpose(matrix) : matrix;
1338
+ const working = by_col ? transpose(matrix) : matrix;
1339
+
1340
+ // Validate that all sort indexes are within column bounds
1341
+ const numCols = working[0] ? working[0].length : 0;
1342
+ for (const k of sortKeys) {
1343
+ if (k.index < 1 || k.index > numCols) {
1344
+ return value
1345
+ }
1346
+ }
1347
+
1348
+ const parseForCompare = (val) => {
1349
+ // Preserve numbers when possible
1350
+ if (typeof val === 'number') return val
1351
+ const num = parseNumber(val);
1352
+ if (typeof num === 'number' && !Number.isNaN(num)) return num
1353
+ return parseString(val)
1354
+ };
1355
+
1356
+ const comparator = (aRow, bRow) => {
1357
+ for (const k of sortKeys) {
1358
+ const aVal = parseForCompare(aRow[k.index - 1]);
1359
+ const bVal = parseForCompare(bRow[k.index - 1]);
1360
+
1361
+ if (aVal === bVal) continue
1362
+
1363
+ // Numeric comparison if both are numbers
1364
+ if (typeof aVal === 'number' && typeof bVal === 'number') {
1365
+ return (aVal < bVal ? -1 : 1) * k.order
1366
+ }
1367
+
1368
+ // String comparison
1369
+ const aStr = String(aVal).toLowerCase();
1370
+ const bStr = String(bVal).toLowerCase();
1371
+ return aStr.localeCompare(bStr) * k.order
1372
+ }
1373
+
1374
+ return 0
1375
+ };
1376
+
1377
+ // Sort in-place and return
1378
+ working.sort(comparator);
1307
1379
 
1308
- return sort_index >= 1 && sort_index <= result[0].length
1309
- ? by_col
1310
- ? transpose(sortArray(result))
1311
- : sortArray(result)
1312
- : value
1380
+ return by_col ? transpose(working) : working
1313
1381
  }
1314
1382
 
1315
1383
  /**
@@ -18508,7 +18576,74 @@ async function TALLY() {
18508
18576
  }
18509
18577
  }
18510
18578
 
18511
- // export { DUNESIM } from './dune-sim/dune-sim.js'
18579
+ const duneSimParamsSchema = objectType({
18580
+ wallet: stringType().nonempty(),
18581
+ type: enumType(['activity']),
18582
+ });
18583
+
18584
+ function flattenObject(obj, parentKey = '', res = {}) {
18585
+ for (let key in obj) {
18586
+ if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;
18587
+ const newKey = parentKey ? `${parentKey}_${key}` : key;
18588
+
18589
+ if (typeof obj[key] === 'object' && obj[key] !== null && !Array.isArray(obj[key])) {
18590
+ flattenObject(obj[key], newKey, res);
18591
+ } else if (Array.isArray(obj[key])) {
18592
+ obj[key].forEach((val, i) => {
18593
+ if (typeof val === 'object' && val !== null) {
18594
+ flattenObject(val, `${newKey}_${i}`, res);
18595
+ } else {
18596
+ res[`${newKey}_${i}`] = val;
18597
+ }
18598
+ });
18599
+ } else {
18600
+ res[newKey] = obj[key];
18601
+ }
18602
+ }
18603
+ return res;
18604
+ }
18605
+
18606
+ /* global window */
18607
+
18608
+
18609
+
18610
+
18611
+
18612
+
18613
+
18614
+ async function DUNESIM() {
18615
+ try {
18616
+ const [type, wallet] = argsToArray(arguments);
18617
+
18618
+ validateParams(duneSimParamsSchema, { wallet, type });
18619
+ const address = await fromEnsNameToAddress$1.validateAndGetAddress(wallet);
18620
+ const apiKey = window.localStorage.getItem(SERVICES_API_KEY.DuneSim);
18621
+ const url = `https://api.sim.dune.com/v1/evm/activity/${address}`;
18622
+
18623
+ const { URL: finalUrl, HEADERS } = getUrlAndHeaders({
18624
+ url: url, serviceName: 'DuneSim',
18625
+ headers: {
18626
+ 'X-Sim-Api-Key': apiKey,
18627
+ }
18628
+
18629
+ });
18630
+
18631
+ const response = await fetch(finalUrl, {
18632
+ method: 'GET',
18633
+ headers: HEADERS,
18634
+ });
18635
+ if (!response.ok) {
18636
+ throw new NetworkError(SERVICES_API_KEY.DuneSim, response.status)
18637
+ }
18638
+
18639
+ const json = await response.json();
18640
+ const activity = json?.activity || [];
18641
+ return activity.map((item) => flattenObject(item))
18642
+ } catch (err) {
18643
+ return errorMessageHandler(err, 'DUNESIM')
18644
+ }
18645
+ }
18646
+
18512
18647
  // export {GNOSISPAY} from './gnosispay/gnosispay.js'
18513
18648
 
18514
18649
 
@@ -18661,6 +18796,7 @@ exports.DPRODUCT = DPRODUCT;
18661
18796
  exports.DSTDEV = DSTDEV;
18662
18797
  exports.DSTDEVP = DSTDEVP;
18663
18798
  exports.DSUM = DSUM;
18799
+ exports.DUNESIM = DUNESIM;
18664
18800
  exports.DVAR = DVAR;
18665
18801
  exports.DVARP = DVARP;
18666
18802
  exports.EDATE = EDATE;
@@ -875,6 +875,34 @@ var TALLY_metadata = {
875
875
  ]
876
876
  };
877
877
 
878
+ // src/crypto/dune-sim/metadata.js
879
+ var DUNESIM_metadata = {
880
+ API_KEY: SERVICES_API_KEY.DuneSim,
881
+ LOGO: "https://t0.gstatic.com/faviconV2?client=SOCIAL&type=FAVICON&fallback_opts=TYPE,SIZE,URL&url=https://docs.sim.dune.com&size=32",
882
+ BRAND_COLOR: "#fef7f5",
883
+ BRAND_SECONDARY_COLOR: "#f9ab99",
884
+ n: "DUNESIM",
885
+ t: 20,
886
+ d: "Query Sim APIs for blockchain activity and ownership data.",
887
+ a: "Query Sim APIs for blockchain activity and ownership data.",
888
+ p: [
889
+ {
890
+ name: "type",
891
+ detail: "Query type. We support only `activity` for now.",
892
+ example: `"activity"`,
893
+ require: "m",
894
+ type: "string"
895
+ },
896
+ {
897
+ name: "wallet",
898
+ detail: "Wallet to get activity for",
899
+ example: `"vitalik.eth"`,
900
+ require: "m",
901
+ type: "string"
902
+ }
903
+ ]
904
+ };
905
+
878
906
  // src/crypto/crypto-metadata.js
879
907
  var FUNCTION_LOCALE = [
880
908
  EOA_metadata,
@@ -894,7 +922,7 @@ var FUNCTION_LOCALE = [
894
922
  Neynar_metadata,
895
923
  SMARTCONTRACT_metadata,
896
924
  TALLY_metadata,
897
- // DUNESIM_metadata,
925
+ DUNESIM_metadata,
898
926
  // GNOSISPAY_metadata,
899
927
  {
900
928
  LOGO: "https://raw.githubusercontent.com/mritunjayz/github-storage/refs/heads/main/ploymarket.png",
package/lib/esm/index.mjs CHANGED
@@ -1269,6 +1269,7 @@ function ROWS(array) {
1269
1269
  * @returns
1270
1270
  */
1271
1271
  function SORT(array, sort_index = 1, sort_order = 1, by_col = false) {
1272
+ // Accept multiple sort keys like Google Sheets: SORT(range, sort_column, is_ascending, [sort_column2, is_ascending2, ...])
1272
1273
  if (!array || !Array.isArray(array)) {
1273
1274
  return na
1274
1275
  }
@@ -1277,37 +1278,104 @@ function SORT(array, sort_index = 1, sort_order = 1, by_col = false) {
1277
1278
  return 0
1278
1279
  }
1279
1280
 
1280
- sort_index = parseNumber(sort_index);
1281
- if (!sort_index || sort_index < 1) {
1282
- return value
1281
+ by_col = parseBool(by_col);
1282
+ if (typeof by_col !== 'boolean') {
1283
+ return name
1283
1284
  }
1284
1285
 
1285
- sort_order = parseNumber(sort_order);
1286
- if (sort_order !== 1 && sort_order !== -1) {
1286
+ // Collect sort keys (index and order). First key comes from sort_index/sort_order.
1287
+ const sortKeys = [];
1288
+
1289
+ const normalizeOrder = (o) => {
1290
+ // Try boolean first (TRUE -> ascending)
1291
+ const b = parseBool(o);
1292
+ if (typeof b === 'boolean') {
1293
+ return b ? 1 : -1
1294
+ }
1295
+
1296
+ const n = parseNumber(o);
1297
+ if (n === 1 || n === -1) {
1298
+ return n
1299
+ }
1300
+
1301
+ return null
1302
+ };
1303
+
1304
+ const firstIndex = parseNumber(sort_index);
1305
+ if (!firstIndex || firstIndex < 1) {
1287
1306
  return value
1288
1307
  }
1289
1308
 
1290
- by_col = parseBool(by_col);
1291
- if (typeof by_col !== 'boolean') {
1292
- return name
1309
+ const firstOrder = normalizeOrder(sort_order);
1310
+ if (firstOrder === null) {
1311
+ return value
1293
1312
  }
1294
1313
 
1295
- const sortArray = (arr) =>
1296
- arr.sort((a, b) => {
1297
- a = parseString(a[sort_index - 1]);
1298
- b = parseString(b[sort_index - 1]);
1314
+ sortKeys.push({ index: firstIndex, order: firstOrder });
1299
1315
 
1300
- return sort_order === 1 ? (a < b ? sort_order * -1 : sort_order) : a > b ? sort_order : sort_order * -1
1301
- });
1316
+ // Additional args may contain more sort_index/sort_order pairs
1317
+ if (arguments.length > 4) {
1318
+ // arguments: 0=array,1=sort_index,2=sort_order,3=by_col,4=nextIndex,5=nextOrder,...
1319
+ for (let i = 4; i < arguments.length; i += 2) {
1320
+ const idx = parseNumber(arguments[i]);
1321
+ if (!idx || idx < 1) {
1322
+ return value
1323
+ }
1324
+
1325
+ const ordArg = i + 1 < arguments.length ? arguments[i + 1] : 1;
1326
+ const ord = normalizeOrder(ordArg);
1327
+ if (ord === null) {
1328
+ return value
1329
+ }
1330
+
1331
+ sortKeys.push({ index: idx, order: ord });
1332
+ }
1333
+ }
1302
1334
 
1303
1335
  const matrix = fillMatrix(array);
1304
- const result = by_col ? transpose(matrix) : matrix;
1336
+ const working = by_col ? transpose(matrix) : matrix;
1337
+
1338
+ // Validate that all sort indexes are within column bounds
1339
+ const numCols = working[0] ? working[0].length : 0;
1340
+ for (const k of sortKeys) {
1341
+ if (k.index < 1 || k.index > numCols) {
1342
+ return value
1343
+ }
1344
+ }
1345
+
1346
+ const parseForCompare = (val) => {
1347
+ // Preserve numbers when possible
1348
+ if (typeof val === 'number') return val
1349
+ const num = parseNumber(val);
1350
+ if (typeof num === 'number' && !Number.isNaN(num)) return num
1351
+ return parseString(val)
1352
+ };
1353
+
1354
+ const comparator = (aRow, bRow) => {
1355
+ for (const k of sortKeys) {
1356
+ const aVal = parseForCompare(aRow[k.index - 1]);
1357
+ const bVal = parseForCompare(bRow[k.index - 1]);
1358
+
1359
+ if (aVal === bVal) continue
1360
+
1361
+ // Numeric comparison if both are numbers
1362
+ if (typeof aVal === 'number' && typeof bVal === 'number') {
1363
+ return (aVal < bVal ? -1 : 1) * k.order
1364
+ }
1365
+
1366
+ // String comparison
1367
+ const aStr = String(aVal).toLowerCase();
1368
+ const bStr = String(bVal).toLowerCase();
1369
+ return aStr.localeCompare(bStr) * k.order
1370
+ }
1371
+
1372
+ return 0
1373
+ };
1374
+
1375
+ // Sort in-place and return
1376
+ working.sort(comparator);
1305
1377
 
1306
- return sort_index >= 1 && sort_index <= result[0].length
1307
- ? by_col
1308
- ? transpose(sortArray(result))
1309
- : sortArray(result)
1310
- : value
1378
+ return by_col ? transpose(working) : working
1311
1379
  }
1312
1380
 
1313
1381
  /**
@@ -18506,7 +18574,74 @@ async function TALLY() {
18506
18574
  }
18507
18575
  }
18508
18576
 
18509
- // export { DUNESIM } from './dune-sim/dune-sim.js'
18577
+ const duneSimParamsSchema = objectType({
18578
+ wallet: stringType().nonempty(),
18579
+ type: enumType(['activity']),
18580
+ });
18581
+
18582
+ function flattenObject(obj, parentKey = '', res = {}) {
18583
+ for (let key in obj) {
18584
+ if (!Object.prototype.hasOwnProperty.call(obj, key)) continue;
18585
+ const newKey = parentKey ? `${parentKey}_${key}` : key;
18586
+
18587
+ if (typeof obj[key] === 'object' && obj[key] !== null && !Array.isArray(obj[key])) {
18588
+ flattenObject(obj[key], newKey, res);
18589
+ } else if (Array.isArray(obj[key])) {
18590
+ obj[key].forEach((val, i) => {
18591
+ if (typeof val === 'object' && val !== null) {
18592
+ flattenObject(val, `${newKey}_${i}`, res);
18593
+ } else {
18594
+ res[`${newKey}_${i}`] = val;
18595
+ }
18596
+ });
18597
+ } else {
18598
+ res[newKey] = obj[key];
18599
+ }
18600
+ }
18601
+ return res;
18602
+ }
18603
+
18604
+ /* global window */
18605
+
18606
+
18607
+
18608
+
18609
+
18610
+
18611
+
18612
+ async function DUNESIM() {
18613
+ try {
18614
+ const [type, wallet] = argsToArray(arguments);
18615
+
18616
+ validateParams(duneSimParamsSchema, { wallet, type });
18617
+ const address = await fromEnsNameToAddress$1.validateAndGetAddress(wallet);
18618
+ const apiKey = window.localStorage.getItem(SERVICES_API_KEY.DuneSim);
18619
+ const url = `https://api.sim.dune.com/v1/evm/activity/${address}`;
18620
+
18621
+ const { URL: finalUrl, HEADERS } = getUrlAndHeaders({
18622
+ url: url, serviceName: 'DuneSim',
18623
+ headers: {
18624
+ 'X-Sim-Api-Key': apiKey,
18625
+ }
18626
+
18627
+ });
18628
+
18629
+ const response = await fetch(finalUrl, {
18630
+ method: 'GET',
18631
+ headers: HEADERS,
18632
+ });
18633
+ if (!response.ok) {
18634
+ throw new NetworkError(SERVICES_API_KEY.DuneSim, response.status)
18635
+ }
18636
+
18637
+ const json = await response.json();
18638
+ const activity = json?.activity || [];
18639
+ return activity.map((item) => flattenObject(item))
18640
+ } catch (err) {
18641
+ return errorMessageHandler(err, 'DUNESIM')
18642
+ }
18643
+ }
18644
+
18510
18645
  // export {GNOSISPAY} from './gnosispay/gnosispay.js'
18511
18646
 
18512
18647
 
@@ -18546,4 +18681,4 @@ function MYANIMELIST() {
18546
18681
 
18547
18682
  const utils = { errors, symbols, date };
18548
18683
 
18549
- export { AAVE, ABS, ACCRINT, ACOS, ACOSH, ACOT, ACOTH, AGGREGATE, AND, ARABIC, ARTEMIS, 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, DEFILLAMA, 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, FARCASTER, 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, 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, LENS, LINEST, LN, LOG, LOG10, LOGEST, LOGINV, LOGNORM, LOGNORMDIST, LOGNORMINV, LOOKUP, LOWER, MATCH, MAX, MAXA, MAXIFS, MEDIAN, MEERKAT, MID, MIN, MINA, MINIFS, MINUS$1 as MINUS, MINUTE, MIRR, MMULT, MOD, MODE, MODEMULT, MODESNGL, MONTH, MROUND, MULTINOMIAL, MUNIT, MYANIMELIST, 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, POLYMARKET, POWER, PPMT, PRICEDISC, PRIVACYPOOL, PROB, PRODUCT, PROPER, PV, QUARTILE, QUARTILEEXC, QUARTILEINC, QUOTIENT, RADIANS, RAND, RANDBETWEEN, RANK, RANKAVG, RANKEQ, RATE, REPLACE, REPT, RIGHT, ROMAN, ROTKI, ROUND, ROUNDDOWN, ROUNDUP, ROW, ROWS, RRI, RSQ, SAFE, SEARCH, SEC, SECH, SECOND, SERIESSUM, SIGN, SIN, SINH, SKEW, SKEWP, SLN, SLOPE, SMALL, SMARTCONTRACT, SORT, SQRT, SQRTPI, STANDARDIZE, STDEV, STDEVA, STDEVP, STDEVPA, STDEVS, STEYX, SUBSTITUTE, SUBTOTAL, SUM, SUMIF, SUMIFS, SUMPRODUCT, SUMSQ, SUMX2MY2, SUMX2PY2, SUMXMY2, SWITCH, SYD, T, TALLY, TAN, TANH, TBILLEQ, TBILLPRICE, TBILLYIELD, TDIST, TDISTRT, TEXT, TEXTJOIN, TIME, TIMEVALUE, TINV, TODAY, TRANSPOSE, TREND, TRIM, TRIMMEAN, TRUE, TRUNC, TTEST, TYPE, UNICHAR, UNICODE, UNIQUE, UNISWAP, UPPER, VALUE, VAR, VARA, VARP, VARPA, VARS, VLOOKUP, WEEKDAY, WEEKNUM, WEIBULL, WEIBULLDIST, WORKDAY, WORKDAYINTL, WORKDAY_INTL, XIRR, XNPV, XOR, YEAR, YEARFRAC, Z, ZTEST, utils };
18684
+ export { AAVE, ABS, ACCRINT, ACOS, ACOSH, ACOT, ACOTH, AGGREGATE, AND, ARABIC, ARTEMIS, 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, DEFILLAMA, DEGREES, DELTA, DEVSQ, DGET, DISC, DMAX, DMIN, DOLLAR, DOLLARDE, DOLLARFR, DPRODUCT, DSTDEV, DSTDEVP, DSUM, DUNESIM, DVAR, DVARP, EDATE, EFFECT, EOA, EOMONTH, ERF, ERFC, ERFCPRECISE, ERFPRECISE, ERROR, ETHERSCAN, EVEN, EXACT, EXP, EXPON, EXPONDIST, F, FACT, FACTDOUBLE, FALSE, FARCASTER, 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, 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, LENS, LINEST, LN, LOG, LOG10, LOGEST, LOGINV, LOGNORM, LOGNORMDIST, LOGNORMINV, LOOKUP, LOWER, MATCH, MAX, MAXA, MAXIFS, MEDIAN, MEERKAT, MID, MIN, MINA, MINIFS, MINUS$1 as MINUS, MINUTE, MIRR, MMULT, MOD, MODE, MODEMULT, MODESNGL, MONTH, MROUND, MULTINOMIAL, MUNIT, MYANIMELIST, 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, POLYMARKET, POWER, PPMT, PRICEDISC, PRIVACYPOOL, PROB, PRODUCT, PROPER, PV, QUARTILE, QUARTILEEXC, QUARTILEINC, QUOTIENT, RADIANS, RAND, RANDBETWEEN, RANK, RANKAVG, RANKEQ, RATE, REPLACE, REPT, RIGHT, ROMAN, ROTKI, ROUND, ROUNDDOWN, ROUNDUP, ROW, ROWS, RRI, RSQ, SAFE, SEARCH, SEC, SECH, SECOND, SERIESSUM, SIGN, SIN, SINH, SKEW, SKEWP, SLN, SLOPE, SMALL, SMARTCONTRACT, SORT, SQRT, SQRTPI, STANDARDIZE, STDEV, STDEVA, STDEVP, STDEVPA, STDEVS, STEYX, SUBSTITUTE, SUBTOTAL, SUM, SUMIF, SUMIFS, SUMPRODUCT, SUMSQ, SUMX2MY2, SUMX2PY2, SUMXMY2, SWITCH, SYD, T, TALLY, TAN, TANH, TBILLEQ, TBILLPRICE, TBILLYIELD, TDIST, TDISTRT, TEXT, TEXTJOIN, TIME, TIMEVALUE, TINV, TODAY, TRANSPOSE, TREND, TRIM, TRIMMEAN, TRUE, TRUNC, TTEST, TYPE, UNICHAR, UNICODE, UNIQUE, UNISWAP, 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.12-mod-2",
3
+ "version": "4.4.12-mod-3-patch-1",
4
4
  "description": "JavaScript implementation of most Microsoft Excel formula functions",
5
5
  "author": "Formulajs",
6
6
  "publishConfig": {
@@ -1292,6 +1292,7 @@ export function DSTDEVP(database: any, field: any, criteria: any): number | Erro
1292
1292
  * @returns
1293
1293
  */
1294
1294
  export function DSUM(database: any, field: any, criteria: any): number | Error;
1295
+ export function DUNESIM(...args: any[]): Promise<any>;
1295
1296
  /**
1296
1297
  * Estimates variance based on a sample from selected database entries.
1297
1298
  *
@@ -3787,7 +3788,7 @@ export function SMARTCONTRACT(...args: any[]): Promise<any>;
3787
3788
  * @param {*} by_col Optional. A logical value indicating the desired sort direction; FALSE to sort by row (default), TRUE to sort by column
3788
3789
  * @returns
3789
3790
  */
3790
- export function SORT(array: any, sort_index?: any, sort_order?: any, by_col?: any): any;
3791
+ export function SORT(array: any, sort_index?: any, sort_order?: any, by_col?: any, ...args: any[]): any;
3791
3792
  /**
3792
3793
  * Returns a positive square root.
3793
3794
  *
@@ -1292,6 +1292,7 @@ export function DSTDEVP(database: any, field: any, criteria: any): number | Erro
1292
1292
  * @returns
1293
1293
  */
1294
1294
  export function DSUM(database: any, field: any, criteria: any): number | Error;
1295
+ export function DUNESIM(...args: any[]): Promise<any>;
1295
1296
  /**
1296
1297
  * Estimates variance based on a sample from selected database entries.
1297
1298
  *
@@ -3787,7 +3788,7 @@ export function SMARTCONTRACT(...args: any[]): Promise<any>;
3787
3788
  * @param {*} by_col Optional. A logical value indicating the desired sort direction; FALSE to sort by row (default), TRUE to sort by column
3788
3789
  * @returns
3789
3790
  */
3790
- export function SORT(array: any, sort_index?: any, sort_order?: any, by_col?: any): any;
3791
+ export function SORT(array: any, sort_index?: any, sort_order?: any, by_col?: any, ...args: any[]): any;
3791
3792
  /**
3792
3793
  * Returns a positive square root.
3793
3794
  *