@tidyjs/tidy 2.4.6 → 2.5.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/dist/es/index.js +1 -0
- package/dist/es/index.js.map +1 -1
- package/dist/es/item/rate.js +7 -7
- package/dist/es/item/rate.js.map +1 -1
- package/dist/es/mutate.js +5 -5
- package/dist/es/mutate.js.map +1 -1
- package/dist/es/summary/deviation.js.map +1 -1
- package/dist/es/summary/max.js.map +1 -1
- package/dist/es/summary/mean.js.map +1 -1
- package/dist/es/summary/meanRate.js.map +1 -1
- package/dist/es/summary/median.js.map +1 -1
- package/dist/es/summary/min.js.map +1 -1
- package/dist/es/summary/n.js +5 -1
- package/dist/es/summary/n.js.map +1 -1
- package/dist/es/summary/nDistinct.js +2 -1
- package/dist/es/summary/nDistinct.js.map +1 -1
- package/dist/es/summary/sum.js +7 -2
- package/dist/es/summary/sum.js.map +1 -1
- package/dist/es/summary/variance.js.map +1 -1
- package/dist/es/vector/cumsum.js.map +1 -1
- package/dist/es/vector/lag.js +1 -1
- package/dist/es/vector/lag.js.map +1 -1
- package/dist/es/vector/lead.js +1 -1
- package/dist/es/vector/lead.js.map +1 -1
- package/dist/es/vector/rowNumber.js +10 -0
- package/dist/es/vector/rowNumber.js.map +1 -0
- package/dist/lib/index.js +2 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/item/rate.js +7 -7
- package/dist/lib/item/rate.js.map +1 -1
- package/dist/lib/mutate.js +5 -5
- package/dist/lib/mutate.js.map +1 -1
- package/dist/lib/summary/deviation.js.map +1 -1
- package/dist/lib/summary/max.js.map +1 -1
- package/dist/lib/summary/mean.js.map +1 -1
- package/dist/lib/summary/meanRate.js.map +1 -1
- package/dist/lib/summary/median.js.map +1 -1
- package/dist/lib/summary/min.js.map +1 -1
- package/dist/lib/summary/n.js +5 -1
- package/dist/lib/summary/n.js.map +1 -1
- package/dist/lib/summary/nDistinct.js +2 -1
- package/dist/lib/summary/nDistinct.js.map +1 -1
- package/dist/lib/summary/sum.js +7 -2
- package/dist/lib/summary/sum.js.map +1 -1
- package/dist/lib/summary/variance.js.map +1 -1
- package/dist/lib/vector/cumsum.js.map +1 -1
- package/dist/lib/vector/lag.js +1 -1
- package/dist/lib/vector/lag.js.map +1 -1
- package/dist/lib/vector/lead.js +1 -1
- package/dist/lib/vector/lead.js.map +1 -1
- package/dist/lib/vector/rowNumber.js +14 -0
- package/dist/lib/vector/rowNumber.js.map +1 -0
- package/dist/tidy.d.ts +32 -17
- package/dist/umd/tidy.js +37 -18
- package/dist/umd/tidy.js.map +1 -1
- package/dist/umd/tidy.min.js +1 -1
- package/dist/umd/tidy.min.js.map +1 -1
- package/package.json +2 -2
package/dist/tidy.d.ts
CHANGED
|
@@ -125,7 +125,7 @@ declare function summarizeAll<T extends object, F extends SummaryKeyFn<T>>(summa
|
|
|
125
125
|
declare function summarizeIf<T extends object, F extends SummaryKeyFn<T>>(predicateFn: (vector: Vector<T>) => boolean, summaryFn: F): TidyFn<T, A.Compute<Record<keyof T, SummaryFnOutput<T, F>>>>;
|
|
126
126
|
declare function summarizeAt<T extends object, Keys extends (keyof T)[], F extends SummaryKeyFn<T, Keys[number]>>(keys: Keys, summaryFn: F): TidyFn<T, A.Compute<Record<Keys[number], SummaryFnOutput<T, F>>>>;
|
|
127
127
|
|
|
128
|
-
declare type MutateSpecValue<T, O = any> = ((item: T) => O) | NonFunctionValue;
|
|
128
|
+
declare type MutateSpecValue<T, O = any> = ((item: T, index: number, array: Iterable<T>) => O) | NonFunctionValue;
|
|
129
129
|
declare type MutateSpec<T> = Record<Key, MutateSpecValue<T>>;
|
|
130
130
|
declare type ResolvedObj<Obj extends Record<Key, MutateSpecValue<any>>> = {
|
|
131
131
|
[K in keyof Obj]: Obj[K] extends (...args: any) => any ? ReturnType<Obj[K]> extends any[] ? ReturnType<Obj[K]>[number] : ReturnType<Obj[K]> : Obj[K];
|
|
@@ -1269,16 +1269,16 @@ declare type Options = {
|
|
|
1269
1269
|
declare function debug<T extends object>(label?: string | null | undefined, options?: Options | null | undefined): TidyFn<T>;
|
|
1270
1270
|
|
|
1271
1271
|
declare type RateOptions<T> = {
|
|
1272
|
-
predicate?: (d: T) => boolean;
|
|
1272
|
+
predicate?: (d: T, index: number, array: Iterable<T>) => boolean;
|
|
1273
1273
|
allowDivideByZero?: boolean;
|
|
1274
1274
|
};
|
|
1275
1275
|
/**
|
|
1276
1276
|
* Returns a function that computes a rate (numerator / denominator), setting the value to
|
|
1277
1277
|
* 0 if denominator = 0 and numerator = 0.
|
|
1278
1278
|
*/
|
|
1279
|
-
declare function rate<T extends object>(numerator: keyof T | ((d: T) => number), denominator: keyof T | ((d: T) => number), options?: RateOptions<T>): (d: T) => number | undefined;
|
|
1279
|
+
declare function rate<T extends object>(numerator: keyof T | ((d: T, index: number, array: Iterable<T>) => number), denominator: keyof T | ((d: T, index: number, array: Iterable<T>) => number), options?: RateOptions<T>): (d: T, index: number, array: Iterable<T>) => number | undefined;
|
|
1280
1280
|
|
|
1281
|
-
declare function cumsum<T extends object>(key: keyof T | ((d: T) => number | null | undefined)): (items: T[]) => Float64Array;
|
|
1281
|
+
declare function cumsum<T extends object>(key: keyof T | ((d: T, index: number, array: Iterable<T>) => number | null | undefined)): (items: T[]) => Float64Array;
|
|
1282
1282
|
|
|
1283
1283
|
declare type RollOptions = {
|
|
1284
1284
|
partial?: boolean;
|
|
@@ -1310,7 +1310,7 @@ declare type LagOptions = {
|
|
|
1310
1310
|
* @param key The key or accessor to lag
|
|
1311
1311
|
* @param options Options to configure roll. e.g. whether to run on partial windows.
|
|
1312
1312
|
*/
|
|
1313
|
-
declare function lag<T extends object>(key: keyof T | ((d: T) => any), options?: LagOptions | undefined | null): (items:
|
|
1313
|
+
declare function lag<T extends object>(key: keyof T | ((d: T, index: number, array: Iterable<T>) => any), options?: LagOptions | undefined | null): (items: T[]) => any[];
|
|
1314
1314
|
|
|
1315
1315
|
declare type LeadOptions = {
|
|
1316
1316
|
/** Number of positions to lead by (default: 1) */
|
|
@@ -1324,67 +1324,82 @@ declare type LeadOptions = {
|
|
|
1324
1324
|
* @param key The key or accessor to lead
|
|
1325
1325
|
* @param options Options to configure roll. e.g. whether to run on partial windows.
|
|
1326
1326
|
*/
|
|
1327
|
-
declare function lead<T extends object>(key: keyof T | ((d: T) => any), options?: LeadOptions | undefined | null): (items:
|
|
1327
|
+
declare function lead<T extends object>(key: keyof T | ((d: T, index: number, array: Iterable<T>) => any), options?: LeadOptions | undefined | null): (items: T[]) => any[];
|
|
1328
1328
|
|
|
1329
|
+
declare type RowNumberOptions = {
|
|
1330
|
+
/** what to start row numbers at, default is 0 */
|
|
1331
|
+
startAt?: number;
|
|
1332
|
+
};
|
|
1333
|
+
/**
|
|
1334
|
+
* Returns a vector of row numbers, starting at 0
|
|
1335
|
+
*/
|
|
1336
|
+
declare function rowNumber<T>(options?: RowNumberOptions): (items: T[]) => number[];
|
|
1337
|
+
|
|
1338
|
+
declare type SumOptions<T> = {
|
|
1339
|
+
predicate?: (d: T, index: number, array: Iterable<T>) => boolean;
|
|
1340
|
+
};
|
|
1329
1341
|
/**
|
|
1330
1342
|
* Returns a function that computes the sum over an array of items
|
|
1331
1343
|
* @param key A string key of the object or an accessor converting the object to a number
|
|
1332
1344
|
*/
|
|
1333
|
-
declare function sum<T extends object>(key: keyof T | ((d: T) => number)): (items: T[]) => number;
|
|
1345
|
+
declare function sum<T extends object>(key: keyof T | ((d: T, index: number, array: Iterable<T>) => number), options?: SumOptions<T>): (items: T[]) => number;
|
|
1334
1346
|
|
|
1335
1347
|
/**
|
|
1336
1348
|
* Returns a function that computes the min over an array of items
|
|
1337
1349
|
* @param key A string key of the object or an accessor converting the object to a number
|
|
1338
1350
|
*/
|
|
1339
|
-
declare function min<T extends object>(key: keyof T | ((d: T) => number)): (items: T[]) => number | undefined;
|
|
1351
|
+
declare function min<T extends object>(key: keyof T | ((d: T, index: number, array: Iterable<T>) => number)): (items: T[]) => number | undefined;
|
|
1340
1352
|
|
|
1341
1353
|
/**
|
|
1342
1354
|
* Returns a function that computes the max over an array of items
|
|
1343
1355
|
* @param key A string key of the object or an accessor converting the object to a number
|
|
1344
1356
|
*/
|
|
1345
|
-
declare function max<T extends object>(key: keyof T | ((d: T) => number)): (items: T[]) => number | undefined;
|
|
1357
|
+
declare function max<T extends object>(key: keyof T | ((d: T, index: number, array: Iterable<T>) => number)): (items: T[]) => number | undefined;
|
|
1346
1358
|
|
|
1347
1359
|
/**
|
|
1348
1360
|
* Returns a function that computes the mean over an array of items
|
|
1349
1361
|
* @param key A string key of the object or an accessor converting the object to a number
|
|
1350
1362
|
*/
|
|
1351
|
-
declare function mean<T extends object>(key: keyof T | ((d: T) => number)): (items: T[]) => number | undefined;
|
|
1363
|
+
declare function mean<T extends object>(key: keyof T | ((d: T, index: number, array: Iterable<T>) => number)): (items: T[]) => number | undefined;
|
|
1352
1364
|
|
|
1353
1365
|
/**
|
|
1354
1366
|
* Returns a function that computes the mean of a rate over an array of items
|
|
1355
1367
|
* @param numerator A string key of the object or an accessor converting the object to a number
|
|
1356
1368
|
* @param denominator A string key of the object or an accessor converting the object to a number
|
|
1357
1369
|
*/
|
|
1358
|
-
declare function meanRate<T extends object>(numerator: keyof T | ((d: T) => number), denominator: keyof T | ((d: T) => number)): (items: T[]) => number | undefined;
|
|
1370
|
+
declare function meanRate<T extends object>(numerator: keyof T | ((d: T, index: number, array: Iterable<T>) => number), denominator: keyof T | ((d: T, index: number, array: Iterable<T>) => number)): (items: T[]) => number | undefined;
|
|
1359
1371
|
|
|
1360
1372
|
/**
|
|
1361
1373
|
* Returns a function that computes the median over an array of items
|
|
1362
1374
|
* @param key A string key of the object or an accessor converting the object to a number
|
|
1363
1375
|
*/
|
|
1364
|
-
declare function median<T extends object>(key: keyof T | ((d: T) => number)): (items: T[]) => number | undefined;
|
|
1376
|
+
declare function median<T extends object>(key: keyof T | ((d: T, index: number, array: Iterable<T>) => number)): (items: T[]) => number | undefined;
|
|
1365
1377
|
|
|
1366
1378
|
/**
|
|
1367
1379
|
* Returns a function that computes the deviation over an array of items
|
|
1368
1380
|
* @param key A string key of the object or an accessor converting the object to a number
|
|
1369
1381
|
*/
|
|
1370
|
-
declare function deviation<T extends object>(key: keyof T | ((d: T) => number)): (items: T[]) => number | undefined;
|
|
1382
|
+
declare function deviation<T extends object>(key: keyof T | ((d: T, index: number, array: Iterable<T>) => number)): (items: T[]) => number | undefined;
|
|
1371
1383
|
|
|
1372
1384
|
/**
|
|
1373
1385
|
* Returns a function that computes the variance over an array of items
|
|
1374
1386
|
* @param key A string key of the object or an accessor converting the object to a number
|
|
1375
1387
|
*/
|
|
1376
|
-
declare function variance<T extends object>(key: keyof T | ((d: T) => number)): (items: T[]) => number | undefined;
|
|
1388
|
+
declare function variance<T extends object>(key: keyof T | ((d: T, index: number, array: Iterable<T>) => number)): (items: T[]) => number | undefined;
|
|
1377
1389
|
|
|
1390
|
+
declare type NOptions<T> = {
|
|
1391
|
+
predicate?: (d: T, index: number, array: Iterable<T>) => boolean;
|
|
1392
|
+
};
|
|
1378
1393
|
/**
|
|
1379
1394
|
* Returns a function that computes the count over an array of items
|
|
1380
1395
|
*/
|
|
1381
|
-
declare function n(): (items:
|
|
1396
|
+
declare function n<T>(options?: NOptions<T>): (items: T[]) => number;
|
|
1382
1397
|
|
|
1383
1398
|
/**
|
|
1384
1399
|
* Returns a function that computes the distinct count for a key
|
|
1385
1400
|
* over an array of items. By default it counts nulls but not undefined
|
|
1386
1401
|
*/
|
|
1387
|
-
declare function nDistinct<T extends object>(key: keyof T | ((d: T) => any), options?: {
|
|
1402
|
+
declare function nDistinct<T extends object>(key: keyof T | ((d: T, index: number, array: Iterable<T>) => any), options?: {
|
|
1388
1403
|
includeNull?: boolean;
|
|
1389
1404
|
includeUndefined?: boolean;
|
|
1390
1405
|
}): (items: T[]) => number;
|
|
@@ -1454,4 +1469,4 @@ declare namespace math {
|
|
|
1454
1469
|
};
|
|
1455
1470
|
}
|
|
1456
1471
|
|
|
1457
|
-
export { Comparator, Datum, Granularity, GroupKey, Grouped, Key, KeyOrFn, LevelSpec, NonFunctionValue, Primitive, SummarizeOptions, SummarizeSpec, math as TMath, TidyContext, TidyFn, TidyGroupExportFn, Vector, addRows as addItems, addRows, arrange, asc, complete, contains, count, cumsum, debug, desc, deviation, distinct, endsWith, everything, expand, fill, filter, first, fixedOrder, fullJoin, fullSeq, fullSeqDate, fullSeqDateISOString, groupBy, innerJoin, lag, last, lead, leftJoin, map, matches, max, mean, meanRate, median, min, mutate, mutateWithSummary, n, nDistinct, negate, numRange, select as pick, pivotLonger, pivotWider, rate, rename, replaceNully, roll, select, slice, sliceHead, sliceMax, sliceMin, sliceSample, sliceTail, arrange as sort, startsWith, sum, summarize, summarizeAll, summarizeAt, summarizeIf, tally, tidy, total, totalAll, totalAt, totalIf, transmute, variance, vectorSeq, vectorSeqDate, when };
|
|
1472
|
+
export { Comparator, Datum, Granularity, GroupKey, Grouped, Key, KeyOrFn, LevelSpec, NonFunctionValue, Primitive, SummarizeOptions, SummarizeSpec, math as TMath, TidyContext, TidyFn, TidyGroupExportFn, Vector, addRows as addItems, addRows, arrange, asc, complete, contains, count, cumsum, debug, desc, deviation, distinct, endsWith, everything, expand, fill, filter, first, fixedOrder, fullJoin, fullSeq, fullSeqDate, fullSeqDateISOString, groupBy, innerJoin, lag, last, lead, leftJoin, map, matches, max, mean, meanRate, median, min, mutate, mutateWithSummary, n, nDistinct, negate, numRange, select as pick, pivotLonger, pivotWider, rate, rename, replaceNully, roll, rowNumber, select, slice, sliceHead, sliceMax, sliceMin, sliceSample, sliceTail, arrange as sort, startsWith, sum, summarize, summarizeAll, summarizeAt, summarizeIf, tally, tidy, total, totalAll, totalAt, totalIf, transmute, variance, vectorSeq, vectorSeqDate, when };
|
package/dist/umd/tidy.js
CHANGED
|
@@ -217,15 +217,15 @@
|
|
|
217
217
|
|
|
218
218
|
function mutate(mutateSpec) {
|
|
219
219
|
const _mutate = (items) => {
|
|
220
|
-
const mutatedItems =
|
|
221
|
-
|
|
222
|
-
|
|
220
|
+
const mutatedItems = items.map((d) => ({...d}));
|
|
221
|
+
let i = 0;
|
|
222
|
+
for (const mutatedItem of mutatedItems) {
|
|
223
223
|
for (const key in mutateSpec) {
|
|
224
224
|
const mutateSpecValue = mutateSpec[key];
|
|
225
|
-
const mutatedResult = typeof mutateSpecValue === "function" ? mutateSpecValue(mutatedItem) : mutateSpecValue;
|
|
225
|
+
const mutatedResult = typeof mutateSpecValue === "function" ? mutateSpecValue(mutatedItem, i, mutatedItems) : mutateSpecValue;
|
|
226
226
|
mutatedItem[key] = mutatedResult;
|
|
227
227
|
}
|
|
228
|
-
|
|
228
|
+
++i;
|
|
229
229
|
}
|
|
230
230
|
return mutatedItems;
|
|
231
231
|
};
|
|
@@ -515,12 +515,21 @@
|
|
|
515
515
|
return groupTraversal(grouped, initialOutputObject, [], addSubgroup, addLeaf);
|
|
516
516
|
}
|
|
517
517
|
|
|
518
|
-
function n() {
|
|
518
|
+
function n(options) {
|
|
519
|
+
if (options == null ? void 0 : options.predicate) {
|
|
520
|
+
const predicate = options.predicate;
|
|
521
|
+
return (items) => items.reduce((n2, d, i) => predicate(d, i, items) ? n2 + 1 : n2, 0);
|
|
522
|
+
}
|
|
519
523
|
return (items) => items.length;
|
|
520
524
|
}
|
|
521
525
|
|
|
522
|
-
function sum(key) {
|
|
523
|
-
|
|
526
|
+
function sum(key, options) {
|
|
527
|
+
let keyFn = typeof key === "function" ? key : (d) => d[key];
|
|
528
|
+
if (options == null ? void 0 : options.predicate) {
|
|
529
|
+
const originalKeyFn = keyFn;
|
|
530
|
+
const predicate = options.predicate;
|
|
531
|
+
keyFn = (d, index, array) => predicate(d, index, array) ? originalKeyFn(d, index, array) : 0;
|
|
532
|
+
}
|
|
524
533
|
return (items) => d3Array.fsum(items, keyFn);
|
|
525
534
|
}
|
|
526
535
|
|
|
@@ -1105,15 +1114,15 @@
|
|
|
1105
1114
|
const numeratorFn = typeof numerator === "function" ? numerator : (d) => d[numerator];
|
|
1106
1115
|
const denominatorFn = typeof denominator === "function" ? denominator : (d) => d[denominator];
|
|
1107
1116
|
const {predicate, allowDivideByZero} = options != null ? options : {};
|
|
1108
|
-
return predicate == null ? (d) => {
|
|
1109
|
-
const denom = denominatorFn(d);
|
|
1110
|
-
const numer = numeratorFn(d);
|
|
1117
|
+
return predicate == null ? (d, index, array) => {
|
|
1118
|
+
const denom = denominatorFn(d, index, array);
|
|
1119
|
+
const numer = numeratorFn(d, index, array);
|
|
1111
1120
|
return rate(numer, denom, allowDivideByZero);
|
|
1112
|
-
} : (d) => {
|
|
1113
|
-
if (!predicate(d))
|
|
1121
|
+
} : (d, index, array) => {
|
|
1122
|
+
if (!predicate(d, index, array))
|
|
1114
1123
|
return void 0;
|
|
1115
|
-
const denom = denominatorFn(d);
|
|
1116
|
-
const numer = numeratorFn(d);
|
|
1124
|
+
const denom = denominatorFn(d, index, array);
|
|
1125
|
+
const numer = numeratorFn(d, index, array);
|
|
1117
1126
|
return rate(numer, denom, allowDivideByZero);
|
|
1118
1127
|
};
|
|
1119
1128
|
}
|
|
@@ -1160,7 +1169,7 @@
|
|
|
1160
1169
|
return (items) => {
|
|
1161
1170
|
return items.map((_, i) => {
|
|
1162
1171
|
const lagItem = items[i - n];
|
|
1163
|
-
return lagItem == null ? defaultValue : keyFn(lagItem);
|
|
1172
|
+
return lagItem == null ? defaultValue : keyFn(lagItem, i, items);
|
|
1164
1173
|
});
|
|
1165
1174
|
};
|
|
1166
1175
|
}
|
|
@@ -1171,11 +1180,19 @@
|
|
|
1171
1180
|
return (items) => {
|
|
1172
1181
|
return items.map((_, i) => {
|
|
1173
1182
|
const leadItem = items[i + n];
|
|
1174
|
-
return leadItem == null ? defaultValue : keyFn(leadItem);
|
|
1183
|
+
return leadItem == null ? defaultValue : keyFn(leadItem, i, items);
|
|
1175
1184
|
});
|
|
1176
1185
|
};
|
|
1177
1186
|
}
|
|
1178
1187
|
|
|
1188
|
+
function rowNumber(options) {
|
|
1189
|
+
var _a;
|
|
1190
|
+
const startAt = (_a = options == null ? void 0 : options.startAt) != null ? _a : 0;
|
|
1191
|
+
return (items) => {
|
|
1192
|
+
return items.map((_, i) => i + startAt);
|
|
1193
|
+
};
|
|
1194
|
+
}
|
|
1195
|
+
|
|
1179
1196
|
function min(key) {
|
|
1180
1197
|
const keyFn = typeof key === "function" ? key : (d) => d[key];
|
|
1181
1198
|
return (items) => d3Array.min(items, keyFn);
|
|
@@ -1221,8 +1238,9 @@
|
|
|
1221
1238
|
return (items) => {
|
|
1222
1239
|
const uniques = new Map();
|
|
1223
1240
|
let count = 0;
|
|
1241
|
+
let i = 0;
|
|
1224
1242
|
for (const item of items) {
|
|
1225
|
-
const value = keyFn(item);
|
|
1243
|
+
const value = keyFn(item, i++, items);
|
|
1226
1244
|
if (!uniques.has(value)) {
|
|
1227
1245
|
if (!options.includeUndefined && value === void 0 || options.includeNull === false && value === null) {
|
|
1228
1246
|
continue;
|
|
@@ -1356,6 +1374,7 @@
|
|
|
1356
1374
|
exports.rename = rename;
|
|
1357
1375
|
exports.replaceNully = replaceNully;
|
|
1358
1376
|
exports.roll = roll;
|
|
1377
|
+
exports.rowNumber = rowNumber;
|
|
1359
1378
|
exports.select = select;
|
|
1360
1379
|
exports.slice = slice;
|
|
1361
1380
|
exports.sliceHead = sliceHead;
|