@xyo-network/xl1-rpc 3.0.1 → 3.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2911,6 +2911,187 @@ var JsonRpcXyoSigner = class extends JsonRpcXyoSignerMethods {
2911
2911
  static monikers = [XyoSignerMoniker2];
2912
2912
  static surface = "node";
2913
2913
  };
2914
+
2915
+ // src/engine-node/composedRpcEngineFromConnection.ts
2916
+ import {
2917
+ JsonRpcEngineV2,
2918
+ JsonRpcServer as JsonRpcServer2
2919
+ } from "@metamask/json-rpc-engine/v2";
2920
+
2921
+ // src/engine-node/middleware/createHandlerMiddleware.ts
2922
+ import { createScaffoldMiddleware } from "@metamask/json-rpc-engine/v2";
2923
+ var buildHandlerScaffold = (handlers) => {
2924
+ const scaffold = {};
2925
+ for (const [method, handler] of Object.entries(handlers)) {
2926
+ if (handler === void 0) continue;
2927
+ scaffold[method] = async ({ context }) => {
2928
+ const schema = context.assertGet("schema");
2929
+ const params = context.assertGet("params");
2930
+ const result = await handler(params);
2931
+ return schema.result.to.parse(result);
2932
+ };
2933
+ }
2934
+ return createScaffoldMiddleware(scaffold);
2935
+ };
2936
+ var createTypedHandlerMiddleware = (_schemas, handlers) => buildHandlerScaffold(handlers);
2937
+
2938
+ // src/engine-node/middleware/createLoggingMiddleware.ts
2939
+ var createLoggingMiddleware = (logger) => async ({ request, next }) => {
2940
+ try {
2941
+ return await next();
2942
+ } catch (error) {
2943
+ logger?.error(`RPC ${request.method} failed`, error);
2944
+ throw error;
2945
+ }
2946
+ };
2947
+
2948
+ // src/engine-node/middleware/createMethodNotFoundMiddleware.ts
2949
+ var createMethodNotFoundMiddleware = () => ({ request }) => {
2950
+ throw new Error(`${JsonRpcErrorCodes.MethodNotFound.message} (${request.method})`);
2951
+ };
2952
+
2953
+ // src/engine-node/middleware/createValidationMiddleware.ts
2954
+ var createValidationMiddleware = (schemas) => ({
2955
+ request,
2956
+ context,
2957
+ next
2958
+ }) => {
2959
+ const schema = schemas[request.method];
2960
+ if (schema === void 0) return next();
2961
+ let requestSchema = requestSchemas[request.method];
2962
+ if (requestSchema === void 0) {
2963
+ requestSchema = createRequestSchema(request.method, schema.params.from);
2964
+ requestSchemas[request.method] = requestSchema;
2965
+ }
2966
+ const parsed = requestSchema.safeParse(request);
2967
+ if (!parsed.success) {
2968
+ throw new Error(parsed.error.message);
2969
+ }
2970
+ context.set("schema", schema);
2971
+ context.set("params", parsed.data.params);
2972
+ return next();
2973
+ };
2974
+
2975
+ // src/engine-node/composedRpcEngineFromConnection.ts
2976
+ var buildTypedSubEngine = (schemas, handlers) => JsonRpcEngineV2.create({
2977
+ middleware: [
2978
+ createValidationMiddleware(schemas),
2979
+ createTypedHandlerMiddleware(schemas, handlers)
2980
+ ]
2981
+ });
2982
+ var composedRpcEngineFromConnection = (connection, logger) => {
2983
+ const { runner, viewer } = connection;
2984
+ const subEngines = [];
2985
+ if (runner) {
2986
+ subEngines.push(buildTypedSubEngine(XyoRunnerRpcSchemas, rpcMethodHandlersFromRunner(runner)));
2987
+ }
2988
+ if (viewer) {
2989
+ subEngines.push(buildTypedSubEngine(XyoViewerRpcSchemas, rpcMethodHandlersFromViewer(viewer)));
2990
+ }
2991
+ const accountBalanceViewer = viewer?.account?.balance;
2992
+ if (accountBalanceViewer) {
2993
+ subEngines.push(buildTypedSubEngine(
2994
+ AccountBalanceViewerRpcSchemas,
2995
+ rpcMethodHandlersFromAccountBalanceViewer(accountBalanceViewer)
2996
+ ));
2997
+ }
2998
+ const blockViewer = viewer?.block;
2999
+ if (blockViewer) {
3000
+ subEngines.push(buildTypedSubEngine(
3001
+ BlockViewerRpcSchemas,
3002
+ rpcMethodHandlersFromBlockViewer(blockViewer)
3003
+ ));
3004
+ }
3005
+ const finalizationViewer = viewer?.finalization;
3006
+ if (finalizationViewer) {
3007
+ subEngines.push(buildTypedSubEngine(
3008
+ FinalizationViewerRpcSchemas,
3009
+ rpcMethodHandlersFromFinalizationViewer(finalizationViewer)
3010
+ ));
3011
+ }
3012
+ const mempoolViewer = viewer?.mempool;
3013
+ if (mempoolViewer) {
3014
+ subEngines.push(buildTypedSubEngine(
3015
+ MempoolViewerRpcSchemas,
3016
+ rpcMethodHandlersFromMempoolViewer(mempoolViewer)
3017
+ ));
3018
+ }
3019
+ const timeSyncViewer = viewer?.time;
3020
+ if (timeSyncViewer) {
3021
+ subEngines.push(buildTypedSubEngine(
3022
+ TimeSyncViewerRpcSchemas,
3023
+ rpcMethodHandlersFromTimeSyncViewer(timeSyncViewer)
3024
+ ));
3025
+ }
3026
+ const transactionViewer = viewer?.transaction;
3027
+ if (transactionViewer) {
3028
+ subEngines.push(buildTypedSubEngine(
3029
+ TransactionViewerRpcSchemas,
3030
+ rpcMethodHandlersFromTransactionViewer(transactionViewer)
3031
+ ));
3032
+ }
3033
+ const mempoolRunner = runner?.mempool;
3034
+ if (mempoolRunner) {
3035
+ subEngines.push(buildTypedSubEngine(
3036
+ MempoolRunnerRpcSchemas,
3037
+ rpcMethodHandlersFromMempoolRunner(mempoolRunner)
3038
+ ));
3039
+ }
3040
+ const networkStakeViewer = viewer?.networkStake;
3041
+ if (networkStakeViewer?.stepRewards?.position) {
3042
+ subEngines.push(buildTypedSubEngine(
3043
+ NetworkStakingStepRewardsByPositionViewerRpcSchemas,
3044
+ rpcMethodHandlersFromNetworkStakingStepRewardsByPositionViewer(networkStakeViewer.stepRewards.position)
3045
+ ));
3046
+ }
3047
+ const middleware = [
3048
+ createLoggingMiddleware(logger),
3049
+ ...subEngines.map((engine) => engine.asMiddleware()),
3050
+ createMethodNotFoundMiddleware()
3051
+ ];
3052
+ return JsonRpcEngineV2.create({ middleware });
3053
+ };
3054
+ var composedRpcServerFromConnection = (connection, logger) => {
3055
+ const engine = composedRpcEngineFromConnection(connection, logger);
3056
+ return new JsonRpcServer2({ engine });
3057
+ };
3058
+
3059
+ // src/engine-node/rpcEngineFromConnection.ts
3060
+ import { JsonRpcEngineV2 as JsonRpcEngineV22, JsonRpcServer as JsonRpcServer3 } from "@metamask/json-rpc-engine/v2";
3061
+ var rpcEngineFromConnection = (connection, logger) => {
3062
+ const handlers = rpcMethodHandlersFromConnection(connection);
3063
+ const middleware = async ({ request }) => {
3064
+ const method = request.method;
3065
+ const handler = handlers[method];
3066
+ const schema = AllRpcSchemas[method];
3067
+ if (schema === void 0 || handler === void 0) {
3068
+ throw new Error(JsonRpcErrorCodes.MethodNotFound.message);
3069
+ }
3070
+ let requestSchema = requestSchemas[method];
3071
+ if (requestSchema == void 0) {
3072
+ requestSchema = createRequestSchema(method, schema.params.from);
3073
+ requestSchemas[method] = requestSchema;
3074
+ }
3075
+ const parsed = requestSchema.safeParse(request);
3076
+ if (!parsed.success) {
3077
+ logger?.error("RPC Request Validation Error", parsed.error);
3078
+ throw new Error(parsed.error.message);
3079
+ }
3080
+ const { params } = parsed.data;
3081
+ try {
3082
+ const result = await handler(params);
3083
+ return schema.result.to.parse(result);
3084
+ } catch (error) {
3085
+ logger?.error("RPC Response Handler Error", error);
3086
+ throw error;
3087
+ }
3088
+ };
3089
+ return JsonRpcEngineV22.create({ middleware: [middleware] });
3090
+ };
3091
+ function rpcServerFromConnection(connection, logger) {
3092
+ const engine = rpcEngineFromConnection(connection, logger);
3093
+ return new JsonRpcServer3({ engine });
3094
+ }
2914
3095
  export {
2915
3096
  AbstractJsonRpcRunner,
2916
3097
  AbstractJsonRpcViewer,
@@ -2981,13 +3162,20 @@ export {
2981
3162
  XyoRunnerRpcSchemas,
2982
3163
  XyoSignerRpcSchemas,
2983
3164
  XyoViewerRpcSchemas,
3165
+ composedRpcEngineFromConnection,
3166
+ composedRpcServerFromConnection,
3167
+ createLoggingMiddleware,
3168
+ createMethodNotFoundMiddleware,
2984
3169
  createRequestSchema,
2985
3170
  createResponseSchema,
3171
+ createTypedHandlerMiddleware,
3172
+ createValidationMiddleware,
2986
3173
  hasSessionId,
2987
3174
  isEventWithId,
2988
3175
  isMessageWithId,
2989
3176
  jsonrpc,
2990
3177
  requestSchemas,
3178
+ rpcEngineFromConnection,
2991
3179
  rpcMethodHandlersFromAccountBalanceViewer,
2992
3180
  rpcMethodHandlersFromBlockViewer,
2993
3181
  rpcMethodHandlersFromConnection,
@@ -3002,6 +3190,7 @@ export {
3002
3190
  rpcMethodHandlersFromSigner,
3003
3191
  rpcMethodHandlersFromTimeSyncViewer,
3004
3192
  rpcMethodHandlersFromTransactionViewer,
3005
- rpcMethodHandlersFromViewer
3193
+ rpcMethodHandlersFromViewer,
3194
+ rpcServerFromConnection
3006
3195
  };
3007
3196
  //# sourceMappingURL=index.mjs.map