@8ms/helpers 1.7.0 → 1.10.0

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.
@@ -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
- const getUnixTime_1 = __importDefault(require("date-fns/getUnixTime"));
6
+ const date_fns_1 = require("date-fns");
7
7
  const isResponse200_1 = __importDefault(require("../isResponse200"));
8
8
  /**
9
9
  * Similar function to reading the S3 file, but instead of a text file return a buffer.
@@ -11,7 +11,7 @@ const isResponse200_1 = __importDefault(require("../isResponse200"));
11
11
  const readBuffer = async ({ bucket, key }) => {
12
12
  let response = {
13
13
  buffer: undefined,
14
- now: (0, getUnixTime_1.default)(new Date()),
14
+ now: (0, date_fns_1.getUnixTime)(new Date()),
15
15
  modified: {
16
16
  unix: null,
17
17
  vsNow: {
@@ -4,13 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.readFileDefault = void 0;
7
- const differenceInDays_1 = __importDefault(require("date-fns/differenceInDays"));
8
- const differenceInHours_1 = __importDefault(require("date-fns/differenceInHours"));
9
- const differenceInMinutes_1 = __importDefault(require("date-fns/differenceInMinutes"));
10
- const differenceInMonths_1 = __importDefault(require("date-fns/differenceInMonths"));
11
- const getHours_1 = __importDefault(require("date-fns/getHours"));
12
- const getMinutes_1 = __importDefault(require("date-fns/getMinutes"));
13
- const getUnixTime_1 = __importDefault(require("date-fns/getUnixTime"));
7
+ const date_fns_1 = require("date-fns");
8
+ const date_fns_2 = require("date-fns");
9
+ const date_fns_3 = require("date-fns");
10
+ const date_fns_4 = require("date-fns");
11
+ const date_fns_5 = require("date-fns");
12
+ const date_fns_6 = require("date-fns");
13
+ const date_fns_7 = require("date-fns");
14
14
  const getToday_1 = __importDefault(require("../../date/getToday"));
15
15
  const getDate_1 = __importDefault(require("../../date/getDate"));
16
16
  const getStringFromStream_1 = __importDefault(require("../../string/getStringFromStream"));
@@ -42,7 +42,7 @@ const readFile = async ({ bucket, key, isJson }) => {
42
42
  const today = (0, getToday_1.default)({
43
43
  setMidnight: false
44
44
  });
45
- response.now = (0, getUnixTime_1.default)(today);
45
+ response.now = (0, date_fns_7.getUnixTime)(today);
46
46
  const doesFileExist = await (0, isFileExists_1.default)({
47
47
  bucket,
48
48
  key
@@ -58,15 +58,15 @@ const readFile = async ({ bucket, key, isJson }) => {
58
58
  let now = today;
59
59
  let modified = (0, getDate_1.default)({ input: apiResponse.LastModified, setMidnight: false });
60
60
  // Convert the date to unix
61
- response.modified.unix = (0, getUnixTime_1.default)(modified);
61
+ response.modified.unix = (0, date_fns_7.getUnixTime)(modified);
62
62
  // Compare now to unix
63
- response.modified.vsNow.months = (0, differenceInMonths_1.default)(now, modified);
64
- response.modified.vsNow.days = (0, differenceInDays_1.default)(now, modified);
65
- response.modified.vsNow.hours = (0, differenceInHours_1.default)(now, modified);
66
- response.modified.vsNow.minutes = (0, differenceInMinutes_1.default)(now, modified);
63
+ response.modified.vsNow.months = (0, date_fns_4.differenceInMonths)(now, modified);
64
+ response.modified.vsNow.days = (0, date_fns_1.differenceInDays)(now, modified);
65
+ response.modified.vsNow.hours = (0, date_fns_2.differenceInHours)(now, modified);
66
+ response.modified.vsNow.minutes = (0, date_fns_3.differenceInMinutes)(now, modified);
67
67
  // Compare now to midnight
68
- response.modified.vsMidnight.hours = (0, getHours_1.default)(now);
69
- response.modified.vsMidnight.minutes = (0, getMinutes_1.default)(now);
68
+ response.modified.vsMidnight.hours = (0, date_fns_5.getHours)(now);
69
+ response.modified.vsMidnight.minutes = (0, date_fns_6.getMinutes)(now);
70
70
  // Convert stream into a string
71
71
  response.body = await (0, getStringFromStream_1.default)({ stream: apiResponse.Body });
72
72
  // If we need to return JSON, parse it. On error return undefined
package/date/format.js CHANGED
@@ -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
- const format_1 = __importDefault(require("date-fns/format"));
6
+ const date_fns_1 = require("date-fns");
7
7
  const getDate_1 = __importDefault(require("./getDate"));
8
8
  /**
9
9
  * Convert a (number | string | Date) into a "yyyy-MM-dd" string or a specified format.
@@ -15,6 +15,6 @@ const format = ({ input, dateFormat, setMidnight = true, setTimeZone = false })
15
15
  setMidnight,
16
16
  setTimeZone,
17
17
  });
18
- return (0, format_1.default)(dateInstance, dateFormat || 'yyyy-MM-dd');
18
+ return (0, date_fns_1.format)(dateInstance, dateFormat || 'yyyy-MM-dd');
19
19
  };
20
20
  exports.default = format;
package/date/getDate.d.ts CHANGED
@@ -8,5 +8,5 @@ type GetDate = GetTimeZoned & GetMidnight & {
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 }: GetDate) => Date;
11
+ declare const getDate: (props: GetDate) => Date;
12
12
  export default getDate;
package/date/getDate.js CHANGED
@@ -1,48 +1,32 @@
1
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
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
26
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
4
  };
28
5
  Object.defineProperty(exports, "__esModule", { value: true });
29
6
  const getMidnight_1 = __importDefault(require("./getMidnight"));
30
- const getTimeZoned_1 = __importStar(require("./getTimeZoned"));
7
+ const getTimeZoned_1 = __importDefault(require("./getTimeZoned"));
8
+ const date_fns_1 = require("date-fns");
31
9
  /**
32
10
  * Convert a (number | string | Date) into a Date object.
33
11
  * As the user would be providing the input we don't want to change the timezone typically.
34
12
  */
