import * as Effect from "effect/Effect"; import type { AuthVault } from "./vault.ts"; // Preserve each RPC receiver and derive values from the server before native // pipelining/disposable envelopes are added. RPC transport failures are defects. export function vaultClient(stub: DurableObjectStub) { return { createContinuation: ( ...args: Parameters ) => Effect.promise((): ReturnType => stub.createContinuation(...args), ), createCode: (...args: Parameters) => Effect.promise((): ReturnType => stub.createCode(...args), ), claimContinuation: (...args: Parameters) => Effect.promise((): ReturnType => stub.claimContinuation(...args), ), claimCode: (...args: Parameters) => Effect.promise((): ReturnType => stub.claimCode(...args), ), createOperation: (...args: Parameters) => Effect.promise((): ReturnType => stub.createOperation(...args), ), operation: (...args: Parameters) => Effect.promise((): ReturnType => stub.operation(...args), ), retireBootstrap: (...args: Parameters) => Effect.promise((): ReturnType => stub.retireBootstrap(...args), ), createTransaction: (...args: Parameters) => Effect.promise((): ReturnType => stub.createTransaction(...args), ), createSession: (...args: Parameters) => Effect.promise((): ReturnType => stub.createSession(...args), ), createGrant: (...args: Parameters) => Effect.promise((): ReturnType => stub.createGrant(...args), ), claimTransaction: (...args: Parameters) => Effect.promise((): ReturnType => stub.claimTransaction(...args), ), session: (...args: Parameters) => Effect.promise((): ReturnType => stub.session(...args), ), grant: (...args: Parameters) => Effect.promise((): ReturnType => stub.grant(...args)), selectAccount: (...args: Parameters) => Effect.promise((): ReturnType => stub.selectAccount(...args), ), retireSession: (...args: Parameters) => Effect.promise((): ReturnType => stub.retireSession(...args), ), destroy: (...args: Parameters) => Effect.promise((): ReturnType => stub.destroy(...args), ), }; }