@subql/node-stellar 3.4.2 → 3.4.3-1

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.
@@ -25,17 +25,20 @@ describe('SorobanServer', () => {
25
25
  expect(spy).toHaveBeenCalledTimes(1);
26
26
  });
27
27
  test('should handle events from different ledgers', async () => {
28
+ // Should be BaseEventResponse type
28
29
  spy.mockResolvedValue({
29
30
  events: [
30
- { id: '1', ledger: '1', pagingToken: '1' },
31
- { id: '2', ledger: '2', pagingToken: '2' },
31
+ { id: '1', ledger: 1, pagingToken: '1' },
32
+ { id: '2', ledger: 2, pagingToken: '2' },
32
33
  ],
34
+ latestLedger: 5,
33
35
  });
34
36
  const response = await server.getEvents({
35
37
  startLedger: 1,
36
38
  });
37
39
  expect(response).toEqual({
38
- events: [{ id: '1', ledger: '1', pagingToken: '1' }],
40
+ events: [{ id: '1', ledger: 1, pagingToken: '1' }],
41
+ latestLedger: 5,
39
42
  });
40
43
  expect(spy).toHaveBeenCalledTimes(1);
41
44
  });
@@ -43,7 +46,7 @@ describe('SorobanServer', () => {
43
46
  spy.mockResolvedValue({
44
47
  events: Array.from({ length: DEFAULT_PAGE_SIZE - 1 }, (_, i) => ({
45
48
  id: `${i}`,
46
- ledger: '1',
49
+ ledger: 1,
47
50
  pagingToken: `${i}`,
48
51
  })),
49
52
  });
@@ -56,8 +59,8 @@ describe('SorobanServer', () => {
56
59
  test('should handle no matching ledger', async () => {
57
60
  spy.mockResolvedValue({
58
61
  events: [
59
- { id: '1', ledger: '2', pagingToken: '1' },
60
- { id: '1', ledger: '3', pagingToken: '2' },
62
+ { id: '1', ledger: 2, pagingToken: '1' },
63
+ { id: '1', ledger: 3, pagingToken: '2' },
61
64
  ],
62
65
  });
63
66
  const response = await server.getEvents({
@@ -68,12 +71,12 @@ describe('SorobanServer', () => {
68
71
  });
69
72
  test('should return cached events for given startLedger', async () => {
70
73
  server.eventsCache[1] = {
71
- events: [{ ledger: '1', pagingToken: '1' }],
74
+ events: [{ ledger: 1, pagingToken: '1' }],
72
75
  };
73
76
  const response = await server.getEvents({
74
77
  startLedger: 1,
75
78
  });
76
- expect(response).toEqual({ events: [{ ledger: '1', pagingToken: '1' }] });
79
+ expect(response).toEqual({ events: [{ ledger: 1, pagingToken: '1' }] });
77
80
  expect(spy).toHaveBeenCalledTimes(0);
78
81
  });
79
82
  test('should handle startLedger events greater than DEFAULT_PAGE_SIZE', async () => {
@@ -81,14 +84,14 @@ describe('SorobanServer', () => {
81
84
  .mockResolvedValueOnce({
82
85
  events: Array.from({ length: DEFAULT_PAGE_SIZE }, (_, i) => ({
83
86
  id: `${i}`,
84
- ledger: '1',
87
+ ledger: 1,
85
88
  pagingToken: `${i}`,
86
89
  })),
87
90
  })
88
91
  .mockResolvedValueOnce({
89
92
  events: Array.from({ length: 5 }, (_, i) => ({
90
93
  id: `${i + DEFAULT_PAGE_SIZE}`,
91
- ledger: '1',
94
+ ledger: 1,
92
95
  pagingToken: `${i + DEFAULT_PAGE_SIZE}`,
93
96
  })),
94
97
  });
@@ -104,14 +107,14 @@ describe('SorobanServer', () => {
104
107
  events: [
105
108
  ...Array.from({ length: DEFAULT_PAGE_SIZE - 1 }, (_, i) => ({
106
109
  id: `${i}`,
107
- ledger: '1',
110
+ ledger: 1,
108
111
  pagingToken: `${i}`,
109
112
  })),
110
- { id: '2-1', ledger: '2', pagingToken: '1' },
113
+ { id: '2-1', ledger: 2, pagingToken: '1' },
111
114
  ],
112
115
  })
113
116
  .mockResolvedValueOnce({
114
- events: [{ id: '2-2', ledger: '2', pagingToken: '2' }],
117
+ events: [{ id: '2-2', ledger: 2, pagingToken: '2' }],
115
118
  });
116
119
  const response = await server.getEvents({
117
120
  startLedger: 1,
@@ -120,7 +123,7 @@ describe('SorobanServer', () => {
120
123
  events: [
121
124
  ...Array.from({ length: DEFAULT_PAGE_SIZE - 1 }, (_, i) => ({
122
125
  id: `${i}`,
123
- ledger: '1',
126
+ ledger: 1,
124
127
  pagingToken: `${i}`,
125
128
  })),
126
129
  ],
@@ -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-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { GetEventsRequest, Server } from 'soroban-client/lib/server';\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(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 GetEventsRequest);\n\n expect(response).toEqual({ events: [] });\n expect(spy).toHaveBeenCalledTimes(1);\n });\n\n test('should handle events from different ledgers', async () => {\n spy.mockResolvedValue({\n events: [\n { id: '1', ledger: '1', pagingToken: '1' },\n { id: '2', ledger: '2', pagingToken: '2' },\n ],\n });\n\n const response = await server.getEvents({\n startLedger: 1,\n } as GetEventsRequest);\n\n expect(response).toEqual({\n events: [{ id: '1', ledger: '1', pagingToken: '1' }],\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 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 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 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 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 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-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Server } from 'soroban-client/lib/server';\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(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 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 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 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 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 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 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 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,4 +1,4 @@
1
- import { Server } from 'stellar-sdk';
1
+ import { Server } from 'stellar-sdk/lib/horizon';
2
2
  export interface StellarNetwork {
3
3
  network_passphrase: string;
4
4
  history_latest_ledger: string;
@@ -7,12 +7,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
8
  exports.StellarServer = void 0;
9
9
  const node_core_1 = require("@subql/node-core");
10
- const stellar_sdk_1 = require("stellar-sdk");
10
+ const horizon_1 = require("stellar-sdk/lib/horizon");
11
11
  const urijs_1 = __importDefault(require("urijs"));
12
12
  const logger = (0, node_core_1.getLogger)('stellar-server');
13
- class StellarServer extends stellar_sdk_1.Server {
13
+ class StellarServer extends horizon_1.Server {
14
14
  async getNetwork() {
15
- const network = (await stellar_sdk_1.HorizonAxiosClient.get((0, urijs_1.default)(this.serverURL).toString())).data;
15
+ const network = (await horizon_1.AxiosClient.get((0, urijs_1.default)(this.serverURL).toString())).data;
16
16
  return network;
17
17
  }
18
18
  }
@@ -1 +1 @@
1
- {"version":3,"file":"stellar.server.js","sourceRoot":"","sources":["../../src/stellar/stellar.server.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;AAEnC,gDAA6C;AAC7C,6CAAyD;AACzD,kDAAwB;AAExB,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,gBAAgB,CAAC,CAAC;AAO3C,MAAa,aAAc,SAAQ,oBAAM;IACvC,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,GAAmB,CAC9B,MAAM,gCAAkB,CAAC,GAAG,CAAC,IAAA,eAAG,EAAC,IAAI,CAAC,SAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,CACpE,CAAC,IAAI,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAPD,sCAOC","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { getLogger } from '@subql/node-core';\nimport { HorizonAxiosClient, Server } from 'stellar-sdk';\nimport URI from 'urijs';\n\nconst logger = getLogger('stellar-server');\n\nexport interface StellarNetwork {\n network_passphrase: string;\n history_latest_ledger: string;\n}\n\nexport class StellarServer extends Server {\n async getNetwork(): Promise<StellarNetwork> {\n const network: StellarNetwork = (\n await HorizonAxiosClient.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,gDAA6C;AAC7C,qDAA8D;AAC9D,kDAAwB;AAExB,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,gBAAgB,CAAC,CAAC;AAO3C,MAAa,aAAc,SAAQ,gBAAM;IACvC,KAAK,CAAC,UAAU;QACd,MAAM,OAAO,GAAmB,CAC9B,MAAM,qBAAW,CAAC,GAAG,CAAC,IAAA,eAAG,EAAC,IAAI,CAAC,SAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAC7D,CAAC,IAAI,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;CACF;AAPD,sCAOC","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { getLogger } from '@subql/node-core';\nimport { AxiosClient, Server } from 'stellar-sdk/lib/horizon';\nimport URI from 'urijs';\n\nconst logger = getLogger('stellar-server');\n\nexport interface StellarNetwork {\n network_passphrase: string;\n history_latest_ledger: string;\n}\n\nexport class StellarServer extends Server {\n async getNetwork(): Promise<StellarNetwork> {\n const network: StellarNetwork = (\n await AxiosClient.get(URI(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": "3.4.2",
3
+ "version": "3.4.3-1",
4
4
  "description": "",
5
5
  "author": "Ian He",
6
6
  "license": "GPL-3.0",
@@ -26,11 +26,11 @@
26
26
  "@nestjs/platform-express": "^9.4.0",
27
27
  "@nestjs/schedule": "^3.0.1",
28
28
  "@subql/common": "^3.3.0",
29
- "@subql/common-stellar": "3.1.1-0",
29
+ "@subql/common-stellar": "3.1.1-1",
30
30
  "@subql/node-core": "^7.0.2",
31
31
  "@subql/testing": "^2.0.0",
32
32
  "@subql/types": "^2.2.1-1",
33
- "@subql/types-stellar": "3.1.1",
33
+ "@subql/types-stellar": "3.1.2-0",
34
34
  "cacheable-lookup": "6",
35
35
  "cron-converter": "^1.0.2",
36
36
  "eventemitter2": "^6.4.5",
@@ -40,8 +40,8 @@
40
40
  "reflect-metadata": "^0.1.13",
41
41
  "rimraf": "^3.0.2",
42
42
  "rxjs": "^7.5.2",
43
- "soroban-client": "^0.9.1",
44
- "stellar-sdk": "^10.4.1",
43
+ "soroban-client": "^1.0.1",
44
+ "stellar-sdk": "^11.2.0",
45
45
  "yargs": "^16.2.0"
46
46
  },
47
47
  "peerDependencies": {
@@ -65,5 +65,6 @@
65
65
  "files": [
66
66
  "/dist",
67
67
  "/bin"
68
- ]
68
+ ],
69
+ "stableVersion": "3.4.3-0"
69
70
  }