@8ms/helpers 1.1.15 → 1.1.18

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,4 @@
1
+ declare const getHandlerPath: ({ context }: {
2
+ context: string;
3
+ }) => string;
4
+ export default getHandlerPath;
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ var getHandlerPath = function (_a) {
4
+ var context = _a.context;
5
+ return "".concat(context.split(process.cwd())[1].substring(1)
6
+ .replace(/\\/g, '/'));
7
+ };
8
+ exports.default = getHandlerPath;
@@ -1,4 +1,5 @@
1
1
  import getClient from './getClient';
2
+ import getHandlerPath from './getHandlerPath';
2
3
  import invoke from './invoke';
3
4
  export type {};
4
- export { getClient, invoke, };
5
+ export { getClient, getHandlerPath, invoke, };
@@ -3,8 +3,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.invoke = exports.getClient = void 0;
6
+ exports.invoke = exports.getHandlerPath = exports.getClient = void 0;
7
7
  var getClient_1 = __importDefault(require("./getClient"));
8
8
  exports.getClient = getClient_1.default;
9
+ var getHandlerPath_1 = __importDefault(require("./getHandlerPath"));
10
+ exports.getHandlerPath = getHandlerPath_1.default;
9
11
  var invoke_1 = __importDefault(require("./invoke"));
10
12
  exports.invoke = invoke_1.default;
@@ -0,0 +1,14 @@
1
+ export declare type CopyFileType = {
2
+ bucket: string;
3
+ key: string;
4
+ };
5
+ /**
6
+ * Copy a file from one bucket/path to another bucket/path.
7
+ */
8
+ declare const copyFile: ({ S3Lib, client, from, to }: {
9
+ S3Lib: any;
10
+ client: any;
11
+ from: CopyFileType;
12
+ to: CopyFileType;
13
+ }) => Promise<void>;
14
+ export default copyFile;
@@ -0,0 +1,62 @@
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 __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ /**
40
+ * Copy a file from one bucket/path to another bucket/path.
41
+ */
42
+ var copyFile = function (_a) {
43
+ var S3Lib = _a.S3Lib, client = _a.client, from = _a.from, to = _a.to;
44
+ return __awaiter(void 0, void 0, void 0, function () {
45
+ var CopyObjectCommand;
46
+ return __generator(this, function (_b) {
47
+ switch (_b.label) {
48
+ case 0:
49
+ CopyObjectCommand = S3Lib.CopyObjectCommand;
50
+ return [4 /*yield*/, client.send(new CopyObjectCommand({
51
+ Bucket: to.bucket,
52
+ CopySource: encodeURIComponent("".concat(from.bucket, "/").concat(from.key)),
53
+ Key: to.key,
54
+ }))];
55
+ case 1:
56
+ _b.sent();
57
+ return [2 /*return*/];
58
+ }
59
+ });
60
+ });
61
+ };
62
+ exports.default = copyFile;
@@ -1,3 +1,4 @@
1
+ import copyFile from './copyFile';
1
2
  import deleteFile from './deleteFile';
2
3
  import deleteFiles from './deleteFiles';
3
4
  import deleteFolder from './deleteFolder';
@@ -6,10 +7,11 @@ import getPresignedPost from './getPresignedPost';
6
7
  import getSignedUrl from './getSignedUrl';
7
8
  import listFiles from './listFiles';
8
9
  import listFolders from './listFolders';
10
+ import moveFile from './moveFile';
9
11
  import readBuffer, { ReadBufferType } from './readBuffer';
10
12
  import readFile, { ReadFileType, ReadType } from './readFile';
11
13
  import writeFile from './writeFile';
12
14
  import writeGlueJsonFile from './writeGlueJsonFile';
13
15
  import writePresignedPost from './writePresignedPost';
14
16
  export type { ReadType, ReadBufferType, ReadFileType, };
