mirror of
https://github.com/stashapp/stash.git
synced 2025-12-18 21:04: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;
|
__typename?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
export function withoutTypename<T extends ITypename>(o: T) {
|
const hasTypename = (value: unknown): value is ITypename =>
|
||||||
const { __typename, ...ret } = o;
|
!!(value as ITypename)?.__typename;
|
||||||
return ret;
|
|
||||||
|
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