1
0
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:
Jari Kolehmainen 2020-10-20 14:45:15 +03:00 committed by GitHub
parent c566c85351
commit d25e2f015b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 109 additions and 53 deletions

View File

@ -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>
) )
} }

View File

@ -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: {

View File

@ -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; }}

View File

@ -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",

View File

@ -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
}

View File

@ -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
}

View File

@ -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
} }
} }

View File

@ -0,0 +1,2 @@
export { appEventBus } from "../../common/event-bus"
export type { AppEvent } from "../../common/event-bus"

View File

@ -0,0 +1 @@
export { BaseStore } from "../../common/base-store"

View File

@ -0,0 +1 @@
export { Singleton } from "../../common/utils"

View 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";

View 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";

View File

@ -0,0 +1,2 @@
export { DynamicPageType, PageRegistry } from "../page-registry"
export { AppPreferenceRegistry } from "../app-preference-registry"

View File

@ -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"