Skip to content

Commit 7969060

Browse files
committed
Update removeManagedFieldsProperty.ts
1 parent d809e0b commit 7969060

File tree

1 file changed

+43
-19
lines changed

1 file changed

+43
-19
lines changed
Lines changed: 43 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,60 @@
11
export type Resource = {
2+
apiVersion: string;
23
kind: string;
3-
items?: {
4-
metadata: {
5-
name: string;
6-
managedFields?: unknown;
7-
};
8-
}[];
4+
items?: Omit<Resource, 'items'>[];
95
metadata: {
106
name: string;
7+
namespace?: string;
8+
labels?: Record<string, string>;
9+
annotations?: {
10+
'kubectl.kubernetes.io/last-applied-configuration'?: string;
11+
[key: string]: string | undefined;
12+
};
1113
managedFields?: unknown;
14+
creationTimestamp?: string;
15+
finalizers?: string[];
16+
generation?: number;
17+
resourceVersion?: string;
18+
uid?: string;
1219
};
20+
spec?: unknown;
21+
status?: unknown;
1322
};
1423

15-
export const removeManagedFieldsProperty = (resourceObject: Resource) => {
16-
if (resourceObject?.metadata?.managedFields) {
24+
export const removeManagedFieldsProperty = (resourceObject: Resource, showOnlyImportantData: boolean) => {
25+
if (!resourceObject) {
26+
return resourceObject;
27+
}
28+
const processMetadata = (metadata: Resource['metadata']) => {
29+
const { managedFields, generation, uid, annotations, ...restMetadata } = metadata || {};
30+
31+
const newAnnotations = { ...annotations };
32+
if (showOnlyImportantData) {
33+
delete newAnnotations['kubectl.kubernetes.io/last-applied-configuration'];
34+
}
35+
1736
return {
18-
...resourceObject,
19-
metadata: {
20-
...resourceObject.metadata,
21-
managedFields: undefined,
22-
},
37+
...restMetadata,
38+
...(Object.keys(newAnnotations).length > 0 && {
39+
annotations: newAnnotations,
40+
}),
2341
};
24-
}
42+
};
43+
44+
const processResource = (resource: Omit<Resource, 'items'>) => {
45+
const { metadata, ...restResource } = resource;
46+
return {
47+
...restResource,
48+
...(metadata && { metadata: processMetadata(metadata) }),
49+
};
50+
};
51+
2552
if (resourceObject?.items) {
2653
return {
2754
...resourceObject,
28-
items: resourceObject.items.map((item) => ({
29-
...item,
30-
metadata: { ...item.metadata, managedFields: undefined },
31-
})),
55+
items: resourceObject.items.map(processResource),
3256
};
3357
}
3458

35-
return resourceObject;
59+
return processResource(resourceObject);
3660
};

0 commit comments

Comments
 (0)