From 7c18c2a23b56c7747ee498bf65ff3bb6ed8eb2c6 Mon Sep 17 00:00:00 2001 From: Sebastian Malton Date: Thu, 2 Feb 2023 09:53:33 -0500 Subject: [PATCH] Fix crashes with usages of @k8slens/core/common - Only observable with extensions Signed-off-by: Sebastian Malton --- packages/core/package.json | 4 - packages/core/src/common/library.ts | 11 -- packages/core/src/main/library.ts | 7 +- packages/core/src/renderer/library.ts | 8 +- packages/core/webpack/common.ts | 37 ------ packages/core/webpack/library-bundle.ts | 4 +- packages/core/webpack/main.ts | 124 +++++++++--------- packages/extension-api/src/extension-api.ts | 3 +- packages/extension-api/webpack/extensions.ts | 1 - .../application-information.injectable.ts | 2 +- packages/open-lens/src/main/index.ts | 3 +- .../application-information.injectable.ts | 17 +++ packages/open-lens/src/renderer/index.ts | 3 +- 13 files changed, 95 insertions(+), 129 deletions(-) delete mode 100644 packages/core/src/common/library.ts delete mode 100644 packages/core/webpack/common.ts rename packages/open-lens/src/{common => main}/application-information.injectable.ts (95%) create mode 100644 packages/open-lens/src/renderer/application-information.injectable.ts diff --git a/packages/core/package.json b/packages/core/package.json index c343e3c0e6..2aeb93a1e9 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -20,7 +20,6 @@ "exports": { "./main": "./static/build/library/main.js", "./renderer": "./static/build/library/renderer.js", - "./common": "./static/build/library/common.js", "./styles": "./static/build/library/renderer.css" }, "typesVersions": { @@ -30,9 +29,6 @@ ], "renderer": [ "./static/build/library/src/renderer/library.d.ts" - ], - "common": [ - "./static/build/library/src/common/library.d.ts" ] } }, diff --git a/packages/core/src/common/library.ts b/packages/core/src/common/library.ts deleted file mode 100644 index a9728c8174..0000000000 --- a/packages/core/src/common/library.ts +++ /dev/null @@ -1,11 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -// @experimental -export { applicationInformationToken } from "./vars/application-information-token"; -export type { ApplicationInformation } from "./vars/application-information-token"; -export { bundledExtensionInjectionToken } from "../extensions/extension-discovery/bundled-extension-token"; - -export * as extensionApi from "../extensions/common-api"; diff --git a/packages/core/src/main/library.ts b/packages/core/src/main/library.ts index 045c1d4c7d..78c6976d79 100644 --- a/packages/core/src/main/library.ts +++ b/packages/core/src/main/library.ts @@ -9,6 +9,11 @@ export { beforeApplicationIsLoadingInjectionToken } from "./start-main-applicati export { beforeElectronIsReadyInjectionToken } from "./start-main-application/runnable-tokens/before-electron-is-ready-injection-token"; export { onLoadOfApplicationInjectionToken } from "./start-main-application/runnable-tokens/on-load-of-application-injection-token"; export { createApp } from "./create-app"; +export { applicationInformationToken } from "../common/vars/application-information-token"; +export type { ApplicationInformation } from "../common/vars/application-information-token"; +export { bundledExtensionInjectionToken } from "../extensions/extension-discovery/bundled-extension-token"; + export * as Mobx from "mobx"; -export * as extensionApi from "../extensions/main-api"; export * as Pty from "node-pty"; +export * as extensionApi from "../extensions/main-api"; +export * as commonExtensionApi from "../extensions/common-api"; diff --git a/packages/core/src/renderer/library.ts b/packages/core/src/renderer/library.ts index b6c8a3ed75..a317be4fae 100644 --- a/packages/core/src/renderer/library.ts +++ b/packages/core/src/renderer/library.ts @@ -7,10 +7,16 @@ import React from "react"; import ReactDOM from "react-dom"; // @experimental +export { createApp } from "./create-app"; +export { applicationInformationToken } from "../common/vars/application-information-token"; +export type { ApplicationInformation } from "../common/vars/application-information-token"; +export { bundledExtensionInjectionToken } from "../extensions/extension-discovery/bundled-extension-token"; + export { React, ReactDOM }; export * as Mobx from "mobx"; export * as MobxReact from "mobx-react"; export * as ReactRouter from "react-router"; export * as ReactRouterDom from "react-router-dom"; export * as extensionApi from "../extensions/renderer-api"; -export { createApp } from "./create-app"; +export * as commonExtensionApi from "../extensions/common-api"; + diff --git a/packages/core/webpack/common.ts b/packages/core/webpack/common.ts deleted file mode 100644 index 2f5672c94a..0000000000 --- a/packages/core/webpack/common.ts +++ /dev/null @@ -1,37 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -import type webpack from "webpack"; -import path from "path"; -import ForkTsCheckerPlugin from "fork-ts-checker-webpack-plugin"; -import webpackLensMain from "./main"; -import { buildDir } from "./vars"; - -const webpackLensCommon = (): webpack.Configuration => { - const mainConfig = webpackLensMain(); - - return { - ...mainConfig, - name: "lens-app-common", - entry: { - common: path.resolve(__dirname, "..", "src", "common", "library.ts"), - }, - output: { - publicPath: "", - library: { - type: "commonjs2", - }, - path: path.resolve(buildDir, "library"), - }, - optimization: { - minimize: false, - }, - plugins: [ - new ForkTsCheckerPlugin({}), - ], - }; -}; - -export default webpackLensCommon; diff --git a/packages/core/webpack/library-bundle.ts b/packages/core/webpack/library-bundle.ts index 78d7be1bd4..807a85767c 100644 --- a/packages/core/webpack/library-bundle.ts +++ b/packages/core/webpack/library-bundle.ts @@ -3,14 +3,12 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -import webpackLensCommon from "./common"; -import webpackLensMain from "./main"; +import { webpackLensMain } from "./main"; import { webpackLensRenderer } from "./renderer"; const config = [ webpackLensMain(), webpackLensRenderer(), - webpackLensCommon(), ]; export default config; diff --git a/packages/core/webpack/main.ts b/packages/core/webpack/main.ts index ea93bcd30d..5450310a79 100755 --- a/packages/core/webpack/main.ts +++ b/packages/core/webpack/main.ts @@ -12,76 +12,72 @@ import { DefinePlugin } from "webpack"; import { buildDir, isDevelopment } from "./vars"; import { platform } from "process"; -const webpackLensMain = (): webpack.Configuration => { - return { - name: "lens-app-main", - context: __dirname, - target: "electron-main", - mode: isDevelopment ? "development" : "production", - devtool: isDevelopment ? "cheap-module-source-map" : "source-map", - cache: isDevelopment ? { type: "filesystem" } : false, - entry: { - main: path.resolve(__dirname, "..", "src", "main", "library.ts"), +export const webpackLensMain = (): webpack.Configuration => ({ + name: "lens-app-main", + context: __dirname, + target: "electron-main", + mode: isDevelopment ? "development" : "production", + devtool: isDevelopment ? "cheap-module-source-map" : "source-map", + cache: isDevelopment ? { type: "filesystem" } : false, + entry: { + main: path.resolve(__dirname, "..", "src", "main", "library.ts"), + }, + output: { + library: { + type: "commonjs2", }, - output: { - library: { - type: "commonjs2", + path: path.resolve(buildDir, "library"), + }, + optimization: { + minimize: false, + }, + resolve: { + extensions: [".json", ".js", ".ts"], + }, + externals: [ + nodeExternals(), + ], + module: { + parser: { + javascript: { + commonjsMagicComments: true, }, - path: path.resolve(buildDir, "library"), }, - optimization: { - minimize: false, - }, - resolve: { - extensions: [".json", ".js", ".ts"], - }, - externals: [ - nodeExternals(), - ], - module: { - parser: { - javascript: { - commonjsMagicComments: true, - }, + rules: [ + { + test: /\.node$/, + use: "node-loader", }, - rules: [ - { - test: /\.node$/, - use: "node-loader", - }, - { - test: /\.ts$/, - exclude: /node_modules/, - use: { - loader: "ts-loader", - options: { - transpileOnly: true, - compilerOptions: { - sourceMap: false, - }, - }, - }, - }, - ...iconsAndImagesWebpackRules(), - ], - }, - plugins: [ - new DefinePlugin({ - CONTEXT_MATCHER_FOR_NON_FEATURES: `/\\.injectable(\\.${platform})?\\.tsx?$/`, - CONTEXT_MATCHER_FOR_FEATURES: `/\\/(main|common)\\/.+\\.injectable(\\.${platform})?\\.tsx?$/`, - }), - new ForkTsCheckerPlugin({ - typescript: { - mode: "write-dts", - configOverwrite: { + { + test: /\.ts$/, + exclude: /node_modules/, + use: { + loader: "ts-loader", + options: { + transpileOnly: true, compilerOptions: { - declaration: true, + sourceMap: false, }, }, }, - }), + }, + ...iconsAndImagesWebpackRules(), ], - }; -}; - -export default webpackLensMain; + }, + plugins: [ + new DefinePlugin({ + CONTEXT_MATCHER_FOR_NON_FEATURES: `/\\.injectable(\\.${platform})?\\.tsx?$/`, + CONTEXT_MATCHER_FOR_FEATURES: `/\\/(main|common)\\/.+\\.injectable(\\.${platform})?\\.tsx?$/`, + }), + new ForkTsCheckerPlugin({ + typescript: { + mode: "write-dts", + configOverwrite: { + compilerOptions: { + declaration: true, + }, + }, + }, + }), + ], +}); diff --git a/packages/extension-api/src/extension-api.ts b/packages/extension-api/src/extension-api.ts index cdd09231f1..e84eb4a255 100644 --- a/packages/extension-api/src/extension-api.ts +++ b/packages/extension-api/src/extension-api.ts @@ -3,6 +3,5 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ -export { extensionApi as Main } from "@k8slens/core/main"; +export { extensionApi as Main, commonExtensionApi as Common } from "@k8slens/core/main"; export { extensionApi as Renderer } from "@k8slens/core/renderer"; -export { extensionApi as Common } from "@k8slens/core/common"; diff --git a/packages/extension-api/webpack/extensions.ts b/packages/extension-api/webpack/extensions.ts index 6b354f9bae..22910bbe18 100644 --- a/packages/extension-api/webpack/extensions.ts +++ b/packages/extension-api/webpack/extensions.ts @@ -35,7 +35,6 @@ export default function generateExtensionTypes(): webpack.Configuration { ], stats: "errors-warnings", externals: [ - "@k8slens/core/common", "@k8slens/core/main", "@k8slens/core/renderer", ], diff --git a/packages/open-lens/src/common/application-information.injectable.ts b/packages/open-lens/src/main/application-information.injectable.ts similarity index 95% rename from packages/open-lens/src/common/application-information.injectable.ts rename to packages/open-lens/src/main/application-information.injectable.ts index 603ea171ad..01a06c2a69 100644 --- a/packages/open-lens/src/common/application-information.injectable.ts +++ b/packages/open-lens/src/main/application-information.injectable.ts @@ -1,6 +1,6 @@ import { getInjectable } from "@ogre-tools/injectable"; -import { applicationInformationToken, ApplicationInformation } from "@k8slens/core/common"; +import { applicationInformationToken, ApplicationInformation } from "@k8slens/core/main"; import packageJson from "../../package.json"; const applicationInformationInjectable = getInjectable({ diff --git a/packages/open-lens/src/main/index.ts b/packages/open-lens/src/main/index.ts index 103cce48f7..57cd7b33db 100644 --- a/packages/open-lens/src/main/index.ts +++ b/packages/open-lens/src/main/index.ts @@ -1,8 +1,7 @@ import { createContainer } from "@ogre-tools/injectable"; import { autoRegister } from "@ogre-tools/injectable-extension-for-auto-registration"; import { runInAction } from "mobx"; -import { createApp, extensionApi as Main } from "@k8slens/core/main"; -import { extensionApi as Common } from "@k8slens/core/common"; +import { createApp, extensionApi as Main, commonExtensionApi as Common } from "@k8slens/core/main"; const di = createContainer("main"); const app = createApp({ diff --git a/packages/open-lens/src/renderer/application-information.injectable.ts b/packages/open-lens/src/renderer/application-information.injectable.ts new file mode 100644 index 0000000000..8b755784ff --- /dev/null +++ b/packages/open-lens/src/renderer/application-information.injectable.ts @@ -0,0 +1,17 @@ + +import { getInjectable } from "@ogre-tools/injectable"; +import { applicationInformationToken, ApplicationInformation } from "@k8slens/core/renderer"; +import packageJson from "../../package.json"; + +const applicationInformationInjectable = getInjectable({ + id: "application-information", + injectionToken: applicationInformationToken, + instantiate: () => { + const { version, config, productName, build, copyright, description, name } = packageJson; + + return { version, config, productName, build, copyright, description, name } as ApplicationInformation; + }, + causesSideEffects: true, +}); + +export default applicationInformationInjectable; diff --git a/packages/open-lens/src/renderer/index.ts b/packages/open-lens/src/renderer/index.ts index 133e1a8d88..03f550ddd6 100644 --- a/packages/open-lens/src/renderer/index.ts +++ b/packages/open-lens/src/renderer/index.ts @@ -1,8 +1,7 @@ import "@k8slens/core/styles"; import { createContainer } from "@ogre-tools/injectable"; import { runInAction } from "mobx"; -import { createApp, extensionApi as Renderer } from "@k8slens/core/renderer"; -import { extensionApi as Common } from "@k8slens/core/common"; +import { createApp, extensionApi as Renderer, commonExtensionApi as Common } from "@k8slens/core/renderer"; import { autoRegister } from "@ogre-tools/injectable-extension-for-auto-registration"; const di = createContainer("renderer");