From 05bf2131a9c0bd91eb20c9b39eba93c512a7c479 Mon Sep 17 00:00:00 2001 From: Karsten Schmidt Date: Tue, 12 Feb 2019 17:08:01 +0000 Subject: [PATCH] refactor(transducers): restructure, migrate / remove various functions BREAKING CHANGE: migrate / remove various functions to other packages - constantly(), delay(), identity() => @thi.ng/compose - randomID(), weightedRandom() => @thi.ng/random - remove re-exports: - even(), odd() (from @thi.ng/checks) - juxt() (from @thi.ng/compose) - remove obsolete hex() fn (use @thi.ng/strings fns instead) --- packages/transducers/src/func/constantly.ts | 2 -- packages/transducers/src/func/delay.ts | 3 --- packages/transducers/src/func/even.ts | 1 - packages/transducers/src/func/hex.ts | 10 ---------- packages/transducers/src/func/identity.ts | 1 - packages/transducers/src/func/juxt.ts | 3 --- packages/transducers/src/func/odd.ts | 1 - packages/transducers/src/index.ts | 9 --------- packages/transducers/src/rfn/frequencies.ts | 2 +- packages/transducers/src/rfn/group-by-map.ts | 4 ++-- packages/transducers/src/rfn/group-by-obj.ts | 2 +- packages/transducers/src/step.ts | 2 +- packages/transducers/src/xform/delayed.ts | 6 +++--- packages/transducers/src/xform/keep.ts | 2 +- packages/transducers/src/xform/moving-median.ts | 2 +- packages/transducers/src/xform/multiplex.ts | 2 +- packages/transducers/src/xform/partition-sort.ts | 3 +-- packages/transducers/src/xform/partition-sync.ts | 2 +- packages/transducers/src/xform/stream-sort.ts | 2 +- packages/transducers/test/permutations.ts | 4 ++-- 20 files changed, 16 insertions(+), 47 deletions(-) delete mode 100644 packages/transducers/src/func/constantly.ts delete mode 100644 packages/transducers/src/func/delay.ts delete mode 100644 packages/transducers/src/func/even.ts delete mode 100644 packages/transducers/src/func/hex.ts delete mode 100644 packages/transducers/src/func/identity.ts delete mode 100644 packages/transducers/src/func/juxt.ts delete mode 100644 packages/transducers/src/func/odd.ts diff --git a/packages/transducers/src/func/constantly.ts b/packages/transducers/src/func/constantly.ts deleted file mode 100644 index 514541cc8d..0000000000 --- a/packages/transducers/src/func/constantly.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const constantly = - (x: T): (...args: any[]) => T => () => x; diff --git a/packages/transducers/src/func/delay.ts b/packages/transducers/src/func/delay.ts deleted file mode 100644 index c276804747..0000000000 --- a/packages/transducers/src/func/delay.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const delay = - (x: T, t: number) => - new Promise((resolve) => setTimeout(() => resolve(x), t)); diff --git a/packages/transducers/src/func/even.ts b/packages/transducers/src/func/even.ts deleted file mode 100644 index 4fecc9bc95..0000000000 --- a/packages/transducers/src/func/even.ts +++ /dev/null @@ -1 +0,0 @@ -export { isEven as even } from "@thi.ng/checks"; diff --git a/packages/transducers/src/func/hex.ts b/packages/transducers/src/func/hex.ts deleted file mode 100644 index c2d5d6eb94..0000000000 --- a/packages/transducers/src/func/hex.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { radix, Stringer } from "@thi.ng/strings"; - -/** - * @deprecated use thi.ng/strings `radix()` instead - * - * @param digits - * @param prefix - */ -export const hex = (digits = 2, prefix = ""): Stringer => - radix(16, digits, prefix); diff --git a/packages/transducers/src/func/identity.ts b/packages/transducers/src/func/identity.ts deleted file mode 100644 index 74efbc8cf1..0000000000 --- a/packages/transducers/src/func/identity.ts +++ /dev/null @@ -1 +0,0 @@ -export const identity = (x: T) => x; diff --git a/packages/transducers/src/func/juxt.ts b/packages/transducers/src/func/juxt.ts deleted file mode 100644 index 00b819d738..0000000000 --- a/packages/transducers/src/func/juxt.ts +++ /dev/null @@ -1,3 +0,0 @@ -import { juxt as _juxt } from "@thi.ng/compose"; - -export const juxt = _juxt; diff --git a/packages/transducers/src/func/odd.ts b/packages/transducers/src/func/odd.ts deleted file mode 100644 index ab3065656e..0000000000 --- a/packages/transducers/src/func/odd.ts +++ /dev/null @@ -1 +0,0 @@ -export { isOdd as odd } from "@thi.ng/checks"; diff --git a/packages/transducers/src/index.ts b/packages/transducers/src/index.ts index 03f409a86c..9201dedd9c 100644 --- a/packages/transducers/src/index.ts +++ b/packages/transducers/src/index.ts @@ -94,20 +94,11 @@ export * from "./xform/word-wrap"; export * from "./func/comp"; export * from "./func/compr"; -export * from "./func/constantly"; export * from "./func/deep-transform"; -export * from "./func/delay"; -export * from "./func/even"; -export * from "./func/hex"; -export * from "./func/identity"; -export * from "./func/juxt"; export * from "./func/juxtr"; export * from "./func/key-selector"; export * from "./func/lookup"; -export * from "./func/odd"; -export * from "./func/random-id"; export * from "./func/renamer"; -export * from "./func/weighted-random"; export * from "./iter/as-iterable"; export * from "./iter/choices"; diff --git a/packages/transducers/src/rfn/frequencies.ts b/packages/transducers/src/rfn/frequencies.ts index 1fa9467aa0..ac8794560d 100644 --- a/packages/transducers/src/rfn/frequencies.ts +++ b/packages/transducers/src/rfn/frequencies.ts @@ -1,6 +1,6 @@ import { Fn } from "@thi.ng/api"; +import { identity } from "@thi.ng/compose"; import { Reducer } from "../api"; -import { identity } from "../func/identity"; import { $$reduce } from "../reduce"; import { count } from "./count"; import { groupByMap } from "./group-by-map"; diff --git a/packages/transducers/src/rfn/group-by-map.ts b/packages/transducers/src/rfn/group-by-map.ts index 279d2b1eb8..cfeef605b5 100644 --- a/packages/transducers/src/rfn/group-by-map.ts +++ b/packages/transducers/src/rfn/group-by-map.ts @@ -1,5 +1,5 @@ -import { Reducer, GroupByOpts } from "../api"; -import { identity } from "../func/identity"; +import { identity } from "@thi.ng/compose"; +import { GroupByOpts, Reducer } from "../api"; import { $$reduce, reducer } from "../reduce"; import { push } from "./push"; diff --git a/packages/transducers/src/rfn/group-by-obj.ts b/packages/transducers/src/rfn/group-by-obj.ts index 0e075ed96c..5128f646c3 100644 --- a/packages/transducers/src/rfn/group-by-obj.ts +++ b/packages/transducers/src/rfn/group-by-obj.ts @@ -1,6 +1,6 @@ import { IObjectOf } from "@thi.ng/api"; +import { identity } from "@thi.ng/compose"; import { GroupByOpts, Reducer } from "../api"; -import { identity } from "../func/identity"; import { $$reduce, reducer } from "../reduce"; import { push } from "./push"; diff --git a/packages/transducers/src/step.ts b/packages/transducers/src/step.ts index eda33f1227..c6ab9d9c99 100644 --- a/packages/transducers/src/step.ts +++ b/packages/transducers/src/step.ts @@ -22,7 +22,7 @@ import { push } from "./rfn/push"; * // [ 1, 2, 3 ] * * // no result - * f = step(filter(even)) + * f = step(filter((x) => !(x & 1))) * f(1); // undefined * f(2); // 2 * diff --git a/packages/transducers/src/xform/delayed.ts b/packages/transducers/src/xform/delayed.ts index 5cadd02718..0b8718d2bd 100644 --- a/packages/transducers/src/xform/delayed.ts +++ b/packages/transducers/src/xform/delayed.ts @@ -1,9 +1,9 @@ import { Transducer } from "../api"; -import { delay } from "../func/delay"; +import { delayed as _delayed } from "@thi.ng/compose"; import { map } from "./map"; /** - * Yields transducer which wraps incoming values in promises, which + * Yields transducer which wraps incoming values in promises, which each * resolve after specified delay time (in ms). * * **Only to be used in async contexts and NOT with `transduce` @@ -13,4 +13,4 @@ import { map } from "./map"; */ export const delayed = (t: number): Transducer> => - map((x) => delay(x, t)); + map((x) => _delayed(x, t)); diff --git a/packages/transducers/src/xform/keep.ts b/packages/transducers/src/xform/keep.ts index 56110331d0..4b16e7fc3a 100644 --- a/packages/transducers/src/xform/keep.ts +++ b/packages/transducers/src/xform/keep.ts @@ -1,6 +1,6 @@ +import { identity } from "@thi.ng/compose"; import { Reducer, Transducer } from "../api"; import { compR } from "../func/compr"; -import { identity } from "../func/identity"; import { $iter } from "../iterator"; export function keep(pred?: (x: T) => any): Transducer; diff --git a/packages/transducers/src/xform/moving-median.ts b/packages/transducers/src/xform/moving-median.ts index 7833f27d1a..8f8b044075 100644 --- a/packages/transducers/src/xform/moving-median.ts +++ b/packages/transducers/src/xform/moving-median.ts @@ -1,7 +1,7 @@ import { compare as cmp } from "@thi.ng/compare"; +import { identity } from "@thi.ng/compose"; import { SortOpts, Transducer } from "../api"; import { comp } from "../func/comp"; -import { identity } from "../func/identity"; import { $iter } from "../iterator"; import { map } from "./map"; import { partition } from "./partition"; diff --git a/packages/transducers/src/xform/multiplex.ts b/packages/transducers/src/xform/multiplex.ts index 5b0d6c25d0..8d3ab9c5d5 100644 --- a/packages/transducers/src/xform/multiplex.ts +++ b/packages/transducers/src/xform/multiplex.ts @@ -1,5 +1,5 @@ +import { juxt } from "@thi.ng/compose"; import { Transducer } from "../api"; -import { juxt } from "../func/juxt"; import { step } from "../step"; import { map } from "./map"; diff --git a/packages/transducers/src/xform/partition-sort.ts b/packages/transducers/src/xform/partition-sort.ts index 625d3032c5..d4efaa780d 100644 --- a/packages/transducers/src/xform/partition-sort.ts +++ b/packages/transducers/src/xform/partition-sort.ts @@ -1,8 +1,7 @@ import { compare as cmp } from "@thi.ng/compare"; - +import { identity } from "@thi.ng/compose"; import { SortOpts, Transducer } from "../api"; import { comp } from "../func/comp"; -import { identity } from "../func/identity"; import { $iter, iterator } from "../iterator"; import { mapcat } from "./mapcat"; import { partition } from "./partition"; diff --git a/packages/transducers/src/xform/partition-sync.ts b/packages/transducers/src/xform/partition-sync.ts index c02e180bde..8b6f1b9afd 100644 --- a/packages/transducers/src/xform/partition-sync.ts +++ b/packages/transducers/src/xform/partition-sync.ts @@ -1,7 +1,7 @@ import { IObjectOf } from "@thi.ng/api"; import { isArray } from "@thi.ng/checks"; +import { identity } from "@thi.ng/compose"; import { Reducer, Transducer } from "../api"; -import { identity } from "../func/identity"; import { $iter, iterator } from "../iterator"; export interface PartitionSyncOpts { diff --git a/packages/transducers/src/xform/stream-sort.ts b/packages/transducers/src/xform/stream-sort.ts index 2b54136657..37c8e75bdc 100644 --- a/packages/transducers/src/xform/stream-sort.ts +++ b/packages/transducers/src/xform/stream-sort.ts @@ -1,7 +1,7 @@ import { binarySearch } from "@thi.ng/arrays"; import { compare as cmp } from "@thi.ng/compare"; +import { identity } from "@thi.ng/compose"; import { Reducer, SortOpts, Transducer } from "../api"; -import { identity } from "../func/identity"; import { $iter, iterator } from "../iterator"; import { isReduced } from "../reduced"; diff --git a/packages/transducers/test/permutations.ts b/packages/transducers/test/permutations.ts index ad3ce8a60a..241f45b265 100644 --- a/packages/transducers/test/permutations.ts +++ b/packages/transducers/test/permutations.ts @@ -1,4 +1,4 @@ -import { swizzler } from "@thi.ng/arrays"; +import { swizzle } from "@thi.ng/arrays"; import { permutations, permutationsN } from "../src/iter/permutations"; import { range } from "../src/iter/range"; import { iterator } from "../src/iterator"; @@ -41,7 +41,7 @@ describe("permutations", () => { }); it("swizzle", () => { assert.deepEqual( - [...iterator(map((x: string[]) => swizzler(x)({ x: 0, y: 1, z: 2 })), permutations("xyz", "xyz", "xyz"))], + [...iterator(map((x: string[]) => swizzle(x)({ x: 0, y: 1, z: 2 })), permutations("xyz", "xyz", "xyz"))], [...permutationsN(3)] ); });