@8ms/helpers 1.1.40 → 1.1.43

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.
@@ -11,7 +11,11 @@ var getDate_1 = __importDefault(require("./getDate"));
11
11
  */
12
12
  var format = function (_a) {
13
13
  var input = _a.input, dateFormat = _a.dateFormat, _b = _a.setMidnight, setMidnight = _b === void 0 ? true : _b, _c = _a.setTimeZone, setTimeZone = _c === void 0 ? false : _c;
14
- var dateInstance = (0, getDate_1.default)({ input: input, setMidnight: setMidnight, setTimeZone: setTimeZone });
14
+ var dateInstance = (0, getDate_1.default)({
15
+ input: input,
16
+ setMidnight: setMidnight,
17
+ setTimeZone: setTimeZone,
18
+ });
15
19
  return (0, format_1.default)(dateInstance, dateFormat || 'yyyy-MM-dd');
16
20
  };
17
21
  exports.default = format;
@@ -8,5 +8,5 @@ declare type GetDateType = GetTimeZonedType & GetMidnightType & {
8
8
  * Convert a (number | string | Date) into a Date object.
9
9
  * As the user would be providing the input we don't want to change the timezone typically.
10
10
  */
11
- declare const getDate: ({ input, setMidnight, setTimeZone }: GetDateType) => Date;
11
+ declare const getDate: ({ input, setMidnight, setTimeZone, }: GetDateType) => Date;
12
12
  export default getDate;
@@ -45,38 +45,45 @@ var getDate = function (_a) {
45
45
  // 20220412
46
46
  if (8 === dateString.length) {
47
47
  var year = Number(dateString.substring(0, 4));
48
- var month = Number(dateString.substring(4, 6));
48
+ var month = Number(dateString.substring(4, 6)) - 1;
49
49
  var day = Number(dateString.substring(6, 8));
50
50
  date = new Date();
51
+ // Reset the date to the 1st initially at 1am
52
+ date.setDate(1);
53
+ date.setHours(1, 0, 0, 0);
51
54
  date.setFullYear(year);
52
- date.setMonth(month - 1);
55
+ date.setMonth(month);
53
56
  date.setDate(day);
54
- date.setHours(1, 0, 0, 0);
55
57
  }
56
58
  // 2022-04-12
57
59
  else if (10 === dateString.length) {
58
60
  var year = Number(dateString.substring(0, 4));
59
- var month = Number(dateString.substring(5, 7));
61
+ var month = Number(dateString.substring(5, 7)) - 1;
60
62
  var day = Number(dateString.substring(8, 10));
61
63
  date = new Date();
64
+ // Reset the date to the 1st initially at 1am
65
+ date.setDate(1);
66
+ date.setHours(1, 0, 0, 0);
62
67
  date.setFullYear(year);
63
- date.setMonth(month - 1);
68
+ date.setMonth(month);
64
69
  date.setDate(day);
65
- date.setHours(1, 0, 0, 0);
66
70
  }
67
71
  // 2022-04-12 01:01:01
68
72
  else if (19 === dateString.length) {
69
73
  var year = Number(dateString.substring(0, 4));
70
- var month = Number(dateString.substring(5, 7));
74
+ var month = Number(dateString.substring(5, 7)) - 1;
71
75
  var day = Number(dateString.substring(8, 10));
72
76
  var hours = Number(dateString.substring(11, 13));
73
77
  var minutes = Number(dateString.substring(14, 16));
74
78
  var seconds = Number(dateString.substring(17, 19));
75
79
  date = new Date();
80
+ // Reset the date to the 1st initially at 1am
81
+ date.setDate(1);
82
+ date.setHours(1, 0, 0, 0);
76
83
  date.setFullYear(year);
77
- date.setMonth(month - 1);
84
+ date.setMonth(month);
78
85
  date.setDate(day);
79
- date.setHours(hours, minutes, seconds, 0);
86
+ date.setHours(hours, minutes, seconds);
80
87
  }
81
88
  // Unsure date format, try anything
82
89
  else {
@@ -7,7 +7,7 @@ export declare const timeZoneLondon = "Europe/London";
7
7
  * We can't use getDate here as it becomes a circular issue.
8
8
  * Returns a new Date instance.
9
9
  */
10
- declare const getTimeZoned: ({ input, setTimeZone }: GetTimeZonedType & {
10
+ declare const getTimeZoned: ({ input, setTimeZone, }: GetTimeZonedType & {
11
11
  input: Date;
12
12
  }) => Date;
13
13
  export default getTimeZoned;
@@ -16,7 +16,22 @@ var getTimeZoned = function (_a) {
16
16
  var input = _a.input, _b = _a.setTimeZone, setTimeZone = _b === void 0 ? exports.timeZoneLondon : _b;
17
17
  var dateInstance = input;
18
18
  if (setTimeZone) {
19
- dateInstance = new Date((0, date_fns_tz_1.formatInTimeZone)(dateInstance, setTimeZone, 'yyyy-MM-dd HH:mm:ss'));
19
+ // Cannot convert YYYY-MM-DD into new Date as Safari doesn't support this
20
+ var dateString = (0, date_fns_tz_1.formatInTimeZone)(dateInstance, setTimeZone, 'yyyy-MM-dd HH:mm:ss');
21
+ var year = Number(dateString.substring(0, 4));
22
+ var month = Number(dateString.substring(5, 7)) - 1;
23
+ var day = Number(dateString.substring(8, 10));
24
+ var hours = Number(dateString.substring(11, 13));
25
+ var minutes = Number(dateString.substring(14, 16));
26
+ var seconds = Number(dateString.substring(17, 19));
27
+ dateInstance = new Date();
28
+ // Reset the date to the 1st initially at 1am
29
+ dateInstance.setDate(1);
30
+ dateInstance.setHours(1, 0, 0, 0);
31
+ dateInstance.setFullYear(year);
32
+ dateInstance.setMonth(month);
33
+ dateInstance.setDate(day);
34
+ dateInstance.setHours(hours, minutes, seconds);
20
35
  // Fixes the timezone offset due to daylight savings
21
36
  dateInstance = (0, addMinutes_1.default)(dateInstance, dateInstance.getTimezoneOffset() * -1);
22
37
  }
@@ -0,0 +1,2 @@
1
+ import writeFile from './writeFile';
2
+ export { writeFile, };
@@ -0,0 +1,8 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.writeFile = void 0;
7
+ var writeFile_1 = __importDefault(require("./writeFile"));
8
+ exports.writeFile = writeFile_1.default;
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Write a file to Google Drive.
3
+ */
4
+ export declare const writeFile: ({ GoogleStorageLib, bucket, credentials, data, key }: {
5
+ GoogleStorageLib: any;
6
+ bucket: string;
7
+ credentials: any;
8
+ data: any;
9
+ key: string;
10
+ }) => Promise<any>;
11
+ export default writeFile;
@@ -0,0 +1,87 @@
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
+ exports.writeFile = void 0;
43
+ var stream_1 = __importDefault(require("stream"));
44
+ /**
45
+ * Write a file to Google Drive.
46
+ */
47
+ var writeFile = function (_a) {
48
+ var GoogleStorageLib = _a.GoogleStorageLib, bucket = _a.bucket, credentials = _a.credentials, data = _a.data, key = _a.key;
49
+ return __awaiter(void 0, void 0, void 0, function () {
50
+ var Storage, storage, data_stream, google_file;
51
+ return __generator(this, function (_b) {
52
+ switch (_b.label) {
53
+ case 0:
54
+ Storage = GoogleStorageLib.Storage;
55
+ storage = new Storage({
56
+ credentials: {
57
+ client_email: credentials.client_email,
58
+ private_key: credentials.private_key,
59
+ },
60
+ });
61
+ data_stream = new stream_1.default.PassThrough();
62
+ google_file = storage.bucket(bucket)
63
+ .file(key);
64
+ data_stream.push(data);
65
+ data_stream.push(null);
66
+ return [4 /*yield*/, new Promise(function (resolve, reject) {
67
+ data_stream.pipe(google_file.createWriteStream({
68
+ contentType: 'auto',
69
+ resumable: false,
70
+ validation: false,
71
+ metadata: {},
72
+ }))
73
+ .on('error', function (error) {
74
+ reject(error);
75
+ })
76
+ .on('finish', function () {
77
+ console.log("File uploaded successfully.");
78
+ resolve(true);
79
+ });
80
+ })];
81
+ case 1: return [2 /*return*/, _b.sent()];
82
+ }
83
+ });
84
+ });
85
+ };
86
+ exports.writeFile = writeFile;
87
+ exports.default = exports.writeFile;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@8ms/helpers",
3
- "version": "1.1.40",
3
+ "version": "1.1.43",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/8millionstories-organisation/8ms-helpers-ts.git"
@@ -21,6 +21,7 @@
21
21
  "@babel/preset-env": "7.18.2",
22
22
  "@babel/preset-flow": "7.17.12",
23
23
  "@babel/preset-typescript": "7.17.12",
24
+ "@google-cloud/storage": "6.1.0",
24
25
  "@types/jest": "27.5.1",
25
26
  "@types/lodash": "4.14.182",
26
27
  "@types/node": "17.0.35",