@tidyjs/tidy 2.5.2 → 2.6.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/dist/es/addRows.js.map +1 -1
- package/dist/es/arrange.js +9 -5
- package/dist/es/arrange.js.map +1 -1
- package/dist/es/complete.js.map +1 -1
- package/dist/es/count.js +6 -2
- package/dist/es/count.js.map +1 -1
- package/dist/es/debug.js +4 -2
- package/dist/es/debug.js.map +1 -1
- package/dist/es/distinct.js +3 -3
- package/dist/es/distinct.js.map +1 -1
- package/dist/es/expand.js +18 -13
- package/dist/es/expand.js.map +1 -1
- package/dist/es/fill.js +10 -3
- package/dist/es/fill.js.map +1 -1
- package/dist/es/filter.js.map +1 -1
- package/dist/es/fullJoin.js +23 -20
- package/dist/es/fullJoin.js.map +1 -1
- package/dist/es/groupBy.js +56 -28
- package/dist/es/groupBy.js.map +1 -1
- package/dist/es/helpers/assignGroupKeys.js +4 -4
- package/dist/es/helpers/assignGroupKeys.js.map +1 -1
- package/dist/es/helpers/groupMap.js +2 -2
- package/dist/es/helpers/groupMap.js.map +1 -1
- package/dist/es/helpers/groupTraversal.js +5 -4
- package/dist/es/helpers/groupTraversal.js.map +1 -1
- package/dist/es/helpers/identity.js.map +1 -1
- package/dist/es/helpers/isObject.js.map +1 -1
- package/dist/es/helpers/keysFromItems.js +1 -2
- package/dist/es/helpers/keysFromItems.js.map +1 -1
- package/dist/es/helpers/singleOrArray.js.map +1 -1
- package/dist/es/helpers/summation.js +11 -3
- package/dist/es/helpers/summation.js.map +1 -1
- package/dist/es/innerJoin.js +37 -12
- package/dist/es/innerJoin.js.map +1 -1
- package/dist/es/item/rate.js +2 -3
- package/dist/es/item/rate.js.map +1 -1
- package/dist/es/leftJoin.js +13 -8
- package/dist/es/leftJoin.js.map +1 -1
- package/dist/es/map.js.map +1 -1
- package/dist/es/math/math.js.map +1 -1
- package/dist/es/mutate.js +1 -1
- package/dist/es/mutate.js.map +1 -1
- package/dist/es/mutateWithSummary.js +1 -1
- package/dist/es/mutateWithSummary.js.map +1 -1
- package/dist/es/pivotLonger.js +31 -7
- package/dist/es/pivotLonger.js.map +1 -1
- package/dist/es/pivotWider.js +24 -19
- package/dist/es/pivotWider.js.map +1 -1
- package/dist/es/rename.js.map +1 -1
- package/dist/es/replaceNully.js +1 -1
- package/dist/es/replaceNully.js.map +1 -1
- package/dist/es/select.js +3 -3
- package/dist/es/select.js.map +1 -1
- package/dist/es/selectors/contains.js.map +1 -1
- package/dist/es/selectors/endsWith.js.map +1 -1
- package/dist/es/selectors/everything.js.map +1 -1
- package/dist/es/selectors/matches.js.map +1 -1
- package/dist/es/selectors/negate.js +2 -2
- package/dist/es/selectors/negate.js.map +1 -1
- package/dist/es/selectors/numRange.js.map +1 -1
- package/dist/es/selectors/startsWith.js.map +1 -1
- package/dist/es/sequences/fullSeq.js +5 -1
- package/dist/es/sequences/fullSeq.js.map +1 -1
- package/dist/es/slice.js +2 -3
- package/dist/es/slice.js.map +1 -1
- package/dist/es/summarize.js +6 -4
- package/dist/es/summarize.js.map +1 -1
- package/dist/es/summary/deviation.js.map +1 -1
- package/dist/es/summary/first.js.map +1 -1
- package/dist/es/summary/last.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.map +1 -1
- package/dist/es/summary/nDistinct.js +2 -2
- package/dist/es/summary/nDistinct.js.map +1 -1
- package/dist/es/summary/sum.js.map +1 -1
- package/dist/es/summary/variance.js.map +1 -1
- package/dist/es/tally.js +4 -2
- package/dist/es/tally.js.map +1 -1
- package/dist/es/tidy.js.map +1 -1
- package/dist/es/total.js.map +1 -1
- package/dist/es/transmute.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/roll.js +1 -1
- package/dist/es/vector/roll.js.map +1 -1
- package/dist/es/vector/rowNumber.js.map +1 -1
- package/dist/es/when.js +1 -2
- package/dist/es/when.js.map +1 -1
- package/dist/lib/addRows.js +0 -2
- package/dist/lib/addRows.js.map +1 -1
- package/dist/lib/arrange.js +9 -7
- package/dist/lib/arrange.js.map +1 -1
- package/dist/lib/complete.js +0 -2
- package/dist/lib/complete.js.map +1 -1
- package/dist/lib/count.js +6 -4
- package/dist/lib/count.js.map +1 -1
- package/dist/lib/debug.js +4 -4
- package/dist/lib/debug.js.map +1 -1
- package/dist/lib/distinct.js +3 -5
- package/dist/lib/distinct.js.map +1 -1
- package/dist/lib/expand.js +18 -15
- package/dist/lib/expand.js.map +1 -1
- package/dist/lib/fill.js +10 -5
- package/dist/lib/fill.js.map +1 -1
- package/dist/lib/filter.js +0 -2
- package/dist/lib/filter.js.map +1 -1
- package/dist/lib/fullJoin.js +22 -21
- package/dist/lib/fullJoin.js.map +1 -1
- package/dist/lib/groupBy.js +56 -30
- package/dist/lib/groupBy.js.map +1 -1
- package/dist/lib/helpers/assignGroupKeys.js +4 -6
- package/dist/lib/helpers/assignGroupKeys.js.map +1 -1
- package/dist/lib/helpers/groupMap.js +2 -4
- package/dist/lib/helpers/groupMap.js.map +1 -1
- package/dist/lib/helpers/groupTraversal.js +5 -6
- package/dist/lib/helpers/groupTraversal.js.map +1 -1
- package/dist/lib/helpers/identity.js +0 -2
- package/dist/lib/helpers/identity.js.map +1 -1
- package/dist/lib/helpers/isObject.js +0 -2
- package/dist/lib/helpers/isObject.js.map +1 -1
- package/dist/lib/helpers/keysFromItems.js +1 -4
- package/dist/lib/helpers/keysFromItems.js.map +1 -1
- package/dist/lib/helpers/singleOrArray.js +0 -2
- package/dist/lib/helpers/singleOrArray.js.map +1 -1
- package/dist/lib/helpers/summation.js +10 -4
- package/dist/lib/helpers/summation.js.map +1 -1
- package/dist/lib/index.js +0 -2
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/innerJoin.js +38 -14
- package/dist/lib/innerJoin.js.map +1 -1
- package/dist/lib/item/rate.js +2 -5
- package/dist/lib/item/rate.js.map +1 -1
- package/dist/lib/leftJoin.js +12 -9
- package/dist/lib/leftJoin.js.map +1 -1
- package/dist/lib/map.js +0 -2
- package/dist/lib/map.js.map +1 -1
- package/dist/lib/math/math.js +0 -2
- package/dist/lib/math/math.js.map +1 -1
- package/dist/lib/mutate.js +1 -3
- package/dist/lib/mutate.js.map +1 -1
- package/dist/lib/mutateWithSummary.js +1 -3
- package/dist/lib/mutateWithSummary.js.map +1 -1
- package/dist/lib/pivotLonger.js +31 -9
- package/dist/lib/pivotLonger.js.map +1 -1
- package/dist/lib/pivotWider.js +24 -21
- package/dist/lib/pivotWider.js.map +1 -1
- package/dist/lib/rename.js +0 -2
- package/dist/lib/rename.js.map +1 -1
- package/dist/lib/replaceNully.js +1 -3
- package/dist/lib/replaceNully.js.map +1 -1
- package/dist/lib/select.js +3 -5
- package/dist/lib/select.js.map +1 -1
- package/dist/lib/selectors/contains.js +0 -2
- package/dist/lib/selectors/contains.js.map +1 -1
- package/dist/lib/selectors/endsWith.js +0 -2
- package/dist/lib/selectors/endsWith.js.map +1 -1
- package/dist/lib/selectors/everything.js +0 -2
- package/dist/lib/selectors/everything.js.map +1 -1
- package/dist/lib/selectors/matches.js +0 -2
- package/dist/lib/selectors/matches.js.map +1 -1
- package/dist/lib/selectors/negate.js +2 -4
- package/dist/lib/selectors/negate.js.map +1 -1
- package/dist/lib/selectors/numRange.js +0 -2
- package/dist/lib/selectors/numRange.js.map +1 -1
- package/dist/lib/selectors/startsWith.js +0 -2
- package/dist/lib/selectors/startsWith.js.map +1 -1
- package/dist/lib/sequences/fullSeq.js +5 -3
- package/dist/lib/sequences/fullSeq.js.map +1 -1
- package/dist/lib/slice.js +2 -5
- package/dist/lib/slice.js.map +1 -1
- package/dist/lib/summarize.js +6 -6
- package/dist/lib/summarize.js.map +1 -1
- package/dist/lib/summary/deviation.js +0 -2
- package/dist/lib/summary/deviation.js.map +1 -1
- package/dist/lib/summary/first.js +0 -2
- package/dist/lib/summary/first.js.map +1 -1
- package/dist/lib/summary/last.js +0 -2
- package/dist/lib/summary/last.js.map +1 -1
- package/dist/lib/summary/max.js +0 -2
- package/dist/lib/summary/max.js.map +1 -1
- package/dist/lib/summary/mean.js +0 -2
- package/dist/lib/summary/mean.js.map +1 -1
- package/dist/lib/summary/meanRate.js +0 -2
- package/dist/lib/summary/meanRate.js.map +1 -1
- package/dist/lib/summary/median.js +0 -2
- package/dist/lib/summary/median.js.map +1 -1
- package/dist/lib/summary/min.js +0 -2
- package/dist/lib/summary/min.js.map +1 -1
- package/dist/lib/summary/n.js +0 -2
- package/dist/lib/summary/n.js.map +1 -1
- package/dist/lib/summary/nDistinct.js +2 -4
- package/dist/lib/summary/nDistinct.js.map +1 -1
- package/dist/lib/summary/sum.js +0 -2
- package/dist/lib/summary/sum.js.map +1 -1
- package/dist/lib/summary/variance.js +0 -2
- package/dist/lib/summary/variance.js.map +1 -1
- package/dist/lib/tally.js +4 -4
- package/dist/lib/tally.js.map +1 -1
- package/dist/lib/tidy.js +0 -2
- package/dist/lib/tidy.js.map +1 -1
- package/dist/lib/total.js +0 -2
- package/dist/lib/total.js.map +1 -1
- package/dist/lib/transmute.js +0 -2
- package/dist/lib/transmute.js.map +1 -1
- package/dist/lib/vector/cumsum.js +0 -2
- package/dist/lib/vector/cumsum.js.map +1 -1
- package/dist/lib/vector/lag.js +1 -3
- package/dist/lib/vector/lag.js.map +1 -1
- package/dist/lib/vector/lead.js +1 -3
- package/dist/lib/vector/lead.js.map +1 -1
- package/dist/lib/vector/roll.js +1 -3
- package/dist/lib/vector/roll.js.map +1 -1
- package/dist/lib/vector/rowNumber.js +0 -2
- package/dist/lib/vector/rowNumber.js.map +1 -1
- package/dist/lib/when.js +1 -4
- package/dist/lib/when.js.map +1 -1
- package/dist/tidy.d.ts +217 -1775
- package/dist/umd/tidy.js +307 -184
- 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/genai-docs/api-core.md +357 -0
- package/genai-docs/api-grouping.md +400 -0
- package/genai-docs/api-joins.md +118 -0
- package/genai-docs/api-other.md +238 -0
- package/genai-docs/api-pivot.md +112 -0
- package/genai-docs/api-selectors.md +159 -0
- package/genai-docs/api-sequences.md +127 -0
- package/genai-docs/api-slice.md +137 -0
- package/genai-docs/api-summarize.md +528 -0
- package/genai-docs/api-vector.md +239 -0
- package/genai-docs/gotchas.md +193 -0
- package/genai-docs/index.md +44 -0
- package/genai-docs/mental-model.md +270 -0
- package/genai-docs/patterns.md +384 -0
- package/genai-docs/quick-reference.md +125 -0
- package/package.json +16 -10
- package/LICENSE +0 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"last.js","sources":["../../../src/summary/last.ts"],"sourcesContent":["/**\n * Returns a function that returns the last value for the specified key\n * @param key A string key of the object or an accessor converting the object to a number\n */\nexport function last<T extends object>(key: keyof T | ((d: T) => any)) {\n const keyFn = typeof key === 'function' ? key : (d: T) => d[key];\n\n return (items: T[]) =>\n items.length ? keyFn(items[items.length - 1]) : undefined;\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"last.js","sources":["../../../src/summary/last.ts"],"sourcesContent":["/**\n * Returns a function that returns the last value for the specified key\n * @param key A string key of the object or an accessor converting the object to a number\n */\nexport function last<T extends object>(key: keyof T | ((d: T) => any)) {\n const keyFn = typeof key === 'function' ? key : (d: T) => d[key];\n\n return (items: T[]) =>\n items.length ? keyFn(items[items.length - 1]) : undefined;\n}\n"],"names":[],"mappings":"AAIO,SAAS,KAAuB,GAAgC,EAAA;AACrE,EAAM,MAAA,KAAA,GAAQ,OAAO,GAAQ,KAAA,UAAA,GAAa,MAAM,CAAC,CAAA,KAAS,EAAE,GAAG,CAAA,CAAA;AAE/D,EAAO,OAAA,CAAC,KACN,KAAA,KAAA,CAAM,MAAS,GAAA,KAAA,CAAM,MAAM,KAAM,CAAA,MAAA,GAAS,CAAC,CAAC,CAAI,GAAA,KAAA,CAAA,CAAA;AACpD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"max.js","sources":["../../../src/summary/max.ts"],"sourcesContent":["import { max as d3max } from 'd3-array';\n\n/**\n * Returns a function that computes the max over an array of items\n * @param key A string key of the object or an accessor converting the object to a number\n */\nexport function max<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => number)\n) {\n const keyFn =\n typeof key === 'function' ? key : (d: T) =>
|
|
1
|
+
{"version":3,"file":"max.js","sources":["../../../src/summary/max.ts"],"sourcesContent":["import { max as d3max } from 'd3-array';\n\n/**\n * Returns a function that computes the max over an array of items\n * @param key A string key of the object or an accessor converting the object to a number\n */\nexport function max<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => number)\n) {\n const keyFn =\n typeof key === 'function' ? key : (d: T) => d[key] as unknown as number;\n\n return (items: T[]) => d3max(items, keyFn);\n}\n"],"names":["d3max"],"mappings":";;AAMO,SAAS,IACd,GACA,EAAA;AACA,EAAM,MAAA,KAAA,GACJ,OAAO,GAAQ,KAAA,UAAA,GAAa,MAAM,CAAC,CAAA,KAAS,EAAE,GAAG,CAAA,CAAA;AAEnD,EAAA,OAAO,CAAC,KAAA,KAAeA,KAAM,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAC3C;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mean.js","sources":["../../../src/summary/mean.ts"],"sourcesContent":["import { mean as meanInternal } from '../helpers/summation';\n\n/**\n * Returns a function that computes the mean over an array of items\n * @param key A string key of the object or an accessor converting the object to a number\n */\nexport function mean<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => number)\n) {\n const keyFn =\n typeof key === 'function' ? key : (d: T) =>
|
|
1
|
+
{"version":3,"file":"mean.js","sources":["../../../src/summary/mean.ts"],"sourcesContent":["import { mean as meanInternal } from '../helpers/summation';\n\n/**\n * Returns a function that computes the mean over an array of items\n * @param key A string key of the object or an accessor converting the object to a number\n */\nexport function mean<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => number)\n) {\n const keyFn =\n typeof key === 'function' ? key : (d: T) => d[key] as unknown as number;\n\n return (items: T[]) => meanInternal(items, keyFn);\n}\n"],"names":["meanInternal"],"mappings":";;AAMO,SAAS,KACd,GACA,EAAA;AACA,EAAM,MAAA,KAAA,GACJ,OAAO,GAAQ,KAAA,UAAA,GAAa,MAAM,CAAC,CAAA,KAAS,EAAE,GAAG,CAAA,CAAA;AAEnD,EAAA,OAAO,CAAC,KAAA,KAAeA,MAAa,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAClD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meanRate.js","sources":["../../../src/summary/meanRate.ts"],"sourcesContent":["import { fsum } from 'd3-array';\nimport { rate } from '../math/math';\n\n/**\n * Returns a function that computes the mean of a rate over an array of items\n * @param numerator A string key of the object or an accessor converting the object to a number\n * @param denominator A string key of the object or an accessor converting the object to a number\n */\nexport function meanRate<T extends object>(\n numerator: keyof T | ((d: T, index: number, array: Iterable<T>) => number),\n denominator: keyof T | ((d: T, index: number, array: Iterable<T>) => number)\n) {\n const numeratorFn =\n typeof numerator === 'function'\n ? numerator\n : (d: T) =>
|
|
1
|
+
{"version":3,"file":"meanRate.js","sources":["../../../src/summary/meanRate.ts"],"sourcesContent":["import { fsum } from 'd3-array';\nimport { rate } from '../math/math';\n\n/**\n * Returns a function that computes the mean of a rate over an array of items\n * @param numerator A string key of the object or an accessor converting the object to a number\n * @param denominator A string key of the object or an accessor converting the object to a number\n */\nexport function meanRate<T extends object>(\n numerator: keyof T | ((d: T, index: number, array: Iterable<T>) => number),\n denominator: keyof T | ((d: T, index: number, array: Iterable<T>) => number)\n) {\n const numeratorFn =\n typeof numerator === 'function'\n ? numerator\n : (d: T) => d[numerator] as unknown as number;\n const denominatorFn =\n typeof denominator === 'function'\n ? denominator\n : (d: T) => d[denominator] as unknown as number;\n\n return (items: T[]) => {\n const numerator = fsum(items, numeratorFn);\n const denominator = fsum(items, denominatorFn);\n return rate(numerator, denominator);\n };\n}\n"],"names":["numerator","denominator"],"mappings":";;;AAQgB,SAAA,QAAA,CACd,WACA,WACA,EAAA;AACA,EAAM,MAAA,WAAA,GACJ,OAAO,SAAc,KAAA,UAAA,GACjB,YACA,CAAC,CAAA,KAAS,EAAE,SAAS,CAAA,CAAA;AAC3B,EAAM,MAAA,aAAA,GACJ,OAAO,WAAgB,KAAA,UAAA,GACnB,cACA,CAAC,CAAA,KAAS,EAAE,WAAW,CAAA,CAAA;AAE7B,EAAA,OAAO,CAAC,KAAe,KAAA;AACrB,IAAMA,MAAAA,UAAAA,GAAY,IAAK,CAAA,KAAA,EAAO,WAAW,CAAA,CAAA;AACzC,IAAMC,MAAAA,YAAAA,GAAc,IAAK,CAAA,KAAA,EAAO,aAAa,CAAA,CAAA;AAC7C,IAAO,OAAA,IAAA,CAAKD,YAAWC,YAAW,CAAA,CAAA;AAAA,GACpC,CAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"median.js","sources":["../../../src/summary/median.ts"],"sourcesContent":["import { median as d3median } from 'd3-array';\n\n/**\n * Returns a function that computes the median over an array of items\n * @param key A string key of the object or an accessor converting the object to a number\n */\nexport function median<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => number)\n) {\n const keyFn =\n typeof key === 'function' ? key : (d: T) =>
|
|
1
|
+
{"version":3,"file":"median.js","sources":["../../../src/summary/median.ts"],"sourcesContent":["import { median as d3median } from 'd3-array';\n\n/**\n * Returns a function that computes the median over an array of items\n * @param key A string key of the object or an accessor converting the object to a number\n */\nexport function median<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => number)\n) {\n const keyFn =\n typeof key === 'function' ? key : (d: T) => d[key] as unknown as number;\n\n return (items: T[]) => d3median(items, keyFn);\n}\n"],"names":["d3median"],"mappings":";;AAMO,SAAS,OACd,GACA,EAAA;AACA,EAAM,MAAA,KAAA,GACJ,OAAO,GAAQ,KAAA,UAAA,GAAa,MAAM,CAAC,CAAA,KAAS,EAAE,GAAG,CAAA,CAAA;AAEnD,EAAA,OAAO,CAAC,KAAA,KAAeA,QAAS,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAC9C;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"min.js","sources":["../../../src/summary/min.ts"],"sourcesContent":["import { min as d3min } from 'd3-array';\n\n/**\n * Returns a function that computes the min over an array of items\n * @param key A string key of the object or an accessor converting the object to a number\n */\nexport function min<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => number)\n) {\n const keyFn =\n typeof key === 'function' ? key : (d: T) =>
|
|
1
|
+
{"version":3,"file":"min.js","sources":["../../../src/summary/min.ts"],"sourcesContent":["import { min as d3min } from 'd3-array';\n\n/**\n * Returns a function that computes the min over an array of items\n * @param key A string key of the object or an accessor converting the object to a number\n */\nexport function min<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => number)\n) {\n const keyFn =\n typeof key === 'function' ? key : (d: T) => d[key] as unknown as number;\n\n return (items: T[]) => d3min(items, keyFn);\n}\n"],"names":["d3min"],"mappings":";;AAMO,SAAS,IACd,GACA,EAAA;AACA,EAAM,MAAA,KAAA,GACJ,OAAO,GAAQ,KAAA,UAAA,GAAa,MAAM,CAAC,CAAA,KAAS,EAAE,GAAG,CAAA,CAAA;AAEnD,EAAA,OAAO,CAAC,KAAA,KAAeA,KAAM,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAC3C;;;;"}
|
package/dist/es/summary/n.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"n.js","sources":["../../../src/summary/n.ts"],"sourcesContent":["type NOptions<T> = {\n predicate?: (d: T, index: number, array: Iterable<T>) => boolean;\n};\n\n/**\n * Returns a function that computes the count over an array of items\n */\nexport function n<T>(options?: NOptions<T>) {\n if (options?.predicate) {\n const predicate = options.predicate;\n return (items: T[]) =>\n items.reduce((n, d, i) => (predicate(d, i, items) ? n + 1 : n), 0);\n }\n\n return (items: T[]) => items.length;\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"n.js","sources":["../../../src/summary/n.ts"],"sourcesContent":["type NOptions<T> = {\n predicate?: (d: T, index: number, array: Iterable<T>) => boolean;\n};\n\n/**\n * Returns a function that computes the count over an array of items\n */\nexport function n<T>(options?: NOptions<T>) {\n if (options?.predicate) {\n const predicate = options.predicate;\n return (items: T[]) =>\n items.reduce((n, d, i) => (predicate(d, i, items) ? n + 1 : n), 0);\n }\n\n return (items: T[]) => items.length;\n}\n"],"names":["n"],"mappings":"AAOO,SAAS,EAAK,OAAuB,EAAA;AAC1C,EAAA,IAAI,mCAAS,SAAW,EAAA;AACtB,IAAA,MAAM,YAAY,OAAQ,CAAA,SAAA,CAAA;AAC1B,IAAA,OAAO,CAAC,KACN,KAAA,KAAA,CAAM,MAAO,CAAA,CAACA,IAAG,CAAG,EAAA,CAAA,KAAO,SAAU,CAAA,CAAA,EAAG,GAAG,KAAK,CAAA,GAAIA,EAAI,GAAA,CAAA,GAAIA,IAAI,CAAC,CAAA,CAAA;AAAA,GACrE;AAEA,EAAO,OAAA,CAAC,UAAe,KAAM,CAAA,MAAA,CAAA;AAC/B;;;;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
function nDistinct(key, options = {}) {
|
|
2
2
|
const keyFn = typeof key === "function" ? key : (d) => d[key];
|
|
3
3
|
return (items) => {
|
|
4
|
-
const uniques = new
|
|
4
|
+
const uniques = /* @__PURE__ */ new Set();
|
|
5
5
|
let count = 0;
|
|
6
6
|
let i = 0;
|
|
7
7
|
for (const item of items) {
|
|
@@ -11,7 +11,7 @@ function nDistinct(key, options = {}) {
|
|
|
11
11
|
continue;
|
|
12
12
|
}
|
|
13
13
|
count += 1;
|
|
14
|
-
uniques.
|
|
14
|
+
uniques.add(value);
|
|
15
15
|
}
|
|
16
16
|
}
|
|
17
17
|
return count;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nDistinct.js","sources":["../../../src/summary/nDistinct.ts"],"sourcesContent":["/**\n * Returns a function that computes the distinct count for a key\n * over an array of items. By default it counts nulls but not undefined\n */\nexport function nDistinct<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => any),\n options: { includeNull?: boolean; includeUndefined?: boolean } = {}\n) {\n const keyFn = typeof key === 'function' ? key : (d: T) => d[key];\n\n return (items: T[]) => {\n const uniques = new
|
|
1
|
+
{"version":3,"file":"nDistinct.js","sources":["../../../src/summary/nDistinct.ts"],"sourcesContent":["/**\n * Returns a function that computes the distinct count for a key\n * over an array of items. By default it counts nulls but not undefined\n */\nexport function nDistinct<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => any),\n options: { includeNull?: boolean; includeUndefined?: boolean } = {}\n) {\n const keyFn = typeof key === 'function' ? key : (d: T) => d[key];\n\n return (items: T[]) => {\n const uniques = new Set();\n let count = 0;\n\n let i = 0;\n for (const item of items) {\n const value = keyFn(item, i++, items);\n\n if (!uniques.has(value)) {\n // default includes null but not undefined\n if (\n (!options.includeUndefined && value === undefined) ||\n (options.includeNull === false && value === null)\n ) {\n continue;\n }\n\n count += 1;\n uniques.add(value);\n }\n }\n\n return count;\n };\n}\n"],"names":[],"mappings":"AAIO,SAAS,SACd,CAAA,GAAA,EACA,OAAiE,GAAA,EACjE,EAAA;AACA,EAAM,MAAA,KAAA,GAAQ,OAAO,GAAQ,KAAA,UAAA,GAAa,MAAM,CAAC,CAAA,KAAS,EAAE,GAAG,CAAA,CAAA;AAE/D,EAAA,OAAO,CAAC,KAAe,KAAA;AACrB,IAAM,MAAA,OAAA,uBAAc,GAAI,EAAA,CAAA;AACxB,IAAA,IAAI,KAAQ,GAAA,CAAA,CAAA;AAEZ,IAAA,IAAI,CAAI,GAAA,CAAA,CAAA;AACR,IAAA,KAAA,MAAW,QAAQ,KAAO,EAAA;AACxB,MAAA,MAAM,KAAQ,GAAA,KAAA,CAAM,IAAM,EAAA,CAAA,EAAA,EAAK,KAAK,CAAA,CAAA;AAEpC,MAAA,IAAI,CAAC,OAAA,CAAQ,GAAI,CAAA,KAAK,CAAG,EAAA;AAEvB,QACG,IAAA,CAAC,QAAQ,gBAAoB,IAAA,KAAA,KAAU,UACvC,OAAQ,CAAA,WAAA,KAAgB,KAAS,IAAA,KAAA,KAAU,IAC5C,EAAA;AACA,UAAA,SAAA;AAAA,SACF;AAEA,QAAS,KAAA,IAAA,CAAA,CAAA;AACT,QAAA,OAAA,CAAQ,IAAI,KAAK,CAAA,CAAA;AAAA,OACnB;AAAA,KACF;AAEA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,CAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sum.js","sources":["../../../src/summary/sum.ts"],"sourcesContent":["import { fsum } from 'd3-array';\n\ntype SumOptions<T> = {\n predicate?: (d: T, index: number, array: Iterable<T>) => boolean;\n};\n\n/**\n * Returns a function that computes the sum over an array of items\n * @param key A string key of the object or an accessor converting the object to a number\n */\nexport function sum<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => number),\n options?: SumOptions<T>\n) {\n let keyFn =\n typeof key === 'function' ? key : (d: T) =>
|
|
1
|
+
{"version":3,"file":"sum.js","sources":["../../../src/summary/sum.ts"],"sourcesContent":["import { fsum } from 'd3-array';\n\ntype SumOptions<T> = {\n predicate?: (d: T, index: number, array: Iterable<T>) => boolean;\n};\n\n/**\n * Returns a function that computes the sum over an array of items\n * @param key A string key of the object or an accessor converting the object to a number\n */\nexport function sum<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => number),\n options?: SumOptions<T>\n) {\n let keyFn =\n typeof key === 'function' ? key : (d: T) => d[key] as unknown as number;\n\n if (options?.predicate) {\n const originalKeyFn = keyFn;\n const predicate = options.predicate;\n keyFn = (d: T, index: number, array: Iterable<T>) =>\n predicate(d, index, array) ? originalKeyFn(d, index, array) : 0;\n }\n\n return (items: T[]) => fsum(items, keyFn);\n}\n"],"names":[],"mappings":";;AAUgB,SAAA,GAAA,CACd,KACA,OACA,EAAA;AACA,EAAI,IAAA,KAAA,GACF,OAAO,GAAQ,KAAA,UAAA,GAAa,MAAM,CAAC,CAAA,KAAS,EAAE,GAAG,CAAA,CAAA;AAEnD,EAAA,IAAI,mCAAS,SAAW,EAAA;AACtB,IAAA,MAAM,aAAgB,GAAA,KAAA,CAAA;AACtB,IAAA,MAAM,YAAY,OAAQ,CAAA,SAAA,CAAA;AAC1B,IAAA,KAAA,GAAQ,CAAC,CAAA,EAAM,KAAe,EAAA,KAAA,KAC5B,SAAU,CAAA,CAAA,EAAG,KAAO,EAAA,KAAK,CAAI,GAAA,aAAA,CAAc,CAAG,EAAA,KAAA,EAAO,KAAK,CAAI,GAAA,CAAA,CAAA;AAAA,GAClE;AAEA,EAAA,OAAO,CAAC,KAAA,KAAe,IAAK,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAC1C;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variance.js","sources":["../../../src/summary/variance.ts"],"sourcesContent":["import { variance as d3variance } from 'd3-array';\n\n/**\n * Returns a function that computes the variance over an array of items\n * @param key A string key of the object or an accessor converting the object to a number\n */\nexport function variance<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => number)\n) {\n const keyFn =\n typeof key === 'function' ? key : (d: T) =>
|
|
1
|
+
{"version":3,"file":"variance.js","sources":["../../../src/summary/variance.ts"],"sourcesContent":["import { variance as d3variance } from 'd3-array';\n\n/**\n * Returns a function that computes the variance over an array of items\n * @param key A string key of the object or an accessor converting the object to a number\n */\nexport function variance<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => number)\n) {\n const keyFn =\n typeof key === 'function' ? key : (d: T) => d[key] as unknown as number;\n\n return (items: T[]) => d3variance(items, keyFn);\n}\n"],"names":["d3variance"],"mappings":";;AAMO,SAAS,SACd,GACA,EAAA;AACA,EAAM,MAAA,KAAA,GACJ,OAAO,GAAQ,KAAA,UAAA,GAAa,MAAM,CAAC,CAAA,KAAS,EAAE,GAAG,CAAA,CAAA;AAEnD,EAAA,OAAO,CAAC,KAAA,KAAeA,UAAW,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAChD;;;;"}
|
package/dist/es/tally.js
CHANGED
|
@@ -4,8 +4,10 @@ import { sum } from './summary/sum.js';
|
|
|
4
4
|
|
|
5
5
|
function tally(options) {
|
|
6
6
|
const _tally = (items) => {
|
|
7
|
-
const {name = "n", wt} = options != null ? options : {};
|
|
8
|
-
const summarized = summarize({[name]: wt == null ? n() : sum(wt)})(
|
|
7
|
+
const { name = "n", wt } = options != null ? options : {};
|
|
8
|
+
const summarized = summarize({ [name]: wt == null ? n() : sum(wt) })(
|
|
9
|
+
items
|
|
10
|
+
);
|
|
9
11
|
return summarized;
|
|
10
12
|
};
|
|
11
13
|
return _tally;
|
package/dist/es/tally.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tally.js","sources":["../../src/tally.ts"],"sourcesContent":["import { summarize } from './summarize';\nimport { n } from './summary/n';\nimport { sum } from './summary/sum';\nimport { TidyFn } from './types';\n\ntype TallyOptions = {\n readonly name?: string;\n readonly wt?: string;\n};\n\ntype TallyOutput<Options extends TallyOptions> = Options['name'] extends string\n ? { [K in Options['name']]: number }\n : { n: number };\n\nexport function tally<T extends object, Options extends TallyOptions>(\n options?: Options\n): TidyFn<T, TallyOutput<Options>> {\n const _tally: TidyFn<T, TallyOutput<Options>> = (\n items: T[]\n ): TallyOutput<Options>[] => {\n const { name = 'n', wt } = options ?? {};\n\n const summarized = summarize({ [name]: wt == null ? n() : sum(wt as any) })(\n items\n );\n return summarized as TallyOutput<Options>[];\n };\n\n return _tally;\n}\n"],"names":[],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"tally.js","sources":["../../src/tally.ts"],"sourcesContent":["import { summarize } from './summarize';\nimport { n } from './summary/n';\nimport { sum } from './summary/sum';\nimport { TidyFn } from './types';\n\ntype TallyOptions = {\n readonly name?: string;\n readonly wt?: string;\n};\n\ntype TallyOutput<Options extends TallyOptions> = Options['name'] extends string\n ? { [K in Options['name']]: number }\n : { n: number };\n\nexport function tally<T extends object, Options extends TallyOptions>(\n options?: Options\n): TidyFn<T, TallyOutput<Options>> {\n const _tally: TidyFn<T, TallyOutput<Options>> = (\n items: T[]\n ): TallyOutput<Options>[] => {\n const { name = 'n', wt } = options ?? {};\n\n const summarized = summarize({ [name]: wt == null ? n() : sum(wt as any) })(\n items\n );\n return summarized as TallyOutput<Options>[];\n };\n\n return _tally;\n}\n"],"names":[],"mappings":";;;;AAcO,SAAS,MACd,OACiC,EAAA;AACjC,EAAM,MAAA,MAAA,GAA0C,CAC9C,KAC2B,KAAA;AAC3B,IAAA,MAAM,EAAE,IAAO,GAAA,GAAA,EAAK,EAAG,EAAA,GAAI,4BAAW,EAAC,CAAA;AAEvC,IAAA,MAAM,UAAa,GAAA,SAAA,CAAU,EAAE,CAAC,IAAI,GAAG,EAAM,IAAA,IAAA,GAAO,CAAE,EAAA,GAAI,GAAI,CAAA,EAAS,GAAG,CAAA;AAAA,MACxE,KAAA;AAAA,KACF,CAAA;AACA,IAAO,OAAA,UAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
|
package/dist/es/tidy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tidy.js","sources":["../../src/tidy.ts"],"sourcesContent":["// note prettier is ignored here via .prettierignore\nimport { TidyFn, TidyGroupExportFn } from './types';\n\n// pipe types not well supported: https://github.com/microsoft/TypeScript/issues/29904\n// so manually make types overloaded for up to 10 steps\n\n/**\n * Forms a tidy pipeline that can be called with (items)\n * @param items array of items to manipulate\n * @param fns Tidy functions\n */\nexport function tidy
|
|
1
|
+
{"version":3,"file":"tidy.js","sources":["../../src/tidy.ts"],"sourcesContent":["// note prettier is ignored here via .prettierignore\nimport { TidyFn, TidyGroupExportFn } from './types';\n\n// pipe types not well supported: https://github.com/microsoft/TypeScript/issues/29904\n// so manually make types overloaded for up to 10 steps\n\n/**\n * Forms a tidy pipeline that can be called with (items)\n * @param items array of items to manipulate\n * @param fns Tidy functions\n */\nexport function tidy<\n T extends object,\n T1 extends object,\n T2 extends object,\n T3 extends object,\n T4 extends object,\n T5 extends object,\n T6 extends object,\n T7 extends object,\n T8 extends object,\n T9 extends object,\n T10 extends object\n>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyFn<T1, T2>,\n f3: TidyFn<T2, T3>,\n f4: TidyFn<T3, T4>,\n f5: TidyFn<T4, T5>,\n f6: TidyFn<T5, T6>,\n f7: TidyFn<T6, T7>,\n f8: TidyFn<T7, T8>,\n f9: TidyFn<T8, T9>,\n f10: TidyFn<T9, T10>\n): T10[];\nexport function tidy<\n T extends object,\n T1 extends object,\n T2 extends object,\n T3 extends object,\n T4 extends object,\n T5 extends object,\n T6 extends object,\n T7 extends object,\n T8 extends object,\n T9 extends object,\n T10 extends object\n>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyFn<T1, T2>,\n f3: TidyFn<T2, T3>,\n f4: TidyFn<T3, T4>,\n f5: TidyFn<T4, T5>,\n f6: TidyFn<T5, T6>,\n f7: TidyFn<T6, T7>,\n f8: TidyFn<T7, T8>,\n f9: TidyFn<T8, T9>,\n f10: TidyGroupExportFn<T9, T10>\n): T10;\nexport function tidy<\n T extends object,\n T1 extends object,\n T2 extends object,\n T3 extends object,\n T4 extends object,\n T5 extends object,\n T6 extends object,\n T7 extends object,\n T8 extends object,\n T9 extends object\n>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyFn<T1, T2>,\n f3: TidyFn<T2, T3>,\n f4: TidyFn<T3, T4>,\n f5: TidyFn<T4, T5>,\n f6: TidyFn<T5, T6>,\n f7: TidyFn<T6, T7>,\n f8: TidyFn<T7, T8>,\n f9: TidyFn<T8, T9>\n): T9[];\nexport function tidy<\n T extends object,\n T1 extends object,\n T2 extends object,\n T3 extends object,\n T4 extends object,\n T5 extends object,\n T6 extends object,\n T7 extends object,\n T8 extends object,\n T9 extends object\n>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyFn<T1, T2>,\n f3: TidyFn<T2, T3>,\n f4: TidyFn<T3, T4>,\n f5: TidyFn<T4, T5>,\n f6: TidyFn<T5, T6>,\n f7: TidyFn<T6, T7>,\n f8: TidyFn<T7, T8>,\n f9: TidyGroupExportFn<T8, T9>\n): T9;\nexport function tidy<\n T extends object,\n T1 extends object,\n T2 extends object,\n T3 extends object,\n T4 extends object,\n T5 extends object,\n T6 extends object,\n T7 extends object,\n T8 extends object\n>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyFn<T1, T2>,\n f3: TidyFn<T2, T3>,\n f4: TidyFn<T3, T4>,\n f5: TidyFn<T4, T5>,\n f6: TidyFn<T5, T6>,\n f7: TidyFn<T6, T7>,\n f8: TidyFn<T7, T8>\n): T8[];\nexport function tidy<\n T extends object,\n T1 extends object,\n T2 extends object,\n T3 extends object,\n T4 extends object,\n T5 extends object,\n T6 extends object,\n T7 extends object,\n T8 extends object\n>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyFn<T1, T2>,\n f3: TidyFn<T2, T3>,\n f4: TidyFn<T3, T4>,\n f5: TidyFn<T4, T5>,\n f6: TidyFn<T5, T6>,\n f7: TidyFn<T6, T7>,\n f8: TidyGroupExportFn<T7, T8>\n): T8;\nexport function tidy<\n T extends object,\n T1 extends object,\n T2 extends object,\n T3 extends object,\n T4 extends object,\n T5 extends object,\n T6 extends object,\n T7 extends object\n>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyFn<T1, T2>,\n f3: TidyFn<T2, T3>,\n f4: TidyFn<T3, T4>,\n f5: TidyFn<T4, T5>,\n f6: TidyFn<T5, T6>,\n f7: TidyFn<T6, T7>\n): T7[];\nexport function tidy<\n T extends object,\n T1 extends object,\n T2 extends object,\n T3 extends object,\n T4 extends object,\n T5 extends object,\n T6 extends object,\n T7 extends object\n>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyFn<T1, T2>,\n f3: TidyFn<T2, T3>,\n f4: TidyFn<T3, T4>,\n f5: TidyFn<T4, T5>,\n f6: TidyFn<T5, T6>,\n f7: TidyGroupExportFn<T6, T7>\n): T7;\nexport function tidy<\n T extends object,\n T1 extends object,\n T2 extends object,\n T3 extends object,\n T4 extends object,\n T5 extends object,\n T6 extends object\n>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyFn<T1, T2>,\n f3: TidyFn<T2, T3>,\n f4: TidyFn<T3, T4>,\n f5: TidyFn<T4, T5>,\n f6: TidyFn<T5, T6>\n): T6[];\nexport function tidy<\n T extends object,\n T1 extends object,\n T2 extends object,\n T3 extends object,\n T4 extends object,\n T5 extends object,\n T6 extends object\n>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyFn<T1, T2>,\n f3: TidyFn<T2, T3>,\n f4: TidyFn<T3, T4>,\n f5: TidyFn<T4, T5>,\n f6: TidyGroupExportFn<T5, T6>\n): T6;\nexport function tidy<\n T extends object,\n T1 extends object,\n T2 extends object,\n T3 extends object,\n T4 extends object,\n T5 extends object\n>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyFn<T1, T2>,\n f3: TidyFn<T2, T3>,\n f4: TidyFn<T3, T4>,\n f5: TidyFn<T4, T5>\n): T5[];\nexport function tidy<\n T extends object,\n T1 extends object,\n T2 extends object,\n T3 extends object,\n T4 extends object,\n T5 extends object\n>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyFn<T1, T2>,\n f3: TidyFn<T2, T3>,\n f4: TidyFn<T3, T4>,\n f5: TidyGroupExportFn<T4, T5>\n): T5;\nexport function tidy<\n T extends object,\n T1 extends object,\n T2 extends object,\n T3 extends object,\n T4 extends object\n>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyFn<T1, T2>,\n f3: TidyFn<T2, T3>,\n f4: TidyFn<T3, T4>\n): T4[];\nexport function tidy<\n T extends object,\n T1 extends object,\n T2 extends object,\n T3 extends object,\n T4 extends object\n>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyFn<T1, T2>,\n f3: TidyFn<T2, T3>,\n f4: TidyGroupExportFn<T3, T4>\n): T4;\nexport function tidy<\n T extends object,\n T1 extends object,\n T2 extends object,\n T3 extends object\n>(items: T[], f1: TidyFn<T, T1>, f2: TidyFn<T1, T2>, f3: TidyFn<T2, T3>): T3[];\nexport function tidy<\n T extends object,\n T1 extends object,\n T2 extends object,\n T3 extends object\n>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyFn<T1, T2>,\n f3: TidyGroupExportFn<T2, T3>\n): T3;\nexport function tidy<T extends object, T1 extends object, T2 extends object>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyFn<T1, T2>\n): T2[];\nexport function tidy<T extends object, T1 extends object, T2 extends object>(\n items: T[],\n f1: TidyFn<T, T1>,\n f2: TidyGroupExportFn<T1, T2>\n): T2;\nexport function tidy<T extends object, T1 extends object>(\n items: T[],\n f1: TidyFn<T, T1>\n): T1[];\nexport function tidy<T extends object, T1 extends object>(\n items: T[],\n f1: TidyGroupExportFn<T, T1>\n): T1;\nexport function tidy<InputT extends object>(\n items: InputT[],\n ...fns: (TidyFn<any, any> | TidyGroupExportFn<any, any>)[]\n): any {\n if (typeof items === 'function') {\n throw new Error('You must supply the data as the first argument to tidy()');\n }\n\n let result: any = items;\n for (const fn of fns) {\n if (fn) {\n // skip falsy values\n result = fn(result);\n }\n }\n\n return result;\n}\n"],"names":[],"mappings":"AAwTgB,SAAA,IAAA,CACd,UACG,GACE,EAAA;AACL,EAAI,IAAA,OAAO,UAAU,UAAY,EAAA;AAC/B,IAAM,MAAA,IAAI,MAAM,0DAA0D,CAAA,CAAA;AAAA,GAC5E;AAEA,EAAA,IAAI,MAAc,GAAA,KAAA,CAAA;AAClB,EAAA,KAAA,MAAW,MAAM,GAAK,EAAA;AACpB,IAAA,IAAI,EAAI,EAAA;AAEN,MAAA,MAAA,GAAS,GAAG,MAAM,CAAA,CAAA;AAAA,KACpB;AAAA,GACF;AAEA,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
|
package/dist/es/total.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"total.js","sources":["../../src/total.ts"],"sourcesContent":["import { mutate, MutateSpec } from './mutate';\nimport {\n SummarizeSpec,\n summarize,\n summarizeAll,\n summarizeAt,\n summarizeIf,\n SummaryKeyFn,\n} from './summarize';\nimport { TidyFn, Vector } from './types';\n\n/**\n * Adds a summarized total row\n */\nexport function total<\n T extends object,\n SummarizedSpec extends SummarizeSpec<T> = SummarizeSpec<T>,\n MutSpec extends MutateSpec<T> = MutateSpec<T>\n>(summarizeSpec: SummarizedSpec, mutateSpec: MutSpec): TidyFn<T> {\n const _total: TidyFn<T, T> = (items: T[]): T[] => {\n const summarized = summarize<T, SummarizedSpec>(summarizeSpec)(items);\n const mutated = mutate<T, MutSpec>(mutateSpec)(summarized as T[]) as T[];\n return [...items, ...mutated];\n };\n\n return _total;\n}\n\n// ----------------------------------------------------------------------------\n\n/**\n * Adds a summarized total row\n */\nexport function totalAll<\n T extends object,\n F extends SummaryKeyFn<T>,\n MutSpec extends MutateSpec<T> = MutateSpec<T>\n>(summaryFn: F, mutateSpec: MutSpec): TidyFn<T> {\n const _totalAll: TidyFn<T, T> = (items: T[]): T[] => {\n const summarized = summarizeAll<T, F>(summaryFn)(items);\n const mutated = mutate<T, MutSpec>(mutateSpec)(summarized as T[]) as T[];\n return [...items, ...mutated];\n };\n\n return _totalAll;\n}\n\n// ----------------------------------------------------------------------------\n\n/**\n * Adds a summarized total row\n */\nexport function totalIf<\n T extends object,\n F extends SummaryKeyFn<T>,\n MutSpec extends MutateSpec<T> = MutateSpec<T>\n>(\n predicateFn: (vector: Vector<T>) => boolean,\n summaryFn: F,\n mutateSpec: MutSpec\n): TidyFn<T> {\n const _totalIf: TidyFn<T, T> = (items: T[]): T[] => {\n const summarized = summarizeIf<T, F>(predicateFn, summaryFn)(items);\n const mutated = mutate<T, MutSpec>(mutateSpec)(summarized as T[]) as T[];\n return [...items, ...mutated];\n };\n\n return _totalIf;\n}\n\n// ----------------------------------------------------------------------------\n\n/**\n * Adds a summarized total row\n */\nexport function totalAt<\n T extends object,\n Keys extends (keyof T)[],\n F extends SummaryKeyFn<T, Keys[number]>,\n MutSpec extends MutateSpec<T> = MutateSpec<T>\n>(keys: Keys, summaryFn: F, mutateSpec: MutSpec): TidyFn<T> {\n const _totalAt: TidyFn<T, T> = (items: T[]): T[] => {\n const summarized = summarizeAt<T, Keys, F>(keys, summaryFn)(items);\n const mutated = mutate<T, MutSpec>(mutateSpec)(summarized as T[]) as T[];\n return [...items, ...mutated];\n };\n\n return _totalAt;\n}\n"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"total.js","sources":["../../src/total.ts"],"sourcesContent":["import { mutate, MutateSpec } from './mutate';\nimport {\n SummarizeSpec,\n summarize,\n summarizeAll,\n summarizeAt,\n summarizeIf,\n SummaryKeyFn,\n} from './summarize';\nimport { TidyFn, Vector } from './types';\n\n/**\n * Adds a summarized total row\n */\nexport function total<\n T extends object,\n SummarizedSpec extends SummarizeSpec<T> = SummarizeSpec<T>,\n MutSpec extends MutateSpec<T> = MutateSpec<T>\n>(summarizeSpec: SummarizedSpec, mutateSpec: MutSpec): TidyFn<T> {\n const _total: TidyFn<T, T> = (items: T[]): T[] => {\n const summarized = summarize<T, SummarizedSpec>(summarizeSpec)(items);\n const mutated = mutate<T, MutSpec>(mutateSpec)(summarized as T[]) as T[];\n return [...items, ...mutated];\n };\n\n return _total;\n}\n\n// ----------------------------------------------------------------------------\n\n/**\n * Adds a summarized total row\n */\nexport function totalAll<\n T extends object,\n F extends SummaryKeyFn<T>,\n MutSpec extends MutateSpec<T> = MutateSpec<T>\n>(summaryFn: F, mutateSpec: MutSpec): TidyFn<T> {\n const _totalAll: TidyFn<T, T> = (items: T[]): T[] => {\n const summarized = summarizeAll<T, F>(summaryFn)(items);\n const mutated = mutate<T, MutSpec>(mutateSpec)(summarized as T[]) as T[];\n return [...items, ...mutated];\n };\n\n return _totalAll;\n}\n\n// ----------------------------------------------------------------------------\n\n/**\n * Adds a summarized total row\n */\nexport function totalIf<\n T extends object,\n F extends SummaryKeyFn<T>,\n MutSpec extends MutateSpec<T> = MutateSpec<T>\n>(\n predicateFn: (vector: Vector<T>) => boolean,\n summaryFn: F,\n mutateSpec: MutSpec\n): TidyFn<T> {\n const _totalIf: TidyFn<T, T> = (items: T[]): T[] => {\n const summarized = summarizeIf<T, F>(predicateFn, summaryFn)(items);\n const mutated = mutate<T, MutSpec>(mutateSpec)(summarized as T[]) as T[];\n return [...items, ...mutated];\n };\n\n return _totalIf;\n}\n\n// ----------------------------------------------------------------------------\n\n/**\n * Adds a summarized total row\n */\nexport function totalAt<\n T extends object,\n Keys extends (keyof T)[],\n F extends SummaryKeyFn<T, Keys[number]>,\n MutSpec extends MutateSpec<T> = MutateSpec<T>\n>(keys: Keys, summaryFn: F, mutateSpec: MutSpec): TidyFn<T> {\n const _totalAt: TidyFn<T, T> = (items: T[]): T[] => {\n const summarized = summarizeAt<T, Keys, F>(keys, summaryFn)(items);\n const mutated = mutate<T, MutSpec>(mutateSpec)(summarized as T[]) as T[];\n return [...items, ...mutated];\n };\n\n return _totalAt;\n}\n"],"names":[],"mappings":";;;AAcgB,SAAA,KAAA,CAId,eAA+B,UAAgC,EAAA;AAC/D,EAAM,MAAA,MAAA,GAAuB,CAAC,KAAoB,KAAA;AAChD,IAAA,MAAM,UAAa,GAAA,SAAA,CAA6B,aAAa,CAAA,CAAE,KAAK,CAAA,CAAA;AACpE,IAAA,MAAM,OAAU,GAAA,MAAA,CAAmB,UAAU,CAAA,CAAE,UAAiB,CAAA,CAAA;AAChE,IAAA,OAAO,CAAC,GAAG,KAAO,EAAA,GAAG,OAAO,CAAA,CAAA;AAAA,GAC9B,CAAA;AAEA,EAAO,OAAA,MAAA,CAAA;AACT,CAAA;AAOgB,SAAA,QAAA,CAId,WAAc,UAAgC,EAAA;AAC9C,EAAM,MAAA,SAAA,GAA0B,CAAC,KAAoB,KAAA;AACnD,IAAA,MAAM,UAAa,GAAA,YAAA,CAAmB,SAAS,CAAA,CAAE,KAAK,CAAA,CAAA;AACtD,IAAA,MAAM,OAAU,GAAA,MAAA,CAAmB,UAAU,CAAA,CAAE,UAAiB,CAAA,CAAA;AAChE,IAAA,OAAO,CAAC,GAAG,KAAO,EAAA,GAAG,OAAO,CAAA,CAAA;AAAA,GAC9B,CAAA;AAEA,EAAO,OAAA,SAAA,CAAA;AACT,CAAA;AAOgB,SAAA,OAAA,CAKd,WACA,EAAA,SAAA,EACA,UACW,EAAA;AACX,EAAM,MAAA,QAAA,GAAyB,CAAC,KAAoB,KAAA;AAClD,IAAA,MAAM,UAAa,GAAA,WAAA,CAAkB,WAAa,EAAA,SAAS,EAAE,KAAK,CAAA,CAAA;AAClE,IAAA,MAAM,OAAU,GAAA,MAAA,CAAmB,UAAU,CAAA,CAAE,UAAiB,CAAA,CAAA;AAChE,IAAA,OAAO,CAAC,GAAG,KAAO,EAAA,GAAG,OAAO,CAAA,CAAA;AAAA,GAC9B,CAAA;AAEA,EAAO,OAAA,QAAA,CAAA;AACT,CAAA;AAOgB,SAAA,OAAA,CAKd,IAAY,EAAA,SAAA,EAAc,UAAgC,EAAA;AAC1D,EAAM,MAAA,QAAA,GAAyB,CAAC,KAAoB,KAAA;AAClD,IAAA,MAAM,UAAa,GAAA,WAAA,CAAwB,IAAM,EAAA,SAAS,EAAE,KAAK,CAAA,CAAA;AACjE,IAAA,MAAM,OAAU,GAAA,MAAA,CAAmB,UAAU,CAAA,CAAE,UAAiB,CAAA,CAAA;AAChE,IAAA,OAAO,CAAC,GAAG,KAAO,EAAA,GAAG,OAAO,CAAA,CAAA;AAAA,GAC9B,CAAA;AAEA,EAAO,OAAA,QAAA,CAAA;AACT;;;;"}
|
package/dist/es/transmute.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transmute.js","sources":["../../src/transmute.ts"],"sourcesContent":["import { TidyFn } from './types';\nimport { mutate, MutateSpec, ResolvedObj } from './mutate';\nimport { select } from './select';\nimport {
|
|
1
|
+
{"version":3,"file":"transmute.js","sources":["../../src/transmute.ts"],"sourcesContent":["import { TidyFn } from './types';\nimport { mutate, MutateSpec, ResolvedObj } from './mutate';\nimport { select } from './select';\nimport { Prettify } from './type-utils';\n\n/**\n * Transmutes items\n * @param mutateSpec\n */\nexport function transmute<T extends object, MSpec extends MutateSpec<T>>(\n mutateSpec: MSpec\n): TidyFn<T, Prettify<ResolvedObj<MSpec>>> {\n const _transmute: TidyFn<T, Prettify<ResolvedObj<MSpec>>> = (items: T[]) => {\n const mutated = mutate<T, MSpec>(mutateSpec)(items);\n const picked = select(Object.keys(mutateSpec) as string[])(mutated);\n return picked as Prettify<ResolvedObj<MSpec>>[];\n };\n\n return _transmute;\n}\n"],"names":[],"mappings":";;;AASO,SAAS,UACd,UACyC,EAAA;AACzC,EAAM,MAAA,UAAA,GAAsD,CAAC,KAAe,KAAA;AAC1E,IAAA,MAAM,OAAU,GAAA,MAAA,CAAiB,UAAU,CAAA,CAAE,KAAK,CAAA,CAAA;AAClD,IAAA,MAAM,SAAS,MAAO,CAAA,MAAA,CAAO,KAAK,UAAU,CAAa,EAAE,OAAO,CAAA,CAAA;AAClE,IAAO,OAAA,MAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAO,OAAA,UAAA,CAAA;AACT;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cumsum.js","sources":["../../../src/vector/cumsum.ts"],"sourcesContent":["import { fcumsum } from '../helpers/summation';\n\nexport function cumsum<T extends object>(\n key:\n | keyof T\n | ((d: T, index: number, array: Iterable<T>) => number | null | undefined)\n) {\n const keyFn =\n typeof key === 'function' ? key : (d: T) =>
|
|
1
|
+
{"version":3,"file":"cumsum.js","sources":["../../../src/vector/cumsum.ts"],"sourcesContent":["import { fcumsum } from '../helpers/summation';\n\nexport function cumsum<T extends object>(\n key:\n | keyof T\n | ((d: T, index: number, array: Iterable<T>) => number | null | undefined)\n) {\n const keyFn =\n typeof key === 'function' ? key : (d: T) => d[key] as unknown as number;\n\n // note returns Float64Array not a normal array\n return (items: T[]) => fcumsum(items, keyFn);\n}\n"],"names":[],"mappings":";;AAEO,SAAS,OACd,GAGA,EAAA;AACA,EAAM,MAAA,KAAA,GACJ,OAAO,GAAQ,KAAA,UAAA,GAAa,MAAM,CAAC,CAAA,KAAS,EAAE,GAAG,CAAA,CAAA;AAGnD,EAAA,OAAO,CAAC,KAAA,KAAe,OAAQ,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAC7C;;;;"}
|
package/dist/es/vector/lag.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
function lag(key, options) {
|
|
2
2
|
const keyFn = typeof key === "function" ? key : (d) => d[key];
|
|
3
|
-
const {n = 1, default: defaultValue} = options != null ? options : {};
|
|
3
|
+
const { n = 1, default: defaultValue } = options != null ? options : {};
|
|
4
4
|
return (items) => {
|
|
5
5
|
return items.map((_, i) => {
|
|
6
6
|
const lagItem = items[i - n];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lag.js","sources":["../../../src/vector/lag.ts"],"sourcesContent":["type LagOptions = {\n /** Number of positions to lag by (default: 1) */\n n?: number;\n /** The default value for non-existent rows. */\n default?: any;\n};\n\n/**\n * Returns a function that lags a vector by a specified offset (n). Useful for\n * finding previous values to compute deltas with later.\n * @param key The key or accessor to lag\n * @param options Options to configure roll. e.g. whether to run on partial windows.\n */\nexport function lag<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => any),\n options?: LagOptions | undefined | null\n) {\n const keyFn = typeof key === 'function' ? key : (d: T) => d[key];\n\n const { n = 1, default: defaultValue } = options ?? {};\n\n return (items: T[]) => {\n return items.map((_, i) => {\n const lagItem = items[i - n];\n return lagItem == null ? defaultValue : keyFn(lagItem, i, items);\n });\n };\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lag.js","sources":["../../../src/vector/lag.ts"],"sourcesContent":["type LagOptions = {\n /** Number of positions to lag by (default: 1) */\n n?: number;\n /** The default value for non-existent rows. */\n default?: any;\n};\n\n/**\n * Returns a function that lags a vector by a specified offset (n). Useful for\n * finding previous values to compute deltas with later.\n * @param key The key or accessor to lag\n * @param options Options to configure roll. e.g. whether to run on partial windows.\n */\nexport function lag<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => any),\n options?: LagOptions | undefined | null\n) {\n const keyFn = typeof key === 'function' ? key : (d: T) => d[key];\n\n const { n = 1, default: defaultValue } = options ?? {};\n\n return (items: T[]) => {\n return items.map((_, i) => {\n const lagItem = items[i - n];\n return lagItem == null ? defaultValue : keyFn(lagItem, i, items);\n });\n };\n}\n"],"names":[],"mappings":"AAagB,SAAA,GAAA,CACd,KACA,OACA,EAAA;AACA,EAAM,MAAA,KAAA,GAAQ,OAAO,GAAQ,KAAA,UAAA,GAAa,MAAM,CAAC,CAAA,KAAS,EAAE,GAAG,CAAA,CAAA;AAE/D,EAAA,MAAM,EAAE,CAAI,GAAA,CAAA,EAAG,SAAS,YAAa,EAAA,GAAI,4BAAW,EAAC,CAAA;AAErD,EAAA,OAAO,CAAC,KAAe,KAAA;AACrB,IAAA,OAAO,KAAM,CAAA,GAAA,CAAI,CAAC,CAAA,EAAG,CAAM,KAAA;AACzB,MAAM,MAAA,OAAA,GAAU,KAAM,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AAC3B,MAAA,OAAO,WAAW,IAAO,GAAA,YAAA,GAAe,KAAM,CAAA,OAAA,EAAS,GAAG,KAAK,CAAA,CAAA;AAAA,KAChE,CAAA,CAAA;AAAA,GACH,CAAA;AACF;;;;"}
|
package/dist/es/vector/lead.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
function lead(key, options) {
|
|
2
2
|
const keyFn = typeof key === "function" ? key : (d) => d[key];
|
|
3
|
-
const {n = 1, default: defaultValue} = options != null ? options : {};
|
|
3
|
+
const { n = 1, default: defaultValue } = options != null ? options : {};
|
|
4
4
|
return (items) => {
|
|
5
5
|
return items.map((_, i) => {
|
|
6
6
|
const leadItem = items[i + n];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lead.js","sources":["../../../src/vector/lead.ts"],"sourcesContent":["type LeadOptions = {\n /** Number of positions to lead by (default: 1) */\n n?: number;\n /** The default value for non-existent rows. */\n default?: any;\n};\n\n/**\n * Returns a functions that leads a vector by a specified offset (n). Useful for\n * finding next values for computing deltas with.\n * @param key The key or accessor to lead\n * @param options Options to configure roll. e.g. whether to run on partial windows.\n */\nexport function lead<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => any),\n options?: LeadOptions | undefined | null\n) {\n const keyFn = typeof key === 'function' ? key : (d: T) => d[key];\n\n const { n = 1, default: defaultValue } = options ?? {};\n\n return (items: T[]) => {\n return items.map((_, i) => {\n const leadItem = items[i + n];\n return leadItem == null ? defaultValue : keyFn(leadItem, i, items);\n });\n };\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"lead.js","sources":["../../../src/vector/lead.ts"],"sourcesContent":["type LeadOptions = {\n /** Number of positions to lead by (default: 1) */\n n?: number;\n /** The default value for non-existent rows. */\n default?: any;\n};\n\n/**\n * Returns a functions that leads a vector by a specified offset (n). Useful for\n * finding next values for computing deltas with.\n * @param key The key or accessor to lead\n * @param options Options to configure roll. e.g. whether to run on partial windows.\n */\nexport function lead<T extends object>(\n key: keyof T | ((d: T, index: number, array: Iterable<T>) => any),\n options?: LeadOptions | undefined | null\n) {\n const keyFn = typeof key === 'function' ? key : (d: T) => d[key];\n\n const { n = 1, default: defaultValue } = options ?? {};\n\n return (items: T[]) => {\n return items.map((_, i) => {\n const leadItem = items[i + n];\n return leadItem == null ? defaultValue : keyFn(leadItem, i, items);\n });\n };\n}\n"],"names":[],"mappings":"AAagB,SAAA,IAAA,CACd,KACA,OACA,EAAA;AACA,EAAM,MAAA,KAAA,GAAQ,OAAO,GAAQ,KAAA,UAAA,GAAa,MAAM,CAAC,CAAA,KAAS,EAAE,GAAG,CAAA,CAAA;AAE/D,EAAA,MAAM,EAAE,CAAI,GAAA,CAAA,EAAG,SAAS,YAAa,EAAA,GAAI,4BAAW,EAAC,CAAA;AAErD,EAAA,OAAO,CAAC,KAAe,KAAA;AACrB,IAAA,OAAO,KAAM,CAAA,GAAA,CAAI,CAAC,CAAA,EAAG,CAAM,KAAA;AACzB,MAAM,MAAA,QAAA,GAAW,KAAM,CAAA,CAAA,GAAI,CAAC,CAAA,CAAA;AAC5B,MAAA,OAAO,YAAY,IAAO,GAAA,YAAA,GAAe,KAAM,CAAA,QAAA,EAAU,GAAG,KAAK,CAAA,CAAA;AAAA,KAClE,CAAA,CAAA;AAAA,GACH,CAAA;AACF;;;;"}
|
package/dist/es/vector/roll.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
function roll(width, rollFn, options) {
|
|
2
|
-
const {partial = false, align = "right"} = options != null ? options : {};
|
|
2
|
+
const { partial = false, align = "right" } = options != null ? options : {};
|
|
3
3
|
const halfWidth = Math.floor(width / 2);
|
|
4
4
|
return (items) => {
|
|
5
5
|
return items.map((_, i) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"roll.js","sources":["../../../src/vector/roll.ts"],"sourcesContent":["type RollOptions = {\n partial?: boolean;\n /** which direction the window is aligned to (default: right, looking back)\n * - right: current row is the last item [1,2,**3**]\n * - left: current row is the first item [**1**,2,3]\n * - center: current row is the center item [1,**2**,3]\n */\n align?: 'left' | 'center' | 'right';\n};\n\n/**\n * Returns a function that computes the a rolling value (e.g. moving average) by\n * applying a function over a window of data\n * @param width The size of the window\n * @param rollFn The function to apply to the window (should reduce to a single value)\n * @param options Options to configure roll. e.g. whether to run on partial windows.\n */\nexport function roll<T extends object>(\n width: number,\n rollFn: (itemsInWindow: T[], endIndex: number) => any,\n options?: RollOptions | undefined | null\n) {\n const { partial = false, align = 'right' } = options ?? {};\n\n const halfWidth = Math.floor(width / 2);\n\n return (items: any[]) => {\n return items.map((_, i) => {\n const endIndex =\n align === 'right'\n ? i\n : align === 'center'\n ? i + halfWidth\n : i + width - 1;\n\n // partial window and we don't allow partial computation, return undefined\n if (!partial && (endIndex - width + 1 < 0 || endIndex >= items.length)) {\n return undefined;\n }\n\n const startIndex = Math.max(0, endIndex - width + 1);\n const itemsInWindow = items.slice(startIndex, endIndex + 1);\n\n // reduce them to a single value\n return rollFn(itemsInWindow, endIndex);\n });\n };\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"roll.js","sources":["../../../src/vector/roll.ts"],"sourcesContent":["type RollOptions = {\n partial?: boolean;\n /** which direction the window is aligned to (default: right, looking back)\n * - right: current row is the last item [1,2,**3**]\n * - left: current row is the first item [**1**,2,3]\n * - center: current row is the center item [1,**2**,3]\n */\n align?: 'left' | 'center' | 'right';\n};\n\n/**\n * Returns a function that computes the a rolling value (e.g. moving average) by\n * applying a function over a window of data\n * @param width The size of the window\n * @param rollFn The function to apply to the window (should reduce to a single value)\n * @param options Options to configure roll. e.g. whether to run on partial windows.\n */\nexport function roll<T extends object>(\n width: number,\n rollFn: (itemsInWindow: T[], endIndex: number) => any,\n options?: RollOptions | undefined | null\n) {\n const { partial = false, align = 'right' } = options ?? {};\n\n const halfWidth = Math.floor(width / 2);\n\n return (items: any[]) => {\n return items.map((_, i) => {\n const endIndex =\n align === 'right'\n ? i\n : align === 'center'\n ? i + halfWidth\n : i + width - 1;\n\n // partial window and we don't allow partial computation, return undefined\n if (!partial && (endIndex - width + 1 < 0 || endIndex >= items.length)) {\n return undefined;\n }\n\n const startIndex = Math.max(0, endIndex - width + 1);\n const itemsInWindow = items.slice(startIndex, endIndex + 1);\n\n // reduce them to a single value\n return rollFn(itemsInWindow, endIndex);\n });\n };\n}\n"],"names":[],"mappings":"AAiBgB,SAAA,IAAA,CACd,KACA,EAAA,MAAA,EACA,OACA,EAAA;AACA,EAAA,MAAM,EAAE,OAAU,GAAA,KAAA,EAAO,QAAQ,OAAQ,EAAA,GAAI,4BAAW,EAAC,CAAA;AAEzD,EAAA,MAAM,SAAY,GAAA,IAAA,CAAK,KAAM,CAAA,KAAA,GAAQ,CAAC,CAAA,CAAA;AAEtC,EAAA,OAAO,CAAC,KAAiB,KAAA;AACvB,IAAA,OAAO,KAAM,CAAA,GAAA,CAAI,CAAC,CAAA,EAAG,CAAM,KAAA;AACzB,MAAM,MAAA,QAAA,GACJ,UAAU,OACN,GAAA,CAAA,GACA,UAAU,QACV,GAAA,CAAA,GAAI,SACJ,GAAA,CAAA,GAAI,KAAQ,GAAA,CAAA,CAAA;AAGlB,MAAI,IAAA,CAAC,YAAY,QAAW,GAAA,KAAA,GAAQ,IAAI,CAAK,IAAA,QAAA,IAAY,MAAM,MAAS,CAAA,EAAA;AACtE,QAAO,OAAA,KAAA,CAAA,CAAA;AAAA,OACT;AAEA,MAAA,MAAM,aAAa,IAAK,CAAA,GAAA,CAAI,CAAG,EAAA,QAAA,GAAW,QAAQ,CAAC,CAAA,CAAA;AACnD,MAAA,MAAM,aAAgB,GAAA,KAAA,CAAM,KAAM,CAAA,UAAA,EAAY,WAAW,CAAC,CAAA,CAAA;AAG1D,MAAO,OAAA,MAAA,CAAO,eAAe,QAAQ,CAAA,CAAA;AAAA,KACtC,CAAA,CAAA;AAAA,GACH,CAAA;AACF;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rowNumber.js","sources":["../../../src/vector/rowNumber.ts"],"sourcesContent":["type RowNumberOptions = {\n /** what to start row numbers at, default is 0 */\n startAt?: number;\n};\n\n/**\n * Returns a vector of row numbers, starting at 0\n */\nexport function rowNumber<T>(options?: RowNumberOptions) {\n const startAt = options?.startAt ?? 0;\n return (items: T[]) => {\n return items.map((_, i) => i + startAt);\n };\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rowNumber.js","sources":["../../../src/vector/rowNumber.ts"],"sourcesContent":["type RowNumberOptions = {\n /** what to start row numbers at, default is 0 */\n startAt?: number;\n};\n\n/**\n * Returns a vector of row numbers, starting at 0\n */\nexport function rowNumber<T>(options?: RowNumberOptions) {\n const startAt = options?.startAt ?? 0;\n return (items: T[]) => {\n return items.map((_, i) => i + startAt);\n };\n}\n"],"names":[],"mappings":"AAQO,SAAS,UAAa,OAA4B,EAAA;AARzD,EAAA,IAAA,EAAA,CAAA;AASE,EAAM,MAAA,OAAA,GAAA,CAAU,EAAS,GAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAA,OAAA,KAAT,IAAoB,GAAA,EAAA,GAAA,CAAA,CAAA;AACpC,EAAA,OAAO,CAAC,KAAe,KAAA;AACrB,IAAA,OAAO,MAAM,GAAI,CAAA,CAAC,CAAG,EAAA,CAAA,KAAM,IAAI,OAAO,CAAA,CAAA;AAAA,GACxC,CAAA;AACF;;;;"}
|
package/dist/es/when.js
CHANGED
package/dist/es/when.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"when.js","sources":["../../src/when.ts"],"sourcesContent":["import { TidyFn } from './types';\nimport { tidy } from './tidy';\n\n/**\n * Conditionally runs a tidy sub-flow\n */\nexport function when<T extends object>(\n predicate: ((items: T[]) => boolean) | boolean,\n fns: TidyFn<any, any>[]\n): TidyFn<T, any> {\n const _when: TidyFn<T, any> = (items: T[]) => {\n if (typeof predicate === 'function') {\n if (!predicate(items)) return items;\n } else if (!predicate) {\n return items;\n }\n\n const results = (tidy as any)(items, ...fns);\n return results;\n };\n return _when;\n}\n"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"when.js","sources":["../../src/when.ts"],"sourcesContent":["import { TidyFn } from './types';\nimport { tidy } from './tidy';\n\n/**\n * Conditionally runs a tidy sub-flow\n */\nexport function when<T extends object>(\n predicate: ((items: T[]) => boolean) | boolean,\n fns: TidyFn<any, any>[]\n): TidyFn<T, any> {\n const _when: TidyFn<T, any> = (items: T[]) => {\n if (typeof predicate === 'function') {\n if (!predicate(items)) return items;\n } else if (!predicate) {\n return items;\n }\n\n const results = (tidy as any)(items, ...fns);\n return results;\n };\n return _when;\n}\n"],"names":[],"mappings":";;AAMgB,SAAA,IAAA,CACd,WACA,GACgB,EAAA;AAChB,EAAM,MAAA,KAAA,GAAwB,CAAC,KAAe,KAAA;AAC5C,IAAI,IAAA,OAAO,cAAc,UAAY,EAAA;AACnC,MAAA,IAAI,CAAC,SAAA,CAAU,KAAK,CAAA,EAAU,OAAA,KAAA,CAAA;AAAA,KAChC,MAAA,IAAW,CAAC,SAAW,EAAA;AACrB,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAEA,IAAA,MAAM,OAAW,GAAA,IAAA,CAAa,KAAO,EAAA,GAAG,GAAG,CAAA,CAAA;AAC3C,IAAO,OAAA,OAAA,CAAA;AAAA,GACT,CAAA;AACA,EAAO,OAAA,KAAA,CAAA;AACT;;;;"}
|
package/dist/lib/addRows.js
CHANGED
package/dist/lib/addRows.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"addRows.js","sources":["../../src/addRows.ts"],"sourcesContent":["import { SingleOrArray, singleOrArray } from './helpers/singleOrArray';\nimport { TidyFn } from './types';\n\n/**\n * adds items to the end of the collection\n * @param itemsToAdd The rows/items to be appended to end of collection\n */\nexport function addRows<T extends object>(\n itemsToAdd: SingleOrArray<T> | ((items: T[]) => SingleOrArray<T>)\n): TidyFn<T> {\n const _addRows: TidyFn<T> = (items: T[]): T[] => {\n // TODO: allow options for specifying where it is inserted?\n if (typeof itemsToAdd === 'function') {\n return [...items, ...singleOrArray((itemsToAdd as Function)(items))];\n }\n\n return [...items, ...singleOrArray(itemsToAdd)];\n };\n\n return _addRows;\n}\n"],"names":["singleOrArray"],"mappings":"
|
|
1
|
+
{"version":3,"file":"addRows.js","sources":["../../src/addRows.ts"],"sourcesContent":["import { SingleOrArray, singleOrArray } from './helpers/singleOrArray';\nimport { TidyFn } from './types';\n\n/**\n * adds items to the end of the collection\n * @param itemsToAdd The rows/items to be appended to end of collection\n */\nexport function addRows<T extends object>(\n itemsToAdd: SingleOrArray<T> | ((items: T[]) => SingleOrArray<T>)\n): TidyFn<T> {\n const _addRows: TidyFn<T> = (items: T[]): T[] => {\n // TODO: allow options for specifying where it is inserted?\n if (typeof itemsToAdd === 'function') {\n return [...items, ...singleOrArray((itemsToAdd as Function)(items))];\n }\n\n return [...items, ...singleOrArray(itemsToAdd)];\n };\n\n return _addRows;\n}\n"],"names":["singleOrArray"],"mappings":";;;;AAOO,SAAS,QACd,UACW,EAAA;AACX,EAAM,MAAA,QAAA,GAAsB,CAAC,KAAoB,KAAA;AAE/C,IAAI,IAAA,OAAO,eAAe,UAAY,EAAA;AACpC,MAAO,OAAA,CAAC,GAAG,KAAO,EAAA,GAAGA,4BAAe,UAAwB,CAAA,KAAK,CAAC,CAAC,CAAA,CAAA;AAAA,KACrE;AAEA,IAAA,OAAO,CAAC,GAAG,KAAA,EAAO,GAAGA,2BAAA,CAAc,UAAU,CAAC,CAAA,CAAA;AAAA,GAChD,CAAA;AAEA,EAAO,OAAA,QAAA,CAAA;AACT;;;;"}
|
package/dist/lib/arrange.js
CHANGED
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var d3Array = require('d3-array');
|
|
6
4
|
var singleOrArray = require('./helpers/singleOrArray.js');
|
|
7
5
|
|
|
8
6
|
function arrange(comparators) {
|
|
9
7
|
const _arrange = (items) => {
|
|
10
|
-
const comparatorFns = singleOrArray.singleOrArray(comparators).map(
|
|
8
|
+
const comparatorFns = singleOrArray.singleOrArray(comparators).map(
|
|
9
|
+
(comp) => typeof comp === "function" ? (
|
|
10
|
+
// length === 1 means it is an accessor (1 argument). convert to comparator via asc
|
|
11
|
+
comp.length === 1 ? asc(comp) : comp
|
|
12
|
+
) : asc(comp)
|
|
13
|
+
);
|
|
11
14
|
return items.slice().sort((a, b) => {
|
|
12
15
|
for (const comparator of comparatorFns) {
|
|
13
16
|
const result = comparator(a, b);
|
|
14
|
-
if (result)
|
|
15
|
-
return result;
|
|
17
|
+
if (result) return result;
|
|
16
18
|
}
|
|
17
19
|
return 0;
|
|
18
20
|
});
|
|
@@ -32,9 +34,9 @@ function desc(key) {
|
|
|
32
34
|
};
|
|
33
35
|
}
|
|
34
36
|
function fixedOrder(key, order, options) {
|
|
35
|
-
let {position = "start"} = options != null ? options : {};
|
|
37
|
+
let { position = "start" } = options != null ? options : {};
|
|
36
38
|
const positionFactor = position === "end" ? -1 : 1;
|
|
37
|
-
const indexMap = new Map();
|
|
39
|
+
const indexMap = /* @__PURE__ */ new Map();
|
|
38
40
|
for (let i = 0; i < order.length; ++i) {
|
|
39
41
|
indexMap.set(order[i], i);
|
|
40
42
|
}
|
package/dist/lib/arrange.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"arrange.js","sources":["../../src/arrange.ts"],"sourcesContent":["import { ascending } from 'd3-array';\nimport { SingleOrArray, singleOrArray } from './helpers/singleOrArray';\nimport { Comparator, Key, KeyOrFn, TidyFn } from './types';\n\n/**\n * Sorts items\n * @param comparators Given a, b return -1 if a comes before b, 0 if equal, 1 if after\n */\nexport function arrange<T extends object>(\n // note: had to switch to returning `any` instead of using Comparator<T> (returns number)\n // for #49 - otherwise typescript failed to do type inference on accessors\n comparators: SingleOrArray<Key | ((a: T, b: T) => any)>\n): TidyFn<T> {\n const _arrange: TidyFn<T> = (items: T[]): T[] => {\n // expand strings `key` to `asc(key)`\n const comparatorFns = singleOrArray(comparators).map((comp) =>\n typeof comp === 'function'\n ? // length === 1 means it is an accessor (1 argument). convert to comparator via asc\n comp.length === 1\n ? asc(comp as (d: T) => unknown)\n : (comp as Comparator<T>)\n : asc<T>(comp)\n );\n\n return items.slice().sort((a, b) => {\n for (const comparator of comparatorFns) {\n const result = comparator(a, b);\n if (result) return result;\n }\n\n return 0;\n });\n };\n\n return _arrange;\n}\n\n/**\n * Creates an ascending comparator based on a key\n * @param key property key of T\n */\nexport function asc<T>(key: Key | ((d: T) => any)): Comparator<T> {\n const keyFn = typeof key === 'function' ? key : (d: any) => d[key];\n\n return function _asc(a: T, b: T) {\n return emptyAwareComparator(keyFn(a), keyFn(b), false);\n };\n}\n\n/**\n * Creates a descending comparator based on a key\n * @param key property key of T\n */\nexport function desc<T>(key: Key | ((d: T) => any)): Comparator<T> {\n const keyFn = typeof key === 'function' ? key : (d: any) => d[key];\n return function _desc(a: T, b: T) {\n return emptyAwareComparator(keyFn(a), keyFn(b), true);\n };\n}\n\n/**\n * Creates a comparator that sorts values based on a key\n * and a supplied array of the desired order for the values.\n * Items not found in the array will be sorted last.\n * @param order array of desired sort order\n */\nexport function fixedOrder<T>(\n key: KeyOrFn<T>,\n order: Array<T[keyof T]>,\n options?: { position?: 'start' | 'end' }\n): (a: T, b: T) => number {\n let { position = 'start' } = options ?? {};\n const positionFactor = position === 'end' ? -1 : 1;\n\n const indexMap = new Map();\n for (let i = 0; i < order.length; ++i) {\n indexMap.set(order[i], i);\n }\n\n const keyFn =\n typeof key === 'function'\n ? key\n : (d: T) =>
|
|
1
|
+
{"version":3,"file":"arrange.js","sources":["../../src/arrange.ts"],"sourcesContent":["import { ascending } from 'd3-array';\nimport { SingleOrArray, singleOrArray } from './helpers/singleOrArray';\nimport { Comparator, Key, KeyOrFn, TidyFn } from './types';\n\n/**\n * Sorts items\n * @param comparators Given a, b return -1 if a comes before b, 0 if equal, 1 if after\n */\nexport function arrange<T extends object>(\n // note: had to switch to returning `any` instead of using Comparator<T> (returns number)\n // for #49 - otherwise typescript failed to do type inference on accessors\n comparators: SingleOrArray<Key | ((a: T, b: T) => any)>\n): TidyFn<T> {\n const _arrange: TidyFn<T> = (items: T[]): T[] => {\n // expand strings `key` to `asc(key)`\n const comparatorFns = singleOrArray(comparators).map((comp) =>\n typeof comp === 'function'\n ? // length === 1 means it is an accessor (1 argument). convert to comparator via asc\n comp.length === 1\n ? asc(comp as (d: T) => unknown)\n : (comp as Comparator<T>)\n : asc<T>(comp)\n );\n\n return items.slice().sort((a, b) => {\n for (const comparator of comparatorFns) {\n const result = comparator(a, b);\n if (result) return result;\n }\n\n return 0;\n });\n };\n\n return _arrange;\n}\n\n/**\n * Creates an ascending comparator based on a key\n * @param key property key of T\n */\nexport function asc<T>(key: Key | ((d: T) => any)): Comparator<T> {\n const keyFn = typeof key === 'function' ? key : (d: any) => d[key];\n\n return function _asc(a: T, b: T) {\n return emptyAwareComparator(keyFn(a), keyFn(b), false);\n };\n}\n\n/**\n * Creates a descending comparator based on a key\n * @param key property key of T\n */\nexport function desc<T>(key: Key | ((d: T) => any)): Comparator<T> {\n const keyFn = typeof key === 'function' ? key : (d: any) => d[key];\n return function _desc(a: T, b: T) {\n return emptyAwareComparator(keyFn(a), keyFn(b), true);\n };\n}\n\n/**\n * Creates a comparator that sorts values based on a key\n * and a supplied array of the desired order for the values.\n * Items not found in the array will be sorted last.\n * @param order array of desired sort order\n */\nexport function fixedOrder<T>(\n key: KeyOrFn<T>,\n order: Array<T[keyof T]>,\n options?: { position?: 'start' | 'end' }\n): (a: T, b: T) => number {\n let { position = 'start' } = options ?? {};\n const positionFactor = position === 'end' ? -1 : 1;\n\n const indexMap = new Map();\n for (let i = 0; i < order.length; ++i) {\n indexMap.set(order[i], i);\n }\n\n const keyFn =\n typeof key === 'function'\n ? key\n : (d: T) => d[key as keyof T] as unknown as any;\n\n return function _fixedOrder(a: T, b: T) {\n const aIndex: number = indexMap.get(keyFn(a)) ?? -1;\n const bIndex: number = indexMap.get(keyFn(b)) ?? -1;\n\n if (aIndex >= 0 && bIndex >= 0) {\n return aIndex - bIndex;\n }\n\n if (aIndex >= 0) {\n return positionFactor * -1;\n }\n\n if (bIndex >= 0) {\n return positionFactor * 1;\n }\n\n return 0;\n };\n}\n\nfunction emptyAwareComparator(aInput: any, bInput: any, desc: boolean) {\n // we swap order to get descending behavior\n let a = desc ? bInput : aInput;\n let b = desc ? aInput : bInput;\n\n // NaN, null, undefined is the order for emptys\n if (isEmpty(a) && isEmpty(b)) {\n const rankA = a !== a ? 0 : a === null ? 1 : 2;\n const rankB = b !== b ? 0 : b === null ? 1 : 2;\n const order = rankA - rankB;\n return desc ? -order : order;\n }\n\n // keep empty values at the bottom\n if (isEmpty(a)) {\n return desc ? -1 : 1;\n }\n if (isEmpty(b)) {\n return desc ? 1 : -1;\n }\n\n // descending is handled by swapping the a and b args at the start\n return ascending(a, b);\n}\n\nfunction isEmpty(value: any) {\n return value == null || value !== value /* NaN check */;\n}\n"],"names":["singleOrArray","desc","ascending"],"mappings":";;;;;AAQO,SAAS,QAGd,WACW,EAAA;AACX,EAAM,MAAA,QAAA,GAAsB,CAAC,KAAoB,KAAA;AAE/C,IAAM,MAAA,aAAA,GAAgBA,2BAAc,CAAA,WAAW,CAAE,CAAA,GAAA;AAAA,MAAI,CAAC,IACpD,KAAA,OAAO,IAAS,KAAA,UAAA;AAAA;AAAA,QAEZ,IAAK,CAAA,MAAA,KAAW,CACd,GAAA,GAAA,CAAI,IAAyB,CAC5B,GAAA,IAAA;AAAA,UACH,IAAO,IAAI,CAAA;AAAA,KACjB,CAAA;AAEA,IAAA,OAAO,MAAM,KAAM,EAAA,CAAE,IAAK,CAAA,CAAC,GAAG,CAAM,KAAA;AAClC,MAAA,KAAA,MAAW,cAAc,aAAe,EAAA;AACtC,QAAM,MAAA,MAAA,GAAS,UAAW,CAAA,CAAA,EAAG,CAAC,CAAA,CAAA;AAC9B,QAAA,IAAI,QAAe,OAAA,MAAA,CAAA;AAAA,OACrB;AAEA,MAAO,OAAA,CAAA,CAAA;AAAA,KACR,CAAA,CAAA;AAAA,GACH,CAAA;AAEA,EAAO,OAAA,QAAA,CAAA;AACT,CAAA;AAMO,SAAS,IAAO,GAA2C,EAAA;AAChE,EAAM,MAAA,KAAA,GAAQ,OAAO,GAAQ,KAAA,UAAA,GAAa,MAAM,CAAC,CAAA,KAAW,EAAE,GAAG,CAAA,CAAA;AAEjE,EAAO,OAAA,SAAS,IAAK,CAAA,CAAA,EAAM,CAAM,EAAA;AAC/B,IAAA,OAAO,qBAAqB,KAAM,CAAA,CAAC,GAAG,KAAM,CAAA,CAAC,GAAG,KAAK,CAAA,CAAA;AAAA,GACvD,CAAA;AACF,CAAA;AAMO,SAAS,KAAQ,GAA2C,EAAA;AACjE,EAAM,MAAA,KAAA,GAAQ,OAAO,GAAQ,KAAA,UAAA,GAAa,MAAM,CAAC,CAAA,KAAW,EAAE,GAAG,CAAA,CAAA;AACjE,EAAO,OAAA,SAAS,KAAM,CAAA,CAAA,EAAM,CAAM,EAAA;AAChC,IAAA,OAAO,qBAAqB,KAAM,CAAA,CAAC,GAAG,KAAM,CAAA,CAAC,GAAG,IAAI,CAAA,CAAA;AAAA,GACtD,CAAA;AACF,CAAA;AAQgB,SAAA,UAAA,CACd,GACA,EAAA,KAAA,EACA,OACwB,EAAA;AACxB,EAAA,IAAI,EAAE,QAAA,GAAW,OAAQ,EAAA,GAAI,4BAAW,EAAC,CAAA;AACzC,EAAM,MAAA,cAAA,GAAiB,QAAa,KAAA,KAAA,GAAQ,CAAK,CAAA,GAAA,CAAA,CAAA;AAEjD,EAAM,MAAA,QAAA,uBAAe,GAAI,EAAA,CAAA;AACzB,EAAA,KAAA,IAAS,IAAI,CAAG,EAAA,CAAA,GAAI,KAAM,CAAA,MAAA,EAAQ,EAAE,CAAG,EAAA;AACrC,IAAA,QAAA,CAAS,GAAI,CAAA,KAAA,CAAM,CAAC,CAAA,EAAG,CAAC,CAAA,CAAA;AAAA,GAC1B;AAEA,EAAM,MAAA,KAAA,GACJ,OAAO,GAAQ,KAAA,UAAA,GACX,MACA,CAAC,CAAA,KAAS,EAAE,GAAc,CAAA,CAAA;AAEhC,EAAO,OAAA,SAAS,WAAY,CAAA,CAAA,EAAM,CAAM,EAAA;AApF1C,IAAA,IAAA,EAAA,EAAA,EAAA,CAAA;AAqFI,IAAA,MAAM,UAAiB,EAAS,GAAA,QAAA,CAAA,GAAA,CAAI,MAAM,CAAC,CAAC,MAArB,IAA0B,GAAA,EAAA,GAAA,CAAA,CAAA,CAAA;AACjD,IAAA,MAAM,UAAiB,EAAS,GAAA,QAAA,CAAA,GAAA,CAAI,MAAM,CAAC,CAAC,MAArB,IAA0B,GAAA,EAAA,GAAA,CAAA,CAAA,CAAA;AAEjD,IAAI,IAAA,MAAA,IAAU,CAAK,IAAA,MAAA,IAAU,CAAG,EAAA;AAC9B,MAAA,OAAO,MAAS,GAAA,MAAA,CAAA;AAAA,KAClB;AAEA,IAAA,IAAI,UAAU,CAAG,EAAA;AACf,MAAA,OAAO,cAAiB,GAAA,CAAA,CAAA,CAAA;AAAA,KAC1B;AAEA,IAAA,IAAI,UAAU,CAAG,EAAA;AACf,MAAA,OAAO,cAAiB,GAAA,CAAA,CAAA;AAAA,KAC1B;AAEA,IAAO,OAAA,CAAA,CAAA;AAAA,GACT,CAAA;AACF,CAAA;AAEA,SAAS,oBAAA,CAAqB,MAAa,EAAA,MAAA,EAAaC,KAAe,EAAA;AAErE,EAAI,IAAA,CAAA,GAAIA,QAAO,MAAS,GAAA,MAAA,CAAA;AACxB,EAAI,IAAA,CAAA,GAAIA,QAAO,MAAS,GAAA,MAAA,CAAA;AAGxB,EAAA,IAAI,OAAQ,CAAA,CAAC,CAAK,IAAA,OAAA,CAAQ,CAAC,CAAG,EAAA;AAC5B,IAAA,MAAM,QAAQ,CAAM,KAAA,CAAA,GAAI,CAAI,GAAA,CAAA,KAAM,OAAO,CAAI,GAAA,CAAA,CAAA;AAC7C,IAAA,MAAM,QAAQ,CAAM,KAAA,CAAA,GAAI,CAAI,GAAA,CAAA,KAAM,OAAO,CAAI,GAAA,CAAA,CAAA;AAC7C,IAAA,MAAM,QAAQ,KAAQ,GAAA,KAAA,CAAA;AACtB,IAAOA,OAAAA,KAAAA,GAAO,CAAC,KAAQ,GAAA,KAAA,CAAA;AAAA,GACzB;AAGA,EAAI,IAAA,OAAA,CAAQ,CAAC,CAAG,EAAA;AACd,IAAA,OAAOA,QAAO,CAAK,CAAA,GAAA,CAAA,CAAA;AAAA,GACrB;AACA,EAAI,IAAA,OAAA,CAAQ,CAAC,CAAG,EAAA;AACd,IAAA,OAAOA,QAAO,CAAI,GAAA,CAAA,CAAA,CAAA;AAAA,GACpB;AAGA,EAAO,OAAAC,iBAAA,CAAU,GAAG,CAAC,CAAA,CAAA;AACvB,CAAA;AAEA,SAAS,QAAQ,KAAY,EAAA;AAC3B,EAAO,OAAA,KAAA,IAAS,QAAQ,KAAU,KAAA,KAAA,CAAA;AACpC;;;;;;;"}
|
package/dist/lib/complete.js
CHANGED
package/dist/lib/complete.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complete.js","sources":["../../src/complete.ts"],"sourcesContent":["import { expand, KeyMap } from './expand';\nimport { leftJoin } from './leftJoin';\nimport { Key, TidyFn } from './types';\nimport { replaceNully } from './replaceNully';\nimport { SingleOrArray } from './helpers/singleOrArray';\n\n/**\n * Complete a collection with missing combinations of data\n * @param expandKeys The keys to expand to all combinations of\n * @param replaceNullySpec a map from key name to value of how to deal with undefined values\n */\nexport function complete<T extends object>(\n expandKeys: SingleOrArray<Key> | KeyMap<T>,\n replaceNullySpec?: Partial<T> | null | undefined\n): TidyFn<T> {\n const _complete: TidyFn<T> = (items: T[]): T[] => {\n const expanded = expand<T, any>(expandKeys)(items);\n const joined = leftJoin(items)(expanded) as T[]; // actually may have some undefineds...\n return replaceNullySpec\n ? (replaceNully(replaceNullySpec)(joined) as T[])\n : joined;\n };\n\n return _complete;\n}\n"],"names":["expand","leftJoin","replaceNully"],"mappings":"
|
|
1
|
+
{"version":3,"file":"complete.js","sources":["../../src/complete.ts"],"sourcesContent":["import { expand, KeyMap } from './expand';\nimport { leftJoin } from './leftJoin';\nimport { Key, TidyFn } from './types';\nimport { replaceNully } from './replaceNully';\nimport { SingleOrArray } from './helpers/singleOrArray';\n\n/**\n * Complete a collection with missing combinations of data\n * @param expandKeys The keys to expand to all combinations of\n * @param replaceNullySpec a map from key name to value of how to deal with undefined values\n */\nexport function complete<T extends object>(\n expandKeys: SingleOrArray<Key> | KeyMap<T>,\n replaceNullySpec?: Partial<T> | null | undefined\n): TidyFn<T> {\n const _complete: TidyFn<T> = (items: T[]): T[] => {\n const expanded = expand<T, any>(expandKeys)(items);\n const joined = leftJoin(items)(expanded) as T[]; // actually may have some undefineds...\n return replaceNullySpec\n ? (replaceNully(replaceNullySpec)(joined) as T[])\n : joined;\n };\n\n return _complete;\n}\n"],"names":["expand","leftJoin","replaceNully"],"mappings":";;;;;;AAWgB,SAAA,QAAA,CACd,YACA,gBACW,EAAA;AACX,EAAM,MAAA,SAAA,GAAuB,CAAC,KAAoB,KAAA;AAChD,IAAA,MAAM,QAAW,GAAAA,aAAA,CAAe,UAAU,CAAA,CAAE,KAAK,CAAA,CAAA;AACjD,IAAA,MAAM,MAAS,GAAAC,iBAAA,CAAS,KAAK,CAAA,CAAE,QAAQ,CAAA,CAAA;AACvC,IAAA,OAAO,gBACF,GAAAC,yBAAA,CAAa,gBAAgB,CAAA,CAAE,MAAM,CACtC,GAAA,MAAA,CAAA;AAAA,GACN,CAAA;AAEA,EAAO,OAAA,SAAA,CAAA;AACT;;;;"}
|
package/dist/lib/count.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var arrange = require('./arrange.js');
|
|
6
4
|
var groupBy = require('./groupBy.js');
|
|
7
5
|
var identity = require('./helpers/identity.js');
|
|
@@ -11,8 +9,12 @@ var tidy = require('./tidy.js');
|
|
|
11
9
|
function count(groupKeys, options) {
|
|
12
10
|
const _count = (items) => {
|
|
13
11
|
options = options != null ? options : {};
|
|
14
|
-
const {name = "n", sort} = options;
|
|
15
|
-
const results = tidy.tidy(
|
|
12
|
+
const { name = "n", sort } = options;
|
|
13
|
+
const results = tidy.tidy(
|
|
14
|
+
items,
|
|
15
|
+
groupBy.groupBy(groupKeys, [tally.tally(options)]),
|
|
16
|
+
sort ? arrange.arrange(arrange.desc(name)) : identity.identity
|
|
17
|
+
);
|
|
16
18
|
return results;
|
|
17
19
|
};
|
|
18
20
|
return _count;
|
package/dist/lib/count.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"count.js","sources":["../../src/count.ts"],"sourcesContent":["import { arrange, desc } from './arrange';\nimport { groupBy } from './groupBy';\nimport { identity } from './helpers/identity';\nimport { SingleOrArray } from './helpers/singleOrArray';\nimport { tally } from './tally';\nimport { tidy } from './tidy';\nimport { KeyOrFn } from './types';\n\ntype CountOptions = {\n name?: string;\n sort?: boolean;\n wt?: string;\n};\n\n/**\n * Tallies the number distinct values for the specified keys and adds\n * the count as a new key (default `n`). Optionally sorts by the count.\n */\nexport function count<T extends object, Keys extends SingleOrArray<KeyOrFn<T>>>(\n groupKeys: Keys,\n options?: CountOptions | null | undefined\n) {\n const _count = (items: T[]) => {\n options = options ?? {};\n const { name = 'n', sort } = options;\n\n const results = tidy(\n items,\n groupBy(groupKeys, [tally(options)]),\n sort ? arrange(desc(name)) : identity\n );\n\n return results;\n };\n\n return _count;\n}\n"],"names":["tidy","groupBy","tally","arrange","desc","identity"],"mappings":"
|
|
1
|
+
{"version":3,"file":"count.js","sources":["../../src/count.ts"],"sourcesContent":["import { arrange, desc } from './arrange';\nimport { groupBy } from './groupBy';\nimport { identity } from './helpers/identity';\nimport { SingleOrArray } from './helpers/singleOrArray';\nimport { tally } from './tally';\nimport { tidy } from './tidy';\nimport { KeyOrFn } from './types';\n\ntype CountOptions = {\n name?: string;\n sort?: boolean;\n wt?: string;\n};\n\n/**\n * Tallies the number distinct values for the specified keys and adds\n * the count as a new key (default `n`). Optionally sorts by the count.\n */\nexport function count<T extends object, Keys extends SingleOrArray<KeyOrFn<T>>>(\n groupKeys: Keys,\n options?: CountOptions | null | undefined\n) {\n const _count = (items: T[]) => {\n options = options ?? {};\n const { name = 'n', sort } = options;\n\n const results = tidy(\n items,\n groupBy(groupKeys, [tally(options)]),\n sort ? arrange(desc(name)) : identity\n );\n\n return results;\n };\n\n return _count;\n}\n"],"names":["tidy","groupBy","tally","arrange","desc","identity"],"mappings":";;;;;;;;AAkBgB,SAAA,KAAA,CACd,WACA,OACA,EAAA;AACA,EAAM,MAAA,MAAA,GAAS,CAAC,KAAe,KAAA;AAC7B,IAAA,OAAA,GAAU,4BAAW,EAAC,CAAA;AACtB,IAAA,MAAM,EAAE,IAAA,GAAO,GAAK,EAAA,IAAA,EAAS,GAAA,OAAA,CAAA;AAE7B,IAAA,MAAM,OAAU,GAAAA,SAAA;AAAA,MACd,KAAA;AAAA,MACAC,gBAAQ,SAAW,EAAA,CAACC,WAAM,CAAA,OAAO,CAAC,CAAC,CAAA;AAAA,MACnC,IAAO,GAAAC,eAAA,CAAQC,YAAK,CAAA,IAAI,CAAC,CAAI,GAAAC,iBAAA;AAAA,KAC/B,CAAA;AAEA,IAAO,OAAA,OAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
|
package/dist/lib/debug.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
function debug(label, options) {
|
|
6
4
|
const _debug = (items, context) => {
|
|
7
5
|
var _a;
|
|
@@ -14,13 +12,15 @@ function debug(label, options) {
|
|
|
14
12
|
}
|
|
15
13
|
}
|
|
16
14
|
options = options != null ? options : {};
|
|
17
|
-
const {limit = 10, output = "table"} = options;
|
|
15
|
+
const { limit = 10, output = "table" } = options;
|
|
18
16
|
const dashString = "--------------------------------------------------------------------------------";
|
|
19
17
|
let numDashes = dashString.length;
|
|
20
18
|
const prefixedLabel = prefix + "]" + (label == null ? "" : " " + label);
|
|
21
19
|
numDashes = Math.max(0, numDashes - (prefixedLabel.length + 2));
|
|
22
20
|
console.log(`${prefixedLabel} ${dashString.substring(0, numDashes)}`);
|
|
23
|
-
console[output](
|
|
21
|
+
console[output](
|
|
22
|
+
limit == null || limit >= items.length ? items : items.slice(0, limit)
|
|
23
|
+
);
|
|
24
24
|
return items;
|
|
25
25
|
};
|
|
26
26
|
return _debug;
|
package/dist/lib/debug.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debug.js","sources":["../../src/debug.ts"],"sourcesContent":["import { TidyContext, TidyFn } from './types';\n\ntype Options = {\n limit?: number | null;\n output?: 'log' | 'table';\n};\n\n/**\n * Debugs items\n */\nexport function debug<T extends object>(\n label?: string | null | undefined,\n options?: Options | null | undefined\n): TidyFn<T> {\n const _debug: TidyFn<T> = (items: T[], context?: TidyContext): T[] => {\n let prefix = '[tidy.debug';\n if (context?.groupKeys?.length) {\n const groupKeys = context.groupKeys;\n const groupKeyStrings = groupKeys\n .map((keyPair: any) => keyPair.join(': '))\n .join(', ');\n if (groupKeyStrings.length) {\n prefix += '|' + groupKeyStrings;\n }\n }\n options = options ?? {};\n const { limit = 10, output = 'table' } = options;\n\n // check for sneaky group keys as last arg\n const dashString =\n '--------------------------------------------------------------------------------';\n let numDashes = dashString.length;\n const prefixedLabel = prefix + ']' + (label == null ? '' : ' ' + label);\n numDashes = Math.max(0, numDashes - (prefixedLabel.length + 2));\n\n console.log(`${prefixedLabel} ${dashString.substring(0, numDashes)}`);\n console[output](\n limit == null || limit >= items.length ? items : items.slice(0, limit)\n );\n return items;\n };\n\n return _debug;\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"debug.js","sources":["../../src/debug.ts"],"sourcesContent":["import { TidyContext, TidyFn } from './types';\n\ntype Options = {\n limit?: number | null;\n output?: 'log' | 'table';\n};\n\n/**\n * Debugs items\n */\nexport function debug<T extends object>(\n label?: string | null | undefined,\n options?: Options | null | undefined\n): TidyFn<T> {\n const _debug: TidyFn<T> = (items: T[], context?: TidyContext): T[] => {\n let prefix = '[tidy.debug';\n if (context?.groupKeys?.length) {\n const groupKeys = context.groupKeys;\n const groupKeyStrings = groupKeys\n .map((keyPair: any) => keyPair.join(': '))\n .join(', ');\n if (groupKeyStrings.length) {\n prefix += '|' + groupKeyStrings;\n }\n }\n options = options ?? {};\n const { limit = 10, output = 'table' } = options;\n\n // check for sneaky group keys as last arg\n const dashString =\n '--------------------------------------------------------------------------------';\n let numDashes = dashString.length;\n const prefixedLabel = prefix + ']' + (label == null ? '' : ' ' + label);\n numDashes = Math.max(0, numDashes - (prefixedLabel.length + 2));\n\n console.log(`${prefixedLabel} ${dashString.substring(0, numDashes)}`);\n console[output](\n limit == null || limit >= items.length ? items : items.slice(0, limit)\n );\n return items;\n };\n\n return _debug;\n}\n"],"names":[],"mappings":";;AAUgB,SAAA,KAAA,CACd,OACA,OACW,EAAA;AACX,EAAM,MAAA,MAAA,GAAoB,CAAC,KAAA,EAAY,OAA+B,KAAA;AAdxE,IAAA,IAAA,EAAA,CAAA;AAeI,IAAA,IAAI,MAAS,GAAA,aAAA,CAAA;AACb,IAAI,IAAA,CAAA,EAAA,GAAA,OAAA,IAAA,IAAA,GAAA,KAAA,CAAA,GAAA,OAAA,CAAS,SAAT,KAAA,IAAA,GAAA,KAAA,CAAA,GAAA,EAAA,CAAoB,MAAQ,EAAA;AAC9B,MAAA,MAAM,YAAY,OAAQ,CAAA,SAAA,CAAA;AAC1B,MAAM,MAAA,eAAA,GAAkB,SACrB,CAAA,GAAA,CAAI,CAAC,OAAA,KAAiB,OAAQ,CAAA,IAAA,CAAK,IAAI,CAAC,CACxC,CAAA,IAAA,CAAK,IAAI,CAAA,CAAA;AACZ,MAAA,IAAI,gBAAgB,MAAQ,EAAA;AAC1B,QAAA,MAAA,IAAU,GAAM,GAAA,eAAA,CAAA;AAAA,OAClB;AAAA,KACF;AACA,IAAA,OAAA,GAAU,4BAAW,EAAC,CAAA;AACtB,IAAA,MAAM,EAAE,KAAA,GAAQ,EAAI,EAAA,MAAA,GAAS,SAAY,GAAA,OAAA,CAAA;AAGzC,IAAA,MAAM,UACJ,GAAA,kFAAA,CAAA;AACF,IAAA,IAAI,YAAY,UAAW,CAAA,MAAA,CAAA;AAC3B,IAAA,MAAM,gBAAgB,MAAS,GAAA,GAAA,IAAO,KAAS,IAAA,IAAA,GAAO,KAAK,GAAM,GAAA,KAAA,CAAA,CAAA;AACjE,IAAA,SAAA,GAAY,KAAK,GAAI,CAAA,CAAA,EAAG,SAAa,IAAA,aAAA,CAAc,SAAS,CAAE,CAAA,CAAA,CAAA;AAE9D,IAAQ,OAAA,CAAA,GAAA,CAAI,GAAG,aAAa,CAAA,CAAA,EAAI,WAAW,SAAU,CAAA,CAAA,EAAG,SAAS,CAAC,CAAE,CAAA,CAAA,CAAA;AACpE,IAAA,OAAA,CAAQ,MAAM,CAAA;AAAA,MACZ,KAAA,IAAS,QAAQ,KAAS,IAAA,KAAA,CAAM,SAAS,KAAQ,GAAA,KAAA,CAAM,KAAM,CAAA,CAAA,EAAG,KAAK,CAAA;AAAA,KACvE,CAAA;AACA,IAAO,OAAA,KAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAO,OAAA,MAAA,CAAA;AACT;;;;"}
|
package/dist/lib/distinct.js
CHANGED
|
@@ -1,20 +1,18 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var singleOrArray = require('./helpers/singleOrArray.js');
|
|
6
4
|
|
|
7
5
|
function distinct(keys) {
|
|
8
6
|
const _distinct = (items) => {
|
|
9
7
|
keys = singleOrArray.singleOrArray(keys);
|
|
10
8
|
if (!keys.length) {
|
|
11
|
-
const set = new Set();
|
|
9
|
+
const set = /* @__PURE__ */ new Set();
|
|
12
10
|
for (const item of items) {
|
|
13
11
|
set.add(item);
|
|
14
12
|
}
|
|
15
13
|
return Array.from(set);
|
|
16
14
|
}
|
|
17
|
-
const rootMap = new Map();
|
|
15
|
+
const rootMap = /* @__PURE__ */ new Map();
|
|
18
16
|
const distinctItems = [];
|
|
19
17
|
const lastKey = keys[keys.length - 1];
|
|
20
18
|
for (const item of items) {
|
|
@@ -31,7 +29,7 @@ function distinct(keys) {
|
|
|
31
29
|
break;
|
|
32
30
|
}
|
|
33
31
|
if (!map.has(mapItemKey)) {
|
|
34
|
-
map.set(mapItemKey, new Map());
|
|
32
|
+
map.set(mapItemKey, /* @__PURE__ */ new Map());
|
|
35
33
|
}
|
|
36
34
|
map = map.get(mapItemKey);
|
|
37
35
|
}
|