diff --git a/webapp/packages/core-sdk/src/Resource/ResourceKeyList.ts b/webapp/packages/core-sdk/src/Resource/ResourceKeyList.ts index 06ffa64794..77b47b71cc 100644 --- a/webapp/packages/core-sdk/src/Resource/ResourceKeyList.ts +++ b/webapp/packages/core-sdk/src/Resource/ResourceKeyList.ts @@ -45,6 +45,8 @@ export interface ResourceKeyUtils { some: (key: ResourceKey, predicate: (key: TKey, index: number) => boolean) => boolean; every: (key: ResourceKey, predicate: (key: TKey, index: number) => boolean) => boolean; map: MapFnc; + toArray: (key: ResourceKey) => TKey[]; + mapArray: (key: ResourceKey, selector: (key: TKey, index: number) => TValue) => TValue[]; includes: (first: ResourceKey, second: ResourceKey) => boolean; exclude: (first: ResourceKeyList, second: ResourceKey) => ResourceKeyList; join: (...keys: Array>) => ResourceKeyList; @@ -125,6 +127,13 @@ export const ResourceKeyUtils: ResourceKeyUtils = { return predicate(key, -1); } }, + toArray(key: ResourceKey): TKey[] { + if (isResourceKeyList(key)) { + return key.list; + } else { + return [key]; + } + }, map(key: ResourceKey, selector: (key: TKey, index: number) => TValue): TValue | TValue[] { if (isResourceKeyList(key)) { @@ -134,6 +143,14 @@ export const ResourceKeyUtils: ResourceKeyUtils = { } }, + mapArray(key: ResourceKey, selector: (key: TKey, index: number) => TValue): TValue[] { + if (isResourceKeyList(key)) { + return key.list.map(selector); + } else { + return [selector(key, -1)]; + } + }, + includes(param: ResourceKey, key: ResourceKey): boolean { if (isResourceKeyList(param)) { return param.includes(key);