Skip to content

Update stellar sdk, fix event cursors#138

Merged
stwiname merged 3 commits intomainfrom
soroban-cursor-fix
Aug 26, 2025
Merged

Update stellar sdk, fix event cursors#138
stwiname merged 3 commits intomainfrom
soroban-cursor-fix

Conversation

@stwiname
Copy link
Copy Markdown
Contributor

@stwiname stwiname commented Aug 25, 2025

Description

Updates the Stellar SDK to version 14 with protocol 23 support

And also fixes getting events cursors to use the current method from the deprecated pagingToken

Fixes # (issue)

Type of change

Please delete options that are not relevant.

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to not work as expected)
  • This change requires a documentation update

Checklist

  • I have tested locally
  • I have performed a self review of my changes
  • Updated any relevant documentation
  • Linked to any relevant issues
  • I have added tests relevant to my changes
  • Any dependent changes have been merged and published in downstream modules
  • My code is up to date with the base branch
  • I have updated relevant changelogs. We suggest using chan

@github-actions
Copy link
Copy Markdown
Contributor

github-actions Bot commented Aug 25, 2025

Coverage report

Caution

Test run failed

St.
Category Percentage Covered / Total
🔴 Statements 46.8% 1630/3483
🟡 Branches 74.15% 175/236
🔴 Functions 50.89% 86/169
🔴 Lines 46.8% 1630/3483

Test suite run failed

