@render-foundation/utils 0.0.13 → 0.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (50) hide show
  1. package/package.json +1 -1
  2. package/lib/cjs/dbTypes.js +0 -3
  3. package/lib/cjs/dbTypes.js.map +0 -1
  4. package/lib/cjs/errorReporter.js +0 -77
  5. package/lib/cjs/errorReporter.js.map +0 -1
  6. package/lib/cjs/index.js +0 -23
  7. package/lib/cjs/index.js.map +0 -1
  8. package/lib/cjs/logger.js +0 -18
  9. package/lib/cjs/logger.js.map +0 -1
  10. package/lib/cjs/pgClient.js +0 -340
  11. package/lib/cjs/pgClient.js.map +0 -1
  12. package/lib/cjs/renderClient.js +0 -74
  13. package/lib/cjs/renderClient.js.map +0 -1
  14. package/lib/cjs/squadsV3.js +0 -63
  15. package/lib/cjs/squadsV3.js.map +0 -1
  16. package/lib/cjs/wormhole.js +0 -68
  17. package/lib/cjs/wormhole.js.map +0 -1
  18. package/lib/esm/src/dbTypes.js +0 -2
  19. package/lib/esm/src/dbTypes.js.map +0 -1
  20. package/lib/esm/src/errorReporter.js +0 -68
  21. package/lib/esm/src/errorReporter.js.map +0 -1
  22. package/lib/esm/src/index.js +0 -7
  23. package/lib/esm/src/index.js.map +0 -1
  24. package/lib/esm/src/logger.js +0 -15
  25. package/lib/esm/src/logger.js.map +0 -1
  26. package/lib/esm/src/pgClient.js +0 -305
  27. package/lib/esm/src/pgClient.js.map +0 -1
  28. package/lib/esm/src/renderClient.js +0 -57
  29. package/lib/esm/src/renderClient.js.map +0 -1
  30. package/lib/esm/src/squadsV3.js +0 -47
  31. package/lib/esm/src/squadsV3.js.map +0 -1
  32. package/lib/esm/src/wormhole.js +0 -32
  33. package/lib/esm/src/wormhole.js.map +0 -1
  34. package/lib/esm/tsconfig.esm.tsbuildinfo +0 -1
  35. package/lib/types/src/dbTypes.d.ts +0 -59
  36. package/lib/types/src/dbTypes.d.ts.map +0 -1
  37. package/lib/types/src/errorReporter.d.ts +0 -12
  38. package/lib/types/src/errorReporter.d.ts.map +0 -1
  39. package/lib/types/src/index.d.ts +0 -7
  40. package/lib/types/src/index.d.ts.map +0 -1
  41. package/lib/types/src/logger.d.ts +0 -14
  42. package/lib/types/src/logger.d.ts.map +0 -1
  43. package/lib/types/src/pgClient.d.ts +0 -67
  44. package/lib/types/src/pgClient.d.ts.map +0 -1
  45. package/lib/types/src/renderClient.d.ts +0 -10
  46. package/lib/types/src/renderClient.d.ts.map +0 -1
  47. package/lib/types/src/squadsV3.d.ts +0 -8
  48. package/lib/types/src/squadsV3.d.ts.map +0 -1
  49. package/lib/types/src/wormhole.d.ts +0 -9
  50. package/lib/types/src/wormhole.d.ts.map +0 -1
