Appearance
API Reference
@repo/electron-ipc가 export하는 모든 심볼의 시그니처와 설명.
데코레이터
Injectable()
DI 컨테이너에 등록 가능한 서비스를 표시한다.
ts
function Injectable(): (target: Constructor, context: ClassDecoratorContext) => voidController()
IPC 핸들러를 포함하는 클래스를 표시한다. 클래스 내 @Handle 메타데이터를 수집한다.
ts
function Controller(): (target: Constructor, context: ClassDecoratorContext) => voidHandle(channel)
메서드를 IPC 채널에 바인딩한다. @Controller() 클래스 내에서만 사용한다.
ts
function Handle(channel: string): (target: IpcHandler, context: ClassMethodDecoratorContext) => void매개변수:
| 이름 | 타입 | 설명 |
|---|---|---|
channel | string | ipcMain.handle()에 등록할 채널 이름 |
Module(metadata)
provider와 controller를 모듈 단위로 그룹화한다.
ts
function Module(metadata: ModuleMetadata): (target: Constructor, context: ClassDecoratorContext) => void매개변수:
| 이름 | 타입 | 설명 |
|---|---|---|
metadata | ModuleMetadata | 모듈 구성 정보 |
클래스
Container
싱글톤 레지스트리. provider를 등록하고 lifecycle을 관리한다.
ts
class Container {
constructor(options?: ContainerOptions)
register(token: Constructor): void
resolve<T>(token: Constructor<T>): T
createInstance<T>(cls: Constructor<T>): T
resolveAll(): void
initAll(): void
attachWindowAll(window: BrowserWindow): void
disposeAll(): void
}| 메서드 | 설명 |
|---|---|
register(token) | @Injectable 표시된 클래스를 등록한다 |
resolve(token) | 싱글톤 인스턴스를 반환한다. 첫 호출 시 생성한다 |
createInstance(cls) | 레지스트리에 등록하지 않는 일회성 인스턴스를 생성한다 |
resolveAll() | 등록된 모든 provider를 등록 순서대로 eagerly resolve한다 |
initAll() | OnInit.onInit()을 등록 순서대로 호출한다 |
attachWindowAll(window) | OnWindowAttach.onWindowAttach()을 등록 순서대로 호출한다 |
disposeAll() | OnDispose.onDispose()를 등록 순서대로 호출한다 |
SenderGuard
IPC 메시지 발신자가 등록된 윈도우의 webContents인지 검증하는 내장 Guard.
ts
class SenderGuard implements IpcGuard {
canActivate(ctx: IpcContext): boolean
}함수
createApp(config)
모듈을 부트스트랩하고 IPC 핸들러를 등록하는 팩토리. 반환된 객체의 start()로 앱을 시작한다.
ts
function createApp(config: AppConfig): { start(): BrowserWindow }자세한 설정은 AppConfig를 참고한다.
inject(token)
클래스 필드 이니셜라이저에서 의존성을 주입한다. Container의 인스턴스 생성 컨텍스트 안에서만 호출할 수 있다.
ts
function inject<T>(token: Constructor<T>): T매개변수:
| 이름 | 타입 | 설명 |
|---|---|---|
token | Constructor<T> | resolve할 서비스 클래스 |
인터페이스
AppConfig
createApp()에 전달하는 설정 객체. 자세한 설명은 AppConfig 레퍼런스를 참고한다.
ts
interface AppConfig {
modules: Constructor[]
createWindow: () => BrowserWindow
guards?: IpcGuard[]
exceptionHandlers?: IpcExceptionHandler[]
logger?: AppLogger
onError?: (name: string, error: unknown) => void
}AppLogger
AppConfig.logger에 전달하는 로거 인터페이스.
ts
interface AppLogger {
info(message: string): void
}ContainerOptions
Container 생성자에 전달하는 옵션.
ts
interface ContainerOptions {
onError?: (name: string, error: unknown) => void
}IpcContext
Guard와 ExceptionHandler에 전달되는 IPC 요청 컨텍스트.
ts
interface IpcContext {
event: IpcMainInvokeEvent
channel: string
window: BrowserWindow
args: unknown[]
}IpcGuard
IPC 요청 검증 인터페이스.
ts
interface IpcGuard {
canActivate(ctx: IpcContext): boolean | Promise<boolean>
}IpcExceptionHandler
IPC 에러 처리 인터페이스.
ts
interface IpcExceptionHandler {
catch(error: unknown, ctx: IpcContext): unknown
}OnInit
윈도우 생성 전 초기화 lifecycle.
ts
interface OnInit {
onInit(): void
}OnWindowAttach
윈도우 생성 후 lifecycle.
ts
interface OnWindowAttach {
onWindowAttach(window: BrowserWindow): void
}OnDispose
윈도우 종료 시 정리 lifecycle.
ts
interface OnDispose {
onDispose(): void
}타입
ModuleMetadata
@Module() 데코레이터에 전달하는 모듈 구성 정보.
ts
type ModuleMetadata = {
providers: Constructor[]
controllers: Constructor[]
}HandleEntry
@Handle() 데코레이터가 생성하는 채널-메서드 매핑 정보.
ts
type HandleEntry = {
channel: string
methodKey: string
}IpcHandler
IPC 핸들러 함수 타입.
ts
type IpcHandler = (...args: any[]) => unknown | Promise<unknown>내부 유틸리티 함수
데코레이터 메타데이터를 조회하는 함수. 프레임워크 내부에서 사용하지만 export되어 있다.
isInjectable(cls)
클래스에 @Injectable() 데코레이터가 적용되었는지 확인한다.
ts
function isInjectable(cls: Constructor): booleangetHandlers(cls)
@Controller() 클래스에 등록된 @Handle 메타데이터 목록을 반환한다.
ts
function getHandlers(cls: Constructor): HandleEntry[]getModuleMetadata(cls)
@Module() 클래스의 메타데이터를 반환한다.
ts
function getModuleMetadata(cls: Constructor): ModuleMetadata | undefined