@arifwidianto/rpc-agent
Version:
RPC Agent for both client and server, extends more methods easily
79 lines • 2.86 kB
JavaScript
;
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