Skip to content

Commit 60b47fb

Browse files
committed
feat: api subscriber
Signed-off-by: Philippe Martin <[email protected]>
1 parent df49d83 commit 60b47fb

29 files changed

+156
-41
lines changed

.github/workflows/release.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ jobs:
6868
sed -i "s#version\":\ \"\(.*\)\",#version\":\ \"${{ steps.TAG_UTIL.outputs.extVersion }}\",#g" package.json
6969
sed -i "s#version\":\ \"\(.*\)\",#version\":\ \"${{ steps.TAG_UTIL.outputs.extVersion }}\",#g" packages/extension/package.json
7070
sed -i "s#version\":\ \"\(.*\)\",#version\":\ \"${{ steps.TAG_UTIL.outputs.extVersion }}\",#g" packages/webview/package.json
71+
sed -i "s#version\":\ \"\(.*\)\",#version\":\ \"${{ steps.TAG_UTIL.outputs.extVersion }}\",#g" packages/api/package.json
7172
sed -i "s#\(ghcr.io/podman-desktop/podman-desktop-extension-kubernetes-dashboard-builder:\)next#\1${{ steps.TAG_UTIL.outputs.extVersion }}#g" build/Containerfile
7273
7374
git add package.json packages/extension/package.json packages/webview/package.json build/Containerfile

build/Containerfile

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,9 @@ RUN mkdir /opt/app-root/extension && \
4343
mkdir -p /opt/app-root/extension/packages/rpc/ && \
4444
cp packages/rpc/package.json /opt/app-root/extension/packages/rpc/ && \
4545
mkdir -p /opt/app-root/extension/packages/channels/ && \
46-
cp packages/channels/package.json /opt/app-root/extension/packages/channels/
46+
cp packages/channels/package.json /opt/app-root/extension/packages/channels/ && \
47+
mkdir -p /opt/app-root/extension/packages/api/ && \
48+
cp packages/api/package.json /opt/app-root/extension/packages/api/
4749

4850
COPY LICENSE /opt/app-root/extension/
4951
COPY README.md /opt/app-root/extension/

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
},
3232
"devDependencies": {
3333
"@eslint/compat": "^1.4.1",
34+
"@tsconfig/strictest": "^2.0.6",
3435
"@typescript-eslint/eslint-plugin": "^8.46.1",
3536
"@typescript-eslint/parser": "^8.30.1",
3637
"@vitest/coverage-v8": "^3.2.2",

packages/api/package.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
{
2+
"name": "@podman-desktop/kubernetes-dashboard-extension-api",
3+
"version": "0.2.0-next",
4+
"description": "API for Kubernetes Dashboard extension",
5+
"repository": "https://github.com/podman-desktop/extension-kubernetes-dashboard",
6+
"publishConfig": {
7+
"provenance": true,
8+
"access": "public"
9+
},
10+
"license": "Apache-2.0",
11+
"types": "./src/kubernetes-dashboard-extension-api.d.ts",
12+
"files": [
13+
"src"
14+
],
15+
"scripts": {
16+
"prepare": "",
17+
"clean": "rimraf lib *.tsbuildinfo",
18+
"build": "",
19+
"watch": "",
20+
"publish:next": "pnpm publish --registry=https://registry.npmjs.org/ --no-git-tag-version --new-version 0.0.1-\"$(date +%s)\""
21+
},
22+
"dependencies": {}
23+
}

packages/channels/src/model/current-context-info.ts renamed to packages/api/src/kubernetes-dashboard-extension-api.d.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,23 @@
1616
* SPDX-License-Identifier: Apache-2.0
1717
***********************************************************************/
1818

19+
import type { Disposable } from '@podman-desktop/api';
20+
21+
export interface AvailableContextsInfo {
22+
contextNames: string[];
23+
}
24+
1925
export interface CurrentContextInfo {
2026
contextName?: string;
2127
namespace?: string;
2228
}
29+
30+
export interface KubernetesDashboardSubscriber {
31+
onAvailableContexts(listener: (event: AvailableContextsInfo) => void): Disposable;
32+
onCurrentContext(listener: (event: CurrentContextInfo) => void): Disposable;
33+
dispose(): void;
34+
}
35+
36+
export interface KubernetesDashboardExtensionApi {
37+
getSubscriber(): KubernetesDashboardSubscriber;
38+
}

packages/api/tsconfig.json

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{
2+
"extends": "@tsconfig/strictest/tsconfig.json",
3+
"compilerOptions": {
4+
"target": "esnext",
5+
"module": "node16",
6+
"baseUrl": ".",
7+
"types": ["node"],
8+
"strict": true,
9+
"esModuleInterop": true,
10+
"forceConsistentCasingInFileNames": true
11+
},
12+
"include": ["src/**/*.d.ts"]
13+
}

packages/channels/src/model/available-contexts-info.ts renamed to packages/api/vite.config.js

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,26 @@
1515
*
1616
* SPDX-License-Identifier: Apache-2.0
1717
***********************************************************************/
18+
/* eslint-env node */
19+
import { defineConfig } from 'vite';
1820

19-
export interface AvailableContextsInfo {
20-
contextNames: string[];
21-
}
21+
const PACKAGE_ROOT = __dirname;
22+
23+
// https://vitejs.dev/config/
24+
export default defineConfig({
25+
mode: process.env.MODE,
26+
root: PACKAGE_ROOT,
27+
base: '',
28+
server: {
29+
fs: {
30+
strict: true,
31+
},
32+
},
33+
build: {
34+
sourcemap: true,
35+
outDir: 'dist',
36+
assetsDir: '.',
37+
emptyOutDir: true,
38+
reportCompressedSize: false,
39+
},
40+
});

packages/channels/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525
},
2626
"devDependencies": {
2727
"@kubernetes-dashboard/rpc": "workspace:*",
28+
"@podman-desktop/kubernetes-dashboard-extension-api": "workspace:*",
2829
"vite-plugin-dts": "^4.5.4"
2930
}
3031
}

