Skip to content

Commit fdb1786

Browse files
committed
feat(klesia sdk): slim down
1 parent 4057f3d commit fdb1786

File tree

15 files changed

+161
-209
lines changed

15 files changed

+161
-209
lines changed

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,4 +12,4 @@ jobs:
1212
- run: bun i --no-save
1313
- run: bun run build
1414
- run: bun run test
15-
- run: bunx pkg-pr-new publish './packages/klesia-sdk' './packages/accounts' './packages/connect' './packages/providers' './packages/utils' './apps/klesia'
15+
- run: bunx pkg-pr-new publish './packages/klesia-sdk' './packages/accounts' './packages/connect' './packages/providers' './packages/utils'

apps/klesia/docs/index.txt

Lines changed: 0 additions & 5 deletions
This file was deleted.

apps/klesia/docs/rpc.txt

Lines changed: 0 additions & 45 deletions
This file was deleted.

apps/klesia/package.json

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,6 @@
55
"module": "dist/index.js",
66
"types": "dist/index.d.ts",
77
"exports": {
8-
"./schema": {
9-
"types": "./dist/schema.d.ts",
10-
"default": "./dist/schema.js"
11-
},
128
".": {
139
"types": "./dist/index.d.ts",
1410
"default": "./dist/index.js"
@@ -21,15 +17,17 @@
2117
"test": "bun test --rerun-each 3",
2218
"cleanup": "rimraf dist .turbo node_modules"
2319
},
20+
"devDependencies": {
21+
"@mina-js/utils": "workspace:*"
22+
},
2423
"dependencies": {
2524
"@hono/node-server": "^1.12.2",
2625
"@hono/zod-openapi": "^0.16.0",
27-
"@mina-js/utils": "workspace:*",
2826
"@urql/core": "^5.0.6",
2927
"bigint-quantile": "^0.0.2",
3028
"dayjs": "^1.11.13",
3129
"dotenv": "^16.4.5",
32-
"hono": "^4.5.10",
30+
"hono": "4.6.9",
3331
"hono-rate-limiter": "^0.4.0",
3432
"nanoid": "^5.0.7",
3533
"ofetch": "^1.3.4",

apps/klesia/src/index.ts

Lines changed: 35 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,17 @@
11
import { getConnInfo } from "@hono/node-server/conninfo";
22
import { OpenAPIHono, createRoute } from "@hono/zod-openapi";
3-
import { PublicKeySchema } from "@mina-js/utils";
3+
import {
4+
KlesiaRpcMethod,
5+
KlesiaRpcMethodSchema,
6+
KlesiaRpcResponseSchema,
7+
PublicKeySchema,
8+
} from "@mina-js/utils";
49
import { rateLimiter } from "hono-rate-limiter";
510
import { cors } from "hono/cors";
611
import { logger } from "hono/logger";
712
import { nanoid } from "nanoid";
813
import { match } from "ts-pattern";
9-
import mainDocs from "../docs/index.txt";
10-
import rpcDocs from "../docs/rpc.txt";
1114
import { mina } from "./methods/mina";
12-
import { RpcMethod, RpcMethodSchema, RpcResponseSchema } from "./schema";
1315
import { buildResponse } from "./utils/build-response";
1416

1517
export const api = new OpenAPIHono();
@@ -35,22 +37,22 @@ api.doc("/api/openapi", {
3537
info: {
3638
version: "1.0.0",
3739
title: "Klesia RPC",
38-
description: mainDocs,
3940
},
4041
});
4142

4243
const rpcRoute = createRoute({
4344
method: "post",
4445
path: "/api",
45-
description: rpcDocs,
4646
request: {
47-
body: { content: { "application/json": { schema: RpcMethodSchema } } },
47+
body: {
48+
content: { "application/json": { schema: KlesiaRpcMethodSchema } },
49+
},
4850
},
4951
responses: {
5052
200: {
5153
content: {
5254
"application/json": {
53-
schema: RpcResponseSchema,
55+
schema: KlesiaRpcResponseSchema,
5456
},
5557
},
5658
description: "JSON-RPC response.",
@@ -59,10 +61,10 @@ const rpcRoute = createRoute({
5961
});
6062

6163
export const klesiaRpcRoute = api.openapi(rpcRoute, async ({ req, json }) => {
62-
const body = req.valid("json");
64+
const body = KlesiaRpcMethodSchema.parse(await req.json());
6365
return match(body)
6466
.with(
65-
{ method: RpcMethod.enum.mina_getTransactionCount },
67+
{ method: KlesiaRpcMethod.enum.mina_getTransactionCount },
6668
async ({ params }) => {
6769
const [publicKey] = params;
6870
const result = await mina.getTransactionCount({
@@ -76,14 +78,17 @@ export const klesiaRpcRoute = api.openapi(rpcRoute, async ({ req, json }) => {
7678
);
7779
},
7880
)
79-
.with({ method: RpcMethod.enum.mina_getBalance }, async ({ params }) => {
80-
const [publicKey] = params;
81-
const result = await mina.getBalance({
82-
publicKey: PublicKeySchema.parse(publicKey),
83-
});
84-
return json(buildResponse({ result }), 200);
85-
})
86-
.with({ method: RpcMethod.enum.mina_blockHash }, async () => {
81+
.with(
82+
{ method: KlesiaRpcMethod.enum.mina_getBalance },
83+
async ({ params }) => {
84+
const [publicKey] = params;
85+
const result = await mina.getBalance({
86+
publicKey: PublicKeySchema.parse(publicKey),
87+
});
88+
return json(buildResponse({ result }), 200);
89+
},
90+
)
91+
.with({ method: KlesiaRpcMethod.enum.mina_blockHash }, async () => {
8792
if (process.env.MINA_NETWORK === "zeko_devnet") {
8893
return json(
8994
buildResponse({
@@ -98,12 +103,12 @@ export const klesiaRpcRoute = api.openapi(rpcRoute, async ({ req, json }) => {
98103
const result = await mina.blockHash();
99104
return json(buildResponse({ result }), 200);
100105
})
101-
.with({ method: RpcMethod.enum.mina_chainId }, async () => {
106+
.with({ method: KlesiaRpcMethod.enum.mina_chainId }, async () => {
102107
const result = await mina.chainId();
103108
return json(buildResponse({ result }), 200);
104109
})
105110
.with(
106-
{ method: RpcMethod.enum.mina_sendTransaction },
111+
{ method: KlesiaRpcMethod.enum.mina_sendTransaction },
107112
async ({ params }) => {
108113
const [signedTransaction, type] = params;
109114
const result = await mina.sendTransaction({ signedTransaction, type });
@@ -115,21 +120,17 @@ export const klesiaRpcRoute = api.openapi(rpcRoute, async ({ req, json }) => {
115120
);
116121
},
117122
)
118-
.with({ method: RpcMethod.enum.mina_getAccount }, async ({ params }) => {
119-
const [publicKey] = params;
120-
const result = await mina.getAccount({
121-
publicKey: PublicKeySchema.parse(publicKey),
122-
});
123-
return json(buildResponse({ result }), 200);
124-
})
123+
.with(
124+
{ method: KlesiaRpcMethod.enum.mina_getAccount },
125+
async ({ params }) => {
126+
const [publicKey] = params;
127+
const result = await mina.getAccount({
128+
publicKey: PublicKeySchema.parse(publicKey),
129+
});
130+
return json(buildResponse({ result }), 200);
131+
},
132+
)
125133
.exhaustive();
126134
});
127135

128136
export type KlesiaRpc = typeof klesiaRpcRoute;
129-
export {
130-
KlesiaNetwork,
131-
RpcMethod,
132-
type RpcMethodType,
133-
type RpcResponseType,
134-
type RpcErrorType,
135-
} from "./schema";

apps/klesia/src/schema.ts

Lines changed: 0 additions & 105 deletions
This file was deleted.

apps/klesia/src/utils/node.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
import { KlesiaNetwork } from "@mina-js/utils";
12
import { Client, cacheExchange, fetchExchange } from "@urql/core";
23
import { match } from "ts-pattern";
34
import { z } from "zod";
4-
import { KlesiaNetwork } from "../schema";
55

66
const MINA_NETWORK = KlesiaNetwork.parse(process.env.MINA_NETWORK ?? "devnet");
77
const NODE_API_DEVNET = z

bun.lockb

264 Bytes
Binary file not shown.

packages/klesia-sdk/package.json

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,10 @@
1919
"peerDependencies": {
2020
"typescript": "^5.0.0"
2121
},
22+
"devDependencies": {
23+
"@mina-js/utils": "workspace:*"
24+
},
2225
"dependencies": {
23-
"@mina-js/klesia": "workspace:*",
2426
"micro-ftch": "^0.4.0",
2527
"ts-pattern": "^5.3.1"
2628
}

packages/klesia-sdk/src/client.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
import {
22
KlesiaNetwork,
3-
type RpcRequestType,
4-
type RpcResponseType,
5-
} from "@mina-js/klesia/schema";
3+
type KlesiaRpcRequestType,
4+
type KlesiaRpcResponseType,
5+
} from "@mina-js/utils";
66
import { ftch, jsonrpc } from "micro-ftch";
77
import { match } from "ts-pattern";
88

@@ -25,9 +25,9 @@ export const createClient = ({ network, customUrl }: CreateClientProps) => {
2525
)
2626
.exhaustive();
2727
const rpc = jsonrpc(net, baseUrl);
28-
const request = async <T extends string>(req: RpcRequestType) => {
28+
const request = async <T extends string>(req: KlesiaRpcRequestType) => {
2929
const params = req.params ?? [];
30-
const json: Extract<RpcResponseType, { method: T }>["result"] =
30+
const json: Extract<KlesiaRpcResponseType, { method: T }>["result"] =
3131
await rpc.call(req.method, ...params);
3232
return json;
3333
};

0 commit comments

Comments
 (0)