@riocrypto/common-server 1.0.1720 → 1.0.1721

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.
@@ -0,0 +1,10 @@
1
+ import { RioEnv } from "@riocrypto/common";
2
+ declare class GoogleSheetsAPIClient {
3
+ private env;
4
+ googleAuth: any;
5
+ constructor(env: RioEnv);
6
+ getNextAvailableRow(sheetId: string): Promise<number>;
7
+ appendRowToNextAvailableRow(sheetId: string, rowData: any[]): Promise<void>;
8
+ }
9
+ export declare const googleSheetsAPIClient: GoogleSheetsAPIClient;
10
+ export {};
@@ -0,0 +1,75 @@
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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.googleSheetsAPIClient = void 0;
13
+ const googleapis_1 = require("googleapis");
14
+ class GoogleSheetsAPIClient {
15
+ constructor(env) {
16
+ this.env = env;
17
+ this.googleAuth = new googleapis_1.google.auth.GoogleAuth({
18
+ keyFile: "/etc/secrets/google-sheets/google-sheets-service-account-key.json",
19
+ scopes: ["https://www.googleapis.com/auth/spreadsheets"],
20
+ });
21
+ }
22
+ getNextAvailableRow(sheetId) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ const authClientObject = yield this.googleAuth.getClient();
25
+ const sheets = googleapis_1.google.sheets({ version: "v4", auth: authClientObject });
26
+ const response = yield sheets.spreadsheets.values.get({
27
+ spreadsheetId: sheetId,
28
+ range: "A:Z", // Adjust the range based on the columns you want to check (e.g., A:Z for columns A to Z)
29
+ });
30
+ const data = response.data.values;
31
+ if (!data || data.length === 0) {
32
+ // If the sheet is completely empty, return the first row (1)
33
+ return 1;
34
+ }
35
+ // Find the first row with empty cells after column A
36
+ for (let i = 0; i < data.length; i++) {
37
+ const row = data[i];
38
+ if (row.length > 1) {
39
+ // If any cell after column A has a value, move to the next row
40
+ continue;
41
+ }
42
+ else {
43
+ // If all cells after column A are empty, return the row number
44
+ return i + 1;
45
+ }
46
+ }
47
+ // If no empty row found, return the next row after the last row
48
+ return data.length;
49
+ });
50
+ }
51
+ appendRowToNextAvailableRow(sheetId, rowData) {
52
+ return __awaiter(this, void 0, void 0, function* () {
53
+ const authClientObject = yield this.googleAuth.getClient();
54
+ const sheets = googleapis_1.google.sheets({ version: "v4", auth: authClientObject });
55
+ const nextAvailableRow = yield this.getNextAvailableRow(sheetId);
56
+ if (nextAvailableRow === -1) {
57
+ throw new Error("Failed to find the next available row.");
58
+ }
59
+ const startColumnIndex = 1; // Column B (index 1)
60
+ const range = `${String.fromCharCode(65 + startColumnIndex)}${nextAvailableRow}`;
61
+ // Append empty cells for column A (if needed) and the actual data for other columns
62
+ const valuesToAppend = Array(startColumnIndex).fill("");
63
+ valuesToAppend.push(...rowData);
64
+ yield sheets.spreadsheets.values.append({
65
+ spreadsheetId: sheetId,
66
+ range,
67
+ valueInputOption: "RAW",
68
+ requestBody: {
69
+ values: [rowData],
70
+ },
71
+ });
72
+ });
73
+ }
74
+ }
75
+ exports.googleSheetsAPIClient = new GoogleSheetsAPIClient(process.env.RIO_ENV || process.env.NEXT_PUBLIC_RIO_ENV);
package/build/index.d.ts CHANGED
@@ -72,6 +72,7 @@ export * from "./clients/cosigner-client";
72
72
  export * from "./clients/bitso-client";
73
73
  export * from "./clients/circle-client";
74
74
  export * from "./clients/coincover-client";
75
+ export * from "./clients/google-sheets-api-client";
75
76
  export * from "./helpers/get-user-helper";
76
77
  export * from "./helpers/get-processor-fees";
77
78
  export * from "./helpers/get-network-fees";
package/build/index.js CHANGED
@@ -88,6 +88,7 @@ __exportStar(require("./clients/cosigner-client"), exports);
88
88
  __exportStar(require("./clients/bitso-client"), exports);
89
89
  __exportStar(require("./clients/circle-client"), exports);
90
90
  __exportStar(require("./clients/coincover-client"), exports);
91
+ __exportStar(require("./clients/google-sheets-api-client"), exports);
91
92
  __exportStar(require("./helpers/get-user-helper"), exports);
92
93
  __exportStar(require("./helpers/get-processor-fees"), exports);
93
94
  __exportStar(require("./helpers/get-network-fees"), exports);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riocrypto/common-server",
3
- "version": "1.0.1720",
3
+ "version": "1.0.1721",
4
4
  "description": "",
5
5
  "main": "./build/index.js",
6
6
  "types": "./build/index.d.ts",
@@ -33,6 +33,7 @@
33
33
  "express": "^4.18.1",
34
34
  "express-validator": "^6.14.2",
35
35
  "fireblocks-sdk": "^4.0.0",
36
+ "googleapis": "^135.1.0",
36
37
  "he": "^1.2.0",
37
38
  "jsonwebtoken": "^9.0.1",
38
39
  "mongoose": "^7.6.8",