Failed tests: 4/73. Failed suites: 3/8.
  ● dictionary v1 › successfully validates metatada

    ApolloError: Only absolute URLs are supported

      at new ApolloError (node_modules/@apollo/client/errors/index.js:40:28)
      at node_modules/@apollo/client/core/QueryManager.js:785:71
      at both (node_modules/@apollo/client/utilities/observables/asyncMap.js:22:31)
      at node_modules/@apollo/client/utilities/observables/asyncMap.js:11:72
      at Object.then (node_modules/@apollo/client/utilities/observables/asyncMap.js:11:24)
      at Object.error (node_modules/@apollo/client/utilities/observables/asyncMap.js:24:49)
      at notifySubscription (node_modules/zen-observable/lib/Observable.js:140:18)
      at onNotify (node_modules/zen-observable/lib/Observable.js:179:3)
      at SubscriptionObserver.error (node_modules/zen-observable/lib/Observable.js:240:7)
      at node_modules/@apollo/client/utilities/observables/iteration.js:7:68
          at Array.forEach (<anonymous>)
      at iterateObserversSafely (node_modules/@apollo/client/utilities/observables/iteration.js:7:25)
      at Object.error (node_modules/@apollo/client/utilities/observables/Concast.js:76:21)
      at notifySubscription (node_modules/zen-observable/lib/Observable.js:140:18)
      at onNotify (node_modules/zen-observable/lib/Observable.js:179:3)
      at SubscriptionObserver.error (node_modules/zen-observable/lib/Observable.js:240:7)
      at handleError (node_modules/@apollo/client/link/http/parseAndCheckHttpResponse.js:170:14)
      at node_modules/@apollo/client/link/http/createHttpLink.js:145:17

    Cause:
    TypeError: Only absolute URLs are supported

      250 |       chainId,
      251 |     );
    > 252 |     await dictionary.init();
          |                      ^
      253 |     return dictionary;
      254 |   }
      255 |

      at getNodeRequestOptions (node_modules/node-fetch/lib/index.js:1327:9)
      at node_modules/node-fetch/lib/index.js:1440:19
      at fetch (node_modules/node-fetch/lib/index.js:1437:9)
      at fetch (node_modules/cross-fetch/dist/node-ponyfill.js:10:20)
      at node_modules/@apollo/client/link/http/createHttpLink.js:127:13
      at new Subscription (node_modules/zen-observable/lib/Observable.js:197:34)
      at Observable.subscribe (node_modules/zen-observable/lib/Observable.js:279:14)
      at Object.complete (node_modules/@apollo/client/utilities/observables/Concast.js:111:43)
      at Concast.Object.<anonymous>.Concast.start (node_modules/@apollo/client/utilities/observables/Concast.js:152:23)
      at new Concast (node_modules/@apollo/client/utilities/observables/Concast.js:137:19)
      at QueryManager.Object.<anonymous>.QueryManager.getObservableFromLink (node_modules/@apollo/client/core/QueryManager.js:711:35)
      at QueryManager.Object.<anonymous>.QueryManager.getResultsFromLink (node_modules/@apollo/client/core/QueryManager.js:748:30)
      at resultsFromLink (node_modules/@apollo/client/core/QueryManager.js:1049:26)
      at QueryManager.Object.<anonymous>.QueryManager.fetchQueryByPolicy (node_modules/@apollo/client/core/QueryManager.js:1112:52)
      at fromVariables (node_modules/@apollo/client/core/QueryManager.js:819:41)
      at QueryManager.Object.<anonymous>.QueryManager.fetchConcastWithInfo (node_modules/@apollo/client/core/QueryManager.js:861:35)
      at QueryManager.Object.<anonymous>.QueryManager.fetchQuery (node_modules/@apollo/client/core/QueryManager.js:374:21)
      at QueryManager.Object.<anonymous>.QueryManager.query (node_modules/@apollo/client/core/QueryManager.js:468:21)
      at ApolloClient.Object.<anonymous>.ApolloClient.query (node_modules/@apollo/client/core/ApolloClient.js:233:34)
      at StellarDictionaryV1.init (node_modules/@subql/node-core/src/indexer/dictionary/v1/dictionaryV1.ts:57:21)
      at Function.create (packages/node/src/indexer/dictionary/v1/stellarDictionaryV1.ts:252:22)
      at Object.<anonymous> (packages/node/src/indexer/dictionary/v1/stellarDictionaryV1.spec.ts:182:44)


  ● StellarApi › handles a transaction with multiple operations and events

    NotFoundError: Not Found

      291 |     sequence: number,
      292 |   ): Promise<IBlock<StellarBlockWrapper>> {
    > 293 |     const [ledger, transactions, operations, effects] = await Promise.all([
          |                                                         ^
      294 |       this.api.ledgers().ledger(sequence).call(),
      295 |       this.fetchTransactionsForLedger(sequence),
      296 |       this.fetchOperationsForLedger(sequence),

      at node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:329:52
      at Generator.<anonymous> (node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:13:1494)
      at Generator.next (node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:14:255)
      at asyncGeneratorStep (node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:15:70)
      at _next (node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:16:163)
      at node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:16:299
      at node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:16:90
      at _handleNetworkError (node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:343:37)
          at async Promise.all (index 0)
      at StellarApi.fetchAndWrapLedger (packages/node/src/stellar/api.stellar.ts:293:57)
          at async Promise.all (index 0)
      at StellarApi.fetchBlocks (packages/node/src/stellar/api.stellar.ts:386:21)
      at Object.<anonymous> (packages/node/src/stellar/api.stellar.spec.ts:109:21)


  ● BlockchainService › correctly calculates block timestamp

    NotFoundError: Not Found

      146 |
      147 |   async getBlockTimestamp(height: number): Promise<Date> {
    > 148 |     const block = await this.apiService.api.api.ledgers().ledger(height).call();
          |                   ^
      149 |
      150 |     return new Date(
      151 |       (block as unknown as Horizon.ServerApi.LedgerRecord).closed_at,

      at node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:329:52
      at Generator.<anonymous> (node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:13:1494)
      at Generator.next (node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:14:255)
      at asyncGeneratorStep (node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:15:70)
      at _next (node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:16:163)
      at node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:16:299
      at node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:16:90
      at _handleNetworkError (node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:343:37)
      at BlockchainService.getBlockTimestamp (packages/node/src/blockchain.service.ts:148:19)
      at Object.<anonymous> (packages/node/src/blockchain.service.spec.ts:24:23)

  ● BlockchainService › correctly gets the header for a height

    NotFoundError: Not Found

       98 |
       99 |   async getHeaderForHeight(height: number): Promise<Header> {
    > 100 |     const res = await this.apiService.api.api.ledgers().ledger(height).call();
          |                 ^
      101 |     return stellarBlockToHeader(res as any);
      102 |   }
      103 |

      at node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:329:52
      at Generator.<anonymous> (node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:13:1494)
      at Generator.next (node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:14:255)
      at asyncGeneratorStep (node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:15:70)
      at _next (node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:16:163)
      at node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:16:299
      at node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:16:90
      at _handleNetworkError (node_modules/@stellar/stellar-sdk/lib/horizon/call_builder.js:343:37)
      at BlockchainService.getHeaderForHeight (packages/node/src/blockchain.service.ts:100:17)
      at Object.<anonymous> (packages/node/src/blockchain.service.spec.ts:30:20)

Report generated by 🧪jest coverage report action from 42a36e6

@stwiname stwiname merged commit b7d395a into main Aug 26, 2025
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant