@ar.io/sdk 3.12.0-alpha.1 → 3.12.0-beta.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.
Files changed (70) hide show
  1. package/bundles/web.bundle.min.js +170 -167
  2. package/lib/cjs/common/index.js +2 -0
  3. package/lib/cjs/common/wayfinder/gateways/network.js +48 -0
  4. package/lib/cjs/common/wayfinder/gateways/simple-cache.js +35 -0
  5. package/lib/cjs/common/wayfinder/gateways/static.js +13 -0
  6. package/lib/cjs/common/wayfinder/index.js +47 -0
  7. package/lib/cjs/common/wayfinder/routing/strategies/ping.js +72 -0
  8. package/lib/cjs/common/wayfinder/routing/strategies/random.js +13 -0
  9. package/lib/cjs/common/wayfinder/routing/strategies/round-robin.js +42 -0
  10. package/lib/cjs/common/wayfinder/routing/strategies/static.js +29 -0
  11. package/lib/cjs/common/wayfinder/verification/strategies/data-root-verifier.js +139 -0
  12. package/lib/cjs/common/wayfinder/verification/strategies/hash-verifier.js +50 -0
  13. package/lib/cjs/common/wayfinder/verification/trusted.js +106 -0
  14. package/lib/cjs/common/wayfinder/wayfinder.js +735 -0
  15. package/lib/cjs/types/wayfinder.js +3 -0
  16. package/lib/cjs/utils/json.js +0 -1
  17. package/lib/cjs/utils/url.js +3 -1
  18. package/lib/cjs/version.js +1 -1
  19. package/lib/esm/common/index.js +2 -0
  20. package/lib/esm/common/wayfinder/gateways/network.js +44 -0
  21. package/lib/esm/common/wayfinder/gateways/simple-cache.js +31 -0
  22. package/lib/esm/common/wayfinder/gateways/static.js +9 -0
  23. package/lib/esm/common/wayfinder/index.js +31 -0
  24. package/lib/esm/common/wayfinder/routing/strategies/ping.js +68 -0
  25. package/lib/esm/common/wayfinder/routing/strategies/random.js +9 -0
  26. package/lib/esm/common/wayfinder/routing/strategies/round-robin.js +38 -0
  27. package/lib/esm/common/wayfinder/routing/strategies/static.js +25 -0
  28. package/lib/esm/common/wayfinder/verification/strategies/data-root-verifier.js +130 -0
  29. package/lib/esm/common/wayfinder/verification/strategies/hash-verifier.js +46 -0
  30. package/lib/esm/common/wayfinder/verification/trusted.js +102 -0
  31. package/lib/esm/common/wayfinder/wayfinder.js +723 -0
  32. package/lib/esm/types/wayfinder.js +2 -0
  33. package/lib/esm/utils/json.js +0 -1
  34. package/lib/esm/utils/url.js +3 -1
  35. package/lib/esm/version.js +1 -1
  36. package/lib/types/common/index.d.ts +1 -0
  37. package/lib/types/common/wayfinder/gateways/network.d.ts +33 -0
  38. package/lib/types/common/wayfinder/gateways/simple-cache.d.ts +31 -0
  39. package/lib/types/common/wayfinder/gateways/static.d.ts +23 -0
  40. package/lib/types/common/wayfinder/index.d.ts +26 -0
  41. package/lib/types/common/wayfinder/routing/strategies/ping.d.ts +27 -0
  42. package/lib/types/common/wayfinder/routing/strategies/random.d.ts +21 -0
  43. package/lib/types/common/wayfinder/routing/strategies/round-robin.d.ts +29 -0
  44. package/lib/types/common/wayfinder/routing/strategies/static.d.ts +29 -0
  45. package/lib/types/common/wayfinder/verification/strategies/data-root-verifier.d.ts +31 -0
  46. package/lib/types/common/wayfinder/verification/strategies/hash-verifier.d.ts +27 -0
  47. package/lib/types/common/wayfinder/verification/trusted.d.ts +51 -0
  48. package/lib/types/common/wayfinder/wayfinder.d.ts +299 -0
  49. package/lib/types/types/wayfinder.d.ts +66 -0
  50. package/lib/types/utils/json.d.ts +1 -1
  51. package/lib/types/version.d.ts +1 -1
  52. package/package.json +3 -2
  53. package/lib/cjs/types/ant.test.js +0 -150
  54. package/lib/cjs/types/token.test.js +0 -83
  55. package/lib/cjs/utils/ant.test.js +0 -111
  56. package/lib/cjs/utils/b64.test.js +0 -72
  57. package/lib/cjs/utils/url.test.js +0 -24
  58. package/lib/cjs/utils/utils.test.js +0 -194
  59. package/lib/esm/types/ant.test.js +0 -148
  60. package/lib/esm/types/token.test.js +0 -81
  61. package/lib/esm/utils/ant.test.js +0 -109
  62. package/lib/esm/utils/b64.test.js +0 -70
  63. package/lib/esm/utils/url.test.js +0 -19
  64. package/lib/esm/utils/utils.test.js +0 -192
  65. package/lib/types/types/ant.test.d.ts +0 -1
  66. package/lib/types/types/token.test.d.ts +0 -1
  67. package/lib/types/utils/ant.test.d.ts +0 -1
  68. package/lib/types/utils/b64.test.d.ts +0 -1
  69. package/lib/types/utils/url.test.d.ts +0 -1
  70. package/lib/types/utils/utils.test.d.ts +0 -1
