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

extensions-api -- in-progress - PoC: activate all loading extensions

Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
Roman 2020-09-04 15:48:42 +03:00
parent 14fb185792
commit 7f646da312
4 changed files with 15 additions and 9 deletions

View File

@ -1,13 +1,13 @@
import { LensExtension, LensRendererRuntimeEnv } from "@lens/extensions"; // fixme: map to generated types from "extension-api.d.ts"
import { LensExtension } from "@lens/extensions"; // fixme: map to generated types from "extension-api.d.ts"
export default class ExampleExtension extends LensExtension {
async activate(runtime: LensRendererRuntimeEnv): Promise<any> {
await super.activate(runtime);
console.log('Example extension: activate');
async activate(): Promise<any> {
await super.activate();
console.warn('EXAMPLE EXTENSION: ACTIVATE'.padStart(10, "-"));
}
async deactivate(): Promise<any> {
console.log('Example extension: deactivate')
console.warn('EXAMPLE EXTENSION: DEACTIVATE'.padStart(10, "-"))
await super.deactivate();
}
}

View File

@ -1,4 +1,5 @@
// Lens-extensions api developer's kit
export type { LensRendererRuntimeEnv } from "./extension-api.runtime";
export * from "./extension"

View File

@ -25,7 +25,7 @@ export interface InstalledExtension<T extends ExtensionModel = any> {
manifest: ExtensionManifest;
extensionModule: {
[name: string]: any;
default: new (model: T, manifest?: ExtensionManifest) => LensExtension
default: new (model: ExtensionModel, manifest?: ExtensionManifest) => LensExtension
}
}
@ -75,6 +75,13 @@ export class ExtensionStore extends BaseStore<ExtensionStoreModel> {
async loadInstalledExtensions() {
const extensions = await this.loadExtensions(this.folderPath);
this.installed.replace(extensions.map(ext => [ext.manifestPath, ext]));
// todo: remove
extensions.forEach(({ extensionModule, manifest }) => {
const LensExtension = extensionModule.default;
const instance = new LensExtension({ ...manifest }, manifest);
instance.activate();
})
}
async loadExtensions(folderPath: string): Promise<InstalledExtension[]> {

View File

@ -38,14 +38,12 @@ export class LensExtension implements ExtensionModel {
}
}
async activate(params: LensRendererRuntimeEnv) {
async activate() {
logger.info(`[EXTENSION]: activate ${this.name}@${this.version}`, this.getMeta());
this.runtime = params;
}
async deactivate() {
logger.info(`[EXTENSION]: deactivate ${this.name}@${this.version}`, this.getMeta());
this.runtime = null;
}
async enable() {