mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
chore: Extract Map, Gutter and add-separator from monolith
Signed-off-by: Iku-turso <mikko.aspiala@gmail.com>
This commit is contained in:
1 parent
effdd1cf60
commit
b6e44424b7
14 files changed
+381
-5
No files matched your search
@@ -1,53 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
import { addSeparator } from "./add-separator";
|
||||
|
||||
describe("add-separator", () => {
|
||||
it("given multiple items, adds separators", () => {
|
||||
const items = ["first", "second", "third"];
|
||||
|
||||
const actual = addSeparator((left, right) => `separator-between-${left}-and-${right}`, items);
|
||||
|
||||
expect(actual).toEqual([
|
||||
"first",
|
||||
"separator-between-first-and-second",
|
||||
"second",
|
||||
"separator-between-second-and-third",
|
||||
"third",
|
||||
]);
|
||||
});
|
||||
|
||||
it("given multiple items including falsy ones, adds separators", () => {
|
||||
const items = [false, undefined, null, NaN];
|
||||
|
||||
const actual = addSeparator((left, right) => `separator-between-${left}-and-${right}`, items);
|
||||
|
||||
expect(actual).toEqual([
|
||||
false,
|
||||
"separator-between-false-and-undefined",
|
||||
undefined,
|
||||
"separator-between-undefined-and-null",
|
||||
null,
|
||||
"separator-between-null-and-NaN",
|
||||
NaN,
|
||||
]);
|
||||
});
|
||||
|
||||
it("given no items, does not add separator", () => {
|
||||
const items: any[] = [];
|
||||
|
||||
const actual = addSeparator(() => "separator", items);
|
||||
|
||||
expect(actual).toEqual([]);
|
||||
});
|
||||
|
||||
it("given one item, does not add separator", () => {
|
||||
const items = ["first"];
|
||||
|
||||
const actual = addSeparator(() => "separator", items);
|
||||
|
||||
expect(actual).toEqual(["first"]);
|
||||
});
|
||||
});
|
||||
@@ -1,26 +0,0 @@
|
||||
/**
|
||||
* Copyright (c) OpenLens Authors. All rights reserved.
|
||||
* Licensed under MIT License. See LICENSE in root directory for more information.
|
||||
*/
|
||||
|
||||
export type GetSeparator<Item, Separator> = (left: Item, right: Item) => Separator;
|
||||
|
||||
export const addSeparator = <Item, Separator>(
|
||||
getSeparator: GetSeparator<Item, Separator>,
|
||||
items: Item[],
|
||||
) => items.flatMap(toSeparatedTupleUsing(getSeparator));
|
||||
|
||||
const toSeparatedTupleUsing =
|
||||
<Item, Separator>(getSeparator: GetSeparator<Item, Separator>) =>
|
||||
(leftItem: Item, index: number, arr: Item[]) => {
|
||||
const itemIsLast = arr.length === index + 1;
|
||||
|
||||
if (itemIsLast) {
|
||||
return [leftItem];
|
||||
}
|
||||
|
||||
const rightItem = arr[index + 1];
|
||||
const separator = getSeparator(leftItem, rightItem);
|
||||
|
||||
return [leftItem, separator];
|
||||
};
|
||||
+1
-1
@@ -9,7 +9,7 @@ import type { Discriminable } from "../../../../common/utils/composable-responsi
|
||||
import type { Labelable } from "../../../../common/utils/composable-responsibilities/labelable/labelable";
|
||||
import type { MaybeShowable } from "../../../../common/utils/composable-responsibilities/showable/showable";
|
||||
import type { Orderable } from "../../../../common/utils/composable-responsibilities/orderable/orderable";
|
||||
import type { GetSeparator } from "../../../../common/utils/add-separator/add-separator";
|
||||
import type { GetSeparator } from "@k8slens/utilities";
|
||||
import type { Composite } from "../../../../common/utils/composite/get-composite/get-composite";
|
||||
|
||||
export type ChildrenAreSeparated =
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
import { pipeline } from "@ogre-tools/fp";
|
||||
import { identity, map } from "lodash/fp";
|
||||
import React from "react";
|
||||
import type { GetSeparator } from "../../../common/utils/add-separator/add-separator";
|
||||
import { addSeparator } from "../../../common/utils/add-separator/add-separator";
|
||||
import type { GetSeparator } from "@k8slens/utilities";
|
||||
import { addSeparator } from "@k8slens/utilities";
|
||||
|
||||
interface RequiredPropertiesForItem {
|
||||
id: string;
|
||||
|
||||
Reference in new issue
Block a user