35
- const getDate = ({ input, setMidnight = true, setTimeZone = getTimeZoned_1.timeZoneLondon }) => {
13
+ const getDate = (props) => {
36
14
  let date;
37
15
  // Already date instance - no change
38
- if (input instanceof Date) {
39
- date = new Date(input.valueOf());
16
+ if (props.input instanceof Date) {
17
+ date = new Date(props.input.valueOf());
40
18
  }
41
- else if ('string' === typeof input || 'number' === typeof input) {
19
+ else if ('string' === typeof props.input || 'number' === typeof props.input) {
42
20
  // Convert the input into string
43
- const dateString = input.toString();
21
+ const dateString = props.input.toString();
22
+ const regexes = {
23
+ ymdNoDash: new RegExp('^[0-9]{8}$'),
24
+ ymdDash: new RegExp('^[0-9]{4}-[0-9]{2}-[0-9]{2}$'),
25
+ ymdHisDash: new RegExp('^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$'),
26
+ };
27
+ // console.log('regexes.ymdHisDash.test(dateString) ',regexes.ymdHisDash.test(dateString));
44
28
  // 20220412
45
- if (8 === dateString.length) {
29
+ if (regexes.ymdNoDash.test(dateString)) {
46
30
  const year = Number(dateString.substring(0, 4));
47
31
  const month = Number(dateString.substring(4, 6)) - 1;
48
32
  const day = Number(dateString.substring(6, 8));
@@ -53,9 +37,12 @@ const getDate = ({ input, setMidnight = true, setTimeZone = getTimeZoned_1.timeZ
53
37
  date.setFullYear(year);
54
38
  date.setMonth(month);
55
39
  date.setDate(day);
40
+ date.setHours(0, 0, 0, 0);
41
+ // Resolve timezone offset
42
+ date = (0, date_fns_1.addMinutes)(date, date.getTimezoneOffset() * -1);
56
43
  }
57
44
  // 2022-04-12
58
- else if (10 === dateString.length) {
45
+ else if (regexes.ymdDash.test(dateString)) {
59
46
  const year = Number(dateString.substring(0, 4));
60
47
  const month = Number(dateString.substring(5, 7)) - 1;
61
48
  const day = Number(dateString.substring(8, 10));
@@ -66,9 +53,12 @@ const getDate = ({ input, setMidnight = true, setTimeZone = getTimeZoned_1.timeZ
66
53
  date.setFullYear(year);
67
54
  date.setMonth(month);
68
55
  date.setDate(day);
56
+ date.setHours(0, 0, 0, 0);
57
+ // Resolve timezone offset
58
+ date = (0, date_fns_1.addMinutes)(date, date.getTimezoneOffset() * -1);
69
59
  }
70
60
  // 2022-04-12 01:01:01
71
- else if (19 === dateString.length) {
61
+ else if (regexes.ymdHisDash.test(dateString)) {
72
62
  const year = Number(dateString.substring(0, 4));
73
63
  const month = Number(dateString.substring(5, 7)) - 1;
74
64
  const day = Number(dateString.substring(8, 10));
@@ -83,16 +73,28 @@ const getDate = ({ input, setMidnight = true, setTimeZone = getTimeZoned_1.timeZ
83
73
  date.setMonth(month);
84
74
  date.setDate(day);
85
75
  date.setHours(hours, minutes, seconds);
76
+ // Resolve timezone offset
77
+ date = (0, date_fns_1.addMinutes)(date, date.getTimezoneOffset() * -1);
86
78
  }
87
79
  // Unsure date format, try anything
88
80
  else {
89
81
  date = new Date(dateString);
90
82
  }
91
83
  }
84
+ // console.log('date - before midnight', date);
85
+ // console.log('date', date.getTimezoneOffset());
92
86
  // Reset to midnight
93
- date = (0, getMidnight_1.default)({ input: date, setMidnight });
94
- // Convert to London time
95
- date = (0, getTimeZoned_1.default)({ input: date, setTimeZone });
87
+ date = (0, getMidnight_1.default)({
88
+ input: date,
89
+ setMidnight: props?.setMidnight,
90
+ });
91
+ // console.log('date - after midnight', date);
92
+ // console.log(' props?.setTimeZone', props?.setTimeZone);
93
+ // Convert to timezone
94
+ date = (0, getTimeZoned_1.default)({
95
+ input: date,
96
+ setTimeZone: props?.setTimeZone,
97
+ });
96
98
  return date;
97
99
  };
98
100
  exports.default = getDate;
@@ -3,10 +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
- const addDays_1 = __importDefault(require("date-fns/addDays"));
6
+ const date_fns_1 = require("date-fns");
7
7
  const format_1 = __importDefault(require("./format"));
8
8
  const getDate_1 = __importDefault(require("./getDate"));
9
- const addHours_1 = __importDefault(require("date-fns/addHours"));
9
+ const date_fns_2 = require("date-fns");
10
10
  /**
11
11
  * Similar to date-fns' eachDayOfInterval, however the timezone messes this function up.
12
12
  * https://date-fns.org/v2.28.0/docs/eachDayOfInterval
@@ -16,7 +16,7 @@ const getDatesBetween = ({ end, start }) => {
16
16
  let response = [];
17
17
  let endDate = (0, getDate_1.default)({ input: end });
18
18
  // Increase the end date by 2 hours so it can handle the change in hours
19
- endDate = (0, addHours_1.default)(endDate, 2);
19
+ endDate = (0, date_fns_2.addHours)(endDate, 2);
20
20
  // Use a string to ensure there's no changes with the timezone
21
21
  let startString = (0, format_1.default)({ input: start });
22
22
  // Create a pointer Date instance
@@ -34,12 +34,12 @@ const getDatesBetween = ({ end, start }) => {
34
34
  // Add this new entry to our response
35
35
  response.push(entry);
36
36
  // Move to the next day
37
- pointer = (0, addDays_1.default)(pointer, 1);
37
+ pointer = (0, date_fns_1.addDays)(pointer, 1);
38
38
  // Daylight saving (month is 0-base)
39
39
  // -1 hour between March and September, add an hour if 0 hours
40
40
  // +1 hour between October and February
41
41
  if (pointer.getMonth() >= 2 && pointer.getMonth() < 8 && 0 === pointer.getHours()) {
42
- pointer = (0, addHours_1.default)(pointer, 1);
42
+ pointer = (0, date_fns_2.addHours)(pointer, 1);
43
43
  }
44
44
  }
45
45
  return response;
@@ -1,8 +1,9 @@
1
+ type GetDurationHours = {
2
+ seconds: number;
3
+ };
1
4
  /**
2
5
  * Convert a number of seconds into HH:MM:SS
3
6
  * https://www.codevertiser.com/convert-seconds-to-hours-and-minutes-javascript/
4
7
  */
5
- declare const getDurationHours: ({ seconds }: {
6
- seconds: number;
7
- }) => string;
8
+ declare const getDurationHours: (props: GetDurationHours) => string;
8
9
  export default getDurationHours;
@@ -4,13 +4,13 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  * Convert a number of seconds into HH:MM:SS
5
5
  * https://www.codevertiser.com/convert-seconds-to-hours-and-minutes-javascript/
6
6
  */
7
- const getDurationHours = ({ seconds }) => {
7
+ const getDurationHours = (props) => {
8
8
  let response = '00:00:00';
9
- if (seconds > 0) {
9
+ if (props.seconds > 0) {
10
10
  const calculated = {
11
- hours: Math.floor(seconds / 3600),
12
- minutes: Math.floor((seconds % 3600) / 60),
13
- seconds: seconds % 60,
11
+ hours: Math.floor(props.seconds / 3600),
12
+ minutes: Math.floor((props.seconds % 3600) / 60),
13
+ seconds: props.seconds % 60,
14
14
  };
15
15
  const output = {
16
16
  hours: calculated.hours < 10 ? '0' + calculated.hours : calculated.hours,
@@ -1,8 +1,9 @@
1
+ type GetDurationMinutes = {
2
+ seconds: number;
3
+ };
1
4
  /**
2
5
  * Convert a number of seconds into MM:SS
3
6
  * https://www.codevertiser.com/convert-seconds-to-hours-and-minutes-javascript/
4
7
  */
5
- declare const getDurationMinutes: ({ seconds }: {
6
- seconds: number;
7
- }) => string;
8
+ declare const getDurationMinutes: (props: GetDurationMinutes) => string;
8
9
  export default getDurationMinutes;
@@ -4,12 +4,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
4
4
  * Convert a number of seconds into MM:SS
5
5
  * https://www.codevertiser.com/convert-seconds-to-hours-and-minutes-javascript/
6
6
  */
7
- const getDurationMinutes = ({ seconds }) => {
7
+ const getDurationMinutes = (props) => {
8
8
  let response = '00:00';
9
- if (seconds > 0) {
9
+ if (props.seconds > 0) {
10
10
  const calculated = {
11
- minutes: Math.floor((seconds % 3600) / 60),
12
- seconds: seconds % 60,
11
+ minutes: Math.floor((props.seconds % 3600) / 60),
12
+ seconds: props.seconds % 60,
13
13
  };
14
14
  const output = {
15
15
  minutes: calculated.minutes < 10 ? '0' + calculated.minutes : calculated.minutes,
@@ -3,10 +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
- const isMonday_1 = __importDefault(require("date-fns/isMonday"));
7
- const isSunday_1 = __importDefault(require("date-fns/isSunday"));
8
- const nextSunday_1 = __importDefault(require("date-fns/nextSunday"));
9
- const previousMonday_1 = __importDefault(require("date-fns/previousMonday"));
6
+ const date_fns_1 = require("date-fns");
7
+ const date_fns_2 = require("date-fns");
8
+ const date_fns_3 = require("date-fns");
9
+ const date_fns_4 = require("date-fns");
10
10
  const getDate_1 = __importDefault(require("./getDate"));
11
11
  const getToday_1 = __importDefault(require("./getToday"));
12
12
  /**
@@ -34,12 +34,12 @@ const getFinancialYear = ({ year } = { year: undefined }) => {
34
34
  // We are specifying the date, so don't change the timezone
35
35
  let yearStart = (0, getDate_1.default)({ input: `${financialYear}-04-01` });
36
36
  // Get the previous Monday if the 1st of April isn't a Monday
37
- if (!(0, isMonday_1.default)(yearStart)) {
38
- yearStart = (0, previousMonday_1.default)(yearStart);
37
+ if (!(0, date_fns_1.isMonday)(yearStart)) {
38
+ yearStart = (0, date_fns_4.previousMonday)(yearStart);
39
39
  }
40
40
  // Get the next Sunday if the 31st of March isn't a Sunday
41
- if (!(0, isSunday_1.default)(yearEnd)) {
42
- yearEnd = (0, nextSunday_1.default)(yearEnd);
41
+ if (!(0, date_fns_2.isSunday)(yearEnd)) {
42
+ yearEnd = (0, date_fns_3.nextSunday)(yearEnd);
43
43
  }
44
44
  return {
45
45
  end: yearEnd,
@@ -3,8 +3,8 @@ 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
- const addDays_1 = __importDefault(require("date-fns/addDays"));
7
- const eachWeekOfInterval_1 = __importDefault(require("date-fns/eachWeekOfInterval"));
6
+ const date_fns_1 = require("date-fns");
7
+ const date_fns_2 = require("date-fns");
8
8
  const getFinancialYear_1 = __importDefault(require("./getFinancialYear"));
9
9
  const getTimeZoned_1 = __importDefault(require("./getTimeZoned"));
10
10
  /**
@@ -12,11 +12,11 @@ const getTimeZoned_1 = __importDefault(require("./getTimeZoned"));
12
12
  */
13
13
  const getFinancialYearWeeks = ({ year } = { year: undefined }) => {
14
14
  const financialYear = (0, getFinancialYear_1.default)({ year });
15
- const weeks = (0, eachWeekOfInterval_1.default)(financialYear, { weekStartsOn: 1 });
15
+ const weeks = (0, date_fns_2.eachWeekOfInterval)(financialYear, { weekStartsOn: 1 });
16
16
  let response = weeks.map((week, index) => {
17
17
  let weekStart = new Date(week.getTime());
18
18
  weekStart = (0, getTimeZoned_1.default)({ input: weekStart });
19
- let weekEnd = (0, addDays_1.default)(weekStart, 6);
19
+ let weekEnd = (0, date_fns_1.addDays)(weekStart, 6);
20
20
  weekEnd = (0, getTimeZoned_1.default)({ input: weekEnd });
21
21
  return {
22
22
  start: weekStart,
package/date/getMax.d.ts CHANGED
@@ -8,5 +8,5 @@ type GetMax = GetTimeZoned & GetMidnight & {
8
8
  /**
9
9
  * If a given date is beyond the maximum, return the maximum.
10
10
  */
11
- declare const getMax: ({ input, max, setMidnight }: GetMax) => Date;
11
+ declare const getMax: (props: GetMax) => Date;
12
12
  export default getMax;
package/date/getMax.js CHANGED
@@ -3,14 +3,20 @@ 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
- const isAfter_1 = __importDefault(require("date-fns/isAfter"));
6
+ const date_fns_1 = require("date-fns");
7
7
  const getDate_1 = __importDefault(require("./getDate"));
8
8
  /**
9
9
  * If a given date is beyond the maximum, return the maximum.
10
10
  */
11
- const getMax = ({ input, max, setMidnight = true }) => {
12
- const parsedMax = (0, getDate_1.default)({ input: max, setMidnight });
13
- const parsedInput = (0, getDate_1.default)({ input, setMidnight });
14
- return (0, isAfter_1.default)(parsedInput, parsedMax) ? parsedMax : parsedInput;
11
+ const getMax = (props) => {
12
+ const parsedMax = (0, getDate_1.default)({
13
+ input: props.max,
14
+ setMidnight: props?.setMidnight || true,
15
+ });
16
+ const parsedInput = (0, getDate_1.default)({
17
+ input: props.input,
18
+ setMidnight: props?.setMidnight || true,
19
+ });
20
+ return (0, date_fns_1.isAfter)(parsedInput, parsedMax) ? parsedMax : parsedInput;
15
21
  };
16
22
  exports.default = getMax;
@@ -4,7 +4,7 @@ export type GetMidnight = {
4
4
  /**
5
5
  * Set a date's time to 0 hours, 0 minutes, 0 seconds, 0 milliseconds
6
6
  */
7
- declare const getMidnight: ({ input, setMidnight }: GetMidnight & {
7
+ declare const getMidnight: (props: GetMidnight & {
8
8
  input: Date;
9
9
  }) => Date;
10
10
  export default getMidnight;
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  /**
4
4
  * Set a date's time to 0 hours, 0 minutes, 0 seconds, 0 milliseconds
5
5
  */
6
- const getMidnight = ({ input, setMidnight = true }) => {
7
- let dateInstance = input;
8
- if (setMidnight) {
6
+ const getMidnight = (props) => {
7
+ let dateInstance = props.input;
8
+ if (true === props?.setMidnight) {
9
9
  if (0 === dateInstance.getTimezoneOffset()) {
10
10
  dateInstance.setHours(0, 0, 0, 0);
11
11
  }
package/date/getMin.d.ts CHANGED
@@ -8,5 +8,5 @@ type GetMin = GetTimeZoned & GetMidnight & {
8
8
  /**
9
9
  * If a given date is before the minimum, return the minimum.
10
10
  */
11
- declare const getMin: ({ input, min, setMidnight }: GetMin) => Date;
11
+ declare const getMin: (props: GetMin) => Date;
12
12
  export default getMin;
package/date/getMin.js CHANGED
@@ -3,14 +3,20 @@ 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
- const isBefore_1 = __importDefault(require("date-fns/isBefore"));
6
+ const date_fns_1 = require("date-fns");
7
7
  const getDate_1 = __importDefault(require("./getDate"));
8
8
  /**
9
9
  * If a given date is before the minimum, return the minimum.
10
10
  */
11
- const getMin = ({ input, min, setMidnight = true }) => {
12
- const parsedMin = (0, getDate_1.default)({ input: min, setMidnight });
13
- const parsedInput = (0, getDate_1.default)({ input, setMidnight });
14
- return (0, isBefore_1.default)(parsedInput, parsedMin) ? parsedMin : parsedInput;
11
+ const getMin = (props) => {
12
+ const parsedMin = (0, getDate_1.default)({
13
+ input: props.min,
14
+ setMidnight: props?.setMidnight || true,
15
+ });
16
+ const parsedInput = (0, getDate_1.default)({
17
+ input: props.input,
18
+ setMidnight: props?.setMidnight || true,
19
+ });
20
+ return (0, date_fns_1.isBefore)(parsedInput, parsedMin) ? parsedMin : parsedInput;
15
21
  };
16
22
  exports.default = getMin;
package/date/getMonday.js CHANGED
@@ -3,9 +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
- const getISODay_1 = __importDefault(require("date-fns/getISODay"));
7
- const isMonday_1 = __importDefault(require("date-fns/isMonday"));
8
- const subDays_1 = __importDefault(require("date-fns/subDays"));
6
+ const date_fns_1 = require("date-fns");
7
+ const date_fns_2 = require("date-fns");
8
+ const date_fns_3 = require("date-fns");
9
9
  const getDate_1 = __importDefault(require("./getDate"));
10
10
  const getMidnight_1 = __importDefault(require("./getMidnight"));
11
11
  const getToday_1 = __importDefault(require("./getToday"));
@@ -30,14 +30,14 @@ const getMonday = ({ weeksAgo, input, setMidnight = true, setTimeZone = false })
30
30
  });
31
31
  // console.log('dateInstance', dateInstance);
32
32
  }
33
- if (!(0, isMonday_1.default)(dateInstance)) {
33
+ if (!(0, date_fns_2.isMonday)(dateInstance)) {
34
34
  // Get the ISO Day of week (Monday - 1 to Sunday - 7)
35
- const isoDay = (0, getISODay_1.default)(dateInstance);
35
+ const isoDay = (0, date_fns_1.getISODay)(dateInstance);
36
36
  // Move back to Monday
37
- dateInstance = (0, subDays_1.default)(dateInstance, isoDay - 1);
37
+ dateInstance = (0, date_fns_3.subDays)(dateInstance, isoDay - 1);
38
38
  }
39
39
  // Move it back a given number of weeks
40
- dateInstance = (0, subDays_1.default)(dateInstance, 7 * weeksAgo);
40
+ dateInstance = (0, date_fns_3.subDays)(dateInstance, 7 * weeksAgo);
41
41
  // console.log('dateInstance', dateInstance);
42
42
  dateInstance = (0, getMidnight_1.default)({
43
43
  input: dateInstance,
package/date/getNumber.js CHANGED
@@ -3,13 +3,17 @@ 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
- const format_1 = __importDefault(require("date-fns/format"));
6
+ const date_fns_1 = require("date-fns");
7
7
  const getDate_1 = __importDefault(require("./getDate"));
8
8
  /**
9
9
  * Convert a (number | string | Date) into a YYYYMMDD number.
10
10
  */
11
11
  const getNumber = ({ input, setMidnight = true, setTimeZone = false }) => {
12
- let date = (0, getDate_1.default)({ input, setMidnight, setTimeZone });
13
- return Number((0, format_1.default)(date, 'yyyyMMdd'));
12
+ let date = (0, getDate_1.default)({
13
+ input,
14
+ setMidnight,
15
+ setTimeZone
16
+ });
17
+ return Number((0, date_fns_1.format)(date, 'yyyyMMdd'));
14
18
  };
15
19
  exports.default = getNumber;
package/date/getSunday.js CHANGED
@@ -3,9 +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
- const getISODay_1 = __importDefault(require("date-fns/getISODay"));
7
- const isSunday_1 = __importDefault(require("date-fns/isSunday"));
8
- const subDays_1 = __importDefault(require("date-fns/subDays"));
6
+ const date_fns_1 = require("date-fns");
7
+ const date_fns_2 = require("date-fns");
8
+ const date_fns_3 = require("date-fns");
9
9
  const getDate_1 = __importDefault(require("./getDate"));
10
10
  const getToday_1 = __importDefault(require("./getToday"));
11
11
  /**
@@ -22,14 +22,14 @@ const getSunday = ({ weeksAgo, input, setMidnight = true, setTimeZone = false })
22
22
  // As we are getting today's date we don't want to convert this timezone
23
23
  dateInstance = (0, getToday_1.default)({ setMidnight });
24
24
  }
25
- if (!(0, isSunday_1.default)(dateInstance)) {
25
+ if (!(0, date_fns_2.isSunday)(dateInstance)) {
26
26
  // Get the ISO Day of week (Monday - 1 to Sunday - 7)
27
- const isoDay = (0, getISODay_1.default)(dateInstance);
27
+ const isoDay = (0, date_fns_1.getISODay)(dateInstance);
28
28
  // Move back to Monday
29
- dateInstance = (0, subDays_1.default)(dateInstance, isoDay);
29
+ dateInstance = (0, date_fns_3.subDays)(dateInstance, isoDay);
30
30
  }
31
31
  // Move it back a given number of weeks
32
- dateInstance = (0, subDays_1.default)(dateInstance, 7 * weeksAgo);
32
+ dateInstance = (0, date_fns_3.subDays)(dateInstance, 7 * weeksAgo);
33
33
  return dateInstance;
34
34
  };
35
35
  exports.default = getSunday;
@@ -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 }: GetTimeZoned & {
10
+ declare const getTimeZoned: (props: GetTimeZoned & {
11
11
  input: Date;
12
12
  }) => Date;
13
13
  export default getTimeZoned;
@@ -1,22 +1,19 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.timeZoneLondon = void 0;
7
4
  const date_fns_tz_1 = require("date-fns-tz");
8
- const addMinutes_1 = __importDefault(require("date-fns/addMinutes"));
5
+ const date_fns_1 = require("date-fns");
9
6
  exports.timeZoneLondon = 'Europe/London';
10
7
  /**
11
8
  * Convert an input into a given timezone.
12
9
  * We can't use getDate here as it becomes a circular issue.
13
10
  * Returns a new Date instance.
14
11
  */
15
- const getTimeZoned = ({ input, setTimeZone = exports.timeZoneLondon }) => {
16
- let dateInstance = input;
17
- if (setTimeZone) {
12
+ const getTimeZoned = (props) => {
13
+ let dateInstance = props.input;
14
+ if (props?.input && 'string' === typeof props.setTimeZone) {
18
15
  // Cannot convert YYYY-MM-DD into new Date as Safari doesn't support this
19
- const dateString = (0, date_fns_tz_1.formatInTimeZone)(dateInstance, setTimeZone, 'yyyy-MM-dd HH:mm:ss');
16
+ const dateString = (0, date_fns_tz_1.formatInTimeZone)(dateInstance, props?.setTimeZone, 'yyyy-MM-dd HH:mm:ss');
20
17
  const year = Number(dateString.substring(0, 4));
21
18
  const month = Number(dateString.substring(5, 7)) - 1;
22
19
  const day = Number(dateString.substring(8, 10));
@@ -31,8 +28,10 @@ const getTimeZoned = ({ input, setTimeZone = exports.timeZoneLondon }) => {
31
28
  dateInstance.setMonth(month);
32
29
  dateInstance.setDate(day);
33
30
  dateInstance.setHours(hours, minutes, seconds);
31
+ // console.log('dateInstance', dateInstance);
32
+ // console.log('dateInstance.getTimezoneOffset()', dateInstance.getTimezoneOffset());
34
33
  // Fixes the timezone offset due to daylight savings
35
- dateInstance = (0, addMinutes_1.default)(dateInstance, dateInstance.getTimezoneOffset() * -1);
34
+ dateInstance = (0, date_fns_1.addMinutes)(dateInstance, dateInstance.getTimezoneOffset() * -1);
36
35
  }
37
36
  return dateInstance;
38
37
  };
package/date/getToday.js CHANGED
@@ -34,8 +34,14 @@ const getTimeZoned_1 = __importStar(require("./getTimeZoned"));
34
34
  */
35
35
  const getToday = ({ setMidnight = true, setTimeZone = getTimeZoned_1.timeZoneLondon } = { setMidnight: true, setTimeZone: getTimeZoned_1.timeZoneLondon }) => {
36
36
  let today = new Date();
37
- today = (0, getTimeZoned_1.default)({ input: today, setTimeZone });
38
- today = (0, getMidnight_1.default)({ input: today, setMidnight });
37
+ today = (0, getTimeZoned_1.default)({
38
+ input: today,
39
+ setTimeZone
40
+ });
41
+ today = (0, getMidnight_1.default)({
42
+ input: today,
43
+ setMidnight
44
+ });
39
45
  return today;
40
46
  };
41
47
  exports.default = getToday;
@@ -3,15 +3,19 @@ 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
- const sub_1 = __importDefault(require("date-fns/sub"));
6
+ const date_fns_1 = require("date-fns");
7
7
  const getDate_1 = __importDefault(require("./getDate"));
8
8
  const getNumber_1 = __importDefault(require("./getNumber"));
9
9
  /**
10
10
  * From a given input, move the date back X weeksAgo
11
11
  */
12
12
  const getWeeksAgo = ({ input, weeksAgo = 0, setMidnight = true, setTimeZone = false }) => {
13
- let dateInstance = (0, getDate_1.default)({ input, setMidnight, setTimeZone });
14
- dateInstance = (0, sub_1.default)(dateInstance, { weeks: weeksAgo });
13
+ let dateInstance = (0, getDate_1.default)({
14
+ input,
15
+ setMidnight,
16
+ setTimeZone
17
+ });
18
+ dateInstance = (0, date_fns_1.sub)(dateInstance, { weeks: weeksAgo });
15
19
  return (0, getNumber_1.default)({ input: dateInstance });
16
20
  };
17
21
  exports.default = getWeeksAgo;
@@ -26,7 +26,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
26
26
  return (mod && mod.__esModule) ? mod : { "default": mod };
27
27
  };
28
28
  Object.defineProperty(exports, "__esModule", { value: true });
29
- const subDays_1 = __importDefault(require("date-fns/subDays"));
29
+ const date_fns_1 = require("date-fns");
30
30
  const getTimeZoned_1 = __importStar(require("./getTimeZoned"));
31
31
  const getToday_1 = __importDefault(require("./getToday"));
32
32
  /**
@@ -35,7 +35,7 @@ const getToday_1 = __importDefault(require("./getToday"));
35
35
  */
36
36
  const getYesterday = ({ setMidnight = true, setTimeZone = getTimeZoned_1.timeZoneLondon } = { setMidnight: true, setTimeZone: getTimeZoned_1.timeZoneLondon }) => {
37
37
  const today = (0, getToday_1.default)({ setMidnight, setTimeZone: false });
38
- let yesterday = (0, subDays_1.default)(today, 1);
38
+ let yesterday = (0, date_fns_1.subDays)(today, 1);
39
39
  yesterday = (0, getTimeZoned_1.default)({ input: yesterday, setTimeZone });
40
40
  return yesterday;
41
41
  };
@@ -1,17 +1,14 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const isValid_1 = __importDefault(require("date-fns/isValid"));
7
- const parseISO_1 = __importDefault(require("date-fns/parseISO"));
3
+ const date_fns_1 = require("date-fns");
4
+ const date_fns_2 = require("date-fns");
8
5
  /**
9
6
  * Ensure the date string provided is in YYYY-MM-DD format and is a valid date.
10
7
  */
11
8
  const isDateValid = ({ input }) => {
12
9
  const cleanInput = input.trim();
13
- const parsedInput = (0, parseISO_1.default)(cleanInput);
14
- if ((0, isValid_1.default)(parsedInput)) {
10
+ const parsedInput = (0, date_fns_2.parseISO)(cleanInput);
11
+ if ((0, date_fns_1.isValid)(parsedInput)) {
15
12
  const matches = cleanInput.match(/^([0-9]{4}-[0-9]{2}-[0-9]{2})$/);
16
13
  if (matches) {
17
14
  return matches.length ? true : false;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const states = {
4
4
  AUTHENTICATED: 'authenticated',
5
- PENDING: 'loading',
5
+ PENDING: 'loading', // Defined by NextAuth
6
6
  UNAUTHENTICATED: 'unauthenticated',
7
7
  };
8
8
  exports.default = states;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@8ms/helpers",
3
3
  "license": "UNLICENSED",
4
- "version": "1.7.0",
4
+ "version": "1.10.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/8millionstories-organisation/8ms-helpers-ts.git"
@@ -13,37 +13,37 @@
13
13
  "jest": "jest --watch"
14
14
  },
15
15
  "dependencies": {
16
- "axios": "1.6.0",
16
+ "axios": "1.6.8",
17
17
  "crypto-js": "4.2.0",
18
- "date-fns": "2.30.0",
19
- "date-fns-tz": "2.0.0",
18
+ "date-fns": "3.6.0",
19
+ "date-fns-tz": "3.1.3",
20
20
  "lodash": "4.17.21",
21
- "zod": "3.22.4"
21
+ "zod": "3.23.5"
22
22
  },
23
23
  "devDependencies": {
24
- "@aws-sdk/client-s3": "3.441.0",
25
- "@aws-sdk/client-ses": "3.441.0",
26
- "@aws-sdk/client-sqs": "3.441.0",
27
- "@aws-sdk/client-ssm": "3.441.0",
28
- "@aws-sdk/lib-storage": "3.441.0",
29
- "@aws-sdk/s3-request-presigner": "3.436.0",
30
- "@babel/preset-env": "7.23.2",
31
- "@babel/preset-flow": "7.22.15",
32
- "@babel/preset-typescript": "7.23.2",
33
- "@google-cloud/bigquery": "7.3.0",
34
- "@google-cloud/storage": "7.4.0",
35
- "@prisma/client": "5.5.2",
36
- "@types/jest": "29.5.7",
37
- "@types/lodash": "4.14.200",
38
- "@types/node": "20.8.10",
24
+ "@aws-sdk/client-s3": "3.567.0",
25
+ "@aws-sdk/client-ses": "3.567.0",
26
+ "@aws-sdk/client-sqs": "3.567.0",
27
+ "@aws-sdk/client-ssm": "3.567.0",
28
+ "@aws-sdk/lib-storage": "3.567.0",
29
+ "@aws-sdk/s3-request-presigner": "3.567.0",
30
+ "@babel/preset-env": "7.24.5",
31
+ "@babel/preset-flow": "7.24.1",
32
+ "@babel/preset-typescript": "7.24.1",
33
+ "@google-cloud/bigquery": "7.6.1",
34
+ "@google-cloud/storage": "7.10.2",
35
+ "@prisma/client": "5.13.0",
36
+ "@types/jest": "29.5.12",
37
+ "@types/lodash": "4.17.0",
38
+ "@types/node": "20.12.8",
39
39
  "babel-jest": "29.7.0",
40
40
  "jest": "29.7.0",
41
41
  "node-fetch": "3.3.2",
42
42
  "stream-chain": "2.2.5",
43
43
  "stream-json": "1.8.0",
44
44
  "timezone-mock": "1.3.6",
45
- "ts-node": "10.9.1",
45
+ "ts-node": "10.9.2",
46
46
  "tslib": "2.6.2",
47
- "typescript": "5.2.2"
47
+ "typescript": "5.4.5"
48
48
  }
49
49
  }
@@ -3,6 +3,6 @@
3
3
  * https://stackoverflow.com/a/49428486
4
4
  */
5
5
  declare const getStringFromStream: ({ stream }: {
6
- stream: any;
6
+ stream;
7
7
  }) => Promise<string>;
8
8
  export default getStringFromStream;
@@ -2,7 +2,7 @@
2
2
  * Create a new relative URL based on the current path.
3
3
  */
4
4
  declare const buildRelative: ({ router, updated }: {
5
- router: any;
5
+ router;
6
6
  updated: object;
7
7
  }) => string;
8
8
  export default buildRelative;