iterflow 0.5.0 → 0.8.0
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/README.md +38 -20
- package/dist/fn/index.cjs +48 -22
- package/dist/fn/index.cjs.map +1 -1
- package/dist/fn/index.js +48 -22
- package/dist/fn/index.js.map +1 -1
- package/dist/index.cjs +311 -120
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +106 -140
- package/dist/index.d.ts +106 -140
- package/dist/index.js +310 -114
- package/dist/index.js.map +1 -1
- package/package.json +6 -2
package/dist/fn/index.js
CHANGED
|
@@ -181,6 +181,13 @@ function transducerToIterator(transducer) {
|
|
|
181
181
|
|
|
182
182
|
// src/fn/index.ts
|
|
183
183
|
function sum(iterable) {
|
|
184
|
+
if (Array.isArray(iterable)) {
|
|
185
|
+
let total2 = 0;
|
|
186
|
+
for (let i = 0; i < iterable.length; i++) {
|
|
187
|
+
total2 += iterable[i];
|
|
188
|
+
}
|
|
189
|
+
return total2;
|
|
190
|
+
}
|
|
184
191
|
let total = 0;
|
|
185
192
|
for (const value of iterable) {
|
|
186
193
|
total += value;
|
|
@@ -188,6 +195,14 @@ function sum(iterable) {
|
|
|
188
195
|
return total;
|
|
189
196
|
}
|
|
190
197
|
function mean(iterable) {
|
|
198
|
+
if (Array.isArray(iterable)) {
|
|
199
|
+
if (iterable.length === 0) return void 0;
|
|
200
|
+
let total2 = 0;
|
|
201
|
+
for (let i = 0; i < iterable.length; i++) {
|
|
202
|
+
total2 += iterable[i];
|
|
203
|
+
}
|
|
204
|
+
return total2 / iterable.length;
|
|
205
|
+
}
|
|
191
206
|
let total = 0;
|
|
192
207
|
let count2 = 0;
|
|
193
208
|
for (const value of iterable) {
|
|
@@ -197,6 +212,10 @@ function mean(iterable) {
|
|
|
197
212
|
return count2 === 0 ? void 0 : total / count2;
|
|
198
213
|
}
|
|
199
214
|
function min(iterable) {
|
|
215
|
+
if (Array.isArray(iterable)) {
|
|
216
|
+
if (iterable.length === 0) return void 0;
|
|
217
|
+
return Math.min(...iterable);
|
|
218
|
+
}
|
|
200
219
|
let minimum = void 0;
|
|
201
220
|
for (const value of iterable) {
|
|
202
221
|
if (minimum === void 0 || value < minimum) {
|
|
@@ -206,6 +225,10 @@ function min(iterable) {
|
|
|
206
225
|
return minimum;
|
|
207
226
|
}
|
|
208
227
|
function max(iterable) {
|
|
228
|
+
if (Array.isArray(iterable)) {
|
|
229
|
+
if (iterable.length === 0) return void 0;
|
|
230
|
+
return Math.max(...iterable);
|
|
231
|
+
}
|
|
209
232
|
let maximum = void 0;
|
|
210
233
|
for (const value of iterable) {
|
|
211
234
|
if (maximum === void 0 || value > maximum) {
|
|
@@ -215,6 +238,9 @@ function max(iterable) {
|
|
|
215
238
|
return maximum;
|
|
216
239
|
}
|
|
217
240
|
function count(iterable) {
|
|
241
|
+
if (Array.isArray(iterable)) {
|
|
242
|
+
return iterable.length;
|
|
243
|
+
}
|
|
218
244
|
let count2 = 0;
|
|
219
245
|
for (const _ of iterable) {
|
|
220
246
|
count2++;
|
|
@@ -222,18 +248,18 @@ function count(iterable) {
|
|
|
222
248
|
return count2;
|
|
223
249
|
}
|
|
224
250
|
function median(iterable) {
|
|
225
|
-
const values = Array.from(iterable);
|
|
251
|
+
const values = Array.isArray(iterable) ? iterable : Array.from(iterable);
|
|
226
252
|
if (values.length === 0) return void 0;
|
|
227
|
-
values.sort((a, b) => a - b);
|
|
228
|
-
const mid = Math.floor(
|
|
229
|
-
if (
|
|
230
|
-
return (
|
|
253
|
+
const sorted = values.slice().sort((a, b) => a - b);
|
|
254
|
+
const mid = Math.floor(sorted.length / 2);
|
|
255
|
+
if (sorted.length % 2 === 0) {
|
|
256
|
+
return (sorted[mid - 1] + sorted[mid]) / 2;
|
|
231
257
|
} else {
|
|
232
|
-
return
|
|
258
|
+
return sorted[mid];
|
|
233
259
|
}
|
|
234
260
|
}
|
|
235
261
|
function variance(iterable) {
|
|
236
|
-
const values = Array.from(iterable);
|
|
262
|
+
const values = Array.isArray(iterable) ? iterable : Array.from(iterable);
|
|
237
263
|
if (values.length === 0) return void 0;
|
|
238
264
|
const mean2 = values.reduce((sum2, val) => sum2 + val, 0) / values.length;
|
|
239
265
|
let sumSquaredDiffs = 0;
|
|
@@ -249,22 +275,22 @@ function stdDev(iterable) {
|
|
|
249
275
|
}
|
|
250
276
|
function percentile(iterable, p) {
|
|
251
277
|
validateRange(p, 0, 100, "percentile", "percentile");
|
|
252
|
-
const values = Array.from(iterable);
|
|
278
|
+
const values = Array.isArray(iterable) ? iterable : Array.from(iterable);
|
|
253
279
|
if (values.length === 0) return void 0;
|
|
254
|
-
values.sort((a, b) => a - b);
|
|
255
|
-
if (p === 0) return
|
|
256
|
-
if (p === 100) return
|
|
257
|
-
const index = p / 100 * (
|
|
280
|
+
const sorted = values.slice().sort((a, b) => a - b);
|
|
281
|
+
if (p === 0) return sorted[0];
|
|
282
|
+
if (p === 100) return sorted[sorted.length - 1];
|
|
283
|
+
const index = p / 100 * (sorted.length - 1);
|
|
258
284
|
const lower = Math.floor(index);
|
|
259
285
|
const upper = Math.ceil(index);
|
|
260
286
|
if (lower === upper) {
|
|
261
|
-
return
|
|
287
|
+
return sorted[lower];
|
|
262
288
|
}
|
|
263
289
|
const weight = index - lower;
|
|
264
|
-
return
|
|
290
|
+
return sorted[lower] * (1 - weight) + sorted[upper] * weight;
|
|
265
291
|
}
|
|
266
292
|
function mode(iterable) {
|
|
267
|
-
const values = Array.from(iterable);
|
|
293
|
+
const values = Array.isArray(iterable) ? iterable : Array.from(iterable);
|
|
268
294
|
if (values.length === 0) return void 0;
|
|
269
295
|
const frequency = /* @__PURE__ */ new Map();
|
|
270
296
|
let maxFreq = 0;
|
|
@@ -282,20 +308,20 @@ function mode(iterable) {
|
|
|
282
308
|
return modes.sort((a, b) => a - b);
|
|
283
309
|
}
|
|
284
310
|
function quartiles(iterable) {
|
|
285
|
-
const values = Array.from(iterable);
|
|
311
|
+
const values = Array.isArray(iterable) ? iterable : Array.from(iterable);
|
|
286
312
|
if (values.length === 0) return void 0;
|
|
287
|
-
values.sort((a, b) => a - b);
|
|
313
|
+
const sorted = values.slice().sort((a, b) => a - b);
|
|
288
314
|
const calculatePercentile = (p) => {
|
|
289
|
-
if (p === 0) return
|
|
290
|
-
if (p === 100) return
|
|
291
|
-
const index = p / 100 * (
|
|
315
|
+
if (p === 0) return sorted[0];
|
|
316
|
+
if (p === 100) return sorted[sorted.length - 1];
|
|
317
|
+
const index = p / 100 * (sorted.length - 1);
|
|
292
318
|
const lower = Math.floor(index);
|
|
293
319
|
const upper = Math.ceil(index);
|
|
294
320
|
if (lower === upper) {
|
|
295
|
-
return
|
|
321
|
+
return sorted[lower];
|
|
296
322
|
}
|
|
297
323
|
const weight = index - lower;
|
|
298
|
-
return
|
|
324
|
+
return sorted[lower] * (1 - weight) + sorted[upper] * weight;
|
|
299
325
|
};
|
|
300
326
|
return {
|
|
301
327
|
Q1: calculatePercentile(25),
|