mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
* Convert runMany and runManySync to use injectManyWithMeta Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fixup type errors due to new Runnable requirements Signed-off-by: Sebastian Malton <sebastian@malton.name> * Add documentation for verifyRunnablesAreDAG Signed-off-by: Sebastian Malton <sebastian@malton.name> * Simplify convertToWithIdWith Signed-off-by: Sebastian Malton <sebastian@malton.name> * Move all utility functions to separate package Signed-off-by: Sebastian Malton <sebastian@malton.name> * Move testing utilities to separate package Signed-off-by: Sebastian Malton <sebastian@malton.name> * Move run-many and run-many-sync to separate package Signed-off-by: Sebastian Malton <sebastian@malton.name> * Replace all internal uses of utilities with new packages Signed-off-by: Sebastian Malton <sebastian@malton.name> * Use new @k8slens/run-many package in core Signed-off-by: Sebastian Malton <sebastian@malton.name> * Add dep to open-lens Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fixup type errors Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fixup uses of @k8slens/test-utils Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fixup getGlobalOverride Signed-off-by: Sebastian Malton <sebastian@malton.name> * Move tests to new package too Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fix type errors Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fixup uses of AsyncResult and autoBind Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fixup remaining import issues Signed-off-by: Sebastian Malton <sebastian@malton.name> * Finial fixups to fix build Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fix lint Signed-off-by: Sebastian Malton <sebastian@malton.name> * Revert moving "testUsingFakeTime" to separate package - This fixes tests Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fix integration tests Signed-off-by: Sebastian Malton <sebastian@malton.name> * Fix unit test failing due to spelling fix Signed-off-by: Sebastian Malton <sebastian@malton.name> --------- Signed-off-by: Sebastian Malton <sebastian@malton.name>
66 lines
2.0 KiB
TypeScript
66 lines
2.0 KiB
TypeScript
/**
|
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
*/
|
|
import { getInjectable, lifecycleEnum } from "@ogre-tools/injectable";
|
|
import { pipeline } from "@ogre-tools/fp";
|
|
import type { PageParamInit } from "../navigation/page-param";
|
|
import type { LensRendererExtension } from "../../extensions/lens-renderer-extension";
|
|
import { map } from "lodash/fp";
|
|
import createPageParamInjectable from "../navigation/create-page-param.injectable";
|
|
import { object } from "@k8slens/utilities";
|
|
import type { PageRegistration } from "./page-registration";
|
|
|
|
export interface ExtensionPageParametersInstantiationParam {
|
|
extension: LensRendererExtension;
|
|
registration: PageRegistration;
|
|
}
|
|
|
|
const extensionPageParametersInjectable = getInjectable({
|
|
id: "extension-page-parameters",
|
|
|
|
instantiate: (di, { registration }: ExtensionPageParametersInstantiationParam) => {
|
|
const createPageParam = di.inject(createPageParamInjectable);
|
|
|
|
return pipeline(
|
|
registration.params ?? {},
|
|
Object.entries,
|
|
map(([key, value]): [string, PageParamInit<unknown>] => [
|
|
key,
|
|
typeof value === "string"
|
|
? convertStringToPageParamInit(key, value)
|
|
: convertPartialPageParamInitToFull(key, value),
|
|
]),
|
|
map(([key, value]) => [key, createPageParam(value)] as const),
|
|
object.fromEntries,
|
|
);
|
|
},
|
|
|
|
lifecycle: lifecycleEnum.keyedSingleton({
|
|
getInstanceKey: (
|
|
di,
|
|
{ extension, registration }: ExtensionPageParametersInstantiationParam,
|
|
) => `${extension.sanitizedExtensionId}-${registration?.id}`,
|
|
}),
|
|
});
|
|
|
|
const convertPartialPageParamInitToFull = <V>(
|
|
key: string,
|
|
value: PageParamInit<V>,
|
|
): PageParamInit<V> => ({
|
|
name: key,
|
|
defaultValue: value.defaultValue,
|
|
stringify: value.stringify,
|
|
parse: value.parse,
|
|
});
|
|
|
|
const convertStringToPageParamInit = (
|
|
key: string,
|
|
value: string,
|
|
): PageParamInit<string> => ({
|
|
name: key,
|
|
defaultValue: value,
|
|
});
|
|
|
|
export default extensionPageParametersInjectable;
|