@render-foundation/utils 0.0.196 → 0.0.198
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/lib/cjs/assertSecrets.js +42 -0
- package/lib/cjs/assertSecrets.js.map +1 -0
- package/lib/cjs/backfiller.js +16 -16
- package/lib/cjs/backfiller.js.map +1 -1
- package/lib/cjs/burn/burnAnalysis.js +101 -0
- package/lib/cjs/burn/burnAnalysis.js.map +1 -0
- package/lib/cjs/burn/burnCalculations.js +140 -0
- package/lib/cjs/burn/burnCalculations.js.map +1 -0
- package/lib/cjs/client/onchain.js +3 -3
- package/lib/cjs/client/onchain.js.map +1 -1
- package/lib/cjs/client/pg/base.js +7 -7
- package/lib/cjs/client/pg/base.js.map +1 -1
- package/lib/cjs/client/pg/v1.js +31 -31
- package/lib/cjs/client/pg/v1.js.map +1 -1
- package/lib/cjs/client/pg/v2Client.js +179 -118
- package/lib/cjs/client/pg/v2Client.js.map +1 -1
- package/lib/cjs/client/pg/viewClient.js +6 -6
- package/lib/cjs/client/pg/viewClient.js.map +1 -1
- package/lib/cjs/client/price.js +3 -3
- package/lib/cjs/client/price.js.map +1 -1
- package/lib/cjs/client/render.js +10 -10
- package/lib/cjs/client/render.js.map +1 -1
- package/lib/cjs/client/squads.js +20 -10
- package/lib/cjs/client/squads.js.map +1 -1
- package/lib/cjs/client/trade.js +15 -12
- package/lib/cjs/client/trade.js.map +1 -1
- package/lib/cjs/client/wormhole.js +19 -9
- package/lib/cjs/client/wormhole.js.map +1 -1
- package/lib/cjs/errorReporter.js +1 -1
- package/lib/cjs/errorReporter.js.map +1 -1
- package/lib/cjs/index.js +20 -7
- package/lib/cjs/index.js.map +1 -1
- package/lib/esm/src/assertSecrets.js +39 -0
- package/lib/esm/src/assertSecrets.js.map +1 -0
- package/lib/esm/src/backfiller.js.map +1 -1
- package/lib/esm/src/burn/burnAnalysis.js +90 -0
- package/lib/esm/src/burn/burnAnalysis.js.map +1 -0
- package/lib/esm/src/burn/burnCalculations.js +124 -0
- package/lib/esm/src/burn/burnCalculations.js.map +1 -0
- package/lib/esm/src/client/onchain.js.map +1 -1
- package/lib/esm/src/client/pg/base.js.map +1 -1
- package/lib/esm/src/client/pg/v1.js.map +1 -1
- package/lib/esm/src/client/pg/v2Client.js +72 -21
- package/lib/esm/src/client/pg/v2Client.js.map +1 -1
- package/lib/esm/src/client/pg/viewClient.js.map +1 -1
- package/lib/esm/src/client/price.js.map +1 -1
- package/lib/esm/src/client/render.js.map +1 -1
- package/lib/esm/src/client/squads.js.map +1 -1
- package/lib/esm/src/client/trade.js +2 -2
- package/lib/esm/src/client/trade.js.map +1 -1
- package/lib/esm/src/client/wormhole.js.map +1 -1
- package/lib/esm/src/errorReporter.js.map +1 -1
- package/lib/esm/src/index.js +3 -0
- package/lib/esm/src/index.js.map +1 -1
- package/lib/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/src/assertSecrets.d.ts +27 -0
- package/lib/types/src/assertSecrets.d.ts.map +1 -0
- package/lib/types/src/backfiller.d.ts.map +1 -1
- package/lib/types/src/burn/burnAnalysis.d.ts +51 -0
- package/lib/types/src/burn/burnAnalysis.d.ts.map +1 -0
- package/lib/types/src/burn/burnCalculations.d.ts +52 -0
- package/lib/types/src/burn/burnCalculations.d.ts.map +1 -0
- package/lib/types/src/client/onchain.d.ts +2 -1
- package/lib/types/src/client/onchain.d.ts.map +1 -1
- package/lib/types/src/client/pg/base.d.ts.map +1 -1
- package/lib/types/src/client/pg/v1.d.ts.map +1 -1
- package/lib/types/src/client/pg/v2Client.d.ts.map +1 -1
- package/lib/types/src/client/pg/viewClient.d.ts.map +1 -1
- package/lib/types/src/client/render.d.ts.map +1 -1
- package/lib/types/src/client/squads.d.ts.map +1 -1
- package/lib/types/src/client/trade.d.ts.map +1 -1
- package/lib/types/src/client/wormhole.d.ts +1 -1
- package/lib/types/src/client/wormhole.d.ts.map +1 -1
- package/lib/types/src/dbTypesV2.d.ts +1 -1
- package/lib/types/src/dbTypesV2.d.ts.map +1 -1
- package/lib/types/src/errorReporter.d.ts.map +1 -1
- package/lib/types/src/index.d.ts +3 -0
- package/lib/types/src/index.d.ts.map +1 -1
- package/package.json +1 -1
|
@@ -15,13 +15,23 @@ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (
|
|
|
15
15
|
}) : function(o, v) {
|
|
16
16
|
o["default"] = v;
|
|
17
17
|
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || function (
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
};
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
25
35
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
26
36
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
27
37
|
return new (P || (P = Promise))(function (resolve, reject) {
|
|
@@ -92,7 +102,7 @@ const pgClient = (config) => {
|
|
|
92
102
|
const db = new kysely_1.Kysely({
|
|
93
103
|
dialect,
|
|
94
104
|
});
|
|
95
|
-
const getOrInsertEntity = (
|
|
105
|
+
const getOrInsertEntity = (db_1, p_1, ...args_1) => __awaiter(void 0, [db_1, p_1, ...args_1], void 0, function* (db, p, log = logger_1.consoleLogger) {
|
|
96
106
|
const res = (yield db
|
|
97
107
|
.selectFrom(exports.ENTITY_TABLE)
|
|
98
108
|
.select('id')
|
|
@@ -113,7 +123,7 @@ const pgClient = (config) => {
|
|
|
113
123
|
log.debug(`inserted entity ${id}`);
|
|
114
124
|
return id;
|
|
115
125
|
});
|
|
116
|
-
const getOrInsertTx = (
|
|
126
|
+
const getOrInsertTx = (db_1, p_1, ...args_1) => __awaiter(void 0, [db_1, p_1, ...args_1], void 0, function* (db, p, log = logger_1.consoleLogger) {
|
|
117
127
|
const res = yield db
|
|
118
128
|
.selectFrom(exports.SOL_TX_TABLE)
|
|
119
129
|
.select('id')
|
|
@@ -135,7 +145,7 @@ const pgClient = (config) => {
|
|
|
135
145
|
log.debug(`inserted tx ${id}`);
|
|
136
146
|
return id;
|
|
137
147
|
});
|
|
138
|
-
const getOrInsertEpoch = (
|
|
148
|
+
const getOrInsertEpoch = (db_1, p_1, ...args_1) => __awaiter(void 0, [db_1, p_1, ...args_1], void 0, function* (db, p, log = logger_1.consoleLogger) {
|
|
139
149
|
const res = yield db
|
|
140
150
|
.selectFrom(exports.EPOCH_TABLE)
|
|
141
151
|
.select('id')
|
|
@@ -163,7 +173,7 @@ const pgClient = (config) => {
|
|
|
163
173
|
log.debug(`inserted epoch ${id}`);
|
|
164
174
|
return id;
|
|
165
175
|
});
|
|
166
|
-
const getCurrentUserGrantSpend = (
|
|
176
|
+
const getCurrentUserGrantSpend = (db_1, p_1, ...args_1) => __awaiter(void 0, [db_1, p_1, ...args_1], void 0, function* (db, p, log = logger_1.consoleLogger) {
|
|
167
177
|
var _a;
|
|
168
178
|
const res = yield db
|
|
169
179
|
.selectFrom(exports.CURRENT_USER_GRANT_SPEND_TABLE)
|
|
@@ -193,7 +203,7 @@ const pgClient = (config) => {
|
|
|
193
203
|
.executeTakeFirst());
|
|
194
204
|
log.info(`set ${res.numUpdatedRows} rows. channel: ${p.channel}, ui: ${p.uiEpochId} -> totalRndr ${totalRndr} `);
|
|
195
205
|
});
|
|
196
|
-
const fetchJobs1 = (
|
|
206
|
+
const fetchJobs1 = (db_1, f_1, ...args_1) => __awaiter(void 0, [db_1, f_1, ...args_1], void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
197
207
|
let q = db.selectFrom('job').selectAll();
|
|
198
208
|
//.where('job.burn_id', 'is not', null)
|
|
199
209
|
if (f.completedAtAfter) {
|
|
@@ -223,7 +233,7 @@ const pgClient = (config) => {
|
|
|
223
233
|
insertedAt: r.inserted_at,
|
|
224
234
|
}));
|
|
225
235
|
});
|
|
226
|
-
const fetchJobs2 = (
|
|
236
|
+
const fetchJobs2 = (db_1, f_1, ...args_1) => __awaiter(void 0, [db_1, f_1, ...args_1], void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
227
237
|
let q = db.selectFrom('job').selectAll();
|
|
228
238
|
//.where('job.burn_id', 'is not', null)
|
|
229
239
|
if (f.completedAtAfter) {
|
|
@@ -257,7 +267,7 @@ const pgClient = (config) => {
|
|
|
257
267
|
});
|
|
258
268
|
});
|
|
259
269
|
});
|
|
260
|
-
const createBridgeTransfers = (
|
|
270
|
+
const createBridgeTransfers = (db_1, bts_1, ...args_1) => __awaiter(void 0, [db_1, bts_1, ...args_1], void 0, function* (db, bts, log = logger_1.consoleLogger) {
|
|
261
271
|
const sequenceNumbers = [];
|
|
262
272
|
const dbEpochIds = [];
|
|
263
273
|
for (const bt of bts) {
|
|
@@ -301,7 +311,7 @@ const pgClient = (config) => {
|
|
|
301
311
|
}
|
|
302
312
|
return { sequenceNumbers: sequenceNumbers };
|
|
303
313
|
});
|
|
304
|
-
const createPayments = (
|
|
314
|
+
const createPayments = (db_1, ps_1, ...args_1) => __awaiter(void 0, [db_1, ps_1, ...args_1], void 0, function* (db, ps, log = logger_1.consoleLogger) {
|
|
305
315
|
const ids = [];
|
|
306
316
|
const epochDbIds = [];
|
|
307
317
|
for (const p of ps) {
|
|
@@ -355,7 +365,11 @@ const pgClient = (config) => {
|
|
|
355
365
|
sig: solTx,
|
|
356
366
|
executedAt,
|
|
357
367
|
}, log);
|
|
358
|
-
|
|
368
|
+
// sol_transfer1 already has UNIQUE(sol_tx_id, from_entity_id,
|
|
369
|
+
// to_entity_id, symbol). Without ON CONFLICT a retry of the record step
|
|
370
|
+
// throws a unique violation and wedges the BullMQ job; make it an
|
|
371
|
+
// idempotent no-op and re-fetch the existing id instead.
|
|
372
|
+
let transferRow = yield db
|
|
359
373
|
.insertInto(exports.SOL_TRANSFER_TABLE)
|
|
360
374
|
.values({
|
|
361
375
|
id: dbId,
|
|
@@ -366,9 +380,23 @@ const pgClient = (config) => {
|
|
|
366
380
|
symbol,
|
|
367
381
|
amount_payed: amountPayed,
|
|
368
382
|
})
|
|
383
|
+
.onConflict((oc) => oc
|
|
384
|
+
.columns(['sol_tx_id', 'from_entity_id', 'to_entity_id', 'symbol'])
|
|
385
|
+
.doNothing())
|
|
369
386
|
.returning((eb) => ['id as id'])
|
|
370
|
-
.
|
|
371
|
-
|
|
387
|
+
.executeTakeFirst();
|
|
388
|
+
if (!transferRow) {
|
|
389
|
+
log.warn(`sol_transfer for sol_tx_id ${solTxId} ${fromEntityId}->${toEntityId} ${symbol} already exists; reusing existing id (idempotent retry)`);
|
|
390
|
+
transferRow = yield db
|
|
391
|
+
.selectFrom(exports.SOL_TRANSFER_TABLE)
|
|
392
|
+
.select((eb) => ['id as id'])
|
|
393
|
+
.where('sol_tx_id', '=', solTxId)
|
|
394
|
+
.where('from_entity_id', '=', fromEntityId)
|
|
395
|
+
.where('to_entity_id', '=', toEntityId)
|
|
396
|
+
.where('symbol', '=', symbol)
|
|
397
|
+
.executeTakeFirstOrThrow();
|
|
398
|
+
}
|
|
399
|
+
transferId = BigInt(transferRow.id);
|
|
372
400
|
}
|
|
373
401
|
ids.push({ transferId, liabilityId });
|
|
374
402
|
}
|
|
@@ -380,18 +408,18 @@ const pgClient = (config) => {
|
|
|
380
408
|
rollback: () => { },
|
|
381
409
|
trx: db,
|
|
382
410
|
},
|
|
383
|
-
startTransaction(
|
|
384
|
-
return __awaiter(this,
|
|
411
|
+
startTransaction() {
|
|
412
|
+
return __awaiter(this, arguments, void 0, function* (log = logger_1.consoleLogger) {
|
|
385
413
|
return (0, base_2.begin)(db, log);
|
|
386
414
|
});
|
|
387
415
|
},
|
|
388
|
-
createPayments(
|
|
389
|
-
return __awaiter(this,
|
|
416
|
+
createPayments(db_1, ps_1) {
|
|
417
|
+
return __awaiter(this, arguments, void 0, function* (db, ps, log = logger_1.consoleLogger) {
|
|
390
418
|
return createPayments(db.trx, ps, log);
|
|
391
419
|
});
|
|
392
420
|
},
|
|
393
|
-
fetchTransfers(
|
|
394
|
-
return __awaiter(this,
|
|
421
|
+
fetchTransfers(db_1, f_1) {
|
|
422
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
395
423
|
let lastId = undefined;
|
|
396
424
|
if (f.cursor) {
|
|
397
425
|
lastId = atob(f.cursor);
|
|
@@ -447,8 +475,8 @@ const pgClient = (config) => {
|
|
|
447
475
|
};
|
|
448
476
|
});
|
|
449
477
|
},
|
|
450
|
-
fetchEpochs(
|
|
451
|
-
return __awaiter(this,
|
|
478
|
+
fetchEpochs(db_1, f_1) {
|
|
479
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
452
480
|
let q = db.trx.selectFrom(exports.EPOCH_TABLE).selectAll();
|
|
453
481
|
if (f.channels) {
|
|
454
482
|
q = q.where('channel', 'in', f.channels);
|
|
@@ -471,9 +499,9 @@ const pgClient = (config) => {
|
|
|
471
499
|
}));
|
|
472
500
|
});
|
|
473
501
|
},
|
|
474
|
-
fetchLiabilities(
|
|
475
|
-
|
|
476
|
-
|
|
502
|
+
fetchLiabilities(db_1, f_1) {
|
|
503
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
504
|
+
var _a;
|
|
477
505
|
let offset = 0;
|
|
478
506
|
let orderBy = (_a = f.orderBy) !== null && _a !== void 0 ? _a : 'epoch.ui,liability.id';
|
|
479
507
|
if (f.cursor) {
|
|
@@ -540,8 +568,8 @@ const pgClient = (config) => {
|
|
|
540
568
|
};
|
|
541
569
|
});
|
|
542
570
|
},
|
|
543
|
-
getLiabilitiesAndTransfers(
|
|
544
|
-
return __awaiter(this,
|
|
571
|
+
getLiabilitiesAndTransfers(f_1) {
|
|
572
|
+
return __awaiter(this, arguments, void 0, function* (f, log = logger_1.consoleLogger) {
|
|
545
573
|
let lq = db
|
|
546
574
|
.selectFrom(exports.LIABILITY_TABLE)
|
|
547
575
|
.selectAll()
|
|
@@ -602,9 +630,9 @@ const pgClient = (config) => {
|
|
|
602
630
|
return { transfers, liabilities, epochs: Object.values(epochs) };
|
|
603
631
|
});
|
|
604
632
|
},
|
|
605
|
-
getOutstanding(
|
|
606
|
-
|
|
607
|
-
|
|
633
|
+
getOutstanding(f_1) {
|
|
634
|
+
return __awaiter(this, arguments, void 0, function* (f, log = logger_1.consoleLogger) {
|
|
635
|
+
var _a, _b, _c, _d, _e;
|
|
608
636
|
log.info(`getting outstanding balances for ${(_a = f.channels) !== null && _a !== void 0 ? _a : '(no channels specified)'} epoch: ${(_b = f.startEpochId.id) !== null && _b !== void 0 ? _b : '(no epoch specified)'}`);
|
|
609
637
|
let epochUi;
|
|
610
638
|
let epochEndTime;
|
|
@@ -713,9 +741,9 @@ const pgClient = (config) => {
|
|
|
713
741
|
return out;
|
|
714
742
|
});
|
|
715
743
|
},
|
|
716
|
-
fetchNodeOperatorEpoch(
|
|
717
|
-
|
|
718
|
-
|
|
744
|
+
fetchNodeOperatorEpoch(epochId_1) {
|
|
745
|
+
return __awaiter(this, arguments, void 0, function* (epochId, log = logger_1.consoleLogger) {
|
|
746
|
+
var _a;
|
|
719
747
|
const q = db
|
|
720
748
|
.selectFrom(exports.JOB_ID_TABLE)
|
|
721
749
|
.innerJoin(exports.EPOCH_TABLE, 'epoch.id', 'job_id.epoch_id')
|
|
@@ -765,14 +793,14 @@ const pgClient = (config) => {
|
|
|
765
793
|
};
|
|
766
794
|
});
|
|
767
795
|
},
|
|
768
|
-
insertEpoch(
|
|
769
|
-
return __awaiter(this,
|
|
796
|
+
insertEpoch(db_1, epoch_1) {
|
|
797
|
+
return __awaiter(this, arguments, void 0, function* (db, epoch, log = logger_1.consoleLogger) {
|
|
770
798
|
yield getOrInsertEpoch(db.trx, Object.assign(Object.assign({}, epoch), { uiEpochId: epoch.ui }), log);
|
|
771
799
|
});
|
|
772
800
|
},
|
|
773
|
-
getEpoch(
|
|
774
|
-
|
|
775
|
-
|
|
801
|
+
getEpoch(f_1) {
|
|
802
|
+
return __awaiter(this, arguments, void 0, function* (f, log = logger_1.consoleLogger) {
|
|
803
|
+
var _a;
|
|
776
804
|
const now = new Date(Date.now());
|
|
777
805
|
try {
|
|
778
806
|
let q = db
|
|
@@ -810,9 +838,9 @@ const pgClient = (config) => {
|
|
|
810
838
|
}
|
|
811
839
|
});
|
|
812
840
|
},
|
|
813
|
-
getLatestNodeOperatorEpoch(
|
|
814
|
-
|
|
815
|
-
|
|
841
|
+
getLatestNodeOperatorEpoch(f_1) {
|
|
842
|
+
return __awaiter(this, arguments, void 0, function* (f, log = logger_1.consoleLogger) {
|
|
843
|
+
var _a;
|
|
816
844
|
const now = new Date(Date.now());
|
|
817
845
|
try {
|
|
818
846
|
let q = db
|
|
@@ -852,8 +880,8 @@ const pgClient = (config) => {
|
|
|
852
880
|
}
|
|
853
881
|
});
|
|
854
882
|
},
|
|
855
|
-
saveNodeOperatorEpoch(
|
|
856
|
-
return __awaiter(this,
|
|
883
|
+
saveNodeOperatorEpoch(epochId_1, liabilities_1, jobIds_1, totalRndr_1) {
|
|
884
|
+
return __awaiter(this, arguments, void 0, function* (epochId, liabilities, jobIds, totalRndr, log = logger_1.consoleLogger) {
|
|
857
885
|
yield db
|
|
858
886
|
.transaction()
|
|
859
887
|
.setIsolationLevel('repeatable read')
|
|
@@ -889,8 +917,8 @@ const pgClient = (config) => {
|
|
|
889
917
|
return;
|
|
890
918
|
});
|
|
891
919
|
},
|
|
892
|
-
produceBurnedJobs(
|
|
893
|
-
return __awaiter(this,
|
|
920
|
+
produceBurnedJobs(jobs_1) {
|
|
921
|
+
return __awaiter(this, arguments, void 0, function* (jobs, log = logger_1.consoleLogger) {
|
|
894
922
|
yield db.transaction().execute((trx) => __awaiter(this, void 0, void 0, function* () {
|
|
895
923
|
var _a;
|
|
896
924
|
let num = BigInt(0);
|
|
@@ -913,9 +941,9 @@ const pgClient = (config) => {
|
|
|
913
941
|
}));
|
|
914
942
|
});
|
|
915
943
|
},
|
|
916
|
-
markJobsBurntWithGrant(
|
|
917
|
-
|
|
918
|
-
|
|
944
|
+
markJobsBurntWithGrant(db_1, p_1) {
|
|
945
|
+
return __awaiter(this, arguments, void 0, function* (db, p, log = logger_1.consoleLogger) {
|
|
946
|
+
var _a;
|
|
919
947
|
const solTxId = yield getOrInsertTx(db.trx, { sig: p.tx.sig, executedAt: p.tx.executedAt }, log);
|
|
920
948
|
const { id } = yield db.trx
|
|
921
949
|
.insertInto(exports.GRANT_BURN_TABLE)
|
|
@@ -946,9 +974,9 @@ const pgClient = (config) => {
|
|
|
946
974
|
return;
|
|
947
975
|
});
|
|
948
976
|
},
|
|
949
|
-
insertGrantSpend(
|
|
950
|
-
|
|
951
|
-
|
|
977
|
+
insertGrantSpend(db_1, p_1) {
|
|
978
|
+
return __awaiter(this, arguments, void 0, function* (db, p, log = logger_1.consoleLogger) {
|
|
979
|
+
var _a, _b, _c;
|
|
952
980
|
const existing = yield getCurrentUserGrantSpend(db.trx, { userId: p.userId }, log);
|
|
953
981
|
const diff = {
|
|
954
982
|
render_spent: ((_a = existing === null || existing === void 0 ? void 0 : existing.renderSpent) !== null && _a !== void 0 ? _a : BigInt(0)) + p.renderSpentDelta,
|
|
@@ -1013,9 +1041,9 @@ const pgClient = (config) => {
|
|
|
1013
1041
|
}
|
|
1014
1042
|
});
|
|
1015
1043
|
},
|
|
1016
|
-
markJobsBurnt(
|
|
1017
|
-
|
|
1018
|
-
|
|
1044
|
+
markJobsBurnt(trx_1, p_1) {
|
|
1045
|
+
return __awaiter(this, arguments, void 0, function* (trx, p, log = logger_1.consoleLogger) {
|
|
1046
|
+
var _a, _b;
|
|
1019
1047
|
if (!p.buyBurn && !p.grantBurn) {
|
|
1020
1048
|
throw new Error('no buyBurn or grantBurn');
|
|
1021
1049
|
}
|
|
@@ -1033,9 +1061,7 @@ const pgClient = (config) => {
|
|
|
1033
1061
|
rndrUsed: Number(j.rndrUsed.toString()),
|
|
1034
1062
|
})));
|
|
1035
1063
|
}
|
|
1036
|
-
const
|
|
1037
|
-
.insertInto(exports.BURN_TABLE)
|
|
1038
|
-
.values({
|
|
1064
|
+
const v = {
|
|
1039
1065
|
sol_tx_id: solTxId,
|
|
1040
1066
|
priced_at: pricedAt,
|
|
1041
1067
|
eur_to_usdc: eurToUsdc,
|
|
@@ -1046,43 +1072,78 @@ const pgClient = (config) => {
|
|
|
1046
1072
|
tags: tags.join(','),
|
|
1047
1073
|
burn_adjustment_id: burnAdjustmentId,
|
|
1048
1074
|
to_burn: toBurn,
|
|
1049
|
-
}
|
|
1050
|
-
|
|
1075
|
+
};
|
|
1076
|
+
log.debug(`inserting burn ${JSON.stringify(v)}`);
|
|
1077
|
+
// Idempotent on sol_tx_id (uniq_burn_sol_tx_id, migration 27): a retry of
|
|
1078
|
+
// the record step for the same on-chain burn is a safe no-op. On conflict
|
|
1079
|
+
// executeTakeFirst() returns undefined, so re-fetch the existing id.
|
|
1080
|
+
let burnRow = yield trx.trx
|
|
1081
|
+
.insertInto(exports.BURN_TABLE)
|
|
1082
|
+
.values(v)
|
|
1083
|
+
.onConflict((oc) => oc.column('sol_tx_id').doNothing())
|
|
1051
1084
|
.returning((eb) => ['id as id'])
|
|
1052
|
-
.
|
|
1053
|
-
|
|
1085
|
+
.executeTakeFirst();
|
|
1086
|
+
if (!burnRow) {
|
|
1087
|
+
log.warn(`burn for sol_tx_id ${solTxId} already exists; reusing existing id (idempotent retry)`);
|
|
1088
|
+
burnRow = yield trx.trx
|
|
1089
|
+
.selectFrom(exports.BURN_TABLE)
|
|
1090
|
+
.select((eb) => ['id as id'])
|
|
1091
|
+
.where('sol_tx_id', '=', solTxId)
|
|
1092
|
+
.executeTakeFirstOrThrow();
|
|
1093
|
+
}
|
|
1094
|
+
buyBurnId = Number(burnRow.id);
|
|
1054
1095
|
}
|
|
1055
1096
|
if (p.grantBurn) {
|
|
1056
1097
|
const { burned, tags } = p.grantBurn;
|
|
1057
|
-
const
|
|
1058
|
-
.insertInto(exports.GRANT_BURN_TABLE)
|
|
1059
|
-
.values({
|
|
1098
|
+
const v = {
|
|
1060
1099
|
sol_tx_id: solTxId,
|
|
1061
1100
|
burned: burned,
|
|
1062
1101
|
tags: tags === null || tags === void 0 ? void 0 : tags.join(','),
|
|
1063
|
-
}
|
|
1102
|
+
};
|
|
1103
|
+
log.debug(`inserting grant burn ${JSON.stringify(v)}`);
|
|
1104
|
+
// Idempotent on sol_tx_id (uniq_grant_burn_sol_tx_id, migration 27).
|
|
1105
|
+
let grantBurnRow = yield trx.trx
|
|
1106
|
+
.insertInto(exports.GRANT_BURN_TABLE)
|
|
1107
|
+
.values(v)
|
|
1108
|
+
.onConflict((oc) => oc.column('sol_tx_id').doNothing())
|
|
1064
1109
|
.returning((eb) => ['id as id'])
|
|
1065
|
-
.
|
|
1066
|
-
|
|
1110
|
+
.executeTakeFirst();
|
|
1111
|
+
if (!grantBurnRow) {
|
|
1112
|
+
log.warn(`grant_burn for sol_tx_id ${solTxId} already exists; reusing existing id (idempotent retry)`);
|
|
1113
|
+
grantBurnRow = yield trx.trx
|
|
1114
|
+
.selectFrom(exports.GRANT_BURN_TABLE)
|
|
1115
|
+
.select((eb) => ['id as id'])
|
|
1116
|
+
.where('sol_tx_id', '=', solTxId)
|
|
1117
|
+
.executeTakeFirstOrThrow();
|
|
1118
|
+
}
|
|
1119
|
+
grantBurnId = Number(grantBurnRow.id);
|
|
1067
1120
|
}
|
|
1068
|
-
const burnId = buyBurnId
|
|
1121
|
+
const burnId = buyBurnId;
|
|
1069
1122
|
const grantId = grantBurnId !== null && grantBurnId !== void 0 ? grantBurnId : buyBurnId;
|
|
1070
1123
|
for (const job of p.jobs) {
|
|
1124
|
+
const v = {
|
|
1125
|
+
burnId,
|
|
1126
|
+
grantId,
|
|
1127
|
+
jobId: String(job.id),
|
|
1128
|
+
buyRenderAmt: (_a = job.buyRenderAmt) !== null && _a !== void 0 ? _a : 0,
|
|
1129
|
+
grantRenderAmt: (_b = job.grantRenderAmt) !== null && _b !== void 0 ? _b : 0
|
|
1130
|
+
};
|
|
1131
|
+
log.debug(`updating job ${job.id} -> ${JSON.stringify(v)}`);
|
|
1071
1132
|
const res = yield trx.trx
|
|
1072
1133
|
.updateTable(exports.JOB_TABLE)
|
|
1073
1134
|
.where('id', '=', String(job.id))
|
|
1074
|
-
.set('burn_id', burnId)
|
|
1075
|
-
.set('grant_burn_id', grantId)
|
|
1076
|
-
.set('buy_render_amt',
|
|
1077
|
-
.set('grant_render_amt',
|
|
1135
|
+
.set('burn_id', v.burnId)
|
|
1136
|
+
.set('grant_burn_id', v.grantId)
|
|
1137
|
+
.set('buy_render_amt', v.buyRenderAmt)
|
|
1138
|
+
.set('grant_render_amt', v.grantRenderAmt)
|
|
1078
1139
|
.executeTakeFirstOrThrow();
|
|
1079
1140
|
log.debug(`set burn_id ${burnId} grant_burn_id ${grantId} buy_render_amt ${job.buyRenderAmt} grant_render_amt ${job.grantRenderAmt} on ${res.numUpdatedRows} jobs id ${job.id}`);
|
|
1080
1141
|
}
|
|
1081
1142
|
return { grantBurnId, buyBurnId };
|
|
1082
1143
|
});
|
|
1083
1144
|
},
|
|
1084
|
-
markJobsBurned(
|
|
1085
|
-
return __awaiter(this,
|
|
1145
|
+
markJobsBurned(trx_1, p_1) {
|
|
1146
|
+
return __awaiter(this, arguments, void 0, function* (trx, p, log = logger_1.consoleLogger) {
|
|
1086
1147
|
let { markedAt, solTx } = p;
|
|
1087
1148
|
let res = yield trx.trx
|
|
1088
1149
|
.updateTable(exports.BURN_TABLE)
|
|
@@ -1106,8 +1167,8 @@ const pgClient = (config) => {
|
|
|
1106
1167
|
}
|
|
1107
1168
|
});
|
|
1108
1169
|
},
|
|
1109
|
-
consumeAndLockBurnJobs(
|
|
1110
|
-
return __awaiter(this,
|
|
1170
|
+
consumeAndLockBurnJobs(limit_1, lowerRndrThreshold_1, upperRndrThreshold_1) {
|
|
1171
|
+
return __awaiter(this, arguments, void 0, function* (limit, lowerRndrThreshold, upperRndrThreshold, log = logger_1.consoleLogger) {
|
|
1111
1172
|
const trx = yield (0, base_2.begin)(db, log);
|
|
1112
1173
|
const q = trx.trx
|
|
1113
1174
|
.selectFrom(trx.trx
|
|
@@ -1214,9 +1275,9 @@ const pgClient = (config) => {
|
|
|
1214
1275
|
};
|
|
1215
1276
|
});
|
|
1216
1277
|
},
|
|
1217
|
-
incrBuyBurnMetrics(
|
|
1218
|
-
|
|
1219
|
-
|
|
1278
|
+
incrBuyBurnMetrics() {
|
|
1279
|
+
return __awaiter(this, arguments, void 0, function* (log = logger_1.consoleLogger) {
|
|
1280
|
+
var _a;
|
|
1220
1281
|
const res = yield db
|
|
1221
1282
|
.selectFrom(exports.JOB_TABLE)
|
|
1222
1283
|
.select('inserted_at')
|
|
@@ -1233,9 +1294,9 @@ const pgClient = (config) => {
|
|
|
1233
1294
|
};
|
|
1234
1295
|
});
|
|
1235
1296
|
},
|
|
1236
|
-
fetchBurns(
|
|
1237
|
-
|
|
1238
|
-
|
|
1297
|
+
fetchBurns(db_1, f_1) {
|
|
1298
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
1299
|
+
var _a, _b;
|
|
1239
1300
|
let q = db.trx
|
|
1240
1301
|
.selectFrom('burn')
|
|
1241
1302
|
.selectAll('burn')
|
|
@@ -1304,9 +1365,9 @@ const pgClient = (config) => {
|
|
|
1304
1365
|
return burns;
|
|
1305
1366
|
});
|
|
1306
1367
|
},
|
|
1307
|
-
fetchBurnsAndGrants(
|
|
1308
|
-
|
|
1309
|
-
|
|
1368
|
+
fetchBurnsAndGrants(db_1, f_1) {
|
|
1369
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
1370
|
+
var _a, _b;
|
|
1310
1371
|
// Build a unified query to get all transactions with both buy burns and grant burns
|
|
1311
1372
|
let baseQuery = db.trx
|
|
1312
1373
|
.selectFrom('sol_tx')
|
|
@@ -1444,13 +1505,13 @@ const pgClient = (config) => {
|
|
|
1444
1505
|
return groupedBurns;
|
|
1445
1506
|
});
|
|
1446
1507
|
},
|
|
1447
|
-
createBridgeTransfers(
|
|
1448
|
-
return __awaiter(this,
|
|
1508
|
+
createBridgeTransfers(db_1, bts_1) {
|
|
1509
|
+
return __awaiter(this, arguments, void 0, function* (db, bts, log = logger_1.consoleLogger) {
|
|
1449
1510
|
return createBridgeTransfers(db.trx, bts, log);
|
|
1450
1511
|
});
|
|
1451
1512
|
},
|
|
1452
|
-
getBridgeTransfers(
|
|
1453
|
-
return __awaiter(this,
|
|
1513
|
+
getBridgeTransfers(_a) {
|
|
1514
|
+
return __awaiter(this, arguments, void 0, function* ({ solKey, page, }, log = logger_1.consoleLogger) {
|
|
1454
1515
|
let q = db
|
|
1455
1516
|
.selectFrom(exports.BRIDGE_TRANSFER_TABLE)
|
|
1456
1517
|
.innerJoin(exports.EPOCH_TABLE, 'epoch.id', 'bridge_transfer.epoch_id')
|
|
@@ -1527,8 +1588,8 @@ const pgClient = (config) => {
|
|
|
1527
1588
|
});
|
|
1528
1589
|
},
|
|
1529
1590
|
getTotalBurned(db) {
|
|
1530
|
-
var _a, _b;
|
|
1531
1591
|
return __awaiter(this, void 0, void 0, function* () {
|
|
1592
|
+
var _a, _b;
|
|
1532
1593
|
const total = yield db.trx
|
|
1533
1594
|
.selectFrom('burn')
|
|
1534
1595
|
.select(({ fn }) => fn.sum('burned').as('total_burned'))
|
|
@@ -1536,8 +1597,8 @@ const pgClient = (config) => {
|
|
|
1536
1597
|
return BigInt((_b = (_a = total[0]) === null || _a === void 0 ? void 0 : _a.total_burned) !== null && _b !== void 0 ? _b : 0);
|
|
1537
1598
|
});
|
|
1538
1599
|
},
|
|
1539
|
-
insertBurn(
|
|
1540
|
-
return __awaiter(this,
|
|
1600
|
+
insertBurn(p_1) {
|
|
1601
|
+
return __awaiter(this, arguments, void 0, function* (p, log = logger_1.consoleLogger) {
|
|
1541
1602
|
yield db.transaction().execute((trx) => __awaiter(this, void 0, void 0, function* () {
|
|
1542
1603
|
var _a;
|
|
1543
1604
|
const solTxId = yield getOrInsertTx(trx, { sig: p.solTx, executedAt: p.executedAt }, log);
|
|
@@ -1574,18 +1635,18 @@ const pgClient = (config) => {
|
|
|
1574
1635
|
}));
|
|
1575
1636
|
});
|
|
1576
1637
|
},
|
|
1577
|
-
fetchJobs(
|
|
1578
|
-
return __awaiter(this,
|
|
1638
|
+
fetchJobs(db_1, f_1) {
|
|
1639
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
1579
1640
|
return yield fetchJobs1(db.trx, f, log);
|
|
1580
1641
|
});
|
|
1581
1642
|
},
|
|
1582
|
-
fetchJobsWithGrantValues(
|
|
1583
|
-
return __awaiter(this,
|
|
1643
|
+
fetchJobsWithGrantValues(db_1, f_1) {
|
|
1644
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
1584
1645
|
return yield fetchJobs2(db.trx, f, log);
|
|
1585
1646
|
});
|
|
1586
1647
|
},
|
|
1587
|
-
fetchLiabilityEpochs(
|
|
1588
|
-
return __awaiter(this,
|
|
1648
|
+
fetchLiabilityEpochs(db_1) {
|
|
1649
|
+
return __awaiter(this, arguments, void 0, function* (db, log = logger_1.consoleLogger) {
|
|
1589
1650
|
const q = db.trx
|
|
1590
1651
|
.selectFrom(exports.LIABILITY_TABLE)
|
|
1591
1652
|
.select(({ fn }) => [
|
|
@@ -1643,8 +1704,8 @@ const pgClient = (config) => {
|
|
|
1643
1704
|
}));
|
|
1644
1705
|
});
|
|
1645
1706
|
},
|
|
1646
|
-
getBurnAdjustments(
|
|
1647
|
-
return __awaiter(this,
|
|
1707
|
+
getBurnAdjustments(trx_1, ps_1) {
|
|
1708
|
+
return __awaiter(this, arguments, void 0, function* (trx, ps, log = logger_1.consoleLogger) {
|
|
1648
1709
|
if (ps.toFill) {
|
|
1649
1710
|
const q = trx.trx
|
|
1650
1711
|
.selectFrom(exports.BURN_ADJUSTMENT_TABLE)
|
|
@@ -1685,8 +1746,8 @@ const pgClient = (config) => {
|
|
|
1685
1746
|
return [];
|
|
1686
1747
|
});
|
|
1687
1748
|
},
|
|
1688
|
-
insertPolygonUpgrade(
|
|
1689
|
-
return __awaiter(this,
|
|
1749
|
+
insertPolygonUpgrade(db_1, p_1) {
|
|
1750
|
+
return __awaiter(this, arguments, void 0, function* (db, p, log = logger_1.consoleLogger) {
|
|
1690
1751
|
const solTxId = yield getOrInsertTx(db.trx, {
|
|
1691
1752
|
sig: p.solTx.sig,
|
|
1692
1753
|
executedAt: p.solTx.executedAt,
|
|
@@ -1704,8 +1765,8 @@ const pgClient = (config) => {
|
|
|
1704
1765
|
return;
|
|
1705
1766
|
});
|
|
1706
1767
|
},
|
|
1707
|
-
fetchPolygonUpgrades(
|
|
1708
|
-
return __awaiter(this,
|
|
1768
|
+
fetchPolygonUpgrades(db_1, f_1) {
|
|
1769
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
1709
1770
|
let query = db.trx
|
|
1710
1771
|
.selectFrom('polygon_upgrade')
|
|
1711
1772
|
.selectAll('polygon_upgrade')
|
|
@@ -1731,13 +1792,13 @@ const pgClient = (config) => {
|
|
|
1731
1792
|
}));
|
|
1732
1793
|
});
|
|
1733
1794
|
},
|
|
1734
|
-
getCurrentUserGrantSpend(
|
|
1735
|
-
return __awaiter(this,
|
|
1795
|
+
getCurrentUserGrantSpend(db_1, f_1) {
|
|
1796
|
+
return __awaiter(this, arguments, void 0, function* (db, f, log = logger_1.consoleLogger) {
|
|
1736
1797
|
return yield getCurrentUserGrantSpend(db.trx, f, log);
|
|
1737
1798
|
});
|
|
1738
1799
|
},
|
|
1739
|
-
deleteAll(
|
|
1740
|
-
return __awaiter(this,
|
|
1800
|
+
deleteAll() {
|
|
1801
|
+
return __awaiter(this, arguments, void 0, function* (log = logger_1.consoleLogger) {
|
|
1741
1802
|
if (config.database.includes('render')) {
|
|
1742
1803
|
throw new Error('cannot nuke from deployed database. call from tests only');
|
|
1743
1804
|
}
|
|
@@ -1783,8 +1844,8 @@ const pgClient = (config) => {
|
|
|
1783
1844
|
}
|
|
1784
1845
|
});
|
|
1785
1846
|
},
|
|
1786
|
-
checkPaymentsForDate(
|
|
1787
|
-
return __awaiter(this,
|
|
1847
|
+
checkPaymentsForDate(targetDate_1) {
|
|
1848
|
+
return __awaiter(this, arguments, void 0, function* (targetDate, channel = 'both', log = logger_1.consoleLogger) {
|
|
1788
1849
|
const startOfDay = new Date(targetDate);
|
|
1789
1850
|
startOfDay.setHours(0, 0, 0, 0);
|
|
1790
1851
|
const endOfDay = new Date(targetDate);
|
|
@@ -1835,8 +1896,8 @@ const pgClient = (config) => {
|
|
|
1835
1896
|
}
|
|
1836
1897
|
});
|
|
1837
1898
|
},
|
|
1838
|
-
checkEpochProcessed(
|
|
1839
|
-
return __awaiter(this,
|
|
1899
|
+
checkEpochProcessed(epochId_1, channel_1) {
|
|
1900
|
+
return __awaiter(this, arguments, void 0, function* (epochId, channel, log = logger_1.consoleLogger) {
|
|
1840
1901
|
try {
|
|
1841
1902
|
const result = yield db
|
|
1842
1903
|
.selectFrom('epoch')
|
|
@@ -1856,8 +1917,8 @@ const pgClient = (config) => {
|
|
|
1856
1917
|
}
|
|
1857
1918
|
});
|
|
1858
1919
|
},
|
|
1859
|
-
checkRecentPaymentActivity(
|
|
1860
|
-
return __awaiter(this,
|
|
1920
|
+
checkRecentPaymentActivity() {
|
|
1921
|
+
return __awaiter(this, arguments, void 0, function* (lookbackHours = 2, channel = 'both', log = logger_1.consoleLogger) {
|
|
1861
1922
|
const lookbackTime = new Date(Date.now() - lookbackHours * 60 * 60 * 1000);
|
|
1862
1923
|
const now = new Date();
|
|
1863
1924
|
try {
|