packages/channels/src/channels.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,10 +24,8 @@ import type { PortForwardApi } from './interface/port-forward-api';
2424
import type { SubscribeApi } from './interface/subscribe-api';
2525
import type { SystemApi } from './interface/system-api';
2626
import type { ActiveResourcesCountInfo } from './model/active-resources-count-info';
27-
import type { AvailableContextsInfo } from './model/available-contexts-info';
2827
import type { ContextsHealthsInfo } from './model/contexts-healths-info';
2928
import type { ContextsPermissionsInfo } from './model/contexts-permissions-info';
30-
import type { CurrentContextInfo } from './model/current-context-info';
3129
import type { EndpointsInfo } from './model/endpoints-info';
3230
import type { KubernetesProvidersInfo } from './model/kubernetes-providers-info';
3331
import type { PodLogsChunk } from './model/pod-logs-chunk';
@@ -38,6 +36,7 @@ import type { ResourceEventsInfo } from './model/resource-events-info';
3836
import type { ResourcesCountInfo } from './model/resources-count-info';
3937
import type { UpdateResourceInfo } from './model/update-resource-info';
4038
import { createRpcChannel } from '@kubernetes-dashboard/rpc';
39+
import type { AvailableContextsInfo, CurrentContextInfo } from '@podman-desktop/kubernetes-dashboard-extension-api';
4140

4241
// RPC channels (used by the webview to send requests to the extension)
4342
export const API_CONTEXTS = createRpcChannel<ContextsApi>('ContextsApi');

packages/channels/src/model/index.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,11 @@
1717
***********************************************************************/
1818

1919
export * from './active-resources-count-info';
20-
export * from './available-contexts-info';
2120
export * from './context-resource-events';
2221
export * from './context-resources-details';
2322
export * from './context-resources-items';
2423
export * from './contexts-healths-info';
2524
export * from './contexts-permissions-info';
26-
export * from './current-context-info';
2725
export * from './endpoint';
2826
export * from './endpoints-info';
2927
export * from './endpoints-options';

0 commit comments

Comments
 (0)