@subql/node-stellar 2.9.3-2

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.
Files changed (175) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +674 -0
  3. package/README.md +77 -0
  4. package/bin/run +4 -0
  5. package/bin/run.cmd +3 -0
  6. package/dist/.tsbuildinfo +1 -0
  7. package/dist/app.module.d.ts +2 -0
  8. package/dist/app.module.js +35 -0
  9. package/dist/app.module.js.map +1 -0
  10. package/dist/configure/SubqueryProject.d.ts +25 -0
  11. package/dist/configure/SubqueryProject.js +148 -0
  12. package/dist/configure/SubqueryProject.js.map +1 -0
  13. package/dist/configure/configure.module.d.ts +10 -0
  14. package/dist/configure/configure.module.js +129 -0
  15. package/dist/configure/configure.module.js.map +1 -0
  16. package/dist/indexer/blockDispatcher/block-dispatcher.service.d.ts +16 -0
  17. package/dist/indexer/blockDispatcher/block-dispatcher.service.js +54 -0
  18. package/dist/indexer/blockDispatcher/block-dispatcher.service.js.map +1 -0
  19. package/dist/indexer/blockDispatcher/index.d.ts +4 -0
  20. package/dist/indexer/blockDispatcher/index.js +10 -0
  21. package/dist/indexer/blockDispatcher/index.js.map +1 -0
  22. package/dist/indexer/blockDispatcher/stellar-block-dispatcher.d.ts +4 -0
  23. package/dist/indexer/blockDispatcher/stellar-block-dispatcher.js +5 -0
  24. package/dist/indexer/blockDispatcher/stellar-block-dispatcher.js.map +1 -0
  25. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.d.ts +16 -0
  26. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js +78 -0
  27. package/dist/indexer/blockDispatcher/worker-block-dispatcher.service.js.map +1 -0
  28. package/dist/indexer/dictionary.service.d.ts +7 -0
  29. package/dist/indexer/dictionary.service.js +34 -0
  30. package/dist/indexer/dictionary.service.js.map +1 -0
  31. package/dist/indexer/ds-processor.service.d.ts +9 -0
  32. package/dist/indexer/ds-processor.service.js +46 -0
  33. package/dist/indexer/ds-processor.service.js.map +1 -0
  34. package/dist/indexer/dynamic-ds.service.d.ts +9 -0
  35. package/dist/indexer/dynamic-ds.service.js +71 -0
  36. package/dist/indexer/dynamic-ds.service.js.map +1 -0
  37. package/dist/indexer/fetch.module.d.ts +2 -0
  38. package/dist/indexer/fetch.module.js +93 -0
  39. package/dist/indexer/fetch.module.js.map +1 -0
  40. package/dist/indexer/fetch.service.d.ts +33 -0
  41. package/dist/indexer/fetch.service.js +201 -0
  42. package/dist/indexer/fetch.service.js.map +1 -0
  43. package/dist/indexer/fetch.service.spec.d.ts +1 -0
  44. package/dist/indexer/fetch.service.spec.js +58 -0
  45. package/dist/indexer/fetch.service.spec.js.map +1 -0
  46. package/dist/indexer/indexer.manager.d.ts +36 -0
  47. package/dist/indexer/indexer.manager.js +92 -0
  48. package/dist/indexer/indexer.manager.js.map +1 -0
  49. package/dist/indexer/indexer.module.d.ts +2 -0
  50. package/dist/indexer/indexer.module.js +86 -0
  51. package/dist/indexer/indexer.module.js.map +1 -0
  52. package/dist/indexer/project.service.d.ts +13 -0
  53. package/dist/indexer/project.service.js +60 -0
  54. package/dist/indexer/project.service.js.map +1 -0
  55. package/dist/indexer/sandbox.service.d.ts +13 -0
  56. package/dist/indexer/sandbox.service.js +64 -0
  57. package/dist/indexer/sandbox.service.js.map +1 -0
  58. package/dist/indexer/types.d.ts +1 -0
  59. package/dist/indexer/types.js +5 -0
  60. package/dist/indexer/types.js.map +1 -0
  61. package/dist/indexer/unfinalizedBlocks.service.d.ts +11 -0
  62. package/dist/indexer/unfinalizedBlocks.service.js +52 -0
  63. package/dist/indexer/unfinalizedBlocks.service.js.map +1 -0
  64. package/dist/indexer/worker/worker.d.ts +31 -0
  65. package/dist/indexer/worker/worker.js +103 -0
  66. package/dist/indexer/worker/worker.js.map +1 -0
  67. package/dist/indexer/worker/worker.module.d.ts +2 -0
  68. package/dist/indexer/worker/worker.module.js +33 -0
  69. package/dist/indexer/worker/worker.module.js.map +1 -0
  70. package/dist/indexer/worker/worker.service.d.ts +26 -0
  71. package/dist/indexer/worker/worker.service.js +90 -0
  72. package/dist/indexer/worker/worker.service.js.map +1 -0
  73. package/dist/indexer/worker/worker.unfinalizedBlocks.service.d.ts +16 -0
  74. package/dist/indexer/worker/worker.unfinalizedBlocks.service.js +50 -0
  75. package/dist/indexer/worker/worker.unfinalizedBlocks.service.js.map +1 -0
  76. package/dist/init.d.ts +1 -0
  77. package/dist/init.js +52 -0
  78. package/dist/init.js.map +1 -0
  79. package/dist/main.d.ts +1 -0
  80. package/dist/main.js +22 -0
  81. package/dist/main.js.map +1 -0
  82. package/dist/meta/meta.controller.d.ts +21 -0
  83. package/dist/meta/meta.controller.js +36 -0
  84. package/dist/meta/meta.controller.js.map +1 -0
  85. package/dist/meta/meta.module.d.ts +2 -0
  86. package/dist/meta/meta.module.js +28 -0
  87. package/dist/meta/meta.module.js.map +1 -0
  88. package/dist/meta/meta.service.d.ts +24 -0
  89. package/dist/meta/meta.service.js +121 -0
  90. package/dist/meta/meta.service.js.map +1 -0
  91. package/dist/stellar/api.connection.d.ts +20 -0
  92. package/dist/stellar/api.connection.js +63 -0
  93. package/dist/stellar/api.connection.js.map +1 -0
  94. package/dist/stellar/api.connection.spec.d.ts +1 -0
  95. package/dist/stellar/api.connection.spec.js +81 -0
  96. package/dist/stellar/api.connection.spec.js.map +1 -0
  97. package/dist/stellar/api.service.stellar.d.ts +18 -0
  98. package/dist/stellar/api.service.stellar.js +144 -0
  99. package/dist/stellar/api.service.stellar.js.map +1 -0
  100. package/dist/stellar/api.service.stellar.spec.d.ts +5 -0
  101. package/dist/stellar/api.service.stellar.spec.js +87 -0
  102. package/dist/stellar/api.service.stellar.spec.js.map +1 -0
  103. package/dist/stellar/api.stellar.d.ts +29 -0
  104. package/dist/stellar/api.stellar.js +116 -0
  105. package/dist/stellar/api.stellar.js.map +1 -0
  106. package/dist/stellar/api.stellar.spec.d.ts +1 -0
  107. package/dist/stellar/api.stellar.spec.js +81 -0
  108. package/dist/stellar/api.stellar.spec.js.map +1 -0
  109. package/dist/stellar/block.stellar.d.ts +11 -0
  110. package/dist/stellar/block.stellar.js +81 -0
  111. package/dist/stellar/block.stellar.js.map +1 -0
  112. package/dist/stellar/block.stellar.spec.d.ts +1 -0
  113. package/dist/stellar/block.stellar.spec.js +58 -0
  114. package/dist/stellar/block.stellar.spec.js.map +1 -0
  115. package/dist/stellar/index.d.ts +2 -0
  116. package/dist/stellar/index.js +21 -0
  117. package/dist/stellar/index.js.map +1 -0
  118. package/dist/stellar/safe-api.d.ts +20 -0
  119. package/dist/stellar/safe-api.js +67 -0
  120. package/dist/stellar/safe-api.js.map +1 -0
  121. package/dist/stellar/stellar.server.d.ts +8 -0
  122. package/dist/stellar/stellar.server.js +72 -0
  123. package/dist/stellar/stellar.server.js.map +1 -0
  124. package/dist/stellar/stellar.server.spec.d.ts +1 -0
  125. package/dist/stellar/stellar.server.spec.js +132 -0
  126. package/dist/stellar/stellar.server.spec.js.map +1 -0
  127. package/dist/stellar/utils.stellar.d.ts +2 -0
  128. package/dist/stellar/utils.stellar.js +10 -0
  129. package/dist/stellar/utils.stellar.js.map +1 -0
  130. package/dist/subcommands/forceClean.init.d.ts +1 -0
  131. package/dist/subcommands/forceClean.init.js +24 -0
  132. package/dist/subcommands/forceClean.init.js.map +1 -0
  133. package/dist/subcommands/forceClean.module.d.ts +2 -0
  134. package/dist/subcommands/forceClean.module.js +28 -0
  135. package/dist/subcommands/forceClean.module.js.map +1 -0
  136. package/dist/subcommands/mmrMigrate.init.d.ts +2 -0
  137. package/dist/subcommands/mmrMigrate.init.js +28 -0
  138. package/dist/subcommands/mmrMigrate.init.js.map +1 -0
  139. package/dist/subcommands/mmrMigrate.module.d.ts +2 -0
  140. package/dist/subcommands/mmrMigrate.module.js +28 -0
  141. package/dist/subcommands/mmrMigrate.module.js.map +1 -0
  142. package/dist/subcommands/mmrRegenerate.init.d.ts +1 -0
  143. package/dist/subcommands/mmrRegenerate.init.js +28 -0
  144. package/dist/subcommands/mmrRegenerate.init.js.map +1 -0
  145. package/dist/subcommands/mmrRegenerate.module.d.ts +2 -0
  146. package/dist/subcommands/mmrRegenerate.module.js +30 -0
  147. package/dist/subcommands/mmrRegenerate.module.js.map +1 -0
  148. package/dist/subcommands/reindex.init.d.ts +1 -0
  149. package/dist/subcommands/reindex.init.js +30 -0
  150. package/dist/subcommands/reindex.init.js.map +1 -0
  151. package/dist/subcommands/reindex.module.d.ts +4 -0
  152. package/dist/subcommands/reindex.module.js +60 -0
  153. package/dist/subcommands/reindex.module.js.map +1 -0
  154. package/dist/subcommands/reindex.service.d.ts +11 -0
  155. package/dist/subcommands/reindex.service.js +46 -0
  156. package/dist/subcommands/reindex.service.js.map +1 -0
  157. package/dist/subcommands/testing.init.d.ts +1 -0
  158. package/dist/subcommands/testing.init.js +25 -0
  159. package/dist/subcommands/testing.init.js.map +1 -0
  160. package/dist/subcommands/testing.module.d.ts +4 -0
  161. package/dist/subcommands/testing.module.js +88 -0
  162. package/dist/subcommands/testing.module.js.map +1 -0
  163. package/dist/subcommands/testing.service.d.ts +9 -0
  164. package/dist/subcommands/testing.service.js +49 -0
  165. package/dist/subcommands/testing.service.js.map +1 -0
  166. package/dist/utils/project.d.ts +6 -0
  167. package/dist/utils/project.js +33 -0
  168. package/dist/utils/project.js.map +1 -0
  169. package/dist/utils/string.d.ts +1 -0
  170. package/dist/utils/string.js +10 -0
  171. package/dist/utils/string.js.map +1 -0
  172. package/dist/yargs.d.ts +303 -0
  173. package/dist/yargs.js +381 -0
  174. package/dist/yargs.js.map +1 -0
  175. package/package.json +69 -0