@@ -1,192 +0,0 @@
1
- import { strict as assert } from 'node:assert';
2
- import { describe, it } from 'node:test';
3
- import { errorMessageFromOutput } from './ao.js';
4
- import { pruneTags, sortAndPaginateEpochDataIntoEligibleDistributions, } from './arweave.js';
5
- describe('pruneTags', () => {
6
- it('should remove tags with undefined values', () => {
7
- const tags = [
8
- { name: 'Tag1', value: 'value1' },
9
- { name: 'Tag2', value: undefined },
10
- { name: 'Tag3', value: 'value3' },
11
- { name: 'Tag4', value: undefined },
12
- ];
13
- const prunedTags = pruneTags(tags);
14
- assert.deepEqual(prunedTags, [
15
- { name: 'Tag1', value: 'value1' },
16
- { name: 'Tag3', value: 'value3' },
17
- ]);
18
- });
19
- it('should return empty array when all tags have undefined values', () => {
20
- const tags = [
21
- { name: 'Tag1', value: undefined },
22
- { name: 'Tag2', value: undefined },
23
- ];
24
- const prunedTags = pruneTags(tags);
25
- assert.deepEqual(prunedTags, []);
26
- });
27
- it('should return same array when no tags have undefined values', () => {
28
- const tags = [
29
- { name: 'Tag1', value: 'value1' },
30
- { name: 'Tag2', value: 'value2' },
31
- ];
32
- const prunedTags = pruneTags(tags);
33
- assert.deepEqual(prunedTags, tags);
34
- });
35
- it('should return empty array with no tags', () => {
36
- const tags = [];
37
- const prunedTags = pruneTags(tags);
38
- assert.deepEqual(prunedTags, []);
39
- });
40
- });
41
- describe('errorMessageFromOutput', () => {
42
- it('should return error message from Error field', () => {
43
- const output = {
44
- Error: 'Error message',
45
- };
46
- const errorMessage = errorMessageFromOutput(output);
47
- assert.equal(errorMessage, 'Error message');
48
- });
49
- it('should return error message from Error tag', () => {
50
- const output = {
51
- Messages: [
52
- {
53
- Tags: [{ name: 'Error', value: 'Error message' }],
54
- },
55
- ],
56
- };
57
- const errorMessage = errorMessageFromOutput(output);
58
- assert.equal(errorMessage, 'Error message');
59
- });
60
- it('should return error message from Error tag if Error field is undefined', () => {
61
- const output = {
62
- Messages: [
63
- {
64
- Tags: [{ name: 'Error', value: 'Error message' }],
65
- },
66
- ],
67
- };
68
- const errorMessage = errorMessageFromOutput(output);
69
- assert.equal(errorMessage, 'Error message');
70
- });
71
- it('should return undefined if no error message is present', () => {
72
- const output = {
73
- Messages: [
74
- {
75
- Tags: [{ name: 'Tag1', value: 'value1' }],
76
- },
77
- ],
78
- };
79
- const errorMessage = errorMessageFromOutput(output);
80
- assert.equal(errorMessage, undefined);
81
- });
82
- it('should return error message with line number', () => {
83
- const output = {
84
- Error: '[string "aos"]:123: Error message',
85
- };
86
- const errorMessage = errorMessageFromOutput(output);
87
- assert.equal(errorMessage, 'Error message (line 123)');
88
- });
89
- it('should return error message with line number and remove unicode', () => {
90
- const output = {
91
- Error: '[string "aos"]:123: Error message\u001b[0m',
92
- };
93
- const errorMessage = errorMessageFromOutput(output);
94
- assert.equal(errorMessage, 'Error message (line 123)');
95
- });
96
- const knownErrorMessages = '\u001b[31mError\u001b[90m handling message with Action = Register\u001b[0m\n\u001b[32m[string ".handlers"]:723: [string "aos"]:128: Already registered\u001b[0m\n\n\u001b[90mstack traceback:\n\t[string ".process"]:871: in function \'.process.handle\'\u001b[0m\n\n\u001b[31merror:\n\u001b[0m[string ".handlers"]:723: [string "aos"]:128: Already registered';
97
- it('should display a clean error for a known error message', () => {
98
- const output = {
99
- Error: knownErrorMessages,
100
- };
101
- const errorMessage = errorMessageFromOutput(output);
102
- assert.equal(errorMessage, 'Already registered (line 128)');
103
- });
104
- });
105
- describe('sortAndPaginateEpochDataIntoEligibleDistributions', () => {
106
- const mockEpochData = {
107
- distributions: {
108
- distributedTimestamp: 1234567890,
109
- rewards: {
110
- eligible: {
111
- gateway1: {
112
- operatorReward: 50,
113
- delegateRewards: {
114
- delegate1: 20,
115
- delegate2: 30,
116
- },
117
- },
118
- gateway2: {
119
- operatorReward: 70,
120
- delegateRewards: {
121
- delegate3: 40,
122
- },
123
- },
124
- },
125
- },
126
- },
127
- };
128
- it('sorts rewards in descending order by eligibleReward', () => {
129
- const result = sortAndPaginateEpochDataIntoEligibleDistributions(mockEpochData);
130
- assert.deepEqual(result.items, [
131
- {
132
- type: 'operatorReward',
133
- recipient: 'gateway2',
134
- eligibleReward: 70,
135
- cursorId: 'gateway2_gateway2',
136
- gatewayAddress: 'gateway2',
137
- },
138
- {
139
- type: 'operatorReward',
140
- recipient: 'gateway1',
141
- eligibleReward: 50,
142
- cursorId: 'gateway1_gateway1',
143
- gatewayAddress: 'gateway1',
144
- },
145
- {
146
- type: 'delegateReward',
147
- recipient: 'delegate3',
148
- eligibleReward: 40,
149
- cursorId: 'gateway2_delegate3',
150
- gatewayAddress: 'gateway2',
151
- },
152
- {
153
- type: 'delegateReward',
154
- recipient: 'delegate2',
155
- eligibleReward: 30,
156
- cursorId: 'gateway1_delegate2',
157
- gatewayAddress: 'gateway1',
158
- },
159
- {
160
- type: 'delegateReward',
161
- recipient: 'delegate1',
162
- eligibleReward: 20,
163
- cursorId: 'gateway1_delegate1',
164
- gatewayAddress: 'gateway1',
165
- },
166
- ]);
167
- });
168
- it('supports sorting in ascending order', () => {
169
- const result = sortAndPaginateEpochDataIntoEligibleDistributions(mockEpochData, {
170
- sortOrder: 'asc',
171
- });
172
- assert.equal(result.items[0].eligibleReward, 20);
173
- assert.equal(result.items[result.items.length - 1].eligibleReward, 70);
174
- });
175
- it('paginates results correctly', () => {
176
- const result = sortAndPaginateEpochDataIntoEligibleDistributions(mockEpochData, {
177
- limit: 2,
178
- });
179
- assert.equal(result.items.length, 2);
180
- assert.equal(result.hasMore, true);
181
- assert.equal(result.nextCursor, 'gateway2_delegate3');
182
- });
183
- it('resumes pagination from cursor', () => {
184
- const firstPage = sortAndPaginateEpochDataIntoEligibleDistributions(mockEpochData, { limit: 2 });
185
- const secondPage = sortAndPaginateEpochDataIntoEligibleDistributions(mockEpochData, {
186
- limit: 2,
187
- cursor: firstPage.nextCursor,
188
- });
189
- assert.equal(secondPage.items.length, 2);
190
- assert.equal(secondPage.items[0].cursorId, 'gateway1_delegate2');
191
- });
192
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};
@@ -1 +0,0 @@
1
- export {};