extend pages result

This commit is contained in:
Niels Lyngsø
2023-07-04 20:36:56 +02:00
parent eeb3929b1a
commit 64e98a128a
5 changed files with 32 additions and 6 deletions

View File

@@ -0,0 +1,24 @@
import { DataSourceResponse, UmbPagedData } from '../index.js';
import { Diff } from '@umbraco-cms/backoffice/utils';
export function extendDataSourcePagedResponseData<
ExtendedDataType extends IncomingDataType,
IncomingDataType extends object = object,
MissingPropsType extends object = Omit<Diff<IncomingDataType, ExtendedDataType>, '$type'>,
// Maybe this Omit<..., "$ype"> can be removed, but for now it kept showing up as a difference, though its not a difference on the two types.
ToType = IncomingDataType & ExtendedDataType
>(
response: DataSourceResponse<UmbPagedData<IncomingDataType>>,
appendData: MissingPropsType
): DataSourceResponse<UmbPagedData<ToType>> {
if (response.data === undefined) return response as unknown as DataSourceResponse<UmbPagedData<ToType>>;
return {
...response,
data: {
...response.data,
items: response.data.items.map((x) => {
return { ...x, ...appendData } as unknown as ToType;
}),
},
};
}

View File

@@ -1,10 +1,5 @@
import { DataSourceResponse } from '../index.js';
type FilterKeys<T, U> = {
[K in keyof T]: K extends keyof U ? never : K;
};
type Diff<U, T> = Pick<T, FilterKeys<T, U>[keyof T]>;
import { Diff } from '@umbraco-cms/backoffice/utils';
export function extendDataSourceResponseData<
ExtendedDataType extends IncomingDataType,

View File

@@ -2,6 +2,7 @@ export * from './collection-data-source.interface.js';
export * from './copy-data-source.interface.js';
export * from './data-source-response.interface.js';
export * from './data-source.interface.js';
export * from './extend-data-source-paged-response-data.function.js';
export * from './extend-data-source-response-data.function.js';
export * from './folder-data-source.interface.js';
export * from './item-data-source.interface.js';

View File

@@ -0,0 +1,5 @@
type FilterKeys<T, U> = {
[K in keyof T]: K extends keyof U ? never : K;
};
export type Diff<U, T> = Pick<T, FilterKeys<T, U>[keyof T]>;

View File

@@ -1,3 +1,4 @@
export * from './diff.type.js';
export * from './generate-umbraco-alias.function.js';
export * from './increment-string.function.js';
export * from './media-helper.service.js';