From 22662dd716599957fb56de1e97c603c7fde057a2 Mon Sep 17 00:00:00 2001 From: Jari Kolehmainen Date: Wed, 14 Dec 2022 16:31:18 +0200 Subject: [PATCH] introduce applicationInformationToken Signed-off-by: Jari Kolehmainen --- package.json | 4 +++ .../welcome-route-config.injectable.ts | 4 +-- src/common/library.ts | 9 ++++++ .../vars/application-copyright.injectable.ts | 4 +-- .../application-description.injectable.ts | 4 +-- ... => application-information-injectable.ts} | 8 ++--- ...pplication-information-token.injectable.ts | 17 ++++++++++ ...ormation.global-override-for-injectable.ts | 25 --------------- ...tion-information.injectable-for-testing.ts | 32 +++++++++++++++++++ .../bundled-kubectl-version.injectable.ts | 4 +-- .../content-security-policy.injectable.ts | 4 +-- .../vars/extension-api-version.injectable.ts | 4 +-- src/common/vars/product-name.injectable.ts | 4 +-- src/common/vars/sentry-dsn-url.injectable.ts | 4 +-- .../store-migration-version.injectable.ts | 4 +-- .../extension-discovery.injectable.ts | 4 +-- .../extension-discovery.ts | 2 +- .../publish-is-configured.injectable.ts | 4 +-- src/main/getDiForUnitTesting.ts | 2 ++ .../routes/files/development.injectable.ts | 6 ++-- .../routes/files/production.injectable.ts | 4 +-- .../create-electron-window.injectable.ts | 4 +-- src/renderer/getDiForUnitTesting.tsx | 3 ++ webpack/library-bundle.ts | 28 ++++++++++++++-- webpack/library.ts | 22 ++----------- webpack/renderer.ts | 2 +- 26 files changed, 128 insertions(+), 84 deletions(-) create mode 100644 src/common/library.ts rename src/common/vars/{application-information.injectable.ts => application-information-injectable.ts} (69%) create mode 100644 src/common/vars/application-information-token.injectable.ts delete mode 100644 src/common/vars/application-information.global-override-for-injectable.ts create mode 100644 src/common/vars/application-information.injectable-for-testing.ts diff --git a/package.json b/package.json index 5f606f5998..2e5e99aead 100644 --- a/package.json +++ b/package.json @@ -8,6 +8,7 @@ "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": { @@ -17,6 +18,9 @@ ], "renderer": [ "./src/renderer/library.ts" + ], + "common": [ + "./src/common/library.ts" ] } }, diff --git a/src/common/front-end-routing/routes/welcome/welcome-route-config.injectable.ts b/src/common/front-end-routing/routes/welcome/welcome-route-config.injectable.ts index 4e16df5bb4..9bbe2ce4ea 100644 --- a/src/common/front-end-routing/routes/welcome/welcome-route-config.injectable.ts +++ b/src/common/front-end-routing/routes/welcome/welcome-route-config.injectable.ts @@ -3,12 +3,12 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import applicationInformationInjectable from "../../../vars/application-information.injectable"; +import applicationInformationToken from "../../../vars/application-information-token.injectable"; const welcomeRouteConfigInjectable = getInjectable({ id: "welcome-route-config", - instantiate: (di) => di.inject(applicationInformationInjectable).config.welcomeRoute, + instantiate: (di) => di.inject(applicationInformationToken).config.welcomeRoute, }); export default welcomeRouteConfigInjectable; diff --git a/src/common/library.ts b/src/common/library.ts new file mode 100644 index 0000000000..6a74a3708b --- /dev/null +++ b/src/common/library.ts @@ -0,0 +1,9 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ +import applicationInformationToken from "./vars/application-information-token.injectable"; + +export { + applicationInformationToken, +}; diff --git a/src/common/vars/application-copyright.injectable.ts b/src/common/vars/application-copyright.injectable.ts index cdac64855c..4e63aafa81 100644 --- a/src/common/vars/application-copyright.injectable.ts +++ b/src/common/vars/application-copyright.injectable.ts @@ -3,11 +3,11 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import applicationInformationInjectable from "./application-information.injectable"; +import applicationInformationToken from "./application-information-token.injectable"; const applicationCopyrightInjectable = getInjectable({ id: "application-copyright", - instantiate: (di) => di.inject(applicationInformationInjectable).copyright, + instantiate: (di) => di.inject(applicationInformationToken).copyright, }); export default applicationCopyrightInjectable; diff --git a/src/common/vars/application-description.injectable.ts b/src/common/vars/application-description.injectable.ts index d6c4c9f79b..3fbcefc6eb 100644 --- a/src/common/vars/application-description.injectable.ts +++ b/src/common/vars/application-description.injectable.ts @@ -3,11 +3,11 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import applicationInformationInjectable from "./application-information.injectable"; +import applicationInformationToken from "./application-information-token.injectable"; const applicationDescriptionInjectable = getInjectable({ id: "application-description", - instantiate: (di) => di.inject(applicationInformationInjectable).description, + instantiate: (di) => di.inject(applicationInformationToken).description, }); export default applicationDescriptionInjectable; diff --git a/src/common/vars/application-information.injectable.ts b/src/common/vars/application-information-injectable.ts similarity index 69% rename from src/common/vars/application-information.injectable.ts rename to src/common/vars/application-information-injectable.ts index 56dfcf9d7e..24274c8967 100644 --- a/src/common/vars/application-information.injectable.ts +++ b/src/common/vars/application-information-injectable.ts @@ -4,14 +4,12 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import packageJson from "../../../package.json"; - -export type ApplicationInformation = Pick & { - build: Partial & { publish?: unknown[] }; -}; +import applicationInformationToken from "./application-information-token.injectable"; const applicationInformationInjectable = getInjectable({ id: "application-information", - instantiate: (): ApplicationInformation => { + injectionToken: applicationInformationToken, + instantiate: () => { const { version, config, productName, build, copyright, description, name } = packageJson; return { version, config, productName, build, copyright, description, name }; diff --git a/src/common/vars/application-information-token.injectable.ts b/src/common/vars/application-information-token.injectable.ts new file mode 100644 index 0000000000..a3c8853949 --- /dev/null +++ b/src/common/vars/application-information-token.injectable.ts @@ -0,0 +1,17 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import { getInjectionToken } from "@ogre-tools/injectable"; +import type packageJson from "../../../package.json"; + +export type ApplicationInformation = Pick & { + build: { publish?: unknown[] }; +}; + +const applicationInformationToken = getInjectionToken({ + id: "application-information-token", +}); + +export default applicationInformationToken; diff --git a/src/common/vars/application-information.global-override-for-injectable.ts b/src/common/vars/application-information.global-override-for-injectable.ts deleted file mode 100644 index 83b9559d73..0000000000 --- a/src/common/vars/application-information.global-override-for-injectable.ts +++ /dev/null @@ -1,25 +0,0 @@ -/** - * Copyright (c) OpenLens Authors. All rights reserved. - * Licensed under MIT License. See LICENSE in root directory for more information. - */ - -import { getGlobalOverride } from "../test-utils/get-global-override"; -import applicationInformationInjectable from "./application-information.injectable"; - -export default getGlobalOverride(applicationInformationInjectable, () => ({ - name: "some-product-name", - productName: "some-product-name", - version: "6.0.0", - build: {}, - config: { - k8sProxyVersion: "0.2.1", - bundledKubectlVersion: "1.23.3", - bundledHelmVersion: "3.7.2", - sentryDsn: "", - contentSecurityPolicy: "script-src 'unsafe-eval' 'self'; frame-src http://*.localhost:*/; img-src * data:", - welcomeRoute: "/welcome", - extensions: [], - }, - copyright: "some-copyright-information", - description: "some-descriptive-text", -})); diff --git a/src/common/vars/application-information.injectable-for-testing.ts b/src/common/vars/application-information.injectable-for-testing.ts new file mode 100644 index 0000000000..a86a40b280 --- /dev/null +++ b/src/common/vars/application-information.injectable-for-testing.ts @@ -0,0 +1,32 @@ +/** + * Copyright (c) OpenLens Authors. All rights reserved. + * Licensed under MIT License. See LICENSE in root directory for more information. + */ + +import { getInjectable } from "@ogre-tools/injectable"; +import applicationInformationToken from "./application-information-token.injectable"; + +const applicationInformationForTestingInjectable = getInjectable({ + id: "application-information-for-testing", + injectionToken: applicationInformationToken, + instantiate: () => ({ + name: "some-product-name", + productName: "some-product-name", + version: "6.0.0", + build: {}, + config: { + k8sProxyVersion: "0.2.1", + bundledKubectlVersion: "1.23.3", + bundledHelmVersion: "3.7.2", + sentryDsn: "", + contentSecurityPolicy: "script-src 'unsafe-eval' 'self'; frame-src http://*.localhost:*/; img-src * data:", + welcomeRoute: "/welcome", + extensions: [], + }, + copyright: "some-copyright-information", + description: "some-descriptive-text", + }), + causesSideEffects: false, +}); + +export default applicationInformationForTestingInjectable; diff --git a/src/common/vars/bundled-kubectl-version.injectable.ts b/src/common/vars/bundled-kubectl-version.injectable.ts index 9542a79834..14c68927d9 100644 --- a/src/common/vars/bundled-kubectl-version.injectable.ts +++ b/src/common/vars/bundled-kubectl-version.injectable.ts @@ -3,11 +3,11 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import applicationInformationInjectable from "./application-information.injectable"; +import applicationInformationToken from "./application-information-token.injectable"; const bundledKubectlVersionInjectable = getInjectable({ id: "bundled-kubectl-version", - instantiate: (di) => di.inject(applicationInformationInjectable).config.bundledKubectlVersion, + instantiate: (di) => di.inject(applicationInformationToken).config.bundledKubectlVersion, }); export default bundledKubectlVersionInjectable; diff --git a/src/common/vars/content-security-policy.injectable.ts b/src/common/vars/content-security-policy.injectable.ts index b6e1e0eb30..022ab98bdf 100644 --- a/src/common/vars/content-security-policy.injectable.ts +++ b/src/common/vars/content-security-policy.injectable.ts @@ -3,11 +3,11 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import applicationInformationInjectable from "./application-information.injectable"; +import applicationInformationToken from "./application-information-token.injectable"; const contentSecurityPolicyInjectable = getInjectable({ id: "content-security-policy", - instantiate: (di) => di.inject(applicationInformationInjectable).config.contentSecurityPolicy, + instantiate: (di) => di.inject(applicationInformationToken).config.contentSecurityPolicy, }); export default contentSecurityPolicyInjectable; diff --git a/src/common/vars/extension-api-version.injectable.ts b/src/common/vars/extension-api-version.injectable.ts index 4f7f4d9930..d4ea571d6d 100644 --- a/src/common/vars/extension-api-version.injectable.ts +++ b/src/common/vars/extension-api-version.injectable.ts @@ -4,12 +4,12 @@ */ import { getInjectable } from "@ogre-tools/injectable"; import { SemVer } from "semver"; -import applicationInformationInjectable from "./application-information.injectable"; +import applicationInformationToken from "./application-information-token.injectable"; const extensionApiVersionInjectable = getInjectable({ id: "extension-api-version", instantiate: (di) => { - const { major, minor, patch } = new SemVer(di.inject(applicationInformationInjectable).version); + const { major, minor, patch } = new SemVer(di.inject(applicationInformationToken).version); return `${major}.${minor}.${patch}`; }, diff --git a/src/common/vars/product-name.injectable.ts b/src/common/vars/product-name.injectable.ts index 910c6afa48..bf825248ad 100644 --- a/src/common/vars/product-name.injectable.ts +++ b/src/common/vars/product-name.injectable.ts @@ -3,11 +3,11 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import applicationInformationInjectable from "./application-information.injectable"; +import applicationInformationToken from "./application-information-token.injectable"; const productNameInjectable = getInjectable({ id: "product-name", - instantiate: (di) => di.inject(applicationInformationInjectable).productName, + instantiate: (di) => di.inject(applicationInformationToken).productName, }); export default productNameInjectable; diff --git a/src/common/vars/sentry-dsn-url.injectable.ts b/src/common/vars/sentry-dsn-url.injectable.ts index e33c2fd0de..75d62ca190 100644 --- a/src/common/vars/sentry-dsn-url.injectable.ts +++ b/src/common/vars/sentry-dsn-url.injectable.ts @@ -3,11 +3,11 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import applicationInformationInjectable from "./application-information.injectable"; +import applicationInformationToken from "./application-information-token.injectable"; const sentryDataSourceNameInjectable = getInjectable({ id: "sentry-data-source-name", - instantiate: (di) => di.inject(applicationInformationInjectable).config.sentryDsn, + instantiate: (di) => di.inject(applicationInformationToken).config.sentryDsn, }); export default sentryDataSourceNameInjectable; diff --git a/src/common/vars/store-migration-version.injectable.ts b/src/common/vars/store-migration-version.injectable.ts index 79ab1578a3..d925f49f31 100644 --- a/src/common/vars/store-migration-version.injectable.ts +++ b/src/common/vars/store-migration-version.injectable.ts @@ -3,11 +3,11 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import applicationInformationInjectable from "./application-information.injectable"; +import applicationInformationToken from "./application-information-token.injectable"; const storeMigrationVersionInjectable = getInjectable({ id: "store-migration-version", - instantiate: (di) => di.inject(applicationInformationInjectable).version, + instantiate: (di) => di.inject(applicationInformationToken).version, }); export default storeMigrationVersionInjectable; diff --git a/src/extensions/extension-discovery/extension-discovery.injectable.ts b/src/extensions/extension-discovery/extension-discovery.injectable.ts index ad146e2fd7..eeb0a99df0 100644 --- a/src/extensions/extension-discovery/extension-discovery.injectable.ts +++ b/src/extensions/extension-discovery/extension-discovery.injectable.ts @@ -27,7 +27,7 @@ import getRelativePathInjectable from "../../common/path/get-relative-path.injec import joinPathsInjectable from "../../common/path/join-paths.injectable"; import removePathInjectable from "../../common/fs/remove-path.injectable"; import homeDirectoryPathInjectable from "../../common/os/home-directory-path.injectable"; -import applicationInformationInjectable from "../../common/vars/application-information.injectable"; +import applicationInformationToken from "../../common/vars/application-information-token.injectable"; import lensResourcesDirInjectable from "../../common/vars/lens-resources-dir.injectable"; const extensionDiscoveryInjectable = getInjectable({ @@ -58,7 +58,7 @@ const extensionDiscoveryInjectable = getInjectable({ getRelativePath: di.inject(getRelativePathInjectable), joinPaths: di.inject(joinPathsInjectable), homeDirectoryPath: di.inject(homeDirectoryPathInjectable), - applicationInformation: di.inject(applicationInformationInjectable), + applicationInformation: di.inject(applicationInformationToken), }), }); diff --git a/src/extensions/extension-discovery/extension-discovery.ts b/src/extensions/extension-discovery/extension-discovery.ts index 511bfba8a9..ec61a9c332 100644 --- a/src/extensions/extension-discovery/extension-discovery.ts +++ b/src/extensions/extension-discovery/extension-discovery.ts @@ -30,7 +30,7 @@ import type { GetDirnameOfPath } from "../../common/path/get-dirname.injectable" import type { GetRelativePath } from "../../common/path/get-relative-path.injectable"; import type { RemovePath } from "../../common/fs/remove-path.injectable"; import type TypedEventEmitter from "typed-emitter"; -import type { ApplicationInformation } from "../../common/vars/application-information.injectable"; +import type { ApplicationInformation } from "../../common/vars/application-information-injectable"; interface Dependencies { readonly extensionLoader: ExtensionLoader; diff --git a/src/features/application-update/main/updating-is-enabled/publish-is-configured/publish-is-configured.injectable.ts b/src/features/application-update/main/updating-is-enabled/publish-is-configured/publish-is-configured.injectable.ts index 4e4b01ef84..964617bc36 100644 --- a/src/features/application-update/main/updating-is-enabled/publish-is-configured/publish-is-configured.injectable.ts +++ b/src/features/application-update/main/updating-is-enabled/publish-is-configured/publish-is-configured.injectable.ts @@ -3,11 +3,11 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ import { getInjectable } from "@ogre-tools/injectable"; -import applicationInformationInjectable from "../../../../../common/vars/application-information.injectable"; +import applicationInformationToken from "../../../../../common/vars/application-information-token.injectable"; const publishIsConfiguredInjectable = getInjectable({ id: "publish-is-configured", - instantiate: (di) => Boolean(di.inject(applicationInformationInjectable).build.publish?.length), + instantiate: (di) => Boolean(di.inject(applicationInformationToken).build.publish?.length), }); export default publishIsConfiguredInjectable; diff --git a/src/main/getDiForUnitTesting.ts b/src/main/getDiForUnitTesting.ts index d8f87d8692..525eeee180 100644 --- a/src/main/getDiForUnitTesting.ts +++ b/src/main/getDiForUnitTesting.ts @@ -80,6 +80,7 @@ import kubectlDownloadingNormalizedArchInjectable from "./kubectl/normalized-arc import initializeClusterManagerInjectable from "./cluster/initialize-manager.injectable"; import addKubeconfigSyncAsEntitySourceInjectable from "./start-main-application/runnables/kube-config-sync/add-source.injectable"; import type { GlobalOverride } from "../common/test-utils/get-global-override"; +import applicationInformationForTestingInjectable from "../common/vars/application-information.injectable-for-testing"; export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {}) { const { @@ -102,6 +103,7 @@ export function getDiForUnitTesting(opts: { doGeneralOverrides?: boolean } = {}) runInAction(() => { registerMobX(di); + di.register(applicationInformationForTestingInjectable); chunk(100)(injectables).forEach(chunkInjectables => { di.register(...chunkInjectables); diff --git a/src/main/routes/files/development.injectable.ts b/src/main/routes/files/development.injectable.ts index dcc6fce649..b632e9151d 100644 --- a/src/main/routes/files/development.injectable.ts +++ b/src/main/routes/files/development.injectable.ts @@ -6,19 +6,17 @@ import { getInjectable } from "@ogre-tools/injectable"; import httpProxy from "http-proxy"; import { webpackDevServerPort } from "../../../../webpack/vars"; import { publicPath } from "../../../common/vars"; -import appNameInjectable from "../../../common/vars/app-name.injectable"; import type { LensApiRequest, RouteResponse } from "../../router/route"; const devStaticFileRouteHandlerInjectable = getInjectable({ id: "dev-static-file-route-handler", - instantiate: (di) => { + instantiate: () => { const proxy = httpProxy.createProxy(); - const appName = di.inject(appNameInjectable); const proxyTarget = `http://127.0.0.1:${webpackDevServerPort}`; return async ({ raw: { req, res }}: LensApiRequest<"/{path*}">): Promise> => { if (req.url === "/" || !req.url) { - req.url = `${publicPath}/${appName}.html`; + req.url = `${publicPath}/index.html`; } else if (!req.url.startsWith("/build/")) { return { statusCode: 404 }; } diff --git a/src/main/routes/files/production.injectable.ts b/src/main/routes/files/production.injectable.ts index b6f9ca5e40..1e4c360138 100644 --- a/src/main/routes/files/production.injectable.ts +++ b/src/main/routes/files/production.injectable.ts @@ -6,7 +6,6 @@ import { getInjectable } from "@ogre-tools/injectable"; import readFileBufferInjectable from "../../../common/fs/read-file-buffer.injectable"; import joinPathsInjectable from "../../../common/path/join-paths.injectable"; import staticFilesDirectoryInjectable from "../../../common/vars/static-files-directory.injectable"; -import appNameInjectable from "../../../common/vars/app-name.injectable"; import type { LensApiRequest } from "../../router/route"; import path from "path"; import type { SupportedFileExtension } from "../../router/router-content-types"; @@ -20,7 +19,6 @@ const prodStaticFileRouteHandlerInjectable = getInjectable({ const readFileBuffer = di.inject(readFileBufferInjectable); const joinPaths = di.inject(joinPathsInjectable); const staticFilesDirectory = di.inject(staticFilesDirectoryInjectable); - const appName = di.inject(appNameInjectable); const logger = di.inject(loggerInjectable); return async ({ params }: LensApiRequest<"/{path*}">) => { @@ -49,7 +47,7 @@ const prodStaticFileRouteHandlerInjectable = getInjectable({ return { statusCode: 404 }; } - filePath = `${publicPath}/${appName}.html`; + filePath = `${publicPath}/index.html`; } } diff --git a/src/main/start-main-application/lens-window/application-window/create-electron-window.injectable.ts b/src/main/start-main-application/lens-window/application-window/create-electron-window.injectable.ts index 5e44c9d3ad..578243c98a 100644 --- a/src/main/start-main-application/lens-window/application-window/create-electron-window.injectable.ts +++ b/src/main/start-main-application/lens-window/application-window/create-electron-window.injectable.ts @@ -13,7 +13,7 @@ import getAbsolutePathInjectable from "../../../../common/path/get-absolute-path import lensResourcesDirInjectable from "../../../../common/vars/lens-resources-dir.injectable"; import isLinuxInjectable from "../../../../common/vars/is-linux.injectable"; import fsInjectable from "../../../../common/fs/fs.injectable"; -import applicationInformationInjectable from "../../../../common/vars/application-information.injectable"; +import applicationInformationToken from "../../../../common/vars/application-information-token.injectable"; export type ElectronWindowTitleBarStyle = "hiddenInset" | "hidden" | "default" | "customButtonsOnHover"; @@ -54,7 +54,7 @@ const createElectronWindowInjectable = getInjectable({ const getAbsolutePath = di.inject(getAbsolutePathInjectable); const lensResourcesDir = di.inject(lensResourcesDirInjectable); const isLinux = di.inject(isLinuxInjectable); - const applicationInformation = di.inject(applicationInformationInjectable); + const applicationInformation = di.inject(applicationInformationToken); return (configuration) => { const applicationWindowState = di.inject( diff --git a/src/renderer/getDiForUnitTesting.tsx b/src/renderer/getDiForUnitTesting.tsx index 6dc7fa010e..284e517a8e 100644 --- a/src/renderer/getDiForUnitTesting.tsx +++ b/src/renderer/getDiForUnitTesting.tsx @@ -51,6 +51,7 @@ import storageSaveDelayInjectable from "./utils/create-storage/storage-save-dela import environmentVariablesInjectable from "../common/utils/environment-variables.injectable"; import type { GlobalOverride } from "../common/test-utils/get-global-override"; import type { PartialDeep } from "type-fest"; +import applicationInformationForTestingInjectable from "../common/vars/application-information.injectable-for-testing"; export const getDiForUnitTesting = ( opts: { doGeneralOverrides?: boolean } = {}, @@ -74,6 +75,8 @@ export const getDiForUnitTesting = ( runInAction(() => { registerMobX(di); + di.register(applicationInformationForTestingInjectable); + chunk(100)(injectables).forEach((chunkInjectables) => { di.register(...chunkInjectables); }); diff --git a/webpack/library-bundle.ts b/webpack/library-bundle.ts index 2cd7430edc..fb6b90e4cd 100644 --- a/webpack/library-bundle.ts +++ b/webpack/library-bundle.ts @@ -17,7 +17,9 @@ const config = [ main: path.resolve(__dirname, "..", "src", "main", "library.ts"), }, output: { - libraryTarget: "commonjs", + library: { + type: "commonjs2", + }, path: path.resolve(buildDir, "library"), }, optimization: { @@ -32,11 +34,33 @@ const config = [ }, { ...renderer, + entry: { + common: path.resolve(__dirname, "..", "src", "common", "library.ts"), + }, + output: { + library: { + type: "commonjs2", + }, + path: path.resolve(buildDir, "library"), + }, + optimization: { + minimize: false, + }, + externals: [ + nodeExternals(), + ], + plugins: [], + }, + { + ...renderer, + name: "lens-app-common", entry: { renderer: path.resolve(__dirname, "..", "src", "renderer", "library.ts"), }, output: { - libraryTarget: "commonjs", + library: { + type: "commonjs2", + }, path: path.resolve(buildDir, "library"), }, optimization: { diff --git a/webpack/library.ts b/webpack/library.ts index b55d5d0922..b9eaf990a0 100644 --- a/webpack/library.ts +++ b/webpack/library.ts @@ -5,16 +5,11 @@ import path from "path"; import type webpack from "webpack"; -import type { WebpackPluginInstance } from "webpack"; -import { DefinePlugin } from "webpack"; import nodeExternals from "webpack-node-externals"; -import ForkTsCheckerPlugin from "fork-ts-checker-webpack-plugin"; -import CircularDependencyPlugin from "circular-dependency-plugin"; import MonacoWebpackPlugin from "monaco-editor-webpack-plugin"; import getTypeScriptLoader from "./get-typescript-loader"; import rendererConfig, { iconsAndImagesWebpackRules } from "./renderer"; -import { appName, assetsFolderName, buildDir, htmlTemplate, isDevelopment, mainDir, publicPath } from "./vars"; -import { platform } from "process"; +import { assetsFolderName, buildDir, htmlTemplate, isDevelopment, mainDir, publicPath } from "./vars"; import HtmlWebpackPlugin from "html-webpack-plugin"; import MiniCssExtractPlugin from "mini-css-extract-plugin"; @@ -29,7 +24,7 @@ const renderer: webpack.Configuration = ({ globalAPI: isDevelopment, }), new HtmlWebpackPlugin({ - filename: `${appName}.html`, + filename: "index.html", template: htmlTemplate, inject: true, hash: true, @@ -73,18 +68,7 @@ const main: webpack.Configuration = ({ ...iconsAndImagesWebpackRules(), ], }, - plugins: [ - new DefinePlugin({ - CONTEXT_MATCHER_FOR_NON_FEATURES: `/\\.injectable(\\.${platform})?\\.tsx?$/`, - CONTEXT_MATCHER_FOR_FEATURES: `/\\/(main|common)\\/.+\\.injectable(\\.${platform})?\\.tsx?$/`, - }), - new ForkTsCheckerPlugin(), - new CircularDependencyPlugin({ - cwd: __dirname, - exclude: /node_modules/, - failOnError: true, - }) as unknown as WebpackPluginInstance, - ], + plugins: [], }); export { diff --git a/webpack/renderer.ts b/webpack/renderer.ts index bf721893ae..6545a74ee0 100755 --- a/webpack/renderer.ts +++ b/webpack/renderer.ts @@ -103,7 +103,7 @@ export function webpackLensRenderer({ showVars = true } = {}): webpack.Configura }), new HtmlWebpackPlugin({ - filename: `${appName}.html`, + filename: "index.html", template: htmlTemplate, inject: true, hash: true,