API reference@evolu/commonlocal‑first/Owner › createOwnerWebSocketTransport

function createOwnerWebSocketTransport(config: {
  ownerId: string & Brand<"Id"> & Brand<"OwnerId">;
  url: string;
}): OwnerWebSocketTransport;

Defined in: packages/common/src/local-first/Owner.ts:396

Creates an OwnerWebSocketTransport for the given relay URL and OwnerId.

The URL must be a WebSocket base URL without query parameters or fragments (e.g., wss://relay.evolu.dev, not wss://relay.evolu.dev?foo=bar). The function appends the ownerId as a query parameter.

Example

import {
  AppName,
  createAppOwner,
  createEvolu,
  createOwnerWebSocketTransport,
  createOwnerSecret,
  createRandomBytes,
  id,
} from "@evolu/common";

// Create once, persist the mnemonic securely, and restore it on later runs.
const appOwner = createAppOwner(
  createOwnerSecret({ randomBytes: createRandomBytes() }),
);
const transport = createOwnerWebSocketTransport({
  url: "wss://relay.evolu.dev",
  ownerId: appOwner.id,
});
const createTodoEvolu = createEvolu(
  { todo: { id: id("Todo") } },
  {
    appName: AppName.orThrow("OwnerTransportExample"),
    appOwner,
    transports: [transport],
  },
);

expect(createTodoEvolu).toBeTypeOf("function");
expect(transport).toEqual({
  type: "WebSocket",
  url: `wss://relay.evolu.dev?ownerId=${appOwner.id}`,
});