@fileverse-dev/formulajs 4.4.11-mod-15-patch-1 → 4.4.11-mod-16

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
@@ -5182,9 +5182,47 @@ Z.TEST = (array, x, sigma) => {
5182
5182
  return 1 - NORM.S.DIST((AVERAGE(array) - x) / (sigma / Math.sqrt(n)), true)
5183
5183
  };
5184
5184
 
5185
- function PnL(){
5186
- console.log({ARR_ARGS: argsToArray(arguments), arguments});
5187
- return 12
5185
+ function PNL(){
5186
+ const [A, B] = argsToArray(arguments);
5187
+
5188
+ // Handle single numbers
5189
+ if (typeof A === "number" && typeof B === "number") {
5190
+ return A - B;
5191
+ }
5192
+
5193
+ // Handle 1D arrays
5194
+ if (Array.isArray(A) && Array.isArray(B) && typeof A[0] === "number") {
5195
+ if (A.length !== B.length) throw new Error("1D arrays must match in length");
5196
+ return A.reduce((sum, val, i) => sum + (val - B[i]), 0);
5197
+ }
5198
+
5199
+ // Handle 2D arrays
5200
+ if (Array.isArray(A[0]) && typeof A[0][0] === "number") {
5201
+ let total = 0;
5202
+ for (let i = 0; i < A.length; i++) {
5203
+ if (A[i].length !== B[i].length) throw new Error(`Row ${i} length mismatch`);
5204
+ for (let j = 0; j < A[i].length; j++) {
5205
+ total += A[i][j] - B[i][j];
5206
+ }
5207
+ }
5208
+ return total;
5209
+ }
5210
+
5211
+ // Handle 3D arrays
5212
+ if (Array.isArray(A[0][0])) {
5213
+ let total = 0;
5214
+ for (let i = 0; i < A.length; i++) {
5215
+ for (let j = 0; j < A[i].length; j++) {
5216
+ for (let k = 0; k < A[i][j].length; k++) {
5217
+ total += A[i][j][k] - B[i][j][k];
5218
+ }
5219
+ }
5220
+ }
5221
+ return total;
5222
+ }
5223
+
5224
+ throw new Error("Unsupported or mismatched structure");
5225
+
5188
5226
  }
5189
5227
 
5190
5228
  /**
@@ -6881,6 +6919,8 @@ function SUBTOTAL(function_num, ref1) {
6881
6919
  function SUM() {
6882
6920
  let result = 0;
6883
6921
 
6922
+ console.log("LLLLO", argsToArray(arguments), {arguments});
6923
+
6884
6924
  arrayEach(argsToArray(arguments), (value) => {
6885
6925
  if (result instanceof Error) {
6886
6926
  return false
@@ -12961,6 +13001,22 @@ const SERVICE_API_KEY = {
12961
13001
  BASESCAN: 'Basescan'
12962
13002
  };
12963
13003
 
13004
+ const CHAIN_ID_MAP = {
13005
+ ethereum: 1,
13006
+ gnosis: 100,
13007
+ base: 8453,
13008
+ };
13009
+
13010
+ const fromTimeStampToBlock = async (timestamp, chain, apiKey) => {
13011
+ if(!timestamp || !chain || !apiKey) return
13012
+ const chainId = CHAIN_ID_MAP[chain];
13013
+ const url = `https://api.etherscan.io/v2/api?module=block&action=getblocknobytime&timestamp=${timestamp}&closest=before&apikey=${apiKey}&chainId=${chainId}`;
13014
+ const res = await fetch(url);
13015
+ const json = await res.json();
13016
+ return parseInt(json.result);
13017
+
13018
+ };
13019
+
12964
13020
  async function ETHERSCAN(address, page, offset) {
12965
13021
  const API_KEY = window.localStorage.getItem(SERVICE_API_KEY.Etherscan);
12966
13022
  const url = `https://api.etherscan.io/api?module=account&action=txlist&address=${address}&startblock=0&endblock=99999999&page=${page}&offset=${offset}&sort=asc&apikey=${API_KEY}`;
@@ -13026,37 +13082,23 @@ async function OX(address, categories, chain, startTime, endTime) {
13026
13082
  gnosis: window.localStorage.getItem(SERVICE_API_KEY.Gnosisscan),
13027
13083
  base: window.localStorage.getItem(SERVICE_API_KEY.Basescan),
13028
13084
  };
13029
-
13030
- const CHAIN_API_BASE = {
13031
- ethereum: 'https://api.etherscan.io/api',
13032
- gnosis: 'https://api.gnosisscan.io/api',
13033
- base: 'https://api.basescan.org/api',
13034
- };
13035
-
13036
13085
  const apiKey = API_KEYS[chain];
13037
- const baseUrl = CHAIN_API_BASE[chain];
13038
-
13039
- const timeToBlock = async (timestamp) => {
13040
- try {
13041
- const url = `${baseUrl}?module=block&action=getblocknobytime&timestamp=${timestamp}&closest=before&apikey=${apiKey}`;
13042
- const res = await fetch(url);
13043
- const json = await res.json();
13044
- return parseInt(json.result);
13045
- } catch {
13046
- return 0;
13047
- }
13048
- };
13049
-
13050
- const startBlock = await timeToBlock(startTime);
13051
- const endBlock = await timeToBlock(endTime);
13086
+ const chainId = CHAIN_ID_MAP[chain];
13087
+ if (!apiKey || !chainId) return `${chain.toUpperCase()}_MISSING`;
13052
13088
 
13053
13089
  let action = '';
13054
- if (categories === 'txns') action = 'txlist';
13055
- else if (categories === 'balances') action = 'balance';
13056
- else if (categories === 'portfolio') action = 'tokentx';
13057
-
13058
- let url = `${baseUrl}?module=account&action=${action}&address=${address}&startblock=${startBlock}&endblock=${endBlock}&sort=asc&apikey=${apiKey}`;
13059
-
13090
+ if (categories === 'txns') action = 'account.txlist';
13091
+ else {action = 'account.balance';} let timeQuery = '';
13092
+ if(!isNaN(startTime) && !isNaN(endTime)){
13093
+ const startBlock = await fromTimeStampToBlock(startTime, chain, apiKey);
13094
+ const endBlock = await fromTimeStampToBlock(endTime, chain, apiKey);
13095
+ timeQuery = `&startblock=${startBlock}&endblock=${endBlock}`;
13096
+ } else if(categories === 'balance') {
13097
+ timeQuery = `&tag=latest`;
13098
+ } else {
13099
+ throw new Error('Start and End Time is required for querying transaction list ')
13100
+ }
13101
+ 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}`;
13060
13102
  try {
13061
13103
  const response = await fetch(url);
13062
13104
  if (!response.ok) throw new Error(`HTTP error! Status: ${response.status}`);
@@ -13064,10 +13106,9 @@ async function OX(address, categories, chain, startTime, endTime) {
13064
13106
  if (json.result?.includes?.("Invalid API Key")) {
13065
13107
  return `${SERVICE_API_KEY[chain.charAt(0).toUpperCase() + chain.slice(1)]}_MISSING`;
13066
13108
  }
13067
-
13068
- console.log({ANSWER: json.result });
13069
13109
  return json.result;
13070
13110
  } catch (e) {
13111
+ console.log(e);
13071
13112
  return "ERROR IN FETCHING";
13072
13113
  }
13073
13114
  }
@@ -13366,6 +13407,7 @@ exports.PERMUTATIONA = PERMUTATIONA;
13366
13407
  exports.PHI = PHI;
13367
13408
  exports.PI = PI;
13368
13409
  exports.PMT = PMT;
13410
+ exports.PNL = PNL;
13369
13411
  exports.POISSON = POISSON;
13370
13412
  exports.POISSONDIST = POISSONDIST;
13371
13413
  exports.POWER = POWER;
@@ -13375,7 +13417,6 @@ exports.PROB = PROB;
13375
13417
  exports.PRODUCT = PRODUCT;
13376
13418
  exports.PROPER = PROPER;
13377
13419
  exports.PV = PV;
13378
- exports.PnL = PnL;
13379
13420
  exports.QUARTILE = QUARTILE;
13380
13421
  exports.QUARTILEEXC = QUARTILEEXC;
13381
13422
  exports.QUARTILEINC = QUARTILEINC;
@@ -42,14 +42,13 @@ var FUNCTION_LOCALE = [
42
42
  },
43
43
  {
44
44
  API_KEY: SERVICE_API_KEY.Etherscan,
45
- LOGO: "https://raw.githubusercontent.com/mritunjayz/github-storage/refs/heads/main/ox.png",
46
- // Replace with actual logo if available
47
- BRAND_COLOR: "#E5E5E5",
48
- BRAND_SECONDARY_COLOR: "#1A1A1A",
45
+ LOGO: "https://raw.githubusercontent.com/mritunjayz/github-storage/refs/heads/main/1689874988430.jpeg",
46
+ BRAND_COLOR: "#F6F7F8",
47
+ BRAND_SECONDARY_COLOR: "#21325B",
49
48
  n: "Ox",
50
49
  t: 20,
51
50
  d: "Fetches address data like transactions, balances, or portfolio info from multiple supported chains.",
52
- a: "Dynamically queries blockchain data such as transactions, balances, or token portfolio by resolving time ranges to block ranges.",
51
+ a: "Dynamically queries blockchain data such as transactions, balances by resolving time ranges to block ranges.",
53
52
  p: [
54
53
  {
55
54
  name: "address",
@@ -59,7 +58,7 @@ var FUNCTION_LOCALE = [
59
58
  },
60
59
  {
61
60
  name: "categories",
62
- detail: `Type of data to fetch. Supported values: "txns", "balances", "portfolio".`,
61
+ detail: `Type of data to fetch. Supported values: "txns", "balance".`,
63
62
  example: `"txns"`,
64
63
  require: "m"
65
64
  },
@@ -71,14 +70,14 @@ var FUNCTION_LOCALE = [
71
70
  },
72
71
  {
73
72
  name: "startTime",
74
- detail: "Start time in UNIX timestamp (seconds). Will be converted to a starting block.",
73
+ detail: "Start time in UNIX timestamp (seconds). Will be converted to a starting block. Required for txns category",
75
74
  example: "1680300000",
76
75
  require: "m",
77
76
  type: "rangenumber"
78
77
  },
79
78
  {
80
79
  name: "endTime",
81
- detail: "End time in UNIX timestamp (seconds). Will be converted to an ending block.",
80
+ detail: "End time in UNIX timestamp (seconds). Will be converted to an ending block. Required for txns category",
82
81
  example: "1680900000",
83
82
  require: "m",
84
83
  type: "rangenumber"
@@ -125,26 +124,6 @@ var FUNCTION_LOCALE = [
125
124
  require: "m"
126
125
  }
127
126
  ]
128
- },
129
- {
130
- n: "PnL",
131
- t: 20,
132
- d: "Query the prices of one or more coins by using their unique Coin API IDs, symbols, or names.",
133
- a: "Query the prices of one or more coins by using their unique Coin API IDs, symbols, or names.",
134
- p: [
135
- {
136
- name: "token",
137
- detail: "coins' IDs, comma-separated if querying more than 1 coin.",
138
- example: `"bitcoin"`,
139
- require: "m"
140
- },
141
- {
142
- name: "vs_currency",
143
- detail: "target currency of coins, comma-separated if querying more than 1 currency",
144
- example: `"usd"`,
145
- require: "m"
146
- }
147
- ]
148
127
  }
149
128
  ];
150
129
  export {
package/lib/esm/index.mjs CHANGED
@@ -5180,9 +5180,47 @@ Z.TEST = (array, x, sigma) => {
5180
5180
  return 1 - NORM.S.DIST((AVERAGE(array) - x) / (sigma / Math.sqrt(n)), true)
5181
5181
  };
5182
5182
 
5183
- function PnL(){
5184
- console.log({ARR_ARGS: argsToArray(arguments), arguments});
5185
- return 12
5183
+ function PNL(){
5184
+ const [A, B] = argsToArray(arguments);
5185
+
5186
+ // Handle single numbers
5187
+ if (typeof A === "number" && typeof B === "number") {
5188
+ return A - B;
5189
+ }
5190
+
5191
+ // Handle 1D arrays
5192
+ if (Array.isArray(A) && Array.isArray(B) && typeof A[0] === "number") {
5193
+ if (A.length !== B.length) throw new Error("1D arrays must match in length");
5194
+ return A.reduce((sum, val, i) => sum + (val - B[i]), 0);
5195
+ }
5196
+
5197
+ // Handle 2D arrays
5198
+ if (Array.isArray(A[0]) && typeof A[0][0] === "number") {
5199
+ let total = 0;
5200
+ for (let i = 0; i < A.length; i++) {
5201
+ if (A[i].length !== B[i].length) throw new Error(`Row ${i} length mismatch`);
5202
+ for (let j = 0; j < A[i].length; j++) {
5203
+ total += A[i][j] - B[i][j];
5204
+ }
5205
+ }
5206
+ return total;
5207
+ }
5208
+
5209
+ // Handle 3D arrays
5210
+ if (Array.isArray(A[0][0])) {
5211
+ let total = 0;
5212
+ for (let i = 0; i < A.length; i++) {
5213
+ for (let j = 0; j < A[i].length; j++) {
5214
+ for (let k = 0; k < A[i][j].length; k++) {
5215
+ total += A[i][j][k] - B[i][j][k];
5216
+ }
5217
+ }
5218
+ }
5219
+ return total;
5220
+ }
5221
+
5222
+ throw new Error("Unsupported or mismatched structure");
5223
+
5186
5224
  }
5187
5225
 
5188
5226
  /**
@@ -6879,6 +6917,8 @@ function SUBTOTAL(function_num, ref1) {
6879
6917
  function SUM() {
6880
6918
  let result = 0;
6881
6919
 
6920
+ console.log("LLLLO", argsToArray(arguments), {arguments});
6921
+
6882
6922
  arrayEach(argsToArray(arguments), (value) => {
6883
6923
  if (result instanceof Error) {
6884
6924
  return false
@@ -12959,6 +12999,22 @@ const SERVICE_API_KEY = {
12959
12999
  BASESCAN: 'Basescan'
12960
13000
  };
12961
13001
 
13002
+ const CHAIN_ID_MAP = {
13003
+ ethereum: 1,
13004
+ gnosis: 100,
13005
+ base: 8453,
13006
+ };
13007
+
13008
+ const fromTimeStampToBlock = async (timestamp, chain, apiKey) => {
13009
+ if(!timestamp || !chain || !apiKey) return
13010
+ const chainId = CHAIN_ID_MAP[chain];
13011
+ const url = `https://api.etherscan.io/v2/api?module=block&action=getblocknobytime&timestamp=${timestamp}&closest=before&apikey=${apiKey}&chainId=${chainId}`;
13012
+ const res = await fetch(url);
13013
+ const json = await res.json();
13014
+ return parseInt(json.result);
13015
+
13016
+ };
13017
+
12962
13018
  async function ETHERSCAN(address, page, offset) {
12963
13019
  const API_KEY = window.localStorage.getItem(SERVICE_API_KEY.Etherscan);
12964
13020
  const url = `https://api.etherscan.io/api?module=account&action=txlist&address=${address}&startblock=0&endblock=99999999&page=${page}&offset=${offset}&sort=asc&apikey=${API_KEY}`;
@@ -13024,37 +13080,23 @@ async function OX(address, categories, chain, startTime, endTime) {
13024
13080
  gnosis: window.localStorage.getItem(SERVICE_API_KEY.Gnosisscan),
13025
13081
  base: window.localStorage.getItem(SERVICE_API_KEY.Basescan),
13026
13082
  };
13027
-
13028
- const CHAIN_API_BASE = {
13029
- ethereum: 'https://api.etherscan.io/api',
13030
- gnosis: 'https://api.gnosisscan.io/api',
13031
- base: 'https://api.basescan.org/api',
13032
- };
13033
-
13034
13083
  const apiKey = API_KEYS[chain];
13035
- const baseUrl = CHAIN_API_BASE[chain];
13036
-
13037
- const timeToBlock = async (timestamp) => {
13038
- try {
13039
- const url = `${baseUrl}?module=block&action=getblocknobytime&timestamp=${timestamp}&closest=before&apikey=${apiKey}`;
13040
- const res = await fetch(url);
13041
- const json = await res.json();
13042
- return parseInt(json.result);
13043
- } catch {
13044
- return 0;
13045
- }
13046
- };
13047
-
13048
- const startBlock = await timeToBlock(startTime);
13049
- const endBlock = await timeToBlock(endTime);
13084
+ const chainId = CHAIN_ID_MAP[chain];
13085
+ if (!apiKey || !chainId) return `${chain.toUpperCase()}_MISSING`;
13050
13086
 
13051
13087
  let action = '';
13052
- if (categories === 'txns') action = 'txlist';
13053
- else if (categories === 'balances') action = 'balance';
13054
- else if (categories === 'portfolio') action = 'tokentx';
13055
-
13056
- let url = `${baseUrl}?module=account&action=${action}&address=${address}&startblock=${startBlock}&endblock=${endBlock}&sort=asc&apikey=${apiKey}`;
13057
-
13088
+ if (categories === 'txns') action = 'account.txlist';
13089
+ else {action = 'account.balance';} let timeQuery = '';
13090
+ if(!isNaN(startTime) && !isNaN(endTime)){
13091
+ const startBlock = await fromTimeStampToBlock(startTime, chain, apiKey);
13092
+ const endBlock = await fromTimeStampToBlock(endTime, chain, apiKey);
13093
+ timeQuery = `&startblock=${startBlock}&endblock=${endBlock}`;
13094
+ } else if(categories === 'balance') {
13095
+ timeQuery = `&tag=latest`;
13096
+ } else {
13097
+ throw new Error('Start and End Time is required for querying transaction list ')
13098
+ }
13099
+ 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}`;
13058
13100
  try {
13059
13101
  const response = await fetch(url);
13060
13102
  if (!response.ok) throw new Error(`HTTP error! Status: ${response.status}`);
@@ -13062,10 +13104,9 @@ async function OX(address, categories, chain, startTime, endTime) {
13062
13104
  if (json.result?.includes?.("Invalid API Key")) {
13063
13105
  return `${SERVICE_API_KEY[chain.charAt(0).toUpperCase() + chain.slice(1)]}_MISSING`;
13064
13106
  }
13065
-
13066
- console.log({ANSWER: json.result });
13067
13107
  return json.result;
13068
13108
  } catch (e) {
13109
+ console.log(e);
13069
13110
  return "ERROR IN FETCHING";
13070
13111
  }
13071
13112
  }
@@ -13081,4 +13122,4 @@ async function FLVURL(token, vs_currencies) {
13081
13122
 
13082
13123
  const utils = { errors, symbols, date };
13083
13124
 
13084
- 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, CEILING, CEILINGMATH, CEILINGPRECISE, CHAR, CHIDIST, CHIDISTRT, CHIINV, CHIINVRT, CHISQ, CHITEST, CHOOSE, CLEAN, CODE, 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, 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, GETPRICE, 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, 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, NOMINAL, NORM, NORMDIST, NORMINV, NORMSDIST, NORMSINV, NOT, NOW, NPER, NPV, NUMBERVALUE, OCT2BIN, OCT2DEC, OCT2HEX, ODD, OR, OX, PDURATION, PEARSON, PERCENTILE, PERCENTILEEXC, PERCENTILEINC, PERCENTRANK, PERCENTRANKEXC, PERCENTRANKINC, PERMUT, PERMUTATIONA, PHI, PI, PMT, POISSON, POISSONDIST, POWER, PPMT, PRICEDISC, PROB, PRODUCT, PROPER, PV, PnL, QUARTILE, QUARTILEEXC, QUARTILEINC, QUOTIENT, RADIANS, RAND, RANDBETWEEN, RANK, RANKAVG, RANKEQ, RATE, REPLACE, REPT, RIGHT, ROMAN, ROUND, ROUNDDOWN, ROUNDUP, ROW, ROWS, RRI, RSQ, 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, XIRR, XNPV, XOR, YEAR, YEARFRAC, Z, ZTEST, utils };
13125
+ 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, CEILING, CEILINGMATH, CEILINGPRECISE, CHAR, CHIDIST, CHIDISTRT, CHIINV, CHIINVRT, CHISQ, CHITEST, CHOOSE, CLEAN, CODE, 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, 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, GETPRICE, 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, 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, NOMINAL, NORM, NORMDIST, NORMINV, NORMSDIST, NORMSINV, NOT, NOW, NPER, NPV, NUMBERVALUE, OCT2BIN, OCT2DEC, OCT2HEX, ODD, OR, OX, 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, 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, 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-15-patch-1",
3
+ "version": "4.4.11-mod-16",
4
4
  "description": "JavaScript implementation of most Microsoft Excel formula functions",
5
5
  "author": "Formulajs",
6
6
  "publishConfig": {
@@ -3157,6 +3157,7 @@ export function PI(): number;
3157
3157
  * @returns
3158
3158
  */
3159
3159
  export function PMT(rate: any, nper: any, pv: any, fv: any, type: any): number | Error;
3160
+ export function PNL(...args: any[]): any;
3160
3161
  export namespace POISSON {
3161
3162
  /**
3162
3163
  * Returns the Poisson distribution.
@@ -3262,7 +3263,6 @@ export function PROPER(text: any): any;
3262
3263
  * @returns
3263
3264
  */
3264
3265
  export function PV(rate: any, per: any, pmt: any, fv: any, type: any): number | Error;
3265
- export function PnL(...args: any[]): number;
3266
3266
  export namespace QUARTILE {
3267
3267
  /**
3268
3268
  * Returns the quartile of the data set, based on percentile values from 0..1, exclusive.
@@ -3157,6 +3157,7 @@ export function PI(): number;
3157
3157
  * @returns
3158
3158
  */
3159
3159
  export function PMT(rate: any, nper: any, pv: any, fv: any, type: any): number | Error;
3160
+ export function PNL(...args: any[]): any;
3160
3161
  export namespace POISSON {
3161
3162
  /**
3162
3163
  * Returns the Poisson distribution.
@@ -3262,7 +3263,6 @@ export function PROPER(text: any): any;
3262
3263
  * @returns
3263
3264
  */
3264
3265
  export function PV(rate: any, per: any, pmt: any, fv: any, type: any): number | Error;
3265
- export function PnL(...args: any[]): number;
3266
3266
  export namespace QUARTILE {
3267
3267
  /**
3268
3268
  * Returns the quartile of the data set, based on percentile values from 0..1, exclusive.