Skip to content

Commit 8becdb0

Browse files
committed
Align Console useResolvedExtensions hook with upstream plugin SDK
1 parent bbfe5f5 commit 8becdb0

7 files changed

Lines changed: 42 additions & 37 deletions

File tree

frontend/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,8 @@
6565
"dependencies": {
6666
"@monaco-editor/react": "^4.7.0",
6767
"@openshift/api-types": "^1.0.0",
68-
"@openshift/dynamic-plugin-sdk": "^8.2.0",
69-
"@openshift/dynamic-plugin-sdk-webpack": "^5.2.0",
68+
"@openshift/dynamic-plugin-sdk": "^9.0.0",
69+
"@openshift/dynamic-plugin-sdk-webpack": "^5.3.0",
7070
"@patternfly/patternfly": "~6.6.0",
7171
"@patternfly/quickstarts": "~6.6.0",
7272
"@patternfly/react-catalog-view-extension": "~6.5.0",

frontend/packages/console-dynamic-plugin-sdk/CHANGELOG-core.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,12 @@ table in [Console dynamic plugins README](./README.md).
1212

1313
## 4.23.0-prerelease.5 - TBD
1414

15-
- **Type breaking**: Renamed `ExtensionTypeGuard` type to `ExtensionPredicate` ([#16115], [CONSOLE-5065])
15+
> This release removes support for passing multiple predicates to `useResolvedExtensions` hook.
16+
> Consumers should call this hook once per each distinct extension type to avoid complexity associated
17+
> with unions of distinct extension objects.
18+
19+
- **Type breaking**: Replace `ExtensionTypeGuard` with `ExtensionPredicate` from `@openshift/dynamic-plugin-sdk` ([#16115], [CONSOLE-5065])
20+
- **Breaking**: `useResolvedExtensions` hook now accepts a single predicate parameter (TODO)
1621

1722
## 4.23.0-prerelease.4 - 2026-07-14
1823

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,12 @@
1-
import type { UseResolvedExtensionsOptions as UseResolvedExtensionsOptionsSDK } from '@openshift/dynamic-plugin-sdk';
1+
import type { Extension, ExtensionPredicate } from '@openshift/dynamic-plugin-sdk';
22
import { useResolvedExtensions as useResolvedExtensionsSDK } from '@openshift/dynamic-plugin-sdk';
33
import { useExtensions } from '@console/plugin-sdk/src/api/useExtensions';
44
import type { UseResolvedExtensions } from '../extensions/console-types';
5-
import type { Extension, ExtensionPredicate, ResolvedExtension } from '../types';
6-
7-
const hookOptions: UseResolvedExtensionsOptionsSDK = {
8-
useExtensionsImpl: useExtensions,
9-
};
105

116
export const useResolvedExtensions: UseResolvedExtensions = <E extends Extension>(
12-
...predicates: ExtensionPredicate<E>[]
13-
): [ResolvedExtension<E>[], boolean, any[]] => {
14-
const predicate =
15-
predicates.length === 1
16-
? predicates[0]
17-
: predicates.length > 1
18-
? (extension: Extension): extension is E => predicates.some((guard) => guard(extension))
19-
: undefined;
20-
return useResolvedExtensionsSDK(predicate, hookOptions);
7+
predicate: ExtensionPredicate<E>,
8+
) => {
9+
const extensions = useExtensions(predicate);
10+
11+
return useResolvedExtensionsSDK(extensions);
2112
};

frontend/packages/console-dynamic-plugin-sdk/src/extensions/console-types.ts

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,11 @@ import type {
88
ElementType,
99
} from 'react';
1010
import type { K8sResourceCommon, ObjectMetadata } from '@openshift/api-types';
11+
import type {
12+
Extension,
13+
ExtensionPredicate,
14+
LoadedAndResolvedExtension,
15+
} from '@openshift/dynamic-plugin-sdk';
1116
import type { QuickStartContextValues } from '@patternfly/quickstarts';
1217
import type { CodeEditorProps as PfCodeEditorProps } from '@patternfly/react-code-editor';
1318
import type { AlertVariant, ButtonProps } from '@patternfly/react-core';
@@ -28,10 +33,8 @@ import type {
2833
PrometheusEndpoint,
2934
PrometheusLabels,
3035
PrometheusValue,
31-
ResolvedExtension,
3236
Selector,
3337
} from '../api/common-types';
34-
import type { Extension, ExtensionPredicate } from '../types';
3538
import type { CustomDataSource } from './dashboard-data-source';
3639

3740
/* eslint-disable no-barrel-files/no-barrel-files */
@@ -263,8 +266,8 @@ export type UseK8sWatchResources = <R extends ResourcesObject>(
263266
) => WatchK8sResults<R>;
264267

265268
export type UseResolvedExtensions = <E extends Extension>(
266-
...predicates: ExtensionPredicate<E>[]
267-
) => [ResolvedExtension<E>[], boolean, any[]];
269+
predicate: ExtensionPredicate<E>,
270+
) => [LoadedAndResolvedExtension<E>[], boolean, any[]];
268271

269272
export type GetSegmentAnalytics = () => {
270273
// TODO: use proper Segment Analytics API type

frontend/packages/console-dynamic-plugin-sdk/src/types.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ export type {
44
EncodedCodeRef,
55
Extension,
66
ExtensionFlags,
7-
ExtensionPredicate,
87
LoadedAndResolvedExtension as ResolvedExtension,
98
LoadedExtension,
109
MapCodeRefsToValues as ResolvedCodeRefProperties,

frontend/packages/console-shared/src/hooks/useDetailsItemExtensionsForResource.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
import { useCallback, useMemo } from 'react';
2+
import type { LoadedAndResolvedExtension, ExtensionPredicate } from '@openshift/dynamic-plugin-sdk';
23
import { useResolvedExtensions } from '@console/dynamic-plugin-sdk/src/api/useResolvedExtensions';
34
import type { K8sResourceCommon } from '@console/dynamic-plugin-sdk/src/extensions/console-types';
45
import type {
56
DetailsItem,
67
DetailsItemColumn,
78
} from '@console/dynamic-plugin-sdk/src/extensions/details-item';
89
import { isDetailsItem } from '@console/dynamic-plugin-sdk/src/extensions/details-item';
9-
import type { ResolvedExtension, ExtensionPredicate } from '@console/dynamic-plugin-sdk/src/types';
1010
import { referenceFor, referenceForExtensionModel } from '@console/internal/module/k8s/k8s';
1111

1212
/**
@@ -52,4 +52,4 @@ export const useDetailsItemExtensionsForResource: UseDetailsItemExtensionsForRes
5252
type UseDetailsItemExtensionsForResource = (
5353
obj: K8sResourceCommon,
5454
column: DetailsItemColumn,
55-
) => ResolvedExtension<DetailsItem>[];
55+
) => LoadedAndResolvedExtension<DetailsItem>[];

frontend/yarn.lock

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3139,13 +3139,13 @@ __metadata:
31393139
languageName: node
31403140
linkType: hard
31413141

3142-
"@openshift/dynamic-plugin-sdk-webpack@npm:^5.2.0":
3143-
version: 5.2.0
3144-
resolution: "@openshift/dynamic-plugin-sdk-webpack@npm:5.2.0"
3142+
"@openshift/dynamic-plugin-sdk-webpack@npm:^5.3.0":
3143+
version: 5.3.0
3144+
resolution: "@openshift/dynamic-plugin-sdk-webpack@npm:5.3.0"
31453145
dependencies:
31463146
lodash: "npm:^4.17.23"
31473147
semver: "npm:^7.7.3"
3148-
yup: "npm:^1.7.1"
3148+
zod: "npm:^3.25.67"
31493149
peerDependencies:
31503150
"@rspack/core": ^2.0.8
31513151
webpack: ^5.100.0
@@ -3154,21 +3154,21 @@ __metadata:
31543154
optional: true
31553155
webpack:
31563156
optional: true
3157-
checksum: 10c0/8ccd43d74c4de9c76b0583ee35b919be4327ffe8101343b88e5245ffb287d71a7a17d0c264dfd9bfe88b6361147d3c0e7641aeea97990ee26b7e06dc0640493b
3157+
checksum: 10c0/7294d01156d86eab453a88fe663145c8c769e1886e0e517159fe7b008827274ab53fe70788c343bbe93cf2e0c20098fb9b59313409e72c9a7060a2c1288ada30
31583158
languageName: node
31593159
linkType: hard
31603160

3161-
"@openshift/dynamic-plugin-sdk@npm:^8.2.0":
3162-
version: 8.2.0
3163-
resolution: "@openshift/dynamic-plugin-sdk@npm:8.2.0"
3161+
"@openshift/dynamic-plugin-sdk@npm:^9.0.0":
3162+
version: 9.0.0
3163+
resolution: "@openshift/dynamic-plugin-sdk@npm:9.0.0"
31643164
dependencies:
31653165
lodash: "npm:^4.17.23"
31663166
semver: "npm:^7.7.3"
31673167
uuid: "npm:^8.3.2"
3168-
yup: "npm:^1.7.1"
3168+
zod: "npm:^3.25.67"
31693169
peerDependencies:
31703170
react: ^18 || ^19
3171-
checksum: 10c0/a9e3e1a145014a13310acd4630c7a2b7a7545b6c089e1d41e99ceaec061c1a270051d44bd26ddd09ec61bb02533ecfab55663cedb41a20d63acf824067eb63ab
3171+
checksum: 10c0/29de4ecd6811d621d0b83c55aec3e04371f94f26f33b1544bedcf20c9c4e6ed825d1cf3d6190c7292f840c35490f2c84450220874b43c01a29edf03d500b17cd
31723172
languageName: node
31733173
linkType: hard
31743174

@@ -16290,8 +16290,8 @@ __metadata:
1629016290
"@kubernetes/client-node": "npm:^1.4.0"
1629116291
"@monaco-editor/react": "npm:^4.7.0"
1629216292
"@openshift/api-types": "npm:^1.0.0"
16293-
"@openshift/dynamic-plugin-sdk": "npm:^8.2.0"
16294-
"@openshift/dynamic-plugin-sdk-webpack": "npm:^5.2.0"
16293+
"@openshift/dynamic-plugin-sdk": "npm:^9.0.0"
16294+
"@openshift/dynamic-plugin-sdk-webpack": "npm:^5.3.0"
1629516295
"@patternfly/patternfly": "npm:~6.6.0"
1629616296
"@patternfly/quickstarts": "npm:~6.6.0"
1629716297
"@patternfly/react-catalog-view-extension": "npm:~6.5.0"
@@ -22222,6 +22222,13 @@ __metadata:
2222222222
languageName: node
2222322223
linkType: hard
2222422224

22225+
"zod@npm:^3.25.67":
22226+
version: 3.25.76
22227+
resolution: "zod@npm:3.25.76"
22228+
checksum: 10c0/5718ec35e3c40b600316c5b4c5e4976f7fee68151bc8f8d90ec18a469be9571f072e1bbaace10f1e85cf8892ea12d90821b200e980ab46916a6166a4260a983c
22229+
languageName: node
22230+
linkType: hard
22231+
2222522232
"zod@npm:^4.1.11":
2222622233
version: 4.4.3
2222722234
resolution: "zod@npm:4.4.3"

0 commit comments

Comments
 (0)