@hpcc-js/dataflow 9.6.9 → 9.6.10

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/src/index.ts CHANGED
@@ -1,27 +1,27 @@
1
- export * from "./activities/activity.ts";
2
- export * from "./activities/concat.ts";
3
- export * from "./activities/each.ts";
4
- export * from "./activities/entries.ts";
5
- export * from "./activities/filter.ts";
6
- export * from "./activities/first.ts";
7
- export * from "./activities/group.ts";
8
- export * from "./activities/histogram.ts";
9
- export * from "./activities/join.ts";
10
- export * from "./activities/map.ts";
11
- export * from "./activities/normalize.ts";
12
- export * from "./activities/skip.ts";
13
- export * from "./activities/sort.ts";
14
- export * from "./observers/count.ts";
15
- export * from "./observers/deviation.ts";
16
- export * from "./observers/distribution.ts";
17
- export * from "./observers/extent.ts";
18
- export * from "./observers/observer.ts";
19
- export * from "./observers/max.ts";
20
- export * from "./observers/mean.ts";
21
- export * from "./observers/median.ts";
22
- export * from "./observers/min.ts";
23
- export * from "./observers/quartile.ts";
24
- export * from "./observers/reduce.ts";
25
- export * from "./observers/variance.ts";
26
- export * from "./utils/generate.ts";
27
- export * from "./utils/pipe.ts";
1
+ export * from "./activities/activity.ts";
2
+ export * from "./activities/concat.ts";
3
+ export * from "./activities/each.ts";
4
+ export * from "./activities/entries.ts";
5
+ export * from "./activities/filter.ts";
6
+ export * from "./activities/first.ts";
7
+ export * from "./activities/group.ts";
8
+ export * from "./activities/histogram.ts";
9
+ export * from "./activities/join.ts";
10
+ export * from "./activities/map.ts";
11
+ export * from "./activities/normalize.ts";
12
+ export * from "./activities/skip.ts";
13
+ export * from "./activities/sort.ts";
14
+ export * from "./observers/count.ts";
15
+ export * from "./observers/deviation.ts";
16
+ export * from "./observers/distribution.ts";
17
+ export * from "./observers/extent.ts";
18
+ export * from "./observers/observer.ts";
19
+ export * from "./observers/max.ts";
20
+ export * from "./observers/mean.ts";
21
+ export * from "./observers/median.ts";
22
+ export * from "./observers/min.ts";
23
+ export * from "./observers/quartile.ts";
24
+ export * from "./observers/reduce.ts";
25
+ export * from "./observers/variance.ts";
26
+ export * from "./utils/generate.ts";
27
+ export * from "./utils/pipe.ts";
@@ -1,15 +1,15 @@
1
- import { Observer } from "./observer.ts";
2
-
3
- export function count<T = any>(): Observer<T, number> {
4
- let count: number;
5
-
6
- return {
7
- observe: (value: T, idx: number) => {
8
- if (idx === 0) {
9
- count = 0;
10
- }
11
- ++count;
12
- },
13
- peek: () => count
14
- };
15
- }
1
+ import { Observer } from "./observer.ts";
2
+
3
+ export function count<T = any>(): Observer<T, number> {
4
+ let count: number;
5
+
6
+ return {
7
+ observe: (value: T, idx: number) => {
8
+ if (idx === 0) {
9
+ count = 0;
10
+ }
11
+ ++count;
12
+ },
13
+ peek: () => count
14
+ };
15
+ }
@@ -1,24 +1,24 @@
1
- import { variance } from "./variance.ts";
2
- import { AccessorT, Observer, Accessor } from "./observer.ts";
3
-
4
- function _deviation(): Observer<number, number | undefined> {
5
- const v = variance();
6
-
7
- return {
8
- observe: (value: number, idx: number) => {
9
- v.observe(value, idx);
10
- },
11
- peek: () => {
12
- const variance = v.peek();
13
- return variance !== undefined ? Math.sqrt(variance) : variance;
14
- }
15
- };
16
- }
17
-
18
- export type DeviationAccessor<T> = AccessorT<T, number>;
19
-
20
- export function deviation(): Observer<number, number | undefined>;
21
- export function deviation<T = any>(callbackFn: DeviationAccessor<T>): Observer<T, number | undefined>;
22
- export function deviation<T = any>(callbackFn?: DeviationAccessor<T>): Observer<number, number | undefined> | Observer<T, number | undefined> {
23
- return callbackFn ? Accessor(_deviation, callbackFn) : _deviation();
24
- }
1
+ import { variance } from "./variance.ts";
2
+ import { AccessorT, Observer, Accessor } from "./observer.ts";
3
+
4
+ function _deviation(): Observer<number, number | undefined> {
5
+ const v = variance();
6
+
7
+ return {
8
+ observe: (value: number, idx: number) => {
9
+ v.observe(value, idx);
10
+ },
11
+ peek: () => {
12
+ const variance = v.peek();
13
+ return variance !== undefined ? Math.sqrt(variance) : variance;
14
+ }
15
+ };
16
+ }
17
+
18
+ export type DeviationAccessor<T> = AccessorT<T, number>;
19
+
20
+ export function deviation(): Observer<number, number | undefined>;
21
+ export function deviation<T = any>(callbackFn: DeviationAccessor<T>): Observer<T, number | undefined>;
22
+ export function deviation<T = any>(callbackFn?: DeviationAccessor<T>): Observer<number, number | undefined> | Observer<T, number | undefined> {
23
+ return callbackFn ? Accessor(_deviation, callbackFn) : _deviation();
24
+ }
@@ -1,51 +1,51 @@
1
- import { max } from "./max.ts";
2
- import { min } from "./min.ts";
3
- import { mean } from "./mean.ts";
4
- import { variance } from "./variance.ts";
5
- import { Observer, Accessor } from "./observer.ts";
6
-
7
- export type DistributionCallback<T> = (row: T, currentIndex: number) => number;
8
-
9
- export type DistributionT = {
10
- min: number,
11
- mean: number,
12
- max: number,
13
- deviation: number | undefined,
14
- variance: number | undefined
15
- } | undefined;
16
-
17
- function _distribution(): Observer<number, DistributionT> {
18
- const minFO = min();
19
- const maxFO = max();
20
- const meanFO = mean();
21
- const varianceFO = variance();
22
-
23
- return {
24
- observe: (value: number, idx: number) => {
25
- minFO.observe(value, idx);
26
- maxFO.observe(value, idx);
27
- meanFO.observe(value, idx);
28
- varianceFO.observe(value, idx);
29
- },
30
- peek: () => {
31
- const minResult = minFO.peek();
32
- if (minResult === undefined) return undefined;
33
- const varianceResult = varianceFO.peek();
34
- return {
35
- min: minResult,
36
- max: maxFO.peek(),
37
- mean: meanFO.peek(),
38
- variance: varianceResult,
39
- deviation: varianceResult !== undefined ? Math.sqrt(varianceResult) : undefined
40
- };
41
- }
42
- };
43
- }
44
-
45
- export type DistributionAccessor<T> = (row: T, currentIndex: number) => number;
46
-
47
- export function distribution(): Observer<number, DistributionT>;
48
- export function distribution<T = any>(callbackFn: DistributionAccessor<T>): Observer<T, DistributionT>;
49
- export function distribution<T = any>(callbackFn?: DistributionAccessor<T>): Observer<number, DistributionT> | Observer<T, DistributionT> {
50
- return callbackFn ? Accessor(_distribution, callbackFn) : _distribution();
51
- }
1
+ import { max } from "./max.ts";
2
+ import { min } from "./min.ts";
3
+ import { mean } from "./mean.ts";
4
+ import { variance } from "./variance.ts";
5
+ import { Observer, Accessor } from "./observer.ts";
6
+
7
+ export type DistributionCallback<T> = (row: T, currentIndex: number) => number;
8
+
9
+ export type DistributionT = {
10
+ min: number,
11
+ mean: number,
12
+ max: number,
13
+ deviation: number | undefined,
14
+ variance: number | undefined
15
+ } | undefined;
16
+
17
+ function _distribution(): Observer<number, DistributionT> {
18
+ const minFO = min();
19
+ const maxFO = max();
20
+ const meanFO = mean();
21
+ const varianceFO = variance();
22
+
23
+ return {
24
+ observe: (value: number, idx: number) => {
25
+ minFO.observe(value, idx);
26
+ maxFO.observe(value, idx);
27
+ meanFO.observe(value, idx);
28
+ varianceFO.observe(value, idx);
29
+ },
30
+ peek: () => {
31
+ const minResult = minFO.peek();
32
+ if (minResult === undefined) return undefined;
33
+ const varianceResult = varianceFO.peek();
34
+ return {
35
+ min: minResult,
36
+ max: maxFO.peek(),
37
+ mean: meanFO.peek(),
38
+ variance: varianceResult,
39
+ deviation: varianceResult !== undefined ? Math.sqrt(varianceResult) : undefined
40
+ };
41
+ }
42
+ };
43
+ }
44
+
45
+ export type DistributionAccessor<T> = (row: T, currentIndex: number) => number;
46
+
47
+ export function distribution(): Observer<number, DistributionT>;
48
+ export function distribution<T = any>(callbackFn: DistributionAccessor<T>): Observer<T, DistributionT>;
49
+ export function distribution<T = any>(callbackFn?: DistributionAccessor<T>): Observer<number, DistributionT> | Observer<T, DistributionT> {
50
+ return callbackFn ? Accessor(_distribution, callbackFn) : _distribution();
51
+ }
@@ -1,24 +1,24 @@
1
- import { AccessorT, Observer, Accessor } from "./observer.ts";
2
- import { max } from "./max.ts";
3
- import { min } from "./min.ts";
4
-
5
- function _extent(): Observer<number, [number, number]> {
6
- const minFO = min();
7
- const maxFO = max();
8
-
9
- return {
10
- observe: (value: number, idx: number) => {
11
- minFO.observe(value, idx);
12
- maxFO.observe(value, idx);
13
- },
14
- peek: () => [minFO.peek(), maxFO.peek()]
15
- };
16
- }
17
-
18
- export type ExtentAccessor<T> = AccessorT<T, number>;
19
-
20
- export function extent(): Observer<number, [number, number]>;
21
- export function extent<T = any>(callbackFn: ExtentAccessor<T>): Observer<T, [number, number]>;
22
- export function extent<T = any>(callbackFn?: ExtentAccessor<T>): Observer<number, [number, number]> | Observer<T, [number, number]> {
23
- return callbackFn ? Accessor(_extent, callbackFn) : _extent();
24
- }
1
+ import { AccessorT, Observer, Accessor } from "./observer.ts";
2
+ import { max } from "./max.ts";
3
+ import { min } from "./min.ts";
4
+
5
+ function _extent(): Observer<number, [number, number]> {
6
+ const minFO = min();
7
+ const maxFO = max();
8
+
9
+ return {
10
+ observe: (value: number, idx: number) => {
11
+ minFO.observe(value, idx);
12
+ maxFO.observe(value, idx);
13
+ },
14
+ peek: () => [minFO.peek(), maxFO.peek()]
15
+ };
16
+ }
17
+
18
+ export type ExtentAccessor<T> = AccessorT<T, number>;
19
+
20
+ export function extent(): Observer<number, [number, number]>;
21
+ export function extent<T = any>(callbackFn: ExtentAccessor<T>): Observer<T, [number, number]>;
22
+ export function extent<T = any>(callbackFn?: ExtentAccessor<T>): Observer<number, [number, number]> | Observer<T, [number, number]> {
23
+ return callbackFn ? Accessor(_extent, callbackFn) : _extent();
24
+ }
@@ -1,24 +1,24 @@
1
- import { Observer, Accessor, AccessorT } from "./observer.ts";
2
-
3
- function _max(): Observer<number, number> {
4
- let max: number;
5
-
6
- return {
7
- observe: (value: number, idx: number) => {
8
- if (idx === 0) {
9
- max = value;
10
- } else if (max < value) {
11
- max = value;
12
- }
13
- },
14
- peek: () => max
15
- };
16
- }
17
-
18
- export type MaxAccessor<T> = AccessorT<T, number>;
19
-
20
- export function max(): Observer<number, number>;
21
- export function max<T = any>(callbackFn: MaxAccessor<T>): Observer<T, number>;
22
- export function max<T = any>(callbackFn?: MaxAccessor<T>): Observer<number, number> | Observer<T, number> {
23
- return callbackFn ? Accessor(_max, callbackFn) : _max();
24
- }
1
+ import { Observer, Accessor, AccessorT } from "./observer.ts";
2
+
3
+ function _max(): Observer<number, number> {
4
+ let max: number;
5
+
6
+ return {
7
+ observe: (value: number, idx: number) => {
8
+ if (idx === 0) {
9
+ max = value;
10
+ } else if (max < value) {
11
+ max = value;
12
+ }
13
+ },
14
+ peek: () => max
15
+ };
16
+ }
17
+
18
+ export type MaxAccessor<T> = AccessorT<T, number>;
19
+
20
+ export function max(): Observer<number, number>;
21
+ export function max<T = any>(callbackFn: MaxAccessor<T>): Observer<T, number>;
22
+ export function max<T = any>(callbackFn?: MaxAccessor<T>): Observer<number, number> | Observer<T, number> {
23
+ return callbackFn ? Accessor(_max, callbackFn) : _max();
24
+ }
@@ -1,26 +1,26 @@
1
- import { Observer, Accessor } from "./observer.ts";
2
-
3
- function _mean(): Observer<number, number> {
4
- let total: number;
5
- let count: number;
6
-
7
- return {
8
- observe: (value: number, idx: number) => {
9
- if (idx === 0) {
10
- total = value;
11
- } else {
12
- total += value;
13
- }
14
- count = idx;
15
- },
16
- peek: () => total / (count + 1)
17
- };
18
- }
19
-
20
- export type MeanAccessor<T> = (row: T, currentIndex: number) => number;
21
-
22
- export function mean(): Observer<number, number>;
23
- export function mean<T = any>(callbackFn: MeanAccessor<T>): Observer<T, number>;
24
- export function mean<T = any>(callbackFn?: MeanAccessor<T>): Observer<number, number> | Observer<T, number> {
25
- return callbackFn ? Accessor(_mean, callbackFn) : _mean();
26
- }
1
+ import { Observer, Accessor } from "./observer.ts";
2
+
3
+ function _mean(): Observer<number, number> {
4
+ let total: number;
5
+ let count: number;
6
+
7
+ return {
8
+ observe: (value: number, idx: number) => {
9
+ if (idx === 0) {
10
+ total = value;
11
+ } else {
12
+ total += value;
13
+ }
14
+ count = idx;
15
+ },
16
+ peek: () => total / (count + 1)
17
+ };
18
+ }
19
+
20
+ export type MeanAccessor<T> = (row: T, currentIndex: number) => number;
21
+
22
+ export function mean(): Observer<number, number>;
23
+ export function mean<T = any>(callbackFn: MeanAccessor<T>): Observer<T, number>;
24
+ export function mean<T = any>(callbackFn?: MeanAccessor<T>): Observer<number, number> | Observer<T, number> {
25
+ return callbackFn ? Accessor(_mean, callbackFn) : _mean();
26
+ }
@@ -1,31 +1,31 @@
1
- import { AccessorT, Observer, Accessor } from "./observer.ts";
2
-
3
- function _median(): Observer<number, number> {
4
- let values: number[];
5
-
6
- return {
7
- observe: (value: number, idx: number) => {
8
- if (idx === 0) {
9
- values = [];
10
- }
11
- values.push(value);
12
- },
13
- peek: () => {
14
- const sorted = values.sort((l, r) => l - r);
15
- const mid = sorted.length / 2;
16
- if (sorted.length % 2 === 0) {
17
- return (sorted[mid - 1] + sorted[mid]) / 2;
18
- } else {
19
- return sorted[Math.floor(mid)];
20
- }
21
- }
22
- };
23
- }
24
-
25
- export type MedianAccessor<T> = AccessorT<T, number>;
26
-
27
- export function median(): Observer<number, number>;
28
- export function median<T = any>(callbackFn: MedianAccessor<T>): Observer<T, number>;
29
- export function median<T = any>(callbackFn?: MedianAccessor<T>): Observer<number, number> | Observer<T, number> {
30
- return callbackFn ? Accessor(_median, callbackFn) : _median();
1
+ import { AccessorT, Observer, Accessor } from "./observer.ts";
2
+
3
+ function _median(): Observer<number, number> {
4
+ let values: number[];
5
+
6
+ return {
7
+ observe: (value: number, idx: number) => {
8
+ if (idx === 0) {
9
+ values = [];
10
+ }
11
+ values.push(value);
12
+ },
13
+ peek: () => {
14
+ const sorted = values.sort((l, r) => l - r);
15
+ const mid = sorted.length / 2;
16
+ if (sorted.length % 2 === 0) {
17
+ return (sorted[mid - 1] + sorted[mid]) / 2;
18
+ } else {
19
+ return sorted[Math.floor(mid)];
20
+ }
21
+ }
22
+ };
23
+ }
24
+
25
+ export type MedianAccessor<T> = AccessorT<T, number>;
26
+
27
+ export function median(): Observer<number, number>;
28
+ export function median<T = any>(callbackFn: MedianAccessor<T>): Observer<T, number>;
29
+ export function median<T = any>(callbackFn?: MedianAccessor<T>): Observer<number, number> | Observer<T, number> {
30
+ return callbackFn ? Accessor(_median, callbackFn) : _median();
31
31
  }
@@ -1,24 +1,24 @@
1
- import { Observer, Accessor, AccessorT } from "./observer.ts";
2
-
3
- function _min(): Observer<number, number> {
4
- let min: number;
5
-
6
- return {
7
- observe: (value: number, idx: number) => {
8
- if (idx === 0) {
9
- min = value;
10
- } else if (min > value) {
11
- min = value;
12
- }
13
- },
14
- peek: () => min
15
- };
16
- }
17
-
18
- export type MinAccessor<T> = AccessorT<T, number>;
19
-
20
- export function min(): Observer<number, number>;
21
- export function min<T = any>(callbackFn: MinAccessor<T>): Observer<T, number>;
22
- export function min<T = any>(callbackFn?: MinAccessor<T>): Observer<number, number> | Observer<T, number> {
23
- return callbackFn ? Accessor(_min, callbackFn) : _min();
24
- }
1
+ import { Observer, Accessor, AccessorT } from "./observer.ts";
2
+
3
+ function _min(): Observer<number, number> {
4
+ let min: number;
5
+
6
+ return {
7
+ observe: (value: number, idx: number) => {
8
+ if (idx === 0) {
9
+ min = value;
10
+ } else if (min > value) {
11
+ min = value;
12
+ }
13
+ },
14
+ peek: () => min
15
+ };
16
+ }
17
+
18
+ export type MinAccessor<T> = AccessorT<T, number>;
19
+
20
+ export function min(): Observer<number, number>;
21
+ export function min<T = any>(callbackFn: MinAccessor<T>): Observer<T, number>;
22
+ export function min<T = any>(callbackFn?: MinAccessor<T>): Observer<number, number> | Observer<T, number> {
23
+ return callbackFn ? Accessor(_min, callbackFn) : _min();
24
+ }
@@ -1,52 +1,52 @@
1
- import { Source } from "../activities/activity.ts";
2
- import { each } from "../activities/each.ts";
3
-
4
- export type AccessorT<T, U> = (row: T, currentIndex: number) => U;
5
-
6
- export interface ObserverFactory<T, U> {
7
- (): Observer<T, U>;
8
- }
9
-
10
- export interface Observer<T, U> {
11
- observe(r: T, idx: number): void;
12
- peek(): U;
13
- }
14
-
15
- export function Accessor<T = any, U = any, V = any>(fof: ObserverFactory<V, U>, accesor: AccessorT<T, V>): Observer<T, U> {
16
- const s = fof();
17
-
18
- return {
19
- observe: (_: T, i: number) => {
20
- s.observe(accesor(_, i), i);
21
- },
22
- peek: s.peek
23
- };
24
- }
25
-
26
- // This is an pass through activity so a FlowObserver can be inserted into a pipeline ---
27
- export function sensor<T, U = any>(s: Observer<T, U>) {
28
- return each((r, i) => s.observe(r, i));
29
- }
30
-
31
- // This converts a FlowObserver to an Activity ---
32
- export function activity<T, U>(s: Observer<T, U>) {
33
- return function* (source: Source<T>) {
34
- let i = -1;
35
- for (const row of source) {
36
- s.observe(row, ++i);
37
- }
38
- yield s.peek();
39
- };
40
- }
41
-
42
- // This converts a FlowObserver to an ScalarActivity ---
43
- export function scalar<T = any, U = any>(s: Observer<T, U>) {
44
- return function (source: Source<T>) {
45
- let i = -1;
46
- for (const row of source) {
47
- s.observe(row, ++i);
48
- }
49
- return s.peek();
50
- };
51
- }
52
-
1
+ import { Source } from "../activities/activity.ts";
2
+ import { each } from "../activities/each.ts";
3
+
4
+ export type AccessorT<T, U> = (row: T, currentIndex: number) => U;
5
+
6
+ export interface ObserverFactory<T, U> {
7
+ (): Observer<T, U>;
8
+ }
9
+
10
+ export interface Observer<T, U> {
11
+ observe(r: T, idx: number): void;
12
+ peek(): U;
13
+ }
14
+
15
+ export function Accessor<T = any, U = any, V = any>(fof: ObserverFactory<V, U>, accesor: AccessorT<T, V>): Observer<T, U> {
16
+ const s = fof();
17
+
18
+ return {
19
+ observe: (_: T, i: number) => {
20
+ s.observe(accesor(_, i), i);
21
+ },
22
+ peek: s.peek
23
+ };
24
+ }
25
+
26
+ // This is an pass through activity so a FlowObserver can be inserted into a pipeline ---
27
+ export function sensor<T, U = any>(s: Observer<T, U>) {
28
+ return each((r, i) => s.observe(r, i));
29
+ }
30
+
31
+ // This converts a FlowObserver to an Activity ---
32
+ export function activity<T, U>(s: Observer<T, U>) {
33
+ return function* (source: Source<T>) {
34
+ let i = -1;
35
+ for (const row of source) {
36
+ s.observe(row, ++i);
37
+ }
38
+ yield s.peek();
39
+ };
40
+ }
41
+
42
+ // This converts a FlowObserver to an ScalarActivity ---
43
+ export function scalar<T = any, U = any>(s: Observer<T, U>) {
44
+ return function (source: Source<T>) {
45
+ let i = -1;
46
+ for (const row of source) {
47
+ s.observe(row, ++i);
48
+ }
49
+ return s.peek();
50
+ };
51
+ }
52
+