@trufnetwork/sdk-js 0.3.8 → 0.4.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.
- package/dist/cjs/client/client.cjs +44 -0
- package/dist/cjs/client/client.cjs.map +2 -2
- package/dist/cjs/contracts-api/action.cjs +301 -77
- package/dist/cjs/contracts-api/action.cjs.map +3 -3
- package/dist/cjs/contracts-api/cache.integration.test.cjs +265 -0
- package/dist/cjs/contracts-api/cache.integration.test.cjs.map +7 -0
- package/dist/cjs/contracts-api/composedAction.cjs +86 -0
- package/dist/cjs/contracts-api/composedAction.cjs.map +2 -2
- package/dist/cjs/contracts-api/composedAction.test.cjs +301 -0
- package/dist/cjs/contracts-api/composedAction.test.cjs.map +7 -0
- package/dist/cjs/index.common.cjs.map +1 -1
- package/dist/cjs/types/cache.cjs +34 -0
- package/dist/cjs/types/cache.cjs.map +7 -0
- package/dist/cjs/types/cache.test.cjs +205 -0
- package/dist/cjs/types/cache.test.cjs.map +7 -0
- package/dist/cjs/util/cacheMetadataParser.cjs +174 -0
- package/dist/cjs/util/cacheMetadataParser.cjs.map +7 -0
- package/dist/cjs/util/cacheMetadataParser.test.cjs +329 -0
- package/dist/cjs/util/cacheMetadataParser.test.cjs.map +7 -0
- package/dist/cjs/util/cacheValidation.cjs +88 -0
- package/dist/cjs/util/cacheValidation.cjs.map +7 -0
- package/dist/cjs/util/cacheValidation.test.cjs +108 -0
- package/dist/cjs/util/cacheValidation.test.cjs.map +7 -0
- package/dist/esm/client/client.mjs +44 -0
- package/dist/esm/client/client.mjs.map +2 -2
- package/dist/esm/contracts-api/action.mjs +302 -77
- package/dist/esm/contracts-api/action.mjs.map +3 -3
- package/dist/esm/contracts-api/cache.integration.test.mjs +263 -0
- package/dist/esm/contracts-api/cache.integration.test.mjs.map +7 -0
- package/dist/esm/contracts-api/composedAction.mjs +86 -0
- package/dist/esm/contracts-api/composedAction.mjs.map +2 -2
- package/dist/esm/contracts-api/composedAction.test.mjs +299 -0
- package/dist/esm/contracts-api/composedAction.test.mjs.map +7 -0
- package/dist/esm/index.common.mjs.map +1 -1
- package/dist/esm/types/cache.mjs +13 -0
- package/dist/esm/types/cache.mjs.map +7 -0
- package/dist/esm/types/cache.test.mjs +203 -0
- package/dist/esm/types/cache.test.mjs.map +7 -0
- package/dist/esm/util/cacheMetadataParser.mjs +153 -0
- package/dist/esm/util/cacheMetadataParser.mjs.map +7 -0
- package/dist/esm/util/cacheMetadataParser.test.mjs +327 -0
- package/dist/esm/util/cacheMetadataParser.test.mjs.map +7 -0
- package/dist/esm/util/cacheValidation.mjs +67 -0
- package/dist/esm/util/cacheValidation.mjs.map +7 -0
- package/dist/esm/util/cacheValidation.test.mjs +106 -0
- package/dist/esm/util/cacheValidation.test.mjs.map +7 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/types/client/client.d.ts +39 -1
- package/dist/types/client/client.d.ts.map +1 -1
- package/dist/types/contracts-api/action.d.ts +11 -1
- package/dist/types/contracts-api/action.d.ts.map +1 -1
- package/dist/types/contracts-api/cache.integration.test.d.ts +2 -0
- package/dist/types/contracts-api/cache.integration.test.d.ts.map +1 -0
- package/dist/types/contracts-api/composedAction.d.ts +75 -0
- package/dist/types/contracts-api/composedAction.d.ts.map +1 -1
- package/dist/types/contracts-api/composedAction.test.d.ts +2 -0
- package/dist/types/contracts-api/composedAction.test.d.ts.map +1 -0
- package/dist/types/index.common.d.ts +1 -1
- package/dist/types/index.common.d.ts.map +1 -1
- package/dist/types/types/cache.d.ts +129 -0
- package/dist/types/types/cache.d.ts.map +1 -0
- package/dist/types/types/cache.test.d.ts +2 -0
- package/dist/types/types/cache.test.d.ts.map +1 -0
- package/dist/types/util/cacheMetadataParser.d.ts +38 -0
- package/dist/types/util/cacheMetadataParser.d.ts.map +1 -0
- package/dist/types/util/cacheMetadataParser.test.d.ts +2 -0
- package/dist/types/util/cacheMetadataParser.test.d.ts.map +1 -0
- package/dist/types/util/cacheValidation.d.ts +27 -0
- package/dist/types/util/cacheValidation.d.ts.map +1 -0
- package/dist/types/util/cacheValidation.test.d.ts +2 -0
- package/dist/types/util/cacheValidation.test.d.ts.map +1 -0
- package/package.json +5 -3
- package/dist/cjs/client/client.test.cjs +0 -32
- package/dist/cjs/client/client.test.cjs.map +0 -7
- package/dist/esm/client/client.test.mjs +0 -30
- package/dist/esm/client/client.test.mjs.map +0 -7
- package/dist/types/client/client.test.d.ts +0 -2
- package/dist/types/client/client.test.d.ts.map +0 -1
|
@@ -0,0 +1,301 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// src/contracts-api/composedAction.test.ts
|
|
4
|
+
var import_vitest = require("vitest");
|
|
5
|
+
var import_composedAction = require("./composedAction.cjs");
|
|
6
|
+
var import_EthereumAddress = require("../util/EthereumAddress.cjs");
|
|
7
|
+
var import_StreamId = require("../util/StreamId.cjs");
|
|
8
|
+
(0, import_vitest.describe)("ComposedAction Taxonomy Query Methods", () => {
|
|
9
|
+
const createMockClient = (mockResponse) => ({
|
|
10
|
+
call: import_vitest.vi.fn().mockResolvedValue({
|
|
11
|
+
status: 200,
|
|
12
|
+
data: {
|
|
13
|
+
result: mockResponse
|
|
14
|
+
}
|
|
15
|
+
})
|
|
16
|
+
});
|
|
17
|
+
const mockSigner = {};
|
|
18
|
+
(0, import_vitest.test)("listTaxonomiesByHeight calls correct action with parameters", async () => {
|
|
19
|
+
const mockResponse = [
|
|
20
|
+
{
|
|
21
|
+
data_provider: "0x1234567890abcdef1234567890abcdef12345678",
|
|
22
|
+
stream_id: "test-stream",
|
|
23
|
+
child_data_provider: "0xabcdef1234567890abcdef1234567890abcdef12",
|
|
24
|
+
child_stream_id: "child-stream",
|
|
25
|
+
weight: "100.5",
|
|
26
|
+
created_at: 1e3,
|
|
27
|
+
group_sequence: 1,
|
|
28
|
+
start_time: 1625097600
|
|
29
|
+
}
|
|
30
|
+
];
|
|
31
|
+
const mockClient = createMockClient(mockResponse);
|
|
32
|
+
const composedAction = new import_composedAction.ComposedAction(mockClient, mockSigner);
|
|
33
|
+
const result = await composedAction.listTaxonomiesByHeight({
|
|
34
|
+
fromHeight: 1e3,
|
|
35
|
+
toHeight: 2e3,
|
|
36
|
+
limit: 100,
|
|
37
|
+
offset: 10,
|
|
38
|
+
latestOnly: true
|
|
39
|
+
});
|
|
40
|
+
(0, import_vitest.expect)(mockClient.call).toHaveBeenCalledWith(
|
|
41
|
+
{
|
|
42
|
+
namespace: "main",
|
|
43
|
+
name: "list_taxonomies_by_height",
|
|
44
|
+
inputs: {
|
|
45
|
+
$from_height: 1e3,
|
|
46
|
+
$to_height: 2e3,
|
|
47
|
+
$limit: 100,
|
|
48
|
+
$offset: 10,
|
|
49
|
+
$latest_only: true
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
{}
|
|
53
|
+
);
|
|
54
|
+
(0, import_vitest.expect)(result).toHaveLength(1);
|
|
55
|
+
(0, import_vitest.expect)(result[0].dataProvider.getAddress()).toBe("0x1234567890abcdef1234567890abcdef12345678");
|
|
56
|
+
(0, import_vitest.expect)(result[0].streamId.getId()).toBe("test-stream");
|
|
57
|
+
(0, import_vitest.expect)(result[0].childDataProvider.getAddress()).toBe("0xabcdef1234567890abcdef1234567890abcdef12");
|
|
58
|
+
(0, import_vitest.expect)(result[0].childStreamId.getId()).toBe("child-stream");
|
|
59
|
+
(0, import_vitest.expect)(result[0].weight).toBe("100.5");
|
|
60
|
+
(0, import_vitest.expect)(result[0].createdAt).toBe(1e3);
|
|
61
|
+
(0, import_vitest.expect)(result[0].groupSequence).toBe(1);
|
|
62
|
+
(0, import_vitest.expect)(result[0].startTime).toBe(1625097600);
|
|
63
|
+
});
|
|
64
|
+
(0, import_vitest.test)("listTaxonomiesByHeight handles default parameters", async () => {
|
|
65
|
+
const mockClient = createMockClient([]);
|
|
66
|
+
const composedAction = new import_composedAction.ComposedAction(mockClient, mockSigner);
|
|
67
|
+
await composedAction.listTaxonomiesByHeight({});
|
|
68
|
+
(0, import_vitest.expect)(mockClient.call).toHaveBeenCalledWith(
|
|
69
|
+
{
|
|
70
|
+
namespace: "main",
|
|
71
|
+
name: "list_taxonomies_by_height",
|
|
72
|
+
inputs: {
|
|
73
|
+
$from_height: null,
|
|
74
|
+
$to_height: null,
|
|
75
|
+
$limit: null,
|
|
76
|
+
$offset: null,
|
|
77
|
+
$latest_only: null
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
{}
|
|
81
|
+
);
|
|
82
|
+
});
|
|
83
|
+
(0, import_vitest.test)("listTaxonomiesByHeight handles empty parameters", async () => {
|
|
84
|
+
const mockClient = createMockClient([]);
|
|
85
|
+
const composedAction = new import_composedAction.ComposedAction(mockClient, mockSigner);
|
|
86
|
+
await composedAction.listTaxonomiesByHeight();
|
|
87
|
+
(0, import_vitest.expect)(mockClient.call).toHaveBeenCalledWith(
|
|
88
|
+
{
|
|
89
|
+
namespace: "main",
|
|
90
|
+
name: "list_taxonomies_by_height",
|
|
91
|
+
inputs: {
|
|
92
|
+
$from_height: null,
|
|
93
|
+
$to_height: null,
|
|
94
|
+
$limit: null,
|
|
95
|
+
$offset: null,
|
|
96
|
+
$latest_only: null
|
|
97
|
+
}
|
|
98
|
+
},
|
|
99
|
+
{}
|
|
100
|
+
);
|
|
101
|
+
});
|
|
102
|
+
(0, import_vitest.test)("getTaxonomiesForStreams calls correct action with stream arrays", async () => {
|
|
103
|
+
const mockResponse = [
|
|
104
|
+
{
|
|
105
|
+
data_provider: "0x1111111111111111111111111111111111111111",
|
|
106
|
+
stream_id: "stream-1",
|
|
107
|
+
child_data_provider: "0x2222222222222222222222222222222222222222",
|
|
108
|
+
child_stream_id: "child-1",
|
|
109
|
+
weight: "50.0",
|
|
110
|
+
created_at: 2e3,
|
|
111
|
+
group_sequence: 2,
|
|
112
|
+
start_time: 1625097700
|
|
113
|
+
}
|
|
114
|
+
];
|
|
115
|
+
const mockClient = createMockClient(mockResponse);
|
|
116
|
+
const composedAction = new import_composedAction.ComposedAction(mockClient, mockSigner);
|
|
117
|
+
const testStreams = [
|
|
118
|
+
{
|
|
119
|
+
dataProvider: import_EthereumAddress.EthereumAddress.fromString("0x1111111111111111111111111111111111111111").throw(),
|
|
120
|
+
streamId: import_StreamId.StreamId.fromString("stream-1").throw()
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
dataProvider: import_EthereumAddress.EthereumAddress.fromString("0x3333333333333333333333333333333333333333").throw(),
|
|
124
|
+
streamId: import_StreamId.StreamId.fromString("stream-2").throw()
|
|
125
|
+
}
|
|
126
|
+
];
|
|
127
|
+
const result = await composedAction.getTaxonomiesForStreams({
|
|
128
|
+
streams: testStreams,
|
|
129
|
+
latestOnly: false
|
|
130
|
+
});
|
|
131
|
+
(0, import_vitest.expect)(mockClient.call).toHaveBeenCalledWith(
|
|
132
|
+
{
|
|
133
|
+
namespace: "main",
|
|
134
|
+
name: "get_taxonomies_for_streams",
|
|
135
|
+
inputs: {
|
|
136
|
+
$data_providers: [
|
|
137
|
+
"0x1111111111111111111111111111111111111111",
|
|
138
|
+
"0x3333333333333333333333333333333333333333"
|
|
139
|
+
],
|
|
140
|
+
$stream_ids: ["stream-1", "stream-2"],
|
|
141
|
+
$latest_only: false
|
|
142
|
+
}
|
|
143
|
+
},
|
|
144
|
+
{}
|
|
145
|
+
);
|
|
146
|
+
(0, import_vitest.expect)(result).toHaveLength(1);
|
|
147
|
+
(0, import_vitest.expect)(result[0].dataProvider.getAddress()).toBe("0x1111111111111111111111111111111111111111");
|
|
148
|
+
(0, import_vitest.expect)(result[0].streamId.getId()).toBe("stream-1");
|
|
149
|
+
(0, import_vitest.expect)(result[0].weight).toBe("50.0");
|
|
150
|
+
});
|
|
151
|
+
(0, import_vitest.test)("getTaxonomiesForStreams handles empty stream array", async () => {
|
|
152
|
+
const mockClient = createMockClient([]);
|
|
153
|
+
const composedAction = new import_composedAction.ComposedAction(mockClient, mockSigner);
|
|
154
|
+
const result = await composedAction.getTaxonomiesForStreams({
|
|
155
|
+
streams: [],
|
|
156
|
+
latestOnly: true
|
|
157
|
+
});
|
|
158
|
+
(0, import_vitest.expect)(mockClient.call).not.toHaveBeenCalled();
|
|
159
|
+
(0, import_vitest.expect)(result).toEqual([]);
|
|
160
|
+
});
|
|
161
|
+
(0, import_vitest.test)("getTaxonomiesForStreams handles latestOnly parameter", async () => {
|
|
162
|
+
const mockClient = createMockClient([]);
|
|
163
|
+
const composedAction = new import_composedAction.ComposedAction(mockClient, mockSigner);
|
|
164
|
+
const testStreams = [
|
|
165
|
+
{
|
|
166
|
+
dataProvider: import_EthereumAddress.EthereumAddress.fromString("0x1111111111111111111111111111111111111111").throw(),
|
|
167
|
+
streamId: import_StreamId.StreamId.fromString("stream-1").throw()
|
|
168
|
+
}
|
|
169
|
+
];
|
|
170
|
+
await composedAction.getTaxonomiesForStreams({
|
|
171
|
+
streams: testStreams,
|
|
172
|
+
latestOnly: true
|
|
173
|
+
});
|
|
174
|
+
(0, import_vitest.expect)(mockClient.call).toHaveBeenCalledWith(
|
|
175
|
+
{
|
|
176
|
+
namespace: "main",
|
|
177
|
+
name: "get_taxonomies_for_streams",
|
|
178
|
+
inputs: import_vitest.expect.objectContaining({
|
|
179
|
+
$latest_only: true
|
|
180
|
+
})
|
|
181
|
+
},
|
|
182
|
+
{}
|
|
183
|
+
);
|
|
184
|
+
});
|
|
185
|
+
(0, import_vitest.test)("getTaxonomiesForStreams handles default latestOnly parameter", async () => {
|
|
186
|
+
const mockClient = createMockClient([]);
|
|
187
|
+
const composedAction = new import_composedAction.ComposedAction(mockClient, mockSigner);
|
|
188
|
+
const testStreams = [
|
|
189
|
+
{
|
|
190
|
+
dataProvider: import_EthereumAddress.EthereumAddress.fromString("0x1111111111111111111111111111111111111111").throw(),
|
|
191
|
+
streamId: import_StreamId.StreamId.fromString("stream-1").throw()
|
|
192
|
+
}
|
|
193
|
+
];
|
|
194
|
+
await composedAction.getTaxonomiesForStreams({
|
|
195
|
+
streams: testStreams
|
|
196
|
+
});
|
|
197
|
+
(0, import_vitest.expect)(mockClient.call).toHaveBeenCalledWith(
|
|
198
|
+
{
|
|
199
|
+
namespace: "main",
|
|
200
|
+
name: "get_taxonomies_for_streams",
|
|
201
|
+
inputs: import_vitest.expect.objectContaining({
|
|
202
|
+
$latest_only: null
|
|
203
|
+
})
|
|
204
|
+
},
|
|
205
|
+
{}
|
|
206
|
+
);
|
|
207
|
+
});
|
|
208
|
+
(0, import_vitest.test)("listTaxonomiesByHeight handles network error", async () => {
|
|
209
|
+
const mockClient = {
|
|
210
|
+
call: import_vitest.vi.fn().mockResolvedValue({
|
|
211
|
+
status: 500,
|
|
212
|
+
data: null
|
|
213
|
+
})
|
|
214
|
+
};
|
|
215
|
+
const composedAction = new import_composedAction.ComposedAction(mockClient, mockSigner);
|
|
216
|
+
await (0, import_vitest.expect)(
|
|
217
|
+
composedAction.listTaxonomiesByHeight({
|
|
218
|
+
fromHeight: 1e3,
|
|
219
|
+
toHeight: 2e3
|
|
220
|
+
})
|
|
221
|
+
).rejects.toThrow();
|
|
222
|
+
});
|
|
223
|
+
(0, import_vitest.test)("getTaxonomiesForStreams handles network error", async () => {
|
|
224
|
+
const mockClient = {
|
|
225
|
+
call: import_vitest.vi.fn().mockResolvedValue({
|
|
226
|
+
status: 404,
|
|
227
|
+
data: null
|
|
228
|
+
})
|
|
229
|
+
};
|
|
230
|
+
const composedAction = new import_composedAction.ComposedAction(mockClient, mockSigner);
|
|
231
|
+
const testStreams = [
|
|
232
|
+
{
|
|
233
|
+
dataProvider: import_EthereumAddress.EthereumAddress.fromString("0x1111111111111111111111111111111111111111").throw(),
|
|
234
|
+
streamId: import_StreamId.StreamId.fromString("stream-1").throw()
|
|
235
|
+
}
|
|
236
|
+
];
|
|
237
|
+
await (0, import_vitest.expect)(
|
|
238
|
+
composedAction.getTaxonomiesForStreams({
|
|
239
|
+
streams: testStreams
|
|
240
|
+
})
|
|
241
|
+
).rejects.toThrow();
|
|
242
|
+
});
|
|
243
|
+
(0, import_vitest.test)("methods handle multiple results correctly", async () => {
|
|
244
|
+
const mockResponse = [
|
|
245
|
+
{
|
|
246
|
+
data_provider: "0x1111111111111111111111111111111111111111",
|
|
247
|
+
stream_id: "stream-1",
|
|
248
|
+
child_data_provider: "0x2222222222222222222222222222222222222222",
|
|
249
|
+
child_stream_id: "child-1",
|
|
250
|
+
weight: "50.0",
|
|
251
|
+
created_at: 2e3,
|
|
252
|
+
group_sequence: 1,
|
|
253
|
+
start_time: 1625097600
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
data_provider: "0x1111111111111111111111111111111111111111",
|
|
257
|
+
stream_id: "stream-1",
|
|
258
|
+
child_data_provider: "0x3333333333333333333333333333333333333333",
|
|
259
|
+
child_stream_id: "child-2",
|
|
260
|
+
weight: "25.5",
|
|
261
|
+
created_at: 2e3,
|
|
262
|
+
group_sequence: 1,
|
|
263
|
+
start_time: 1625097600
|
|
264
|
+
}
|
|
265
|
+
];
|
|
266
|
+
const mockClient = createMockClient(mockResponse);
|
|
267
|
+
const composedAction = new import_composedAction.ComposedAction(mockClient, mockSigner);
|
|
268
|
+
const result = await composedAction.listTaxonomiesByHeight({ limit: 10 });
|
|
269
|
+
(0, import_vitest.expect)(result).toHaveLength(2);
|
|
270
|
+
(0, import_vitest.expect)(result[0].childStreamId.getId()).toBe("child-1");
|
|
271
|
+
(0, import_vitest.expect)(result[1].childStreamId.getId()).toBe("child-2");
|
|
272
|
+
(0, import_vitest.expect)(result[0].weight).toBe("50.0");
|
|
273
|
+
(0, import_vitest.expect)(result[1].weight).toBe("25.5");
|
|
274
|
+
});
|
|
275
|
+
(0, import_vitest.test)("methods handle address parsing correctly", async () => {
|
|
276
|
+
const mockResponse = [
|
|
277
|
+
{
|
|
278
|
+
data_provider: "0x1234567890abcdef1234567890abcdef12345678",
|
|
279
|
+
stream_id: "test-stream",
|
|
280
|
+
child_data_provider: "0xabcdef1234567890abcdef1234567890abcdef12",
|
|
281
|
+
child_stream_id: "child-stream",
|
|
282
|
+
weight: "100.0",
|
|
283
|
+
created_at: 1e3,
|
|
284
|
+
group_sequence: 1,
|
|
285
|
+
start_time: 1625097600
|
|
286
|
+
}
|
|
287
|
+
];
|
|
288
|
+
const mockClient = createMockClient(mockResponse);
|
|
289
|
+
const composedAction = new import_composedAction.ComposedAction(mockClient, mockSigner);
|
|
290
|
+
const result = await composedAction.listTaxonomiesByHeight();
|
|
291
|
+
(0, import_vitest.expect)(result[0].dataProvider).toBeInstanceOf(import_EthereumAddress.EthereumAddress);
|
|
292
|
+
(0, import_vitest.expect)(result[0].streamId).toBeInstanceOf(import_StreamId.StreamId);
|
|
293
|
+
(0, import_vitest.expect)(result[0].childDataProvider).toBeInstanceOf(import_EthereumAddress.EthereumAddress);
|
|
294
|
+
(0, import_vitest.expect)(result[0].childStreamId).toBeInstanceOf(import_StreamId.StreamId);
|
|
295
|
+
(0, import_vitest.expect)(result[0].dataProvider.getAddress()).toBe("0x1234567890abcdef1234567890abcdef12345678");
|
|
296
|
+
(0, import_vitest.expect)(result[0].streamId.getId()).toBe("test-stream");
|
|
297
|
+
(0, import_vitest.expect)(result[0].childDataProvider.getAddress()).toBe("0xabcdef1234567890abcdef1234567890abcdef12");
|
|
298
|
+
(0, import_vitest.expect)(result[0].childStreamId.getId()).toBe("child-stream");
|
|
299
|
+
});
|
|
300
|
+
});
|
|
301
|
+
//# sourceMappingURL=composedAction.test.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/contracts-api/composedAction.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { describe, test, expect, vi } from 'vitest'\r\nimport { ComposedAction } from './composedAction'\r\nimport { EthereumAddress } from '../util/EthereumAddress'\r\nimport { StreamId } from '../util/StreamId'\r\n\r\ndescribe('ComposedAction Taxonomy Query Methods', () => {\r\n const createMockClient = (mockResponse: any) => ({\r\n call: vi.fn().mockResolvedValue({\r\n status: 200,\r\n data: {\r\n result: mockResponse\r\n }\r\n })\r\n });\r\n\r\n const mockSigner = {};\r\n\r\n test('listTaxonomiesByHeight calls correct action with parameters', async () => {\r\n const mockResponse = [\r\n {\r\n data_provider: '0x1234567890abcdef1234567890abcdef12345678',\r\n stream_id: 'test-stream',\r\n child_data_provider: '0xabcdef1234567890abcdef1234567890abcdef12',\r\n child_stream_id: 'child-stream',\r\n weight: '100.5',\r\n created_at: 1000,\r\n group_sequence: 1,\r\n start_time: 1625097600\r\n }\r\n ];\r\n\r\n const mockClient = createMockClient(mockResponse);\r\n const composedAction = new ComposedAction(mockClient as any, mockSigner as any);\r\n\r\n const result = await composedAction.listTaxonomiesByHeight({\r\n fromHeight: 1000,\r\n toHeight: 2000,\r\n limit: 100,\r\n offset: 10,\r\n latestOnly: true\r\n });\r\n\r\n // Verify the call was made correctly\r\n expect(mockClient.call).toHaveBeenCalledWith(\r\n {\r\n namespace: \"main\",\r\n name: 'list_taxonomies_by_height',\r\n inputs: {\r\n $from_height: 1000,\r\n $to_height: 2000,\r\n $limit: 100,\r\n $offset: 10,\r\n $latest_only: true,\r\n }\r\n },\r\n {}\r\n );\r\n\r\n // Verify response mapping\r\n expect(result).toHaveLength(1);\r\n expect(result[0].dataProvider.getAddress()).toBe('0x1234567890abcdef1234567890abcdef12345678');\r\n expect(result[0].streamId.getId()).toBe('test-stream');\r\n expect(result[0].childDataProvider.getAddress()).toBe('0xabcdef1234567890abcdef1234567890abcdef12');\r\n expect(result[0].childStreamId.getId()).toBe('child-stream');\r\n expect(result[0].weight).toBe('100.5');\r\n expect(result[0].createdAt).toBe(1000);\r\n expect(result[0].groupSequence).toBe(1);\r\n expect(result[0].startTime).toBe(1625097600);\r\n });\r\n\r\n test('listTaxonomiesByHeight handles default parameters', async () => {\r\n const mockClient = createMockClient([]);\r\n const composedAction = new ComposedAction(mockClient as any, mockSigner as any);\r\n\r\n await composedAction.listTaxonomiesByHeight({});\r\n\r\n expect(mockClient.call).toHaveBeenCalledWith(\r\n {\r\n namespace: \"main\",\r\n name: 'list_taxonomies_by_height',\r\n inputs: {\r\n $from_height: null,\r\n $to_height: null,\r\n $limit: null,\r\n $offset: null,\r\n $latest_only: null,\r\n }\r\n },\r\n {}\r\n );\r\n });\r\n\r\n test('listTaxonomiesByHeight handles empty parameters', async () => {\r\n const mockClient = createMockClient([]);\r\n const composedAction = new ComposedAction(mockClient as any, mockSigner as any);\r\n\r\n await composedAction.listTaxonomiesByHeight();\r\n\r\n expect(mockClient.call).toHaveBeenCalledWith(\r\n {\r\n namespace: \"main\",\r\n name: 'list_taxonomies_by_height',\r\n inputs: {\r\n $from_height: null,\r\n $to_height: null,\r\n $limit: null,\r\n $offset: null,\r\n $latest_only: null,\r\n }\r\n },\r\n {}\r\n );\r\n });\r\n\r\n test('getTaxonomiesForStreams calls correct action with stream arrays', async () => {\r\n const mockResponse = [\r\n {\r\n data_provider: '0x1111111111111111111111111111111111111111',\r\n stream_id: 'stream-1',\r\n child_data_provider: '0x2222222222222222222222222222222222222222',\r\n child_stream_id: 'child-1',\r\n weight: '50.0',\r\n created_at: 2000,\r\n group_sequence: 2,\r\n start_time: 1625097700\r\n }\r\n ];\r\n\r\n const mockClient = createMockClient(mockResponse);\r\n const composedAction = new ComposedAction(mockClient as any, mockSigner as any);\r\n\r\n const testStreams = [\r\n {\r\n dataProvider: EthereumAddress.fromString('0x1111111111111111111111111111111111111111').throw(),\r\n streamId: StreamId.fromString('stream-1').throw()\r\n },\r\n {\r\n dataProvider: EthereumAddress.fromString('0x3333333333333333333333333333333333333333').throw(),\r\n streamId: StreamId.fromString('stream-2').throw()\r\n }\r\n ];\r\n\r\n const result = await composedAction.getTaxonomiesForStreams({\r\n streams: testStreams,\r\n latestOnly: false\r\n });\r\n\r\n // Verify the call was made correctly\r\n expect(mockClient.call).toHaveBeenCalledWith(\r\n {\r\n namespace: \"main\",\r\n name: 'get_taxonomies_for_streams',\r\n inputs: {\r\n $data_providers: [\r\n '0x1111111111111111111111111111111111111111',\r\n '0x3333333333333333333333333333333333333333'\r\n ],\r\n $stream_ids: ['stream-1', 'stream-2'],\r\n $latest_only: false,\r\n }\r\n },\r\n {}\r\n );\r\n\r\n // Verify response mapping\r\n expect(result).toHaveLength(1);\r\n expect(result[0].dataProvider.getAddress()).toBe('0x1111111111111111111111111111111111111111');\r\n expect(result[0].streamId.getId()).toBe('stream-1');\r\n expect(result[0].weight).toBe('50.0');\r\n });\r\n\r\n test('getTaxonomiesForStreams handles empty stream array', async () => {\r\n const mockClient = createMockClient([]);\r\n const composedAction = new ComposedAction(mockClient as any, mockSigner as any);\r\n\r\n const result = await composedAction.getTaxonomiesForStreams({\r\n streams: [],\r\n latestOnly: true\r\n });\r\n\r\n // Should return empty array without making network call\r\n expect(mockClient.call).not.toHaveBeenCalled();\r\n expect(result).toEqual([]);\r\n });\r\n\r\n test('getTaxonomiesForStreams handles latestOnly parameter', async () => {\r\n const mockClient = createMockClient([]);\r\n const composedAction = new ComposedAction(mockClient as any, mockSigner as any);\r\n\r\n const testStreams = [\r\n {\r\n dataProvider: EthereumAddress.fromString('0x1111111111111111111111111111111111111111').throw(),\r\n streamId: StreamId.fromString('stream-1').throw()\r\n }\r\n ];\r\n\r\n await composedAction.getTaxonomiesForStreams({\r\n streams: testStreams,\r\n latestOnly: true\r\n });\r\n\r\n expect(mockClient.call).toHaveBeenCalledWith(\r\n {\r\n namespace: \"main\",\r\n name: 'get_taxonomies_for_streams',\r\n inputs: expect.objectContaining({\r\n $latest_only: true,\r\n })\r\n },\r\n {}\r\n );\r\n });\r\n\r\n test('getTaxonomiesForStreams handles default latestOnly parameter', async () => {\r\n const mockClient = createMockClient([]);\r\n const composedAction = new ComposedAction(mockClient as any, mockSigner as any);\r\n\r\n const testStreams = [\r\n {\r\n dataProvider: EthereumAddress.fromString('0x1111111111111111111111111111111111111111').throw(),\r\n streamId: StreamId.fromString('stream-1').throw()\r\n }\r\n ];\r\n\r\n await composedAction.getTaxonomiesForStreams({\r\n streams: testStreams\r\n });\r\n\r\n expect(mockClient.call).toHaveBeenCalledWith(\r\n {\r\n namespace: \"main\",\r\n name: 'get_taxonomies_for_streams',\r\n inputs: expect.objectContaining({\r\n $latest_only: null,\r\n })\r\n },\r\n {}\r\n );\r\n });\r\n\r\n test('listTaxonomiesByHeight handles network error', async () => {\r\n const mockClient = {\r\n call: vi.fn().mockResolvedValue({\r\n status: 500,\r\n data: null\r\n })\r\n };\r\n\r\n const composedAction = new ComposedAction(mockClient as any, mockSigner as any);\r\n\r\n await expect(\r\n composedAction.listTaxonomiesByHeight({\r\n fromHeight: 1000,\r\n toHeight: 2000\r\n })\r\n ).rejects.toThrow();\r\n });\r\n\r\n test('getTaxonomiesForStreams handles network error', async () => {\r\n const mockClient = {\r\n call: vi.fn().mockResolvedValue({\r\n status: 404,\r\n data: null\r\n })\r\n };\r\n\r\n const composedAction = new ComposedAction(mockClient as any, mockSigner as any);\r\n\r\n const testStreams = [\r\n {\r\n dataProvider: EthereumAddress.fromString('0x1111111111111111111111111111111111111111').throw(),\r\n streamId: StreamId.fromString('stream-1').throw()\r\n }\r\n ];\r\n\r\n await expect(\r\n composedAction.getTaxonomiesForStreams({\r\n streams: testStreams\r\n })\r\n ).rejects.toThrow();\r\n });\r\n\r\n test('methods handle multiple results correctly', async () => {\r\n const mockResponse = [\r\n {\r\n data_provider: '0x1111111111111111111111111111111111111111',\r\n stream_id: 'stream-1',\r\n child_data_provider: '0x2222222222222222222222222222222222222222',\r\n child_stream_id: 'child-1',\r\n weight: '50.0',\r\n created_at: 2000,\r\n group_sequence: 1,\r\n start_time: 1625097600\r\n },\r\n {\r\n data_provider: '0x1111111111111111111111111111111111111111',\r\n stream_id: 'stream-1',\r\n child_data_provider: '0x3333333333333333333333333333333333333333',\r\n child_stream_id: 'child-2',\r\n weight: '25.5',\r\n created_at: 2000,\r\n group_sequence: 1,\r\n start_time: 1625097600\r\n }\r\n ];\r\n\r\n const mockClient = createMockClient(mockResponse);\r\n const composedAction = new ComposedAction(mockClient as any, mockSigner as any);\r\n\r\n const result = await composedAction.listTaxonomiesByHeight({ limit: 10 });\r\n\r\n expect(result).toHaveLength(2);\r\n expect(result[0].childStreamId.getId()).toBe('child-1');\r\n expect(result[1].childStreamId.getId()).toBe('child-2');\r\n expect(result[0].weight).toBe('50.0');\r\n expect(result[1].weight).toBe('25.5');\r\n });\r\n\r\n test('methods handle address parsing correctly', async () => {\r\n const mockResponse = [\r\n {\r\n data_provider: '0x1234567890abcdef1234567890abcdef12345678',\r\n stream_id: 'test-stream',\r\n child_data_provider: '0xabcdef1234567890abcdef1234567890abcdef12',\r\n child_stream_id: 'child-stream',\r\n weight: '100.0',\r\n created_at: 1000,\r\n group_sequence: 1,\r\n start_time: 1625097600\r\n }\r\n ];\r\n\r\n const mockClient = createMockClient(mockResponse);\r\n const composedAction = new ComposedAction(mockClient as any, mockSigner as any);\r\n\r\n const result = await composedAction.listTaxonomiesByHeight();\r\n\r\n expect(result[0].dataProvider).toBeInstanceOf(EthereumAddress);\r\n expect(result[0].streamId).toBeInstanceOf(StreamId);\r\n expect(result[0].childDataProvider).toBeInstanceOf(EthereumAddress);\r\n expect(result[0].childStreamId).toBeInstanceOf(StreamId);\r\n \r\n expect(result[0].dataProvider.getAddress()).toBe('0x1234567890abcdef1234567890abcdef12345678');\r\n expect(result[0].streamId.getId()).toBe('test-stream');\r\n expect(result[0].childDataProvider.getAddress()).toBe('0xabcdef1234567890abcdef1234567890abcdef12');\r\n expect(result[0].childStreamId.getId()).toBe('child-stream');\r\n });\r\n});"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../src/index.common.ts"],
|
|
4
|
-
"sourcesContent": ["// Core client types\nexport type { TNClientOptions } from \"./client/client\";\nexport type { SignerInfo as EthProvider } from \"./client/client\";\n\n// Stream types and interfaces\nexport type { StreamLocator } from \"./types/stream\";\nexport type { StreamRecord } from \"./contracts-api/action\";\nexport type { GetRecordInput, GetFirstRecordInput } from \"./contracts-api/action\";\nexport type { InsertRecordInput } from \"./contracts-api/primitiveAction\";\nexport type { TaxonomySet, TaxonomyItem } from \"./contracts-api/composedAction\";\n\n// Utility types and classes\nexport { StreamId } from \"./util/StreamId\";\nexport { EthereumAddress } from \"./util/EthereumAddress\";\nexport { visibility } from \"./util/visibility\";\nexport type { VisibilityEnum } from \"./util/visibility\";\n\n// Stream type constants\nexport { StreamType } from \"./contracts-api/contractValues\";\n\n// Base classes\nexport { Action } from \"./contracts-api/action\";\nexport { PrimitiveAction } from \"./contracts-api/primitiveAction\";\nexport { ComposedAction } from \"./contracts-api/composedAction\";\n\n// Role management exports\nexport { RoleManagement } from \"./contracts-api/roleManagement\";\nexport type { GrantRoleInput, RevokeRoleInput, AreMembersOfInput, WalletMembership } from \"./types/role\";\n\n"],
|
|
4
|
+
"sourcesContent": ["// Core client types\nexport type { TNClientOptions } from \"./client/client\";\nexport type { SignerInfo as EthProvider } from \"./client/client\";\n\n// Stream types and interfaces\nexport type { StreamLocator } from \"./types/stream\";\nexport type { StreamRecord } from \"./contracts-api/action\";\nexport type { GetRecordInput, GetFirstRecordInput } from \"./contracts-api/action\";\nexport type { InsertRecordInput } from \"./contracts-api/primitiveAction\";\nexport type { TaxonomySet, TaxonomyItem, ListTaxonomiesByHeightParams, GetTaxonomiesForStreamsParams, TaxonomyQueryResult } from \"./contracts-api/composedAction\";\n\n// Utility types and classes\nexport { StreamId } from \"./util/StreamId\";\nexport { EthereumAddress } from \"./util/EthereumAddress\";\nexport { visibility } from \"./util/visibility\";\nexport type { VisibilityEnum } from \"./util/visibility\";\n\n// Stream type constants\nexport { StreamType } from \"./contracts-api/contractValues\";\n\n// Base classes\nexport { Action } from \"./contracts-api/action\";\nexport { PrimitiveAction } from \"./contracts-api/primitiveAction\";\nexport { ComposedAction } from \"./contracts-api/composedAction\";\n\n// Role management exports\nexport { RoleManagement } from \"./contracts-api/roleManagement\";\nexport type { GrantRoleInput, RevokeRoleInput, AreMembersOfInput, WalletMembership } from \"./types/role\";\n\n"],
|
|
5
5
|
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAYA,sBAAyB;AACzB,6BAAgC;AAChC,wBAA2B;AAI3B,4BAA2B;AAG3B,oBAAuB;AACvB,6BAAgC;AAChC,4BAA+B;AAG/B,4BAA+B;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/types/cache.ts
|
|
21
|
+
var cache_exports = {};
|
|
22
|
+
__export(cache_exports, {
|
|
23
|
+
CacheError: () => CacheError
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(cache_exports);
|
|
26
|
+
var CacheError = class _CacheError extends Error {
|
|
27
|
+
constructor(message, cause) {
|
|
28
|
+
super(message);
|
|
29
|
+
this.cause = cause;
|
|
30
|
+
this.name = "CacheError";
|
|
31
|
+
Object.setPrototypeOf(this, _CacheError.prototype);
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=cache.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/types/cache.ts"],
|
|
4
|
+
"sourcesContent": ["/**\n * Cache-related type definitions for the Truf Network SDK\n * These types enable cache-aware operations with proper TypeScript support\n */\n\n/**\n * Metadata about cache operations\n * Matches the Go SDK implementation structure\n */\nexport interface CacheMetadata {\n /** Whether the data came from cache */\n hit: boolean;\n /** Whether cache was disabled for this query */\n cacheDisabled?: boolean;\n /** Block height when data was cached (optional) */\n height?: number;\n \n // SDK-provided context (optional)\n /** Stream ID used in the query */\n streamId?: string;\n /** Data provider address */\n dataProvider?: string;\n /** Start time of the query range */\n from?: number;\n /** End time of the query range */\n to?: number;\n /** Frozen time for historical queries */\n frozenAt?: number;\n /** Number of rows returned */\n rowsServed?: number;\n}\n\n/**\n * Enhanced options for getRecord method with cache support\n */\nexport interface GetRecordOptions {\n /** Start time for the query range */\n from?: number;\n /** End time for the query range */\n to?: number;\n /** Frozen time for historical queries */\n frozenAt?: number;\n /** Base time for index calculations */\n baseTime?: string | number;\n /** Procedure name prefix */\n prefix?: string;\n /** Enable cache usage for this query */\n useCache?: boolean;\n}\n\n/**\n * Enhanced options for getIndex method with cache support\n */\nexport interface GetIndexOptions {\n /** Start time for the query range */\n from?: number;\n /** End time for the query range */\n to?: number;\n /** Frozen time for historical queries */\n frozenAt?: number;\n /** Base time for index calculations */\n baseTime?: string | number;\n /** Procedure name prefix */\n prefix?: string;\n /** Enable cache usage for this query */\n useCache?: boolean;\n}\n\n/**\n * Enhanced options for getIndexChange method with cache support\n */\nexport interface GetIndexChangeOptions {\n /** Start time for the query range */\n from?: number;\n /** End time for the query range */\n to?: number;\n /** Frozen time for historical queries */\n frozenAt?: number;\n /** Base time for index calculations */\n baseTime?: string | number;\n /** Time interval for change calculations */\n timeInterval: number;\n /** Procedure name prefix */\n prefix?: string;\n /** Enable cache usage for this query */\n useCache?: boolean;\n}\n\n/**\n * Enhanced options for getFirstRecord method with cache support\n */\nexport interface GetFirstRecordOptions {\n /** Return records after this time */\n after?: number;\n /** Frozen time for historical queries */\n frozenAt?: number;\n /** Enable cache usage for this query */\n useCache?: boolean;\n}\n\n/**\n * Response wrapper that includes cache metadata\n * Provides structured access to both data and cache information\n */\nexport interface CacheAwareResponse<T> {\n /** The actual response data */\n data: T;\n /** Cache metadata (if available) */\n cache?: CacheMetadata;\n /** Action logs for debugging (optional) */\n logs?: string[];\n}\n\n/**\n * Aggregated cache metadata from multiple operations\n */\nexport interface CacheMetadataCollection {\n /** Total number of queries performed */\n totalQueries: number;\n /** Number of cache hits */\n cacheHits: number;\n /** Number of cache misses */\n cacheMisses: number;\n /** Cache hit rate (0-1) */\n cacheHitRate: number;\n /** Total rows served across all queries */\n totalRowsServed: number;\n /** Individual metadata entries */\n entries: CacheMetadata[];\n}\n\n/**\n * Error class for cache-related operations\n */\nexport class CacheError extends Error {\n constructor(message: string, public cause?: Error) {\n super(message);\n this.name = 'CacheError';\n\n // Fix prototype chain\n Object.setPrototypeOf(this, CacheError.prototype);\n }\n}"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAsIO,IAAM,aAAN,MAAM,oBAAmB,MAAM;AAAA,EACpC,YAAY,SAAwB,OAAe;AACjD,UAAM,OAAO;AADqB;AAElC,SAAK,OAAO;AAGZ,WAAO,eAAe,MAAM,YAAW,SAAS;AAAA,EAClD;AACF;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// src/types/cache.test.ts
|
|
4
|
+
var import_vitest = require("vitest");
|
|
5
|
+
var import_cache = require("./cache.cjs");
|
|
6
|
+
(0, import_vitest.describe)("Cache Types", () => {
|
|
7
|
+
(0, import_vitest.describe)("CacheMetadata", () => {
|
|
8
|
+
(0, import_vitest.it)("should allow valid cache metadata", () => {
|
|
9
|
+
const metadata = { hit: true, height: 123456 };
|
|
10
|
+
(0, import_vitest.expect)(metadata.hit).toBe(true);
|
|
11
|
+
(0, import_vitest.expect)(metadata.height).toBe(123456);
|
|
12
|
+
});
|
|
13
|
+
(0, import_vitest.it)("should create cache metadata with all fields", () => {
|
|
14
|
+
const metadata = { hit: true, height: 123456 };
|
|
15
|
+
(0, import_vitest.expect)(metadata.hit).toBe(true);
|
|
16
|
+
(0, import_vitest.expect)(metadata.height).toBe(123456);
|
|
17
|
+
});
|
|
18
|
+
(0, import_vitest.it)("should allow cache metadata without optional fields", () => {
|
|
19
|
+
const metadata = { hit: false };
|
|
20
|
+
(0, import_vitest.expect)(metadata.hit).toBe(false);
|
|
21
|
+
(0, import_vitest.expect)(metadata.height).toBeUndefined();
|
|
22
|
+
});
|
|
23
|
+
(0, import_vitest.it)("should allow enhanced cache metadata with all fields", () => {
|
|
24
|
+
const metadata = {
|
|
25
|
+
hit: true,
|
|
26
|
+
cacheDisabled: false,
|
|
27
|
+
height: 123456,
|
|
28
|
+
streamId: "test-stream",
|
|
29
|
+
dataProvider: "0x123456789abcdef",
|
|
30
|
+
from: 1609459100,
|
|
31
|
+
to: 1609459300,
|
|
32
|
+
frozenAt: 1609459250,
|
|
33
|
+
rowsServed: 10
|
|
34
|
+
};
|
|
35
|
+
(0, import_vitest.expect)(metadata.hit).toBe(true);
|
|
36
|
+
(0, import_vitest.expect)(metadata.cacheDisabled).toBe(false);
|
|
37
|
+
(0, import_vitest.expect)(metadata.height).toBe(123456);
|
|
38
|
+
(0, import_vitest.expect)(metadata.streamId).toBe("test-stream");
|
|
39
|
+
(0, import_vitest.expect)(metadata.dataProvider).toBe("0x123456789abcdef");
|
|
40
|
+
(0, import_vitest.expect)(metadata.from).toBe(1609459100);
|
|
41
|
+
(0, import_vitest.expect)(metadata.to).toBe(1609459300);
|
|
42
|
+
(0, import_vitest.expect)(metadata.frozenAt).toBe(1609459250);
|
|
43
|
+
(0, import_vitest.expect)(metadata.rowsServed).toBe(10);
|
|
44
|
+
});
|
|
45
|
+
(0, import_vitest.it)("should allow partial enhanced metadata", () => {
|
|
46
|
+
const metadata = {
|
|
47
|
+
hit: true,
|
|
48
|
+
cacheDisabled: true,
|
|
49
|
+
streamId: "partial-stream"
|
|
50
|
+
};
|
|
51
|
+
(0, import_vitest.expect)(metadata.hit).toBe(true);
|
|
52
|
+
(0, import_vitest.expect)(metadata.cacheDisabled).toBe(true);
|
|
53
|
+
(0, import_vitest.expect)(metadata.streamId).toBe("partial-stream");
|
|
54
|
+
(0, import_vitest.expect)(metadata.height).toBeUndefined();
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
(0, import_vitest.describe)("CacheMetadataCollection", () => {
|
|
58
|
+
(0, import_vitest.it)("should allow valid cache metadata collection", () => {
|
|
59
|
+
const collection = {
|
|
60
|
+
totalQueries: 5,
|
|
61
|
+
cacheHits: 3,
|
|
62
|
+
cacheMisses: 2,
|
|
63
|
+
cacheHitRate: 0.6,
|
|
64
|
+
totalRowsServed: 100,
|
|
65
|
+
entries: [
|
|
66
|
+
{ hit: true, rowsServed: 30 },
|
|
67
|
+
{ hit: false, rowsServed: 25 },
|
|
68
|
+
{ hit: true, rowsServed: 45 }
|
|
69
|
+
]
|
|
70
|
+
};
|
|
71
|
+
(0, import_vitest.expect)(collection.totalQueries).toBe(5);
|
|
72
|
+
(0, import_vitest.expect)(collection.cacheHits).toBe(3);
|
|
73
|
+
(0, import_vitest.expect)(collection.cacheMisses).toBe(2);
|
|
74
|
+
(0, import_vitest.expect)(collection.cacheHitRate).toBe(0.6);
|
|
75
|
+
(0, import_vitest.expect)(collection.totalRowsServed).toBe(100);
|
|
76
|
+
(0, import_vitest.expect)(collection.entries).toHaveLength(3);
|
|
77
|
+
});
|
|
78
|
+
});
|
|
79
|
+
(0, import_vitest.describe)("CacheAwareResponse", () => {
|
|
80
|
+
(0, import_vitest.it)("should allow response with cache metadata", () => {
|
|
81
|
+
const response = {
|
|
82
|
+
data: ["test1", "test2"],
|
|
83
|
+
cache: { hit: true, height: 123456 },
|
|
84
|
+
logs: ["log1", "log2"]
|
|
85
|
+
};
|
|
86
|
+
(0, import_vitest.expect)(response.data).toEqual(["test1", "test2"]);
|
|
87
|
+
(0, import_vitest.expect)(response.cache?.hit).toBe(true);
|
|
88
|
+
(0, import_vitest.expect)(response.logs).toEqual(["log1", "log2"]);
|
|
89
|
+
});
|
|
90
|
+
(0, import_vitest.it)("should create cache aware response with all fields", () => {
|
|
91
|
+
const response = {
|
|
92
|
+
data: "test",
|
|
93
|
+
cache: { hit: true, height: 123456 },
|
|
94
|
+
logs: ["log1"]
|
|
95
|
+
};
|
|
96
|
+
(0, import_vitest.expect)(response.data).toBe("test");
|
|
97
|
+
(0, import_vitest.expect)(response.cache?.hit).toBe(true);
|
|
98
|
+
(0, import_vitest.expect)(response.cache?.height).toBe(123456);
|
|
99
|
+
(0, import_vitest.expect)(response.logs).toEqual(["log1"]);
|
|
100
|
+
});
|
|
101
|
+
(0, import_vitest.it)("should allow response without cache metadata", () => {
|
|
102
|
+
const response = {
|
|
103
|
+
data: ["test1", "test2"]
|
|
104
|
+
};
|
|
105
|
+
(0, import_vitest.expect)(response.data).toEqual(["test1", "test2"]);
|
|
106
|
+
(0, import_vitest.expect)(response.cache).toBeUndefined();
|
|
107
|
+
(0, import_vitest.expect)(response.logs).toBeUndefined();
|
|
108
|
+
});
|
|
109
|
+
});
|
|
110
|
+
(0, import_vitest.describe)("GetRecordOptions", () => {
|
|
111
|
+
(0, import_vitest.it)("should allow all valid options", () => {
|
|
112
|
+
const options = {
|
|
113
|
+
from: 1609459200,
|
|
114
|
+
to: 1609545600,
|
|
115
|
+
frozenAt: 1609459200,
|
|
116
|
+
baseTime: 1609459200,
|
|
117
|
+
prefix: "test_",
|
|
118
|
+
useCache: true
|
|
119
|
+
};
|
|
120
|
+
(0, import_vitest.expect)(options.from).toBe(1609459200);
|
|
121
|
+
(0, import_vitest.expect)(options.useCache).toBe(true);
|
|
122
|
+
});
|
|
123
|
+
(0, import_vitest.it)("should allow string baseTime", () => {
|
|
124
|
+
const options = {
|
|
125
|
+
baseTime: "2021-01-01",
|
|
126
|
+
useCache: false
|
|
127
|
+
};
|
|
128
|
+
(0, import_vitest.expect)(options.baseTime).toBe("2021-01-01");
|
|
129
|
+
});
|
|
130
|
+
(0, import_vitest.it)("should allow empty options", () => {
|
|
131
|
+
const options = {};
|
|
132
|
+
(0, import_vitest.expect)(options.useCache).toBeUndefined();
|
|
133
|
+
});
|
|
134
|
+
});
|
|
135
|
+
(0, import_vitest.describe)("GetIndexOptions", () => {
|
|
136
|
+
(0, import_vitest.it)("should allow all valid options", () => {
|
|
137
|
+
const options = {
|
|
138
|
+
from: 1609459200,
|
|
139
|
+
to: 1609545600,
|
|
140
|
+
frozenAt: 1609459200,
|
|
141
|
+
baseTime: 1609459200,
|
|
142
|
+
prefix: "test_",
|
|
143
|
+
useCache: true
|
|
144
|
+
};
|
|
145
|
+
(0, import_vitest.expect)(options.useCache).toBe(true);
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
(0, import_vitest.describe)("GetIndexChangeOptions", () => {
|
|
149
|
+
(0, import_vitest.it)("should allow all valid options including timeInterval", () => {
|
|
150
|
+
const options = {
|
|
151
|
+
from: 1609459200,
|
|
152
|
+
to: 1609545600,
|
|
153
|
+
frozenAt: 1609459200,
|
|
154
|
+
baseTime: 1609459200,
|
|
155
|
+
timeInterval: 3600,
|
|
156
|
+
prefix: "test_",
|
|
157
|
+
useCache: true
|
|
158
|
+
};
|
|
159
|
+
(0, import_vitest.expect)(options.timeInterval).toBe(3600);
|
|
160
|
+
(0, import_vitest.expect)(options.useCache).toBe(true);
|
|
161
|
+
});
|
|
162
|
+
(0, import_vitest.it)("should require timeInterval", () => {
|
|
163
|
+
const options = {
|
|
164
|
+
timeInterval: 3600
|
|
165
|
+
};
|
|
166
|
+
(0, import_vitest.expect)(options.timeInterval).toBe(3600);
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
(0, import_vitest.describe)("GetFirstRecordOptions", () => {
|
|
170
|
+
(0, import_vitest.it)("should allow all valid options", () => {
|
|
171
|
+
const options = {
|
|
172
|
+
after: 1609459200,
|
|
173
|
+
frozenAt: 1609459200,
|
|
174
|
+
useCache: true
|
|
175
|
+
};
|
|
176
|
+
(0, import_vitest.expect)(options.after).toBe(1609459200);
|
|
177
|
+
(0, import_vitest.expect)(options.useCache).toBe(true);
|
|
178
|
+
});
|
|
179
|
+
(0, import_vitest.it)("should allow empty options", () => {
|
|
180
|
+
const options = {};
|
|
181
|
+
(0, import_vitest.expect)(options.useCache).toBeUndefined();
|
|
182
|
+
});
|
|
183
|
+
});
|
|
184
|
+
(0, import_vitest.describe)("CacheError", () => {
|
|
185
|
+
(0, import_vitest.it)("should create error with message", () => {
|
|
186
|
+
const error = new import_cache.CacheError("Test error");
|
|
187
|
+
(0, import_vitest.expect)(error.message).toBe("Test error");
|
|
188
|
+
(0, import_vitest.expect)(error.name).toBe("CacheError");
|
|
189
|
+
(0, import_vitest.expect)(error.cause).toBeUndefined();
|
|
190
|
+
});
|
|
191
|
+
(0, import_vitest.it)("should create error with cause", () => {
|
|
192
|
+
const cause = new Error("Original error");
|
|
193
|
+
const error = new import_cache.CacheError("Test error", cause);
|
|
194
|
+
(0, import_vitest.expect)(error.message).toBe("Test error");
|
|
195
|
+
(0, import_vitest.expect)(error.name).toBe("CacheError");
|
|
196
|
+
(0, import_vitest.expect)(error.cause).toBe(cause);
|
|
197
|
+
});
|
|
198
|
+
(0, import_vitest.it)("should be instanceof Error", () => {
|
|
199
|
+
const error = new import_cache.CacheError("Test error");
|
|
200
|
+
(0, import_vitest.expect)(error instanceof Error).toBe(true);
|
|
201
|
+
(0, import_vitest.expect)(error instanceof import_cache.CacheError).toBe(true);
|
|
202
|
+
});
|
|
203
|
+
});
|
|
204
|
+
});
|
|
205
|
+
//# sourceMappingURL=cache.test.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/types/cache.test.ts"],
|
|
4
|
+
"sourcesContent": ["import { describe, it, expect } from 'vitest';\nimport { CacheError } from './cache';\nimport type { \n CacheMetadata, \n CacheAwareResponse, \n CacheMetadataCollection,\n GetRecordOptions, \n GetIndexOptions, \n GetIndexChangeOptions, \n GetFirstRecordOptions \n} from './cache';\n\ndescribe('Cache Types', () => {\n describe('CacheMetadata', () => {\n it('should allow valid cache metadata', () => {\n const metadata: CacheMetadata = { hit: true, height: 123456 };\n expect(metadata.hit).toBe(true);\n expect(metadata.height).toBe(123456);\n });\n\n it('should create cache metadata with all fields', () => {\n const metadata: CacheMetadata = { hit: true, height: 123456 };\n expect(metadata.hit).toBe(true);\n expect(metadata.height).toBe(123456);\n });\n\n it('should allow cache metadata without optional fields', () => {\n const metadata: CacheMetadata = { hit: false };\n expect(metadata.hit).toBe(false);\n expect(metadata.height).toBeUndefined();\n });\n\n it('should allow enhanced cache metadata with all fields', () => {\n const metadata: CacheMetadata = {\n hit: true,\n cacheDisabled: false,\n height: 123456,\n streamId: 'test-stream',\n dataProvider: '0x123456789abcdef',\n from: 1609459100,\n to: 1609459300,\n frozenAt: 1609459250,\n rowsServed: 10\n };\n \n expect(metadata.hit).toBe(true);\n expect(metadata.cacheDisabled).toBe(false);\n expect(metadata.height).toBe(123456);\n expect(metadata.streamId).toBe('test-stream');\n expect(metadata.dataProvider).toBe('0x123456789abcdef');\n expect(metadata.from).toBe(1609459100);\n expect(metadata.to).toBe(1609459300);\n expect(metadata.frozenAt).toBe(1609459250);\n expect(metadata.rowsServed).toBe(10);\n });\n\n it('should allow partial enhanced metadata', () => {\n const metadata: CacheMetadata = {\n hit: true,\n cacheDisabled: true,\n streamId: 'partial-stream'\n };\n \n expect(metadata.hit).toBe(true);\n expect(metadata.cacheDisabled).toBe(true);\n expect(metadata.streamId).toBe('partial-stream');\n expect(metadata.height).toBeUndefined();\n });\n });\n\n describe('CacheMetadataCollection', () => {\n it('should allow valid cache metadata collection', () => {\n const collection: CacheMetadataCollection = {\n totalQueries: 5,\n cacheHits: 3,\n cacheMisses: 2,\n cacheHitRate: 0.6,\n totalRowsServed: 100,\n entries: [\n { hit: true, rowsServed: 30 },\n { hit: false, rowsServed: 25 },\n { hit: true, rowsServed: 45 }\n ]\n };\n \n expect(collection.totalQueries).toBe(5);\n expect(collection.cacheHits).toBe(3);\n expect(collection.cacheMisses).toBe(2);\n expect(collection.cacheHitRate).toBe(0.6);\n expect(collection.totalRowsServed).toBe(100);\n expect(collection.entries).toHaveLength(3);\n });\n });\n\n describe('CacheAwareResponse', () => {\n it('should allow response with cache metadata', () => {\n const response: CacheAwareResponse<string[]> = {\n data: ['test1', 'test2'],\n cache: { hit: true, height: 123456 },\n logs: ['log1', 'log2']\n };\n \n expect(response.data).toEqual(['test1', 'test2']);\n expect(response.cache?.hit).toBe(true);\n expect(response.logs).toEqual(['log1', 'log2']);\n });\n\n it('should create cache aware response with all fields', () => {\n const response: CacheAwareResponse<string> = {\n data: 'test',\n cache: { hit: true, height: 123456 },\n logs: ['log1']\n };\n expect(response.data).toBe('test');\n expect(response.cache?.hit).toBe(true);\n expect(response.cache?.height).toBe(123456);\n expect(response.logs).toEqual(['log1']);\n });\n\n it('should allow response without cache metadata', () => {\n const response: CacheAwareResponse<string[]> = {\n data: ['test1', 'test2']\n };\n \n expect(response.data).toEqual(['test1', 'test2']);\n expect(response.cache).toBeUndefined();\n expect(response.logs).toBeUndefined();\n });\n });\n\n describe('GetRecordOptions', () => {\n it('should allow all valid options', () => {\n const options: GetRecordOptions = {\n from: 1609459200,\n to: 1609545600,\n frozenAt: 1609459200,\n baseTime: 1609459200,\n prefix: 'test_',\n useCache: true\n };\n \n expect(options.from).toBe(1609459200);\n expect(options.useCache).toBe(true);\n });\n\n it('should allow string baseTime', () => {\n const options: GetRecordOptions = {\n baseTime: '2021-01-01',\n useCache: false\n };\n \n expect(options.baseTime).toBe('2021-01-01');\n });\n\n it('should allow empty options', () => {\n const options: GetRecordOptions = {};\n expect(options.useCache).toBeUndefined();\n });\n });\n\n describe('GetIndexOptions', () => {\n it('should allow all valid options', () => {\n const options: GetIndexOptions = {\n from: 1609459200,\n to: 1609545600,\n frozenAt: 1609459200,\n baseTime: 1609459200,\n prefix: 'test_',\n useCache: true\n };\n \n expect(options.useCache).toBe(true);\n });\n });\n\n describe('GetIndexChangeOptions', () => {\n it('should allow all valid options including timeInterval', () => {\n const options: GetIndexChangeOptions = {\n from: 1609459200,\n to: 1609545600,\n frozenAt: 1609459200,\n baseTime: 1609459200,\n timeInterval: 3600,\n prefix: 'test_',\n useCache: true\n };\n \n expect(options.timeInterval).toBe(3600);\n expect(options.useCache).toBe(true);\n });\n\n it('should require timeInterval', () => {\n // This should compile - timeInterval is required\n const options: GetIndexChangeOptions = {\n timeInterval: 3600\n };\n \n expect(options.timeInterval).toBe(3600);\n });\n });\n\n describe('GetFirstRecordOptions', () => {\n it('should allow all valid options', () => {\n const options: GetFirstRecordOptions = {\n after: 1609459200,\n frozenAt: 1609459200,\n useCache: true\n };\n \n expect(options.after).toBe(1609459200);\n expect(options.useCache).toBe(true);\n });\n\n it('should allow empty options', () => {\n const options: GetFirstRecordOptions = {};\n expect(options.useCache).toBeUndefined();\n });\n });\n\n describe('CacheError', () => {\n it('should create error with message', () => {\n const error = new CacheError('Test error');\n expect(error.message).toBe('Test error');\n expect(error.name).toBe('CacheError');\n expect(error.cause).toBeUndefined();\n });\n\n it('should create error with cause', () => {\n const cause = new Error('Original error');\n const error = new CacheError('Test error', cause);\n expect(error.message).toBe('Test error');\n expect(error.name).toBe('CacheError');\n expect(error.cause).toBe(cause);\n });\n\n it('should be instanceof Error', () => {\n const error = new CacheError('Test error');\n expect(error instanceof Error).toBe(true);\n expect(error instanceof CacheError).toBe(true);\n });\n });\n});"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|