From ee67183a4ce4b620d35d0b8c23d563de42e666a3 Mon Sep 17 00:00:00 2001 From: kodemon Date: Fri, 25 Apr 2025 19:02:22 +0000 Subject: [PATCH] feat: add relay factory --- libraries/api.ts | 2 +- libraries/relay.ts | 10 ++++++++++ mod.ts | 1 - tests/mocks/server.ts | 3 +-- 4 files changed, 12 insertions(+), 4 deletions(-) diff --git a/libraries/api.ts b/libraries/api.ts index 48514ef..c0975ac 100644 --- a/libraries/api.ts +++ b/libraries/api.ts @@ -7,7 +7,7 @@ import { Route, RouteMethod } from "./route.ts"; const SUPPORTED_MEHODS = ["GET", "POST", "PUT", "PATCH", "DELETE"]; -export class RelayApi { +export class Api { readonly #index = { rest: new Map(), rpc: new Map(), diff --git a/libraries/relay.ts b/libraries/relay.ts index d94bb95..dcb5f24 100644 --- a/libraries/relay.ts +++ b/libraries/relay.ts @@ -1,3 +1,4 @@ +import { Api } from "./api.ts"; import { makeRelayClient, RelayClient, RelayClientConfig } from "./client.ts"; import { Procedure } from "./procedure.ts"; import { Route, RouteMethod } from "./route.ts"; @@ -24,6 +25,15 @@ export class Relay< indexRelays(relays, this.#index); } + /** + * Create a new relay api instance with the given relays. + * + * @param relays - List of relays to handle. + */ + api(relays: TRelays): Api { + return new Api(relays); + } + /** * Create a new relay client instance from the instance procedures. * diff --git a/mod.ts b/mod.ts index 42559a4..fc5b40e 100644 --- a/mod.ts +++ b/mod.ts @@ -1,6 +1,5 @@ export * from "./libraries/action.ts"; export * from "./libraries/adapter.ts"; -export * from "./libraries/api.ts"; export * from "./libraries/errors.ts"; export * from "./libraries/procedure.ts"; export * from "./libraries/relay.ts"; diff --git a/tests/mocks/server.ts b/tests/mocks/server.ts index cbee7c3..a6c2f55 100644 --- a/tests/mocks/server.ts +++ b/tests/mocks/server.ts @@ -1,4 +1,3 @@ -import { RelayApi } from "../../libraries/api.ts"; import { NotFoundError } from "../../mod.ts"; import { addNumbers } from "./actions.ts"; import { relay } from "./relay.ts"; @@ -6,7 +5,7 @@ import { User } from "./user.ts"; export let users: User[] = []; -export const api = new RelayApi([ +export const api = relay.api([ relay.method("user:create").handle(async ({ name, email }) => { const id = crypto.randomUUID(); users.push({ id, name, email, createdAt: new Date() });