Restructure to monorepo (#6907)

* wip: restructure to monorepo

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* refactor create-release-pr to a package

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* build fixes

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* github workflow fixes

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* fix typo

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* add webpack-env types to core

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* fix github workflows

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* refactor/fix integration tests

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* lint fix

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* yarn run dev

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* eslint settings for vscode

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* move templates to right package

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* open-lens build fixes

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* integration test fix

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* fix nx task dependencies

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* use bash shell for unit tests in test workflow

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* fix test:unit for windows

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* fix win-ca webpack error in open-lens

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* fix win-ca webpack error in open-lens

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* fix build:app on windows

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* remove ELECTRON_BUILDER_EXTRA_ARGS

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* sync src/ from master

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

* remove Makefile from core

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>

Signed-off-by: Jari Kolehmainen <jari.kolehmainen@gmail.com>
This commit is contained in:
Jari Kolehmainen authored and GitHub committed 2023-01-24 10:46:26 -08:00
1 parent 0066ca4ea2
commit 2657df2293
3321 files changed
+28699 -11447

No files matched your search

@@ -0,0 +1,49 @@
/**
* 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 { RequireAtLeastOne } from "type-fest";
import type { KubeObject } from "../../common/k8s-api/kube-object";
import type { BaseIconProps } from "../components/icon";
export interface KubeObjectContextMenuItem {
/**
* If the type is `string` then it is shorthand for {@link BaseIconProps.material}
*
* This is required because this item can be either rendered as a context menu or as a toolbar in
* the kube object details page.
*/
icon: string | BaseIconProps;
/**
* The title text for the menu item or the hover text for the icon.
*/
title: string;
/**
* The action when clicked
*/
onClick: (obj: KubeObject) => void;
}
export interface KubeObjectOnContextMenuOpenContext {
menuItems: KubeObjectContextMenuItem[];
navigate: (location: string) => void;
}
export type KubeObjectOnContextMenuOpen = (ctx: KubeObjectOnContextMenuOpenContext) => void;
export interface KubeObjectHandlers {
onContextMenuOpen: KubeObjectOnContextMenuOpen;
}
export type KubeObjectHandlerRegistration = {
apiVersions: string[];
kind: string;
} & RequireAtLeastOne<KubeObjectHandlers>;
export const staticKubeObjectHandlerInjectionToken = getInjectionToken<KubeObjectHandlerRegistration>({
id: "static-kube-object-handler-token",
});
@@ -0,0 +1,42 @@
/**
* 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 { computed } from "mobx";
import rendererExtensionsInjectable from "../../extensions/renderer-extensions.injectable";
import { getOrInsert, getOrInsertMap, readonly } from "../utils";
import type { KubeObjectHandlerRegistration, KubeObjectHandlers } from "./handler";
import { staticKubeObjectHandlerInjectionToken } from "./handler";
const kubeObjectHandlersInjectable = getInjectable({
id: "kube-object-handlers",
instantiate: (di) => {
const extensions = di.inject(rendererExtensionsInjectable);
const staticKubeObjectContextMenuHandlers = di.injectMany(staticKubeObjectHandlerInjectionToken);
return computed(() => {
const res = new Map<string, Map<string, Partial<KubeObjectHandlers>[]>>();
const addAllHandlers = (registrations: KubeObjectHandlerRegistration[]) => {
for (const { apiVersions, kind, ...handlers } of registrations) {
for (const apiVersion of apiVersions) {
const byApiVersion = getOrInsertMap(res, apiVersion);
const byKind = getOrInsert(byApiVersion, kind, []);
byKind.push(handlers);
}
}
};
extensions.get()
.map(ext => ext.kubeObjectHandlers)
.forEach(addAllHandlers);
addAllHandlers(staticKubeObjectContextMenuHandlers);
return readonly(res);
});
},
});
export default kubeObjectHandlersInjectable;
@@ -0,0 +1,30 @@
/**
* 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 type { StatefulSet } from "../../../common/k8s-api/endpoints";
import openStatefulSetScaleDialogInjectable from "../../components/+workloads-statefulsets/scale/open-dialog.injectable";
import { staticKubeObjectHandlerInjectionToken } from "../handler";
const statefulSetKubeObjectHandlerInjectable = getInjectable({
id: "stateful-set-kube-object-handler",
instantiate: (di) => {
const openStatefulSetScaleDialog = di.inject(openStatefulSetScaleDialogInjectable);
return {
kind: "StatefulSet",
apiVersions: ["apps/v1"],
onContextMenuOpen: (ctx) => {
ctx.menuItems.push({
icon: "open_with",
title: "Scale",
onClick: (obj) => openStatefulSetScaleDialog(obj as StatefulSet),
});
},
};
},
injectionToken: staticKubeObjectHandlerInjectionToken,
});
export default statefulSetKubeObjectHandlerInjectable;