From e93c53ff0cd0da8dd8b07624f3767d6f5b192402 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 2 Sep 2020 15:07:27 +0300 Subject: [PATCH] extensions-api -- loading extension modules -- part 2 Signed-off-by: Roman --- .gitignore | 4 ++-- src/extensions/example-extension/example-extension.ts | 8 +++++--- src/extensions/{ => example-extension}/tsconfig.json | 2 +- src/extensions/extension-api.ts | 4 ++++ src/extensions/extension.ts | 5 ++++- src/extensions/lens-app.d.ts | 6 ------ types/mocks.d.ts | 1 + webpack.renderer.ts | 3 +++ 8 files changed, 20 insertions(+), 13 deletions(-) rename src/extensions/{ => example-extension}/tsconfig.json (96%) create mode 100644 src/extensions/extension-api.ts delete mode 100644 src/extensions/lens-app.d.ts diff --git a/.gitignore b/.gitignore index 1251adbc13..67bb0a9c04 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,6 @@ tmp/ static/build/** binaries/client/ binaries/server/ -src/extensions/**/*.js -src/extensions/**/*.d.ts +src/extensions/*/*.js +src/extensions/*/*.d.ts locales/**/**.js diff --git a/src/extensions/example-extension/example-extension.ts b/src/extensions/example-extension/example-extension.ts index 1747d70667..d4aa9b5488 100644 --- a/src/extensions/example-extension/example-extension.ts +++ b/src/extensions/example-extension/example-extension.ts @@ -1,9 +1,11 @@ -// import { LensExtension } from "@lens"; // fixme: provide runtime import +// fixme: hook up generated types from extension-api.ts (tsc --declaration) +// fixme: provide compile or runtime import +import { LensExtension } from "@lens/extensions"; -export default class ExampleExtension /*extends LensExtension*/ { +export default class ExampleExtension extends LensExtension { async init(): Promise { console.log('Example extension: init') - // return super.init(); + return super.init(); } } diff --git a/src/extensions/tsconfig.json b/src/extensions/example-extension/tsconfig.json similarity index 96% rename from src/extensions/tsconfig.json rename to src/extensions/example-extension/tsconfig.json index 504ffe6687..24cd840efb 100644 --- a/src/extensions/tsconfig.json +++ b/src/extensions/example-extension/tsconfig.json @@ -14,7 +14,7 @@ "resolveJsonModule": true, "declaration": true }, - "files": [ + "include": [ "./example-extension/example-extension.ts" ] } diff --git a/src/extensions/extension-api.ts b/src/extensions/extension-api.ts new file mode 100644 index 0000000000..f67441a3d2 --- /dev/null +++ b/src/extensions/extension-api.ts @@ -0,0 +1,4 @@ +// LensExtensions.api.js developer kit (Lens common components) +// Should be published to npm (with types declarations) and also available as built-in dependency + +export * from "./extension" diff --git a/src/extensions/extension.ts b/src/extensions/extension.ts index 35b8758989..5dc37c11d2 100644 --- a/src/extensions/extension.ts +++ b/src/extensions/extension.ts @@ -5,9 +5,12 @@ import extensionManifest from "./example-extension/package.json" import logger from "../main/logger"; // TODO: extensions api -// - figure out how to expose/inject lens apis to extension: +// * figure out how to expose/inject lens apis to extension: // -- replace import "@lens" to real path to "build/Lens.js" or maybe "build/Lens-extensions.api.js" // -- load extension via NodeJS.require() / webContents.executeJavaScript() +// * figure out how to re-use/provide-access from extension to its: +// -- npm dependencies +// -- folder assets/resources export type ExtensionId = string; export type ExtensionVersion = string | number; diff --git a/src/extensions/lens-app.d.ts b/src/extensions/lens-app.d.ts deleted file mode 100644 index 705e278bc9..0000000000 --- a/src/extensions/lens-app.d.ts +++ /dev/null @@ -1,6 +0,0 @@ -// todo: re-export / expose more apis -// todo: generate as Lens.d.js + add real runtime exports - -declare module "@lens" { - export { LensExtension, ExtensionId, ExtensionVersion } from "./extension"; -} diff --git a/types/mocks.d.ts b/types/mocks.d.ts index 7ddd25267b..7c4ef0aa75 100644 --- a/types/mocks.d.ts +++ b/types/mocks.d.ts @@ -3,6 +3,7 @@ declare module "mac-ca" declare module "win-ca" declare module "@hapi/call" declare module "@hapi/subtext" +declare module "@lens/extensions" // todo: provide types // Global path to static assets declare const __static: string; diff --git a/webpack.renderer.ts b/webpack.renderer.ts index d51aad89d3..cdae9ed374 100755 --- a/webpack.renderer.ts +++ b/webpack.renderer.ts @@ -25,6 +25,9 @@ export default function (): webpack.Configuration { libraryTarget: "commonjs2", }, resolve: { + alias: { + // "@lens/extensions": "" // todo: replace in runtime to "build/LensExtensionApi.js"? + }, extensions: [ '.js', '.jsx', '.json', '.ts', '.tsx',