From 3651a824d8bb6195eeabe369e3452e3eb867fa3f Mon Sep 17 00:00:00 2001 From: Iku-turso Date: Tue, 16 May 2023 14:36:18 +0300 Subject: [PATCH 1/6] feat: Expose different ways to log as tokens, and add unit tests Co-authored-by: Janne Savolainen Signed-off-by: Iku-turso --- packages/logger/index.ts | 9 +++ packages/logger/package.json | 4 +- packages/logger/src/logger.injectable.ts | 70 ++++++++++++++++++++---- packages/logger/src/logger.test.ts | 38 +++++++++++++ 4 files changed, 109 insertions(+), 12 deletions(-) create mode 100644 packages/logger/src/logger.test.ts diff --git a/packages/logger/index.ts b/packages/logger/index.ts index cd0718e71e7b..40bb2023b7ce 100644 --- a/packages/logger/index.ts +++ b/packages/logger/index.ts @@ -3,6 +3,15 @@ * Licensed under MIT License. See LICENSE in root directory for more information. */ +export type { LogFunction } from "./src/logger.injectable"; +export { + logDebugInjectionToken, + logErrorInjectionToken, + logInfoInjectionToken, + logSillyInjectionToken, + logWarningInjectionToken, +} from "./src/logger.injectable"; + export type { Logger } from "./src/logger"; export { loggerInjectionToken } from "./src/logger.injectable"; export { prefixedLoggerInjectable } from "./src/prefixed-logger.injectable"; diff --git a/packages/logger/package.json b/packages/logger/package.json index c9cbbfe222c5..30a0a2e59502 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -25,6 +25,7 @@ "homepage": "https://github.com/lensapp/lens", "scripts": { "build": "webpack", + "test:unit": "jest --coverage --runInBand", "lint": "lens-lint", "lint:fix": "lens-lint --fix" }, @@ -36,6 +37,7 @@ }, "devDependencies": { "@k8slens/eslint-config": "6.5.0-alpha.1", - "@k8slens/react-testing-library-discovery": "^1.0.0-alpha.4" + "@k8slens/react-testing-library-discovery": "^1.0.0-alpha.4", + "@k8slens/jest": "^6.5.0-alpha.5" } } diff --git a/packages/logger/src/logger.injectable.ts b/packages/logger/src/logger.injectable.ts index 605a37b1e41c..816d76fa39d1 100644 --- a/packages/logger/src/logger.injectable.ts +++ b/packages/logger/src/logger.injectable.ts @@ -12,18 +12,66 @@ export const loggerInjectionToken = getInjectionToken({ export const loggerInjectable = getInjectable({ id: "logger", - instantiate: (di): Logger => { - const baseLogger = di.inject(winstonLoggerInjectable); - - return { - debug: (message, ...data) => baseLogger.debug(message, ...data), - info: (message, ...data) => baseLogger.info(message, ...data), - warn: (message, ...data) => baseLogger.warn(message, ...data), - error: (message, ...data) => baseLogger.error(message, ...data), - silly: (message, ...data) => baseLogger.silly(message, ...data), - }; - }, + instantiate: (di): Logger => ({ + debug: di.inject(logDebugInjectionToken), + info: di.inject(logInfoInjectionToken), + warn: di.inject(logWarningInjectionToken), + error: di.inject(logErrorInjectionToken), + silly: di.inject(logSillyInjectionToken), + }), decorable: false, injectionToken: loggerInjectionToken, }); + +export type LogFunction = (message: string, ...data: any[]) => void; + +export const logDebugInjectionToken = getInjectionToken({ + id: "log-debug-injection-token", +}); + +export const logInfoInjectionToken = getInjectionToken({ + id: "log-info-injection-token", +}); + +export const logWarningInjectionToken = getInjectionToken({ + id: "log-warning-injection-token", +}); + +export const logErrorInjectionToken = getInjectionToken({ + id: "log-error-injection-token", +}); + +export const logSillyInjectionToken = getInjectionToken({ + id: "log-silly-injection-token", +}); + +export const logDebugInjectable = getInjectable({ + id: "log-debug", + instantiate: (di): LogFunction => di.inject(winstonLoggerInjectable).debug, + injectionToken: logDebugInjectionToken, +}); + +export const logInfoInjectable = getInjectable({ + id: "log-info", + instantiate: (di): LogFunction => di.inject(winstonLoggerInjectable).info, + injectionToken: logInfoInjectionToken, +}); + +export const logWarningInjectable = getInjectable({ + id: "log-warning", + instantiate: (di): LogFunction => di.inject(winstonLoggerInjectable).warn, + injectionToken: logWarningInjectionToken, +}); + +export const logErrorInjectable = getInjectable({ + id: "log-error", + instantiate: (di): LogFunction => di.inject(winstonLoggerInjectable).error, + injectionToken: logErrorInjectionToken, +}); + +export const logSillyInjectable = getInjectable({ + id: "log-silly", + instantiate: (di): LogFunction => di.inject(winstonLoggerInjectable).silly, + injectionToken: logSillyInjectionToken, +}); diff --git a/packages/logger/src/logger.test.ts b/packages/logger/src/logger.test.ts new file mode 100644 index 000000000000..85399d029337 --- /dev/null +++ b/packages/logger/src/logger.test.ts @@ -0,0 +1,38 @@ +import { createContainer } from "@ogre-tools/injectable"; +import { registerFeature } from "@k8slens/feature-core"; +import { loggerFeature } from "./feature"; +import { winstonLoggerInjectable } from "./winston-logger.injectable"; +import { + logDebugInjectionToken, logErrorInjectionToken, + logInfoInjectionToken, + logSillyInjectionToken, logWarningInjectionToken, +} from "./logger.injectable"; + +describe("logger", () => { + [ + { scenario: "debug", injectionToken: logDebugInjectionToken }, + { scenario: "info", injectionToken: logInfoInjectionToken }, + { scenario: "warn", injectionToken: logWarningInjectionToken }, + { scenario: "error", injectionToken: logErrorInjectionToken }, + { scenario: "silly", injectionToken: logSillyInjectionToken }, + ].forEach(({ scenario, injectionToken }) => { + it(`when logging "${scenario}", does so`, () => { + const di = createContainer("irrelevant"); + + registerFeature(di, loggerFeature); + + const winstonLoggerStub = { [scenario]: jest.fn() } as any; + + di.override(winstonLoggerInjectable, () => winstonLoggerStub); + + const logScenario = di.inject(injectionToken); + + logScenario("some-message", "some-data"); + + expect(winstonLoggerStub[scenario]).toHaveBeenCalledWith( + "some-message", + "some-data" + ); + }); + }); +}); From b8a81c698bf82b4eb7823cff29c20479366d9900 Mon Sep 17 00:00:00 2001 From: Iku-turso Date: Tue, 16 May 2023 15:13:14 +0300 Subject: [PATCH 2/6] chore: Bump ogre-tools to permit Feature-specific logging prefixes Co-authored-by: Janne Savolainen Signed-off-by: Iku-turso --- open-lens/package.json | 10 +++++----- package.json | 2 +- .../keyboard-shortcuts/package.json | 8 ++++---- packages/cluster-settings/package.json | 2 +- packages/core/package.json | 12 ++++++------ packages/infrastructure/webpack/package.json | 10 +++++----- packages/kube-object/package.json | 2 +- packages/kubectl-versions/package.json | 2 +- packages/legacy-global-di/package.json | 2 +- packages/list-layout/package.json | 2 +- packages/logger/package.json | 6 ++++-- packages/metrics/package.json | 2 +- packages/routing/package.json | 8 ++++---- .../application/agnostic/package.json | 6 +++--- .../application/electron-main/package.json | 6 +++--- .../application/legacy-extensions/package.json | 2 +- .../technical-features/feature-core/package.json | 2 +- .../messaging/agnostic/package.json | 6 +++--- .../messaging/computed-channel/package.json | 8 ++++---- .../messaging/electron/main/package.json | 6 +++--- .../messaging/electron/renderer/package.json | 4 ++-- .../messaging/message-bridge-fake/package.json | 6 +++--- .../react-application/package.json | 10 +++++----- packages/ui-components/error-boundary/package.json | 4 ++-- packages/ui-components/resizing-anchor/package.json | 6 +++--- packages/utility-features/run-many/package.json | 4 ++-- packages/utility-features/test-utils/package.json | 4 ++-- 27 files changed, 72 insertions(+), 70 deletions(-) diff --git a/open-lens/package.json b/open-lens/package.json index 3661bdf916bf..1e6b844e0dcc 100644 --- a/open-lens/package.json +++ b/open-lens/package.json @@ -199,11 +199,11 @@ "@k8slens/run-many": "^1.0.0-alpha.7", "@k8slens/startable-stoppable": "^1.0.0-alpha.6", "@k8slens/utilities": "^1.0.0-alpha.6", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", - "@ogre-tools/injectable-extension-for-mobx": "^15.8.1", - "@ogre-tools/injectable-react": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "@ogre-tools/injectable-extension-for-mobx": "^16.1.0", + "@ogre-tools/injectable-react": "^16.1.0", "mobx": "^6.9.0" }, "devDependencies": { diff --git a/package.json b/package.json index 07ee4000d7f3..24532265bcd9 100644 --- a/package.json +++ b/package.json @@ -40,7 +40,7 @@ "@types/react": "^17" }, "devDependencies": { - "@ogre-tools/linkable": "^15.8.1", + "@ogre-tools/linkable": "^16.1.0", "adr": "^1.4.3", "cross-env": "^7.0.3", "lerna": "^6.6.1", diff --git a/packages/business-features/keyboard-shortcuts/package.json b/packages/business-features/keyboard-shortcuts/package.json index c18d4aa492df..00f49c0d99a3 100644 --- a/packages/business-features/keyboard-shortcuts/package.json +++ b/packages/business-features/keyboard-shortcuts/package.json @@ -33,10 +33,10 @@ "peerDependencies": { "@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/react-application": "^1.0.0-alpha.0", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", - "@ogre-tools/injectable-react": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "@ogre-tools/injectable-react": "^16.1.0", "lodash": "^4.17.21", "react": "^17 || ^18" }, diff --git a/packages/cluster-settings/package.json b/packages/cluster-settings/package.json index 6b4a3fa8e43d..4a6117a57c64 100644 --- a/packages/cluster-settings/package.json +++ b/packages/cluster-settings/package.json @@ -23,6 +23,6 @@ "rimraf": "^4.4.1" }, "peerDependencies": { - "@ogre-tools/injectable": "^15.8.1" + "@ogre-tools/injectable": "^16.1.0" } } diff --git a/packages/core/package.json b/packages/core/package.json index c374a80ba1dc..2c7173196343 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -188,7 +188,7 @@ "@async-fn/jest": "1.6.4", "@k8slens/messaging-fake-bridge": "^1.0.0-alpha.7", "@k8slens/react-testing-library-discovery": "^1.0.0-alpha.4", - "@ogre-tools/linkable": "^15.8.1", + "@ogre-tools/linkable": "^16.1.0", "@sentry/types": "^6.19.7", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.53", @@ -311,11 +311,11 @@ "@k8slens/test-utils": "^1.0.0-alpha.3", "@k8slens/tooltip": "^1.0.0-alpha.5", "@k8slens/utilities": "^1.0.0-alpha.1", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", - "@ogre-tools/injectable-extension-for-mobx": "^15.8.1", - "@ogre-tools/injectable-react": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "@ogre-tools/injectable-extension-for-mobx": "^16.1.0", + "@ogre-tools/injectable-react": "^16.1.0", "mobx": "^6.9.0", "mobx-observable-history": "^2.0.3", "mobx-react": "^7.6.0", diff --git a/packages/infrastructure/webpack/package.json b/packages/infrastructure/webpack/package.json index b2721b7dda7f..7568b694ee8a 100644 --- a/packages/infrastructure/webpack/package.json +++ b/packages/infrastructure/webpack/package.json @@ -25,7 +25,7 @@ "test:unit": "jest --coverage --runInBand" }, "dependencies": { - "@ogre-tools/linkable": "^15.8.1", + "@ogre-tools/linkable": "^16.1.0", "@types/webpack-env": "^1.18.0", "css-loader": "^6.7.2", "fork-ts-checker-webpack-plugin": "^7.3.0", @@ -40,15 +40,15 @@ "webpack-cli": "^4.10.0" }, "peerDependencies": { - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", "lodash": "^4.17.21" }, "devDependencies": { "@async-fn/jest": "^1.6.4", "@k8slens/typescript": "^6.5.0-alpha.3", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.9.0", - "@ogre-tools/test-utils": "^15.8.1", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "@ogre-tools/test-utils": "^16.1.0", "ts-node": "^10.9.1", "webpack-node-externals": "^3.0.0" }, diff --git a/packages/kube-object/package.json b/packages/kube-object/package.json index c33f47011a6e..3906e47e3764 100644 --- a/packages/kube-object/package.json +++ b/packages/kube-object/package.json @@ -32,7 +32,7 @@ }, "peerDependencies": { "@k8slens/utilities": "^1.0.0-alpha.2", - "@ogre-tools/injectable": "^15.8.1", + "@ogre-tools/injectable": "^16.1.0", "auto-bind": "^4.0.0", "moment": "^2.29.4", "rfc6902": "^5.0.1", diff --git a/packages/kubectl-versions/package.json b/packages/kubectl-versions/package.json index cb9cf60722ea..636fa3feaddd 100644 --- a/packages/kubectl-versions/package.json +++ b/packages/kubectl-versions/package.json @@ -27,7 +27,7 @@ "test": "jest --coverage --runInBand" }, "peerDependencies": { - "@ogre-tools/injectable": "^15.8.1" + "@ogre-tools/injectable": "^16.1.0" }, "devDependencies": { "@k8slens/webpack": "^6.5.0-alpha.8", diff --git a/packages/legacy-global-di/package.json b/packages/legacy-global-di/package.json index ebb56e994d90..9aa760e10e52 100644 --- a/packages/legacy-global-di/package.json +++ b/packages/legacy-global-di/package.json @@ -31,7 +31,7 @@ "lint:fix": "lens-lint --fix" }, "peerDependencies": { - "@ogre-tools/injectable": "^15.8.1" + "@ogre-tools/injectable": "^16.1.0" }, "devDependencies": { "@k8slens/eslint-config": "^6.5.0-alpha.3", diff --git a/packages/list-layout/package.json b/packages/list-layout/package.json index 82066e385978..f3c7a0a63969 100644 --- a/packages/list-layout/package.json +++ b/packages/list-layout/package.json @@ -34,7 +34,7 @@ "peerDependencies": { "@k8slens/kube-object": "^1.0.0-alpha.1", "@k8slens/utilities": "^1.0.0-alpha.3", - "@ogre-tools/injectable": "^15.8.1", + "@ogre-tools/injectable": "^16.1.0", "react": "^17.0.2" }, "devDependencies": { diff --git a/packages/logger/package.json b/packages/logger/package.json index 30a0a2e59502..94c1cc2f1251 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -31,8 +31,10 @@ }, "peerDependencies": { "@k8slens/feature-core": "^6.5.0-alpha.0", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.3.0", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "lodash": "^4.17.21", "winston": "^3.8.2" }, "devDependencies": { diff --git a/packages/metrics/package.json b/packages/metrics/package.json index 79a6a04dea44..3933d62659c4 100644 --- a/packages/metrics/package.json +++ b/packages/metrics/package.json @@ -33,7 +33,7 @@ }, "peerDependencies": { "@k8slens/kube-object": "^1.0.0-alpha.1", - "@ogre-tools/injectable": "^15.8.1", + "@ogre-tools/injectable": "^16.1.0", "react": "^17.0.2" }, "devDependencies": { diff --git a/packages/routing/package.json b/packages/routing/package.json index 5ba04890dbe3..7efe49872bce 100644 --- a/packages/routing/package.json +++ b/packages/routing/package.json @@ -31,10 +31,10 @@ "peerDependencies": { "@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/react-application": "^1.0.0-alpha.0", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", - "@ogre-tools/injectable-react": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "@ogre-tools/injectable-react": "^16.1.0", "auto-bind": "^4.0.0", "history": "^4.10.1", "lodash": "^4.17.21", diff --git a/packages/technical-features/application/agnostic/package.json b/packages/technical-features/application/agnostic/package.json index 0453c3167048..43760779663a 100644 --- a/packages/technical-features/application/agnostic/package.json +++ b/packages/technical-features/application/agnostic/package.json @@ -34,9 +34,9 @@ "@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/logger": "^1.0.0-alpha.5", "@k8slens/run-many": "^1.0.0-alpha.1", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "lodash": "^4.17.15" }, "devDependencies": { diff --git a/packages/technical-features/application/electron-main/package.json b/packages/technical-features/application/electron-main/package.json index 2b88316d6f67..355575ff1883 100644 --- a/packages/technical-features/application/electron-main/package.json +++ b/packages/technical-features/application/electron-main/package.json @@ -34,8 +34,8 @@ "@k8slens/application": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/run-many": "^1.0.0-alpha.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "electron": "^22.3.3", "lodash": "^4.17.21" }, @@ -43,6 +43,6 @@ "@async-fn/jest": "^1.6.4", "@k8slens/eslint-config": "^6.5.0-alpha.3", "@k8slens/webpack": "^6.5.0-alpha.8", - "@ogre-tools/test-utils": "^15.8.1" + "@ogre-tools/test-utils": "^16.1.0" } } diff --git a/packages/technical-features/application/legacy-extensions/package.json b/packages/technical-features/application/legacy-extensions/package.json index 8926153fa26d..59d5ac785d7f 100644 --- a/packages/technical-features/application/legacy-extensions/package.json +++ b/packages/technical-features/application/legacy-extensions/package.json @@ -30,7 +30,7 @@ "lint:fix": "lens-lint --fix" }, "peerDependencies": { - "@ogre-tools/injectable": "^15.8.1" + "@ogre-tools/injectable": "^16.1.0" }, "devDependencies": { "@k8slens/eslint-config": "^6.5.0-alpha.3", diff --git a/packages/technical-features/feature-core/package.json b/packages/technical-features/feature-core/package.json index dbe559e48b56..be0ccfb7bdbf 100644 --- a/packages/technical-features/feature-core/package.json +++ b/packages/technical-features/feature-core/package.json @@ -31,7 +31,7 @@ "lint:fix": "lens-lint --fix" }, "peerDependencies": { - "@ogre-tools/injectable": "^15.8.1" + "@ogre-tools/injectable": "^16.1.0" }, "devDependencies": { "@k8slens/eslint-config": "^6.5.0-alpha.3", diff --git a/packages/technical-features/messaging/agnostic/package.json b/packages/technical-features/messaging/agnostic/package.json index e3198aba3a31..ec2db38cf939 100644 --- a/packages/technical-features/messaging/agnostic/package.json +++ b/packages/technical-features/messaging/agnostic/package.json @@ -34,9 +34,9 @@ "@k8slens/application": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/startable-stoppable": "^1.0.0-alpha.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", - "@ogre-tools/injectable-extension-for-mobx": "^15.8.1", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "@ogre-tools/injectable-extension-for-mobx": "^16.1.0", "lodash": "^4.17.21", "mobx": "^6.7.0" }, diff --git a/packages/technical-features/messaging/computed-channel/package.json b/packages/technical-features/messaging/computed-channel/package.json index 78f95b068360..2b17f52d7e4f 100644 --- a/packages/technical-features/messaging/computed-channel/package.json +++ b/packages/technical-features/messaging/computed-channel/package.json @@ -34,10 +34,10 @@ "@k8slens/application": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/messaging": "^1.0.0-alpha.1", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", - "@ogre-tools/injectable-extension-for-mobx": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "@ogre-tools/injectable-extension-for-mobx": "^16.1.0", "lodash": "^4.17.21", "mobx": "^6.8.0" }, diff --git a/packages/technical-features/messaging/electron/main/package.json b/packages/technical-features/messaging/electron/main/package.json index 12b4ca65e3eb..7a0f8064526a 100644 --- a/packages/technical-features/messaging/electron/main/package.json +++ b/packages/technical-features/messaging/electron/main/package.json @@ -34,9 +34,9 @@ "@k8slens/application": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/messaging": "^1.0.0-alpha.1", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "electron": "^22.3.3", "lodash": "^4.17.21" }, diff --git a/packages/technical-features/messaging/electron/renderer/package.json b/packages/technical-features/messaging/electron/renderer/package.json index 3ae798cb2719..8d67c335ef69 100644 --- a/packages/technical-features/messaging/electron/renderer/package.json +++ b/packages/technical-features/messaging/electron/renderer/package.json @@ -36,8 +36,8 @@ "@k8slens/messaging": "^1.0.0-alpha.1", "@k8slens/run-many": "^1.0.0-alpha.1", "@k8slens/startable-stoppable": "^1.0.0-alpha.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "electron": "^22.3.3", "lodash": "^4.17.21" }, diff --git a/packages/technical-features/messaging/message-bridge-fake/package.json b/packages/technical-features/messaging/message-bridge-fake/package.json index 4cfd499e08a0..9cdbb6bb36a6 100644 --- a/packages/technical-features/messaging/message-bridge-fake/package.json +++ b/packages/technical-features/messaging/message-bridge-fake/package.json @@ -34,9 +34,9 @@ "@async-fn/jest": "^1.6.4", "@k8slens/feature-core": "^6.5.0-alpha.2", "@k8slens/messaging": "^1.0.0-alpha.1", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-mobx": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-mobx": "^16.1.0", "lodash": "^4.17.21", "mobx": "^6.9.0" }, diff --git a/packages/technical-features/react-application/package.json b/packages/technical-features/react-application/package.json index ed065c77c7fd..29b19f2aed49 100644 --- a/packages/technical-features/react-application/package.json +++ b/packages/technical-features/react-application/package.json @@ -33,11 +33,11 @@ "peerDependencies": { "@k8slens/application": "^6.5.0-alpha.2", "@k8slens/feature-core": "^6.5.0-alpha.0", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", - "@ogre-tools/injectable-extension-for-mobx": "^15.8.1", - "@ogre-tools/injectable-react": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "@ogre-tools/injectable-extension-for-mobx": "^16.1.0", + "@ogre-tools/injectable-react": "^16.1.0", "lodash": "^4.17.15", "mobx": "^6.8.0", "mobx-react": "^7.6.0", diff --git a/packages/ui-components/error-boundary/package.json b/packages/ui-components/error-boundary/package.json index 73de326f44a0..227d3677c8c6 100644 --- a/packages/ui-components/error-boundary/package.json +++ b/packages/ui-components/error-boundary/package.json @@ -36,8 +36,8 @@ "@k8slens/button": "^1.0.0-alpha.5", "@k8slens/routing": "^1.0.0-alpha.5", "@k8slens/utilities": "^1.0.0-alpha.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-react": "^15.8.1", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-react": "^16.1.0", "auto-bind": "^4.0.0", "history": "^4.10.1", "lodash": "^4.17.21", diff --git a/packages/ui-components/resizing-anchor/package.json b/packages/ui-components/resizing-anchor/package.json index 1fe18d07dee2..92cf9ee94ca3 100644 --- a/packages/ui-components/resizing-anchor/package.json +++ b/packages/ui-components/resizing-anchor/package.json @@ -35,9 +35,9 @@ "peerDependencies": { "@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/utilities": "^1.0.0-alpha.1", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "auto-bind": "^4.0.0", "lodash": "^4.17.21", "mobx": "^6.8.0", diff --git a/packages/utility-features/run-many/package.json b/packages/utility-features/run-many/package.json index 01790c659bfd..d306659c2f12 100644 --- a/packages/utility-features/run-many/package.json +++ b/packages/utility-features/run-many/package.json @@ -27,8 +27,8 @@ "peerDependencies": { "@k8slens/test-utils": "^1.0.0-alpha.3", "@k8slens/utilities": "^1.0.0-alpha.1", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", "type-fest": "^2.19.0", "typed-emitter": "^1.4.0", "uuid": "^8.3.2" diff --git a/packages/utility-features/test-utils/package.json b/packages/utility-features/test-utils/package.json index 640318df19b2..29d890464426 100644 --- a/packages/utility-features/test-utils/package.json +++ b/packages/utility-features/test-utils/package.json @@ -24,8 +24,8 @@ "build": "lens-webpack-build" }, "peerDependencies": { - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-react": "^15.8.1", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-react": "^16.1.0", "@testing-library/react": "^12.1.5", "lodash": "^4.17.21", "mobx": "^6.8.0", From 4c7177b0833e8115e2d1d79091496284ee7b1b60 Mon Sep 17 00:00:00 2001 From: Iku-turso Date: Tue, 16 May 2023 15:15:31 +0300 Subject: [PATCH 3/6] feat: Implement automatic Feature-specific prefixing for logging Co-authored-by: Janne Savolainen Signed-off-by: Iku-turso --- packages/logger/src/logger.injectable.ts | 51 +++++++++++++++++++++--- packages/logger/src/logger.test.ts | 48 ++++++++++++++++++++-- 2 files changed, 89 insertions(+), 10 deletions(-) diff --git a/packages/logger/src/logger.injectable.ts b/packages/logger/src/logger.injectable.ts index 816d76fa39d1..d59bfe2ceb92 100644 --- a/packages/logger/src/logger.injectable.ts +++ b/packages/logger/src/logger.injectable.ts @@ -2,9 +2,16 @@ * Copyright (c) OpenLens Authors. All rights reserved. * Licensed under MIT License. See LICENSE in root directory for more information. */ -import { getInjectable, getInjectionToken } from "@ogre-tools/injectable"; +import { kebabCase, toUpper } from "lodash/fp"; +import { + DiContainerForInjection, + getInjectable, + getInjectionToken, + lifecycleEnum, +} from "@ogre-tools/injectable"; import type { Logger } from "./logger"; import { winstonLoggerInjectable } from "./winston-logger.injectable"; +import { pipeline } from "@ogre-tools/fp"; export const loggerInjectionToken = getInjectionToken({ id: "logger-injection-token", @@ -46,32 +53,64 @@ export const logSillyInjectionToken = getInjectionToken({ id: "log-silly-injection-token", }); +const screamingKebabCase = (str: string) => pipeline(str, kebabCase, toUpper); + +const getLogFunctionFor = + (scenario: keyof Logger) => + (di: DiContainerForInjection): LogFunction => { + const winstonLogger = di.inject(winstonLoggerInjectable); + + return (message, ...data) => { + winstonLogger[scenario]( + di.sourceNamespace + ? `[${screamingKebabCase(di.sourceNamespace)}]: ${message}` + : message, + ...data + ); + }; + }; + export const logDebugInjectable = getInjectable({ id: "log-debug", - instantiate: (di): LogFunction => di.inject(winstonLoggerInjectable).debug, + instantiate: getLogFunctionFor("debug"), injectionToken: logDebugInjectionToken, + lifecycle: lifecycleEnum.keyedSingleton({ + getInstanceKey: (di) => di.sourceNamespace, + }), }); export const logInfoInjectable = getInjectable({ id: "log-info", - instantiate: (di): LogFunction => di.inject(winstonLoggerInjectable).info, + instantiate: getLogFunctionFor("info"), injectionToken: logInfoInjectionToken, + lifecycle: lifecycleEnum.keyedSingleton({ + getInstanceKey: (di) => di.sourceNamespace, + }), }); export const logWarningInjectable = getInjectable({ id: "log-warning", - instantiate: (di): LogFunction => di.inject(winstonLoggerInjectable).warn, + instantiate: getLogFunctionFor("warn"), injectionToken: logWarningInjectionToken, + lifecycle: lifecycleEnum.keyedSingleton({ + getInstanceKey: (di) => di.sourceNamespace, + }), }); export const logErrorInjectable = getInjectable({ id: "log-error", - instantiate: (di): LogFunction => di.inject(winstonLoggerInjectable).error, + instantiate: getLogFunctionFor("error"), injectionToken: logErrorInjectionToken, + lifecycle: lifecycleEnum.keyedSingleton({ + getInstanceKey: (di) => di.sourceNamespace, + }), }); export const logSillyInjectable = getInjectable({ id: "log-silly", - instantiate: (di): LogFunction => di.inject(winstonLoggerInjectable).silly, + instantiate: getLogFunctionFor("silly"), injectionToken: logSillyInjectionToken, + lifecycle: lifecycleEnum.keyedSingleton({ + getInstanceKey: (di) => di.sourceNamespace, + }), }); diff --git a/packages/logger/src/logger.test.ts b/packages/logger/src/logger.test.ts index 85399d029337..e8a689ff7172 100644 --- a/packages/logger/src/logger.test.ts +++ b/packages/logger/src/logger.test.ts @@ -1,13 +1,18 @@ -import { createContainer } from "@ogre-tools/injectable"; +import { createContainer, getInjectable } from "@ogre-tools/injectable"; import { registerFeature } from "@k8slens/feature-core"; import { loggerFeature } from "./feature"; import { winstonLoggerInjectable } from "./winston-logger.injectable"; + import { - logDebugInjectionToken, logErrorInjectionToken, + logDebugInjectionToken, + logErrorInjectionToken, logInfoInjectionToken, - logSillyInjectionToken, logWarningInjectionToken, + logSillyInjectionToken, + logWarningInjectionToken, } from "./logger.injectable"; +import { getFeature } from "@k8slens/feature-core/src/feature"; + describe("logger", () => { [ { scenario: "debug", injectionToken: logDebugInjectionToken }, @@ -16,7 +21,7 @@ describe("logger", () => { { scenario: "error", injectionToken: logErrorInjectionToken }, { scenario: "silly", injectionToken: logSillyInjectionToken }, ].forEach(({ scenario, injectionToken }) => { - it(`when logging "${scenario}", does so`, () => { + it(`given not inside a Feature, when logging "${scenario}", does so without a prefix`, () => { const di = createContainer("irrelevant"); registerFeature(di, loggerFeature); @@ -34,5 +39,40 @@ describe("logger", () => { "some-data" ); }); + + it(`given inside a Feature, when logging "${scenario}", does so with Feature's id as prefix`, () => { + const di = createContainer("irrelevant"); + + const logScenarioInFeature = getInjectable({ + id: "some-functionality", + instantiate: (di) => di.inject(injectionToken), + }); + + + const someFeature = getFeature({ + id: "some-feature", + + register: (di) => { + di.register(logScenarioInFeature); + }, + + dependencies: [loggerFeature], + }); + + registerFeature(di, someFeature); + + const winstonLoggerStub = { [scenario]: jest.fn() } as any; + + di.override(winstonLoggerInjectable, () => winstonLoggerStub); + + const logScenario = di.inject(logScenarioInFeature); + + logScenario("some-message", "some-data"); + + expect(winstonLoggerStub[scenario]).toHaveBeenCalledWith( + "[SOME-FEATURE]: some-message", + "some-data" + ); + }); }); }); From c7216a6c7d97b04e0898ac362773c5276c15a2ee Mon Sep 17 00:00:00 2001 From: Iku-turso Date: Tue, 16 May 2023 15:24:29 +0300 Subject: [PATCH 4/6] chore: Consolidate to using a shared NPM-script Co-authored-by: Janne Savolainen Signed-off-by: Iku-turso --- packages/logger/package.json | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/logger/package.json b/packages/logger/package.json index 94c1cc2f1251..2649915659b8 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -24,7 +24,7 @@ "license": "MIT", "homepage": "https://github.com/lensapp/lens", "scripts": { - "build": "webpack", + "build": "lens-webpack-build", "test:unit": "jest --coverage --runInBand", "lint": "lens-lint", "lint:fix": "lens-lint --fix" @@ -39,7 +39,8 @@ }, "devDependencies": { "@k8slens/eslint-config": "6.5.0-alpha.1", + "@k8slens/jest": "^6.5.0-alpha.5", "@k8slens/react-testing-library-discovery": "^1.0.0-alpha.4", - "@k8slens/jest": "^6.5.0-alpha.5" + "@k8slens/webpack": "^6.5.0-alpha.6" } } From b126592fa5275a6e2139b17ef5f01fa6defc74bb Mon Sep 17 00:00:00 2001 From: Iku-turso Date: Tue, 16 May 2023 16:11:10 +0300 Subject: [PATCH 5/6] chore: Deprecate obsolete ways to log Co-authored-by: Janne Savolainen Signed-off-by: Iku-turso --- packages/logger/index.ts | 2 ++ packages/logger/src/logger.injectable.ts | 1 + packages/logger/src/prefixed-logger.injectable.ts | 1 + 3 files changed, 4 insertions(+) diff --git a/packages/logger/index.ts b/packages/logger/index.ts index 40bb2023b7ce..2120274f368c 100644 --- a/packages/logger/index.ts +++ b/packages/logger/index.ts @@ -13,7 +13,9 @@ export { } from "./src/logger.injectable"; export type { Logger } from "./src/logger"; +/** @deprecated Use specific injectionToken, eg. logErrorInjectionToken */ export { loggerInjectionToken } from "./src/logger.injectable"; +/** @deprecated Use specific injectionToken, eg. logErrorInjectionToken */ export { prefixedLoggerInjectable } from "./src/prefixed-logger.injectable"; export { loggerTransportInjectionToken } from "./src/transports"; export { winstonLoggerInjectable } from "./src/winston-logger.injectable"; diff --git a/packages/logger/src/logger.injectable.ts b/packages/logger/src/logger.injectable.ts index d59bfe2ceb92..896fb596d5cb 100644 --- a/packages/logger/src/logger.injectable.ts +++ b/packages/logger/src/logger.injectable.ts @@ -13,6 +13,7 @@ import type { Logger } from "./logger"; import { winstonLoggerInjectable } from "./winston-logger.injectable"; import { pipeline } from "@ogre-tools/fp"; +/** @deprecated Use specific injectionToken, eg. logErrorInjectionToken */ export const loggerInjectionToken = getInjectionToken({ id: "logger-injection-token", }); diff --git a/packages/logger/src/prefixed-logger.injectable.ts b/packages/logger/src/prefixed-logger.injectable.ts index de43ca2b1e13..61806d08c45e 100644 --- a/packages/logger/src/prefixed-logger.injectable.ts +++ b/packages/logger/src/prefixed-logger.injectable.ts @@ -6,6 +6,7 @@ import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable"; import type { Logger } from "./logger"; import { loggerInjectionToken } from "./logger.injectable"; +/** @deprecated Use specific injectionToken, eg. logErrorInjectionToken */ export const prefixedLoggerInjectable = getInjectable({ id: "prefixed-logger", instantiate: (di, prefix): Logger => { From 1dec61f64eba551b782d437466dc40fbb2b2e6ee Mon Sep 17 00:00:00 2001 From: Iku-turso Date: Wed, 17 May 2023 11:30:14 +0300 Subject: [PATCH 6/6] chore: Update package-lock.json Co-authored-by: Janne Savolainen Signed-off-by: Iku-turso --- package-lock.json | 215 ++++++++++++++++++++++++---------------------- 1 file changed, 114 insertions(+), 101 deletions(-) diff --git a/package-lock.json b/package-lock.json index 00527e8d83a6..5a44783f0381 100644 --- a/package-lock.json +++ b/package-lock.json @@ -10,7 +10,7 @@ "open-lens" ], "devDependencies": { - "@ogre-tools/linkable": "^15.8.1", + "@ogre-tools/linkable": "^16.1.0", "adr": "^1.4.3", "cross-env": "^7.0.3", "lerna": "^6.6.1", @@ -6761,26 +6761,26 @@ } }, "node_modules/@ogre-tools/fp": { - "version": "15.9.0", - "resolved": "https://registry.npmjs.org/@ogre-tools/fp/-/fp-15.9.0.tgz", - "integrity": "sha512-OyKttkjhSAZbKtSyKz+2A3eRi9xCeX4jY1PL2m6taA4A0FEZoC14aC5Et5/Oi8uJvdqRpSDV439wqjsyh7oxFg==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@ogre-tools/fp/-/fp-16.1.0.tgz", + "integrity": "sha512-90O/tToH/CiWOeGfq2TFdzguOm2dmoAA2Cv94K48eik/3aiDmeJcClGmdXVilDWQgoAug5cgFWhocV89VhJ+cQ==", "peerDependencies": { "lodash": "^4.17.21" } }, "node_modules/@ogre-tools/injectable": { - "version": "15.9.0", - "resolved": "https://registry.npmjs.org/@ogre-tools/injectable/-/injectable-15.9.0.tgz", - "integrity": "sha512-pYNMIhQI7dhYIh1AhQm+Y+5kDM43v5tyaD3VqReHI2CqoIydbl33I9awX+Qc12y1tf5WNO8SvBdK6KKgUD6mAA==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@ogre-tools/injectable/-/injectable-16.1.0.tgz", + "integrity": "sha512-F0v62yX6t2PAKUOqecWA81v31j08r9ilCdRwc4Kbmn4WqJEZRp2g3hMTu/PB9Ckhig7TS7vOHfKOW2KmuhfFkA==", "peerDependencies": { "@ogre-tools/fp": "*", "lodash": "^4.17.21" } }, "node_modules/@ogre-tools/injectable-extension-for-auto-registration": { - "version": "15.9.0", - "resolved": "https://registry.npmjs.org/@ogre-tools/injectable-extension-for-auto-registration/-/injectable-extension-for-auto-registration-15.9.0.tgz", - "integrity": "sha512-5Ik43ZLAOhBODrhF/MbTkC3SItFMNxibufBoYFqCERfHSHyZE6pUa5yMbjrh+YFkntIrDH2IScW7BqZkraHvTA==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@ogre-tools/injectable-extension-for-auto-registration/-/injectable-extension-for-auto-registration-16.1.0.tgz", + "integrity": "sha512-K32jlEzieTxZ8wlr8rCnDbs1oOrKoBMvS6mRNtIcEAKb56Q3YKQQcSfk5sF9OqUq8iPoHY/dX9pkwHdzltMryw==", "peerDependencies": { "@ogre-tools/fp": "*", "@ogre-tools/injectable": "*", @@ -6788,9 +6788,9 @@ } }, "node_modules/@ogre-tools/injectable-extension-for-mobx": { - "version": "15.9.0", - "resolved": "https://registry.npmjs.org/@ogre-tools/injectable-extension-for-mobx/-/injectable-extension-for-mobx-15.9.0.tgz", - "integrity": "sha512-Mchn92sdGenodqU54lO58zULKii5Fk+7JxDtieaGmxhqW1ogGysgkWnZFWSroTFqWzGBsD0CIqtBriMnE8873g==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@ogre-tools/injectable-extension-for-mobx/-/injectable-extension-for-mobx-16.1.0.tgz", + "integrity": "sha512-zJCSkngxIfzto/j6mDtQMaciScmvtf2tGWyliRkXz7zcLPYf4PUOh+t2iyEAdTFMfsI5T43jk/1d7hj53flANA==", "peerDependencies": { "@ogre-tools/fp": "*", "@ogre-tools/injectable": "*", @@ -6799,9 +6799,9 @@ } }, "node_modules/@ogre-tools/injectable-react": { - "version": "15.9.0", - "resolved": "https://registry.npmjs.org/@ogre-tools/injectable-react/-/injectable-react-15.9.0.tgz", - "integrity": "sha512-ceP0/fbaB7fOoH0Jrk1QNZWMCivExVPp1x6ZQhj2IBc/NOirAVZ19eee2c6U3vIthXUhKoXKNXYKc/joonhdjQ==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@ogre-tools/injectable-react/-/injectable-react-16.1.0.tgz", + "integrity": "sha512-zUC+/GXnwY1uDtgU+yeqJoXNp7AMPiQT3BYUHRi99K2MvjgV93n4TwJpIZDmWujMweUC/ts3PutR5BbnOGK8UQ==", "peerDependencies": { "@ogre-tools/fp": "*", "@ogre-tools/injectable": "*", @@ -6813,13 +6813,13 @@ } }, "node_modules/@ogre-tools/linkable": { - "version": "15.9.0", - "resolved": "https://registry.npmjs.org/@ogre-tools/linkable/-/linkable-15.9.0.tgz", - "integrity": "sha512-LmRFNC2ZXFw1FbWvNCx2NPWoaDGBnuMuTesbgJQHkEeBgb2QQxIN+oF1tIq4vsZYDnwmX2zYjfdai0XeztGsnw==", + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@ogre-tools/linkable/-/linkable-16.1.0.tgz", + "integrity": "sha512-5gFLPAvkkkz8mHvhl4g2Tl9sl0x//2Hbau0UTyZxNsLmwSKHVIJcFzNsym1l5zdLnIuuUb/OQwvfnlQqMd/8sw==", "dependencies": { - "@ogre-tools/fp": "^15.9.0", - "@ogre-tools/injectable": "^15.9.0", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.9.0", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "fast-glob": "^3.2.12", "fs-extra": "^9.0.1", "lodash": "^4.17.21", @@ -6830,15 +6830,6 @@ "linkable-push": "bin/linkable-push" } }, - "node_modules/@ogre-tools/test-utils": { - "version": "15.9.0", - "resolved": "https://registry.npmjs.org/@ogre-tools/test-utils/-/test-utils-15.9.0.tgz", - "integrity": "sha512-2Vr9aJrkHlyKzd/4Afduc4kWYZFM18ZK6GtuHM5+y7QpIqcg43oN+j5vO+AO+MPgvCpv/3jO4ooXJb5bHhAA1w==", - "dev": true, - "peerDependencies": { - "lodash": "^4.17.21" - } - }, "node_modules/@parcel/watcher": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.0.4.tgz", @@ -34949,11 +34940,11 @@ "@k8slens/run-many": "^1.0.0-alpha.7", "@k8slens/startable-stoppable": "^1.0.0-alpha.6", "@k8slens/utilities": "^1.0.0-alpha.6", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", - "@ogre-tools/injectable-extension-for-mobx": "^15.8.1", - "@ogre-tools/injectable-react": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "@ogre-tools/injectable-extension-for-mobx": "^16.1.0", + "@ogre-tools/injectable-react": "^16.1.0", "mobx": "^6.9.0" }, "devDependencies": { @@ -35119,10 +35110,10 @@ "peerDependencies": { "@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/react-application": "^1.0.0-alpha.0", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", - "@ogre-tools/injectable-react": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "@ogre-tools/injectable-react": "^16.1.0", "lodash": "^4.17.21", "react": "^17 || ^18" } @@ -35136,7 +35127,7 @@ "rimraf": "^4.4.1" }, "peerDependencies": { - "@ogre-tools/injectable": "^15.8.1" + "@ogre-tools/injectable": "^16.1.0" } }, "packages/core": { @@ -35229,7 +35220,7 @@ "@async-fn/jest": "1.6.4", "@k8slens/messaging-fake-bridge": "^1.0.0-alpha.7", "@k8slens/react-testing-library-discovery": "^1.0.0-alpha.4", - "@ogre-tools/linkable": "^15.8.1", + "@ogre-tools/linkable": "^16.1.0", "@sentry/types": "^6.19.7", "@swc/cli": "^0.1.62", "@swc/core": "^1.3.53", @@ -35355,11 +35346,11 @@ "@k8slens/test-utils": "^1.0.0-alpha.3", "@k8slens/tooltip": "^1.0.0-alpha.5", "@k8slens/utilities": "^1.0.0-alpha.1", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", - "@ogre-tools/injectable-extension-for-mobx": "^15.8.1", - "@ogre-tools/injectable-react": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "@ogre-tools/injectable-extension-for-mobx": "^16.1.0", + "@ogre-tools/injectable-react": "^16.1.0", "mobx": "^6.9.0", "mobx-observable-history": "^2.0.3", "mobx-react": "^7.6.0", @@ -36102,7 +36093,7 @@ "version": "6.5.0-alpha.8", "license": "MIT", "dependencies": { - "@ogre-tools/linkable": "^15.8.1", + "@ogre-tools/linkable": "^16.1.0", "@types/webpack-env": "^1.18.0", "css-loader": "^6.7.2", "fork-ts-checker-webpack-plugin": "^7.3.0", @@ -36122,14 +36113,23 @@ "devDependencies": { "@async-fn/jest": "^1.6.4", "@k8slens/typescript": "^6.5.0-alpha.3", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.9.0", - "@ogre-tools/test-utils": "^15.8.1", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "@ogre-tools/test-utils": "^16.1.0", "ts-node": "^10.9.1", "webpack-node-externals": "^3.0.0" }, "peerDependencies": { - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "lodash": "^4.17.21" + } + }, + "packages/infrastructure/webpack/node_modules/@ogre-tools/test-utils": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@ogre-tools/test-utils/-/test-utils-16.1.0.tgz", + "integrity": "sha512-UeIfuAFAtZsIfLQCe8EPQcLo0uNE5LTWJzmc4Me676wBR3ojwjdEth1bMBICPFu3lSUAmOsZGU86N8ztSdfsEQ==", + "dev": true, + "peerDependencies": { "lodash": "^4.17.21" } }, @@ -36182,7 +36182,7 @@ }, "peerDependencies": { "@k8slens/utilities": "^1.0.0-alpha.2", - "@ogre-tools/injectable": "^15.8.1", + "@ogre-tools/injectable": "^16.1.0", "auto-bind": "^4.0.0", "moment": "^2.29.4", "rfc6902": "^5.0.1", @@ -36204,7 +36204,7 @@ "typed-regex": "^0.0.8" }, "peerDependencies": { - "@ogre-tools/injectable": "^15.8.1" + "@ogre-tools/injectable": "^16.1.0" } }, "packages/legacy-extension-example": { @@ -36352,7 +36352,7 @@ "@k8slens/webpack": "^6.5.0-alpha.8" }, "peerDependencies": { - "@ogre-tools/injectable": "^15.8.1" + "@ogre-tools/injectable": "^16.1.0" } }, "packages/list-layout": { @@ -36368,7 +36368,7 @@ "peerDependencies": { "@k8slens/kube-object": "^1.0.0-alpha.1", "@k8slens/utilities": "^1.0.0-alpha.3", - "@ogre-tools/injectable": "^15.8.1", + "@ogre-tools/injectable": "^16.1.0", "react": "^17.0.2" } }, @@ -36378,12 +36378,16 @@ "license": "MIT", "devDependencies": { "@k8slens/eslint-config": "6.5.0-alpha.1", - "@k8slens/react-testing-library-discovery": "^1.0.0-alpha.4" + "@k8slens/jest": "^6.5.0-alpha.5", + "@k8slens/react-testing-library-discovery": "^1.0.0-alpha.4", + "@k8slens/webpack": "^6.5.0-alpha.6" }, "peerDependencies": { "@k8slens/feature-core": "^6.5.0-alpha.0", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.3.0", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "lodash": "^4.17.21", "winston": "^3.8.2" } }, @@ -36427,7 +36431,7 @@ }, "peerDependencies": { "@k8slens/kube-object": "^1.0.0-alpha.1", - "@ogre-tools/injectable": "^15.8.1", + "@ogre-tools/injectable": "^16.1.0", "react": "^17.0.2" } }, @@ -36508,10 +36512,10 @@ "peerDependencies": { "@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/react-application": "^1.0.0-alpha.0", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", - "@ogre-tools/injectable-react": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "@ogre-tools/injectable-react": "^16.1.0", "auto-bind": "^4.0.0", "history": "^4.10.1", "lodash": "^4.17.21", @@ -36552,9 +36556,9 @@ "@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/logger": "^1.0.0-alpha.5", "@k8slens/run-many": "^1.0.0-alpha.1", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "lodash": "^4.17.15" } }, @@ -36566,18 +36570,27 @@ "@async-fn/jest": "^1.6.4", "@k8slens/eslint-config": "^6.5.0-alpha.3", "@k8slens/webpack": "^6.5.0-alpha.8", - "@ogre-tools/test-utils": "^15.8.1" + "@ogre-tools/test-utils": "^16.1.0" }, "peerDependencies": { "@k8slens/application": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/run-many": "^1.0.0-alpha.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "electron": "^22.3.3", "lodash": "^4.17.21" } }, + "packages/technical-features/application/electron-main/node_modules/@ogre-tools/test-utils": { + "version": "16.1.0", + "resolved": "https://registry.npmjs.org/@ogre-tools/test-utils/-/test-utils-16.1.0.tgz", + "integrity": "sha512-UeIfuAFAtZsIfLQCe8EPQcLo0uNE5LTWJzmc4Me676wBR3ojwjdEth1bMBICPFu3lSUAmOsZGU86N8ztSdfsEQ==", + "dev": true, + "peerDependencies": { + "lodash": "^4.17.21" + } + }, "packages/technical-features/application/legacy-extensions": { "name": "@k8slens/legacy-extensions", "version": "1.0.0-alpha.7", @@ -36587,7 +36600,7 @@ "@k8slens/webpack": "^6.5.0-alpha.8" }, "peerDependencies": { - "@ogre-tools/injectable": "^15.8.1" + "@ogre-tools/injectable": "^16.1.0" } }, "packages/technical-features/feature-core": { @@ -36599,7 +36612,7 @@ "@k8slens/webpack": "^6.5.0-alpha.8" }, "peerDependencies": { - "@ogre-tools/injectable": "^15.8.1" + "@ogre-tools/injectable": "^16.1.0" } }, "packages/technical-features/messaging/agnostic": { @@ -36614,9 +36627,9 @@ "@k8slens/application": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/startable-stoppable": "^1.0.0-alpha.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", - "@ogre-tools/injectable-extension-for-mobx": "^15.8.1", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "@ogre-tools/injectable-extension-for-mobx": "^16.1.0", "lodash": "^4.17.21", "mobx": "^6.7.0" } @@ -36635,10 +36648,10 @@ "@k8slens/application": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/messaging": "^1.0.0-alpha.1", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", - "@ogre-tools/injectable-extension-for-mobx": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "@ogre-tools/injectable-extension-for-mobx": "^16.1.0", "lodash": "^4.17.21", "mobx": "^6.8.0" } @@ -36655,9 +36668,9 @@ "@k8slens/application": "^6.5.0-alpha.0", "@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/messaging": "^1.0.0-alpha.1", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "electron": "^22.3.3", "lodash": "^4.17.21" } @@ -36676,8 +36689,8 @@ "@k8slens/messaging": "^1.0.0-alpha.1", "@k8slens/run-many": "^1.0.0-alpha.1", "@k8slens/startable-stoppable": "^1.0.0-alpha.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "electron": "^22.3.3", "lodash": "^4.17.21" } @@ -36694,9 +36707,9 @@ "@async-fn/jest": "^1.6.4", "@k8slens/feature-core": "^6.5.0-alpha.2", "@k8slens/messaging": "^1.0.0-alpha.1", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-mobx": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-mobx": "^16.1.0", "lodash": "^4.17.21", "mobx": "^6.9.0" } @@ -36715,11 +36728,11 @@ "peerDependencies": { "@k8slens/application": "^6.5.0-alpha.2", "@k8slens/feature-core": "^6.5.0-alpha.0", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", - "@ogre-tools/injectable-extension-for-mobx": "^15.8.1", - "@ogre-tools/injectable-react": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", + "@ogre-tools/injectable-extension-for-mobx": "^16.1.0", + "@ogre-tools/injectable-react": "^16.1.0", "lodash": "^4.17.15", "mobx": "^6.8.0", "mobx-react": "^7.6.0", @@ -36782,8 +36795,8 @@ "@k8slens/button": "^1.0.0-alpha.5", "@k8slens/routing": "^1.0.0-alpha.5", "@k8slens/utilities": "^1.0.0-alpha.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-react": "^15.8.1", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-react": "^16.1.0", "auto-bind": "^4.0.0", "history": "^4.10.1", "lodash": "^4.17.21", @@ -36807,9 +36820,9 @@ "peerDependencies": { "@k8slens/feature-core": "^6.5.0-alpha.0", "@k8slens/utilities": "^1.0.0-alpha.1", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-extension-for-auto-registration": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-extension-for-auto-registration": "^16.1.0", "auto-bind": "^4.0.0", "lodash": "^4.17.21", "mobx": "^6.8.0", @@ -36911,8 +36924,8 @@ "peerDependencies": { "@k8slens/test-utils": "^1.0.0-alpha.3", "@k8slens/utilities": "^1.0.0-alpha.1", - "@ogre-tools/fp": "^15.8.1", - "@ogre-tools/injectable": "^15.8.1", + "@ogre-tools/fp": "^16.1.0", + "@ogre-tools/injectable": "^16.1.0", "type-fest": "^2.19.0", "typed-emitter": "^1.4.0", "uuid": "^8.3.2" @@ -36942,8 +36955,8 @@ "@types/lodash": "^4.14.191" }, "peerDependencies": { - "@ogre-tools/injectable": "^15.8.1", - "@ogre-tools/injectable-react": "^15.8.1", + "@ogre-tools/injectable": "^16.1.0", + "@ogre-tools/injectable-react": "^16.1.0", "@testing-library/react": "^12.1.5", "lodash": "^4.17.21", "mobx": "^6.8.0",