diff --git a/src/lib/lockup.ts b/src/lib/lockup.ts index e3867ca..bc4f5b2 100644 --- a/src/lib/lockup.ts +++ b/src/lib/lockup.ts @@ -1,11 +1,11 @@ import BN from "bn.js"; -import { ConnectConfig } from "near-api-js/lib/connect"; import { CodeResult } from "near-api-js/lib/providers/provider"; import { BinaryReader } from "near-api-js/lib/utils/serialize"; import { AccountLockup, BlockReference, + ConnectOptions, LockupState, ViewAccount, ViewAccountQuery, @@ -32,7 +32,7 @@ import { */ export const viewLockupState = async ( contractId: string, - nearConfig?: ConnectConfig, + nearConfig?: ConnectOptions, blockReference: BlockReference = { finality: "final" } ): Promise => { const near = await nearApi(nearConfig); @@ -95,7 +95,7 @@ export const viewLockupState = async ( */ export const getAccountBalance = async ( contractId: string, - nearConfig?: ConnectConfig, + nearConfig?: ConnectOptions, blockReference: BlockReference = { finality: "final" } ): Promise => { const near = await nearApi(nearConfig); @@ -127,7 +127,7 @@ export const getAccountBalance = async ( */ export const viewAccountBalance = async ( accountId: string, - nearConfig?: ConnectConfig, + nearConfig?: ConnectOptions, blockReference: BlockReference = { finality: "final" } ): Promise => { const near = await nearApi(nearConfig); @@ -159,7 +159,7 @@ export const viewAccountBalance = async ( */ export const viewLockupAccount = async ( lockupAccountId: string, - nearConfig?: ConnectConfig, + nearConfig?: ConnectOptions, blockReference?: BlockReference ): Promise => { try { diff --git a/src/lib/near.ts b/src/lib/near.ts index cdf93df..5df607d 100644 --- a/src/lib/near.ts +++ b/src/lib/near.ts @@ -2,7 +2,9 @@ import * as near from "near-api-js"; import { ConnectConfig } from "near-api-js/lib/connect"; import { InMemoryKeyStore } from "near-api-js/lib/key_stores"; -export const connectOptions: ConnectConfig = { +import { ConnectOptions } from "../types/types"; + +const connectOptions: ConnectConfig = { nodeUrl: "https://rpc.mainnet.near.org", networkId: "mainnet", keyStore: new InMemoryKeyStore(), @@ -11,10 +13,14 @@ export const connectOptions: ConnectConfig = { /** * Connect to NEAR rpc. - * @param connectOptions connection options {@link ConnectConfig}. + * @param config connection options {@link ConnectConfig}. * @returns connection to Near network. */ -export const nearApi = async (config: ConnectConfig = connectOptions) => { - const options = config ?? connectOptions; +export const nearApi = async (config?: ConnectOptions) => { + const options = { + ...connectOptions, + ...config + }; + return await near.connect(options) }; diff --git a/src/tests/lockup.spec.ts b/src/tests/lockup.spec.ts index 2262b05..1b00ba9 100644 --- a/src/tests/lockup.spec.ts +++ b/src/tests/lockup.spec.ts @@ -2,7 +2,6 @@ import test from "ava"; import { getAccountBalance, viewLockupAccount, viewLockupState } from "../lib/lockup"; -import { connectOptions } from "../lib/near"; import { lockupAccountSnapshots } from "./snapshots"; @@ -24,19 +23,11 @@ test("view all info about lockup account on 'finality' block", async (t) => { test("view all info about account on particular block using arhival credencials", async (t) => { const items = lockupAccountSnapshots.length; t.plan(items); - - const arhivalConfig = { - nodeUrl: "https://archival-rpc.mainnet.near.org", - networkId: "mainnet", - keyStore: connectOptions.keyStore, - headers: connectOptions.headers - }; - // eslint-disable-next-line functional/no-let for (let i = 0; i < items; i++) { const res = await viewLockupAccount( lockupAccountSnapshots[i].lockupAccountId, - arhivalConfig, + { nodeUrl: "https://archival-rpc.mainnet.near.org" }, { block_id: lockupAccountSnapshots[i].calculatedAtBlockHeight } ); t.deepEqual(res, lockupAccountSnapshots[i]); diff --git a/src/types/types.ts b/src/types/types.ts index 6785744..344d6f7 100644 --- a/src/types/types.ts +++ b/src/types/types.ts @@ -1,4 +1,6 @@ import BN from "bn.js"; +import { ConnectConfig } from "near-api-js/lib/connect"; +import { KeyStore } from "near-api-js/lib/key_stores/keystore"; import { QueryResponseKind } from "near-api-js/lib/providers/provider"; export type LockupState = { @@ -73,3 +75,11 @@ export type ViewAccount = { readonly codeHash: string; readonly blockHeight: number; }; + +export type ConnectOptions = Omit & { + readonly networkId?: string; + readonly keyStore?: KeyStore; + readonly headers?: { + readonly [key: string]: string | number; + } +};