@@ -0,0 +1,72 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.StellarServer = void 0;
6
+ const node_core_1 = require("@subql/node-core");
7
+ const lodash_1 = require("lodash");
8
+ const soroban_client_1 = require("soroban-client");
9
+ const logger = (0, node_core_1.getLogger)('stellar-server');
10
+ const DEFAULT_PAGE_SIZE = 100;
11
+ class StellarServer extends soroban_client_1.Server {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.eventsCache = {};
15
+ }
16
+ async fetchEventsForSequence(sequence, request, accEvents = []) {
17
+ var _a;
18
+ const response = await super.getEvents(request);
19
+ // Separate the events for the current sequence and the subsequent sequences
20
+ const groupedEvents = (0, lodash_1.groupBy)(response.events, (event) => parseInt(event.ledger) === sequence ? 'events' : 'eventsToCache');
21
+ const events = (0, lodash_1.compact)(groupedEvents.events);
22
+ let eventsToCache = (0, lodash_1.compact)(groupedEvents.eventsToCache);
23
+ // Update the accumulated events with the events from the current sequence
24
+ const newEvents = accEvents.concat(events);
25
+ if (eventsToCache === null || eventsToCache === void 0 ? void 0 : eventsToCache.length) {
26
+ if (response.events.length === DEFAULT_PAGE_SIZE) {
27
+ const lastSequence = (0, lodash_1.last)(response.events).ledger;
28
+ eventsToCache = eventsToCache.filter((event) => event.ledger !== lastSequence);
29
+ }
30
+ return {
31
+ events: { events: newEvents },
32
+ eventsToCache: { events: eventsToCache },
33
+ };
34
+ }
35
+ if (response.events.length < DEFAULT_PAGE_SIZE) {
36
+ return { events: { events: newEvents }, eventsToCache: { events: [] } };
37
+ }
38
+ // Prepare the next request
39
+ const nextRequest = Object.assign(Object.assign({}, request), { cursor: (_a = response.events[response.events.length - 1]) === null || _a === void 0 ? void 0 : _a.pagingToken, startLedger: undefined });
40
+ // Continue fetching events for the sequence
41
+ return this.fetchEventsForSequence(sequence, nextRequest, newEvents);
42
+ }
43
+ updateEventCache(response, ignoreHeight) {
44
+ response.events.forEach((event) => {
45
+ if (ignoreHeight && ignoreHeight === parseInt(event.ledger))
46
+ return;
47
+ const ledger = parseInt(event.ledger);
48
+ if (!this.eventsCache[ledger]) {
49
+ this.eventsCache[ledger] = {
50
+ events: [],
51
+ };
52
+ }
53
+ const eventExists = this.eventsCache[ledger].events.some((existingEvent) => existingEvent.id === event.id);
54
+ if (!eventExists) {
55
+ this.eventsCache[ledger].events.push(event);
56
+ }
57
+ });
58
+ }
59
+ async getEvents(request) {
60
+ const sequence = request.startLedger;
61
+ if (this.eventsCache[sequence]) {
62
+ const cachedEvents = this.eventsCache[sequence];
63
+ delete this.eventsCache[sequence];
64
+ return cachedEvents;
65
+ }
66
+ const response = await this.fetchEventsForSequence(sequence, request);
67
+ this.updateEventCache(response.eventsToCache, sequence);
68
+ return response.events;
69
+ }
70
+ }
71
+ exports.StellarServer = StellarServer;
72
+ //# sourceMappingURL=stellar.server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stellar.server.js","sourceRoot":"","sources":["../../src/stellar/stellar.server.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 { getLogger } from '@subql/node-core';\nimport { compact, groupBy, last } from 'lodash';\nimport { Server, SorobanRpc } from 'soroban-client';\nimport { GetEventsRequest } from 'soroban-client/lib/server';\n\nconst logger = getLogger('stellar-server');\nconst DEFAULT_PAGE_SIZE = 100;\n\nexport class StellarServer extends Server {\n private eventsCache: { [key: number]: SorobanRpc.GetEventsResponse } = {};\n\n private async fetchEventsForSequence(\n sequence: number,\n request: GetEventsRequest,\n accEvents: SorobanRpc.EventResponse[] = [],\n ): Promise<{\n events: SorobanRpc.GetEventsResponse;\n eventsToCache: SorobanRpc.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 parseInt(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 },\n eventsToCache: { events: eventsToCache },\n };\n }\n\n if (response.events.length < DEFAULT_PAGE_SIZE) {\n return { events: { events: newEvents }, eventsToCache: { events: [] } };\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.GetEventsResponse,\n ignoreHeight?: number,\n ): void {\n response.events.forEach((event) => {\n if (ignoreHeight && ignoreHeight === parseInt(event.ledger)) return;\n const ledger = parseInt(event.ledger);\n if (!this.eventsCache[ledger]) {\n this.eventsCache[ledger] = {\n events: [],\n } as SorobanRpc.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: GetEventsRequest,\n ): Promise<SorobanRpc.GetEventsResponse> {\n const sequence = request.startLedger;\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"]}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ const server_1 = require("soroban-client/lib/server");
6
+ const stellar_server_1 = require("./stellar.server");
7
+ const DEFAULT_PAGE_SIZE = 100;
8
+ describe('StellarServer', () => {
9
+ let server;
10
+ const url = 'https://example.com';
11
+ let spy;
12
+ beforeEach(() => {
13
+ server = new stellar_server_1.StellarServer(url);
14
+ spy = jest.spyOn(server_1.Server.prototype, 'getEvents');
15
+ });
16
+ afterEach(() => {
17
+ spy.mockRestore();
18
+ });
19
+ test('should handle no events', async () => {
20
+ spy.mockResolvedValue({ events: [] });
21
+ const response = await server.getEvents({
22
+ startLedger: 1,
23
+ });
24
+ expect(response).toEqual({ events: [] });
25
+ expect(spy).toHaveBeenCalledTimes(1);
26
+ });
27
+ test('should handle events from different ledgers', async () => {
28
+ spy.mockResolvedValue({
29
+ events: [
30
+ { id: '1', ledger: '1', pagingToken: '1' },
31
+ { id: '2', ledger: '2', pagingToken: '2' },
32
+ ],
33
+ });
34
+ const response = await server.getEvents({
35
+ startLedger: 1,
36
+ });
37
+ expect(response).toEqual({
38
+ events: [{ id: '1', ledger: '1', pagingToken: '1' }],
39
+ });
40
+ expect(spy).toHaveBeenCalledTimes(1);
41
+ });
42
+ test('should handle response length less than DEFAULT_PAGE_SIZE', async () => {
43
+ spy.mockResolvedValue({
44
+ events: Array.from({ length: DEFAULT_PAGE_SIZE - 1 }, (_, i) => ({
45
+ id: `${i}`,
46
+ ledger: '1',
47
+ pagingToken: `${i}`,
48
+ })),
49
+ });
50
+ const response = await server.getEvents({
51
+ startLedger: 1,
52
+ });
53
+ expect(response.events.length).toBe(DEFAULT_PAGE_SIZE - 1);
54
+ expect(spy).toHaveBeenCalledTimes(1);
55
+ });
56
+ test('should handle no matching ledger', async () => {
57
+ spy.mockResolvedValue({
58
+ events: [
59
+ { id: '1', ledger: '2', pagingToken: '1' },
60
+ { id: '1', ledger: '3', pagingToken: '2' },
61
+ ],
62
+ });
63
+ const response = await server.getEvents({
64
+ startLedger: 1,
65
+ });
66
+ expect(response).toEqual({ events: [] });
67
+ expect(spy).toHaveBeenCalledTimes(1);
68
+ });
69
+ test('should return cached events for given startLedger', async () => {
70
+ server.eventsCache[1] = {
71
+ events: [{ ledger: '1', pagingToken: '1' }],
72
+ };
73
+ const response = await server.getEvents({
74
+ startLedger: 1,
75
+ });
76
+ expect(response).toEqual({ events: [{ ledger: '1', pagingToken: '1' }] });
77
+ expect(spy).toHaveBeenCalledTimes(0);
78
+ });
79
+ test('should handle startLedger events greater than DEFAULT_PAGE_SIZE', async () => {
80
+ spy
81
+ .mockResolvedValueOnce({
82
+ events: Array.from({ length: DEFAULT_PAGE_SIZE }, (_, i) => ({
83
+ id: `${i}`,
84
+ ledger: '1',
85
+ pagingToken: `${i}`,
86
+ })),
87
+ })
88
+ .mockResolvedValueOnce({
89
+ events: Array.from({ length: 5 }, (_, i) => ({
90
+ id: `${i + DEFAULT_PAGE_SIZE}`,
91
+ ledger: '1',
92
+ pagingToken: `${i + DEFAULT_PAGE_SIZE}`,
93
+ })),
94
+ });
95
+ const response = await server.getEvents({
96
+ startLedger: 1,
97
+ });
98
+ expect(response.events.length).toBe(DEFAULT_PAGE_SIZE + 5);
99
+ expect(spy).toHaveBeenCalledTimes(2);
100
+ });
101
+ test('should handle last block of otherEvents on next page', async () => {
102
+ spy
103
+ .mockResolvedValueOnce({
104
+ events: [
105
+ ...Array.from({ length: DEFAULT_PAGE_SIZE - 1 }, (_, i) => ({
106
+ id: `${i}`,
107
+ ledger: '1',
108
+ pagingToken: `${i}`,
109
+ })),
110
+ { id: '2-1', ledger: '2', pagingToken: '1' },
111
+ ],
112
+ })
113
+ .mockResolvedValueOnce({
114
+ events: [{ id: '2-2', ledger: '2', pagingToken: '2' }],
115
+ });
116
+ const response = await server.getEvents({
117
+ startLedger: 1,
118
+ });
119
+ expect(response).toEqual({
120
+ events: [
121
+ ...Array.from({ length: DEFAULT_PAGE_SIZE - 1 }, (_, i) => ({
122
+ id: `${i}`,
123
+ ledger: '1',
124
+ pagingToken: `${i}`,
125
+ })),
126
+ ],
127
+ });
128
+ expect(server.eventsCache[2]).toBeUndefined;
129
+ expect(spy).toHaveBeenCalledTimes(1);
130
+ });
131
+ });
132
+ //# sourceMappingURL=stellar.server.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stellar.server.spec.js","sourceRoot":"","sources":["../../src/stellar/stellar.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 { SorobanRpc } from 'soroban-client';\nimport { GetEventsRequest, Server } from 'soroban-client/lib/server';\nimport { StellarServer } from './stellar.server';\n\nconst DEFAULT_PAGE_SIZE = 100;\n\ndescribe('StellarServer', () => {\n let server: StellarServer;\n const url = 'https://example.com';\n let spy: jest.SpyInstance;\n\n beforeEach(() => {\n server = new StellarServer(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"]}
@@ -0,0 +1,2 @@
1
+ import { ApiWrapper } from '@subql/types-stellar';
2
+ export declare function calcInterval(api: ApiWrapper): number;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.calcInterval = void 0;
6
+ function calcInterval(api) {
7
+ return 6000;
8
+ }
9
+ exports.calcInterval = calcInterval;
10
+ //# sourceMappingURL=utils.stellar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.stellar.js","sourceRoot":"","sources":["../../src/stellar/utils.stellar.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAInC,SAAgB,YAAY,CAAC,GAAe;IAC1C,OAAO,IAAI,CAAC;AACd,CAAC;AAFD,oCAEC","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { ApiWrapper } from '@subql/types-stellar';\n\nexport function calcInterval(api: ApiWrapper): number {\n return 6000;\n}\n"]}
@@ -0,0 +1 @@
1
+ export declare function forceCleanInit(): Promise<void>;
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.forceCleanInit = void 0;
6
+ const core_1 = require("@nestjs/core");
7
+ const node_core_1 = require("@subql/node-core");
8
+ const forceClean_module_1 = require("./forceClean.module");
9
+ const logger = (0, node_core_1.getLogger)('CLI');
10
+ async function forceCleanInit() {
11
+ try {
12
+ const app = await core_1.NestFactory.create(forceClean_module_1.ForceCleanModule);
13
+ await app.init();
14
+ const forceCleanService = app.get(node_core_1.ForceCleanService);
15
+ await forceCleanService.forceClean();
16
+ }
17
+ catch (e) {
18
+ logger.error(e, 'Force-clean failed to execute');
19
+ process.exit(1);
20
+ }
21
+ process.exit(0);
22
+ }
23
+ exports.forceCleanInit = forceCleanInit;
24
+ //# sourceMappingURL=forceClean.init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forceClean.init.js","sourceRoot":"","sources":["../../src/subcommands/forceClean.init.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,uCAA2C;AAC3C,gDAAgE;AAChE,2DAAuD;AAEvD,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,KAAK,CAAC,CAAC;AACzB,KAAK,UAAU,cAAc;IAClC,IAAI;QACF,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,oCAAgB,CAAC,CAAC;QACvD,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,iBAAiB,GAAG,GAAG,CAAC,GAAG,CAAC,6BAAiB,CAAC,CAAC;QACrD,MAAM,iBAAiB,CAAC,UAAU,EAAE,CAAC;KACtC;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,+BAA+B,CAAC,CAAC;QACjD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAZD,wCAYC","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { NestFactory } from '@nestjs/core';\nimport { ForceCleanService, getLogger } from '@subql/node-core';\nimport { ForceCleanModule } from './forceClean.module';\n\nconst logger = getLogger('CLI');\nexport async function forceCleanInit(): Promise<void> {\n try {\n const app = await NestFactory.create(ForceCleanModule);\n await app.init();\n const forceCleanService = app.get(ForceCleanService);\n await forceCleanService.forceClean();\n } catch (e) {\n logger.error(e, 'Force-clean failed to execute');\n process.exit(1);\n }\n\n process.exit(0);\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare class ForceCleanModule {
2
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.ForceCleanModule = void 0;
12
+ const common_1 = require("@nestjs/common");
13
+ const node_core_1 = require("@subql/node-core");
14
+ const configure_module_1 = require("../configure/configure.module");
15
+ let ForceCleanModule = class ForceCleanModule {
16
+ };
17
+ ForceCleanModule = __decorate([
18
+ (0, common_1.Module)({
19
+ imports: [
20
+ node_core_1.DbModule.forRoot(),
21
+ configure_module_1.ConfigureModule.register(),
22
+ node_core_1.ForceCleanFeatureModule,
23
+ ],
24
+ controllers: [],
25
+ })
26
+ ], ForceCleanModule);
27
+ exports.ForceCleanModule = ForceCleanModule;
28
+ //# sourceMappingURL=forceClean.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forceClean.module.js","sourceRoot":"","sources":["../../src/subcommands/forceClean.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,gDAAqE;AACrE,oEAAgE;AAUzD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAG,CAAA;AAAnB,gBAAgB;IAR5B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,oBAAQ,CAAC,OAAO,EAAE;YAClB,kCAAe,CAAC,QAAQ,EAAE;YAC1B,mCAAuB;SACxB;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,gBAAgB,CAAG;AAAnB,4CAAgB","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Module } from '@nestjs/common';\nimport { DbModule, ForceCleanFeatureModule } from '@subql/node-core';\nimport { ConfigureModule } from '../configure/configure.module';\n\n@Module({\n imports: [\n DbModule.forRoot(),\n ConfigureModule.register(),\n ForceCleanFeatureModule,\n ],\n controllers: [],\n})\nexport class ForceCleanModule {}\n"]}
@@ -0,0 +1,2 @@
1
+ import { MigrationDirection } from '@subql/node-core';
2
+ export declare function mmrMigrateInit(direction: MigrationDirection): Promise<void>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.mmrMigrateInit = void 0;
6
+ const core_1 = require("@nestjs/core");
7
+ const node_core_1 = require("@subql/node-core");
8
+ const mmrMigrate_module_1 = require("./mmrMigrate.module");
9
+ const logger = (0, node_core_1.getLogger)('mmr-migrate');
10
+ async function mmrMigrateInit(direction) {
11
+ try {
12
+ logger.info('Starting MMR migration process...');
13
+ const app = await core_1.NestFactory.create(mmrMigrate_module_1.MMRMigrateModule);
14
+ await app.init();
15
+ logger.info('MMRMigrateModule initialized.');
16
+ const mmrMigrateService = app.get(node_core_1.MMRMigrateService);
17
+ logger.info(`Migrating MMR data in ${direction} direction...`);
18
+ await mmrMigrateService.migrate(direction);
19
+ logger.info('MMR migration completed successfully.');
20
+ }
21
+ catch (e) {
22
+ logger.error(e, 'MMR migration failed to execute');
23
+ process.exit(1);
24
+ }
25
+ process.exit(0);
26
+ }
27
+ exports.mmrMigrateInit = mmrMigrateInit;
28
+ //# sourceMappingURL=mmrMigrate.init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mmrMigrate.init.js","sourceRoot":"","sources":["../../src/subcommands/mmrMigrate.init.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,uCAA2C;AAC3C,gDAI0B;AAC1B,2DAAuD;AAEvD,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,aAAa,CAAC,CAAC;AAEjC,KAAK,UAAU,cAAc,CAClC,SAA6B;IAE7B,IAAI;QACF,MAAM,CAAC,IAAI,CAAC,mCAAmC,CAAC,CAAC;QAEjD,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,oCAAgB,CAAC,CAAC;QACvD,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QAEjB,MAAM,CAAC,IAAI,CAAC,+BAA+B,CAAC,CAAC;QAE7C,MAAM,iBAAiB,GAAG,GAAG,CAAC,GAAG,CAAC,6BAAiB,CAAC,CAAC;QACrD,MAAM,CAAC,IAAI,CAAC,yBAAyB,SAAS,eAAe,CAAC,CAAC;QAC/D,MAAM,iBAAiB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;QAE3C,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;KACtD;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,iCAAiC,CAAC,CAAC;QACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAtBD,wCAsBC","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { NestFactory } from '@nestjs/core';\nimport {\n getLogger,\n MigrationDirection,\n MMRMigrateService,\n} from '@subql/node-core';\nimport { MMRMigrateModule } from './mmrMigrate.module';\n\nconst logger = getLogger('mmr-migrate');\n\nexport async function mmrMigrateInit(\n direction: MigrationDirection,\n): Promise<void> {\n try {\n logger.info('Starting MMR migration process...');\n\n const app = await NestFactory.create(MMRMigrateModule);\n await app.init();\n\n logger.info('MMRMigrateModule initialized.');\n\n const mmrMigrateService = app.get(MMRMigrateService);\n logger.info(`Migrating MMR data in ${direction} direction...`);\n await mmrMigrateService.migrate(direction);\n\n logger.info('MMR migration completed successfully.');\n } catch (e) {\n logger.error(e, 'MMR migration failed to execute');\n process.exit(1);\n }\n\n process.exit(0);\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare class MMRMigrateModule {
2
+ }
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.MMRMigrateModule = void 0;
12
+ const common_1 = require("@nestjs/common");
13
+ const node_core_1 = require("@subql/node-core");
14
+ const configure_module_1 = require("../configure/configure.module");
15
+ let MMRMigrateModule = class MMRMigrateModule {
16
+ };
17
+ MMRMigrateModule = __decorate([
18
+ (0, common_1.Module)({
19
+ imports: [
20
+ node_core_1.DbModule.forRoot(),
21
+ configure_module_1.ConfigureModule.register(),
22
+ node_core_1.MMRMigrateFeatureModule,
23
+ ],
24
+ controllers: [],
25
+ })
26
+ ], MMRMigrateModule);
27
+ exports.MMRMigrateModule = MMRMigrateModule;
28
+ //# sourceMappingURL=mmrMigrate.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mmrMigrate.module.js","sourceRoot":"","sources":["../../src/subcommands/mmrMigrate.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,gDAAqE;AACrE,oEAAgE;AAUzD,IAAM,gBAAgB,GAAtB,MAAM,gBAAgB;CAAG,CAAA;AAAnB,gBAAgB;IAR5B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,oBAAQ,CAAC,OAAO,EAAE;YAClB,kCAAe,CAAC,QAAQ,EAAE;YAC1B,mCAAuB;SACxB;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,gBAAgB,CAAG;AAAnB,4CAAgB","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Module } from '@nestjs/common';\nimport { DbModule, MMRMigrateFeatureModule } from '@subql/node-core';\nimport { ConfigureModule } from '../configure/configure.module';\n\n@Module({\n imports: [\n DbModule.forRoot(),\n ConfigureModule.register(),\n MMRMigrateFeatureModule,\n ],\n controllers: [],\n})\nexport class MMRMigrateModule {}\n"]}
@@ -0,0 +1 @@
1
+ export declare function mmrRegenerateInit(probeMode?: boolean, resetOnly?: boolean, unsafe?: boolean, targetHeight?: number): Promise<void>;
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.mmrRegenerateInit = void 0;
6
+ const core_1 = require("@nestjs/core");
7
+ const node_core_1 = require("@subql/node-core");
8
+ const mmrRegenerate_module_1 = require("./mmrRegenerate.module");
9
+ const logger = (0, node_core_1.getLogger)('MMR-Regeneration');
10
+ async function mmrRegenerateInit(probeMode = false, resetOnly = false, unsafe = false, targetHeight) {
11
+ try {
12
+ const app = await core_1.NestFactory.create(mmrRegenerate_module_1.MmrRegenerateModule);
13
+ await app.init();
14
+ const mmrRegenerateService = app.get(node_core_1.MmrRegenerateService);
15
+ app.enableShutdownHooks();
16
+ await mmrRegenerateService.init();
17
+ if (!probeMode) {
18
+ await mmrRegenerateService.regenerate(targetHeight, resetOnly, unsafe);
19
+ }
20
+ }
21
+ catch (e) {
22
+ logger.error(e, 'Re-generate MMR failed to execute');
23
+ process.exit(1);
24
+ }
25
+ process.exit(0);
26
+ }
27
+ exports.mmrRegenerateInit = mmrRegenerateInit;
28
+ //# sourceMappingURL=mmrRegenerate.init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mmrRegenerate.init.js","sourceRoot":"","sources":["../../src/subcommands/mmrRegenerate.init.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,uCAA2C;AAC3C,gDAAmE;AACnE,iEAA6D;AAE7D,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,kBAAkB,CAAC,CAAC;AAEtC,KAAK,UAAU,iBAAiB,CACrC,SAAS,GAAG,KAAK,EACjB,SAAS,GAAG,KAAK,EACjB,MAAM,GAAG,KAAK,EACd,YAAqB;IAErB,IAAI;QACF,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,0CAAmB,CAAC,CAAC;QAC1D,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,oBAAoB,GAAG,GAAG,CAAC,GAAG,CAAC,gCAAoB,CAAC,CAAC;QAC3D,GAAG,CAAC,mBAAmB,EAAE,CAAC;QAC1B,MAAM,oBAAoB,CAAC,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,SAAS,EAAE;YACd,MAAM,oBAAoB,CAAC,UAAU,CAAC,YAAY,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;SACxE;KACF;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,mCAAmC,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AApBD,8CAoBC","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { NestFactory } from '@nestjs/core';\nimport { getLogger, MmrRegenerateService } from '@subql/node-core';\nimport { MmrRegenerateModule } from './mmrRegenerate.module';\n\nconst logger = getLogger('MMR-Regeneration');\n\nexport async function mmrRegenerateInit(\n probeMode = false,\n resetOnly = false,\n unsafe = false,\n targetHeight?: number,\n): Promise<void> {\n try {\n const app = await NestFactory.create(MmrRegenerateModule);\n await app.init();\n const mmrRegenerateService = app.get(MmrRegenerateService);\n app.enableShutdownHooks();\n await mmrRegenerateService.init();\n if (!probeMode) {\n await mmrRegenerateService.regenerate(targetHeight, resetOnly, unsafe);\n }\n } catch (e) {\n logger.error(e, 'Re-generate MMR failed to execute');\n process.exit(1);\n }\n process.exit(0);\n}\n"]}
@@ -0,0 +1,2 @@
1
+ export declare class MmrRegenerateModule {
2
+ }
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.MmrRegenerateModule = void 0;
12
+ const common_1 = require("@nestjs/common");
13
+ const event_emitter_1 = require("@nestjs/event-emitter");
14
+ const node_core_1 = require("@subql/node-core");
15
+ const configure_module_1 = require("../configure/configure.module");
16
+ let MmrRegenerateModule = class MmrRegenerateModule {
17
+ };
18
+ MmrRegenerateModule = __decorate([
19
+ (0, common_1.Module)({
20
+ imports: [
21
+ node_core_1.DbModule.forRoot(),
22
+ configure_module_1.ConfigureModule.register(),
23
+ node_core_1.MmrRegenerateFeatureModule,
24
+ event_emitter_1.EventEmitterModule.forRoot(),
25
+ ],
26
+ controllers: [],
27
+ })
28
+ ], MmrRegenerateModule);
29
+ exports.MmrRegenerateModule = MmrRegenerateModule;
30
+ //# sourceMappingURL=mmrRegenerate.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mmrRegenerate.module.js","sourceRoot":"","sources":["../../src/subcommands/mmrRegenerate.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAA2D;AAC3D,gDAAwE;AACxE,oEAAgE;AAWzD,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;CAAG,CAAA;AAAtB,mBAAmB;IAT/B,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,oBAAQ,CAAC,OAAO,EAAE;YAClB,kCAAe,CAAC,QAAQ,EAAE;YAC1B,sCAA0B;YAC1B,kCAAkB,CAAC,OAAO,EAAE;SAC7B;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,mBAAmB,CAAG;AAAtB,kDAAmB","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Module } from '@nestjs/common';\nimport { EventEmitterModule } from '@nestjs/event-emitter';\nimport { DbModule, MmrRegenerateFeatureModule } from '@subql/node-core';\nimport { ConfigureModule } from '../configure/configure.module';\n\n@Module({\n imports: [\n DbModule.forRoot(),\n ConfigureModule.register(),\n MmrRegenerateFeatureModule,\n EventEmitterModule.forRoot(),\n ],\n controllers: [],\n})\nexport class MmrRegenerateModule {}\n"]}
@@ -0,0 +1 @@
1
+ export declare function reindexInit(targetHeight: number): Promise<void>;
@@ -0,0 +1,30 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.reindexInit = void 0;
6
+ const core_1 = require("@nestjs/core");
7
+ const node_core_1 = require("@subql/node-core");
8
+ const reindex_module_1 = require("./reindex.module");
9
+ const reindex_service_1 = require("./reindex.service");
10
+ const logger = (0, node_core_1.getLogger)('CLI-Reindex');
11
+ async function reindexInit(targetHeight) {
12
+ try {
13
+ const app = await core_1.NestFactory.create(reindex_module_1.ReindexModule);
14
+ await app.init();
15
+ const reindexService = app.get(reindex_service_1.ReindexService);
16
+ await reindexService.init();
17
+ const actualReindexHeight = await reindexService.getTargetHeightWithUnfinalizedBlocks(targetHeight);
18
+ if (actualReindexHeight !== targetHeight) {
19
+ logger.info(`Found index target height ${targetHeight} beyond indexed unfinalized block ${actualReindexHeight}, will index to ${actualReindexHeight}`);
20
+ }
21
+ await reindexService.reindex(actualReindexHeight);
22
+ }
23
+ catch (e) {
24
+ logger.error(e, 'Reindex failed to execute');
25
+ process.exit(1);
26
+ }
27
+ process.exit(0);
28
+ }
29
+ exports.reindexInit = reindexInit;
30
+ //# sourceMappingURL=reindex.init.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reindex.init.js","sourceRoot":"","sources":["../../src/subcommands/reindex.init.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;AAEnC,uCAA2C;AAC3C,gDAA6C;AAC7C,qDAAiD;AACjD,uDAAmD;AAEnD,MAAM,MAAM,GAAG,IAAA,qBAAS,EAAC,aAAa,CAAC,CAAC;AACjC,KAAK,UAAU,WAAW,CAAC,YAAoB;IACpD,IAAI;QACF,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAC,8BAAa,CAAC,CAAC;QAEpD,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACjB,MAAM,cAAc,GAAG,GAAG,CAAC,GAAG,CAAC,gCAAc,CAAC,CAAC;QAE/C,MAAM,cAAc,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,mBAAmB,GACvB,MAAM,cAAc,CAAC,oCAAoC,CAAC,YAAY,CAAC,CAAC;QAC1E,IAAI,mBAAmB,KAAK,YAAY,EAAE;YACxC,MAAM,CAAC,IAAI,CACT,6BAA6B,YAAY,qCAAqC,mBAAmB,mBAAmB,mBAAmB,EAAE,CAC1I,CAAC;SACH;QACD,MAAM,cAAc,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;KACnD;IAAC,OAAO,CAAC,EAAE;QACV,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,2BAA2B,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;KACjB;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AArBD,kCAqBC","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { NestFactory } from '@nestjs/core';\nimport { getLogger } from '@subql/node-core';\nimport { ReindexModule } from './reindex.module';\nimport { ReindexService } from './reindex.service';\n\nconst logger = getLogger('CLI-Reindex');\nexport async function reindexInit(targetHeight: number): Promise<void> {\n try {\n const app = await NestFactory.create(ReindexModule);\n\n await app.init();\n const reindexService = app.get(ReindexService);\n\n await reindexService.init();\n const actualReindexHeight =\n await reindexService.getTargetHeightWithUnfinalizedBlocks(targetHeight);\n if (actualReindexHeight !== targetHeight) {\n logger.info(\n `Found index target height ${targetHeight} beyond indexed unfinalized block ${actualReindexHeight}, will index to ${actualReindexHeight}`,\n );\n }\n await reindexService.reindex(actualReindexHeight);\n } catch (e) {\n logger.error(e, 'Reindex failed to execute');\n process.exit(1);\n }\n process.exit(0);\n}\n"]}
@@ -0,0 +1,4 @@
1
+ export declare class ReindexFeatureModule {
2
+ }
3
+ export declare class ReindexModule {
4
+ }
@@ -0,0 +1,60 @@
1
+ "use strict";
2
+ // Copyright 2020-2023 SubQuery Pte Ltd authors & contributors
3
+ // SPDX-License-Identifier: GPL-3.0
4
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
5
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
6
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
7
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
8
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
9
+ };
10
+ Object.defineProperty(exports, "__esModule", { value: true });
11
+ exports.ReindexModule = exports.ReindexFeatureModule = void 0;
12
+ const common_1 = require("@nestjs/common");
13
+ const event_emitter_1 = require("@nestjs/event-emitter");
14
+ const schedule_1 = require("@nestjs/schedule");
15
+ const node_core_1 = require("@subql/node-core");
16
+ const configure_module_1 = require("../configure/configure.module");
17
+ const ds_processor_service_1 = require("../indexer/ds-processor.service");
18
+ const dynamic_ds_service_1 = require("../indexer/dynamic-ds.service");
19
+ const unfinalizedBlocks_service_1 = require("../indexer/unfinalizedBlocks.service");
20
+ const reindex_service_1 = require("./reindex.service");
21
+ let ReindexFeatureModule = class ReindexFeatureModule {
22
+ };
23
+ ReindexFeatureModule = __decorate([
24
+ (0, common_1.Module)({
25
+ providers: [
26
+ node_core_1.StoreCacheService,
27
+ node_core_1.StoreService,
28
+ reindex_service_1.ReindexService,
29
+ node_core_1.MmrService,
30
+ node_core_1.PgMmrCacheService,
31
+ node_core_1.ForceCleanService,
32
+ unfinalizedBlocks_service_1.UnfinalizedBlocksService,
33
+ dynamic_ds_service_1.DynamicDsService,
34
+ ds_processor_service_1.DsProcessorService,
35
+ {
36
+ // Used to work with DI for unfinalizedBlocksService but not used with reindex
37
+ provide: node_core_1.ApiService,
38
+ useFactory: () => undefined,
39
+ },
40
+ schedule_1.SchedulerRegistry,
41
+ ],
42
+ controllers: [],
43
+ })
44
+ ], ReindexFeatureModule);
45
+ exports.ReindexFeatureModule = ReindexFeatureModule;
46
+ let ReindexModule = class ReindexModule {
47
+ };
48
+ ReindexModule = __decorate([
49
+ (0, common_1.Module)({
50
+ imports: [
51
+ node_core_1.DbModule.forRoot(),
52
+ configure_module_1.ConfigureModule.register(),
53
+ ReindexFeatureModule,
54
+ event_emitter_1.EventEmitterModule.forRoot(),
55
+ ],
56
+ controllers: [],
57
+ })
58
+ ], ReindexModule);
59
+ exports.ReindexModule = ReindexModule;
60
+ //# sourceMappingURL=reindex.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reindex.module.js","sourceRoot":"","sources":["../../src/subcommands/reindex.module.ts"],"names":[],"mappings":";AAAA,8DAA8D;AAC9D,mCAAmC;;;;;;;;;AAEnC,2CAAwC;AACxC,yDAA2D;AAC3D,+CAAqD;AACrD,gDAQ0B;AAC1B,oEAAgE;AAChE,0EAAqE;AACrE,sEAAiE;AACjE,oFAAgF;AAChF,uDAAmD;AAsB5C,IAAM,oBAAoB,GAA1B,MAAM,oBAAoB;CAAG,CAAA;AAAvB,oBAAoB;IApBhC,IAAA,eAAM,EAAC;QACN,SAAS,EAAE;YACT,6BAAiB;YACjB,wBAAY;YACZ,gCAAc;YACd,sBAAU;YACV,6BAAiB;YACjB,6BAAiB;YACjB,oDAAwB;YACxB,qCAAgB;YAChB,yCAAkB;YAClB;gBACE,8EAA8E;gBAC9E,OAAO,EAAE,sBAAU;gBACnB,UAAU,EAAE,GAAG,EAAE,CAAC,SAAS;aAC5B;YACD,4BAAiB;SAClB;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,oBAAoB,CAAG;AAAvB,oDAAoB;AAW1B,IAAM,aAAa,GAAnB,MAAM,aAAa;CAAG,CAAA;AAAhB,aAAa;IATzB,IAAA,eAAM,EAAC;QACN,OAAO,EAAE;YACP,oBAAQ,CAAC,OAAO,EAAE;YAClB,kCAAe,CAAC,QAAQ,EAAE;YAC1B,oBAAoB;YACpB,kCAAkB,CAAC,OAAO,EAAE;SAC7B;QACD,WAAW,EAAE,EAAE;KAChB,CAAC;GACW,aAAa,CAAG;AAAhB,sCAAa","sourcesContent":["// Copyright 2020-2023 SubQuery Pte Ltd authors & contributors\n// SPDX-License-Identifier: GPL-3.0\n\nimport { Module } from '@nestjs/common';\nimport { EventEmitterModule } from '@nestjs/event-emitter';\nimport { SchedulerRegistry } from '@nestjs/schedule';\nimport {\n ApiService,\n DbModule,\n ForceCleanService,\n MmrService,\n PgMmrCacheService,\n StoreCacheService,\n StoreService,\n} from '@subql/node-core';\nimport { ConfigureModule } from '../configure/configure.module';\nimport { DsProcessorService } from '../indexer/ds-processor.service';\nimport { DynamicDsService } from '../indexer/dynamic-ds.service';\nimport { UnfinalizedBlocksService } from '../indexer/unfinalizedBlocks.service';\nimport { ReindexService } from './reindex.service';\n\n@Module({\n providers: [\n StoreCacheService,\n StoreService,\n ReindexService,\n MmrService,\n PgMmrCacheService,\n ForceCleanService,\n UnfinalizedBlocksService,\n DynamicDsService,\n DsProcessorService,\n {\n // Used to work with DI for unfinalizedBlocksService but not used with reindex\n provide: ApiService,\n useFactory: () => undefined,\n },\n SchedulerRegistry,\n ],\n controllers: [],\n})\nexport class ReindexFeatureModule {}\n\n@Module({\n imports: [\n DbModule.forRoot(),\n ConfigureModule.register(),\n ReindexFeatureModule,\n EventEmitterModule.forRoot(),\n ],\n controllers: [],\n})\nexport class ReindexModule {}\n"]}
@@ -0,0 +1,11 @@
1
+ import { SubqlStellarDataSource } from '@subql/common-stellar';
2
+ import { MmrService, NodeConfig, StoreService, ForceCleanService, BaseReindexService } from '@subql/node-core';
3
+ import { BlockWrapper } from '@subql/types-stellar';
4
+ import { Sequelize } from '@subql/x-sequelize';
5
+ import { SubqueryProject } from '../configure/SubqueryProject';
6
+ import { DynamicDsService } from '../indexer/dynamic-ds.service';
7
+ import { UnfinalizedBlocksService } from '../indexer/unfinalizedBlocks.service';
8
+ export declare class ReindexService extends BaseReindexService<SubqueryProject, SubqlStellarDataSource, BlockWrapper> {
9
+ constructor(sequelize: Sequelize, nodeConfig: NodeConfig, storeService: StoreService, mmrService: MmrService, project: SubqueryProject, forceCleanService: ForceCleanService, unfinalizedBlocksService: UnfinalizedBlocksService, dynamicDsService: DynamicDsService);
10
+ protected getStartBlockDatasources(): Promise<SubqlStellarDataSource[]>;
11
+ }