UNPKG

@arifwidianto/rpc-agent

Version:

RPC Agent for both client and server, extends more methods easily

79 lines 2.86 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.validateParams = exports.isJsonValue = exports.isJsonRpcError = exports.isJsonRpcBatchResponse = exports.isJsonRpcBatchRequest = exports.isJsonRpcResponse = exports.isJsonRpcRequest = exports.isArray = exports.isBoolean = exports.isNumber = exports.isString = exports.isObject = void 0; function isObject(value) { return typeof value === "object" && value !== null && !Array.isArray(value); } exports.isObject = isObject; function isString(value) { return typeof value === "string"; } exports.isString = isString; function isNumber(value) { return typeof value === "number" && !isNaN(value); } exports.isNumber = isNumber; function isBoolean(value) { return typeof value === "boolean"; } exports.isBoolean = isBoolean; function isArray(value) { return Array.isArray(value); } exports.isArray = isArray; function isJsonRpcRequest(value) { if (!isObject(value)) return false; const { jsonrpc, method, id, params } = value; return (jsonrpc === "2.0" && typeof method === "string" && (typeof id === "string" || typeof id === "number" || id === null) && (params === undefined || isObject(params))); } exports.isJsonRpcRequest = isJsonRpcRequest; function isJsonRpcResponse(value) { if (!isObject(value)) return false; const { jsonrpc, id, result, error } = value; const hasValidId = typeof id === "string" || typeof id === "number" || id === null; const hasValidResult = result !== undefined; const hasValidError = error !== undefined && isObject(error) && typeof error.code === "number" && typeof error.message === "string"; return jsonrpc === "2.0" && hasValidId && (hasValidResult || hasValidError); } exports.isJsonRpcResponse = isJsonRpcResponse; function isJsonRpcBatchRequest(value) { return isArray(value) && value.every(isJsonRpcRequest); } exports.isJsonRpcBatchRequest = isJsonRpcBatchRequest; function isJsonRpcBatchResponse(value) { return isArray(value) && value.every(isJsonRpcResponse); } exports.isJsonRpcBatchResponse = isJsonRpcBatchResponse; function isJsonRpcError(value) { if (!isObject(value)) return false; const newLocal = value; if (!isObject(newLocal)) return false; const { code, message } = newLocal; return typeof code === "number" && typeof message === "string"; } exports.isJsonRpcError = isJsonRpcError; function isJsonValue(value) { try { JSON.stringify(value); return true; } catch { return false; } } exports.isJsonValue = isJsonValue; function validateParams(params, validator) { if (!validator(params)) { throw new Error("Invalid params"); } return params; } exports.validateParams = validateParams; //# sourceMappingURL=type-utils.js.map