@tidyjs/tidy 2.4.5 → 2.5.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.
Files changed (70) hide show
  1. package/dist/es/groupBy.js.map +1 -1
  2. package/dist/es/index.js +1 -0
  3. package/dist/es/index.js.map +1 -1
  4. package/dist/es/item/rate.js +7 -7
  5. package/dist/es/item/rate.js.map +1 -1
  6. package/dist/es/mutate.js +5 -5
  7. package/dist/es/mutate.js.map +1 -1
  8. package/dist/es/summary/deviation.js.map +1 -1
  9. package/dist/es/summary/first.js.map +1 -1
  10. package/dist/es/summary/last.js.map +1 -1
  11. package/dist/es/summary/max.js.map +1 -1
  12. package/dist/es/summary/mean.js.map +1 -1
  13. package/dist/es/summary/meanRate.js.map +1 -1
  14. package/dist/es/summary/median.js.map +1 -1
  15. package/dist/es/summary/min.js.map +1 -1
  16. package/dist/es/summary/n.js +5 -1
  17. package/dist/es/summary/n.js.map +1 -1
  18. package/dist/es/summary/nDistinct.js +2 -1
  19. package/dist/es/summary/nDistinct.js.map +1 -1
  20. package/dist/es/summary/sum.js +7 -2
  21. package/dist/es/summary/sum.js.map +1 -1
  22. package/dist/es/summary/variance.js.map +1 -1
  23. package/dist/es/total.js.map +1 -1
  24. package/dist/es/vector/cumsum.js.map +1 -1
  25. package/dist/es/vector/lag.js +1 -1
  26. package/dist/es/vector/lag.js.map +1 -1
  27. package/dist/es/vector/lead.js +1 -1
  28. package/dist/es/vector/lead.js.map +1 -1
  29. package/dist/es/vector/roll.js +4 -3
  30. package/dist/es/vector/roll.js.map +1 -1
  31. package/dist/es/vector/rowNumber.js +10 -0
  32. package/dist/es/vector/rowNumber.js.map +1 -0
  33. package/dist/lib/groupBy.js.map +1 -1
  34. package/dist/lib/index.js +2 -0
  35. package/dist/lib/index.js.map +1 -1
  36. package/dist/lib/item/rate.js +7 -7
  37. package/dist/lib/item/rate.js.map +1 -1
  38. package/dist/lib/mutate.js +5 -5
  39. package/dist/lib/mutate.js.map +1 -1
  40. package/dist/lib/summary/deviation.js.map +1 -1
  41. package/dist/lib/summary/first.js.map +1 -1
  42. package/dist/lib/summary/last.js.map +1 -1
  43. package/dist/lib/summary/max.js.map +1 -1
  44. package/dist/lib/summary/mean.js.map +1 -1
  45. package/dist/lib/summary/meanRate.js.map +1 -1
  46. package/dist/lib/summary/median.js.map +1 -1
  47. package/dist/lib/summary/min.js.map +1 -1
  48. package/dist/lib/summary/n.js +5 -1
  49. package/dist/lib/summary/n.js.map +1 -1
  50. package/dist/lib/summary/nDistinct.js +2 -1
  51. package/dist/lib/summary/nDistinct.js.map +1 -1
  52. package/dist/lib/summary/sum.js +7 -2
  53. package/dist/lib/summary/sum.js.map +1 -1
  54. package/dist/lib/summary/variance.js.map +1 -1
  55. package/dist/lib/total.js.map +1 -1
  56. package/dist/lib/vector/cumsum.js.map +1 -1
  57. package/dist/lib/vector/lag.js +1 -1
  58. package/dist/lib/vector/lag.js.map +1 -1
  59. package/dist/lib/vector/lead.js +1 -1
  60. package/dist/lib/vector/lead.js.map +1 -1
  61. package/dist/lib/vector/roll.js +4 -3
  62. package/dist/lib/vector/roll.js.map +1 -1
  63. package/dist/lib/vector/rowNumber.js +14 -0
  64. package/dist/lib/vector/rowNumber.js.map +1 -0
  65. package/dist/tidy.d.ts +893 -32
  66. package/dist/umd/tidy.js +41 -21
  67. package/dist/umd/tidy.js.map +1 -1
  68. package/dist/umd/tidy.min.js +1 -1
  69. package/dist/umd/tidy.min.js.map +1 -1
  70. package/package.json +2 -2
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
- for (const item of items) {
222
- const mutatedItem = {...item};
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
- mutatedItems.push(mutatedItem);
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
- const keyFn = typeof key === "function" ? key : (d) => d[key];
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
  }
@@ -1139,11 +1148,12 @@
1139
1148
  }
1140
1149
 
1141
1150
  function roll(width, rollFn, options) {
1142
- const {partial = false} = options != null ? options : {};
1151
+ const {partial = false, align = "right"} = options != null ? options : {};
1152
+ const halfWidth = Math.floor(width / 2);
1143
1153
  return (items) => {
1144
1154
  return items.map((_, i) => {
1145
- const endIndex = i;
1146
- if (!partial && endIndex - width + 1 < 0) {
1155
+ const endIndex = align === "right" ? i : align === "center" ? i + halfWidth : i + width - 1;
1156
+ if (!partial && (endIndex - width + 1 < 0 || endIndex >= items.length)) {
1147
1157
  return void 0;
1148
1158
  }
1149
1159
  const startIndex = Math.max(0, endIndex - width + 1);
@@ -1159,7 +1169,7 @@
1159
1169
  return (items) => {
1160
1170
  return items.map((_, i) => {
1161
1171
  const lagItem = items[i - n];
1162
- return lagItem == null ? defaultValue : keyFn(lagItem);
1172
+ return lagItem == null ? defaultValue : keyFn(lagItem, i, items);
1163
1173
  });
1164
1174
  };
1165
1175
  }
@@ -1170,11 +1180,19 @@
1170
1180
  return (items) => {
1171
1181
  return items.map((_, i) => {
1172
1182
  const leadItem = items[i + n];
1173
- return leadItem == null ? defaultValue : keyFn(leadItem);
1183
+ return leadItem == null ? defaultValue : keyFn(leadItem, i, items);
1174
1184
  });
1175
1185
  };
1176
1186
  }
1177
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
+
1178
1196
  function min(key) {
1179
1197
  const keyFn = typeof key === "function" ? key : (d) => d[key];
1180
1198
  return (items) => d3Array.min(items, keyFn);
@@ -1220,8 +1238,9 @@
1220
1238
  return (items) => {
1221
1239
  const uniques = new Map();
1222
1240
  let count = 0;
1241
+ let i = 0;
1223
1242
  for (const item of items) {
1224
- const value = keyFn(item);
1243
+ const value = keyFn(item, i++, items);
1225
1244
  if (!uniques.has(value)) {
1226
1245
  if (!options.includeUndefined && value === void 0 || options.includeNull === false && value === null) {
1227
1246
  continue;
@@ -1355,6 +1374,7 @@
1355
1374
  exports.rename = rename;
1356
1375
  exports.replaceNully = replaceNully;
1357
1376
  exports.roll = roll;
1377
+ exports.rowNumber = rowNumber;
1358
1378
  exports.select = select;
1359
1379
  exports.slice = slice;
1360
1380
  exports.sliceHead = sliceHead;