From f54e5442cb6e3ac277f1a2bd5ca936a87bd1d1bb Mon Sep 17 00:00:00 2001 From: Charles Fries Date: Wed, 30 Oct 2024 12:10:02 -0700 Subject: [PATCH 1/2] Make filterBy, mapyBy fully generic --- ember-composable-helpers/src/helpers/filter-by.ts | 4 ++-- ember-composable-helpers/src/helpers/map-by.ts | 2 +- ember-composable-helpers/src/helpers/pick.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ember-composable-helpers/src/helpers/filter-by.ts b/ember-composable-helpers/src/helpers/filter-by.ts index b01bdd1..c8baca3 100644 --- a/ember-composable-helpers/src/helpers/filter-by.ts +++ b/ember-composable-helpers/src/helpers/filter-by.ts @@ -5,11 +5,11 @@ import { get } from '@ember/object'; import isEqual from '../utils/is-equal.ts'; import asArray from '../utils/as-array.ts'; -export function filterBy([byPath, value, array]: [string, T | T[] | undefined, T[]]) { +export function filterBy([byPath, value, array]: [keyof T, T[keyof T] | T[] | undefined, T[]]) { let isPresent = true; if (!isEmberArray(array) && isEmberArray(value)) { - array = value as T[]; + array = value; value = undefined; isPresent = false; } diff --git a/ember-composable-helpers/src/helpers/map-by.ts b/ember-composable-helpers/src/helpers/map-by.ts index 70cc1e1..33aa197 100644 --- a/ember-composable-helpers/src/helpers/map-by.ts +++ b/ember-composable-helpers/src/helpers/map-by.ts @@ -8,7 +8,7 @@ export function mapBy([byPath, array]: [keyof T, T[]]) { return []; } - return asArray(array).map(item => get(item as object, byPath as string)); + return asArray(array).map(item => get(item, byPath) as T[keyof T]); } export default helper(mapBy); diff --git a/ember-composable-helpers/src/helpers/pick.ts b/ember-composable-helpers/src/helpers/pick.ts index d503eca..da572f1 100644 --- a/ember-composable-helpers/src/helpers/pick.ts +++ b/ember-composable-helpers/src/helpers/pick.ts @@ -1,7 +1,7 @@ import { helper } from '@ember/component/helper'; import { get } from '@ember/object'; -export function pick([path, action]: [string, (value: unknown) => void]) { +export function pick([path, action]: [string, (...args: any[]) => void]) { return function(event: Event) { let value = get(event, path); From 4a4e095d9212f74309811d98eba55a021d210cd0 Mon Sep 17 00:00:00 2001 From: Charles Fries Date: Wed, 30 Oct 2024 13:11:11 -0700 Subject: [PATCH 2/2] Cleanup --- ember-composable-helpers/src/helpers/filter-by.ts | 8 ++++++-- ember-composable-helpers/src/helpers/map-by.ts | 4 ++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/ember-composable-helpers/src/helpers/filter-by.ts b/ember-composable-helpers/src/helpers/filter-by.ts index c8baca3..6cbb230 100644 --- a/ember-composable-helpers/src/helpers/filter-by.ts +++ b/ember-composable-helpers/src/helpers/filter-by.ts @@ -5,11 +5,15 @@ import { get } from '@ember/object'; import isEqual from '../utils/is-equal.ts'; import asArray from '../utils/as-array.ts'; -export function filterBy([byPath, value, array]: [keyof T, T[keyof T] | T[] | undefined, T[]]) { +export function filterBy([ + byPath, + value, + array, +]: [K, T[K] | T[] | undefined, T[]]) { let isPresent = true; if (!isEmberArray(array) && isEmberArray(value)) { - array = value; + array = value as T[]; value = undefined; isPresent = false; } diff --git a/ember-composable-helpers/src/helpers/map-by.ts b/ember-composable-helpers/src/helpers/map-by.ts index 33aa197..a3bd3a0 100644 --- a/ember-composable-helpers/src/helpers/map-by.ts +++ b/ember-composable-helpers/src/helpers/map-by.ts @@ -3,12 +3,12 @@ import { get } from '@ember/object'; import { isEmpty } from '@ember/utils'; import asArray from '../utils/as-array.ts'; -export function mapBy([byPath, array]: [keyof T, T[]]) { +export function mapBy([byPath, array]: [keyof T, T[]]) { if (isEmpty(byPath)) { return []; } - return asArray(array).map(item => get(item, byPath) as T[keyof T]); + return asArray(array).map(item => get(item, byPath)); } export default helper(mapBy);