mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 04:44:37 +03:00
Extend __typename stripper to fix interface config saving (#1929)
This commit is contained in:
@@ -5,7 +5,28 @@ interface ITypename {
|
||||
__typename?: string;
|
||||
}
|
||||
|
||||
export function withoutTypename<T extends ITypename>(o: T) {
|
||||
const { __typename, ...ret } = o;
|
||||
return ret;
|
||||
const hasTypename = (value: unknown): value is ITypename =>
|
||||
!!(value as ITypename)?.__typename;
|
||||
|
||||
const processNoneObjValue = (value: unknown): unknown =>
|
||||
Array.isArray(value)
|
||||
? value.map((v) =>
|
||||
hasTypename(v) ? withoutTypename(v) : processNoneObjValue(v)
|
||||
)
|
||||
: value;
|
||||
|
||||
export function withoutTypename<T extends ITypename>(
|
||||
o: T
|
||||
): Omit<T, "__typename"> {
|
||||
const { __typename, ...data } = o;
|
||||
|
||||
return Object.entries(data).reduce(
|
||||
(ret, [key, value]) => ({
|
||||
...ret,
|
||||
[key]: hasTypename(value)
|
||||
? withoutTypename(value)
|
||||
: processNoneObjValue(value),
|
||||
}),
|
||||
{} as Omit<T, "__typename">
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user