15
- export { deleteFolder, deleteFile, deleteFiles, getClient, getPresignedPost, getSignedUrl, listFiles, listFolders, readBuffer, readFile, writeFile, writeGlueJsonFile, writePresignedPost, };
17
+ export { copyFile, deleteFolder, deleteFile, deleteFiles, getClient, getPresignedPost, getSignedUrl, listFiles, listFolders, moveFile, readBuffer, readFile, writeFile, writeGlueJsonFile, writePresignedPost, };
@@ -3,7 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.writePresignedPost = exports.writeGlueJsonFile = exports.writeFile = exports.readFile = exports.readBuffer = exports.listFolders = exports.listFiles = exports.getSignedUrl = exports.getPresignedPost = exports.getClient = exports.deleteFiles = exports.deleteFile = exports.deleteFolder = void 0;
6
+ exports.writePresignedPost = exports.writeGlueJsonFile = exports.writeFile = exports.readFile = exports.readBuffer = exports.moveFile = exports.listFolders = exports.listFiles = exports.getSignedUrl = exports.getPresignedPost = exports.getClient = exports.deleteFiles = exports.deleteFile = exports.deleteFolder = exports.copyFile = void 0;
7
+ var copyFile_1 = __importDefault(require("./copyFile"));
8
+ exports.copyFile = copyFile_1.default;
7
9
  var deleteFile_1 = __importDefault(require("./deleteFile"));
8
10
  exports.deleteFile = deleteFile_1.default;
9
11
  var deleteFiles_1 = __importDefault(require("./deleteFiles"));
@@ -20,6 +22,8 @@ var listFiles_1 = __importDefault(require("./listFiles"));
20
22
  exports.listFiles = listFiles_1.default;
21
23
  var listFolders_1 = __importDefault(require("./listFolders"));
22
24
  exports.listFolders = listFolders_1.default;
25
+ var moveFile_1 = __importDefault(require("./moveFile"));
26
+ exports.moveFile = moveFile_1.default;
23
27
  var readBuffer_1 = __importDefault(require("./readBuffer"));
24
28
  exports.readBuffer = readBuffer_1.default;
25
29
  var readFile_1 = __importDefault(require("./readFile"));
@@ -0,0 +1,11 @@
1
+ import { CopyFileType } from './copyFile';
2
+ /**
3
+ * It's not possible to just move or rename a file, you must copy then delete the old file.
4
+ */
5
+ declare const moveFile: ({ S3Lib, client, from, to }: {
6
+ S3Lib: any;
7
+ client: any;
8
+ from: CopyFileType;
9
+ to: CopyFileType;
10
+ }) => Promise<void>;
11
+ export default moveFile;
@@ -0,0 +1,73 @@
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 __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ var copyFile_1 = __importDefault(require("./copyFile"));
43
+ var deleteFile_1 = __importDefault(require("./deleteFile"));
44
+ /**
45
+ * It's not possible to just move or rename a file, you must copy then delete the old file.
46
+ */
47
+ var moveFile = function (_a) {
48
+ var S3Lib = _a.S3Lib, client = _a.client, from = _a.from, to = _a.to;
49
+ return __awaiter(void 0, void 0, void 0, function () {
50
+ return __generator(this, function (_b) {
51
+ switch (_b.label) {
52
+ case 0: return [4 /*yield*/, (0, copyFile_1.default)({
53
+ S3Lib: S3Lib,
54
+ client: client,
55
+ from: from,
56
+ to: to,
57
+ })];
58
+ case 1:
59
+ _b.sent();
60
+ return [4 /*yield*/, (0, deleteFile_1.default)({
61
+ S3Lib: S3Lib,
62
+ bucket: from.bucket,
63
+ client: client,
64
+ key: from.key,
65
+ })];
66
+ case 2:
67
+ _b.sent();
68
+ return [2 /*return*/];
69
+ }
70
+ });
71
+ });
72
+ };
73
+ exports.default = moveFile;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Convert an excel date "e.g. 44216" into a JavaScript date object.
3
+ * https://stackoverflow.com/questions/16229494/converting-excel-date-serial-number-to-date-using-javascript
4
+ */
5
+ declare const getExcelDate: ({ input }: {
6
+ input: number;
7
+ }) => Date;
8
+ export default getExcelDate;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Convert an excel date "e.g. 44216" into a JavaScript date object.
5
+ * https://stackoverflow.com/questions/16229494/converting-excel-date-serial-number-to-date-using-javascript
6
+ */
7
+ var getExcelDate = function (_a) {
8
+ var input = _a.input;
9
+ var utcDates = Math.floor(input - 25569);
10
+ var utcValue = utcDates * 86400;
11
+ var dateInfo = new Date(utcValue * 1000);
12
+ var fractionalDay = input - Math.floor(input) + 0.0000001;
13
+ var totalSeconds = Math.floor(86400 * fractionalDay);
14
+ var seconds = totalSeconds % 60;
15
+ totalSeconds -= seconds;
16
+ var hours = Math.floor(totalSeconds / (60 * 60));
17
+ var minutes = Math.floor(totalSeconds / 60) % 60;
18
+ return new Date(dateInfo.getFullYear(), dateInfo.getMonth(), dateInfo.getDate(), hours, minutes, seconds);
19
+ };
20
+ exports.default = getExcelDate;
@@ -2,7 +2,7 @@ import { FinancialYearType } from './financialYear';
2
2
  /**
3
3
  * Get the current financial year.
4
4
  */
