@trufnetwork/sdk-js 0.3.8 → 0.4.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.
- 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/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/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/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/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/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
|
@@ -28,10 +28,19 @@ var import_EthereumAddress = require("../util/EthereumAddress.cjs");
|
|
|
28
28
|
var import_head = require("../util/head.cjs");
|
|
29
29
|
var import_StreamId = require("../util/StreamId.cjs");
|
|
30
30
|
var import_visibility = require("../util/visibility.cjs");
|
|
31
|
+
var import_cacheMetadataParser = require("../util/cacheMetadataParser.cjs");
|
|
32
|
+
var import_cacheValidation = require("../util/cacheValidation.cjs");
|
|
31
33
|
var import_contractValues = require("./contractValues.cjs");
|
|
32
|
-
var Action = class {
|
|
34
|
+
var Action = class _Action {
|
|
33
35
|
kwilClient;
|
|
34
36
|
kwilSigner;
|
|
37
|
+
/** Track if deprecation warnings were already emitted */
|
|
38
|
+
static _legacyWarnEmitted = {
|
|
39
|
+
getRecord: false,
|
|
40
|
+
getIndex: false,
|
|
41
|
+
getFirstRecord: false,
|
|
42
|
+
getIndexChange: false
|
|
43
|
+
};
|
|
35
44
|
constructor(kwilClient, kwilSigner) {
|
|
36
45
|
this.kwilClient = kwilClient;
|
|
37
46
|
this.kwilSigner = kwilSigner;
|
|
@@ -73,50 +82,159 @@ var Action = class {
|
|
|
73
82
|
}
|
|
74
83
|
return import_monads_io.Either.right(result.data?.result);
|
|
75
84
|
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
$data_provider: input.stream.dataProvider.getAddress(),
|
|
85
|
-
$stream_id: input.stream.streamId.getId(),
|
|
86
|
-
$from: input.from,
|
|
87
|
-
$to: input.to,
|
|
88
|
-
$frozen_at: input.frozenAt
|
|
85
|
+
async getRecord(inputOrStream, options) {
|
|
86
|
+
if ("stream" in inputOrStream) {
|
|
87
|
+
const input = inputOrStream;
|
|
88
|
+
if (!_Action._legacyWarnEmitted.getRecord) {
|
|
89
|
+
_Action._legacyWarnEmitted.getRecord = true;
|
|
90
|
+
if (typeof console !== "undefined" && console.warn) {
|
|
91
|
+
console.warn("[TN SDK] Deprecated signature: getRecord(input). Use getRecord(stream, options?) instead.");
|
|
92
|
+
}
|
|
89
93
|
}
|
|
94
|
+
const prefix2 = input.prefix ? input.prefix : "";
|
|
95
|
+
const result2 = await this.call(
|
|
96
|
+
prefix2 + "get_record",
|
|
97
|
+
{
|
|
98
|
+
$data_provider: input.stream.dataProvider.getAddress(),
|
|
99
|
+
$stream_id: input.stream.streamId.getId(),
|
|
100
|
+
$from: input.from,
|
|
101
|
+
$to: input.to,
|
|
102
|
+
$frozen_at: input.frozenAt
|
|
103
|
+
}
|
|
104
|
+
);
|
|
105
|
+
return result2.mapRight(
|
|
106
|
+
(result3) => result3.map((row) => ({
|
|
107
|
+
eventTime: row.event_time,
|
|
108
|
+
value: row.value
|
|
109
|
+
}))
|
|
110
|
+
).throw();
|
|
111
|
+
}
|
|
112
|
+
const stream = inputOrStream;
|
|
113
|
+
if (options) {
|
|
114
|
+
import_cacheValidation.CacheValidation.validateGetRecordOptions(options);
|
|
115
|
+
import_cacheValidation.CacheValidation.validateTimeRange(options.from, options.to);
|
|
116
|
+
}
|
|
117
|
+
const prefix = options?.prefix ? options.prefix : "";
|
|
118
|
+
const params = {
|
|
119
|
+
$data_provider: stream.dataProvider.getAddress(),
|
|
120
|
+
$stream_id: stream.streamId.getId(),
|
|
121
|
+
$from: options?.from,
|
|
122
|
+
$to: options?.to,
|
|
123
|
+
$frozen_at: options?.frozenAt
|
|
124
|
+
};
|
|
125
|
+
if (options?.useCache !== void 0) {
|
|
126
|
+
params.$use_cache = options.useCache;
|
|
127
|
+
}
|
|
128
|
+
const result = await this.kwilClient.call(
|
|
129
|
+
{
|
|
130
|
+
namespace: "main",
|
|
131
|
+
name: prefix + "get_record",
|
|
132
|
+
inputs: params
|
|
133
|
+
},
|
|
134
|
+
this.kwilSigner
|
|
90
135
|
);
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
136
|
+
if (result.status !== 200) {
|
|
137
|
+
throw new Error(`Failed to get record: ${result.status}`);
|
|
138
|
+
}
|
|
139
|
+
const data = (result.data?.result).map((row) => ({
|
|
140
|
+
eventTime: row.event_time,
|
|
141
|
+
value: row.value
|
|
142
|
+
}));
|
|
143
|
+
let cache = import_cacheMetadataParser.CacheMetadataParser.extractFromResponse(result);
|
|
144
|
+
if (cache) {
|
|
145
|
+
cache = {
|
|
146
|
+
...cache,
|
|
147
|
+
streamId: stream.streamId.getId(),
|
|
148
|
+
dataProvider: stream.dataProvider.getAddress(),
|
|
149
|
+
from: options?.from,
|
|
150
|
+
to: options?.to,
|
|
151
|
+
frozenAt: options?.frozenAt,
|
|
152
|
+
rowsServed: data.length
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
return {
|
|
156
|
+
data,
|
|
157
|
+
cache: cache || void 0,
|
|
158
|
+
logs: result.data?.logs ? import_cacheMetadataParser.CacheMetadataParser.parseLogsForMetadata(result.data.logs) : void 0
|
|
159
|
+
};
|
|
97
160
|
}
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
$data_provider: input.stream.dataProvider.getAddress(),
|
|
107
|
-
$stream_id: input.stream.streamId.getId(),
|
|
108
|
-
$from: input.from,
|
|
109
|
-
$to: input.to,
|
|
110
|
-
$frozen_at: input.frozenAt,
|
|
111
|
-
$base_time: input.baseTime
|
|
161
|
+
async getIndex(inputOrStream, options) {
|
|
162
|
+
if ("stream" in inputOrStream) {
|
|
163
|
+
const input = inputOrStream;
|
|
164
|
+
if (!_Action._legacyWarnEmitted.getIndex) {
|
|
165
|
+
_Action._legacyWarnEmitted.getIndex = true;
|
|
166
|
+
if (typeof console !== "undefined" && console.warn) {
|
|
167
|
+
console.warn("[TN SDK] Deprecated signature: getIndex(input). Use getIndex(stream, options?) instead.");
|
|
168
|
+
}
|
|
112
169
|
}
|
|
170
|
+
const prefix2 = input.prefix ? input.prefix : "";
|
|
171
|
+
const result2 = await this.call(
|
|
172
|
+
prefix2 + "get_index",
|
|
173
|
+
{
|
|
174
|
+
$data_provider: input.stream.dataProvider.getAddress(),
|
|
175
|
+
$stream_id: input.stream.streamId.getId(),
|
|
176
|
+
$from: input.from,
|
|
177
|
+
$to: input.to,
|
|
178
|
+
$frozen_at: input.frozenAt,
|
|
179
|
+
$base_time: input.baseTime
|
|
180
|
+
}
|
|
181
|
+
);
|
|
182
|
+
return result2.mapRight(
|
|
183
|
+
(result3) => result3.map((row) => ({
|
|
184
|
+
eventTime: row.event_time,
|
|
185
|
+
value: row.value
|
|
186
|
+
}))
|
|
187
|
+
).throw();
|
|
188
|
+
}
|
|
189
|
+
const stream = inputOrStream;
|
|
190
|
+
if (options) {
|
|
191
|
+
import_cacheValidation.CacheValidation.validateGetIndexOptions(options);
|
|
192
|
+
import_cacheValidation.CacheValidation.validateTimeRange(options.from, options.to);
|
|
193
|
+
}
|
|
194
|
+
const prefix = options?.prefix ? options.prefix : "";
|
|
195
|
+
const params = {
|
|
196
|
+
$data_provider: stream.dataProvider.getAddress(),
|
|
197
|
+
$stream_id: stream.streamId.getId(),
|
|
198
|
+
$from: options?.from,
|
|
199
|
+
$to: options?.to,
|
|
200
|
+
$frozen_at: options?.frozenAt,
|
|
201
|
+
$base_time: options?.baseTime
|
|
202
|
+
};
|
|
203
|
+
if (options?.useCache !== void 0) {
|
|
204
|
+
params.$use_cache = options.useCache;
|
|
205
|
+
}
|
|
206
|
+
const result = await this.kwilClient.call(
|
|
207
|
+
{
|
|
208
|
+
namespace: "main",
|
|
209
|
+
name: prefix + "get_index",
|
|
210
|
+
inputs: params
|
|
211
|
+
},
|
|
212
|
+
this.kwilSigner
|
|
113
213
|
);
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
214
|
+
if (result.status !== 200) {
|
|
215
|
+
throw new Error(`Failed to get index: ${result.status}`);
|
|
216
|
+
}
|
|
217
|
+
const data = (result.data?.result).map((row) => ({
|
|
218
|
+
eventTime: row.event_time,
|
|
219
|
+
value: row.value
|
|
220
|
+
}));
|
|
221
|
+
let cache = import_cacheMetadataParser.CacheMetadataParser.extractFromResponse(result);
|
|
222
|
+
if (cache) {
|
|
223
|
+
cache = {
|
|
224
|
+
...cache,
|
|
225
|
+
streamId: stream.streamId.getId(),
|
|
226
|
+
dataProvider: stream.dataProvider.getAddress(),
|
|
227
|
+
from: options?.from,
|
|
228
|
+
to: options?.to,
|
|
229
|
+
frozenAt: options?.frozenAt,
|
|
230
|
+
rowsServed: data.length
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
return {
|
|
234
|
+
data,
|
|
235
|
+
cache: cache || void 0,
|
|
236
|
+
logs: result.data?.logs ? import_cacheMetadataParser.CacheMetadataParser.parseLogsForMetadata(result.data.logs) : void 0
|
|
237
|
+
};
|
|
120
238
|
}
|
|
121
239
|
/**
|
|
122
240
|
* Returns the type of the stream
|
|
@@ -140,25 +258,75 @@ var Action = class {
|
|
|
140
258
|
}
|
|
141
259
|
return type.value;
|
|
142
260
|
}
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
$stream_id: input.stream.streamId.getId(),
|
|
152
|
-
$after: input.after,
|
|
153
|
-
$frozen_at: input.frozenAt
|
|
261
|
+
async getFirstRecord(inputOrStream, options) {
|
|
262
|
+
if ("stream" in inputOrStream) {
|
|
263
|
+
const input = inputOrStream;
|
|
264
|
+
if (!_Action._legacyWarnEmitted.getFirstRecord) {
|
|
265
|
+
_Action._legacyWarnEmitted.getFirstRecord = true;
|
|
266
|
+
if (typeof console !== "undefined" && console.warn) {
|
|
267
|
+
console.warn("[TN SDK] Deprecated signature: getFirstRecord(input). Use getFirstRecord(stream, options?) instead.");
|
|
268
|
+
}
|
|
154
269
|
}
|
|
270
|
+
const result2 = await this.call(
|
|
271
|
+
"get_first_record",
|
|
272
|
+
{
|
|
273
|
+
$data_provider: input.stream.dataProvider.getAddress(),
|
|
274
|
+
$stream_id: input.stream.streamId.getId(),
|
|
275
|
+
$after: input.after,
|
|
276
|
+
$frozen_at: input.frozenAt
|
|
277
|
+
}
|
|
278
|
+
);
|
|
279
|
+
return result2.mapRight(import_head.head).mapRight(
|
|
280
|
+
(result3) => result3.map((result4) => ({
|
|
281
|
+
eventTime: result4.event_time,
|
|
282
|
+
value: result4.value
|
|
283
|
+
})).unwrapOr(null)
|
|
284
|
+
).throw();
|
|
285
|
+
}
|
|
286
|
+
const stream = inputOrStream;
|
|
287
|
+
if (options) {
|
|
288
|
+
import_cacheValidation.CacheValidation.validateGetFirstRecordOptions(options);
|
|
289
|
+
}
|
|
290
|
+
const params = {
|
|
291
|
+
$data_provider: stream.dataProvider.getAddress(),
|
|
292
|
+
$stream_id: stream.streamId.getId(),
|
|
293
|
+
$after: options?.after,
|
|
294
|
+
$frozen_at: options?.frozenAt
|
|
295
|
+
};
|
|
296
|
+
if (options?.useCache !== void 0) {
|
|
297
|
+
params.$use_cache = options.useCache;
|
|
298
|
+
}
|
|
299
|
+
const result = await this.kwilClient.call(
|
|
300
|
+
{
|
|
301
|
+
namespace: "main",
|
|
302
|
+
name: "get_first_record",
|
|
303
|
+
inputs: params
|
|
304
|
+
},
|
|
305
|
+
this.kwilSigner
|
|
155
306
|
);
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
307
|
+
if (result.status !== 200) {
|
|
308
|
+
throw new Error(`Failed to get first record: ${result.status}`);
|
|
309
|
+
}
|
|
310
|
+
const rawData = result.data?.result;
|
|
311
|
+
const data = rawData && rawData.length > 0 ? {
|
|
312
|
+
eventTime: rawData[0].event_time,
|
|
313
|
+
value: rawData[0].value
|
|
314
|
+
} : null;
|
|
315
|
+
let cache = import_cacheMetadataParser.CacheMetadataParser.extractFromResponse(result);
|
|
316
|
+
if (cache) {
|
|
317
|
+
cache = {
|
|
318
|
+
...cache,
|
|
319
|
+
streamId: stream.streamId.getId(),
|
|
320
|
+
dataProvider: stream.dataProvider.getAddress(),
|
|
321
|
+
frozenAt: options?.frozenAt,
|
|
322
|
+
rowsServed: data ? 1 : 0
|
|
323
|
+
};
|
|
324
|
+
}
|
|
325
|
+
return {
|
|
326
|
+
data,
|
|
327
|
+
cache: cache || void 0,
|
|
328
|
+
logs: result.data?.logs ? import_cacheMetadataParser.CacheMetadataParser.parseLogsForMetadata(result.data.logs) : void 0
|
|
329
|
+
};
|
|
162
330
|
}
|
|
163
331
|
async setMetadata(stream, key, value) {
|
|
164
332
|
return await this.executeWithNamedParams("insert_metadata", [
|
|
@@ -315,28 +483,84 @@ var Action = class {
|
|
|
315
483
|
};
|
|
316
484
|
});
|
|
317
485
|
}
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
$stream_id: input.stream.streamId.getId(),
|
|
327
|
-
$from: input.from,
|
|
328
|
-
$to: input.to,
|
|
329
|
-
$frozen_at: input.frozenAt,
|
|
330
|
-
$base_time: input.baseTime,
|
|
331
|
-
$time_interval: input.timeInterval
|
|
486
|
+
async getIndexChange(inputOrStream, options) {
|
|
487
|
+
if ("stream" in inputOrStream) {
|
|
488
|
+
const input = inputOrStream;
|
|
489
|
+
if (!_Action._legacyWarnEmitted.getIndexChange) {
|
|
490
|
+
_Action._legacyWarnEmitted.getIndexChange = true;
|
|
491
|
+
if (typeof console !== "undefined" && console.warn) {
|
|
492
|
+
console.warn("[TN SDK] Deprecated signature: getIndexChange(input). Use getIndexChange(stream, options?) instead.");
|
|
493
|
+
}
|
|
332
494
|
}
|
|
495
|
+
const result2 = await this.call(
|
|
496
|
+
"get_index_change",
|
|
497
|
+
{
|
|
498
|
+
$data_provider: input.stream.dataProvider.getAddress(),
|
|
499
|
+
$stream_id: input.stream.streamId.getId(),
|
|
500
|
+
$from: input.from,
|
|
501
|
+
$to: input.to,
|
|
502
|
+
$frozen_at: input.frozenAt,
|
|
503
|
+
$base_time: input.baseTime,
|
|
504
|
+
$time_interval: input.timeInterval
|
|
505
|
+
}
|
|
506
|
+
);
|
|
507
|
+
return result2.mapRight(
|
|
508
|
+
(result3) => result3.map((row) => ({
|
|
509
|
+
eventTime: row.event_time,
|
|
510
|
+
value: row.value
|
|
511
|
+
}))
|
|
512
|
+
).throw();
|
|
513
|
+
}
|
|
514
|
+
const stream = inputOrStream;
|
|
515
|
+
if (!options) {
|
|
516
|
+
throw new Error("Options parameter is required for cache-aware getIndexChange");
|
|
517
|
+
}
|
|
518
|
+
import_cacheValidation.CacheValidation.validateGetIndexChangeOptions(options);
|
|
519
|
+
import_cacheValidation.CacheValidation.validateTimeRange(options.from, options.to);
|
|
520
|
+
const params = {
|
|
521
|
+
$data_provider: stream.dataProvider.getAddress(),
|
|
522
|
+
$stream_id: stream.streamId.getId(),
|
|
523
|
+
$from: options.from,
|
|
524
|
+
$to: options.to,
|
|
525
|
+
$frozen_at: options.frozenAt,
|
|
526
|
+
$base_time: options.baseTime,
|
|
527
|
+
$time_interval: options.timeInterval
|
|
528
|
+
};
|
|
529
|
+
if (options.useCache !== void 0) {
|
|
530
|
+
params.$use_cache = options.useCache;
|
|
531
|
+
}
|
|
532
|
+
const result = await this.kwilClient.call(
|
|
533
|
+
{
|
|
534
|
+
namespace: "main",
|
|
535
|
+
name: "get_index_change",
|
|
536
|
+
inputs: params
|
|
537
|
+
},
|
|
538
|
+
this.kwilSigner
|
|
333
539
|
);
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
540
|
+
if (result.status !== 200) {
|
|
541
|
+
throw new Error(`Failed to get index change: ${result.status}`);
|
|
542
|
+
}
|
|
543
|
+
const data = (result.data?.result).map((row) => ({
|
|
544
|
+
eventTime: row.event_time,
|
|
545
|
+
value: row.value
|
|
546
|
+
}));
|
|
547
|
+
let cache = import_cacheMetadataParser.CacheMetadataParser.extractFromResponse(result);
|
|
548
|
+
if (cache) {
|
|
549
|
+
cache = {
|
|
550
|
+
...cache,
|
|
551
|
+
streamId: stream.streamId.getId(),
|
|
552
|
+
dataProvider: stream.dataProvider.getAddress(),
|
|
553
|
+
from: options.from,
|
|
554
|
+
to: options.to,
|
|
555
|
+
frozenAt: options.frozenAt,
|
|
556
|
+
rowsServed: data.length
|
|
557
|
+
};
|
|
558
|
+
}
|
|
559
|
+
return {
|
|
560
|
+
data,
|
|
561
|
+
cache: cache || void 0,
|
|
562
|
+
logs: result.data?.logs ? import_cacheMetadataParser.CacheMetadataParser.parseLogsForMetadata(result.data.logs) : void 0
|
|
563
|
+
};
|
|
340
564
|
}
|
|
341
565
|
/**
|
|
342
566
|
* A custom method that accepts the procedure name and the input of GetRecordInput
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/contracts-api/action.ts"],
|
|
4
|
-
"sourcesContent": ["import {KwilSigner, NodeKwil, WebKwil} from \"@trufnetwork/kwil-js\";\nimport { ActionBody } from '@trufnetwork/kwil-js/dist/core/action';\nimport {NamedParams} from \"@trufnetwork/kwil-js/dist/core/action\";\nimport { GenericResponse } from \"@trufnetwork/kwil-js/dist/core/resreq\";\nimport { TxReceipt } from \"@trufnetwork/kwil-js/dist/core/tx\";\nimport { Either } from \"monads-io\";\nimport { DateString } from \"../types/other\";\nimport { StreamLocator } from \"../types/stream\";\nimport { EthereumAddress } from \"../util/EthereumAddress\";\nimport { head } from \"../util/head\";\nimport { StreamId } from \"../util/StreamId\";\nimport { toVisibilityEnum, VisibilityEnum } from \"../util/visibility\";\nimport {\n MetadataKey,\n MetadataKeyValueMap,\n MetadataTableKey,\n MetadataValueTypeForKey,\n StreamType,\n} from \"./contractValues\";\nimport {ValueType} from \"@trufnetwork/kwil-js/dist/utils/types\";\n\nexport interface GetRecordInput {\n stream: StreamLocator;\n from?: number;\n to?: number;\n frozenAt?: number;\n baseTime?: DateString | number;\n prefix?: string;\n}\n\nexport interface GetFirstRecordInput {\n stream: StreamLocator;\n after?: number;\n frozenAt?: number;\n}\n\nexport interface StreamRecord {\n eventTime: number;\n value: string;\n}\n\nexport interface GetIndexChangeInput extends GetRecordInput {\n timeInterval: number;\n}\n\nexport class Action {\n protected kwilClient: WebKwil | NodeKwil;\n protected kwilSigner: KwilSigner;\n constructor(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n ) {\n this.kwilClient = kwilClient;\n this.kwilSigner = kwilSigner;\n }\n\n /**\n * Executes a method on the stream\n */\n protected async executeWithNamedParams(\n method: string,\n inputs: NamedParams[],\n ): Promise<GenericResponse<TxReceipt>> {\n return this.kwilClient.execute({\n namespace: \"main\",\n name: method,\n inputs,\n description: `TN SDK - Executing method on stream: ${method}`,\n },\n this.kwilSigner,\n );\n }\n\n /**\n * Executes a method on the stream\n */\n protected async executeWithActionBody(\n inputs: ActionBody,\n synchronous: boolean = false,\n ): Promise<GenericResponse<TxReceipt>> {\n return this.kwilClient.execute(inputs, this.kwilSigner, synchronous);\n }\n\n /**\n * Calls a method on the stream\n */\n protected async call<T>(\n method: string,\n inputs: NamedParams,\n ): Promise<Either<number, T>> {\n const result = await this.kwilClient.call(\n {\n namespace: \"main\",\n name: method,\n inputs: inputs,\n },\n this.kwilSigner,\n );\n\n if (result.status !== 200) {\n return Either.left(result.status);\n }\n\n return Either.right(result.data?.result as T);\n }\n\n /**\n * Returns the records of the stream within the given date range\n */\n public async getRecord(input: GetRecordInput): Promise<StreamRecord[]> {\n const prefix = input.prefix ? input.prefix : \"\"\n const result = await this.call<{ event_time: number; value: string }[]>(\n prefix + \"get_record\",\n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $from: input.from,\n $to: input.to,\n $frozen_at: input.frozenAt,\n }\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n /**\n * Returns the index of the stream within the given date range\n */\n public async getIndex(input: GetRecordInput): Promise<StreamRecord[]> {\n const prefix = input.prefix ? input.prefix : \"\"\n const result = await this.call<{ event_time: number; value: string }[]>(\n prefix + \"get_index\",\n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $from: input.from,\n $to: input.to,\n $frozen_at: input.frozenAt,\n $base_time: input.baseTime,\n }\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n /**\n * Returns the type of the stream\n */\n public async getType(\n stream: StreamLocator,\n ): Promise<StreamType> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.TypeKey);\n\n if (!result) {\n throw new Error(\"Failed to get stream type\");\n }\n\n const type = head(result).unwrapOrElse(() => {\n throw new Error(\n \"Failed to get stream type. Check if the stream is initialized.\",\n );\n });\n\n const validTypes = [StreamType.Primitive, StreamType.Composed];\n\n if (!validTypes.includes(type.value as StreamType)) {\n throw new Error(`Invalid stream type: ${type.value}`);\n }\n\n return type.value as StreamType;\n }\n\n /**\n * Returns the first record of the stream\n */\n public async getFirstRecord(\n input: GetFirstRecordInput,\n ): Promise<StreamRecord | null> {\n const result = await this.call<{ event_time: number; value: string }[]>(\n \"get_first_record\",\n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $after: input.after,\n $frozen_at: input.frozenAt,\n }\n );\n\n return result\n .mapRight(head)\n .mapRight((result) =>\n result\n .map((result) => ({\n eventTime: result.event_time,\n value: result.value,\n }))\n .unwrapOr(null),\n )\n .throw();\n }\n\n protected async setMetadata<K extends MetadataKey>(\n stream: StreamLocator,\n key: K,\n value: MetadataValueTypeForKey<K>,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.executeWithNamedParams(\"insert_metadata\", [{\n $data_provider: stream.dataProvider.getAddress(),\n $stream_id: stream.streamId.getId(),\n $key: key,\n $value: value,\n $val_type: MetadataKeyValueMap[key],\n },\n ]);\n }\n\n protected async getMetadata<K extends MetadataKey>(\n stream: StreamLocator,\n key: K,\n // onlyLatest: boolean = true,\n filteredRef?: string,\n limit?: number,\n offset?: number,\n orderBy?: string,\n ): Promise<\n { rowId: string; value: MetadataValueTypeForKey<K>; createdAt: number }[]\n > {\n const result = await this.call<\n {\n row_id: string;\n value_i: number;\n value_f: string;\n value_b: boolean;\n value_s: string;\n value_ref: string;\n created_at: number;\n }[]\n >(\"get_metadata\", {\n $data_provider: stream.dataProvider.getAddress(),\n $stream_id: stream.streamId.getId(),\n $key: key,\n $ref: filteredRef,\n $limit: limit,\n $offset: offset,\n $order_by: orderBy,\n },\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n rowId: row.row_id,\n value: row[\n MetadataTableKey[MetadataKeyValueMap[key as MetadataKey]]\n ] as MetadataValueTypeForKey<K>,\n createdAt: row.created_at,\n })),\n )\n .throw();\n }\n\n /**\n * Sets the read visibility of the stream\n */\n public async setReadVisibility(\n stream: StreamLocator,\n visibility: VisibilityEnum,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.setMetadata(\n stream,\n MetadataKey.ReadVisibilityKey,\n visibility.toString(),\n );\n }\n\n /**\n * Returns the read visibility of the stream\n */\n public async getReadVisibility(\n stream: StreamLocator,\n ): Promise<VisibilityEnum | null> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.ReadVisibilityKey);\n\n return head(result)\n .map((row) => toVisibilityEnum(row.value))\n .unwrapOr(null);\n }\n\n /**\n * Sets the compose visibility of the stream\n */\n public async setComposeVisibility(\n stream: StreamLocator,\n visibility: VisibilityEnum,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.setMetadata(\n stream,\n MetadataKey.ComposeVisibilityKey,\n visibility.toString(),\n );\n }\n\n /**\n * Returns the compose visibility of the stream\n */\n public async getComposeVisibility(\n stream: StreamLocator,\n ): Promise<VisibilityEnum | null> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.ComposeVisibilityKey);\n\n return head(result)\n .map((row) => toVisibilityEnum(row.value))\n .unwrapOr(null);\n }\n\n /**\n * Allows a wallet to read the stream\n */\n public async allowReadWallet(\n stream: StreamLocator,\n wallet: EthereumAddress,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.setMetadata(\n stream,\n MetadataKey.AllowReadWalletKey,\n wallet.getAddress(),\n );\n }\n\n /**\n * Disables a wallet from reading the stream\n */\n public async disableReadWallet(\n stream: StreamLocator,\n wallet: EthereumAddress,\n ): Promise<GenericResponse<TxReceipt>> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.AllowReadWalletKey,\n wallet.getAddress(),\n );\n\n const row_id = head(result)\n .map((row) => row.rowId)\n .unwrapOr(null);\n\n if (!row_id) {\n throw new Error(\"Wallet not found in allowed list\");\n }\n\n return await this.disableMetadata(stream, row_id);\n }\n\n /**\n * Allows a stream to use this stream as child\n */\n public async allowComposeStream(\n stream: StreamLocator,\n wallet: StreamLocator,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.setMetadata(\n stream,\n MetadataKey.AllowComposeStreamKey,\n wallet.streamId.getId(),\n );\n }\n\n /**\n * Disables a stream from using this stream as child\n */\n public async disableComposeStream(\n stream: StreamLocator,\n wallet: StreamLocator,\n ): Promise<GenericResponse<TxReceipt>> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.AllowComposeStreamKey,\n wallet.toString(),\n );\n\n const row_id = head(result)\n .map((row) => row.rowId)\n .unwrapOr(null);\n\n if (!row_id) {\n throw new Error(\"Stream not found in allowed list\");\n }\n\n return await this.disableMetadata(stream, row_id);\n }\n\n protected async disableMetadata(\n stream: StreamLocator,\n rowId: string,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.executeWithNamedParams(\"disable_metadata\", [{\n $data_provider: stream.dataProvider.getAddress(),\n $stream_id: stream.streamId.getId(),\n $row_id: rowId,\n }]);\n }\n\n /**\n * Returns the wallets allowed to read the stream\n */\n public async getAllowedReadWallets(\n stream: StreamLocator,\n ): Promise<EthereumAddress[]> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.AllowReadWalletKey);\n\n return result\n .filter((row) => row.value)\n .map((row) => new EthereumAddress(row.value));\n }\n\n /**\n * Returns the streams allowed to compose the stream\n */\n public async getAllowedComposeStreams(\n stream: StreamLocator,\n ): Promise<StreamLocator[]> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.AllowComposeStreamKey);\n\n return result\n .filter((row) => row.value)\n .map((row) => {\n const [streamId, dataProvider] = row.value.split(\":\");\n return {\n streamId: StreamId.fromString(streamId).throw(),\n dataProvider: new EthereumAddress(dataProvider),\n };\n });\n }\n\n /**\n * Returns the index change of the stream within the given date range\n */\n public async getIndexChange(\n input: GetIndexChangeInput,\n ): Promise<StreamRecord[]> {\n const result = await this.call<{ event_time: number; value: string }[]>(\n \"get_index_change\", \n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $from: input.from,\n $to: input.to,\n $frozen_at: input.frozenAt,\n $base_time: input.baseTime,\n $time_interval: input.timeInterval,\n }\n );\n\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n /**\n * A custom method that accepts the procedure name and the input of GetRecordInput\n * Returns the result of the procedure in the same format as StreamRecord\n * I.e. a custom procedure named \"get_price\" that returns a list of date_value and value\n * can be called with customGetProcedure(\"get_price\", { dateFrom: \"2021-01-01\", dateTo: \"2021-01-31\" })\n */\n public async customGetProcedure(\n procedure: string,\n input: GetRecordInput,\n ): Promise<StreamRecord[]> {\n const result = await this.call<{ event_time: number; value: string }[]>(\n procedure,\n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $from: input.from,\n $to: input.to,\n $frozen_at: input.frozenAt\n }\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n\n /**\n * A custom method that accepts the procedure name and custom input of type Record<string, any>\n * Returns the result of the procedure in the same format as StreamRecord\n * I.e. a custom procedure named \"get_custom_index\" that returns a list of date_value and value\n * can be called with customProcedureWithArgs(\"get_custom_index\", { $customArg1: \"value1\", $customArg2: \"value2\" })\n * where $customArg1 and $customArg2 are the arguments of the procedure\n * @param procedure\n * @param args\n */\n public async customProcedureWithArgs(\n procedure: string,\n args: Record<string, ValueType | ValueType[]>,\n ){\n const result = await this.call<{ event_time: number; value: string }[]>(\n procedure,\n args\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n /**\n * Returns the size of database\n */\n public async getDatabaseSize(): Promise<BigInt> {\n const result = await this.call<{ database_size: BigInt }[]>(\"get_database_size\", {})\n return result\n .map((rows) => {\n const raw = rows[0].database_size;\n const asBigInt = BigInt(raw.toString());\n return asBigInt;\n }).throw();\n }\n}\n"],
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,uBAAuB;AAGvB,6BAAgC;AAChC,kBAAqB;AACrB,sBAAyB;AACzB,wBAAiD;AACjD,4BAMO;AA2BA,IAAM,SAAN,MAAa;AAAA,EACR;AAAA,EACA;AAAA,EACV,YACE,YACA,YACA;AACA,SAAK,aAAa;AAClB,SAAK,aAAa;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAgB,uBACd,QACA,QACqC;AACrC,WAAO,KAAK,WAAW;AAAA,MAAQ;AAAA,QACzB,WAAW;AAAA,QACX,MAAM;AAAA,QACN;AAAA,QACA,aAAa,wCAAwC,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AAAA,IACL;AAAA,EACN;AAAA;AAAA;AAAA;AAAA,EAKE,MAAgB,sBACZ,QACA,cAAuB,OACY;AACnC,WAAO,KAAK,WAAW,QAAQ,QAAQ,KAAK,YAAY,WAAW;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA,EAKF,MAAgB,KACd,QACA,QAC4B;AAC5B,UAAM,SAAS,MAAM,KAAK,WAAW;AAAA,MACnC;AAAA,QACE,WAAW;AAAA,QACX,MAAM;AAAA,QACN;AAAA,MACF;AAAA,MACA,KAAK;AAAA,IACP;AAEA,QAAI,OAAO,WAAW,KAAK;AACzB,aAAO,wBAAO,KAAK,OAAO,MAAM;AAAA,IAClC;AAEA,WAAO,wBAAO,MAAM,OAAO,MAAM,MAAW;AAAA,EAC9C;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,UAAU,OAAgD;AACrE,UAAM,SAAS,MAAM,SAAS,MAAM,SAAS;AAC7C,UAAM,SAAS,MAAM,KAAK;AAAA,MACtB,SAAS;AAAA,MACT;AAAA,QACE,gBAAgB,MAAM,OAAO,aAAa,WAAW;AAAA,QACrD,YAAY,MAAM,OAAO,SAAS,MAAM;AAAA,QACxC,OAAO,MAAM;AAAA,QACb,KAAK,MAAM;AAAA,QACX,YAAY,MAAM;AAAA,MACpB;AAAA,IACJ;AACA,WAAO,OACJ;AAAA,MAAS,CAACA,YACTA,QAAO,IAAI,CAAC,SAAS;AAAA,QACnB,WAAW,IAAI;AAAA,QACf,OAAO,IAAI;AAAA,MACb,EAAE;AAAA,IACJ,EACC,MAAM;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,SAAS,OAAgD;AACpE,UAAM,SAAS,MAAM,SAAS,MAAM,SAAS;AAC7C,UAAM,SAAS,MAAM,KAAK;AAAA,MACxB,SAAS;AAAA,MACP;AAAA,QACE,gBAAgB,MAAM,OAAO,aAAa,WAAW;AAAA,QACrD,YAAY,MAAM,OAAO,SAAS,MAAM;AAAA,QACxC,OAAO,MAAM;AAAA,QACb,KAAK,MAAM;AAAA,QACX,YAAY,MAAM;AAAA,QAClB,YAAY,MAAM;AAAA,MACpB;AAAA,IACJ;AACA,WAAO,OACJ;AAAA,MAAS,CAACA,YACTA,QAAO,IAAI,CAAC,SAAS;AAAA,QACnB,WAAW,IAAI;AAAA,QACf,OAAO,IAAI;AAAA,MACb,EAAE;AAAA,IACJ,EACC,MAAM;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,QACT,QACmB;AACrB,UAAM,SAAS,MAAM,KAAK;AAAA,MACtB;AAAA,MACA,kCAAY;AAAA,IAAO;AAEvB,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,2BAA2B;AAAA,IAC7C;AAEA,UAAM,WAAO,kBAAK,MAAM,EAAE,aAAa,MAAM;AAC3C,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,aAAa,CAAC,iCAAW,WAAW,iCAAW,QAAQ;AAE7D,QAAI,CAAC,WAAW,SAAS,KAAK,KAAmB,GAAG;AAClD,YAAM,IAAI,MAAM,wBAAwB,KAAK,KAAK,EAAE;AAAA,IACtD;AAEA,WAAO,KAAK;AAAA,EACd;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,eACX,OAC8B;AAC9B,UAAM,SAAS,MAAM,KAAK;AAAA,MACxB;AAAA,MACE;AAAA,QACI,gBAAgB,MAAM,OAAO,aAAa,WAAW;AAAA,QACrD,YAAY,MAAM,OAAO,SAAS,MAAM;AAAA,QACxC,QAAQ,MAAM;AAAA,QACd,YAAY,MAAM;AAAA,MACtB;AAAA,IACJ;AAEA,WAAO,OACJ,SAAS,gBAAI,EACb;AAAA,MAAS,CAACA,YACTA,QACG,IAAI,CAACA,aAAY;AAAA,QAChB,WAAWA,QAAO;AAAA,QAClB,OAAOA,QAAO;AAAA,MAChB,EAAE,EACD,SAAS,IAAI;AAAA,IAClB,EACC,MAAM;AAAA,EACX;AAAA,EAEA,MAAgB,YACd,QACA,KACA,OACqC;AACrC,WAAO,MAAM,KAAK,uBAAuB,mBAAmB;AAAA,MAAC;AAAA,QACzD,gBAAgB,OAAO,aAAa,WAAW;AAAA,QAC/C,YAAY,OAAO,SAAS,MAAM;AAAA,QAClC,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,WAAW,0CAAoB,GAAG;AAAA,MAClC;AAAA,IACJ,CAAC;AAAA,EACH;AAAA,EAEA,MAAgB,YACd,QACA,KAEA,aACA,OACA,QACA,SAGA;AACA,UAAM,SAAS,MAAM,KAAK;AAAA,MAUxB;AAAA,MAAgB;AAAA,QACd,gBAAgB,OAAO,aAAa,WAAW;AAAA,QAC/C,YAAY,OAAO,SAAS,MAAM;AAAA,QAClC,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,WAAW;AAAA,MACX;AAAA,IACJ;AACA,WAAO,OACJ;AAAA,MAAS,CAACA,YACTA,QAAO,IAAI,CAAC,SAAS;AAAA,QACnB,OAAO,IAAI;AAAA,QACX,OAAO,IACL,uCAAiB,0CAAoB,GAAkB,CAAC,CAC1D;AAAA,QACA,WAAW,IAAI;AAAA,MACjB,EAAE;AAAA,IACJ,EACC,MAAM;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,kBACX,QACA,YACqC;AACrC,WAAO,MAAM,KAAK;AAAA,MACd;AAAA,MACF,kCAAY;AAAA,MACZ,WAAW,SAAS;AAAA,IACtB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,kBACT,QAC8B;AAChC,UAAM,SAAS,MAAM,KAAK;AAAA,MACtB;AAAA,MACA,kCAAY;AAAA,IAAiB;AAEjC,eAAO,kBAAK,MAAM,EACf,IAAI,CAAC,YAAQ,oCAAiB,IAAI,KAAK,CAAC,EACxC,SAAS,IAAI;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,qBACX,QACA,YACqC;AACrC,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kCAAY;AAAA,MACZ,WAAW,SAAS;AAAA,IACtB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,qBACT,QAC8B;AAChC,UAAM,SAAS,MAAM,KAAK;AAAA,MACxB;AAAA,MACA,kCAAY;AAAA,IAAoB;AAElC,eAAO,kBAAK,MAAM,EACf,IAAI,CAAC,YAAQ,oCAAiB,IAAI,KAAK,CAAC,EACxC,SAAS,IAAI;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,gBACX,QACA,QACqC;AACrC,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kCAAY;AAAA,MACZ,OAAO,WAAW;AAAA,IACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,kBACX,QACA,QACqC;AACrC,UAAM,SAAS,MAAM,KAAK;AAAA,MACxB;AAAA,MACA,kCAAY;AAAA,MACZ,OAAO,WAAW;AAAA,IACpB;AAEA,UAAM,aAAS,kBAAK,MAAM,EACvB,IAAI,CAAC,QAAQ,IAAI,KAAK,EACtB,SAAS,IAAI;AAEhB,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAEA,WAAO,MAAM,KAAK,gBAAgB,QAAQ,MAAM;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,mBACX,QACA,QACqC;AACrC,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kCAAY;AAAA,MACZ,OAAO,SAAS,MAAM;AAAA,IACxB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,qBACX,QACA,QACqC;AACrC,UAAM,SAAS,MAAM,KAAK;AAAA,MACxB;AAAA,MACA,kCAAY;AAAA,MACZ,OAAO,SAAS;AAAA,IAClB;AAEA,UAAM,aAAS,kBAAK,MAAM,EACvB,IAAI,CAAC,QAAQ,IAAI,KAAK,EACtB,SAAS,IAAI;AAEhB,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAEA,WAAO,MAAM,KAAK,gBAAgB,QAAQ,MAAM;AAAA,EAClD;AAAA,EAEA,MAAgB,gBACd,QACA,OACqC;AACrC,WAAO,MAAM,KAAK,uBAAuB,oBAAoB,CAAC;AAAA,MACtD,gBAAgB,OAAO,aAAa,WAAW;AAAA,MAC/C,YAAY,OAAO,SAAS,MAAM;AAAA,MAClC,SAAS;AAAA,IACjB,CAAC,CAAC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,sBACX,QAC4B;AAC5B,UAAM,SAAS,MAAM,KAAK;AAAA,MACtB;AAAA,MACA,kCAAY;AAAA,IAAkB;AAElC,WAAO,OACJ,OAAO,CAAC,QAAQ,IAAI,KAAK,EACzB,IAAI,CAAC,QAAQ,IAAI,uCAAgB,IAAI,KAAK,CAAC;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,yBACX,QAC0B;AAC1B,UAAM,SAAS,MAAM,KAAK;AAAA,MACtB;AAAA,MACA,kCAAY;AAAA,IAAqB;AAErC,WAAO,OACJ,OAAO,CAAC,QAAQ,IAAI,KAAK,EACzB,IAAI,CAAC,QAAQ;AACZ,YAAM,CAAC,UAAU,YAAY,IAAI,IAAI,MAAM,MAAM,GAAG;AACpD,aAAO;AAAA,QACL,UAAU,yBAAS,WAAW,QAAQ,EAAE,MAAM;AAAA,QAC9C,cAAc,IAAI,uCAAgB,YAAY;AAAA,MAChD;AAAA,IACF,CAAC;AAAA,EACL;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,eACX,OACyB;AACzB,UAAM,SAAS,MAAM,KAAK;AAAA,MACxB;AAAA,MACE;AAAA,QACE,gBAAgB,MAAM,OAAO,aAAa,WAAW;AAAA,QACrD,YAAY,MAAM,OAAO,SAAS,MAAM;AAAA,QACxC,OAAO,MAAM;AAAA,QACb,KAAK,MAAM;AAAA,QACX,YAAY,MAAM;AAAA,QAClB,YAAY,MAAM;AAAA,QAClB,gBAAgB,MAAM;AAAA,MACxB;AAAA,IACJ;AAEA,WAAO,OACJ;AAAA,MAAS,CAACA,YACTA,QAAO,IAAI,CAAC,SAAS;AAAA,QACnB,WAAW,IAAI;AAAA,QACf,OAAO,IAAI;AAAA,MACb,EAAE;AAAA,IACJ,EACC,MAAM;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,mBACX,WACA,OACyB;AACzB,UAAM,SAAS,MAAM,KAAK;AAAA,MACxB;AAAA,MACE;AAAA,QACE,gBAAgB,MAAM,OAAO,aAAa,WAAW;AAAA,QACrD,YAAY,MAAM,OAAO,SAAS,MAAM;AAAA,QACxC,OAAO,MAAM;AAAA,QACb,KAAK,MAAM;AAAA,QACX,YAAY,MAAM;AAAA,MACpB;AAAA,IACJ;AACA,WAAO,OACJ;AAAA,MAAS,CAACA,YACTA,QAAO,IAAI,CAAC,SAAS;AAAA,QACnB,WAAW,IAAI;AAAA,QACf,OAAO,IAAI;AAAA,MACb,EAAE;AAAA,IACJ,EACC,MAAM;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,wBACX,WACA,MACD;AACG,UAAM,SAAS,MAAM,KAAK;AAAA,MACtB;AAAA,MACA;AAAA,IACN;AACA,WAAO,OACJ;AAAA,MAAS,CAACA,YACTA,QAAO,IAAI,CAAC,SAAS;AAAA,QACnB,WAAW,IAAI;AAAA,QACf,OAAO,IAAI;AAAA,MACb,EAAE;AAAA,IACJ,EACC,MAAM;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,kBAAmC;AAC9C,UAAM,SAAS,MAAM,KAAK,KAAkC,qBAAqB,CAAC,CAAC;AACnF,WAAO,OACJ,IAAI,CAAC,SAAS;AACb,YAAM,MAAM,KAAK,CAAC,EAAE;AACpB,YAAM,WAAW,OAAO,IAAI,SAAS,CAAC;AACtC,aAAO;AAAA,IACT,CAAC,EAAE,MAAM;AAAA,EACb;AACF;",
|
|
6
|
-
"names": ["result"]
|
|
4
|
+
"sourcesContent": ["import {KwilSigner, NodeKwil, WebKwil} from \"@trufnetwork/kwil-js\";\nimport { ActionBody } from '@trufnetwork/kwil-js/dist/core/action';\nimport {NamedParams} from \"@trufnetwork/kwil-js/dist/core/action\";\nimport { GenericResponse } from \"@trufnetwork/kwil-js/dist/core/resreq\";\nimport { TxReceipt } from \"@trufnetwork/kwil-js/dist/core/tx\";\nimport { Either } from \"monads-io\";\nimport { DateString } from \"../types/other\";\nimport { StreamLocator } from \"../types/stream\";\nimport { CacheAwareResponse, GetRecordOptions, GetIndexOptions, GetIndexChangeOptions, GetFirstRecordOptions } from \"../types/cache\";\nimport { EthereumAddress } from \"../util/EthereumAddress\";\nimport { head } from \"../util/head\";\nimport { StreamId } from \"../util/StreamId\";\nimport { toVisibilityEnum, VisibilityEnum } from \"../util/visibility\";\nimport { CacheMetadataParser } from \"../util/cacheMetadataParser\";\nimport { CacheValidation } from \"../util/cacheValidation\";\nimport {\n MetadataKey,\n MetadataKeyValueMap,\n MetadataTableKey,\n MetadataValueTypeForKey,\n StreamType,\n} from \"./contractValues\";\nimport {ValueType} from \"@trufnetwork/kwil-js/dist/utils/types\";\n\nexport interface GetRecordInput {\n stream: StreamLocator;\n from?: number;\n to?: number;\n frozenAt?: number;\n baseTime?: DateString | number;\n prefix?: string;\n}\n\nexport interface GetFirstRecordInput {\n stream: StreamLocator;\n after?: number;\n frozenAt?: number;\n}\n\nexport interface StreamRecord {\n eventTime: number;\n value: string;\n}\n\nexport interface GetIndexChangeInput extends GetRecordInput {\n timeInterval: number;\n}\n\nexport class Action {\n protected kwilClient: WebKwil | NodeKwil;\n protected kwilSigner: KwilSigner;\n /** Track if deprecation warnings were already emitted */\n private static _legacyWarnEmitted: Record<string, boolean> = {\n getRecord: false,\n getIndex: false,\n getFirstRecord: false,\n getIndexChange: false,\n };\n constructor(\n kwilClient: WebKwil | NodeKwil,\n kwilSigner: KwilSigner,\n ) {\n this.kwilClient = kwilClient;\n this.kwilSigner = kwilSigner;\n }\n\n /**\n * Executes a method on the stream\n */\n protected async executeWithNamedParams(\n method: string,\n inputs: NamedParams[],\n ): Promise<GenericResponse<TxReceipt>> {\n return this.kwilClient.execute({\n namespace: \"main\",\n name: method,\n inputs,\n description: `TN SDK - Executing method on stream: ${method}`,\n },\n this.kwilSigner,\n );\n }\n\n /**\n * Executes a method on the stream\n */\n protected async executeWithActionBody(\n inputs: ActionBody,\n synchronous: boolean = false,\n ): Promise<GenericResponse<TxReceipt>> {\n return this.kwilClient.execute(inputs, this.kwilSigner, synchronous);\n }\n\n /**\n * Calls a method on the stream\n */\n protected async call<T>(\n method: string,\n inputs: NamedParams,\n ): Promise<Either<number, T>> {\n const result = await this.kwilClient.call(\n {\n namespace: \"main\",\n name: method,\n inputs: inputs,\n },\n this.kwilSigner,\n );\n\n if (result.status !== 200) {\n return Either.left(result.status);\n }\n\n return Either.right(result.data?.result as T);\n }\n\n /**\n * @deprecated Use getRecord(stream, options?) to leverage cache support and future-proof parameter handling.\n */\n public async getRecord(input: GetRecordInput): Promise<StreamRecord[]>;\n public async getRecord(stream: StreamLocator, options?: GetRecordOptions): Promise<CacheAwareResponse<StreamRecord[]>>;\n public async getRecord(\n inputOrStream: GetRecordInput | StreamLocator,\n options?: GetRecordOptions\n ): Promise<StreamRecord[] | CacheAwareResponse<StreamRecord[]>> {\n // Handle backward compatibility\n if ('stream' in inputOrStream) {\n // Legacy call format\n const input = inputOrStream as GetRecordInput;\n // emit deprecation warning once\n if (!Action._legacyWarnEmitted.getRecord) {\n Action._legacyWarnEmitted.getRecord = true;\n if (typeof console !== 'undefined' && console.warn) {\n console.warn('[TN SDK] Deprecated signature: getRecord(input). Use getRecord(stream, options?) instead.');\n }\n }\n const prefix = input.prefix ? input.prefix : \"\"\n const result = await this.call<{ event_time: number; value: string }[]>(\n prefix + \"get_record\",\n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $from: input.from,\n $to: input.to,\n $frozen_at: input.frozenAt,\n }\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n \n // New cache-aware call format\n const stream = inputOrStream as StreamLocator;\n \n // Validate options if provided\n if (options) {\n CacheValidation.validateGetRecordOptions(options);\n CacheValidation.validateTimeRange(options.from, options.to);\n }\n \n const prefix = options?.prefix ? options.prefix : \"\"\n const params: any = {\n $data_provider: stream.dataProvider.getAddress(),\n $stream_id: stream.streamId.getId(),\n $from: options?.from,\n $to: options?.to,\n $frozen_at: options?.frozenAt,\n };\n \n if (options?.useCache !== undefined) {\n params.$use_cache = options.useCache;\n }\n \n const result = await this.kwilClient.call(\n {\n namespace: \"main\",\n name: prefix + \"get_record\",\n inputs: params,\n },\n this.kwilSigner,\n );\n \n if (result.status !== 200) {\n throw new Error(`Failed to get record: ${result.status}`);\n }\n \n const data = (result.data?.result as { event_time: number; value: string }[]).map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n }));\n \n let cache = CacheMetadataParser.extractFromResponse(result);\n \n // Enhance cache metadata with SDK-provided context\n if (cache) {\n cache = {\n ...cache,\n streamId: stream.streamId.getId(),\n dataProvider: stream.dataProvider.getAddress(),\n from: options?.from,\n to: options?.to,\n frozenAt: options?.frozenAt,\n rowsServed: data.length\n };\n }\n \n return {\n data,\n cache: cache || undefined,\n logs: result.data?.logs ? CacheMetadataParser.parseLogsForMetadata(result.data.logs) : undefined,\n };\n }\n\n /**\n * Returns the index of the stream within the given date range\n * @deprecated Use getIndex(stream, options?) to leverage cache support and future-proof parameter handling.\n */\n public async getIndex(input: GetRecordInput): Promise<StreamRecord[]>;\n public async getIndex(stream: StreamLocator, options?: GetIndexOptions): Promise<CacheAwareResponse<StreamRecord[]>>;\n public async getIndex(\n inputOrStream: GetRecordInput | StreamLocator,\n options?: GetIndexOptions\n ): Promise<StreamRecord[] | CacheAwareResponse<StreamRecord[]>> {\n // Handle backward compatibility\n if ('stream' in inputOrStream) {\n // Legacy call format\n const input = inputOrStream as GetRecordInput;\n if (!Action._legacyWarnEmitted.getIndex) {\n Action._legacyWarnEmitted.getIndex = true;\n if (typeof console !== 'undefined' && console.warn) {\n console.warn('[TN SDK] Deprecated signature: getIndex(input). Use getIndex(stream, options?) instead.');\n }\n }\n const prefix = input.prefix ? input.prefix : \"\"\n const result = await this.call<{ event_time: number; value: string }[]>(\n prefix + \"get_index\",\n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $from: input.from,\n $to: input.to,\n $frozen_at: input.frozenAt,\n $base_time: input.baseTime,\n }\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n \n // New cache-aware call format\n const stream = inputOrStream as StreamLocator;\n \n // Validate options if provided\n if (options) {\n CacheValidation.validateGetIndexOptions(options);\n CacheValidation.validateTimeRange(options.from, options.to);\n }\n \n const prefix = options?.prefix ? options.prefix : \"\"\n const params: any = {\n $data_provider: stream.dataProvider.getAddress(),\n $stream_id: stream.streamId.getId(),\n $from: options?.from,\n $to: options?.to,\n $frozen_at: options?.frozenAt,\n $base_time: options?.baseTime,\n };\n \n if (options?.useCache !== undefined) {\n params.$use_cache = options.useCache;\n }\n \n const result = await this.kwilClient.call(\n {\n namespace: \"main\",\n name: prefix + \"get_index\",\n inputs: params,\n },\n this.kwilSigner,\n );\n \n if (result.status !== 200) {\n throw new Error(`Failed to get index: ${result.status}`);\n }\n \n const data = (result.data?.result as { event_time: number; value: string }[]).map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n }));\n \n let cache = CacheMetadataParser.extractFromResponse(result);\n \n // Enhance cache metadata with SDK-provided context\n if (cache) {\n cache = {\n ...cache,\n streamId: stream.streamId.getId(),\n dataProvider: stream.dataProvider.getAddress(),\n from: options?.from,\n to: options?.to,\n frozenAt: options?.frozenAt,\n rowsServed: data.length\n };\n }\n \n return {\n data,\n cache: cache || undefined,\n logs: result.data?.logs ? CacheMetadataParser.parseLogsForMetadata(result.data.logs) : undefined\n };\n }\n\n /**\n * Returns the type of the stream\n */\n public async getType(\n stream: StreamLocator,\n ): Promise<StreamType> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.TypeKey);\n\n if (!result) {\n throw new Error(\"Failed to get stream type\");\n }\n\n const type = head(result).unwrapOrElse(() => {\n throw new Error(\n \"Failed to get stream type. Check if the stream is initialized.\",\n );\n });\n\n const validTypes = [StreamType.Primitive, StreamType.Composed];\n\n if (!validTypes.includes(type.value as StreamType)) {\n throw new Error(`Invalid stream type: ${type.value}`);\n }\n\n return type.value as StreamType;\n }\n\n /**\n * Returns the first record of the stream\n * @deprecated Use getFirstRecord(stream, options?) to leverage cache support and future-proof parameter handling.\n */\n public async getFirstRecord(\n input: GetFirstRecordInput,\n ): Promise<StreamRecord | null>;\n public async getFirstRecord(\n stream: StreamLocator,\n options?: GetFirstRecordOptions\n ): Promise<CacheAwareResponse<StreamRecord | null>>;\n public async getFirstRecord(\n inputOrStream: GetFirstRecordInput | StreamLocator,\n options?: GetFirstRecordOptions\n ): Promise<StreamRecord | null | CacheAwareResponse<StreamRecord | null>> {\n // Handle backward compatibility\n if ('stream' in inputOrStream) {\n // Legacy call format\n const input = inputOrStream as GetFirstRecordInput;\n if (!Action._legacyWarnEmitted.getFirstRecord) {\n Action._legacyWarnEmitted.getFirstRecord = true;\n if (typeof console !== 'undefined' && console.warn) {\n console.warn('[TN SDK] Deprecated signature: getFirstRecord(input). Use getFirstRecord(stream, options?) instead.');\n }\n }\n const result = await this.call<{ event_time: number; value: string }[]>(\n \"get_first_record\",\n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $after: input.after,\n $frozen_at: input.frozenAt,\n }\n );\n\n return result\n .mapRight(head)\n .mapRight((result) =>\n result\n .map((result) => ({\n eventTime: result.event_time,\n value: result.value,\n }))\n .unwrapOr(null),\n )\n .throw();\n }\n \n // New cache-aware call format\n const stream = inputOrStream as StreamLocator;\n \n // Validate options if provided\n if (options) {\n CacheValidation.validateGetFirstRecordOptions(options);\n }\n \n const params: any = {\n $data_provider: stream.dataProvider.getAddress(),\n $stream_id: stream.streamId.getId(),\n $after: options?.after,\n $frozen_at: options?.frozenAt,\n };\n \n if (options?.useCache !== undefined) {\n params.$use_cache = options.useCache;\n }\n \n const result = await this.kwilClient.call(\n {\n namespace: \"main\",\n name: \"get_first_record\",\n inputs: params,\n },\n this.kwilSigner,\n );\n \n if (result.status !== 200) {\n throw new Error(`Failed to get first record: ${result.status}`);\n }\n \n const rawData = result.data?.result as { event_time: number; value: string }[];\n const data = rawData && rawData.length > 0 ? {\n eventTime: rawData[0].event_time,\n value: rawData[0].value,\n } : null;\n \n let cache = CacheMetadataParser.extractFromResponse(result);\n \n // Enhance cache metadata with SDK-provided context\n if (cache) {\n cache = {\n ...cache,\n streamId: stream.streamId.getId(),\n dataProvider: stream.dataProvider.getAddress(),\n frozenAt: options?.frozenAt,\n rowsServed: data ? 1 : 0\n };\n }\n \n return {\n data,\n cache: cache || undefined,\n logs: result.data?.logs ? CacheMetadataParser.parseLogsForMetadata(result.data.logs) : undefined\n };\n }\n\n protected async setMetadata<K extends MetadataKey>(\n stream: StreamLocator,\n key: K,\n value: MetadataValueTypeForKey<K>,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.executeWithNamedParams(\"insert_metadata\", [{\n $data_provider: stream.dataProvider.getAddress(),\n $stream_id: stream.streamId.getId(),\n $key: key,\n $value: value,\n $val_type: MetadataKeyValueMap[key],\n },\n ]);\n }\n\n protected async getMetadata<K extends MetadataKey>(\n stream: StreamLocator,\n key: K,\n // onlyLatest: boolean = true,\n filteredRef?: string,\n limit?: number,\n offset?: number,\n orderBy?: string,\n ): Promise<\n { rowId: string; value: MetadataValueTypeForKey<K>; createdAt: number }[]\n > {\n const result = await this.call<\n {\n row_id: string;\n value_i: number;\n value_f: string;\n value_b: boolean;\n value_s: string;\n value_ref: string;\n created_at: number;\n }[]\n >(\"get_metadata\", {\n $data_provider: stream.dataProvider.getAddress(),\n $stream_id: stream.streamId.getId(),\n $key: key,\n $ref: filteredRef,\n $limit: limit,\n $offset: offset,\n $order_by: orderBy,\n },\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n rowId: row.row_id,\n value: row[\n MetadataTableKey[MetadataKeyValueMap[key as MetadataKey]]\n ] as MetadataValueTypeForKey<K>,\n createdAt: row.created_at,\n })),\n )\n .throw();\n }\n\n /**\n * Sets the read visibility of the stream\n */\n public async setReadVisibility(\n stream: StreamLocator,\n visibility: VisibilityEnum,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.setMetadata(\n stream,\n MetadataKey.ReadVisibilityKey,\n visibility.toString(),\n );\n }\n\n /**\n * Returns the read visibility of the stream\n */\n public async getReadVisibility(\n stream: StreamLocator,\n ): Promise<VisibilityEnum | null> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.ReadVisibilityKey);\n\n return head(result)\n .map((row) => toVisibilityEnum(row.value))\n .unwrapOr(null);\n }\n\n /**\n * Sets the compose visibility of the stream\n */\n public async setComposeVisibility(\n stream: StreamLocator,\n visibility: VisibilityEnum,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.setMetadata(\n stream,\n MetadataKey.ComposeVisibilityKey,\n visibility.toString(),\n );\n }\n\n /**\n * Returns the compose visibility of the stream\n */\n public async getComposeVisibility(\n stream: StreamLocator,\n ): Promise<VisibilityEnum | null> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.ComposeVisibilityKey);\n\n return head(result)\n .map((row) => toVisibilityEnum(row.value))\n .unwrapOr(null);\n }\n\n /**\n * Allows a wallet to read the stream\n */\n public async allowReadWallet(\n stream: StreamLocator,\n wallet: EthereumAddress,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.setMetadata(\n stream,\n MetadataKey.AllowReadWalletKey,\n wallet.getAddress(),\n );\n }\n\n /**\n * Disables a wallet from reading the stream\n */\n public async disableReadWallet(\n stream: StreamLocator,\n wallet: EthereumAddress,\n ): Promise<GenericResponse<TxReceipt>> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.AllowReadWalletKey,\n wallet.getAddress(),\n );\n\n const row_id = head(result)\n .map((row) => row.rowId)\n .unwrapOr(null);\n\n if (!row_id) {\n throw new Error(\"Wallet not found in allowed list\");\n }\n\n return await this.disableMetadata(stream, row_id);\n }\n\n /**\n * Allows a stream to use this stream as child\n */\n public async allowComposeStream(\n stream: StreamLocator,\n wallet: StreamLocator,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.setMetadata(\n stream,\n MetadataKey.AllowComposeStreamKey,\n wallet.streamId.getId(),\n );\n }\n\n /**\n * Disables a stream from using this stream as child\n */\n public async disableComposeStream(\n stream: StreamLocator,\n wallet: StreamLocator,\n ): Promise<GenericResponse<TxReceipt>> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.AllowComposeStreamKey,\n wallet.toString(),\n );\n\n const row_id = head(result)\n .map((row) => row.rowId)\n .unwrapOr(null);\n\n if (!row_id) {\n throw new Error(\"Stream not found in allowed list\");\n }\n\n return await this.disableMetadata(stream, row_id);\n }\n\n protected async disableMetadata(\n stream: StreamLocator,\n rowId: string,\n ): Promise<GenericResponse<TxReceipt>> {\n return await this.executeWithNamedParams(\"disable_metadata\", [{\n $data_provider: stream.dataProvider.getAddress(),\n $stream_id: stream.streamId.getId(),\n $row_id: rowId,\n }]);\n }\n\n /**\n * Returns the wallets allowed to read the stream\n */\n public async getAllowedReadWallets(\n stream: StreamLocator,\n ): Promise<EthereumAddress[]> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.AllowReadWalletKey);\n\n return result\n .filter((row) => row.value)\n .map((row) => new EthereumAddress(row.value));\n }\n\n /**\n * Returns the streams allowed to compose the stream\n */\n public async getAllowedComposeStreams(\n stream: StreamLocator,\n ): Promise<StreamLocator[]> {\n const result = await this.getMetadata(\n stream,\n MetadataKey.AllowComposeStreamKey);\n\n return result\n .filter((row) => row.value)\n .map((row) => {\n const [streamId, dataProvider] = row.value.split(\":\");\n return {\n streamId: StreamId.fromString(streamId).throw(),\n dataProvider: new EthereumAddress(dataProvider),\n };\n });\n }\n\n /**\n * Returns the index change of the stream within the given date range\n * @deprecated Use getIndexChange(stream, options) to leverage cache support and future-proof parameter handling.\n */\n public async getIndexChange(\n input: GetIndexChangeInput,\n ): Promise<StreamRecord[]>;\n public async getIndexChange(\n stream: StreamLocator,\n options: GetIndexChangeOptions\n ): Promise<CacheAwareResponse<StreamRecord[]>>;\n public async getIndexChange(\n inputOrStream: GetIndexChangeInput | StreamLocator,\n options?: GetIndexChangeOptions\n ): Promise<StreamRecord[] | CacheAwareResponse<StreamRecord[]>> {\n // Handle backward compatibility\n if ('stream' in inputOrStream) {\n // Legacy call format\n const input = inputOrStream as GetIndexChangeInput;\n if (!Action._legacyWarnEmitted.getIndexChange) {\n Action._legacyWarnEmitted.getIndexChange = true;\n if (typeof console !== 'undefined' && console.warn) {\n console.warn('[TN SDK] Deprecated signature: getIndexChange(input). Use getIndexChange(stream, options?) instead.');\n }\n }\n const result = await this.call<{ event_time: number; value: string }[]>(\n \"get_index_change\", \n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $from: input.from,\n $to: input.to,\n $frozen_at: input.frozenAt,\n $base_time: input.baseTime,\n $time_interval: input.timeInterval,\n }\n );\n\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n \n // New cache-aware call format\n const stream = inputOrStream as StreamLocator;\n if (!options) {\n throw new Error('Options parameter is required for cache-aware getIndexChange');\n }\n \n // Validate options\n CacheValidation.validateGetIndexChangeOptions(options);\n CacheValidation.validateTimeRange(options.from, options.to);\n \n const params: any = {\n $data_provider: stream.dataProvider.getAddress(),\n $stream_id: stream.streamId.getId(),\n $from: options.from,\n $to: options.to,\n $frozen_at: options.frozenAt,\n $base_time: options.baseTime,\n $time_interval: options.timeInterval,\n };\n \n if (options.useCache !== undefined) {\n params.$use_cache = options.useCache;\n }\n \n const result = await this.kwilClient.call(\n {\n namespace: \"main\",\n name: \"get_index_change\",\n inputs: params,\n },\n this.kwilSigner,\n );\n \n if (result.status !== 200) {\n throw new Error(`Failed to get index change: ${result.status}`);\n }\n \n const data = (result.data?.result as { event_time: number; value: string }[]).map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n }));\n \n let cache = CacheMetadataParser.extractFromResponse(result);\n \n // Enhance cache metadata with SDK-provided context\n if (cache) {\n cache = {\n ...cache,\n streamId: stream.streamId.getId(),\n dataProvider: stream.dataProvider.getAddress(),\n from: options.from,\n to: options.to,\n frozenAt: options.frozenAt,\n rowsServed: data.length\n };\n }\n \n return {\n data,\n cache: cache || undefined,\n logs: result.data?.logs ? CacheMetadataParser.parseLogsForMetadata(result.data.logs) : undefined\n };\n }\n\n /**\n * A custom method that accepts the procedure name and the input of GetRecordInput\n * Returns the result of the procedure in the same format as StreamRecord\n * I.e. a custom procedure named \"get_price\" that returns a list of date_value and value\n * can be called with customGetProcedure(\"get_price\", { dateFrom: \"2021-01-01\", dateTo: \"2021-01-31\" })\n */\n public async customGetProcedure(\n procedure: string,\n input: GetRecordInput,\n ): Promise<StreamRecord[]> {\n const result = await this.call<{ event_time: number; value: string }[]>(\n procedure,\n {\n $data_provider: input.stream.dataProvider.getAddress(),\n $stream_id: input.stream.streamId.getId(),\n $from: input.from,\n $to: input.to,\n $frozen_at: input.frozenAt\n }\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n\n /**\n * A custom method that accepts the procedure name and custom input of type Record<string, any>\n * Returns the result of the procedure in the same format as StreamRecord\n * I.e. a custom procedure named \"get_custom_index\" that returns a list of date_value and value\n * can be called with customProcedureWithArgs(\"get_custom_index\", { $customArg1: \"value1\", $customArg2: \"value2\" })\n * where $customArg1 and $customArg2 are the arguments of the procedure\n * @param procedure\n * @param args\n */\n public async customProcedureWithArgs(\n procedure: string,\n args: Record<string, ValueType | ValueType[]>,\n ){\n const result = await this.call<{ event_time: number; value: string }[]>(\n procedure,\n args\n );\n return result\n .mapRight((result) =>\n result.map((row) => ({\n eventTime: row.event_time,\n value: row.value,\n })),\n )\n .throw();\n }\n\n /**\n * Returns the size of database\n */\n public async getDatabaseSize(): Promise<BigInt> {\n const result = await this.call<{ database_size: BigInt }[]>(\"get_database_size\", {})\n return result\n .map((rows) => {\n const raw = rows[0].database_size;\n const asBigInt = BigInt(raw.toString());\n return asBigInt;\n }).throw();\n }\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,uBAAuB;AAIvB,6BAAgC;AAChC,kBAAqB;AACrB,sBAAyB;AACzB,wBAAiD;AACjD,iCAAoC;AACpC,6BAAgC;AAChC,4BAMO;AA2BA,IAAM,SAAN,MAAM,QAAO;AAAA,EACR;AAAA,EACA;AAAA;AAAA,EAEV,OAAe,qBAA8C;AAAA,IAC3D,WAAW;AAAA,IACX,UAAU;AAAA,IACV,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,EAClB;AAAA,EACA,YACE,YACA,YACA;AACA,SAAK,aAAa;AAClB,SAAK,aAAa;AAAA,EACpB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAgB,uBACd,QACA,QACqC;AACrC,WAAO,KAAK,WAAW;AAAA,MAAQ;AAAA,QACzB,WAAW;AAAA,QACX,MAAM;AAAA,QACN;AAAA,QACA,aAAa,wCAAwC,MAAM;AAAA,MAC7D;AAAA,MACA,KAAK;AAAA,IACL;AAAA,EACN;AAAA;AAAA;AAAA;AAAA,EAKE,MAAgB,sBACZ,QACA,cAAuB,OACY;AACnC,WAAO,KAAK,WAAW,QAAQ,QAAQ,KAAK,YAAY,WAAW;AAAA,EACvE;AAAA;AAAA;AAAA;AAAA,EAKF,MAAgB,KACd,QACA,QAC4B;AAC5B,UAAM,SAAS,MAAM,KAAK,WAAW;AAAA,MACnC;AAAA,QACE,WAAW;AAAA,QACX,MAAM;AAAA,QACN;AAAA,MACF;AAAA,MACA,KAAK;AAAA,IACP;AAEA,QAAI,OAAO,WAAW,KAAK;AACzB,aAAO,wBAAO,KAAK,OAAO,MAAM;AAAA,IAClC;AAEA,WAAO,wBAAO,MAAM,OAAO,MAAM,MAAW;AAAA,EAC9C;AAAA,EAOA,MAAa,UACX,eACA,SAC8D;AAE9D,QAAI,YAAY,eAAe;AAE7B,YAAM,QAAQ;AAEd,UAAI,CAAC,QAAO,mBAAmB,WAAW;AACxC,gBAAO,mBAAmB,YAAY;AACtC,YAAI,OAAO,YAAY,eAAe,QAAQ,MAAM;AAClD,kBAAQ,KAAK,2FAA2F;AAAA,QAC1G;AAAA,MACF;AACA,YAAMA,UAAS,MAAM,SAAS,MAAM,SAAS;AAC7C,YAAMC,UAAS,MAAM,KAAK;AAAA,QACtBD,UAAS;AAAA,QACT;AAAA,UACE,gBAAgB,MAAM,OAAO,aAAa,WAAW;AAAA,UACrD,YAAY,MAAM,OAAO,SAAS,MAAM;AAAA,UACxC,OAAO,MAAM;AAAA,UACb,KAAK,MAAM;AAAA,UACX,YAAY,MAAM;AAAA,QACpB;AAAA,MACJ;AACA,aAAOC,QACJ;AAAA,QAAS,CAACA,YACTA,QAAO,IAAI,CAAC,SAAS;AAAA,UACnB,WAAW,IAAI;AAAA,UACf,OAAO,IAAI;AAAA,QACb,EAAE;AAAA,MACJ,EACC,MAAM;AAAA,IACX;AAGA,UAAM,SAAS;AAGf,QAAI,SAAS;AACX,6CAAgB,yBAAyB,OAAO;AAChD,6CAAgB,kBAAkB,QAAQ,MAAM,QAAQ,EAAE;AAAA,IAC5D;AAEA,UAAM,SAAS,SAAS,SAAS,QAAQ,SAAS;AAClD,UAAM,SAAc;AAAA,MAClB,gBAAgB,OAAO,aAAa,WAAW;AAAA,MAC/C,YAAY,OAAO,SAAS,MAAM;AAAA,MAClC,OAAO,SAAS;AAAA,MAChB,KAAK,SAAS;AAAA,MACd,YAAY,SAAS;AAAA,IACvB;AAEA,QAAI,SAAS,aAAa,QAAW;AACnC,aAAO,aAAa,QAAQ;AAAA,IAC9B;AAEA,UAAM,SAAS,MAAM,KAAK,WAAW;AAAA,MACnC;AAAA,QACE,WAAW;AAAA,QACX,MAAM,SAAS;AAAA,QACf,QAAQ;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACP;AAEA,QAAI,OAAO,WAAW,KAAK;AACzB,YAAM,IAAI,MAAM,yBAAyB,OAAO,MAAM,EAAE;AAAA,IAC1D;AAEA,UAAM,QAAQ,OAAO,MAAM,QAAmD,IAAI,CAAC,SAAS;AAAA,MAC1F,WAAW,IAAI;AAAA,MACf,OAAO,IAAI;AAAA,IACb,EAAE;AAEF,QAAI,QAAQ,+CAAoB,oBAAoB,MAAM;AAG1D,QAAI,OAAO;AACT,cAAQ;AAAA,QACN,GAAG;AAAA,QACH,UAAU,OAAO,SAAS,MAAM;AAAA,QAChC,cAAc,OAAO,aAAa,WAAW;AAAA,QAC7C,MAAM,SAAS;AAAA,QACf,IAAI,SAAS;AAAA,QACb,UAAU,SAAS;AAAA,QACnB,YAAY,KAAK;AAAA,MACnB;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA,OAAO,SAAS;AAAA,MAChB,MAAM,OAAO,MAAM,OAAO,+CAAoB,qBAAqB,OAAO,KAAK,IAAI,IAAI;AAAA,IACzF;AAAA,EACF;AAAA,EAQA,MAAa,SACX,eACA,SAC8D;AAE9D,QAAI,YAAY,eAAe;AAE7B,YAAM,QAAQ;AACd,UAAI,CAAC,QAAO,mBAAmB,UAAU;AACvC,gBAAO,mBAAmB,WAAW;AACrC,YAAI,OAAO,YAAY,eAAe,QAAQ,MAAM;AAClD,kBAAQ,KAAK,yFAAyF;AAAA,QACxG;AAAA,MACF;AACA,YAAMD,UAAS,MAAM,SAAS,MAAM,SAAS;AAC7C,YAAMC,UAAS,MAAM,KAAK;AAAA,QACxBD,UAAS;AAAA,QACP;AAAA,UACE,gBAAgB,MAAM,OAAO,aAAa,WAAW;AAAA,UACrD,YAAY,MAAM,OAAO,SAAS,MAAM;AAAA,UACxC,OAAO,MAAM;AAAA,UACb,KAAK,MAAM;AAAA,UACX,YAAY,MAAM;AAAA,UAClB,YAAY,MAAM;AAAA,QACpB;AAAA,MACJ;AACA,aAAOC,QACJ;AAAA,QAAS,CAACA,YACTA,QAAO,IAAI,CAAC,SAAS;AAAA,UACnB,WAAW,IAAI;AAAA,UACf,OAAO,IAAI;AAAA,QACb,EAAE;AAAA,MACJ,EACC,MAAM;AAAA,IACX;AAGA,UAAM,SAAS;AAGf,QAAI,SAAS;AACX,6CAAgB,wBAAwB,OAAO;AAC/C,6CAAgB,kBAAkB,QAAQ,MAAM,QAAQ,EAAE;AAAA,IAC5D;AAEA,UAAM,SAAS,SAAS,SAAS,QAAQ,SAAS;AAClD,UAAM,SAAc;AAAA,MAClB,gBAAgB,OAAO,aAAa,WAAW;AAAA,MAC/C,YAAY,OAAO,SAAS,MAAM;AAAA,MAClC,OAAO,SAAS;AAAA,MAChB,KAAK,SAAS;AAAA,MACd,YAAY,SAAS;AAAA,MACrB,YAAY,SAAS;AAAA,IACvB;AAEA,QAAI,SAAS,aAAa,QAAW;AACnC,aAAO,aAAa,QAAQ;AAAA,IAC9B;AAEA,UAAM,SAAS,MAAM,KAAK,WAAW;AAAA,MACnC;AAAA,QACE,WAAW;AAAA,QACX,MAAM,SAAS;AAAA,QACf,QAAQ;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACP;AAEA,QAAI,OAAO,WAAW,KAAK;AACzB,YAAM,IAAI,MAAM,wBAAwB,OAAO,MAAM,EAAE;AAAA,IACzD;AAEA,UAAM,QAAQ,OAAO,MAAM,QAAmD,IAAI,CAAC,SAAS;AAAA,MAC1F,WAAW,IAAI;AAAA,MACf,OAAO,IAAI;AAAA,IACb,EAAE;AAEF,QAAI,QAAQ,+CAAoB,oBAAoB,MAAM;AAG1D,QAAI,OAAO;AACT,cAAQ;AAAA,QACN,GAAG;AAAA,QACH,UAAU,OAAO,SAAS,MAAM;AAAA,QAChC,cAAc,OAAO,aAAa,WAAW;AAAA,QAC7C,MAAM,SAAS;AAAA,QACf,IAAI,SAAS;AAAA,QACb,UAAU,SAAS;AAAA,QACnB,YAAY,KAAK;AAAA,MACnB;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA,OAAO,SAAS;AAAA,MAChB,MAAM,OAAO,MAAM,OAAO,+CAAoB,qBAAqB,OAAO,KAAK,IAAI,IAAI;AAAA,IACzF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,QACT,QACmB;AACrB,UAAM,SAAS,MAAM,KAAK;AAAA,MACtB;AAAA,MACA,kCAAY;AAAA,IAAO;AAEvB,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,2BAA2B;AAAA,IAC7C;AAEA,UAAM,WAAO,kBAAK,MAAM,EAAE,aAAa,MAAM;AAC3C,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF,CAAC;AAED,UAAM,aAAa,CAAC,iCAAW,WAAW,iCAAW,QAAQ;AAE7D,QAAI,CAAC,WAAW,SAAS,KAAK,KAAmB,GAAG;AAClD,YAAM,IAAI,MAAM,wBAAwB,KAAK,KAAK,EAAE;AAAA,IACtD;AAEA,WAAO,KAAK;AAAA,EACd;AAAA,EAaA,MAAa,eACX,eACA,SACwE;AAExE,QAAI,YAAY,eAAe;AAE7B,YAAM,QAAQ;AACd,UAAI,CAAC,QAAO,mBAAmB,gBAAgB;AAC7C,gBAAO,mBAAmB,iBAAiB;AAC3C,YAAI,OAAO,YAAY,eAAe,QAAQ,MAAM;AAClD,kBAAQ,KAAK,qGAAqG;AAAA,QACpH;AAAA,MACF;AACA,YAAMA,UAAS,MAAM,KAAK;AAAA,QACxB;AAAA,QACE;AAAA,UACI,gBAAgB,MAAM,OAAO,aAAa,WAAW;AAAA,UACrD,YAAY,MAAM,OAAO,SAAS,MAAM;AAAA,UACxC,QAAQ,MAAM;AAAA,UACd,YAAY,MAAM;AAAA,QACtB;AAAA,MACJ;AAEA,aAAOA,QACJ,SAAS,gBAAI,EACb;AAAA,QAAS,CAACA,YACTA,QACG,IAAI,CAACA,aAAY;AAAA,UAChB,WAAWA,QAAO;AAAA,UAClB,OAAOA,QAAO;AAAA,QAChB,EAAE,EACD,SAAS,IAAI;AAAA,MAClB,EACC,MAAM;AAAA,IACX;AAGA,UAAM,SAAS;AAGf,QAAI,SAAS;AACX,6CAAgB,8BAA8B,OAAO;AAAA,IACvD;AAEA,UAAM,SAAc;AAAA,MAClB,gBAAgB,OAAO,aAAa,WAAW;AAAA,MAC/C,YAAY,OAAO,SAAS,MAAM;AAAA,MAClC,QAAQ,SAAS;AAAA,MACjB,YAAY,SAAS;AAAA,IACvB;AAEA,QAAI,SAAS,aAAa,QAAW;AACnC,aAAO,aAAa,QAAQ;AAAA,IAC9B;AAEA,UAAM,SAAS,MAAM,KAAK,WAAW;AAAA,MACnC;AAAA,QACE,WAAW;AAAA,QACX,MAAM;AAAA,QACN,QAAQ;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACP;AAEA,QAAI,OAAO,WAAW,KAAK;AACzB,YAAM,IAAI,MAAM,+BAA+B,OAAO,MAAM,EAAE;AAAA,IAChE;AAEA,UAAM,UAAU,OAAO,MAAM;AAC7B,UAAM,OAAO,WAAW,QAAQ,SAAS,IAAI;AAAA,MAC3C,WAAW,QAAQ,CAAC,EAAE;AAAA,MACtB,OAAO,QAAQ,CAAC,EAAE;AAAA,IACpB,IAAI;AAEJ,QAAI,QAAQ,+CAAoB,oBAAoB,MAAM;AAG1D,QAAI,OAAO;AACT,cAAQ;AAAA,QACN,GAAG;AAAA,QACH,UAAU,OAAO,SAAS,MAAM;AAAA,QAChC,cAAc,OAAO,aAAa,WAAW;AAAA,QAC7C,UAAU,SAAS;AAAA,QACnB,YAAY,OAAO,IAAI;AAAA,MACzB;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA,OAAO,SAAS;AAAA,MAChB,MAAM,OAAO,MAAM,OAAO,+CAAoB,qBAAqB,OAAO,KAAK,IAAI,IAAI;AAAA,IACzF;AAAA,EACF;AAAA,EAEA,MAAgB,YACd,QACA,KACA,OACqC;AACrC,WAAO,MAAM,KAAK,uBAAuB,mBAAmB;AAAA,MAAC;AAAA,QACzD,gBAAgB,OAAO,aAAa,WAAW;AAAA,QAC/C,YAAY,OAAO,SAAS,MAAM;AAAA,QAClC,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,WAAW,0CAAoB,GAAG;AAAA,MAClC;AAAA,IACJ,CAAC;AAAA,EACH;AAAA,EAEA,MAAgB,YACd,QACA,KAEA,aACA,OACA,QACA,SAGA;AACA,UAAM,SAAS,MAAM,KAAK;AAAA,MAUxB;AAAA,MAAgB;AAAA,QACd,gBAAgB,OAAO,aAAa,WAAW;AAAA,QAC/C,YAAY,OAAO,SAAS,MAAM;AAAA,QAClC,MAAM;AAAA,QACN,MAAM;AAAA,QACN,QAAQ;AAAA,QACR,SAAS;AAAA,QACT,WAAW;AAAA,MACX;AAAA,IACJ;AACA,WAAO,OACJ;AAAA,MAAS,CAACA,YACTA,QAAO,IAAI,CAAC,SAAS;AAAA,QACnB,OAAO,IAAI;AAAA,QACX,OAAO,IACL,uCAAiB,0CAAoB,GAAkB,CAAC,CAC1D;AAAA,QACA,WAAW,IAAI;AAAA,MACjB,EAAE;AAAA,IACJ,EACC,MAAM;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,kBACX,QACA,YACqC;AACrC,WAAO,MAAM,KAAK;AAAA,MACd;AAAA,MACF,kCAAY;AAAA,MACZ,WAAW,SAAS;AAAA,IACtB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,kBACT,QAC8B;AAChC,UAAM,SAAS,MAAM,KAAK;AAAA,MACtB;AAAA,MACA,kCAAY;AAAA,IAAiB;AAEjC,eAAO,kBAAK,MAAM,EACf,IAAI,CAAC,YAAQ,oCAAiB,IAAI,KAAK,CAAC,EACxC,SAAS,IAAI;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,qBACX,QACA,YACqC;AACrC,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kCAAY;AAAA,MACZ,WAAW,SAAS;AAAA,IACtB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,qBACT,QAC8B;AAChC,UAAM,SAAS,MAAM,KAAK;AAAA,MACxB;AAAA,MACA,kCAAY;AAAA,IAAoB;AAElC,eAAO,kBAAK,MAAM,EACf,IAAI,CAAC,YAAQ,oCAAiB,IAAI,KAAK,CAAC,EACxC,SAAS,IAAI;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,gBACX,QACA,QACqC;AACrC,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kCAAY;AAAA,MACZ,OAAO,WAAW;AAAA,IACpB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,kBACX,QACA,QACqC;AACrC,UAAM,SAAS,MAAM,KAAK;AAAA,MACxB;AAAA,MACA,kCAAY;AAAA,MACZ,OAAO,WAAW;AAAA,IACpB;AAEA,UAAM,aAAS,kBAAK,MAAM,EACvB,IAAI,CAAC,QAAQ,IAAI,KAAK,EACtB,SAAS,IAAI;AAEhB,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAEA,WAAO,MAAM,KAAK,gBAAgB,QAAQ,MAAM;AAAA,EAClD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,mBACX,QACA,QACqC;AACrC,WAAO,MAAM,KAAK;AAAA,MAChB;AAAA,MACA,kCAAY;AAAA,MACZ,OAAO,SAAS,MAAM;AAAA,IACxB;AAAA,EACF;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,qBACX,QACA,QACqC;AACrC,UAAM,SAAS,MAAM,KAAK;AAAA,MACxB;AAAA,MACA,kCAAY;AAAA,MACZ,OAAO,SAAS;AAAA,IAClB;AAEA,UAAM,aAAS,kBAAK,MAAM,EACvB,IAAI,CAAC,QAAQ,IAAI,KAAK,EACtB,SAAS,IAAI;AAEhB,QAAI,CAAC,QAAQ;AACX,YAAM,IAAI,MAAM,kCAAkC;AAAA,IACpD;AAEA,WAAO,MAAM,KAAK,gBAAgB,QAAQ,MAAM;AAAA,EAClD;AAAA,EAEA,MAAgB,gBACd,QACA,OACqC;AACrC,WAAO,MAAM,KAAK,uBAAuB,oBAAoB,CAAC;AAAA,MACtD,gBAAgB,OAAO,aAAa,WAAW;AAAA,MAC/C,YAAY,OAAO,SAAS,MAAM;AAAA,MAClC,SAAS;AAAA,IACjB,CAAC,CAAC;AAAA,EACJ;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,sBACX,QAC4B;AAC5B,UAAM,SAAS,MAAM,KAAK;AAAA,MACtB;AAAA,MACA,kCAAY;AAAA,IAAkB;AAElC,WAAO,OACJ,OAAO,CAAC,QAAQ,IAAI,KAAK,EACzB,IAAI,CAAC,QAAQ,IAAI,uCAAgB,IAAI,KAAK,CAAC;AAAA,EAChD;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,yBACX,QAC0B;AAC1B,UAAM,SAAS,MAAM,KAAK;AAAA,MACtB;AAAA,MACA,kCAAY;AAAA,IAAqB;AAErC,WAAO,OACJ,OAAO,CAAC,QAAQ,IAAI,KAAK,EACzB,IAAI,CAAC,QAAQ;AACZ,YAAM,CAAC,UAAU,YAAY,IAAI,IAAI,MAAM,MAAM,GAAG;AACpD,aAAO;AAAA,QACL,UAAU,yBAAS,WAAW,QAAQ,EAAE,MAAM;AAAA,QAC9C,cAAc,IAAI,uCAAgB,YAAY;AAAA,MAChD;AAAA,IACF,CAAC;AAAA,EACL;AAAA,EAaA,MAAa,eACX,eACA,SAC8D;AAE9D,QAAI,YAAY,eAAe;AAE7B,YAAM,QAAQ;AACd,UAAI,CAAC,QAAO,mBAAmB,gBAAgB;AAC7C,gBAAO,mBAAmB,iBAAiB;AAC3C,YAAI,OAAO,YAAY,eAAe,QAAQ,MAAM;AAClD,kBAAQ,KAAK,qGAAqG;AAAA,QACpH;AAAA,MACF;AACA,YAAMA,UAAS,MAAM,KAAK;AAAA,QACxB;AAAA,QACE;AAAA,UACE,gBAAgB,MAAM,OAAO,aAAa,WAAW;AAAA,UACrD,YAAY,MAAM,OAAO,SAAS,MAAM;AAAA,UACxC,OAAO,MAAM;AAAA,UACb,KAAK,MAAM;AAAA,UACX,YAAY,MAAM;AAAA,UAClB,YAAY,MAAM;AAAA,UAClB,gBAAgB,MAAM;AAAA,QACxB;AAAA,MACJ;AAEA,aAAOA,QACJ;AAAA,QAAS,CAACA,YACTA,QAAO,IAAI,CAAC,SAAS;AAAA,UACnB,WAAW,IAAI;AAAA,UACf,OAAO,IAAI;AAAA,QACb,EAAE;AAAA,MACJ,EACC,MAAM;AAAA,IACX;AAGA,UAAM,SAAS;AACf,QAAI,CAAC,SAAS;AACZ,YAAM,IAAI,MAAM,8DAA8D;AAAA,IAChF;AAGA,2CAAgB,8BAA8B,OAAO;AACrD,2CAAgB,kBAAkB,QAAQ,MAAM,QAAQ,EAAE;AAE1D,UAAM,SAAc;AAAA,MAClB,gBAAgB,OAAO,aAAa,WAAW;AAAA,MAC/C,YAAY,OAAO,SAAS,MAAM;AAAA,MAClC,OAAO,QAAQ;AAAA,MACf,KAAK,QAAQ;AAAA,MACb,YAAY,QAAQ;AAAA,MACpB,YAAY,QAAQ;AAAA,MACpB,gBAAgB,QAAQ;AAAA,IAC1B;AAEA,QAAI,QAAQ,aAAa,QAAW;AAClC,aAAO,aAAa,QAAQ;AAAA,IAC9B;AAEA,UAAM,SAAS,MAAM,KAAK,WAAW;AAAA,MACnC;AAAA,QACE,WAAW;AAAA,QACX,MAAM;AAAA,QACN,QAAQ;AAAA,MACV;AAAA,MACA,KAAK;AAAA,IACP;AAEA,QAAI,OAAO,WAAW,KAAK;AACzB,YAAM,IAAI,MAAM,+BAA+B,OAAO,MAAM,EAAE;AAAA,IAChE;AAEA,UAAM,QAAQ,OAAO,MAAM,QAAmD,IAAI,CAAC,SAAS;AAAA,MAC1F,WAAW,IAAI;AAAA,MACf,OAAO,IAAI;AAAA,IACb,EAAE;AAEF,QAAI,QAAQ,+CAAoB,oBAAoB,MAAM;AAG1D,QAAI,OAAO;AACT,cAAQ;AAAA,QACN,GAAG;AAAA,QACH,UAAU,OAAO,SAAS,MAAM;AAAA,QAChC,cAAc,OAAO,aAAa,WAAW;AAAA,QAC7C,MAAM,QAAQ;AAAA,QACd,IAAI,QAAQ;AAAA,QACZ,UAAU,QAAQ;AAAA,QAClB,YAAY,KAAK;AAAA,MACnB;AAAA,IACF;AAEA,WAAO;AAAA,MACL;AAAA,MACA,OAAO,SAAS;AAAA,MAChB,MAAM,OAAO,MAAM,OAAO,+CAAoB,qBAAqB,OAAO,KAAK,IAAI,IAAI;AAAA,IACzF;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAQA,MAAa,mBACX,WACA,OACyB;AACzB,UAAM,SAAS,MAAM,KAAK;AAAA,MACxB;AAAA,MACE;AAAA,QACE,gBAAgB,MAAM,OAAO,aAAa,WAAW;AAAA,QACrD,YAAY,MAAM,OAAO,SAAS,MAAM;AAAA,QACxC,OAAO,MAAM;AAAA,QACb,KAAK,MAAM;AAAA,QACX,YAAY,MAAM;AAAA,MACpB;AAAA,IACJ;AACA,WAAO,OACJ;AAAA,MAAS,CAACA,YACTA,QAAO,IAAI,CAAC,SAAS;AAAA,QACnB,WAAW,IAAI;AAAA,QACf,OAAO,IAAI;AAAA,MACb,EAAE;AAAA,IACJ,EACC,MAAM;AAAA,EACX;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAYA,MAAa,wBACX,WACA,MACD;AACG,UAAM,SAAS,MAAM,KAAK;AAAA,MACtB;AAAA,MACA;AAAA,IACN;AACA,WAAO,OACJ;AAAA,MAAS,CAACA,YACTA,QAAO,IAAI,CAAC,SAAS;AAAA,QACnB,WAAW,IAAI;AAAA,QACf,OAAO,IAAI;AAAA,MACb,EAAE;AAAA,IACJ,EACC,MAAM;AAAA,EACX;AAAA;AAAA;AAAA;AAAA,EAKA,MAAa,kBAAmC;AAC9C,UAAM,SAAS,MAAM,KAAK,KAAkC,qBAAqB,CAAC,CAAC;AACnF,WAAO,OACJ,IAAI,CAAC,SAAS;AACb,YAAM,MAAM,KAAK,CAAC,EAAE;AACpB,YAAM,WAAW,OAAO,IAAI,SAAS,CAAC;AACtC,aAAO;AAAA,IACT,CAAC,EAAE,MAAM;AAAA,EACb;AACF;",
|
|
6
|
+
"names": ["prefix", "result"]
|
|
7
7
|
}
|