mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
Add eslint rule padding-line-between-statements (#1593)
Signed-off-by: Panu Horsmalahti <phorsmalahti@mirantis.com>
This commit is contained in:
1 parent
7b77f18376
commit
dcf253e7d5
401 files changed
+2018
-40
No files matched your search
@@ -108,12 +108,15 @@ export abstract class ClusterFeature {
|
||||
*/
|
||||
protected renderTemplates(folderPath: string): string[] {
|
||||
const resources: string[] = [];
|
||||
|
||||
logger.info(`[FEATURE]: render templates from ${folderPath}`);
|
||||
fs.readdirSync(folderPath).forEach(filename => {
|
||||
const file = path.join(folderPath, filename);
|
||||
const raw = fs.readFileSync(file);
|
||||
|
||||
if (filename.endsWith(".hb")) {
|
||||
const template = hb.compile(raw.toString());
|
||||
|
||||
resources.push(template(this.templateContext));
|
||||
} else {
|
||||
resources.push(raw.toString());
|
||||
|
||||
@@ -3,6 +3,7 @@ import { extensionsStore } from "../extensions-store";
|
||||
|
||||
export const version = getAppVersion();
|
||||
export { isSnap, isWindows, isMac, isLinux, appName, slackUrl, issuesTrackerUrl } from "../../common/vars";
|
||||
|
||||
export function getEnabledExtensions(): string[] {
|
||||
return extensionsStore.enabledExtensions;
|
||||
}
|
||||
@@ -25,6 +25,7 @@ export interface InstalledExtension {
|
||||
}
|
||||
|
||||
const logModule = "[EXTENSION-DISCOVERY]";
|
||||
|
||||
export const manifestFilename = "package.json";
|
||||
|
||||
/**
|
||||
@@ -133,7 +134,6 @@ export class ExtensionDiscovery {
|
||||
if (path.basename(filePath) === manifestFilename) {
|
||||
try {
|
||||
const absPath = path.dirname(filePath);
|
||||
|
||||
// this.loadExtensionFromPath updates this.packagesJson
|
||||
const extension = await this.loadExtensionFromPath(absPath);
|
||||
|
||||
@@ -251,6 +251,7 @@ export class ExtensionDiscovery {
|
||||
|
||||
manifestJson = __non_webpack_require__(manifestPath);
|
||||
const installedManifestPath = path.join(this.nodeModulesPath, manifestJson.name, "package.json");
|
||||
|
||||
this.packagesJson.dependencies[manifestJson.name] = path.dirname(manifestPath);
|
||||
const isEnabled = isBundled || extensionsStore.isEnabled(installedManifestPath);
|
||||
|
||||
@@ -272,6 +273,7 @@ export class ExtensionDiscovery {
|
||||
async loadExtensions(): Promise<Map<LensExtensionId, InstalledExtension>> {
|
||||
const bundledExtensions = await this.loadBundledExtensions();
|
||||
const localExtensions = await this.loadFromFolder(this.localFolderPath);
|
||||
|
||||
await this.installPackages();
|
||||
const extensions = bundledExtensions.concat(localExtensions);
|
||||
|
||||
@@ -333,12 +335,14 @@ export class ExtensionDiscovery {
|
||||
}
|
||||
|
||||
const extension = await this.loadExtensionFromPath(absPath);
|
||||
|
||||
if (extension) {
|
||||
extensions.push(extension);
|
||||
}
|
||||
}
|
||||
|
||||
logger.debug(`${logModule}: ${extensions.length} extensions loaded`, { folderPath, extensions });
|
||||
|
||||
return extensions;
|
||||
}
|
||||
|
||||
|
||||
@@ -37,6 +37,7 @@ export class ExtensionInstaller {
|
||||
cwd: extensionPackagesRoot(),
|
||||
silent: true
|
||||
});
|
||||
|
||||
child.on("close", () => {
|
||||
resolve();
|
||||
});
|
||||
|
||||
@@ -176,6 +176,7 @@ export class ExtensionLoader {
|
||||
loadOnClusterRenderer() {
|
||||
logger.info(`${logModule}: load on cluster renderer (dashboard)`);
|
||||
const cluster = getHostedCluster();
|
||||
|
||||
this.autoInitExtensions(async (extension: LensRendererExtension) => {
|
||||
if (await extension.isEnabledForCluster(cluster) === false) {
|
||||
return [];
|
||||
@@ -209,11 +210,13 @@ export class ExtensionLoader {
|
||||
if (ext.isEnabled && !alreadyInit) {
|
||||
try {
|
||||
const LensExtensionClass = this.requireExtension(ext);
|
||||
|
||||
if (!LensExtensionClass) {
|
||||
continue;
|
||||
}
|
||||
|
||||
const instance = new LensExtensionClass(ext);
|
||||
|
||||
instance.whenEnabled(() => register(instance));
|
||||
instance.enable();
|
||||
this.instances.set(extId, instance);
|
||||
@@ -231,12 +234,14 @@ export class ExtensionLoader {
|
||||
|
||||
protected requireExtension(extension: InstalledExtension): LensExtensionConstructor {
|
||||
let extEntrypoint = "";
|
||||
|
||||
try {
|
||||
if (ipcRenderer && extension.manifest.renderer) {
|
||||
extEntrypoint = path.resolve(path.join(path.dirname(extension.manifestPath), extension.manifest.renderer));
|
||||
} else if (!ipcRenderer && extension.manifest.main) {
|
||||
extEntrypoint = path.resolve(path.join(path.dirname(extension.manifestPath), extension.manifest.main));
|
||||
}
|
||||
|
||||
if (extEntrypoint !== "") {
|
||||
return __non_webpack_require__(extEntrypoint).default;
|
||||
}
|
||||
|
||||
@@ -7,11 +7,13 @@ export abstract class ExtensionStore<T> extends BaseStore<T> {
|
||||
|
||||
async loadExtension(extension: LensExtension) {
|
||||
this.extension = extension;
|
||||
|
||||
return super.load();
|
||||
}
|
||||
|
||||
async load() {
|
||||
if (!this.extension) { return; }
|
||||
|
||||
return super.load();
|
||||
}
|
||||
|
||||
|
||||
@@ -30,11 +30,13 @@ export class ExtensionsStore extends BaseStore<LensExtensionsStoreModel> {
|
||||
|
||||
protected getState(extensionLoader: ExtensionLoader) {
|
||||
const state: Record<LensExtensionId, LensExtensionState> = {};
|
||||
|
||||
return Array.from(extensionLoader.userExtensions).reduce((state, [extId, ext]) => {
|
||||
state[extId] = {
|
||||
enabled: ext.isEnabled,
|
||||
name: ext.manifest.name,
|
||||
};
|
||||
|
||||
return state;
|
||||
}, state);
|
||||
}
|
||||
@@ -47,6 +49,7 @@ export class ExtensionsStore extends BaseStore<LensExtensionsStoreModel> {
|
||||
reaction(() => this.state.toJS(), extensionsState => {
|
||||
extensionsState.forEach((state, extId) => {
|
||||
const ext = extensionLoader.getExtension(extId);
|
||||
|
||||
if (ext && !ext.isBundled) {
|
||||
ext.isEnabled = state.enabled;
|
||||
}
|
||||
@@ -61,6 +64,7 @@ export class ExtensionsStore extends BaseStore<LensExtensionsStoreModel> {
|
||||
|
||||
isEnabled(extId: LensExtensionId) {
|
||||
const state = this.state.get(extId);
|
||||
|
||||
return state && state.enabled; // by default false
|
||||
}
|
||||
|
||||
|
||||
@@ -86,6 +86,7 @@ export class LensExtension {
|
||||
const cancelReaction = reaction(() => this.isEnabled, async (isEnabled) => {
|
||||
if (isEnabled) {
|
||||
const handlerDisposers = await handlers();
|
||||
|
||||
disposers.push(...handlerDisposers);
|
||||
} else {
|
||||
unregisterHandlers();
|
||||
@@ -93,6 +94,7 @@ export class LensExtension {
|
||||
}, {
|
||||
fireImmediately: true
|
||||
});
|
||||
|
||||
return () => {
|
||||
unregisterHandlers();
|
||||
cancelReaction();
|
||||
|
||||
@@ -13,6 +13,7 @@ export class LensMainExtension extends LensExtension {
|
||||
pageId,
|
||||
params: params ?? {}, // compile to url with params
|
||||
});
|
||||
|
||||
await windowManager.navigate(pageUrl, frameId);
|
||||
}
|
||||
}
|
||||
@@ -23,6 +23,7 @@ export class LensRendererExtension extends LensExtension {
|
||||
pageId,
|
||||
params: params ?? {}, // compile to url with params
|
||||
});
|
||||
|
||||
navigate(pageUrl);
|
||||
}
|
||||
|
||||
|
||||
@@ -73,6 +73,7 @@ describe("globalPageRegistry", () => {
|
||||
describe("getByPageMenuTarget", () => {
|
||||
it("matching to first registered page without id", () => {
|
||||
const page = globalPageRegistry.getByPageMenuTarget({ extensionId: ext.name });
|
||||
|
||||
expect(page.id).toEqual(undefined);
|
||||
expect(page.extensionId).toEqual(ext.name);
|
||||
expect(page.routePath).toEqual(getExtensionPageUrl({ extensionId: ext.name }));
|
||||
@@ -83,6 +84,7 @@ describe("globalPageRegistry", () => {
|
||||
pageId: "test-page",
|
||||
extensionId: ext.name
|
||||
});
|
||||
|
||||
expect(page.id).toEqual("test-page");
|
||||
});
|
||||
|
||||
@@ -91,6 +93,7 @@ describe("globalPageRegistry", () => {
|
||||
pageId: "wrong-page",
|
||||
extensionId: ext.name
|
||||
});
|
||||
|
||||
expect(page).toBeNull();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -14,7 +14,9 @@ export class BaseRegistry<T> {
|
||||
@action
|
||||
add(items: T | T[]) {
|
||||
const itemArray = rectify(items);
|
||||
|
||||
this.items.push(...itemArray);
|
||||
|
||||
return () => this.remove(...itemArray);
|
||||
}
|
||||
|
||||
|
||||
@@ -20,8 +20,10 @@ export class KubeObjectDetailRegistry extends BaseRegistry<KubeObjectDetailRegis
|
||||
if (item.priority === null) {
|
||||
item.priority = 50;
|
||||
}
|
||||
|
||||
return item;
|
||||
});
|
||||
|
||||
return items.sort((a, b) => b.priority - a.priority);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -35,8 +35,10 @@ export class GlobalPageMenuRegistry extends BaseRegistry<PageMenuRegistration> {
|
||||
extensionId: ext.name,
|
||||
...(menuItem.target || {}),
|
||||
};
|
||||
|
||||
return menuItem;
|
||||
});
|
||||
|
||||
return super.add(normalizedItems);
|
||||
}
|
||||
}
|
||||
@@ -49,8 +51,10 @@ export class ClusterPageMenuRegistry extends BaseRegistry<ClusterPageMenuRegistr
|
||||
extensionId: ext.name,
|
||||
...(menuItem.target || {}),
|
||||
};
|
||||
|
||||
return menuItem;
|
||||
});
|
||||
|
||||
return super.add(normalizedItems);
|
||||
}
|
||||
|
||||
|
||||
@@ -45,9 +45,11 @@ export function getExtensionPageUrl<P extends object>({ extensionId, pageId = ""
|
||||
name: sanitizeExtensionName(extensionId), // compile only with extension-id first and define base path
|
||||
});
|
||||
const extPageRoutePath = path.join(extensionBaseUrl, pageId); // page-id might contain route :param-s, so don't compile yet
|
||||
|
||||
if (params) {
|
||||
return compile(extPageRoutePath)(params); // might throw error when required params not passed
|
||||
}
|
||||
|
||||
return extPageRoutePath;
|
||||
}
|
||||
|
||||
@@ -56,6 +58,7 @@ export class PageRegistry extends BaseRegistry<RegisteredPage> {
|
||||
add(items: PageRegistration | PageRegistration[], ext: LensExtension) {
|
||||
const itemArray = rectify(items);
|
||||
let registeredPages: RegisteredPage[] = [];
|
||||
|
||||
try {
|
||||
registeredPages = itemArray.map(page => ({
|
||||
...page,
|
||||
@@ -69,6 +72,7 @@ export class PageRegistry extends BaseRegistry<RegisteredPage> {
|
||||
error: String(err),
|
||||
});
|
||||
}
|
||||
|
||||
return super.add(registeredPages);
|
||||
}
|
||||
|
||||
@@ -78,8 +82,10 @@ export class PageRegistry extends BaseRegistry<RegisteredPage> {
|
||||
|
||||
getByPageMenuTarget(target: PageMenuTarget = {}): RegisteredPage | null {
|
||||
const targetUrl = getExtensionPageUrl(target);
|
||||
|
||||
return this.getItems().find(({ id: pageId, extensionId }) => {
|
||||
const pageUrl = getExtensionPageUrl({ extensionId, pageId, params: target.params }); // compiled with provided params
|
||||
|
||||
return targetUrl === pageUrl;
|
||||
}) || null;
|
||||
}
|
||||
|
||||
@@ -40,6 +40,7 @@ export class ClusterStore extends Singleton {
|
||||
if (!this.activeClusterId) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return this.getById(this.activeClusterId);
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user