Skip to content

Commit 0bd81d8

Browse files
committed
Change implementation to mergeAndDedupeArrays
1 parent 28ba905 commit 0bd81d8

3 files changed

Lines changed: 32 additions & 61 deletions

File tree

packages/client/src/clients/feed/feed.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ import {
3636
import {
3737
getFormattedExclude,
3838
getFormattedTriggerData,
39+
mergeAndDedupeArrays,
3940
mergeDateRangeParams,
40-
mergeExcludeArrays,
4141
} from "./utils";
4242

4343
// Default options to apply
@@ -544,7 +544,10 @@ class Feed {
544544
const mergedOptions = {
545545
...this.defaultOptions,
546546
...options,
547-
exclude: mergeExcludeArrays(this.defaultOptions.exclude, options.exclude),
547+
exclude: mergeAndDedupeArrays(
548+
this.defaultOptions.exclude,
549+
options.exclude,
550+
),
548551
};
549552

550553
// trigger_data should be a JSON string for the API

packages/client/src/clients/feed/utils.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,13 @@ export function getFormattedExclude(options: FeedClientOptions) {
8080
}
8181

8282
/**
83-
* Merges two exclude arrays, deduplicating values.
83+
* Merges two arrays, deduplicating values.
8484
* Returns undefined if the merged result is empty.
8585
*/
86-
export function mergeExcludeArrays(
87-
exclude1: string[] | undefined,
88-
exclude2: string[] | undefined,
89-
): string[] | undefined {
90-
const merged = [...(exclude1 ?? []), ...(exclude2 ?? [])];
86+
export function mergeAndDedupeArrays<T>(
87+
array1: T[] | undefined,
88+
array2: T[] | undefined,
89+
): T[] | undefined {
90+
const merged = [...(array1 ?? []), ...(array2 ?? [])];
9191
return merged.length ? [...new Set(merged)] : undefined;
9292
}

packages/client/test/clients/feed/utils.test.ts

Lines changed: 21 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ import {
99
deduplicateItems,
1010
getFormattedExclude,
1111
getFormattedTriggerData,
12+
mergeAndDedupeArrays,
1213
mergeDateRangeParams,
13-
mergeExcludeArrays,
1414
sortItems,
1515
} from "../../../src/clients/feed/utils";
1616

@@ -521,77 +521,45 @@ describe("feed utils", () => {
521521
});
522522
});
523523

524-
describe("mergeExcludeArrays", () => {
524+
describe("mergeAndDedupeArrays", () => {
525525
test("returns undefined when both arrays are undefined", () => {
526-
const result = mergeExcludeArrays(undefined, undefined);
526+
const result = mergeAndDedupeArrays(undefined, undefined);
527527
expect(result).toBeUndefined();
528528
});
529529

530530
test("returns undefined when both arrays are empty", () => {
531-
const result = mergeExcludeArrays([], []);
531+
const result = mergeAndDedupeArrays([], []);
532532
expect(result).toBeUndefined();
533533
});
534534

535-
test("returns default exclude when options exclude is undefined", () => {
536-
const result = mergeExcludeArrays(["entries.archived_at"], undefined);
537-
expect(result).toEqual(["entries.archived_at"]);
535+
test("returns first array when second is undefined", () => {
536+
const result = mergeAndDedupeArrays(["a", "b"], undefined);
537+
expect(result).toEqual(["a", "b"]);
538538
});
539539

540-
test("returns default exclude when options exclude is empty", () => {
541-
const result = mergeExcludeArrays(["entries.archived_at"], []);
542-
expect(result).toEqual(["entries.archived_at"]);
540+
test("returns first array when second is empty", () => {
541+
const result = mergeAndDedupeArrays(["a", "b"], []);
542+
expect(result).toEqual(["a", "b"]);
543543
});
544544

545-
test("returns options exclude when default exclude is undefined", () => {
546-
const result = mergeExcludeArrays(undefined, ["meta"]);
547-
expect(result).toEqual(["meta"]);
545+
test("returns second array when first is undefined", () => {
546+
const result = mergeAndDedupeArrays(undefined, ["c", "d"]);
547+
expect(result).toEqual(["c", "d"]);
548548
});
549549

550-
test("returns options exclude when default exclude is empty", () => {
551-
const result = mergeExcludeArrays([], ["meta"]);
552-
expect(result).toEqual(["meta"]);
550+
test("returns second array when first is empty", () => {
551+
const result = mergeAndDedupeArrays([], ["c", "d"]);
552+
expect(result).toEqual(["c", "d"]);
553553
});
554554

555-
test("merges both exclude arrays", () => {
556-
const result = mergeExcludeArrays(["entries.archived_at"], ["meta"]);
557-
expect(result).toEqual(["entries.archived_at", "meta"]);
558-
});
559-
560-
test("merges multiple fields from both arrays", () => {
561-
const result = mergeExcludeArrays(
562-
["entries.archived_at", "entries.data"],
563-
["meta", "entries.blocks"],
564-
);
565-
expect(result).toEqual([
566-
"entries.archived_at",
567-
"entries.data",
568-
"meta",
569-
"entries.blocks",
570-
]);
555+
test("merges both arrays", () => {
556+
const result = mergeAndDedupeArrays(["a", "b"], ["c", "d"]);
557+
expect(result).toEqual(["a", "b", "c", "d"]);
571558
});
572559

573560
test("deduplicates merged arrays", () => {
574-
const result = mergeExcludeArrays(
575-
["entries.archived_at", "meta"],
576-
["meta", "entries.data"],
577-
);
578-
expect(result).toEqual(["entries.archived_at", "meta", "entries.data"]);
579-
});
580-
581-
test("handles duplicate values in default exclude", () => {
582-
const result = mergeExcludeArrays(
583-
["entries.archived_at", "entries.archived_at"],
584-
["meta"],
585-
);
586-
expect(result).toEqual(["entries.archived_at", "meta"]);
587-
});
588-
589-
test("handles duplicate values in options exclude", () => {
590-
const result = mergeExcludeArrays(
591-
["entries.archived_at"],
592-
["meta", "meta"],
593-
);
594-
expect(result).toEqual(["entries.archived_at", "meta"]);
561+
const result = mergeAndDedupeArrays(["a", "b"], ["b", "c"]);
562+
expect(result).toEqual(["a", "b", "c"]);
595563
});
596564
});
597565
});

0 commit comments

Comments
 (0)