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

Extract message-bridge to separate NPM package to prevent dev dependencies being in the production bundle

Signed-off-by: Janne Savolainen <janne.savolainen@live.fi>
This commit is contained in:
Janne Savolainen 2023-03-21 10:15:22 +02:00
parent cfb2bc8a5a
commit 5943a21671
No known key found for this signature in database
GPG Key ID: 8C6CFB2FFFE8F68A
15 changed files with 110 additions and 27 deletions

21
package-lock.json generated
View File

@ -4725,6 +4725,10 @@
"resolved": "packages/technical-features/messaging/agnostic",
"link": true
},
"node_modules/@k8slens/messaging-fake-bridge": {
"resolved": "packages/technical-features/messaging/message-bridge-fake",
"link": true
},
"node_modules/@k8slens/messaging-for-main": {
"resolved": "packages/technical-features/messaging/main",
"link": true
@ -37245,6 +37249,23 @@
"lodash": "^4.17.21"
}
},
"packages/technical-features/messaging/message-bridge-fake": {
"version": "1.0.0-alpha.1",
"license": "MIT",
"devDependencies": {
"@async-fn/jest": "^1.6.4",
"@k8slens/eslint-config": "^6.5.0-alpha.1",
"@k8slens/feature-core": "6.5.0-alpha.1",
"@ogre-tools/injectable-extension-for-mobx": "^15.1.2",
"mobx": "^6.7.0"
},
"peerDependencies": {
"@k8slens/messaging": "^1.0.0-alpha.1",
"@ogre-tools/fp": "^15.1.2",
"@ogre-tools/injectable": "^15.1.2",
"lodash": "^4.17.21"
}
},
"packages/technical-features/messaging/renderer": {
"name": "@k8slens/messaging-for-renderer",
"version": "1.0.0-alpha.1",

View File

@ -189,6 +189,7 @@
},
"devDependencies": {
"@async-fn/jest": "1.6.4",
"@k8slens/messaging-fake-bridge": "^1.0.0-alpha.1",
"@material-ui/core": "^4.12.3",
"@material-ui/icons": "^4.11.2",
"@material-ui/lab": "^4.0.0-alpha.60",

View File

@ -70,7 +70,8 @@ import { registerFeature } from "@k8slens/feature-core";
import { applicationFeatureForElectronMain, testUtils as applicationForElectronTestUtils } from "@k8slens/application-for-electron-main";
import { applicationFeature, startApplicationInjectionToken } from "@k8slens/application";
import { testUsingFakeTime } from "../../../test-utils/use-fake-time";
import { sendMessageToChannelInjectionToken, testUtils as messagingTestUtils } from "@k8slens/messaging";
import { sendMessageToChannelInjectionToken } from "@k8slens/messaging";
import { getMessageBridgeFake } from "@k8slens/messaging-fake-bridge";
type MainDiCallback = (container: { mainDi: DiContainer }) => void | Promise<void>;
type WindowDiCallback = (container: { windowDi: DiContainer }) => void | Promise<void>;
@ -179,7 +180,7 @@ export const getApplicationBuilder = () => {
testUsingFakeTime();
const messageBridgeFake = messagingTestUtils.getMessageBridgeFake();
const messageBridgeFake = getMessageBridgeFake();
messageBridgeFake.involve(mainDi);

View File

@ -4,7 +4,7 @@ import { createContainer, DiContainer, getInjectable } from "@ogre-tools/injecta
import {
getMessageBridgeFake,
MessageBridgeFake,
} from "../../unit-testing/get-message-bridge-fake/get-message-bridge-fake";
} from "@k8slens/messaging-fake-bridge";
import { startApplicationInjectionToken } from "@k8slens/application";
import {
computed,

View File

@ -27,6 +27,7 @@ export type { SendMessageToChannel } from "./message/message-to-channel-injectio
export type {
GetMessageChannelListenerInfo,
MessageChannel,
MessageChannelHandler,
MessageChannelListener,
} from "./message/message-channel-listener-injection-token";

View File

@ -1,2 +1 @@
export { messagingFeatureForUnitTesting } from "./feature";
export { getMessageBridgeFake } from "./get-message-bridge-fake/get-message-bridge-fake";

View File

@ -0,0 +1,6 @@
{
"extends": "@k8slens/eslint-config/eslint",
"parserOptions": {
"project": "./tsconfig.json"
}
}

View File

@ -0,0 +1 @@
"@k8slens/eslint-config/prettier"

View File

@ -0,0 +1,3 @@
export type { MessageBridgeFake } from "./src/get-message-bridge-fake/get-message-bridge-fake";
export { getMessageBridgeFake } from "./src/get-message-bridge-fake/get-message-bridge-fake";

View File

@ -0,0 +1 @@
module.exports = require("@k8slens/jest").monorepoPackageConfig(__dirname).configForReact;

View File

@ -0,0 +1,43 @@
{
"name": "@k8slens/messaging-fake-bridge",
"private": false,
"version": "1.0.0-alpha.1",
"description": "Fake implementation to bridge multiple dependency injection containers.",
"type": "commonjs",
"files": [
"dist"
],
"repository": {
"type": "git",
"url": "git+https://github.com/lensapp/lens.git"
},
"main": "dist/index.js",
"types": "dist/index.d.ts",
"author": {
"name": "OpenLens Authors",
"email": "info@k8slens.dev"
},
"license": "MIT",
"homepage": "https://github.com/lensapp/lens",
"scripts": {
"build": "webpack",
"dev": "webpack --mode=development --watch",
"test:unit": "jest --coverage --runInBand",
"lint:fix": "lens-lint --fix",
"lint": "lens-lint"
},
"peerDependencies": {
"@k8slens/messaging": "^1.0.0-alpha.1",
"@ogre-tools/fp": "^15.1.2",
"@ogre-tools/injectable": "^15.1.2",
"lodash": "^4.17.21"
},
"devDependencies": {
"@async-fn/jest": "^1.6.4",
"@k8slens/feature-core": "6.5.0-alpha.1",
"@k8slens/eslint-config": "^6.5.0-alpha.1",
"@ogre-tools/injectable-extension-for-mobx": "^15.1.2",
"mobx": "^6.7.0"
}
}

View File

@ -1,24 +1,23 @@
import { createContainer, DiContainer, Injectable } from "@ogre-tools/injectable";
import asyncFn, { AsyncFnMock } from "@async-fn/jest";
import { registerFeature } from "@k8slens/feature-core/src/register-feature";
import { registerFeature } from "@k8slens/feature-core";
import {
getMessageChannel,
getMessageChannelListenerInjectable,
getRequestChannel,
getRequestChannelListenerInjectable,
MessageChannel,
} from "../../actual/message/message-channel-listener-injection-token";
import { sendMessageToChannelInjectionToken } from "../../actual/message/message-to-channel-injection-token";
testUtils,
RequestChannel,
requestFromChannelInjectionToken,
sendMessageToChannelInjectionToken,
} from "@k8slens/messaging";
import { registerMobX } from "@ogre-tools/injectable-extension-for-mobx";
import { runInAction } from "mobx";
import {
getRequestChannelListenerInjectable,
RequestChannel,
} from "../../actual/request/request-channel-listener-injection-token";
import { requestFromChannelInjectionToken } from "../../actual/request/request-from-channel-injection-token";
import { getPromiseStatus } from "@k8slens/test-utils";
import { getMessageBridgeFake } from "./get-message-bridge-fake";
import { getMessageChannel } from "../../actual/message/get-message-channel";
import { getRequestChannel } from "../../actual/request/get-request-channel";
import { startApplicationInjectionToken } from "@k8slens/application";
import { messagingFeatureForUnitTesting } from "../feature";
type SomeMessageChannel = MessageChannel<string>;
type SomeRequestChannel = RequestChannel<string, number>;
@ -58,9 +57,11 @@ const someRequestChannelWithoutListeners: SomeRequestChannel = {
registerMobX(someDiWithoutListeners);
runInAction(() => {
registerFeature(someDi1, messagingFeatureForUnitTesting);
registerFeature(someDi2, messagingFeatureForUnitTesting);
registerFeature(someDiWithoutListeners, messagingFeatureForUnitTesting);
const feature = testUtils.messagingFeatureForUnitTesting;
registerFeature(someDi1, feature);
registerFeature(someDi2, feature);
registerFeature(someDiWithoutListeners, feature);
});
messageBridgeFake.involve(someDi1, someDi2, someDiWithoutListeners);

View File

@ -1,16 +1,16 @@
import type { DiContainer } from "@ogre-tools/injectable";
import type { Channel } from "../../actual/channel.no-coverage";
import type { MessageChannelHandler } from "../../actual/message/message-channel-listener-injection-token";
import type { RequestChannelHandler } from "../../actual/request/request-channel-listener-injection-token";
import { sendMessageToChannelInjectionToken } from "../../actual/message/message-to-channel-injection-token";
import { enlistMessageChannelListenerInjectionToken } from "../../actual/message/enlist-message-channel-listener-injection-token";
import { pipeline } from "@ogre-tools/fp";
import { filter, map } from "lodash/fp";
import type { Channel, MessageChannelHandler, RequestChannelHandler } from "@k8slens/messaging";
import {
enlistMessageChannelListenerInjectionToken,
enlistRequestChannelListenerInjectionToken,
RequestFromChannel,
requestFromChannelInjectionToken,
} from "../../actual/request/request-from-channel-injection-token";
import { enlistRequestChannelListenerInjectionToken } from "../../actual/request/enlist-request-channel-listener-injection-token";
sendMessageToChannelInjectionToken,
} from "@k8slens/messaging";
import { pipeline } from "@ogre-tools/fp";
import { filter, map } from "lodash/fp";
import asyncFn, { AsyncFnMock } from "@async-fn/jest";
export type MessageBridgeFake = {

View File

@ -0,0 +1,4 @@
{
"extends": "@k8slens/typescript/config/base.json",
"include": ["**/*.ts", "**/*.tsx"]
}

View File

@ -0,0 +1 @@
module.exports = require("@k8slens/webpack").configForNode;