@tidyjs/tidy 2.5.2 → 2.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es/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/package.json +14 -9
- package/LICENSE +0 -21
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarize.js","sources":["../../src/summarize.ts"],"sourcesContent":["import {
|
|
1
|
+
{"version":3,"file":"summarize.js","sources":["../../src/summarize.ts"],"sourcesContent":["import { Prettify } from './type-utils';\nimport { singleOrArray } from './helpers/singleOrArray';\nimport { Key, TidyFn, Vector } from './types';\n\nexport type SummarizeSpec<T> = Record<Key, (items: T[]) => any>;\n\nexport interface SummarizeOptions<T = any> {\n rest?: (key: keyof T) => (items: T[]) => any;\n}\n\ntype SummarizedT<\n T extends object,\n SumSpec extends SummarizeSpec<T>,\n Options extends SummarizeOptions<T> | undefined\n> = {\n [K in keyof SumSpec]: ReturnType<SumSpec[K]>;\n} & (NonNullable<Options>['rest'] extends Function\n ? Omit<T, keyof SumSpec>\n : {});\n\n/**\n * summarizes items\n */\nexport function summarize<\n T extends object,\n SummarizedSpec extends SummarizeSpec<T> = SummarizeSpec<T>,\n Options extends SummarizeOptions<T> = SummarizeOptions<T>\n>(\n summarizeSpec: SummarizedSpec,\n options?: Options\n): TidyFn<T, Prettify<SummarizedT<T, SummarizedSpec, Options>>> {\n type Output = SummarizedT<T, SummarizedSpec, Options>;\n\n const _summarize: TidyFn<T, Prettify<Output>> = (\n items: T[]\n ): Prettify<Output>[] => {\n options = options ?? ({} as Options);\n\n // reduce but use a loop to be more readable\n const summarized = {} as Output;\n const keys = Object.keys(summarizeSpec) as (keyof SummarizedSpec)[];\n\n for (const key of keys) {\n summarized[key as keyof Output] = summarizeSpec[key](items);\n }\n\n // if we a function to apply to the rest of the keys is supplied, use it\n // TODO: improve types for rest\n if (options.rest && items.length) {\n const keysSet = new Set<string | number | symbol>(keys);\n const objectKeys = Object.keys(items[0]) as (keyof T)[];\n for (const objKey of objectKeys) {\n if (keysSet.has(objKey as any)) {\n continue;\n }\n\n (summarized as any)[objKey] = options.rest(objKey)(items);\n }\n }\n\n return [summarized] as Prettify<Output>[];\n };\n\n return _summarize;\n}\n\n/*-------- summarize helpers ----------------------------------------*/\n\nexport type SummaryKeyFn<T, K = keyof T> = (key: K) => (items: T[]) => any;\n\nfunction _summarizeHelper<\n T extends object,\n SummarizedT extends object = { [K in keyof T]: any }\n>(\n items: T[],\n summaryFn: SummaryKeyFn<T>,\n predicateFn?: (vector: Vector<T>) => boolean,\n keys?: Array<keyof T | ((items: T[]) => (keyof T)[])>\n): SummarizedT[] {\n if (!items.length) return [];\n\n // reduce but use a loop to be more readable\n const summarized = {} as SummarizedT;\n\n // read in keys from first object if not provided\n let keysArr: (keyof T)[];\n if (keys == null) {\n keysArr = Object.keys(items[0]) as (keyof T)[];\n } else {\n // expand them all to a flat list of keys\n keysArr = [];\n for (const keyInput of singleOrArray(keys as any)) {\n if (typeof keyInput === 'function') {\n keysArr.push(...(keyInput(items) as (keyof T)[]));\n } else {\n keysArr.push(keyInput);\n }\n }\n }\n\n for (const key of keysArr) {\n if (predicateFn) {\n // inefficient to compute this vector here, wonder if it should\n // be computed prior to this func being called somehow? (TODO)\n const vector = items.map((d) => d[key]);\n if (!predicateFn(vector)) {\n continue;\n }\n }\n summarized[key as unknown as keyof SummarizedT] = summaryFn(key)(\n items\n ) as any;\n }\n\n return [summarized];\n}\n\n/*---- summarizeAll() --------------------------------------------*/\n\ntype SummaryFnOutput<T extends object, F extends SummaryKeyFn<T>> = ReturnType<\n ReturnType<F>\n>;\n\nexport function summarizeAll<T extends object, F extends SummaryKeyFn<T>>(\n summaryFn: F\n): TidyFn<T, Prettify<Record<keyof T, SummaryFnOutput<T, F>>>> {\n const _summarizeAll: TidyFn<\n T,\n Prettify<Record<keyof T, SummaryFnOutput<T, F>>>\n > = (items: T[]): Prettify<Record<keyof T, SummaryFnOutput<T, F>>>[] =>\n _summarizeHelper(items, summaryFn);\n\n return _summarizeAll;\n}\n\n/*---- summarizeIf() --------------------------------------------*/\n// type is not perfect since it returns all keys of T, but better to have more than less I figure\nexport function summarizeIf<T extends object, F extends SummaryKeyFn<T>>(\n predicateFn: (vector: Vector<T>) => boolean,\n summaryFn: F\n): TidyFn<T, Prettify<Record<keyof T, SummaryFnOutput<T, F>>>> {\n const _summarizeIf: TidyFn<\n T,\n Prettify<Record<keyof T, SummaryFnOutput<T, F>>>\n > = (items: T[]): Prettify<Record<keyof T, SummaryFnOutput<T, F>>>[] =>\n _summarizeHelper(items, summaryFn, predicateFn);\n\n return _summarizeIf;\n}\n\n/*---- summarizeAt() --------------------------------------------*/\nexport function summarizeAt<\n T extends object,\n Keys extends (keyof T)[],\n F extends SummaryKeyFn<T, Keys[number]>\n>(\n keys: Keys,\n summaryFn: F\n): TidyFn<T, Prettify<Record<Keys[number], SummaryFnOutput<T, F>>>> {\n const _summarizeAt: TidyFn<\n T,\n Prettify<Record<Keys[number], SummaryFnOutput<T, F>>>\n > = (items: T[]): Prettify<Record<Keys[number], SummaryFnOutput<T, F>>>[] =>\n _summarizeHelper(items, summaryFn, undefined, keys);\n\n return _summarizeAt;\n}\n"],"names":["singleOrArray"],"mappings":";;;;AAuBgB,SAAA,SAAA,CAKd,eACA,OAC8D,EAAA;AAG9D,EAAM,MAAA,UAAA,GAA0C,CAC9C,KACuB,KAAA;AACvB,IAAA,OAAA,GAAU,4BAAY,EAAC,CAAA;AAGvB,IAAA,MAAM,aAAa,EAAC,CAAA;AACpB,IAAM,MAAA,IAAA,GAAO,MAAO,CAAA,IAAA,CAAK,aAAa,CAAA,CAAA;AAEtC,IAAA,KAAA,MAAW,OAAO,IAAM,EAAA;AACtB,MAAA,UAAA,CAAW,GAAmB,CAAA,GAAI,aAAc,CAAA,GAAG,EAAE,KAAK,CAAA,CAAA;AAAA,KAC5D;AAIA,IAAI,IAAA,OAAA,CAAQ,IAAQ,IAAA,KAAA,CAAM,MAAQ,EAAA;AAChC,MAAM,MAAA,OAAA,GAAU,IAAI,GAAA,CAA8B,IAAI,CAAA,CAAA;AACtD,MAAA,MAAM,UAAa,GAAA,MAAA,CAAO,IAAK,CAAA,KAAA,CAAM,CAAC,CAAC,CAAA,CAAA;AACvC,MAAA,KAAA,MAAW,UAAU,UAAY,EAAA;AAC/B,QAAI,IAAA,OAAA,CAAQ,GAAI,CAAA,MAAa,CAAG,EAAA;AAC9B,UAAA,SAAA;AAAA,SACF;AAEA,QAAC,WAAmB,MAAM,CAAA,GAAI,QAAQ,IAAK,CAAA,MAAM,EAAE,KAAK,CAAA,CAAA;AAAA,OAC1D;AAAA,KACF;AAEA,IAAA,OAAO,CAAC,UAAU,CAAA,CAAA;AAAA,GACpB,CAAA;AAEA,EAAO,OAAA,UAAA,CAAA;AACT,CAAA;AAMA,SAAS,gBAIP,CAAA,KAAA,EACA,SACA,EAAA,WAAA,EACA,IACe,EAAA;AACf,EAAA,IAAI,CAAC,KAAA,CAAM,MAAQ,EAAA,OAAO,EAAC,CAAA;AAG3B,EAAA,MAAM,aAAa,EAAC,CAAA;AAGpB,EAAI,IAAA,OAAA,CAAA;AACJ,EAAA,IAAI,QAAQ,IAAM,EAAA;AAChB,IAAA,OAAA,GAAU,MAAO,CAAA,IAAA,CAAK,KAAM,CAAA,CAAC,CAAC,CAAA,CAAA;AAAA,GACzB,MAAA;AAEL,IAAA,OAAA,GAAU,EAAC,CAAA;AACX,IAAW,KAAA,MAAA,QAAA,IAAYA,2BAAc,CAAA,IAAW,CAAG,EAAA;AACjD,MAAI,IAAA,OAAO,aAAa,UAAY,EAAA;AAClC,QAAA,OAAA,CAAQ,IAAK,CAAA,GAAI,QAAS,CAAA,KAAK,CAAiB,CAAA,CAAA;AAAA,OAC3C,MAAA;AACL,QAAA,OAAA,CAAQ,KAAK,QAAQ,CAAA,CAAA;AAAA,OACvB;AAAA,KACF;AAAA,GACF;AAEA,EAAA,KAAA,MAAW,OAAO,OAAS,EAAA;AACzB,IAAA,IAAI,WAAa,EAAA;AAGf,MAAA,MAAM,SAAS,KAAM,CAAA,GAAA,CAAI,CAAC,CAAM,KAAA,CAAA,CAAE,GAAG,CAAC,CAAA,CAAA;AACtC,MAAI,IAAA,CAAC,WAAY,CAAA,MAAM,CAAG,EAAA;AACxB,QAAA,SAAA;AAAA,OACF;AAAA,KACF;AACA,IAAW,UAAA,CAAA,GAAmC,CAAI,GAAA,SAAA,CAAU,GAAG,CAAA;AAAA,MAC7D,KAAA;AAAA,KACF,CAAA;AAAA,GACF;AAEA,EAAA,OAAO,CAAC,UAAU,CAAA,CAAA;AACpB,CAAA;AAQO,SAAS,aACd,SAC6D,EAAA;AAC7D,EAAA,MAAM,aAGF,GAAA,CAAC,KACH,KAAA,gBAAA,CAAiB,OAAO,SAAS,CAAA,CAAA;AAEnC,EAAO,OAAA,aAAA,CAAA;AACT,CAAA;AAIgB,SAAA,WAAA,CACd,aACA,SAC6D,EAAA;AAC7D,EAAA,MAAM,eAGF,CAAC,KAAA,KACH,gBAAiB,CAAA,KAAA,EAAO,WAAW,WAAW,CAAA,CAAA;AAEhD,EAAO,OAAA,YAAA,CAAA;AACT,CAAA;AAGgB,SAAA,WAAA,CAKd,MACA,SACkE,EAAA;AAClE,EAAA,MAAM,eAGF,CAAC,KAAA,KACH,iBAAiB,KAAO,EAAA,SAAA,EAAW,QAAW,IAAI,CAAA,CAAA;AAEpD,EAAO,OAAA,YAAA,CAAA;AACT;;;;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deviation.js","sources":["../../../src/summary/deviation.ts"],"sourcesContent":["import { deviation as d3deviation } from 'd3-array';\n\n/**\n * Returns a function that computes the deviation 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 deviation<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":"deviation.js","sources":["../../../src/summary/deviation.ts"],"sourcesContent":["import { deviation as d3deviation } from 'd3-array';\n\n/**\n * Returns a function that computes the deviation 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 deviation<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[]) => d3deviation(items, keyFn);\n}\n"],"names":["d3deviation"],"mappings":";;;;AAMO,SAAS,UACd,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,iBAAY,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AACjD;;;;"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"first.js","sources":["../../../src/summary/first.ts"],"sourcesContent":["/**\n * Returns a function that returns the first 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 first<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[]) => (items.length ? keyFn(items[0]) : undefined);\n}\n"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"first.js","sources":["../../../src/summary/first.ts"],"sourcesContent":["/**\n * Returns a function that returns the first 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 first<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[]) => (items.length ? keyFn(items[0]) : undefined);\n}\n"],"names":[],"mappings":";;AAIO,SAAS,MAAwB,GAAgC,EAAA;AACtE,EAAM,MAAA,KAAA,GAAQ,OAAO,GAAQ,KAAA,UAAA,GAAa,MAAM,CAAC,CAAA,KAAS,EAAE,GAAG,CAAA,CAAA;AAE/D,EAAO,OAAA,CAAC,UAAgB,KAAM,CAAA,MAAA,GAAS,MAAM,KAAM,CAAA,CAAC,CAAC,CAAI,GAAA,KAAA,CAAA,CAAA;AAC3D;;;;"}
|
package/dist/lib/summary/last.js
CHANGED
|
@@ -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;;;;"}
|
package/dist/lib/summary/max.js
CHANGED
|
@@ -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,WAAM,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAC3C;;;;"}
|
package/dist/lib/summary/mean.js
CHANGED
|
@@ -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,cAAa,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","fsum","denominator","rate"],"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,GAAYC,YAAK,CAAA,KAAA,EAAO,WAAW,CAAA,CAAA;AACzC,IAAMC,MAAAA,YAAAA,GAAcD,YAAK,CAAA,KAAA,EAAO,aAAa,CAAA,CAAA;AAC7C,IAAO,OAAAE,SAAA,CAAKH,YAAWE,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,cAAS,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAC9C;;;;"}
|
package/dist/lib/summary/min.js
CHANGED
|
@@ -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,WAAM,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAC3C;;;;"}
|
package/dist/lib/summary/n.js
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,11 +1,9 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
function nDistinct(key, options = {}) {
|
|
6
4
|
const keyFn = typeof key === "function" ? key : (d) => d[key];
|
|
7
5
|
return (items) => {
|
|
8
|
-
const uniques = new
|
|
6
|
+
const uniques = /* @__PURE__ */ new Set();
|
|
9
7
|
let count = 0;
|
|
10
8
|
let i = 0;
|
|
11
9
|
for (const item of items) {
|
|
@@ -15,7 +13,7 @@ function nDistinct(key, options = {}) {
|
|
|
15
13
|
continue;
|
|
16
14
|
}
|
|
17
15
|
count += 1;
|
|
18
|
-
uniques.
|
|
16
|
+
uniques.add(value);
|
|
19
17
|
}
|
|
20
18
|
}
|
|
21
19
|
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;;;;"}
|
package/dist/lib/summary/sum.js
CHANGED
|
@@ -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":["fsum"],"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,KAAeA,YAAK,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,gBAAW,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAChD;;;;"}
|
package/dist/lib/tally.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var summarize = require('./summarize.js');
|
|
6
4
|
var n = require('./summary/n.js');
|
|
7
5
|
var sum = require('./summary/sum.js');
|
|
8
6
|
|
|
9
7
|
function tally(options) {
|
|
10
8
|
const _tally = (items) => {
|
|
11
|
-
const {name = "n", wt} = options != null ? options : {};
|
|
12
|
-
const summarized = summarize.summarize({[name]: wt == null ? n.n() : sum.sum(wt)})(
|
|
9
|
+
const { name = "n", wt } = options != null ? options : {};
|
|
10
|
+
const summarized = summarize.summarize({ [name]: wt == null ? n.n() : sum.sum(wt) })(
|
|
11
|
+
items
|
|
12
|
+
);
|
|
13
13
|
return summarized;
|
|
14
14
|
};
|
|
15
15
|
return _tally;
|
package/dist/lib/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":["summarize","n","sum"],"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":["summarize","n","sum"],"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,GAAAA,mBAAA,CAAU,EAAE,CAAC,IAAI,GAAG,EAAM,IAAA,IAAA,GAAOC,GAAE,EAAA,GAAIC,OAAI,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/lib/tidy.js
CHANGED
package/dist/lib/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/lib/total.js
CHANGED
package/dist/lib/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":["summarize","mutate","summarizeAll","summarizeIf","summarizeAt"],"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":["summarize","mutate","summarizeAll","summarizeIf","summarizeAt"],"mappings":";;;;;AAcgB,SAAA,KAAA,CAId,eAA+B,UAAgC,EAAA;AAC/D,EAAM,MAAA,MAAA,GAAuB,CAAC,KAAoB,KAAA;AAChD,IAAA,MAAM,UAAa,GAAAA,mBAAA,CAA6B,aAAa,CAAA,CAAE,KAAK,CAAA,CAAA;AACpE,IAAA,MAAM,OAAU,GAAAC,aAAA,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,GAAAC,sBAAA,CAAmB,SAAS,CAAA,CAAE,KAAK,CAAA,CAAA;AACtD,IAAA,MAAM,OAAU,GAAAD,aAAA,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,GAAAE,qBAAA,CAAkB,WAAa,EAAA,SAAS,EAAE,KAAK,CAAA,CAAA;AAClE,IAAA,MAAM,OAAU,GAAAF,aAAA,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,GAAAG,qBAAA,CAAwB,IAAM,EAAA,SAAS,EAAE,KAAK,CAAA,CAAA;AACjE,IAAA,MAAM,OAAU,GAAAH,aAAA,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/lib/transmute.js
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":["mutate","select"],"mappings":";;;;;AASO,SAAS,UACd,UACyC,EAAA;AACzC,EAAM,MAAA,UAAA,GAAsD,CAAC,KAAe,KAAA;AAC1E,IAAA,MAAM,OAAU,GAAAA,aAAA,CAAiB,UAAU,CAAA,CAAE,KAAK,CAAA,CAAA;AAClD,IAAA,MAAM,SAASC,aAAO,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":["fcumsum"],"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,KAAeA,iBAAQ,CAAA,KAAA,EAAO,KAAK,CAAA,CAAA;AAC7C;;;;"}
|
package/dist/lib/vector/lag.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
function lag(key, options) {
|
|
6
4
|
const keyFn = typeof key === "function" ? key : (d) => d[key];
|
|
7
|
-
const {n = 1, default: defaultValue} = options != null ? options : {};
|
|
5
|
+
const { n = 1, default: defaultValue } = options != null ? options : {};
|
|
8
6
|
return (items) => {
|
|
9
7
|
return items.map((_, i) => {
|
|
10
8
|
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/lib/vector/lead.js
CHANGED
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
function lead(key, options) {
|
|
6
4
|
const keyFn = typeof key === "function" ? key : (d) => d[key];
|
|
7
|
-
const {n = 1, default: defaultValue} = options != null ? options : {};
|
|
5
|
+
const { n = 1, default: defaultValue } = options != null ? options : {};
|
|
8
6
|
return (items) => {
|
|
9
7
|
return items.map((_, i) => {
|
|
10
8
|
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/lib/vector/roll.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
function roll(width, rollFn, options) {
|
|
6
|
-
const {partial = false, align = "right"} = options != null ? options : {};
|
|
4
|
+
const { partial = false, align = "right" } = options != null ? options : {};
|
|
7
5
|
const halfWidth = Math.floor(width / 2);
|
|
8
6
|
return (items) => {
|
|
9
7
|
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/lib/when.js
CHANGED
|
@@ -1,14 +1,11 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
-
|
|
5
3
|
var tidy = require('./tidy.js');
|
|
6
4
|
|
|
7
5
|
function when(predicate, fns) {
|
|
8
6
|
const _when = (items) => {
|
|
9
7
|
if (typeof predicate === "function") {
|
|
10
|
-
if (!predicate(items))
|
|
11
|
-
return items;
|
|
8
|
+
if (!predicate(items)) return items;
|
|
12
9
|
} else if (!predicate) {
|
|
13
10
|
return items;
|
|
14
11
|
}
|
package/dist/lib/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":["tidy"],"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":["tidy"],"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,GAAAA,SAAA,CAAa,KAAO,EAAA,GAAG,GAAG,CAAA,CAAA;AAC3C,IAAO,OAAA,OAAA,CAAA;AAAA,GACT,CAAA;AACA,EAAO,OAAA,KAAA,CAAA;AACT;;;;"}
|