Skip to content

달빛약속 / core/mod / Extension

Interface: Extension

달빛 약속의 기능을 확장하기 위한 표준 인터페이스입니다.

이 인터페이스를 구현하여 YaksokSession에 등록하면, 달빛 약속 코드 내에서 외부 시스템(예: JavaScript, Python, 파일 시스템)과 상호작용하는 FFI(Foreign Function Interface) 기능을 제공할 수 있습니다.

See

YaksokSession.extend

Example

ts
// 간단한 동기 FFI 런타임을 구현하는 예시
class MySimpleFFI implements Extension {
  manifest: ExtensionManifest = {
    ffiRunner: {
      runtimeName: 'MySimpleFFI',
    },
  };

  executeFFI(code: string, args: Record<string, any>) {
    // 실제로는 여기서 `code`와 `args`를 사용하여 외부 로직을 실행합니다.
    console.log(`Executing in MySimpleFFI: ${code}`);
    // 결과를 달빛 약속의 값 타입으로 변환하여 반환해야 합니다.
    return new StringValue("FFI 결과");
  }
}

// 사용법
const session = new YaksokSession();
await session.extend(new MySimpleFFI());
await session.yaksok(`번역 "MySimpleFFI" "코드" 결과`);

Properties

manifest

manifest: ExtensionManifest

확장의 기능과 메타데이터를 담고 있는 매니페스트 객체입니다.

See

ExtensionManifest

Defined in

core/extension/extension.ts:76

Methods

executeFFI()

executeFFI(code, args): any

번역 구문을 통해 외부 코드를 실행하는 핵심 메서드입니다.

Parameters

code: string

번역 구문에서 실행하도록 지정된 코드 문자열입니다.

args: FunctionInvokingParams

코드 실행에 필요한 값들입니다. 달빛 약속의 변수들이 이 객체를 통해 전달됩니다.

Returns

any

실행 결과를 달빛 약속이 이해할 수 있는 ValueType으로 변환하여 반환해야 합니다. 비동기 작업도 지원됩니다.

Defined in

core/extension/extension.ts:68


init()?

optional init(): void | Promise<void>

확장이 세션에 등록될 때 호출되는 선택적 초기화 함수입니다. 비동기적인 설정 작업(예: Wasm 모듈 로딩, 네트워크 연결)에 사용될 수 있습니다.

Returns

void | Promise<void>

Defined in

core/extension/extension.ts:61