5
- declare const getFinancialYear: ({ year }: {
5
+ declare const getFinancialYear: ({ year }?: {
6
6
  year?: number;
7
7
  }) => FinancialYearType;
8
8
  export default getFinancialYear;
@@ -12,7 +12,7 @@ var getToday_1 = __importDefault(require("./getToday"));
12
12
  * Get the current financial year.
13
13
  */
14
14
  var getFinancialYear = function (_a) {
15
- var _b = _a.year, year = _b === void 0 ? undefined : _b;
15
+ var _b = _a === void 0 ? {} : _a, _c = _b.year, year = _c === void 0 ? undefined : _c;
16
16
  // Either use the current year or a specified year
17
17
  var financialYear = year;
18
18
  if (undefined === year) {
@@ -8,6 +8,7 @@ import format from './format';
8
8
  import getDate from './getDate';
9
9
  import getDurationHours from './getDurationHours';
10
10
  import getDurationMinutes from './getDurationMinutes';
11
+ import getExcelDate from './getExcelDate';
11
12
  import getFinancialYear from './getFinancialYear';
12
13
  import getFinancialYearToDate from './getFinancialYearToDate';
13
14
  import getFinancialYearWeeks from './getFinancialYearWeeks';
@@ -31,4 +32,4 @@ import { predefinedTimeframes, PredefinedTimeframesType } from './predefinedTime
31
32
  import { TimeframeType } from './timeframe';
32
33
  import { timeframes } from './timeframes';
33
34
  export type { DateType, DurationType, FinancialYearType, FinancialYearWeekType, PredefinedTimeframesType, TimeframeType, };
34
- export { durations, durationComparisons, predefinedTimeframes, timeframes, format, getDate, getDurationHours, getDurationMinutes, getFinancialYear, getFinancialYearToDate, getFinancialYearWeeks, getLastWeek, getMax, getMin, getMonday, getNumber, getPredefinedTimeframe, getSunday, getThisWeek, getToday, getTwoWeeksAgo, getWeeksAgo, getYesterday, isDateValid, isLastWeek, isThisWeek, parseExcelDate, };
35
+ export { durations, durationComparisons, predefinedTimeframes, timeframes, format, getDate, getDurationHours, getDurationMinutes, getExcelDate, getFinancialYear, getFinancialYearToDate, getFinancialYearWeeks, getLastWeek, getMax, getMin, getMonday, getNumber, getPredefinedTimeframe, getSunday, getThisWeek, getToday, getTwoWeeksAgo, getWeeksAgo, getYesterday, isDateValid, isLastWeek, isThisWeek, parseExcelDate, };
@@ -3,7 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.parseExcelDate = exports.isThisWeek = exports.isLastWeek = exports.isDateValid = exports.getYesterday = exports.getWeeksAgo = exports.getTwoWeeksAgo = exports.getToday = exports.getThisWeek = exports.getSunday = exports.getPredefinedTimeframe = exports.getNumber = exports.getMonday = exports.getMin = exports.getMax = exports.getLastWeek = exports.getFinancialYearWeeks = exports.getFinancialYearToDate = exports.getFinancialYear = exports.getDurationMinutes = exports.getDurationHours = exports.getDate = exports.format = exports.timeframes = exports.predefinedTimeframes = exports.durationComparisons = exports.durations = void 0;
6
+ exports.parseExcelDate = exports.isThisWeek = exports.isLastWeek = exports.isDateValid = exports.getYesterday = exports.getWeeksAgo = exports.getTwoWeeksAgo = exports.getToday = exports.getThisWeek = exports.getSunday = exports.getPredefinedTimeframe = exports.getNumber = exports.getMonday = exports.getMin = exports.getMax = exports.getLastWeek = exports.getFinancialYearWeeks = exports.getFinancialYearToDate = exports.getFinancialYear = exports.getExcelDate = exports.getDurationMinutes = exports.getDurationHours = exports.getDate = exports.format = exports.timeframes = exports.predefinedTimeframes = exports.durationComparisons = exports.durations = void 0;
7
7
  var durationComparisons_1 = require("./durationComparisons");
8
8
  Object.defineProperty(exports, "durationComparisons", { enumerable: true, get: function () { return durationComparisons_1.durationComparisons; } });
9
9
  var durations_1 = require("./durations");
@@ -16,6 +16,8 @@ var getDurationHours_1 = __importDefault(require("./getDurationHours"));
16
16
  exports.getDurationHours = getDurationHours_1.default;
17
17
  var getDurationMinutes_1 = __importDefault(require("./getDurationMinutes"));
18
18
  exports.getDurationMinutes = getDurationMinutes_1.default;
19
+ var getExcelDate_1 = __importDefault(require("./getExcelDate"));
20
+ exports.getExcelDate = getExcelDate_1.default;
19
21
  var getFinancialYear_1 = __importDefault(require("./getFinancialYear"));
20
22
  exports.getFinancialYear = getFinancialYear_1.default;
21
23
  var getFinancialYearToDate_1 = __importDefault(require("./getFinancialYearToDate"));
@@ -0,0 +1,20 @@
1
+ export declare type AssociateDataRequestType = {
2
+ spreadsheetId: string;
3
+ ranges: [
4
+ format: string,
5
+ defaultRange: string,
6
+ heading: string,
7
+ data: string
8
+ ];
9
+ dateTimeRender: 'FORMATTED_STRING' | 'SERIAL_NUMBER';
10
+ valueRender: 'FORMATTED_VALUE' | 'UNFORMATTED_VALUE' | 'FORMULA';
11
+ };
12
+ /**
13
+ * Make a batch get to Google Sheets to retrieve the data correctly formatted, with default values provided.
14
+ */
15
+ declare const getAssociatedData: ({ SheetsLib, client, request }: {
16
+ SheetsLib: any;
17
+ client: any;
18
+ request: AssociateDataRequestType;
19
+ }) => Promise<object[]>;
20
+ export default getAssociatedData;
@@ -0,0 +1,100 @@
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 __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ var __importDefault = (this && this.__importDefault) || function (mod) {
39
+ return (mod && mod.__esModule) ? mod : { "default": mod };
40
+ };
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ var isUndefined_1 = __importDefault(require("lodash/isUndefined"));
43
+ var getBatchData_1 = __importDefault(require("./getBatchData"));
44
+ /**
45
+ * Make a batch get to Google Sheets to retrieve the data correctly formatted, with default values provided.
46
+ */
47
+ var getAssociatedData = function (_a) {
48
+ var SheetsLib = _a.SheetsLib, client = _a.client, request = _a.request;
49
+ return __awaiter(void 0, void 0, void 0, function () {
50
+ var apiResponse, template, response, initialRangeLength, i, rowIndex, row, columnIndex, refValue, value;
51
+ return __generator(this, function (_b) {
52
+ switch (_b.label) {
53
+ case 0: return [4 /*yield*/, (0, getBatchData_1.default)({
54
+ SheetsLib: SheetsLib,
55
+ client: client,
56
+ spreadsheetId: request.spreadsheetId,
57
+ ranges: request.ranges,
58
+ dateTimeRender: request.dateTimeRender,
59
+ valueRender: request.valueRender,
60
+ })];
61
+ case 1:
62
+ apiResponse = _b.sent();
63
+ template = [];
64
+ response = [];
65
+ // Missing ranges or too many ranges
66
+ if (4 !== apiResponse.valueRanges.length) {
67
+ throw new Error("Associated data response length must be 4.");
68
+ }
69
+ initialRangeLength = apiResponse.valueRanges[0].values[0].length;
70
+ // Loop through the headings
71
+ for (i = 0; i < initialRangeLength; i++) {
72
+ template.push({
73
+ format: apiResponse.valueRanges[0].values[0][i],
74
+ default: apiResponse.valueRanges[1].values[0][i],
75
+ heading: apiResponse.valueRanges[2].values[0][i],
76
+ index: i,
77
+ });
78
+ }
79
+ // console.log('template', template);
80
+ // Loop through each row of data
81
+ if (!(0, isUndefined_1.default)(apiResponse.valueRanges[3].values)) {
82
+ for (rowIndex = 0; rowIndex < apiResponse.valueRanges[3].values.length; rowIndex++) {
83
+ row = {};
84
+ // Loop through each column within the row
85
+ for (columnIndex = 0; columnIndex < apiResponse.valueRanges[3].values[rowIndex].length; columnIndex++) {
86
+ refValue = apiResponse.valueRanges[3].values[rowIndex][columnIndex];
87
+ value = ('' === refValue ? template[columnIndex]['default'] : refValue);
88
+ // Add this to our row
89
+ row[template[columnIndex]['heading']] = value;
90
+ }
91
+ // Add the row to our response
92
+ response.push(row);
93
+ }
94
+ }
95
+ return [2 /*return*/, response];
96
+ }
97
+ });
98
+ });
99
+ };
100
+ exports.default = getAssociatedData;
@@ -0,0 +1,20 @@
1
+ declare type BatchRangeResponse = {
2
+ spreadsheetId: string;
3
+ valueRanges: {
4
+ range: string;
5
+ majorDimension: 'rows' | 'dimension';
6
+ values: [
7
+ any[]
8
+ ];
9
+ }[];
10
+ };
11
+ declare type BatchDataRequestType = {
12
+ SheetsLib: any;
13
+ client: any;
14
+ spreadsheetId: string;
15
+ ranges: string[];
16
+ dateTimeRender?: string;
17
+ valueRender?: string;
18
+ };
19
+ declare const getBatchData: ({ SheetsLib, client, spreadsheetId, ranges, dateTimeRender, valueRender, }: BatchDataRequestType) => Promise<BatchRangeResponse>;
20
+ export default getBatchData;
@@ -0,0 +1,64 @@
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 __generator = (this && this.__generator) || function (thisArg, body) {
12
+ var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
13
+ return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
14
+ function verb(n) { return function (v) { return step([n, v]); }; }
15
+ function step(op) {
16
+ if (f) throw new TypeError("Generator is already executing.");
17
+ while (_) try {
18
+ if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
19
+ if (y = 0, t) op = [op[0] & 2, t.value];
20
+ switch (op[0]) {
21
+ case 0: case 1: t = op; break;
22
+ case 4: _.label++; return { value: op[1], done: false };
23
+ case 5: _.label++; y = op[1]; op = [0]; continue;
24
+ case 7: op = _.ops.pop(); _.trys.pop(); continue;
25
+ default:
26
+ if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
27
+ if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
28
+ if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
29
+ if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
30
+ if (t[2]) _.ops.pop();
31
+ _.trys.pop(); continue;
32
+ }
33
+ op = body.call(thisArg, _);
34
+ } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
35
+ if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
36
+ }
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ var getBatchData = function (_a) {
40
+ var SheetsLib = _a.SheetsLib, client = _a.client, spreadsheetId = _a.spreadsheetId, ranges = _a.ranges, _b = _a.dateTimeRender, dateTimeRender = _b === void 0 ? 'FORMATTED_STRING' : _b, _c = _a.valueRender, valueRender = _c === void 0 ? 'UNFORMATTED_VALUE' : _c;
41
+ return __awaiter(void 0, void 0, void 0, function () {
42
+ var request, data;
43
+ return __generator(this, function (_d) {
44
+ switch (_d.label) {
45
+ case 0:
46
+ request = {
47
+ auth: client,
48
+ dateTimeRenderOption: dateTimeRender,
49
+ ranges: ranges,
50
+ spreadsheetId: spreadsheetId,
51
+ valueRenderOption: valueRender,
52
+ };
53
+ return [4 /*yield*/, SheetsLib.sheets('v4')
54
+ .spreadsheets
55
+ .values
56
+ .batchGet(request)];
57
+ case 1:
58
+ data = (_d.sent()).data;
59
+ return [2 /*return*/, data];
60
+ }
61
+ });
62
+ });
63
+ };
64
+ exports.default = getBatchData;
@@ -1,3 +1,6 @@
1
1
  import getAuth from './getAuth';
2
+ import getAssociatedData from './getAssociatedData';
3
+ import getBatchData from './getBatchData';
4
+ import isCellNa from './isCellNa';
2
5
  export type {};
3
- export { getAuth, };
6
+ export { getAssociatedData, getAuth, getBatchData, isCellNa, };
@@ -3,6 +3,12 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.getAuth = void 0;
6
+ exports.isCellNa = exports.getBatchData = exports.getAuth = exports.getAssociatedData = void 0;
7
7
  var getAuth_1 = __importDefault(require("./getAuth"));
8
8
  exports.getAuth = getAuth_1.default;
9
+ var getAssociatedData_1 = __importDefault(require("./getAssociatedData"));
10
+ exports.getAssociatedData = getAssociatedData_1.default;
11
+ var getBatchData_1 = __importDefault(require("./getBatchData"));
12
+ exports.getBatchData = getBatchData_1.default;
13
+ var isCellNa_1 = __importDefault(require("./isCellNa"));
14
+ exports.isCellNa = isCellNa_1.default;
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Noticed sometimes Google Sheets can struggle with import XML resulting to N/A values.
3
+ */
4
+ declare const isCellNa: ({ input }: {
5
+ input: any;
6
+ }) => boolean;
7
+ export default isCellNa;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ /**
4
+ * Noticed sometimes Google Sheets can struggle with import XML resulting to N/A values.
5
+ */
6
+ var isCellNa = function (_a) {
7
+ var input = _a.input;
8
+ return '#N/A' === input;
9
+ };
10
+ exports.default = isCellNa;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@8ms/helpers",
3
- "version": "1.1.15",
3
+ "version": "1.1.18",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/8millionstories-organisation/8ms-helpers-ts.git"