mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
29 lines
918 B
TypeScript
29 lines
918 B
TypeScript
/**
|
|
* Copyright (c) OpenLens Authors. All rights reserved.
|
|
* Licensed under MIT License. See LICENSE in root directory for more information.
|
|
*/
|
|
import { Singleton } from "../../common/utils";
|
|
import type { LensExtension } from "../lens-extension";
|
|
import { createHash } from "crypto";
|
|
import { broadcastMessage } from "../../common/ipc";
|
|
|
|
export const IpcPrefix = Symbol();
|
|
|
|
export abstract class IpcRegistrar extends Singleton {
|
|
readonly [IpcPrefix]: string;
|
|
|
|
constructor(protected extension: LensExtension) {
|
|
super();
|
|
this[IpcPrefix] = createHash("sha256").update(extension.id).digest("hex");
|
|
}
|
|
|
|
/**
|
|
*
|
|
* @param channel The channel to broadcast to your whole extension, both `main` and `renderer`
|
|
* @param args The arguments passed to all listeners
|
|
*/
|
|
broadcast(channel: string, ...args: any[]): void {
|
|
broadcastMessage(`extensions@${this[IpcPrefix]}:${channel}`, ...args);
|
|
}
|
|
}
|