@subql/node-stellar 4.3.0 → 4.3.1-0

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.
@@ -1,20 +1,19 @@
1
- import { Memo, MemoType, Operation } from '@stellar/stellar-base';
2
- import { Account, Address, Contract, FeeBumpTransaction, SorobanRpc, Transaction, xdr, rpc } from '@stellar/stellar-sdk';
1
+ import { Account, Address, Contract, FeeBumpTransaction, Transaction, xdr, rpc } from '@stellar/stellar-sdk';
3
2
  import { SorobanServer } from './soroban.server';
4
3
  export default class SafeStellarProvider extends SorobanServer {
5
4
  private blockHeight;
6
5
  private baseApi;
7
- constructor(baseApi: SorobanRpc.Server, blockHeight: number);
6
+ constructor(baseApi: rpc.Server, blockHeight: number);
8
7
  getAccount(address: string): Promise<Account>;
9
- getHealth(): Promise<SorobanRpc.Api.GetHealthResponse>;
10
- getContractData(contract: string | Address | Contract, key: xdr.ScVal, durability?: rpc.Durability): Promise<SorobanRpc.Api.LedgerEntryResult>;
11
- getLedgerEntries(keys: xdr.LedgerKey[]): Promise<SorobanRpc.Api.GetLedgerEntriesResponse>;
12
- getTransaction(hash: string): Promise<SorobanRpc.Api.GetTransactionResponse>;
13
- getEvents(request: SorobanRpc.Server.GetEventsRequest): Promise<SorobanRpc.Api.GetEventsResponse>;
14
- getNetwork(): Promise<SorobanRpc.Api.GetNetworkResponse>;
15
- getLatestLedger(): Promise<SorobanRpc.Api.GetLatestLedgerResponse>;
16
- simulateTransaction(transaction: Transaction | FeeBumpTransaction): Promise<SorobanRpc.Api.SimulateTransactionResponse>;
17
- prepareTransaction(transaction: Transaction | FeeBumpTransaction): Promise<Transaction<Memo<MemoType>, Operation[]>>;
18
- sendTransaction(transaction: Transaction | FeeBumpTransaction): Promise<SorobanRpc.Api.SendTransactionResponse>;
8
+ getHealth(): Promise<rpc.Api.GetHealthResponse>;
9
+ getContractData(contract: string | Address | Contract, key: xdr.ScVal, durability?: rpc.Durability): Promise<rpc.Api.LedgerEntryResult>;
10
+ getLedgerEntries(keys: xdr.LedgerKey[]): Promise<rpc.Api.GetLedgerEntriesResponse>;
11
+ getTransaction(hash: string): Promise<rpc.Api.GetTransactionResponse>;
12
+ getEvents(request: rpc.Server.GetEventsRequest): Promise<rpc.Api.GetEventsResponse>;
13
+ getNetwork(): Promise<rpc.Api.GetNetworkResponse>;
14
+ getLatestLedger(): Promise<rpc.Api.GetLatestLedgerResponse>;
15
+ simulateTransaction(transaction: Transaction | FeeBumpTransaction): Promise<rpc.Api.SimulateTransactionResponse>;
16
+ prepareTransaction(transaction: Transaction | FeeBumpTransaction): Promise<Transaction>;
17
+ sendTransaction(transaction: Transaction | FeeBumpTransaction): Promise<rpc.Api.SendTransactionResponse>;
19
18
  requestAirdrop(address: string | Pick<Account, 'accountId'>, friendbotUrl?: string): Promise<Account>;
20
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"safe-api.js","sourceRoot":"","sources":["../../src/stellar/safe-api.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAGnC,sDAS8B;AAC9B,gDAA6C;AAE7C,0DAA0D;AAC1D,qDAAiD;AAEjD,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,kBAAkB,CAAC,CAAC;AAE7C,MAAqB,mBAAoB,SAAQ,8BAAa;IACpD,WAAW,CAAS;IACpB,OAAO,CAAoB;IAEnC,YAAY,OAA0B,EAAE,WAAmB;QACzD,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,eAAe,CACnB,QAAqC,EACrC,GAAc,EACd,aAA6B,iBAAG,CAAC,UAAU,CAAC,UAAU;QAEtD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,aAAa;IACb,4DAA4D;IAC5D,KAAK,CAAC,gBAAgB,CACpB,IAAqB;QAErB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,cAAc,CAClB,IAAY;QAEZ,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,SAAS,CACb,OAA2C;QAE3C,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAC5B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;IACL,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,mBAAmB,CACvB,WAA6C;QAE7C,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,kBAAkB,CACtB,WAA6C;QAE7C,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,eAAe,CACnB,WAA6C;QAE7C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,cAAc,CAClB,OAA4C,EAC5C,YAAqB;QAErB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;CACF;AA3FD,sCA2FC","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Memo, MemoType, Operation } from '@stellar/stellar-base';\nimport {\n Account,\n Address,\n Contract,\n FeeBumpTransaction,\n SorobanRpc,\n Transaction,\n xdr,\n rpc,\n} from '@stellar/stellar-sdk';\nimport { getLogger } from '@subql/node-core';\n\n// import { Durability } from 'soroban-client/lib/server';\nimport { SorobanServer } from './soroban.server';\n\nconst logger = getLogger('safe.api.stellar');\n\nexport default class SafeStellarProvider extends SorobanServer {\n private blockHeight: number;\n private baseApi: SorobanRpc.Server;\n\n constructor(baseApi: SorobanRpc.Server, blockHeight: number) {\n super(baseApi.serverURL.toString());\n this.blockHeight = blockHeight;\n this.baseApi = baseApi;\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async getAccount(address: string): Promise<Account> {\n throw new Error('Method getAccount is not implemented.');\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async getHealth(): Promise<SorobanRpc.Api.GetHealthResponse> {\n throw new Error('Method getHealth is not implemented.');\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async getContractData(\n contract: string | Address | Contract,\n key: xdr.ScVal,\n durability: rpc.Durability = rpc.Durability.Persistent,\n ): Promise<SorobanRpc.Api.LedgerEntryResult> {\n throw new Error('Method getContractData is not implemented.');\n }\n\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/require-await\n async getLedgerEntries(\n keys: xdr.LedgerKey[],\n ): Promise<SorobanRpc.Api.GetLedgerEntriesResponse> {\n throw new Error('Method getLedgerEntries is not implemented.');\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async getTransaction(\n hash: string,\n ): Promise<SorobanRpc.Api.GetTransactionResponse> {\n throw new Error('Method getTransaction is not implemented.');\n }\n\n async getEvents(\n request: SorobanRpc.Server.GetEventsRequest,\n ): Promise<SorobanRpc.Api.GetEventsResponse> {\n return this.baseApi.getEvents({\n startLedger: this.blockHeight,\n filters: [],\n });\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async getNetwork(): Promise<SorobanRpc.Api.GetNetworkResponse> {\n throw new Error('Method getNetwork is not implemented.');\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async getLatestLedger(): Promise<SorobanRpc.Api.GetLatestLedgerResponse> {\n throw new Error('Method getLatestLedger is not implemented.');\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async simulateTransaction(\n transaction: Transaction | FeeBumpTransaction,\n ): Promise<SorobanRpc.Api.SimulateTransactionResponse> {\n throw new Error('Method simulateTransaction is not implemented.');\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async prepareTransaction(\n transaction: Transaction | FeeBumpTransaction,\n ): Promise<Transaction<Memo<MemoType>, Operation[]>> {\n throw new Error('Method prepareTransaction is not implemented.');\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async sendTransaction(\n transaction: Transaction | FeeBumpTransaction,\n ): Promise<SorobanRpc.Api.SendTransactionResponse> {\n throw new Error('Method sendTransaction is not implemented.');\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async requestAirdrop(\n address: string | Pick<Account, 'accountId'>,\n friendbotUrl?: string,\n ): Promise<Account> {\n throw new Error('Method requestAirdrop is not implemented.');\n }\n}\n"]}
1
+ {"version":3,"file":"safe-api.js","sourceRoot":"","sources":["../../src/stellar/safe-api.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;AAEnC,sDAQ8B;AAC9B,gDAA6C;AAE7C,0DAA0D;AAC1D,qDAAiD;AAEjD,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,kBAAkB,CAAC,CAAC;AAE7C,MAAqB,mBAAoB,SAAQ,8BAAa;IACpD,WAAW,CAAS;IACpB,OAAO,CAAa;IAE5B,YAAY,OAAmB,EAAE,WAAmB;QAClD,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACpC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,UAAU,CAAC,OAAe;QAC9B,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,SAAS;QACb,MAAM,IAAI,KAAK,CAAC,sCAAsC,CAAC,CAAC;IAC1D,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,eAAe,CACnB,QAAqC,EACrC,GAAc,EACd,aAA6B,iBAAG,CAAC,UAAU,CAAC,UAAU;QAEtD,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,aAAa;IACb,4DAA4D;IAC5D,KAAK,CAAC,gBAAgB,CACpB,IAAqB;QAErB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,cAAc,CAAC,IAAY;QAC/B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,SAAS,CACb,OAAoC;QAEpC,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YAC5B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,OAAO,EAAE,EAAE;SACZ,CAAC,CAAC;IACL,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,UAAU;QACd,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAC3D,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,eAAe;QACnB,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,mBAAmB,CACvB,WAA6C;QAE7C,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IACpE,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,kBAAkB,CACtB,WAA6C;QAE7C,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;IACnE,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,eAAe,CACnB,WAA6C;QAE7C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAChE,CAAC;IAED,2DAA2D;IAC3D,KAAK,CAAC,cAAc,CAClB,OAA4C,EAC5C,YAAqB;QAErB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;CACF;AAzFD,sCAyFC","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport {\n Account,\n Address,\n Contract,\n FeeBumpTransaction,\n Transaction,\n xdr,\n rpc,\n} from '@stellar/stellar-sdk';\nimport { getLogger } from '@subql/node-core';\n\n// import { Durability } from 'soroban-client/lib/server';\nimport { SorobanServer } from './soroban.server';\n\nconst logger = getLogger('safe.api.stellar');\n\nexport default class SafeStellarProvider extends SorobanServer {\n private blockHeight: number;\n private baseApi: rpc.Server;\n\n constructor(baseApi: rpc.Server, blockHeight: number) {\n super(baseApi.serverURL.toString());\n this.blockHeight = blockHeight;\n this.baseApi = baseApi;\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async getAccount(address: string): Promise<Account> {\n throw new Error('Method getAccount is not implemented.');\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async getHealth(): Promise<rpc.Api.GetHealthResponse> {\n throw new Error('Method getHealth is not implemented.');\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async getContractData(\n contract: string | Address | Contract,\n key: xdr.ScVal,\n durability: rpc.Durability = rpc.Durability.Persistent,\n ): Promise<rpc.Api.LedgerEntryResult> {\n throw new Error('Method getContractData is not implemented.');\n }\n\n // @ts-ignore\n // eslint-disable-next-line @typescript-eslint/require-await\n async getLedgerEntries(\n keys: xdr.LedgerKey[],\n ): Promise<rpc.Api.GetLedgerEntriesResponse> {\n throw new Error('Method getLedgerEntries is not implemented.');\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async getTransaction(hash: string): Promise<rpc.Api.GetTransactionResponse> {\n throw new Error('Method getTransaction is not implemented.');\n }\n\n async getEvents(\n request: rpc.Server.GetEventsRequest,\n ): Promise<rpc.Api.GetEventsResponse> {\n return this.baseApi.getEvents({\n startLedger: this.blockHeight,\n filters: [],\n });\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async getNetwork(): Promise<rpc.Api.GetNetworkResponse> {\n throw new Error('Method getNetwork is not implemented.');\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async getLatestLedger(): Promise<rpc.Api.GetLatestLedgerResponse> {\n throw new Error('Method getLatestLedger is not implemented.');\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async simulateTransaction(\n transaction: Transaction | FeeBumpTransaction,\n ): Promise<rpc.Api.SimulateTransactionResponse> {\n throw new Error('Method simulateTransaction is not implemented.');\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async prepareTransaction(\n transaction: Transaction | FeeBumpTransaction,\n ): Promise<Transaction> {\n throw new Error('Method prepareTransaction is not implemented.');\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async sendTransaction(\n transaction: Transaction | FeeBumpTransaction,\n ): Promise<rpc.Api.SendTransactionResponse> {\n throw new Error('Method sendTransaction is not implemented.');\n }\n\n //eslint-disable-next-line @typescript-eslint/require-await\n async requestAirdrop(\n address: string | Pick<Account, 'accountId'>,\n friendbotUrl?: string,\n ): Promise<Account> {\n throw new Error('Method requestAirdrop is not implemented.');\n }\n}\n"]}
@@ -1,7 +1,7 @@
1
- import { SorobanRpc } from '@stellar/stellar-sdk';
2
- export declare class SorobanServer extends SorobanRpc.Server {
1
+ import { rpc } from '@stellar/stellar-sdk';
2
+ export declare class SorobanServer extends rpc.Server {
3
3
  private eventsCache;
4
4
  private fetchEventsForSequence;
5
5
  private updateEventCache;
6
- getEvents(request: SorobanRpc.Server.GetEventsRequest): Promise<SorobanRpc.Api.GetEventsResponse>;
6
+ getEvents(request: rpc.Server.GetEventsRequest): Promise<rpc.Api.GetEventsResponse>;
7
7
  }
@@ -6,7 +6,7 @@ exports.SorobanServer = void 0;
6
6
  const stellar_sdk_1 = require("@stellar/stellar-sdk");
7
7
  const lodash_1 = require("lodash");
8
8
  const DEFAULT_PAGE_SIZE = 100;
9
- class SorobanServer extends stellar_sdk_1.SorobanRpc.Server {
9
+ class SorobanServer extends stellar_sdk_1.rpc.Server {
10
10
  eventsCache = {};
11
11
  async fetchEventsForSequence(sequence, request, accEvents = []) {
12
12
  const response = await super.getEvents(request);
@@ -1 +1 @@
1
- {"version":3,"file":"soroban.server.js","sourceRoot":"","sources":["../../src/stellar/soroban.server.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { SorobanRpc } from '@stellar/stellar-sdk';\nimport { SorobanRpcEventResponse } from '@subql/types-stellar';\nimport { compact, groupBy, last } from 'lodash';\n\nconst DEFAULT_PAGE_SIZE = 100;\n\nexport class SorobanServer extends SorobanRpc.Server {\n private eventsCache: { [key: number]: SorobanRpc.Api.GetEventsResponse } = {};\n\n private async fetchEventsForSequence(\n sequence: number,\n request: SorobanRpc.Server.GetEventsRequest,\n accEvents: SorobanRpcEventResponse[] = [],\n ): Promise<{\n events: SorobanRpc.Api.GetEventsResponse;\n eventsToCache: SorobanRpc.Api.GetEventsResponse;\n }> {\n const response = await super.getEvents(request);\n\n // Separate the events for the current sequence and the subsequent sequences\n const groupedEvents = groupBy(response.events, (event) =>\n event.ledger === sequence ? 'events' : 'eventsToCache',\n );\n const events = compact(groupedEvents.events);\n let eventsToCache = compact(groupedEvents.eventsToCache);\n\n // Update the accumulated events with the events from the current sequence\n const newEvents = accEvents.concat(events);\n\n if (eventsToCache?.length) {\n if (response.events.length === DEFAULT_PAGE_SIZE) {\n const lastSequence = last(response.events)!.ledger;\n eventsToCache = eventsToCache.filter(\n (event) => event.ledger !== lastSequence,\n );\n }\n return {\n events: { events: newEvents, latestLedger: response.latestLedger },\n eventsToCache: {\n events: eventsToCache,\n latestLedger: response.latestLedger,\n },\n };\n }\n\n if (response.events.length < DEFAULT_PAGE_SIZE) {\n return {\n events: { events: newEvents, latestLedger: response.latestLedger },\n eventsToCache: { events: [], latestLedger: response.latestLedger },\n };\n }\n\n // Prepare the next request\n const nextRequest = {\n ...request,\n cursor: response.events[response.events.length - 1]?.pagingToken,\n startLedger: undefined,\n };\n\n // Continue fetching events for the sequence\n return this.fetchEventsForSequence(sequence, nextRequest, newEvents);\n }\n\n private updateEventCache(\n response: SorobanRpc.Api.GetEventsResponse,\n ignoreHeight?: number,\n ): void {\n response.events.forEach((event) => {\n if (ignoreHeight && ignoreHeight === event.ledger) return;\n const ledger = event.ledger;\n if (!this.eventsCache[ledger]) {\n this.eventsCache[ledger] = {\n events: [],\n latestLedger: response.latestLedger,\n } as SorobanRpc.Api.GetEventsResponse;\n }\n const eventExists = this.eventsCache[ledger].events.some(\n (existingEvent) => existingEvent.id === event.id,\n );\n if (!eventExists) {\n this.eventsCache[ledger].events.push(event);\n }\n });\n }\n\n async getEvents(\n request: SorobanRpc.Server.GetEventsRequest,\n ): Promise<SorobanRpc.Api.GetEventsResponse> {\n const sequence = request.startLedger;\n\n if (sequence === undefined) {\n throw new Error(`Get soraban event failed, block sequence is missing`);\n }\n\n if (this.eventsCache[sequence]) {\n const cachedEvents = this.eventsCache[sequence];\n delete this.eventsCache[sequence];\n return cachedEvents;\n }\n\n const response = await this.fetchEventsForSequence(sequence, request);\n this.updateEventCache(response.eventsToCache, sequence);\n\n return response.events;\n }\n}\n"]}
1
+ {"version":3,"file":"soroban.server.js","sourceRoot":"","sources":["../../src/stellar/soroban.server.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,sDAA2C;AAE3C,mCAAgD;AAEhD,MAAM,iBAAiB,GAAG,GAAG,CAAC;AAO9B,MAAa,aAAc,SAAQ,iBAAG,CAAC,MAAM;IACnC,WAAW,GAAiD,EAAE,CAAC;IAE/D,KAAK,CAAC,sBAAsB,CAClC,QAAgB,EAChB,OAAoC,EACpC,YAAuC,EAAE;QAKzC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QAEhD,4EAA4E;QAC5E,MAAM,aAAa,GAAG,IAAA,gBAAO,EAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CACvD,KAAK,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CACvD,CAAC;QACF,MAAM,MAAM,GAAG,IAAA,gBAAO,EAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,aAAa,GAAG,IAAA,gBAAO,EAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QAEzD,0EAA0E;QAC1E,MAAM,SAAS,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE3C,IAAI,aAAa,EAAE,MAAM,EAAE;YACzB,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,KAAK,iBAAiB,EAAE;gBAChD,MAAM,YAAY,GAAG,IAAA,aAAI,EAAC,QAAQ,CAAC,MAAM,CAAE,CAAC,MAAM,CAAC;gBACnD,aAAa,GAAG,aAAa,CAAC,MAAM,CAClC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,KAAK,YAAY,CACzC,CAAC;aACH;YACD,OAAO;gBACL,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE;gBAClE,aAAa,EAAE;oBACb,MAAM,EAAE,aAAa;oBACrB,YAAY,EAAE,QAAQ,CAAC,YAAY;iBACpC;aACF,CAAC;SACH;QAED,IAAI,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,iBAAiB,EAAE;YAC9C,OAAO;gBACL,MAAM,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE;gBAClE,aAAa,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,YAAY,EAAE,QAAQ,CAAC,YAAY,EAAE;aACnE,CAAC;SACH;QAED,2BAA2B;QAC3B,MAAM,WAAW,GAAG;YAClB,GAAG,OAAO;YACV,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,WAAW;YAChE,WAAW,EAAE,SAAS;SACvB,CAAC;QAEF,4CAA4C;QAC5C,OAAO,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;IACvE,CAAC;IAEO,gBAAgB,CACtB,QAA8B,EAC9B,YAAqB;QAErB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YAChC,IAAI,YAAY,IAAI,YAAY,KAAK,KAAK,CAAC,MAAM;gBAAE,OAAO;YAC1D,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC5B,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;gBAC7B,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,GAAG;oBACzB,MAAM,EAAE,EAAE;oBACV,YAAY,EAAE,QAAQ,CAAC,YAAY;iBACI,CAAC;aAC3C;YACD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CACtD,CAAC,aAAa,EAAE,EAAE,CAAC,aAAa,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CACjD,CAAC;YACF,IAAI,CAAC,WAAW,EAAE;gBAChB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aAC7C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,SAAS,CACb,OAAoC;QAEpC,MAAM,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;QAErC,IAAI,QAAQ,KAAK,SAAS,EAAE;YAC1B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;SACxE;QAED,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE;YAC9B,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAChD,OAAO,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAClC,OAAO,YAAY,CAAC;SACrB;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtE,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QAExD,OAAO,QAAQ,CAAC,MAAmC,CAAC;IACtD,CAAC;CACF;AAnGD,sCAmGC","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { rpc } from '@stellar/stellar-sdk';\nimport { SorobanRpcEventResponse } from '@subql/types-stellar';\nimport { compact, groupBy, last } from 'lodash';\n\nconst DEFAULT_PAGE_SIZE = 100;\n\ntype CachedEventsResponse = Pick<\n rpc.Api.GetEventsResponse,\n 'events' | 'latestLedger'\n>;\n\nexport class SorobanServer extends rpc.Server {\n private eventsCache: { [key: number]: rpc.Api.GetEventsResponse } = {};\n\n private async fetchEventsForSequence(\n sequence: number,\n request: rpc.Server.GetEventsRequest,\n accEvents: SorobanRpcEventResponse[] = [],\n ): Promise<{\n events: CachedEventsResponse;\n eventsToCache: CachedEventsResponse;\n }> {\n const response = await super.getEvents(request);\n\n // Separate the events for the current sequence and the subsequent sequences\n const groupedEvents = groupBy(response.events, (event) =>\n event.ledger === sequence ? 'events' : 'eventsToCache',\n );\n const events = compact(groupedEvents.events);\n let eventsToCache = compact(groupedEvents.eventsToCache);\n\n // Update the accumulated events with the events from the current sequence\n const newEvents = accEvents.concat(events);\n\n if (eventsToCache?.length) {\n if (response.events.length === DEFAULT_PAGE_SIZE) {\n const lastSequence = last(response.events)!.ledger;\n eventsToCache = eventsToCache.filter(\n (event) => event.ledger !== lastSequence,\n );\n }\n return {\n events: { events: newEvents, latestLedger: response.latestLedger },\n eventsToCache: {\n events: eventsToCache,\n latestLedger: response.latestLedger,\n },\n };\n }\n\n if (response.events.length < DEFAULT_PAGE_SIZE) {\n return {\n events: { events: newEvents, latestLedger: response.latestLedger },\n eventsToCache: { events: [], latestLedger: response.latestLedger },\n };\n }\n\n // Prepare the next request\n const nextRequest = {\n ...request,\n cursor: response.events[response.events.length - 1]?.pagingToken,\n startLedger: undefined,\n };\n\n // Continue fetching events for the sequence\n return this.fetchEventsForSequence(sequence, nextRequest, newEvents);\n }\n\n private updateEventCache(\n response: CachedEventsResponse,\n ignoreHeight?: number,\n ): void {\n response.events.forEach((event) => {\n if (ignoreHeight && ignoreHeight === event.ledger) return;\n const ledger = event.ledger;\n if (!this.eventsCache[ledger]) {\n this.eventsCache[ledger] = {\n events: [],\n latestLedger: response.latestLedger,\n } as unknown as rpc.Api.GetEventsResponse;\n }\n const eventExists = this.eventsCache[ledger].events.some(\n (existingEvent) => existingEvent.id === event.id,\n );\n if (!eventExists) {\n this.eventsCache[ledger].events.push(event);\n }\n });\n }\n\n async getEvents(\n request: rpc.Server.GetEventsRequest,\n ): Promise<rpc.Api.GetEventsResponse> {\n const sequence = request.startLedger;\n\n if (sequence === undefined) {\n throw new Error(`Get soraban event failed, block sequence is missing`);\n }\n\n if (this.eventsCache[sequence]) {\n const cachedEvents = this.eventsCache[sequence];\n delete this.eventsCache[sequence];\n return cachedEvents;\n }\n\n const response = await this.fetchEventsForSequence(sequence, request);\n this.updateEventCache(response.eventsToCache, sequence);\n\n return response.events as rpc.Api.GetEventsResponse;\n }\n}\n"]}
@@ -11,7 +11,7 @@ describe('SorobanServer', () => {
11
11
  let spy;
12
12
  beforeEach(() => {
13
13
  server = new soroban_server_1.SorobanServer(url);
14
- spy = jest.spyOn(stellar_sdk_1.SorobanRpc.Server.prototype, 'getEvents');
14
+ spy = jest.spyOn(stellar_sdk_1.rpc.Server.prototype, 'getEvents');
15
15
  });
16
16
  afterEach(() => {
17
17
  spy.mockRestore();
@@ -1 +1 @@
1
- {"version":3,"file":"soroban.server.spec.js","sourceRoot":"","sources":["../../src/stellar/soroban.server.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { SorobanRpc } from '@stellar/stellar-sdk';\nimport { SorobanServer } from './soroban.server';\n\nconst DEFAULT_PAGE_SIZE = 100;\n\ndescribe('SorobanServer', () => {\n let server: SorobanServer;\n const url = 'https://example.com';\n let spy: jest.SpyInstance;\n\n beforeEach(() => {\n server = new SorobanServer(url);\n spy = jest.spyOn(SorobanRpc.Server.prototype, 'getEvents');\n });\n\n afterEach(() => {\n spy.mockRestore();\n });\n\n test('should handle no events', async () => {\n spy.mockResolvedValue({ events: [] });\n\n const response = await server.getEvents({\n startLedger: 1,\n } as SorobanRpc.Server.GetEventsRequest);\n\n expect(response).toEqual({ events: [] });\n expect(spy).toHaveBeenCalledTimes(1);\n });\n\n test('should handle events from different ledgers', async () => {\n // Should be BaseEventResponse type\n spy.mockResolvedValue({\n events: [\n { id: '1', ledger: 1, pagingToken: '1' },\n { id: '2', ledger: 2, pagingToken: '2' },\n ],\n latestLedger: 5,\n });\n\n const response = await server.getEvents({\n startLedger: 1,\n } as SorobanRpc.Server.GetEventsRequest);\n\n expect(response).toEqual({\n events: [{ id: '1', ledger: 1, pagingToken: '1' }],\n latestLedger: 5,\n });\n expect(spy).toHaveBeenCalledTimes(1);\n });\n\n test('should handle response length less than DEFAULT_PAGE_SIZE', async () => {\n spy.mockResolvedValue({\n events: Array.from({ length: DEFAULT_PAGE_SIZE - 1 }, (_, i) => ({\n id: `${i}`,\n ledger: 1,\n pagingToken: `${i}`,\n })),\n });\n\n const response = await server.getEvents({\n startLedger: 1,\n } as SorobanRpc.Server.GetEventsRequest);\n\n expect(response.events.length).toBe(DEFAULT_PAGE_SIZE - 1);\n expect(spy).toHaveBeenCalledTimes(1);\n });\n\n test('should handle no matching ledger', async () => {\n spy.mockResolvedValue({\n events: [\n { id: '1', ledger: 2, pagingToken: '1' },\n { id: '1', ledger: 3, pagingToken: '2' },\n ],\n });\n\n const response = await server.getEvents({\n startLedger: 1,\n } as SorobanRpc.Server.GetEventsRequest);\n\n expect(response).toEqual({ events: [] });\n expect(spy).toHaveBeenCalledTimes(1);\n });\n\n test('should return cached events for given startLedger', async () => {\n (server as any).eventsCache[1] = {\n events: [{ ledger: 1, pagingToken: '1' }],\n };\n\n const response = await server.getEvents({\n startLedger: 1,\n } as SorobanRpc.Server.GetEventsRequest);\n\n expect(response).toEqual({ events: [{ ledger: 1, pagingToken: '1' }] });\n expect(spy).toHaveBeenCalledTimes(0);\n });\n\n test('should handle startLedger events greater than DEFAULT_PAGE_SIZE', async () => {\n spy\n .mockResolvedValueOnce({\n events: Array.from({ length: DEFAULT_PAGE_SIZE }, (_, i) => ({\n id: `${i}`,\n ledger: 1,\n pagingToken: `${i}`,\n })),\n })\n .mockResolvedValueOnce({\n events: Array.from({ length: 5 }, (_, i) => ({\n id: `${i + DEFAULT_PAGE_SIZE}`,\n ledger: 1,\n pagingToken: `${i + DEFAULT_PAGE_SIZE}`,\n })),\n });\n\n const response = await server.getEvents({\n startLedger: 1,\n } as SorobanRpc.Server.GetEventsRequest);\n\n expect(response.events.length).toBe(DEFAULT_PAGE_SIZE + 5);\n expect(spy).toHaveBeenCalledTimes(2);\n });\n\n test('should handle last block of otherEvents on next page', async () => {\n spy\n .mockResolvedValueOnce({\n events: [\n ...Array.from({ length: DEFAULT_PAGE_SIZE - 1 }, (_, i) => ({\n id: `${i}`,\n ledger: 1,\n pagingToken: `${i}`,\n })),\n { id: '2-1', ledger: 2, pagingToken: '1' },\n ],\n })\n .mockResolvedValueOnce({\n events: [{ id: '2-2', ledger: 2, pagingToken: '2' }],\n });\n\n const response = await server.getEvents({\n startLedger: 1,\n } as SorobanRpc.Server.GetEventsRequest);\n\n expect(response).toEqual({\n events: [\n ...Array.from({ length: DEFAULT_PAGE_SIZE - 1 }, (_, i) => ({\n id: `${i}`,\n ledger: 1,\n pagingToken: `${i}`,\n })),\n ],\n });\n expect((server as any).eventsCache[2]).toBeUndefined();\n expect(spy).toHaveBeenCalledTimes(1);\n });\n});\n"]}
1
+ {"version":3,"file":"soroban.server.spec.js","sourceRoot":"","sources":["../../src/stellar/soroban.server.spec.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { rpc } from '@stellar/stellar-sdk';\nimport { SorobanServer } from './soroban.server';\n\nconst DEFAULT_PAGE_SIZE = 100;\n\ndescribe('SorobanServer', () => {\n let server: SorobanServer;\n const url = 'https://example.com';\n let spy: jest.SpyInstance;\n\n beforeEach(() => {\n server = new SorobanServer(url);\n spy = jest.spyOn(rpc.Server.prototype, 'getEvents');\n });\n\n afterEach(() => {\n spy.mockRestore();\n });\n\n test('should handle no events', async () => {\n spy.mockResolvedValue({ events: [] });\n\n const response = await server.getEvents({\n startLedger: 1,\n } as rpc.Server.GetEventsRequest);\n\n expect(response).toEqual({ events: [] });\n expect(spy).toHaveBeenCalledTimes(1);\n });\n\n test('should handle events from different ledgers', async () => {\n // Should be BaseEventResponse type\n spy.mockResolvedValue({\n events: [\n { id: '1', ledger: 1, pagingToken: '1' },\n { id: '2', ledger: 2, pagingToken: '2' },\n ],\n latestLedger: 5,\n });\n\n const response = await server.getEvents({\n startLedger: 1,\n } as rpc.Server.GetEventsRequest);\n\n expect(response).toEqual({\n events: [{ id: '1', ledger: 1, pagingToken: '1' }],\n latestLedger: 5,\n });\n expect(spy).toHaveBeenCalledTimes(1);\n });\n\n test('should handle response length less than DEFAULT_PAGE_SIZE', async () => {\n spy.mockResolvedValue({\n events: Array.from({ length: DEFAULT_PAGE_SIZE - 1 }, (_, i) => ({\n id: `${i}`,\n ledger: 1,\n pagingToken: `${i}`,\n })),\n });\n\n const response = await server.getEvents({\n startLedger: 1,\n } as rpc.Server.GetEventsRequest);\n\n expect(response.events.length).toBe(DEFAULT_PAGE_SIZE - 1);\n expect(spy).toHaveBeenCalledTimes(1);\n });\n\n test('should handle no matching ledger', async () => {\n spy.mockResolvedValue({\n events: [\n { id: '1', ledger: 2, pagingToken: '1' },\n { id: '1', ledger: 3, pagingToken: '2' },\n ],\n });\n\n const response = await server.getEvents({\n startLedger: 1,\n } as rpc.Server.GetEventsRequest);\n\n expect(response).toEqual({ events: [] });\n expect(spy).toHaveBeenCalledTimes(1);\n });\n\n test('should return cached events for given startLedger', async () => {\n (server as any).eventsCache[1] = {\n events: [{ ledger: 1, pagingToken: '1' }],\n };\n\n const response = await server.getEvents({\n startLedger: 1,\n } as rpc.Server.GetEventsRequest);\n\n expect(response).toEqual({ events: [{ ledger: 1, pagingToken: '1' }] });\n expect(spy).toHaveBeenCalledTimes(0);\n });\n\n test('should handle startLedger events greater than DEFAULT_PAGE_SIZE', async () => {\n spy\n .mockResolvedValueOnce({\n events: Array.from({ length: DEFAULT_PAGE_SIZE }, (_, i) => ({\n id: `${i}`,\n ledger: 1,\n pagingToken: `${i}`,\n })),\n })\n .mockResolvedValueOnce({\n events: Array.from({ length: 5 }, (_, i) => ({\n id: `${i + DEFAULT_PAGE_SIZE}`,\n ledger: 1,\n pagingToken: `${i + DEFAULT_PAGE_SIZE}`,\n })),\n });\n\n const response = await server.getEvents({\n startLedger: 1,\n } as rpc.Server.GetEventsRequest);\n\n expect(response.events.length).toBe(DEFAULT_PAGE_SIZE + 5);\n expect(spy).toHaveBeenCalledTimes(2);\n });\n\n test('should handle last block of otherEvents on next page', async () => {\n spy\n .mockResolvedValueOnce({\n events: [\n ...Array.from({ length: DEFAULT_PAGE_SIZE - 1 }, (_, i) => ({\n id: `${i}`,\n ledger: 1,\n pagingToken: `${i}`,\n })),\n { id: '2-1', ledger: 2, pagingToken: '1' },\n ],\n })\n .mockResolvedValueOnce({\n events: [{ id: '2-2', ledger: 2, pagingToken: '2' }],\n });\n\n const response = await server.getEvents({\n startLedger: 1,\n } as rpc.Server.GetEventsRequest);\n\n expect(response).toEqual({\n events: [\n ...Array.from({ length: DEFAULT_PAGE_SIZE - 1 }, (_, i) => ({\n id: `${i}`,\n ledger: 1,\n pagingToken: `${i}`,\n })),\n ],\n });\n expect((server as any).eventsCache[2]).toBeUndefined();\n expect(spy).toHaveBeenCalledTimes(1);\n });\n});\n"]}
@@ -1,18 +1,14 @@
1
1
  "use strict";
2
2
  // Copyright 2020-2024 SubQuery Pte Ltd authors & contributors
3
3
  // SPDX-License-Identifier: GPL-3.0
4
- var __importDefault = (this && this.__importDefault) || function (mod) {
5
- return (mod && mod.__esModule) ? mod : { "default": mod };
6
- };
7
4
  Object.defineProperty(exports, "__esModule", { value: true });
8
5
  exports.StellarServer = void 0;
9
6
  const stellar_sdk_1 = require("@stellar/stellar-sdk");
10
7
  const node_core_1 = require("@subql/node-core");
11
- const urijs_1 = __importDefault(require("urijs"));
12
8
  const logger = (0, node_core_1.getLogger)('stellar-server');
13
9
  class StellarServer extends stellar_sdk_1.Horizon.Server {
14
10
  async getNetwork() {
15
- const network = (await stellar_sdk_1.Horizon.AxiosClient.get((0, urijs_1.default)(this.serverURL).toString())).data;
11
+ const network = (await stellar_sdk_1.Horizon.AxiosClient.get(new URL(this.serverURL).toString())).data;
16
12
  return network;
17
13
  }
18
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stellar.server.js","sourceRoot":"","sources":["../../src/stellar/stellar.server.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;AAEnC,sDAA+C;AAC/C,gDAA6C;AAC7C,kDAAwB;AAExB,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,gBAAgB,CAAC,CAAC;AAQ3C,MAAa,aAAc,SAAQ,qBAAO,CAAC,MAAM;IAC/C,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,GAAmB,CAC9B,MAAM,qBAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAA,eAAG,EAAC,IAAI,CAAC,SAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,CACrE,CAAC,IAAI,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAPD,sCAOC","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Horizon } from '@stellar/stellar-sdk';\nimport { getLogger } from '@subql/node-core';\nimport URI from 'urijs';\n\nconst logger = getLogger('stellar-server');\n\nexport interface StellarNetwork {\n network_passphrase: string;\n history_latest_ledger: string;\n name: string;\n}\n\nexport class StellarServer extends Horizon.Server {\n async getNetwork(): Promise<StellarNetwork> {\n const network: StellarNetwork = (\n await Horizon.AxiosClient.get(URI(this.serverURL as any).toString())\n ).data;\n return network;\n }\n}\n"]}
1
+ {"version":3,"file":"stellar.server.js","sourceRoot":"","sources":["../../src/stellar/stellar.server.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,sDAA+C;AAC/C,gDAA6C;AAE7C,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,gBAAgB,CAAC,CAAC;AAQ3C,MAAa,aAAc,SAAQ,qBAAO,CAAC,MAAM;IAC/C,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,GAAmB,CAC9B,MAAM,qBAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,SAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,CACzE,CAAC,IAAI,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAPD,sCAOC","sourcesContent":["// Copyright 2020-2024 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Horizon } from '@stellar/stellar-sdk';\nimport { getLogger } from '@subql/node-core';\n\nconst logger = getLogger('stellar-server');\n\nexport interface StellarNetwork {\n network_passphrase: string;\n history_latest_ledger: string;\n name: string;\n}\n\nexport class StellarServer extends Horizon.Server {\n async getNetwork(): Promise<StellarNetwork> {\n const network: StellarNetwork = (\n await Horizon.AxiosClient.get(new URL(this.serverURL as any).toString())\n ).data;\n return network;\n }\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@subql/node-stellar",
3
- "version": "4.3.0",
3
+ "version": "4.3.1-0",
4
4
  "description": "",
5
5
  "author": "Ian He",
6
6
  "license": "GPL-3.0",
@@ -24,12 +24,12 @@
24
24
  "@nestjs/event-emitter": "^2.0.0",
25
25
  "@nestjs/platform-express": "^9.4.0",
26
26
  "@nestjs/schedule": "^3.0.1",
27
- "@stellar/stellar-sdk": "^12.2.0",
27
+ "@stellar/stellar-sdk": "^13.1.0",
28
28
  "@subql/common": "^5.3.0",
29
29
  "@subql/common-stellar": "4.2.1",
30
30
  "@subql/node-core": "^16.2.0",
31
31
  "@subql/testing": "^2.2.0",
32
- "@subql/types-stellar": "4.0.2",
32
+ "@subql/types-stellar": "4.0.3-0",
33
33
  "lodash": "^4.17.21",
34
34
  "pg": "^8.11.5",
35
35
  "reflect-metadata": "^0.1.13",
@@ -57,5 +57,6 @@
57
57
  "files": [
58
58
  "/dist",
59
59
  "/bin"
60
- ]
60
+ ],
61
+ "stableVersion": "4.3.0"
61
62
  }