mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Restructure extension apis (#1101)
Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
parent
c566c85351
commit
d25e2f015b
@ -1,10 +1,10 @@
|
|||||||
import { Button, Icon, IconProps, LensRendererExtension } from "@lens/ui-extensions";
|
import { Component, LensRendererExtension } from "@lens/ui-extensions";
|
||||||
import { CoffeeDoodle } from "react-open-doodles";
|
import { CoffeeDoodle } from "react-open-doodles";
|
||||||
import path from "path";
|
import path from "path";
|
||||||
import React from "react"
|
import React from "react"
|
||||||
|
|
||||||
export function ExtensionIcon(props: IconProps) {
|
export function ExtensionIcon(props: Component.IconProps) {
|
||||||
return <Icon {...props} material="pages" tooltip={path.basename(__filename)}/>
|
return <Component.Icon {...props} material="pages" tooltip={path.basename(__filename)}/>
|
||||||
}
|
}
|
||||||
|
|
||||||
export class ExtensionPage extends React.Component<{ extension: LensRendererExtension }> {
|
export class ExtensionPage extends React.Component<{ extension: LensRendererExtension }> {
|
||||||
@ -22,7 +22,7 @@ export class ExtensionPage extends React.Component<{ extension: LensRendererExte
|
|||||||
<div style={doodleStyle}><CoffeeDoodle accent="#3d90ce" /></div>
|
<div style={doodleStyle}><CoffeeDoodle accent="#3d90ce" /></div>
|
||||||
<p>Hello from Example extension!</p>
|
<p>Hello from Example extension!</p>
|
||||||
<p>File: <i>{__filename}</i></p>
|
<p>File: <i>{__filename}</i></p>
|
||||||
<Button accent label="Deactivate" onClick={this.deactivate}/>
|
<Component.Button accent label="Deactivate" onClick={this.deactivate}/>
|
||||||
</div>
|
</div>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { DynamicPageType, LensRendererExtension, PageRegistry } from "@lens/ui-extensions";
|
import { Registry, LensRendererExtension } from "@lens/ui-extensions";
|
||||||
import { examplePage, ExtensionIcon } from "./page"
|
import { examplePage, ExtensionIcon } from "./page"
|
||||||
|
|
||||||
export default class ExampleExtension extends LensRendererExtension {
|
export default class ExampleExtension extends LensRendererExtension {
|
||||||
@ -6,10 +6,10 @@ export default class ExampleExtension extends LensRendererExtension {
|
|||||||
console.log('EXAMPLE EXTENSION RENDERER: ACTIVATED', this.getMeta());
|
console.log('EXAMPLE EXTENSION RENDERER: ACTIVATED', this.getMeta());
|
||||||
}
|
}
|
||||||
|
|
||||||
registerPages(registry: PageRegistry) {
|
registerPages(registry: Registry.PageRegistry) {
|
||||||
this.disposers.push(
|
this.disposers.push(
|
||||||
registry.add({
|
registry.add({
|
||||||
type: DynamicPageType.CLUSTER,
|
type: Registry.DynamicPageType.CLUSTER,
|
||||||
path: "/extension-example",
|
path: "/extension-example",
|
||||||
title: "Example Extension",
|
title: "Example Extension",
|
||||||
components: {
|
components: {
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
import { Checkbox } from "@lens/ui-extensions"
|
import { Component } from "@lens/ui-extensions"
|
||||||
import React from "react"
|
import React from "react"
|
||||||
import { observer } from "mobx-react";
|
import { observer } from "mobx-react";
|
||||||
import { TelemetryPreferencesStore } from "./telemetry-preferences-store"
|
import { TelemetryPreferencesStore } from "./telemetry-preferences-store"
|
||||||
@ -8,7 +8,7 @@ export class TelemetryPreferenceInput extends React.Component<{telemetry: Teleme
|
|||||||
render() {
|
render() {
|
||||||
const { telemetry } = this.props
|
const { telemetry } = this.props
|
||||||
return (
|
return (
|
||||||
<Checkbox
|
<Component.Checkbox
|
||||||
label="Allow telemetry & usage tracking"
|
label="Allow telemetry & usage tracking"
|
||||||
value={telemetry.enabled}
|
value={telemetry.enabled}
|
||||||
onChange={v => { telemetry.enabled = v; }}
|
onChange={v => { telemetry.enabled = v; }}
|
||||||
|
|||||||
@ -1,11 +1,11 @@
|
|||||||
import { BaseStore } from "@lens/extensions";
|
import { Store } from "@lens/extensions";
|
||||||
import { toJS } from "mobx"
|
import { toJS } from "mobx"
|
||||||
|
|
||||||
export type TelemetryPreferencesModel = {
|
export type TelemetryPreferencesModel = {
|
||||||
enabled: boolean;
|
enabled: boolean;
|
||||||
}
|
}
|
||||||
|
|
||||||
export class TelemetryPreferencesStore extends BaseStore<TelemetryPreferencesModel> {
|
export class TelemetryPreferencesStore extends Store.BaseStore<TelemetryPreferencesModel> {
|
||||||
private constructor() {
|
private constructor() {
|
||||||
super({
|
super({
|
||||||
configName: "telemetry-preferences-store",
|
configName: "telemetry-preferences-store",
|
||||||
|
|||||||
@ -1,9 +1,14 @@
|
|||||||
// Lens-extensions api developer's kit
|
// Lens-extensions api developer's kit
|
||||||
export type { LensExtensionRuntimeEnv } from "./lens-runtime";
|
export type { LensExtensionRuntimeEnv } from "./lens-runtime";
|
||||||
|
export * from "./lens-main-extension"
|
||||||
|
|
||||||
// APIs
|
// APIs
|
||||||
export * from "./lens-main-extension"
|
import * as EventBus from "./main-api/event-bus"
|
||||||
export { BaseStore } from "../common/base-store"
|
import * as Store from "./main-api/stores"
|
||||||
export { appEventBus } from "../common/event-bus"
|
import * as Util from "./main-api/utils"
|
||||||
export type { AppEvent } from "../common/event-bus"
|
|
||||||
export { Singleton } from "../common/utils"
|
export {
|
||||||
|
EventBus,
|
||||||
|
Store,
|
||||||
|
Util
|
||||||
|
}
|
||||||
|
|||||||
@ -4,16 +4,17 @@ export type { LensExtensionRuntimeEnv } from "./lens-renderer-runtime"
|
|||||||
// APIs
|
// APIs
|
||||||
export * from "./lens-extension"
|
export * from "./lens-extension"
|
||||||
export * from "./lens-renderer-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)
|
import * as Component from "./renderer-api/components"
|
||||||
export * from "../renderer/components/icon"
|
import * as EventBus from "./main-api/event-bus"
|
||||||
export * from "../renderer/components/checkbox"
|
import * as K8sApi from "./renderer-api/k8s-api"
|
||||||
export * from "../renderer/components/tooltip"
|
import * as Registry from "./renderer-api/registries"
|
||||||
export * from "../renderer/components/button"
|
import * as Util from "./main-api/utils"
|
||||||
export * from "../renderer/components/tabs"
|
|
||||||
export * from "../renderer/components/badge"
|
export {
|
||||||
|
Component,
|
||||||
|
EventBus,
|
||||||
|
K8sApi,
|
||||||
|
Registry,
|
||||||
|
Util
|
||||||
|
}
|
||||||
|
|||||||
@ -1,14 +1,14 @@
|
|||||||
import { LensExtension } from "./lens-extension"
|
import { LensExtension } from "./lens-extension"
|
||||||
import type { PageRegistry } from "./extension-renderer-api"
|
import type { PageRegistry } from "./page-registry"
|
||||||
import { AppPreferenceRegistry } from "./app-preference-registry";
|
import type { AppPreferenceRegistry } from "./app-preference-registry";
|
||||||
|
|
||||||
export class LensRendererExtension extends LensExtension {
|
export class LensRendererExtension extends LensExtension {
|
||||||
|
|
||||||
registerPages(pageStore: PageRegistry) {
|
registerPages(registry: PageRegistry) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
registerAppPreferences(appPreferenceStore: AppPreferenceRegistry) {
|
registerAppPreferences(registry: AppPreferenceRegistry) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
2
src/extensions/main-api/event-bus.ts
Normal file
2
src/extensions/main-api/event-bus.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export { appEventBus } from "../../common/event-bus"
|
||||||
|
export type { AppEvent } from "../../common/event-bus"
|
||||||
1
src/extensions/main-api/stores.ts
Normal file
1
src/extensions/main-api/stores.ts
Normal file
@ -0,0 +1 @@
|
|||||||
|
export { BaseStore } from "../../common/base-store"
|
||||||
1
src/extensions/main-api/utils.ts
Normal file
1
src/extensions/main-api/utils.ts
Normal file
@ -0,0 +1 @@
|
|||||||
|
export { Singleton } from "../../common/utils"
|
||||||
12
src/extensions/renderer-api/components.ts
Normal file
12
src/extensions/renderer-api/components.ts
Normal file
@ -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";
|
||||||
29
src/extensions/renderer-api/k8s-api.ts
Normal file
29
src/extensions/renderer-api/k8s-api.ts
Normal file
@ -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";
|
||||||
2
src/extensions/renderer-api/registries.ts
Normal file
2
src/extensions/renderer-api/registries.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export { DynamicPageType, PageRegistry } from "../page-registry"
|
||||||
|
export { AppPreferenceRegistry } from "../app-preference-registry"
|
||||||
@ -2,30 +2,33 @@
|
|||||||
// Docs: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.10/
|
// Docs: https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.10/
|
||||||
|
|
||||||
export * from "./cluster.api"
|
export * from "./cluster.api"
|
||||||
export * from "./namespaces.api"
|
|
||||||
export * from "./cluster-role.api"
|
export * from "./cluster-role.api"
|
||||||
export * from "./cluster-role-binding.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.api"
|
||||||
export * from "./role-binding.api"
|
export * from "./role-binding.api"
|
||||||
export * from "./secret.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 "./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"
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user