Skip to content

Commit def0981

Browse files
committed
feat: add api package
Signed-off-by: Philippe Martin <[email protected]>
1 parent 43b1ac2 commit def0981

30 files changed

+180
-51
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

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: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,24 @@
1616
* SPDX-License-Identifier: Apache-2.0
1717
***********************************************************************/
1818

19+
export interface IDisposable {
20+
dispose(): void;
21+
}
22+
23+
export interface AvailableContextsInfo {
24+
contextNames: string[];
25+
}
26+
1927
export interface CurrentContextInfo {
2028
contextName?: string;
2129
namespace?: string;
2230
}
31+
32+
export interface KubernetesDashboardSubscriber extends IDisposable {
33+
onAvailableContexts(listener: (event: AvailableContextsInfo) => void): IDisposable;
34+
onCurrentContext(listener: (event: CurrentContextInfo) => void): IDisposable;
35+
}
36+
37+
export interface KubernetesDashboardExtensionApi {
38+
getSubscriber(): KubernetesDashboardSubscriber;
39+
}

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';

packages/extension/package.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,8 @@
4242
"vite": "^7.1",
4343
"vitest": "^3.1",
4444
"isomorphic-ws": "^5.0.0",
45-
"@types/ws": "^8.18.0"
45+
"@types/ws": "^8.18.0",
46+
"@podman-desktop/kubernetes-dashboard-extension-api": "workspace:*"
4647
},
4748
"dependencies": {
4849
"@kubernetes/client-node": "^1.4.0",

0 commit comments

Comments
 (0)