@@ -1,63 +0,0 @@
1
- "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
- var __importDefault = (this && this.__importDefault) || function (mod) {
12
- return (mod && mod.__esModule) ? mod : { "default": mod };
13
- };
14
- Object.defineProperty(exports, "__esModule", { value: true });
15
- exports.executeSqV3Transaction = void 0;
16
- const sdk_1 = require("@sqds/sdk");
17
- const bn_js_1 = __importDefault(require("bn.js"));
18
- const web3_js_1 = require("@solana/web3.js");
19
- const spl_utils_1 = require("@render-foundation/spl-utils");
20
- const logger_1 = require("./logger");
21
- const executeSqV3Transaction = (connection, squadsMsKey, clients, instrs, log = logger_1.consoleLogger) => __awaiter(void 0, void 0, void 0, function* () {
22
- const msAuthorityK = (0, sdk_1.getAuthorityPDA)(squadsMsKey, new bn_js_1.default(1), sdk_1.DEFAULT_MULTISIG_PROGRAM_ID)[0];
23
- let txPDA;
24
- const primClient = clients[0];
25
- const txIdx = yield primClient.getNextTransactionIndex(squadsMsKey);
26
- txPDA = (0, sdk_1.getTxPDA)(squadsMsKey, new bn_js_1.default(txIdx), sdk_1.DEFAULT_MULTISIG_PROGRAM_ID)[0];
27
- let createTx = new web3_js_1.Transaction()
28
- .add(yield primClient.buildCreateTransaction(squadsMsKey, 1, txIdx));
29
- let instrIdx = 1;
30
- for (const i of instrs) {
31
- createTx.add(yield primClient.buildAddInstruction(squadsMsKey, txPDA, i, instrIdx));
32
- instrIdx += 1;
33
- }
34
- createTx.add(yield primClient.buildActivateTransaction(squadsMsKey, txPDA));
35
- for (const c of clients) {
36
- createTx.add(yield c.buildApproveTransaction(squadsMsKey, txPDA));
37
- }
38
- createTx.recentBlockhash = (yield connection.getLatestBlockhash()).blockhash;
39
- createTx.feePayer = primClient.wallet.publicKey;
40
- for (const c of clients) {
41
- createTx = yield c.wallet.signTransaction(createTx);
42
- }
43
- //createTx.sign(sharedMsKp, authorityKp)
44
- yield (0, spl_utils_1.sendAndConfirmWithRetry)(connection, createTx.serialize(), {
45
- skipPreflight: true,
46
- maxRetries: 10,
47
- }, 'finalized');
48
- log.info(`created tx ${txPDA}`);
49
- log.info(`executing tx ${txPDA}`);
50
- let execTx = new web3_js_1.Transaction().add(yield primClient.buildExecuteTransaction(txPDA, primClient.wallet.publicKey));
51
- execTx.recentBlockhash = (yield connection.getLatestBlockhash()).blockhash;
52
- execTx.feePayer = primClient.wallet.publicKey;
53
- execTx = yield primClient.wallet.signTransaction(execTx);
54
- //execTx.sign(args.solFeePayerKp)
55
- const { txid } = yield (0, spl_utils_1.sendAndConfirmWithRetry)(connection, execTx.serialize(), {
56
- skipPreflight: true,
57
- maxRetries: 10,
58
- }, 'confirmed');
59
- log.info(`executed ${txid}`);
60
- return { txSig: txid, txPDA };
61
- });
62
- exports.executeSqV3Transaction = executeSqV3Transaction;
63
- //# sourceMappingURL=squadsV3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"squadsV3.js","sourceRoot":"","sources":["../../src/squadsV3.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,mCAAyF;AACzF,kDAAuB;AAEvB,6CAAmG;AACnG,4DAAqE;AACrE,qCAAqD;AAE9C,MAAM,sBAAsB,GAAG,CACpC,UAAsB,EACtB,WAAsB,EACtB,OAAiB,EACjB,MAAgC,EAChC,MAAoB,sBAAa,EACW,EAAE;IAC9C,MAAM,YAAY,GAAG,IAAA,qBAAe,EAAC,WAAW,EAAE,IAAI,eAAE,CAAC,CAAC,CAAC,EAAE,iCAA2B,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5F,IAAI,KAAgB,CAAC;IACrB,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;IAC7B,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAA;IACnE,KAAK,GAAG,IAAA,cAAQ,EAAC,WAAW,EAAE,IAAI,eAAE,CAAC,KAAK,CAAC,EAAE,iCAA2B,CAAC,CAAC,CAAC,CAAC,CAAA;IAC5E,IAAI,QAAQ,GAAG,IAAI,qBAAW,EAAE;SAC7B,GAAG,CAAC,MAAM,UAAU,CAAC,sBAAsB,CAAC,WAAW,EAAE,CAAC,EAAE,KAAK,CAAC,CAAC,CAAA;IAEtE,IAAI,QAAQ,GAAG,CAAC,CAAA;IAChB,KAAK,MAAM,CAAC,IAAI,MAAM,EAAE;QACtB,QAAQ,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,mBAAmB,CAAC,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;QACnF,QAAQ,IAAI,CAAC,CAAA;KACd;IACD,QAAQ,CAAC,GAAG,CACV,MAAM,UAAU,CAAC,wBAAwB,CAAC,WAAW,EAAE,KAAK,CAAC,CAC9D,CAAA;IACD,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;QACxB,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,uBAAuB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,CAAA;KACjE;IACD,QAAQ,CAAC,eAAe,GAAG,CAAC,MAAM,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAA;IAC5E,QAAQ,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAA;IAC/C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE;QACvB,QAAQ,GAAG,MAAM,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAA;KACpD;IACD,wCAAwC;IACxC,MAAM,IAAA,mCAAuB,EAC3B,UAAU,EACV,QAAQ,CAAC,SAAS,EAAE,EACpB;QACE,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,EAAE;KACf,EACD,WAAW,CACZ,CAAA;IACD,GAAG,CAAC,IAAI,CAAC,cAAc,KAAK,EAAE,CAAC,CAAA;IAC/B,GAAG,CAAC,IAAI,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAA;IACjC,IAAI,MAAM,GAAG,IAAI,qBAAW,EAAE,CAAC,GAAG,CAAC,MAAM,UAAU,CAAC,uBAAuB,CAAC,KAAK,EAAE,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAA;IAChH,MAAM,CAAC,eAAe,GAAG,CAAC,MAAM,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,SAAS,CAAA;IAC1E,MAAM,CAAC,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAA;IAC7C,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAA;IACxD,iCAAiC;IACjC,MAAM,EAAC,IAAI,EAAC,GAAG,MAAM,IAAA,mCAAuB,EAC1C,UAAU,EACV,MAAM,CAAC,SAAS,EAAE,EAClB;QACE,aAAa,EAAE,IAAI;QACnB,UAAU,EAAE,EAAE;KACf,EACD,WAAW,CACZ,CAAA;IACD,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,EAAE,CAAC,CAAA;IAC5B,OAAO,EAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAC,CAAA;AAC7B,CAAC,CAAA,CAAA;AA3DY,QAAA,sBAAsB,0BA2DlC"}
@@ -1,68 +0,0 @@
1
- "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || function (mod) {
19
- if (mod && mod.__esModule) return mod;
20
- var result = {};
21
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
- __setModuleDefault(result, mod);
23
- return result;
24
- };
25
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
26
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
27
- return new (P || (P = Promise))(function (resolve, reject) {
28
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
29
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
30
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
31
- step((generator = generator.apply(thisArg, _arguments || [])).next());
32
- });
33
- };
34
- Object.defineProperty(exports, "__esModule", { value: true });
35
- exports.fetchEthInfo = void 0;
36
- const anchor = __importStar(require("@coral-xyz/anchor"));
37
- const wormhole_sdk_1 = require("@certusone/wormhole-sdk");
38
- const logger_1 = require("./logger");
39
- const fetchEthInfo = (seq, wormEnv = 'MAINNET', ethChainId = 2, retries = 3, log = logger_1.consoleLogger) => __awaiter(void 0, void 0, void 0, function* () {
40
- const hexEmitter = Buffer.alloc(32)
41
- .fill(Uint8Array.from(anchor.utils.bytes.hex.decode(wormhole_sdk_1.CONTRACTS[wormEnv].ethereum.token_bridge)), 12)
42
- .toString('hex');
43
- const url = `https://api${wormEnv.toLowerCase() == 'mainnet' ? '' : `.${wormEnv.toString().toLowerCase()}`}.wormholescan.io/api/v1/global-tx/${ethChainId}/${hexEmitter}/${seq}`;
44
- const recur = (currRetry = 0) => __awaiter(void 0, void 0, void 0, function* () {
45
- if (currRetry == retries) {
46
- return Promise.reject(new Error(`wormapi exceeded max retries ${retries} fetching ${url}`));
47
- }
48
- try {
49
- const res = yield fetch(url).then((res) => __awaiter(void 0, void 0, void 0, function* () {
50
- if (res.status != 200) {
51
- throw new Error(`status code ${res.status} fetching ${url}. body: ${JSON.stringify(yield res.json())}`);
52
- }
53
- return (yield res.json());
54
- }), err => {
55
- throw new Error(`exception fetching wormapi: ${JSON.stringify(err)}`);
56
- });
57
- return [seq, res];
58
- }
59
- catch (e) {
60
- // @ts-ignore
61
- log.error(`wormapi err ${e.message}`);
62
- return recur(currRetry + 1);
63
- }
64
- });
65
- return (yield recur());
66
- });
67
- exports.fetchEthInfo = fetchEthInfo;
68
- //# sourceMappingURL=wormhole.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"wormhole.js","sourceRoot":"","sources":["../../src/wormhole.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0DAA4C;AAC5C,0DAAkD;AAClD,qCAAqD;AAI9C,MAAM,YAAY,GAAG,CAC1B,GAAW,EACX,UAAiC,SAAS,EAC1C,aAAqB,CAAC,EACtB,OAAO,GAAG,CAAC,EACX,MAAoB,sBAAa,EACL,EAAE;IAE9B,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;SAChC,IAAI,CACH,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAC3C,wBAAS,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAC1C,EACD,EAAE,CACH;SACA,QAAQ,CAAC,KAAK,CAAC,CAAA;IAClB,MAAM,GAAG,GAAG,cAAc,OAAO,CAAC,WAAW,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,WAAW,EAAE,EAAE,qCAAqC,UAAU,IAAI,UAAU,IAAI,GAAG,EAAE,CAAA;IAEhL,MAAM,KAAK,GAAG,CAAO,SAAS,GAAG,CAAC,EAA8B,EAAE;QAChE,IAAI,SAAS,IAAI,OAAO,EAAE;YACxB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,gCAAgC,OAAO,aAAa,GAAG,EAAE,CAAC,CAAC,CAAA;SAC5F;QACD,IAAI;YACF,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAC/B,CAAM,GAAG,EAAC,EAAE;gBACV,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;oBACrB,MAAM,IAAI,KAAK,CAAC,eAAe,GAAG,CAAC,MAAM,aAAa,GAAG,WAAW,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;iBACxG;gBACD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAY,CAAA;YACtC,CAAC,CAAA,EACD,GAAG,CAAC,EAAE;gBACJ,MAAM,IAAI,KAAK,CAAC,+BAA+B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACvE,CAAC,CACF,CAAA;YACD,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;SAClB;QAAC,OAAO,CAAC,EAAE;YACV,aAAa;YACb,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,OAAO,EAAE,CAAC,CAAA;YACrC,OAAO,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,CAAA;SAC5B;IACH,CAAC,CAAA,CAAA;IAED,OAAO,CAAC,MAAM,KAAK,EAAE,CAAC,CAAA;AACxB,CAAC,CAAA,CAAA;AA3CY,QAAA,YAAY,gBA2CxB"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=dbTypes.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dbTypes.js","sourceRoot":"","sources":["../../../src/dbTypes.ts"],"names":[],"mappings":""}
@@ -1,68 +0,0 @@
1
- import { api } from "@pagerduty/pdjs";
2
- import { WebClient } from "@slack/web-api";
3
- import { consoleLogger } from "./logger";
4
- export const errorReporter = (pdApiKey, slackToken, channel, log = consoleLogger) => {
5
- const pd = api({ token: pdApiKey });
6
- const client = new WebClient(slackToken);
7
- const sendSlackMessage = async (message, channel) => {
8
- return new Promise(async (resolve, reject) => {
9
- try {
10
- const resp = await client.chat.postMessage({
11
- //blocks: message,
12
- text: message,
13
- channel,
14
- });
15
- if (resp.errors) {
16
- return reject(new Error(`err sending slack msg: ${resp.errors.join(";")}`));
17
- }
18
- if (resp.error) {
19
- return reject(new Error(`err sending slack msg: ${resp.error}`));
20
- }
21
- log.debug(`sent slack msg ${JSON.stringify(resp.message)}`);
22
- return resolve(true);
23
- }
24
- catch (error) {
25
- log.error(`exc sending slack msg ${JSON.stringify(error)}`);
26
- return resolve(true);
27
- }
28
- });
29
- };
30
- return {
31
- async report(f) {
32
- for (const t of f.targets) {
33
- if (t == 'slack') {
34
- await sendSlackMessage(f.msg, channel);
35
- }
36
- else {
37
- const opt = f.id ? { incident_key: f.id } : {};
38
- let res = await pd.post('/incidents', {
39
- headers: {
40
- 'From': 'alex@renderfoundation.com',
41
- },
42
- data: {
43
- incident: {
44
- ...opt,
45
- type: "incident",
46
- title: f.title ?? ``,
47
- service: {
48
- "id": "PZPJ8EI",
49
- "type": "service_reference"
50
- },
51
- urgency: "high",
52
- body: {
53
- "type": "incident_body",
54
- "details": f.msg ?? ``
55
- },
56
- }
57
- }
58
- });
59
- log.debug(`pd resp ${JSON.stringify(res.data)}`);
60
- if (res.data.error) {
61
- log.error(`pd err ${JSON.stringify(res.data.error)}`);
62
- }
63
- }
64
- }
65
- }
66
- };
67
- };
68
- //# sourceMappingURL=errorReporter.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"errorReporter.js","sourceRoot":"","sources":["../../../src/errorReporter.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- export * from "./wormhole";
2
- export * from "./pgClient";
3
- export * from "./renderClient";
4
- export * from "./squadsV3";
5
- export * from "./logger";
6
- export * from "./errorReporter";
7
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,YAAY,CAAC;AAC3B,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,YAAY,CAAC;AAC3B,cAAc,UAAU,CAAA;AACxB,cAAc,iBAAiB,CAAC"}
@@ -1,15 +0,0 @@
1
- class ConsoleLogger {
2
- constructor() {
3
- }
4
- debug(msg) {
5
- console.log(msg);
6
- }
7
- info(msg) {
8
- console.log(msg);
9
- }
10
- error(msg) {
11
- console.error(msg);
12
- }
13
- }
14
- export const consoleLogger = new ConsoleLogger();
15
- //# sourceMappingURL=logger.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/logger.ts"],"names":[],"mappings":"AAOA,MAAM,aAAa;IACjB;IACA,CAAC;IAED,KAAK,CAAC,GAAW;QACf,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAClB,CAAC;IAED,IAAI,CAAC,GAAW;QACd,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;IAClB,CAAC;IAED,KAAK,CAAC,GAAW;QACf,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IACpB,CAAC;CACF;AAED,MAAM,CAAC,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAA"}
@@ -1,305 +0,0 @@
1
- import { Pool } from 'pg';
2
- import { Kysely, NoResultError, PostgresDialect, sql } from 'kysely';
3
- import { consoleLogger } from "./logger";
4
- const transferFromDB = (o) => {
5
- return {
6
- id: o.id,
7
- solKey: o.sol_key,
8
- solTx: o.sol_tx,
9
- sqTx: o.sq_tx,
10
- txStatus: o.txStatus,
11
- createdAt: o.created_at,
12
- payedAt: o.payed_at,
13
- amountDue: BigInt(o.amount_due),
14
- amountPayed: o.amount_payed ? BigInt(o.amount_payed) : undefined,
15
- operatorRewards: o.transfer_type == 'node_operator_rewards' ? {
16
- epochId: o.epoch_id,
17
- startTime: o.start_time,
18
- endTime: o.end_time
19
- } : undefined,
20
- computeClientRewards: o.transfer_type == 'open_compute_rewards' ? {
21
- epochId: o.epoch_id,
22
- deviceId: o.device_id
23
- } : undefined,
24
- upgradeRewards: o.transfer_type == 'upgrade_rewards' && !!o.epoch_id ? {
25
- epochId: o.epoch_id,
26
- epochStartTime: o.epoch_start_time,
27
- points: BigInt(o.points)
28
- } : undefined
29
- };
30
- };
31
- export const pgClient = (config, log = consoleLogger) => {
32
- const dialect = new PostgresDialect({
33
- pool: new Pool({
34
- ...config,
35
- port: config.port ?? 5432,
36
- max: config.max ?? 10,
37
- })
38
- });
39
- // Database interface is passed to Kysely's constructor, and from now on, Kysely
40
- // knows your database structure.
41
- // Dialect is passed to Kysely's constructor, and from now on, Kysely knows how
42
- // to communicate with your database.
43
- const db = new Kysely({
44
- dialect,
45
- });
46
- const TRANSFER = 'transfer';
47
- const NODE_OPERATOR_REWARDS_TRANSFER = 'node_operator_rewards_transfer';
48
- const COMPUTE_CLIENT_REWARDS_TRANSFER = 'open_compute_rewards_transfer';
49
- const UPGRADE_REWARDS_TRANSFER = 'upgrade_rewards_transfer';
50
- const SQUADS_TX = 'squads_tx';
51
- const NODE_OPERATOR_EPOCH = 'node_operator_epoch';
52
- const JOB_ID = 'job_id';
53
- const createTransfers = async (db, transfers) => {
54
- for (const t of transfers) {
55
- const { id: transferId } = (await db.insertInto(TRANSFER).values({
56
- amount_due: BigInt(t.amountDue),
57
- amount_payed: t.amountPayed ? BigInt(t.amountPayed) : 0,
58
- created_at: t.createdAt,
59
- payed_at: t.payedAt,
60
- sol_key: t.solKey,
61
- sol_tx: t.solTx,
62
- transfer_type: (() => {
63
- if (t.operatorRewards) {
64
- return 'node_operator_rewards';
65
- }
66
- else if (t.upgradeRewards) {
67
- return 'upgrade_rewards';
68
- }
69
- else if (t.computeClientRewards) {
70
- return 'open_compute_rewards';
71
- }
72
- throw new Error('wtf');
73
- })(),
74
- }).returning((eb) => ['id as id']).executeTakeFirst());
75
- log.info(`inserted transfer ${JSON.stringify(t, (key, value) => typeof value === 'bigint'
76
- ? value.toString()
77
- : value // return everything else unchanged
78
- )}`);
79
- if (t.operatorRewards) {
80
- log.info(`inserting operator rewards ${transferId}`);
81
- const x = (await db.insertInto(NODE_OPERATOR_REWARDS_TRANSFER).values({
82
- end_time: t.operatorRewards.endTime,
83
- start_time: t.operatorRewards.startTime,
84
- epoch_id: t.operatorRewards.epochId,
85
- transfer_id: transferId,
86
- }).executeTakeFirst()).insertId;
87
- }
88
- else if (t.computeClientRewards) {
89
- log.info(`inserting compute client rewards ${transferId}`);
90
- const x = (await db.insertInto(COMPUTE_CLIENT_REWARDS_TRANSFER).values({
91
- device_id: t.computeClientRewards.deviceId,
92
- transfer_id: transferId
93
- }).executeTakeFirst()).insertId;
94
- }
95
- else if (t.upgradeRewards) {
96
- log.info(`inserting upgrade rewards ${transferId}`);
97
- const x = (await db.insertInto(UPGRADE_REWARDS_TRANSFER).values({
98
- epoch_id: t.upgradeRewards.epochId,
99
- epoch_start_time: t.upgradeRewards.epochStartTime,
100
- points: t.upgradeRewards.points,
101
- transfer_id: transferId
102
- }).executeTakeFirst()).insertId;
103
- }
104
- }
105
- return;
106
- };
107
- return {
108
- async saveNodeOperatorEpoch(epochId, transfers, jobIds) {
109
- await db.transaction().execute(async (trx) => {
110
- await createTransfers(trx, transfers);
111
- log.info(`inserted transfers`);
112
- for (const id of jobIds) {
113
- await trx.insertInto(JOB_ID).values({
114
- id: BigInt(id),
115
- epoch_id: epochId,
116
- }).executeTakeFirstOrThrow();
117
- }
118
- log.info(`inserted jobids`);
119
- const now = new Date(Date.now());
120
- const res = await trx.updateTable(NODE_OPERATOR_EPOCH)
121
- .set({ saved_at: now })
122
- .where('id', '=', epochId.toString()).executeTakeFirstOrThrow();
123
- log.info(`saved node operator epoch: ${res.numUpdatedRows}`);
124
- });
125
- return;
126
- },
127
- async getLatestNodeOperatorEpoch() {
128
- const now = new Date(Date.now());
129
- try {
130
- const res = await db.selectFrom(NODE_OPERATOR_EPOCH)
131
- .selectAll()
132
- .where('end_time', '<=', now)
133
- .orderBy('end_time desc')
134
- .limit(1)
135
- .executeTakeFirstOrThrow();
136
- return {
137
- epochId: BigInt(res.id),
138
- startedAt: res.start_time,
139
- endedAt: res.end_time,
140
- savedAt: res.saved_at ?? undefined
141
- };
142
- }
143
- catch (e) {
144
- if (e instanceof NoResultError) {
145
- log.info(`no node operator epoch found`);
146
- return undefined;
147
- }
148
- throw e;
149
- }
150
- },
151
- async getOutstanding(f) {
152
- //select sol_key, sum(amount_due)-sum(amount_payed) from transfer group by sol_key;
153
- const res = await db.selectFrom(TRANSFER)
154
- .select(({ fn, val, ref }) => [
155
- 'sol_key',
156
- sql `${fn.sum('amount_due')} - ${fn.sum('amount_payed')}`.as('due'),
157
- ])
158
- .where('transfer_type', '=', f.typ)
159
- .groupBy(['sol_key'])
160
- .execute();
161
- const out = {};
162
- for (const r of res) {
163
- out[r.sol_key] = BigInt(r.due);
164
- }
165
- return out;
166
- },
167
- async updateSqTx(tx, status) {
168
- const res = await db.updateTable(SQUADS_TX)
169
- .set({ tx_status: status })
170
- .where('sq_tx', '=', tx).execute();
171
- log.info(`updated ${tx} -> ${status}`);
172
- },
173
- async setSqTx(transferIds, sqTx) {
174
- const { id } = (await db.insertInto(SQUADS_TX)
175
- .values({ sq_tx: sqTx, tx_status: 'created' })
176
- .returning((eb) => ['id as id']).executeTakeFirst());
177
- const res = await db.updateTable(TRANSFER)
178
- .set({ sq_tx_id: id })
179
- .where('id', 'in', transferIds.map(id => id.toString())).execute();
180
- log.info(`set sqTx ${sqTx} on ${transferIds.length} transfers`);
181
- },
182
- /*
183
- [
184
- 'transfer.id',
185
- 'transfer.sol_key',
186
- 'transfer.transfer_type',
187
- 'transfer.transfer_type',
188
- 'squads_tx.tx_status', 'squads_tx.sq_tx']
189
- */
190
- async fetchTransfers(f) {
191
- let base = db
192
- .selectFrom(TRANSFER)
193
- // @ts-ignore
194
- .selectAll(TRANSFER)
195
- .leftJoin(SQUADS_TX, 'squads_tx.id', 'transfer.sq_tx_id')
196
- .select(['squads_tx.tx_status', 'squads_tx.sq_tx'])
197
- .where('transfer_type', '=', f.typ);
198
- if (f.status) {
199
- if (f.status == 'notx') {
200
- base = base.where('squads_tx.tx_status', 'is', null);
201
- }
202
- else {
203
- base = base.where('squads_tx.tx_status', '=', f.status);
204
- }
205
- }
206
- if (f.payed != undefined) {
207
- base = base.where('payed_at', f.payed ? 'is not' : 'is', null);
208
- }
209
- if (f.typ == 'upgrade_rewards') {
210
- base = base.innerJoin(UPGRADE_REWARDS_TRANSFER, 'upgrade_rewards_transfer.transfer_id', 'transfer.id');
211
- if (f.epochId) {
212
- // @ts-ignore
213
- base = base.where('upgrade_rewards_transfer.epoch_id', '=', f.epochId);
214
- }
215
- }
216
- if (f.typ == 'node_operator_rewards') {
217
- base = base.innerJoin(NODE_OPERATOR_REWARDS_TRANSFER, 'node_operator_rewards_transfer.transfer_id', 'transfer.id');
218
- if (f.epochId) {
219
- // @ts-ignore
220
- base = base.where('node_operator_rewards_transfer.epoch_id', '=', f.epochId);
221
- }
222
- }
223
- if (f.sort) {
224
- base = base.orderBy('transfer.sol_key asc');
225
- }
226
- const res = await base.execute();
227
- log.info(`fetched ${base.compile().sql} ${res.length} transfers`);
228
- return res.map(r => transferFromDB(r));
229
- },
230
- async payoutTransfersSquads(ts, payedAt, solTx, sqTx) {
231
- const { id: sqTxId } = (await db.insertInto(SQUADS_TX)
232
- .values({ sq_tx: sqTx, tx_status: 'executed' })
233
- .returning((eb) => ['id as id']).executeTakeFirstOrThrow());
234
- let numUpdated = BigInt(0);
235
- for (const [id, amtPayed] of Object.entries(ts)) {
236
- const res = await db.updateTable(TRANSFER).set({
237
- payed_at: payedAt,
238
- sol_tx: solTx,
239
- amount_payed: amtPayed,
240
- sq_tx_id: sqTxId
241
- }).where('id', '=', id).executeTakeFirstOrThrow();
242
- numUpdated += res.numUpdatedRows;
243
- }
244
- log.info(`marked ${numUpdated} transfers payed out`);
245
- return;
246
- },
247
- async payoutTransfers(idToAmt, payedAt, solTx) {
248
- const res = await db.transaction().execute(async (tx) => {
249
- for (const [id, amt] of Object.entries(idToAmt)) {
250
- const res = await tx.updateTable(TRANSFER).set({
251
- payed_at: payedAt,
252
- sol_tx: solTx,
253
- amount_payed: amt,
254
- })
255
- .where('id', '=', id.toString())
256
- .executeTakeFirstOrThrow();
257
- log.info(`marked ${res.numUpdatedRows} transfer payed out`);
258
- }
259
- });
260
- },
261
- async payoutTransfer(id, payedAt, solTx, amtPayed) {
262
- const res = await db.updateTable(TRANSFER).set({
263
- payed_at: payedAt,
264
- sol_tx: solTx,
265
- amount_payed: amtPayed,
266
- })
267
- .where('id', '=', id.toString())
268
- .executeTakeFirst();
269
- log.info(`marked ${res.numUpdatedRows} transfer payed out`);
270
- return;
271
- },
272
- async payoutTransferSq(id, payedAt, solTx, amtPayed, sqTx) {
273
- const { id: sqTxId } = (await db.insertInto(SQUADS_TX)
274
- .values({ sq_tx: sqTx, tx_status: 'executed' })
275
- .onConflict((oc) => oc
276
- .column('sq_tx')
277
- .doNothing())
278
- .returning((eb) => ['id as id']).executeTakeFirst());
279
- const res = await db.updateTable(TRANSFER).set({
280
- payed_at: payedAt,
281
- sol_tx: solTx,
282
- amount_payed: amtPayed,
283
- sq_tx_id: sqTxId
284
- })
285
- .where('id', '=', id.toString())
286
- .executeTakeFirst();
287
- log.info(`marked ${res.numUpdatedRows} transfer payed out`);
288
- return;
289
- },
290
- async createTransfers(transfers) {
291
- await createTransfers(db, transfers);
292
- },
293
- async fetchJobIdsForEpoch(epochId) {
294
- const res = await db.selectFrom(JOB_ID)
295
- .selectAll()
296
- .where('epoch_id', '=', epochId.toString()).execute();
297
- const out = [];
298
- for (const r of res) {
299
- out.push(Number(r.id));
300
- }
301
- return out;
302
- }
303
- };
304
- };
305
- //# sourceMappingURL=pgClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"pgClient.js","sourceRoot":"","sources":["../../../src/pgClient.ts"],"names":[],"mappings":"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"}
@@ -1,57 +0,0 @@
1
- import { consoleLogger } from "./logger";
2
- export const renderClient = (authToken, log = consoleLogger) => {
3
- const host = `rndr.x.io`;
4
- return {
5
- async fetchNodeOperatorRewards(startTime, endTime) {
6
- const startTimeStr = startTime.toISOString().split('T')[0];
7
- const endTimeStr = endTime.toISOString().split('T')[0];
8
- const url = `https://${host}/api/v3/services/solana/payments?finished_after=${startTimeStr}&finished_before=${endTimeStr}`;
9
- log.info(`fetching ${url}`);
10
- const res = await fetch(url, { headers: {
11
- Authorization: `${authToken}`,
12
- Accept: 'application/vnd.api+json'
13
- } }).then(async (res) => {
14
- if (res.status != 200) {
15
- throw new Error(`failed fetching node operator rewards. code: ${res.status} body: ${JSON.stringify(await res.text())}`);
16
- }
17
- return (await res.json());
18
- });
19
- const solKeyToDue = {};
20
- for (const r of res.data.attributes.paymentsOwed) {
21
- const [addr, amt] = Object.entries(r)[0];
22
- solKeyToDue[addr] = amt;
23
- }
24
- return { solKeyToDue, jobIds: res.meta.jobIds };
25
- },
26
- async markJobsPayed(ids, finishedAfter, finishedBefore, totalDistributed) {
27
- const payload = {
28
- data: {
29
- attributes: {
30
- finished_after: finishedAfter.toISOString().split('T')[0],
31
- finished_before: finishedBefore.toISOString().split('T')[0],
32
- job_ids: ids,
33
- total_distributed: totalDistributed
34
- },
35
- type: 'solana_payments'
36
- }
37
- };
38
- const res = await fetch(`https://${host}/api/v3/services/solana/payments`, {
39
- method: 'POST',
40
- headers: {
41
- 'Authorization': `Bearer ${authToken}`,
42
- 'Content-Type': `application/vnd.api+json`,
43
- 'Accept': `application/vnd.api+json`
44
- },
45
- body: JSON.stringify(payload)
46
- }).then(async (res) => {
47
- if (res.status != 201) {
48
- throw new Error(`failed posting node operator rewards. code: ${res.status} body: ${JSON.stringify(await res.text())}`);
49
- }
50
- return (await res.text());
51
- });
52
- log.info(`markJobsPayed ${res}`);
53
- return;
54
- }
55
- };
56
- };
57
- //# sourceMappingURL=renderClient.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"renderClient.js","sourceRoot":"","sources":["../../../src/renderClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,aAAa,EAAe,MAAM,UAAU,CAAC;AA0BrD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,SAAiB,EAAE,MAAoB,aAAa,EAAgB,EAAE;IACjG,MAAM,IAAI,GAAG,WAAW,CAAA;IACxB,OAAO;QACL,KAAK,CAAC,wBAAwB,CAAC,SAAe,EAAE,OAAa;YAC3D,MAAM,YAAY,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YAC1D,MAAM,UAAU,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;YACtD,MAAM,GAAG,GAAG,WAAW,IAAI,mDAAmD,YAAY,oBAAoB,UAAU,EAAE,CAAA;YAC1H,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,CAAA;YAC3B,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,GAAG,EACH,EAAC,OAAO,EAAE;oBACR,aAAa,EAAE,GAAG,SAAS,EAAE;oBAC7B,MAAM,EAAE,0BAA0B;iBACnC,EAAC,CACH,CAAC,IAAI,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;gBACjB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;oBACrB,MAAM,IAAI,KAAK,CAAC,gDAAgD,GAAG,CAAC,MAAM,UAAU,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;iBACxH;gBACD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAY,CAAA;YACtC,CAAC,CAAC,CAAA;YACF,MAAM,WAAW,GAA2B,EAAE,CAAA;YAC9C,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE;gBAChD,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;gBACxC,WAAW,CAAC,IAAI,CAAC,GAAG,GAAG,CAAA;aACxB;YACD,OAAO,EAAC,WAAW,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM,EAAC,CAAA;QAC/C,CAAC;QACD,KAAK,CAAC,aAAa,CACjB,GAAa,EACb,aAAmB,EACnB,cAAoB,EACpB,gBAAwB;YAExB,MAAM,OAAO,GAAG;gBACd,IAAI,EAAE;oBACJ,UAAU,EAAE;wBACV,cAAc,EAAE,aAAa,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBACzD,eAAe,EAAE,cAAc,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;wBAC3D,OAAO,EAAE,GAAG;wBACZ,iBAAiB,EAAE,gBAAgB;qBACpC;oBACD,IAAI,EAAE,iBAAiB;iBACxB;aACF,CAAA;YACD,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,WAAW,IAAI,kCAAkC,EACjD;gBACE,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE;oBACP,eAAe,EAAE,UAAU,SAAS,EAAE;oBACtC,cAAc,EAAE,0BAA0B;oBAC1C,QAAQ,EAAE,0BAA0B;iBACrC;gBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;aAC9B,CACF,CAAC,IAAI,CAAC,KAAK,EAAC,GAAG,EAAC,EAAE;gBACjB,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;oBACrB,MAAM,IAAI,KAAK,CAAC,+CAA+C,GAAG,CAAC,MAAM,UAAU,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAA;iBACvH;gBACD,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;YAC3B,CAAC,CAAC,CAAA;YACF,GAAG,CAAC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAA;YAChC,OAAM;QACR,CAAC;KAEF,CAAA;AACH,CAAC,CAAA"}