mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Merge branch 'extensions-api' into cluster-metadata-detectors
This commit is contained in:
commit
94411d5465
35 files changed
+277
-167
No files matched your search
@@ -56,13 +56,17 @@ export class BaseStore<T = any> extends Singleton {
|
||||
...confOptions,
|
||||
projectName: "lens",
|
||||
projectVersion: getAppVersion(),
|
||||
cwd: (app || remote.app).getPath("userData"),
|
||||
cwd: this.storePath(),
|
||||
});
|
||||
logger.info(`[STORE]: LOADED from ${this.storeConfig.path}`);
|
||||
this.fromStore(this.storeConfig.store);
|
||||
this.isLoaded = true;
|
||||
}
|
||||
|
||||
protected storePath() {
|
||||
return (app || remote.app).getPath("userData")
|
||||
}
|
||||
|
||||
protected async saveToFile(model: T) {
|
||||
logger.info(`[STORE]: SAVING ${this.name}`);
|
||||
// todo: update when fixed https://github.com/sindresorhus/conf/issues/114
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
export { appEventBus } from "../../common/event-bus"
|
||||
export type { AppEvent } from "../../common/event-bus"
|
||||
@@ -0,0 +1,2 @@
|
||||
export type { DynamicPageType, PageRegistry } from "../page-registry"
|
||||
export type { AppPreferenceRegistry } from "../app-preference-registry"
|
||||
@@ -0,0 +1 @@
|
||||
export { ExtensionStore } from "../extension-store"
|
||||
@@ -0,0 +1 @@
|
||||
export { Singleton } from "../../common/utils"
|
||||
@@ -0,0 +1,17 @@
|
||||
// Lens-extensions api developer's kit
|
||||
export type { LensExtensionRuntimeEnv } from "./lens-runtime";
|
||||
export * from "./lens-main-extension"
|
||||
export * from "./lens-renderer-extension"
|
||||
|
||||
// APIs
|
||||
import * as EventBus from "./core-api/event-bus"
|
||||
import * as Store from "./core-api/stores"
|
||||
import * as Util from "./core-api/utils"
|
||||
import * as Registry from "./core-api/registries"
|
||||
|
||||
export {
|
||||
EventBus,
|
||||
Registry,
|
||||
Store,
|
||||
Util
|
||||
}
|
||||
@@ -1,9 +1,2 @@
|
||||
// Lens-extensions api developer's kit
|
||||
export type { LensExtensionRuntimeEnv } from "./lens-runtime";
|
||||
|
||||
// APIs
|
||||
export * from "./lens-main-extension"
|
||||
export { BaseStore } from "../common/base-store"
|
||||
export { appEventBus } from "../common/event-bus"
|
||||
export type { AppEvent } from "../common/event-bus"
|
||||
export { Singleton } from "../common/utils"
|
||||
export * from "./core-extension-api"
|
||||
export * from "./renderer-extension-api"
|
||||
@@ -1,19 +0,0 @@
|
||||
// Lens-extensions api developer's kit
|
||||
export type { LensExtensionRuntimeEnv } from "./lens-renderer-runtime"
|
||||
|
||||
// APIs
|
||||
export * from "./lens-extension"
|
||||
export * from "./lens-renderer-extension"
|
||||
export { DynamicPageType, PageRegistry } from "./page-registry"
|
||||
export { AppPreferenceRegistry } from "./app-preference-registry"
|
||||
export { appEventBus } from "../common/event-bus"
|
||||
export type { AppEvent } from "../common/event-bus"
|
||||
export { Singleton } from "../common/utils"
|
||||
|
||||
// TODO: add more common re-usable UI components + refactor interfaces (Props -> ComponentProps)
|
||||
export * from "../renderer/components/icon"
|
||||
export * from "../renderer/components/checkbox"
|
||||
export * from "../renderer/components/tooltip"
|
||||
export * from "../renderer/components/button"
|
||||
export * from "../renderer/components/tabs"
|
||||
export * from "../renderer/components/badge"
|
||||
@@ -0,0 +1,21 @@
|
||||
import { BaseStore } from "../common/base-store"
|
||||
import * as path from "path"
|
||||
import { LensExtension } from "./lens-extension"
|
||||
|
||||
export class ExtensionStore<T = any> extends BaseStore<T> {
|
||||
protected extension: LensExtension
|
||||
|
||||
async loadExtension(extension: LensExtension) {
|
||||
this.extension = extension
|
||||
await super.load()
|
||||
}
|
||||
|
||||
async load() {
|
||||
if (!this.extension) { return }
|
||||
await super.load()
|
||||
}
|
||||
|
||||
protected storePath() {
|
||||
return path.join(super.storePath(), "extension-store", this.extension.name)
|
||||
}
|
||||
}
|
||||
@@ -1,14 +1,14 @@
|
||||
import { LensExtension } from "./lens-extension"
|
||||
import type { PageRegistry } from "./extension-renderer-api"
|
||||
import { AppPreferenceRegistry } from "./app-preference-registry";
|
||||
import type { PageRegistry } from "./page-registry"
|
||||
import type { AppPreferenceRegistry } from "./app-preference-registry";
|
||||
|
||||
export class LensRendererExtension extends LensExtension {
|
||||
|
||||
registerPages(pageStore: PageRegistry) {
|
||||
registerPages(registry: PageRegistry) {
|
||||
return
|
||||
}
|
||||
|
||||
registerAppPreferences(appPreferenceStore: AppPreferenceRegistry) {
|
||||
registerAppPreferences(registry: AppPreferenceRegistry) {
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -1,16 +0,0 @@
|
||||
// Lens extension runtime params available to renderer extensions after activation
|
||||
|
||||
import logger from "../main/logger";
|
||||
import { navigate } from "../renderer/navigation";
|
||||
|
||||
export interface LensExtensionRuntimeEnv {
|
||||
logger: typeof logger;
|
||||
navigate: typeof navigate;
|
||||
}
|
||||
|
||||
export function getLensRuntime(): LensExtensionRuntimeEnv {
|
||||
return {
|
||||
logger,
|
||||
navigate
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
api.d.ts
|
||||
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"name": "@k8slens/extensions",
|
||||
"productName": "Lens extensions",
|
||||
"description": "Lens - The Kubernetes IDE: extensions",
|
||||
"version": "0.0.0",
|
||||
"copyright": "© 2020, Mirantis, Inc.",
|
||||
"license": "MIT",
|
||||
"files": [
|
||||
"api.d.ts"
|
||||
],
|
||||
"author": {
|
||||
"name": "Mirantis, Inc.",
|
||||
"email": "info@k8slens.dev"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
// TODO: add more common re-usable UI components + refactor interfaces (Props -> ComponentProps)
|
||||
export * from "../../renderer/components/icon"
|
||||
export * from "../../renderer/components/checkbox"
|
||||
export * from "../../renderer/components/tooltip"
|
||||
export * from "../../renderer/components/button"
|
||||
export * from "../../renderer/components/tabs"
|
||||
export * from "../../renderer/components/badge"
|
||||
export { KubeObjectMeta } from "../../renderer/components/kube-object/kube-object-meta";
|
||||
export { MenuItem, SubMenu } from "../../renderer/components/menu";
|
||||
export { StatusBrick } from "../../renderer/components/status-brick";
|
||||
export { terminalStore, createTerminalTab } from "../../renderer/components/dock/terminal.store";
|
||||
export { createPodLogsTab } from "../../renderer/components/dock/pod-logs.store";
|
||||
@@ -0,0 +1,29 @@
|
||||
|
||||
export { KubeApi } from "../../renderer/api/kube-api";
|
||||
export { KubeObject } from "../../renderer/api/kube-object";
|
||||
export { Pod, podsApi } from "../../renderer/api/endpoints";
|
||||
export { Node, nodesApi } from "../../renderer/api/endpoints";
|
||||
export { Deployment, deploymentApi } from "../../renderer/api/endpoints";
|
||||
export { DaemonSet, daemonSetApi } from "../../renderer/api/endpoints";
|
||||
export { StatefulSet, statefulSetApi } from "../../renderer/api/endpoints";
|
||||
export { Job, jobApi } from "../../renderer/api/endpoints";
|
||||
export { CronJob, cronJobApi } from "../../renderer/api/endpoints";
|
||||
export { ConfigMap, configMapApi } from "../../renderer/api/endpoints";
|
||||
export { Secret, secretsApi } from "../../renderer/api/endpoints";
|
||||
export { ResourceQuota, resourceQuotaApi } from "../../renderer/api/endpoints";
|
||||
export { HorizontalPodAutoscaler, hpaApi } from "../../renderer/api/endpoints";
|
||||
export { PodDisruptionBudget, pdbApi } from "../../renderer/api/endpoints";
|
||||
export { Service, serviceApi } from "../../renderer/api/endpoints";
|
||||
export { Endpoint, endpointApi } from "../../renderer/api/endpoints";
|
||||
export { Ingress, ingressApi } from "../../renderer/api/endpoints";
|
||||
export { NetworkPolicy, networkPolicyApi } from "../../renderer/api/endpoints";
|
||||
export { PersistentVolume, persistentVolumeApi } from "../../renderer/api/endpoints";
|
||||
export { PersistentVolumeClaim, PersistentVolumeClaimsApi } from "../../renderer/api/endpoints";
|
||||
export { StorageClass, storageClassApi } from "../../renderer/api/endpoints";
|
||||
export { Namespace, namespacesApi } from "../../renderer/api/endpoints";
|
||||
export { KubeEvent, eventApi } from "../../renderer/api/endpoints";
|
||||
export { ServiceAccount, serviceAccountsApi } from "../../renderer/api/endpoints";
|
||||
export { Role, roleApi } from "../../renderer/api/endpoints";
|
||||
export { RoleBinding, roleBindingApi } from "../../renderer/api/endpoints";
|
||||
export { ClusterRole, clusterRoleApi } from "../../renderer/api/endpoints";
|
||||
export { ClusterRoleBinding, clusterRoleBindingApi } from "../../renderer/api/endpoints";
|
||||
@@ -0,0 +1 @@
|
||||
export { navigate } from "../../renderer/navigation"
|
||||
@@ -0,0 +1,10 @@
|
||||
// APIs
|
||||
import * as Component from "./renderer-api/components"
|
||||
import * as K8sApi from "./renderer-api/k8s-api"
|
||||
import * as Navigation from "./renderer-api/navigation"
|
||||
|
||||
export {
|
||||
Component,
|
||||
K8sApi,
|
||||
Navigation,
|
||||
}
|
||||
@@ -7,29 +7,14 @@ import json from '@rollup/plugin-json';
|
||||
import dts from "rollup-plugin-dts";
|
||||
import ignoreImport from 'rollup-plugin-ignore-import'
|
||||
|
||||
// todo: generate extension-api.js bundle also with Rollup (?)
|
||||
|
||||
const config: RollupOptions = {
|
||||
input: "src/extensions/extension-api.ts",
|
||||
output: [
|
||||
{ file: "types/extension-api.d.ts", format: "es", }
|
||||
{ file: "src/extensions/npm/extensions/api.d.ts", format: "es", }
|
||||
],
|
||||
plugins: [
|
||||
dts(),
|
||||
dtsModuleWrap({ name: "@lens/extensions" }),
|
||||
ignoreImport({ extensions: ['.scss'] }),
|
||||
json(),
|
||||
],
|
||||
};
|
||||
|
||||
const rendererConfig: RollupOptions = {
|
||||
input: "src/extensions/extension-renderer-api.ts",
|
||||
output: [
|
||||
{ file: "types/extension-renderer-api.d.ts", format: "es", }
|
||||
],
|
||||
plugins: [
|
||||
dts(),
|
||||
dtsModuleWrap({ name: "@lens/ui-extensions" }),
|
||||
dtsModuleWrap({ name: "@k8slens/extensions" }),
|
||||
ignoreImport({ extensions: ['.scss'] }),
|
||||
json(),
|
||||
],
|
||||
@@ -69,4 +54,4 @@ function dtsModuleWrap({ name }: { name: string }): Plugin {
|
||||
}
|
||||
}
|
||||
|
||||
export default [config, rendererConfig];
|
||||
export default [config];
|
||||
+1
-1
@@ -17,7 +17,7 @@ import { clusterStore } from "../common/cluster-store"
|
||||
import { userStore } from "../common/user-store";
|
||||
import { workspaceStore } from "../common/workspace-store";
|
||||
import { appEventBus } from "../common/event-bus"
|
||||
import * as LensExtensions from "../extensions/extension-api";
|
||||
import * as LensExtensions from "../extensions/core-extension-api";
|
||||
import { extensionManager } from "../extensions/extension-manager";
|
||||
import { extensionLoader } from "../extensions/extension-loader";
|
||||
import { getLensRuntime } from "../extensions/lens-runtime";
|
||||
|
||||
@@ -2,30 +2,33 @@
|
||||
// Docs: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.10/
|
||||
|
||||
export * from "./cluster.api"
|
||||
export * from "./namespaces.api"
|
||||
export * from "./cluster-role.api"
|
||||
export * from "./cluster-role-binding.api"
|
||||
export * from "./configmap.api"
|
||||
export * from "./cron-job.api"
|
||||
export * from "./daemon-set.api"
|
||||
export * from "./deployment.api"
|
||||
export * from "./endpoint.api"
|
||||
export * from "./events.api"
|
||||
export * from "./hpa.api"
|
||||
export * from "./ingress.api"
|
||||
export * from "./job.api"
|
||||
export * from "./namespaces.api"
|
||||
export * from "./network-policy.api"
|
||||
export * from "./nodes.api"
|
||||
export * from "./persistent-volume.api"
|
||||
export * from "./persistent-volume-claims.api"
|
||||
export * from "./pods.api"
|
||||
export * from "./poddisruptionbudget.api"
|
||||
export * from "./pod-metrics.api"
|
||||
export * from "./podsecuritypolicy.api"
|
||||
export * from "./replica-set.api"
|
||||
export * from "./resource-quota.api"
|
||||
export * from "./role.api"
|
||||
export * from "./role-binding.api"
|
||||
export * from "./secret.api"
|
||||
export * from "./service-accounts.api"
|
||||
export * from "./nodes.api"
|
||||
export * from "./pods.api"
|
||||
export * from "./deployment.api"
|
||||
export * from "./daemon-set.api"
|
||||
export * from "./stateful-set.api"
|
||||
export * from "./replica-set.api"
|
||||
export * from "./job.api"
|
||||
export * from "./cron-job.api"
|
||||
export * from "./configmap.api"
|
||||
export * from "./ingress.api"
|
||||
export * from "./network-policy.api"
|
||||
export * from "./persistent-volume-claims.api"
|
||||
export * from "./persistent-volume.api"
|
||||
export * from "./service.api"
|
||||
export * from "./endpoint.api"
|
||||
export * from "./storage-class.api"
|
||||
export * from "./pod-metrics.api"
|
||||
export * from "./podsecuritypolicy.api"
|
||||
export * from "./selfsubjectrulesreviews.api"
|
||||
export * from "./poddisruptionbudget.api"
|
||||
export * from "./service.api"
|
||||
export * from "./service-accounts.api"
|
||||
export * from "./stateful-set.api"
|
||||
export * from "./storage-class.api"
|
||||
@@ -1,8 +1,8 @@
|
||||
import "./components/app.scss"
|
||||
import React from "react";
|
||||
import * as Mobx from "mobx"
|
||||
import * as LensMainExtensions from "../extensions/extension-api"
|
||||
import * as LensExtensions from "../extensions/extension-renderer-api"
|
||||
import * as MobxReact from "mobx-react"
|
||||
import * as LensExtensions from "../extensions/extension-api"
|
||||
import { render, unmountComponentAtNode } from "react-dom";
|
||||
import { isMac } from "../common/vars";
|
||||
import { userStore } from "../common/user-store";
|
||||
@@ -20,8 +20,8 @@ type AppComponent = React.ComponentType & {
|
||||
export {
|
||||
React,
|
||||
Mobx,
|
||||
LensExtensions,
|
||||
LensMainExtensions
|
||||
MobxReact,
|
||||
LensExtensions
|
||||
}
|
||||
|
||||
export async function bootstrap(App: AppComponent) {
|
||||
|
||||
Reference in new issue
Block a user