API reference › @evolu/common › local‑first/Owner › RelayUrlFromString
const RelayUrlFromString: transform(
"RelayUrlFromString",
String,
RelayUrl,
{
from: (value: string): Result<string, RelayUrlFromStringError> => {
const url = WebSocketUrlFromString.fromUnknown(value);
return url.ok && !url.value.includes("?")
? ok(url.value)
: err({ type: "RelayUrlFromString", value });
},
to: (value: RelayUrl) => value,
},
(error) =>
`The value ${JSON.stringify(error.value)} is not a valid relay URL.`,
);
Defined in: packages/common/src/local-first/Owner.ts:640
Transforms a relay URL into its canonical RelayUrl.
Accepts what WebSocketUrlFromString accepts when the result has no query. Encoding returns the canonical spelling, not the original one.
Example
import {
assertEqual,
assertErr,
assertOk,
RelayUrlFromString,
} from "@evolu/common";
assertOk(
RelayUrlFromString.fromUnknown("wss://free.evoluhq.com"),
"wss://free.evoluhq.com/",
);
const invalid = RelayUrlFromString.fromUnknown("free.evoluhq.com");
assertErr(invalid, {
type: "RelayUrlFromString",
value: "free.evoluhq.com",
});
assertEqual(
RelayUrlFromString.formatError(invalid.error),
'The value "free.evoluhq.com" is not a valid relay URL.',
);