New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@ckb-lumos/rpc

Package Overview
Dependencies
Maintainers
3
Versions
160
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@ckb-lumos/rpc - npm Package Compare versions

Comparing version 0.18.0 to 0.19.0-alpha.0

lib/Base/chain.d.ts

98

lib/index.d.ts

@@ -1,64 +0,36 @@

import { Alert, BannedAddr, Block, BlockEconomicState, CellWithStatus, ChainInfo, Consensus, DryRunResult, Epoch, Hash, Header, HexNumber, HexString, Indexer, LocalNode, OutPoint, RemoteNode, SyncState, Transaction, TransactionProof, TransactionWithStatus, TxPoolIds, TxPoolInfo, TxPoolVerbosity } from "@ckb-lumos/base";
export declare type SerializedBlock = HexString;
export declare type SerializedHeader = HexString;
export declare type OutputsValidator = "well_known_scripts_only" | "passthrough";
export declare class RPC {
private rpcProxy;
/**
*
* @param uri
* @param indexer Will `waitForSync` after rpc call if provided.
* @param options
*/
constructor(uri: string, indexer?: Indexer, { waitForSyncCheckIntervalSeconds, blockDifference, rpcOptions, }?: {
waitForSyncCheckIntervalSeconds?: number;
blockDifference?: number;
rpcOptions?: Record<string, unknown>;
});
/**
*
* @param indexer If not provided or be undefined, will disable `waitForSync`, and if provided, will enable `waitForSync` with provided indexer.
*/
resetIndexer(indexer?: Indexer): void;
get_block(block_hash: Hash, verbosity: "0x0"): Promise<SerializedBlock | null>;
get_block(block_hash: Hash, verbosity?: "0x2"): Promise<Block | null>;
get_block_by_number(block_number: HexNumber, verbosity: "0x0"): Promise<SerializedBlock | null>;
get_block_by_number(block_number: HexNumber, verbosity?: "0x2"): Promise<Block | null>;
get_header(block_hash: Hash, verbosity: "0x0"): Promise<SerializedHeader | null>;
get_header(block_hash: Hash, verbosity?: "0x1"): Promise<Header | null>;
get_header_by_number(block_number: HexNumber, verbosity: "0x0"): Promise<SerializedHeader | null>;
get_header_by_number(block_number: HexNumber, verbosity?: "0x1"): Promise<Header | null>;
get_transaction(hash: Hash): Promise<TransactionWithStatus | null>;
get_block_hash(block_number: HexNumber): Promise<Hash | null>;
get_tip_header(verbosity: "0x0"): Promise<SerializedHeader>;
get_tip_header(verbosity?: "0x1"): Promise<Header>;
get_live_cell(out_point: OutPoint, with_data: boolean): Promise<CellWithStatus>;
get_tip_block_number(): Promise<HexNumber>;
get_current_epoch(): Promise<Epoch>;
get_epoch_by_number(epoch_number: HexNumber): Promise<Epoch | null>;
get_block_economic_state(block_hash: Hash): Promise<BlockEconomicState | null>;
get_transaction_proof(tx_hashes: Hash[], block_hash?: Hash): Promise<TransactionProof>;
verify_transaction_proof(tx_proof: TransactionProof): Promise<Hash[]>;
get_fork_block(block_hash: Hash, verbosity: "0x0"): Promise<SerializedBlock | null>;
get_fork_block(block_hash: Hash, verbosity?: "0x2"): Promise<Block | null>;
get_consensus(): Promise<Consensus>;
dry_run_transaction(tx: Transaction): Promise<DryRunResult>;
calculate_dao_maximum_withdraw(out_point: OutPoint, block_hash: Hash): Promise<HexNumber>;
local_node_info(): Promise<LocalNode>;
get_peers(): Promise<RemoteNode[]>;
get_banned_addresses(): Promise<BannedAddr>;
clear_banned_addresses(): Promise<null>;
set_ban(address: string, command: string, ban_time?: HexNumber, absolute?: boolean, reason?: string): Promise<null>;
sync_state(): Promise<SyncState>;
set_network_active(state: boolean): Promise<null>;
add_node(peer_id: string, address: string): Promise<null>;
remove_node(peer_id: string): Promise<null>;
ping_peers(): Promise<null>;
send_transaction(tx: Transaction, outputs_validator?: OutputsValidator): Promise<Hash>;
tx_pool_info(): Promise<TxPoolInfo>;
clear_tx_pool(): Promise<null>;
get_raw_tx_pool(verbose?: false): Promise<TxPoolIds>;
get_raw_tx_pool(verbose: true): Promise<TxPoolVerbosity>;
get_blockchain_info(): Promise<ChainInfo>;
send_alert(alert: Alert): Promise<null>;
import { Base } from "./Base";
import { Method } from "./method";
import { CKBComponents } from "./types/api";
import { formatter as paramsFormatter } from "./paramsFormatter";
import * as resultFormatter from "./resultFormatter";
export declare const ParamsFormatter: {
toOptional: (format?: ((args: any) => any) | undefined) => (arg: any) => any;
toArray: (format?: ((args: any) => any) | undefined) => (arg: any) => any;
toHash: (hash: string) => string;
toNumber: (number: string | bigint) => string;
toScript: (script: CKBComponents.Script) => import("./types/rpc").RPC.Script;
toOutPoint: (outPoint: CKBComponents.OutPoint | undefined) => import("./types/rpc").RPC.OutPoint | undefined;
toInput: (input: CKBComponents.CellInput) => import("./types/rpc").RPC.CellInput;
toOutput: (output: CKBComponents.CellOutput) => import("./types/rpc").RPC.CellOutput;
toDepType: (type: CKBComponents.DepType) => "code" | "dep_group";
toCellDep: (cellDep: CKBComponents.CellDep) => import("./types/rpc").RPC.CellDep;
toRawTransaction: (transaction: CKBComponents.RawTransaction) => import("./types/rpc").RPC.RawTransaction;
toPageNumber: (pageNo?: string | bigint) => string;
toPageSize: (pageSize?: string | bigint) => string;
toReverseOrder: (reverse?: boolean) => boolean;
toOutputsValidator: (outputsValidator: CKBComponents.OutputsValidator) => CKBComponents.OutputsValidator;
toBoolean: (value: boolean) => boolean;
toTransactionProof: (proof: CKBComponents.TransactionProof) => import("./types/rpc").RPC.TransactionProof;
};
export declare const ResultFormatter: typeof resultFormatter;
export declare class CKBRPC extends Base {
#private;
get node(): CKBComponents.Node;
get paramsFormatter(): typeof paramsFormatter;
get resultFormatter(): typeof resultFormatter;
constructor(url: string);
setNode(node: CKBComponents.Node): CKBComponents.Node;
addMethod: (options: CKBComponents.Method) => void;
createBatchRequest: <N extends "getTipBlockNumber" | "getTipHeader" | "getCurrentEpoch" | "getEpochByNumber" | "getBlockHash" | "getBlock" | "getHeader" | "getHeaderByNumber" | "getLiveCell" | "getTransaction" | "getCellbaseOutputCapacityDetails" | "getBlockEconomicState" | "getTransactionProof" | "verifyTransactionProof" | "getConsensus" | "getBlockByNumber" | "dryRunTransaction" | "calculateDaoMaximumWithdraw" | "localNodeInfo" | "getPeers" | "getBannedAddresses" | "clearBannedAddresses" | "setBan" | "syncState" | "setNetworkActive" | "addNode" | "removeNode" | "pingPeers" | "sendTransaction" | "txPoolInfo" | "clearTxPool" | "getRawTxPool" | "getBlockchainInfo" | "rpcProperties", P extends (string | number | object)[], R = any[]>(params?: any) => any;
}
export { CKBRPC as RPC };

@@ -6,249 +6,173 @@ "use strict";

});
exports.RPC = void 0;
exports.ResultFormatter = exports.RPC = exports.ParamsFormatter = exports.CKBRPC = void 0;
var _toolkit = require("@ckb-lumos/toolkit");
var _Base = require("./Base");
var _bi = require("@ckb-lumos/bi");
var _method = require("./method");
function asyncSleep(ms = 0) {
return new Promise(r => setTimeout(r, ms));
}
var _paramsFormatter = require("./paramsFormatter");
const handler = {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
get: (target, method) => {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
return async (...params) => {
const result = await target.rpc[method](...params);
var resultFormatter = _interopRequireWildcard(require("./resultFormatter"));
if (target.indexer) {
await target.waitForBlockSync();
}
var _exceptions = require("./exceptions");
return result;
};
}
};
var _axios = _interopRequireDefault(require("axios"));
class RpcProxy {
constructor(uri, indexer, {
waitForSyncCheckIntervalSeconds = 1,
blockDifference = 3,
rpcOptions = {}
} = {}) {
this.rpc = new _toolkit.RPC(uri, rpcOptions);
this.indexer = indexer;
this.waitForSyncCheckIntervalSeconds = waitForSyncCheckIntervalSeconds;
this.blockDifference = blockDifference;
}
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
resetIndexer(indexer) {
this.indexer = indexer;
}
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
getProxy() {
return new Proxy(this, handler);
}
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
async waitForBlockSync() {
if (!this.indexer) {
return;
}
// import axios from 'axios'
// import { MethodInBatchNotFoundException, PayloadInBatchException, IdNotMatchedInBatchException } from './exceptions'
const ParamsFormatter = _paramsFormatter.formatter;
exports.ParamsFormatter = ParamsFormatter;
const ResultFormatter = resultFormatter;
exports.ResultFormatter = ResultFormatter;
const header = await this.rpc.get_tip_header();
class CKBRPC extends _Base.Base {
#node = {
url: ""
};
const blockNumber = _bi.BI.from(header.number);
while (true) {
const tip = await this.indexer.tip();
if (tip) {
if (blockNumber.sub(tip.block_number).lte(this.blockDifference)) {
// TODO: do we need to handle forks?
break;
}
}
await asyncSleep(this.waitForSyncCheckIntervalSeconds * 1000);
}
get node() {
return this.#node;
}
}
#paramsFormatter = _paramsFormatter.formatter;
class RPC {
// eslint-disable-next-line @typescript-eslint/no-explicit-any
/**
*
* @param uri
* @param indexer Will `waitForSync` after rpc call if provided.
* @param options
*/
constructor(uri, indexer, {
waitForSyncCheckIntervalSeconds = 1,
blockDifference = 3,
rpcOptions = {}
} = {}) {
this.rpcProxy = new RpcProxy(uri, indexer, {
waitForSyncCheckIntervalSeconds,
blockDifference,
rpcOptions
}).getProxy();
get paramsFormatter() {
return this.#paramsFormatter;
}
/**
*
* @param indexer If not provided or be undefined, will disable `waitForSync`, and if provided, will enable `waitForSync` with provided indexer.
*/
#resultFormatter = resultFormatter;
resetIndexer(indexer) {
this.rpcProxy.resetIndexer(indexer);
} // Module Chain
async get_block(block_hash, verbosity) {
return this.rpcProxy.get_block(block_hash, verbosity || null);
get resultFormatter() {
return this.#resultFormatter;
}
async get_block_by_number(block_number, verbosity) {
return this.rpcProxy.get_block_by_number(block_number, verbosity || null);
}
constructor(url) {
super();
this.setNode({
url
});
Object.defineProperties(this, {
addMethod: {
value: this.addMethod,
enumerable: false,
writable: false,
configurable: false
},
setNode: {
value: this.setNode,
enumerable: false,
writable: false,
configurable: false
} // createBatchRequest: { value: this.createBatchRequest, enumerable: false, writable: false, configurable: false },
async get_header(block_hash, verbosity) {
return this.rpcProxy.get_header(block_hash, verbosity || null);
});
Object.keys(this.rpcProperties).forEach(name => {
this.addMethod({
name,
...this.rpcProperties[name]
});
});
}
async get_header_by_number(block_number, verbosity) {
return this.rpcProxy.get_header_by_number(block_number, verbosity || null);
setNode(node) {
Object.assign(this.node, node);
return this.node;
}
async get_transaction(hash) {
return this.rpcProxy.get_transaction(hash);
}
addMethod = options => {
const method = new _method.Method(this.node, options);
Object.defineProperty(this, options.name, {
value: method.call,
enumerable: true
});
};
/* eslint-disable */
async get_block_hash(block_number) {
return this.rpcProxy.get_block_hash(block_number);
}
createBatchRequest = ( // TODO fix me
// params: [method: N, ...rest: P][] = [],
params = []) => {
const ctx = this; // TODO fix me
async get_tip_header(verbosity) {
return this.rpcProxy.get_tip_header(verbosity);
}
const proxied = new Proxy([], {
set(...p) {
const methods = Object.keys(ctx);
async get_live_cell(out_point, with_data) {
return this.rpcProxy.get_live_cell(out_point, with_data);
}
if (p[1] !== "length") {
var _p$;
async get_tip_block_number() {
return this.rpcProxy.get_tip_block_number();
}
const name = p === null || p === void 0 ? void 0 : (_p$ = p[2]) === null || _p$ === void 0 ? void 0 : _p$[0];
async get_current_epoch() {
return this.rpcProxy.get_current_epoch();
}
if (methods.indexOf(name) === -1) {
throw new _exceptions.MethodInBatchNotFoundException(name);
}
}
async get_epoch_by_number(epoch_number) {
return this.rpcProxy.get_epoch_by_number(epoch_number);
}
return Reflect.set(...p);
}
async get_block_economic_state(block_hash) {
return this.rpcProxy.get_block_economic_state(block_hash);
}
});
Object.defineProperties(proxied, {
add: {
value(...args) {
this.push(args);
return this;
}
async get_transaction_proof(tx_hashes, block_hash) {
return this.rpcProxy.get_transaction_proof(tx_hashes, block_hash || null);
}
},
remove: {
value(i) {
this.splice(i, 1);
return this;
}
async verify_transaction_proof(tx_proof) {
return this.rpcProxy.verify_transaction_proof(tx_proof);
}
},
exec: {
async value() {
// TODO fix me
const payload = proxied.map(([f, ...p], i) => {
try {
const method = new _method.Method(ctx.node, { ...ctx.rpcProperties[f],
name: f
});
return method.getPayload(...p);
} catch (err) {
throw new _exceptions.PayloadInBatchException(i, err.message);
}
});
const batchRes = await (0, _axios.default)({
method: "POST",
headers: {
"content-type": "application/json"
},
data: payload,
url: ctx.#node.url,
httpAgent: ctx.#node.httpAgent,
httpsAgent: ctx.#node.httpsAgent
});
return batchRes.data.map((res, i) => {
var _ctx$rpcProperties$pr, _ctx$rpcProperties$pr2, _ctx$rpcProperties$pr3;
async get_fork_block(block_hash, verbosity) {
return this.rpcProxy.get_fork_block(block_hash, verbosity ? verbosity : null);
}
if (res.id !== payload[i].id) {
return new _exceptions.IdNotMatchedInBatchException(i, payload[i].id, res.id);
}
async get_consensus() {
return this.rpcProxy.get_consensus();
} // Module Experiment
return (_ctx$rpcProperties$pr = (_ctx$rpcProperties$pr2 = (_ctx$rpcProperties$pr3 = ctx.rpcProperties[proxied[i][0]]).resultFormatters) === null || _ctx$rpcProperties$pr2 === void 0 ? void 0 : _ctx$rpcProperties$pr2.call(_ctx$rpcProperties$pr3, res.result)) !== null && _ctx$rpcProperties$pr !== void 0 ? _ctx$rpcProperties$pr : res.result;
});
}
}
}); // TODO fix me
async dry_run_transaction(tx) {
return this.rpcProxy.dry_run_transaction(tx);
}
async calculate_dao_maximum_withdraw(out_point, block_hash) {
return this.rpcProxy.calculate_dao_maximum_withdraw(out_point, block_hash);
} // Module Net
async local_node_info() {
return this.rpcProxy.local_node_info();
}
async get_peers() {
return this.rpcProxy.get_peers();
}
async get_banned_addresses() {
return this.rpcProxy.get_banned_addresses();
}
async clear_banned_addresses() {
return this.rpcProxy.clear_banned_addresses();
}
async set_ban(address, command, ban_time, absolute, reason) {
return this.rpcProxy.set_ban(address, command, ban_time || null, absolute !== undefined ? absolute : null, reason || null);
}
async sync_state() {
return this.rpcProxy.sync_state();
}
async set_network_active(state) {
return this.rpcProxy.set_network_active(state);
}
async add_node(peer_id, address) {
return this.rpcProxy.add_node(peer_id, address);
}
async remove_node(peer_id) {
return this.rpcProxy.remove_node(peer_id);
}
async ping_peers() {
return this.rpcProxy.ping_peers();
} // Module pool
async send_transaction(tx, outputs_validator) {
return this.rpcProxy.send_transaction(tx, outputs_validator || null);
}
async tx_pool_info() {
return this.rpcProxy.tx_pool_info();
}
async clear_tx_pool() {
return this.rpcProxy.clear_tx_pool();
}
async get_raw_tx_pool(verbose) {
return this.rpcProxy.get_raw_tx_pool(verbose !== undefined ? verbose : null);
} // Module Stats
async get_blockchain_info() {
return this.rpcProxy.get_blockchain_info();
} // Module Alert
async send_alert(alert) {
return this.rpcProxy.send_alert(alert);
} // Module Miner
params.forEach(p => proxied.push(p));
return proxied;
};
}
exports.RPC = RPC;
exports.RPC = exports.CKBRPC = CKBRPC;
//# sourceMappingURL=index.js.map
{
"name": "@ckb-lumos/rpc",
"version": "0.18.0",
"version": "0.19.0-alpha.0",
"description": "RPC module for CKB",
"author": "Xuejie Xiao <xxuejie@gmail.com>",
"homepage": "https://github.com/nervosnetwork/lumos#readme",
"license": "MIT",
"main": "lib/index.js",
"types": "lib/index.d.ts",
"engines": {

@@ -15,8 +13,10 @@ "node": ">=12.0.0"

"lib": "lib",
"test": "tests"
"test": "__tests__"
},
"files": [
"lib",
"src"
"lib"
],
"publishConfig": {
"access": "public"
},
"repository": {

@@ -26,6 +26,10 @@ "type": "git",

},
"bugs": {
"url": "https://github.com/nervosnetwork/lumos/issues"
},
"scripts": {
"fmt": "prettier --write \"{src,tests}/**/*.ts\" package.json",
"lint": "eslint -c ../../.eslintrc.js \"{src,tests}/**/*.ts\"",
"test": "echo \"No tests yet!\"",
"doc": "../../node_modules/.bin/typedoc --out docs --mode modules --includeDeclarations --excludeExternals --ignoreCompilerErrors --theme default",
"fmt": "prettier --write \"{src,tests,examples}/**/*.ts\" package.json",
"lint": "eslint -c ../../.eslintrc.js \"{src,tests,examples}/**/*.ts\"",
"test": "../../node_modules/.bin/jest",
"build": "npm run build:types && npm run build:js",

@@ -38,22 +42,11 @@ "build:types": "tsc --declaration --emitDeclarationOnly",

},
"bugs": {
"url": "https://github.com/nervosnetwork/lumos/issues"
},
"dependencies": {
"@ckb-lumos/base": "0.18.0",
"@ckb-lumos/bi": "0.18.0",
"@ckb-lumos/toolkit": "0.18.0"
"@ckb-lumos/bi": "^0.19.0-alpha.0",
"axios": "0.21.4",
"tslib": "2.3.1"
},
"ava": {
"extensions": [
"ts"
],
"require": [
"ts-node/register"
]
"devDependencies": {
"jest": "^28.1.3"
},
"publishConfig": {
"access": "public"
},
"gitHead": "732d60fdd2f4cbb7401df9b67c6295ea79c99180"
"gitHead": "665f4e985dc1444a27e2e1db499d0ea64cf4d5b8"
}

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc