1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

extension store base class + rename main-extensions -> core-extensions

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
Jari Kolehmainen 2020-10-21 11:03:27 +03:00
parent 8f8dd9eb45
commit cf46d3967b
23 changed files with 78 additions and 60 deletions

View File

@ -1,4 +1,4 @@
import { LensMainExtension } from "@k8slens/main-extensions"; import { LensMainExtension } from "@k8slens/core-extensions";
export default class ExampleExtensionMain extends LensMainExtension { export default class ExampleExtensionMain extends LensMainExtension {
onActivate() { onActivate() {

View File

@ -1,13 +1,14 @@
import { Component, LensRendererExtension } from "@k8slens/renderer-extensions"; import { LensRendererExtension } from "@k8slens/core-extensions";
import { Component } from "@k8slens/renderer-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: Component.IconProps) { export function ExampleIcon(props: Component.IconProps) {
return <Component.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 ExamplePage extends React.Component<{ extension: LensRendererExtension }> {
deactivate = () => { deactivate = () => {
const { extension } = this.props; const { extension } = this.props;
extension.disable(); extension.disable();
@ -27,7 +28,3 @@ export class ExtensionPage extends React.Component<{ extension: LensRendererExte
) )
} }
} }
export function examplePage(ext: LensRendererExtension) {
return () => <ExtensionPage extension={ext} />
}

View File

@ -1,5 +1,6 @@
import { Registry, LensRendererExtension } from "@k8slens/renderer-extensions"; import { LensRendererExtension, Registry } from "@k8slens/core-extensions";
import { examplePage, ExtensionIcon } from "./page" import { ExamplePage, ExampleIcon } from "./page"
import React from "react"
export default class ExampleExtension extends LensRendererExtension { export default class ExampleExtension extends LensRendererExtension {
onActivate() { onActivate() {
@ -13,8 +14,8 @@ export default class ExampleExtension extends LensRendererExtension {
path: "/extension-example", path: "/extension-example",
title: "Example Extension", title: "Example Extension",
components: { components: {
Page: examplePage(this), Page: () => <ExamplePage extension={this} />,
MenuIcon: ExtensionIcon, MenuIcon: ExampleIcon,
} }
}) })
) )

View File

@ -17,8 +17,9 @@ module.exports = [
}, },
externals: [ externals: [
{ {
"@k8slens/main-extensions": "var global.LensMainExtensions", "@k8slens/core-extensions": "var global.LensCoreExtensions",
"mobx": "var global.Mobx", "mobx": "var global.Mobx",
"react": "var global.React"
} }
], ],
resolve: { resolve: {
@ -31,7 +32,7 @@ module.exports = [
}, },
}, },
{ {
entry: './renderer.ts', entry: './renderer.tsx',
context: __dirname, context: __dirname,
target: "electron-renderer", target: "electron-renderer",
mode: "production", mode: "production",
@ -47,6 +48,7 @@ module.exports = [
externals: [ externals: [
{ {
"@k8slens/renderer-extensions": "var global.LensRendererExtensions", "@k8slens/renderer-extensions": "var global.LensRendererExtensions",
"@k8slens/core-extensions": "var global.LensCoreExtensions",
"react": "var global.React", "react": "var global.React",
"mobx": "var global.Mobx" "mobx": "var global.Mobx"
} }

View File

@ -1,4 +1,4 @@
import { LensMainExtension } from "@k8slens/main-extensions"; import { LensMainExtension } from "@k8slens/core-extensions";
import { telemetryPreferencesStore } from "./src/telemetry-preferences-store" import { telemetryPreferencesStore } from "./src/telemetry-preferences-store"
import { tracker } from "./src/tracker"; import { tracker } from "./src/tracker";
@ -7,7 +7,7 @@ export default class TelemetryMainExtension extends LensMainExtension {
async onActivate() { async onActivate() {
console.log("telemetry main extension activated") console.log("telemetry main extension activated")
tracker.start() tracker.start()
await telemetryPreferencesStore.load() await telemetryPreferencesStore.loadExtension(this)
} }
onDeactivate() { onDeactivate() {

View File

@ -1,4 +1,4 @@
import { Registry, LensRendererExtension } from "@k8slens/renderer-extensions"; import { LensRendererExtension, Registry } from "@k8slens/core-extensions";
import { telemetryPreferencesStore } from "./src/telemetry-preferences-store" import { telemetryPreferencesStore } from "./src/telemetry-preferences-store"
import { TelemetryPreferenceHint, TelemetryPreferenceInput } from "./src/telemetry-preference" import { TelemetryPreferenceHint, TelemetryPreferenceInput } from "./src/telemetry-preference"
import { tracker } from "./src/tracker" import { tracker } from "./src/tracker"
@ -8,7 +8,7 @@ export default class TelemetryRendererExtension extends LensRendererExtension {
async onActivate() { async onActivate() {
console.log("telemetry extension activated") console.log("telemetry extension activated")
tracker.start() tracker.start()
await telemetryPreferencesStore.load() await telemetryPreferencesStore.loadExtension(this)
} }
registerAppPreferences(registry: Registry.AppPreferenceRegistry) { registerAppPreferences(registry: Registry.AppPreferenceRegistry) {

View File

@ -1,14 +1,14 @@
import { Store } from "@k8slens/main-extensions"; import { Store } from "@k8slens/core-extensions";
import { toJS } from "mobx" import { toJS } from "mobx"
export type TelemetryPreferencesModel = { export type TelemetryPreferencesModel = {
enabled: boolean; enabled: boolean;
} }
export class TelemetryPreferencesStore extends Store.BaseStore<TelemetryPreferencesModel> { export class TelemetryPreferencesStore extends Store.ExtensionStore<TelemetryPreferencesModel> {
private constructor() { private constructor() {
super({ super({
configName: "telemetry-preferences-store", configName: "preferences-store",
defaults: { defaults: {
enabled: true enabled: true
} }

View File

@ -1,4 +1,4 @@
import { EventBus, Util } from "@k8slens/main-extensions" import { EventBus, Util } from "@k8slens/core-extensions"
import ua from "universal-analytics" import ua from "universal-analytics"
import { machineIdSync } from "node-machine-id" import { machineIdSync } from "node-machine-id"
import { telemetryPreferencesStore } from "./telemetry-preferences-store" import { telemetryPreferencesStore } from "./telemetry-preferences-store"

View File

@ -17,7 +17,7 @@ module.exports = [
}, },
externals: [ externals: [
{ {
"@k8slens/main-extensions": "var global.LensMainExtensions", "@k8slens/core-extensions": "var global.LensCoreExtensions",
"react": "var global.React", "react": "var global.React",
"mobx": "var global.Mobx" "mobx": "var global.Mobx"
} }
@ -49,9 +49,10 @@ module.exports = [
externals: [ externals: [
{ {
"@k8slens/renderer-extensions": "var global.LensRendererExtensions", "@k8slens/renderer-extensions": "var global.LensRendererExtensions",
"@k8slens/main-extensions": "var global.LensMainExtensions", "@k8slens/core-extensions": "var global.LensCoreExtensions",
"react": "var global.React", "react": "var global.React",
"mobx": "var global.Mobx" "mobx": "var global.Mobx",
"mobx-react": "var global.MobxReact"
} }
], ],
resolve: { resolve: {

View File

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

View File

@ -0,0 +1 @@
export { ExtensionStore } from "../extension-store"

View File

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

View File

@ -1,14 +0,0 @@
// Lens-extensions api developer's kit
export type { LensExtensionRuntimeEnv } from "./lens-runtime";
export * from "./lens-main-extension"
// APIs
import * as EventBus from "./main-api/event-bus"
import * as Store from "./main-api/stores"
import * as Util from "./main-api/utils"
export {
EventBus,
Store,
Util
}

View File

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

View File

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

View File

@ -1,7 +1,7 @@
{ {
"name": "@k8slens/main-extensions", "name": "@k8slens/core-extensions",
"productName": "Lens extensions", "productName": "Lens core extensions",
"description": "Lens - The Kubernetes IDE: extensions", "description": "Lens - The Kubernetes IDE: core extensions",
"version": "0.0.0", "version": "0.0.0",
"copyright": "© 2020, Mirantis, Inc.", "copyright": "© 2020, Mirantis, Inc.",
"license": "MIT", "license": "MIT",

View File

@ -1,7 +1,7 @@
{ {
"name": "@k8slens/renderer-extensions", "name": "@k8slens/renderer-extensions",
"productName": "Lens extensions", "productName": "Lens renderer extensions",
"description": "Lens - The Kubernetes IDE: extensions", "description": "Lens - The Kubernetes IDE: renderer extensions",
"version": "0.0.0", "version": "0.0.0",
"copyright": "© 2020, Mirantis, Inc.", "copyright": "© 2020, Mirantis, Inc.",
"license": "MIT", "license": "MIT",

View File

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

View File

@ -2,19 +2,12 @@
export type { LensExtensionRuntimeEnv } from "./lens-renderer-runtime" export type { LensExtensionRuntimeEnv } from "./lens-renderer-runtime"
// APIs // APIs
export * from "./lens-extension"
export * from "./lens-renderer-extension"
import * as Component from "./renderer-api/components" import * as Component from "./renderer-api/components"
import * as EventBus from "./main-api/event-bus"
import * as K8sApi from "./renderer-api/k8s-api" import * as K8sApi from "./renderer-api/k8s-api"
import * as Registry from "./renderer-api/registries" import * as Navigation from "./renderer-api/navigation"
import * as Util from "./main-api/utils"
export { export {
Component, Component,
EventBus,
K8sApi, K8sApi,
Registry, Navigation,
Util
} }

View File

@ -8,20 +8,20 @@ import dts from "rollup-plugin-dts";
import ignoreImport from 'rollup-plugin-ignore-import' import ignoreImport from 'rollup-plugin-ignore-import'
const config: RollupOptions = { const config: RollupOptions = {
input: "src/extensions/extension-api.ts", input: "src/extensions/core-extension-api.ts",
output: [ output: [
{ file: "src/extensions/npm/main-extensions/api.d.ts", format: "es", } { file: "src/extensions/npm/core-extensions/api.d.ts", format: "es", }
], ],
plugins: [ plugins: [
dts(), dts(),
dtsModuleWrap({ name: "@k8slens/main-extensions" }), dtsModuleWrap({ name: "@k8slens/core-extensions" }),
ignoreImport({ extensions: ['.scss'] }), ignoreImport({ extensions: ['.scss'] }),
json(), json(),
], ],
}; };
const rendererConfig: RollupOptions = { const rendererConfig: RollupOptions = {
input: "src/extensions/extension-renderer-api.ts", input: "src/extensions/renderer-extension-api.ts",
output: [ output: [
{ file: "src/extensions/npm/renderer-extensions/api.d.ts", format: "es", } { file: "src/extensions/npm/renderer-extensions/api.d.ts", format: "es", }
], ],