@8ms/helpers 1.16.0 → 1.21.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.
@@ -1,4 +1,4 @@
1
- import BaseClass from '../../class/BaseClass';
1
+ import BaseClass from "../../class/BaseClass";
2
2
  type Constructor = {
3
3
  bcc?: string[];
4
4
  cc?: string[];
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const uniq_1 = __importDefault(require("lodash/uniq"));
7
7
  const BaseClass_1 = __importDefault(require("../../class/BaseClass"));
8
- const isResponse200_1 = __importDefault(require("../isResponse200"));
9
8
  /**
10
9
  * Class to build and send an AWS SES email.
11
10
  */
@@ -36,41 +35,41 @@ class SimpleEmail extends BaseClass_1.default {
36
35
  return this;
37
36
  }
38
37
  setFrom({ from }) {
39
- return this._setValue({ input: from, fields: 'from' });
38
+ return this._setValue({ input: from, fields: "from" });
40
39
  }
41
40
  setHtml({ html }) {
42
- return this._setValue({ input: html, fields: 'html' });
41
+ return this._setValue({ input: html, fields: "html" });
43
42
  }
44
43
  setSubject({ subject }) {
45
- return this._setValue({ input: subject, fields: 'subject' });
44
+ return this._setValue({ input: subject, fields: "subject" });
46
45
  }
47
46
  pushBcc({ recipient }) {
48
- return this._push({ input: recipient, fields: 'bcc' });
47
+ return this._push({ input: recipient, fields: "bcc" });
49
48
  }
50
49
  pushCc({ recipient }) {
51
- return this._push({ input: recipient, fields: 'cc' });
50
+ return this._push({ input: recipient, fields: "cc" });
52
51
  }
53
52
  pushTo({ recipient }) {
54
- return this._push({ input: recipient, fields: 'to' });
53
+ return this._push({ input: recipient, fields: "to" });
55
54
  }
56
55
  setBcc({ recipient }) {
57
- return this._setArray({ input: recipient, fields: 'bcc' });
56
+ return this._setArray({ input: recipient, fields: "bcc" });
58
57
  }
59
58
  setCc({ recipient }) {
60
- return this._setArray({ input: recipient, fields: 'cc' });
59
+ return this._setArray({ input: recipient, fields: "cc" });
61
60
  }
62
61
  setTo({ recipient }) {
63
- return this._setArray({ input: recipient, fields: 'to' });
62
+ return this._setArray({ input: recipient, fields: "to" });
64
63
  }
65
64
  async send() {
66
- const { SendEmailCommand } = require('@aws-sdk/client-ses');
65
+ const { SendEmailCommand } = require("@aws-sdk/client-ses");
67
66
  let response;
68
67
  // https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/ses-examples-sending-email.html
69
68
  const params = {
70
69
  Destination: {
71
- BccAddresses: this._filterRecipients({ field: 'bcc' }),
72
- CcAddresses: this._filterRecipients({ field: 'cc' }),
73
- ToAddresses: this._filterRecipients({ field: 'to' }),
70
+ BccAddresses: this._filterRecipients({ field: "bcc" }),
71
+ CcAddresses: this._filterRecipients({ field: "cc" }),
72
+ ToAddresses: this._filterRecipients({ field: "to" }),
74
73
  },
75
74
  Message: {
76
75
  Body: {
@@ -90,15 +89,9 @@ class SimpleEmail extends BaseClass_1.default {
90
89
  },
91
90
  Source: this.from,
92
91
  };
93
- try {
94
- const command = new SendEmailCommand(params);
95
- const apiResponse = await global.awsSesClient.send(command);
96
- response = (0, isResponse200_1.default)({ apiResponse });
97
- }
98
- catch (error) {
99
- response = false;
100
- }
101
- return response;
92
+ const command = new SendEmailCommand(params);
93
+ const apiResponse = await global.awsSesClient.send(command);
94
+ return apiResponse;
102
95
  }
103
96
  _filterRecipients({ field }) {
104
97
  // Remove all undefined and null values
@@ -107,7 +100,7 @@ class SimpleEmail extends BaseClass_1.default {
107
100
  response = response.map(recipient => recipient.toLowerCase()
108
101
  .trim());
109
102
  // Remove all empty values
110
- response = response.filter(recipient => '' !== recipient);
103
+ response = response.filter(recipient => "" !== recipient);
111
104
  // Return only unique values
112
105
  response = (0, uniq_1.default)(response);
113
106
  return response;
package/date/format.d.ts CHANGED
@@ -1,9 +1,6 @@
1
- import { DateType } from "./date";
2
- import { GetMidnight } from "./getMidnight";
3
- import { GetTimeZoned } from "./getTimeZoned";
4
- type Format = GetTimeZoned & GetMidnight & {
1
+ import { GetDate } from "./getDate";
2
+ type Format = GetDate & {
5
3
  dateFormat?: string;
6
- input: DateType;
7
4
  };
8
5
  /**
9
6
  * Convert a (number | string | Date) into a "yyyy-MM-dd" string or a specified format.
package/date/format.js CHANGED
@@ -12,6 +12,7 @@ const getDate_1 = __importDefault(require("./getDate"));
12
12
  const format = (props) => {
13
13
  const dateInstance = (0, getDate_1.default)({
14
14
  input: props.input,
15
+ isUtc: props.isUtc,
15
16
  setMidnight: props?.setMidnight,
16
17
  setTimeZone: props?.setTimeZone,
17
18
  });
package/date/getDate.d.ts CHANGED
@@ -1,12 +1,14 @@
1
- import { DateType } from './date';
2
- import { GetMidnight } from './getMidnight';
3
- import { GetTimeZoned } from './getTimeZoned';
4
- type GetDate = GetTimeZoned & GetMidnight & {
1
+ import { DateType } from "./date";
2
+ import { GetMidnight } from "./getMidnight";
3
+ import { GetTimeZoned } from "./getTimeZoned";
4
+ export type GetDate = GetTimeZoned & GetMidnight & {
5
5
  input: DateType;
6
+ isUtc?: boolean;
6
7
  };
7
8
  /**
8
9
  * Convert a (number | string | Date) into a Date object.
9
10
  * As the user would be providing the input we don't want to change the timezone typically.
11
+ * By default assumption is that the input is UTC, however it can be switched to timezoned time.
10
12
  */
11
13
  declare const getDate: (props: GetDate) => Date;
12
14
  export default getDate;
package/date/getDate.js CHANGED
@@ -4,25 +4,26 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const getMidnight_1 = __importDefault(require("./getMidnight"));
7
- const getTimeZoned_1 = __importDefault(require("./getTimeZoned"));
8
7
  /**
9
8
  * Convert a (number | string | Date) into a Date object.
10
9
  * As the user would be providing the input we don't want to change the timezone typically.
10
+ * By default assumption is that the input is UTC, however it can be switched to timezoned time.
11
11
  */
12
12
  const getDate = (props) => {
13
13
  let date;
14
+ let isUtc = undefined === props?.isUtc ? true : props.isUtc;
14
15
  // Already date instance - no change
15
16
  if (props.input instanceof Date) {
16
17
  date = new Date(props.input.valueOf());
17
18
  }
18
- else if ('string' === typeof props.input || 'number' === typeof props.input) {
19
+ else if ("string" === typeof props.input || "number" === typeof props.input) {
19
20
  // Convert the input into string
20
21
  const dateString = props.input.toString();
21
22
  const regexes = {
22
- ymdDash: new RegExp('^[0-9]{4}-[0-9]{2}-[0-9]{2}$'),
23
- ymdNumber: new RegExp('^[0-9]{8}$'),
24
- ymdHisDash: new RegExp('^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$'),
25
- ymdHisNumber: new RegExp('^[0-9]{14}$'),
23
+ ymdDash: new RegExp("^[0-9]{4}-[0-9]{2}-[0-9]{2}$"),
24
+ ymdNumber: new RegExp("^[0-9]{8}$"),
25
+ ymdHisDash: new RegExp("^[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}$"),
26
+ ymdHisNumber: new RegExp("^[0-9]{14}$"),
26
27
  };
27
28
  // console.log('regexes.ymdHisDash.test(dateString) ',regexes.ymdHisDash.test(dateString));
28
29
  // 20220412
@@ -34,12 +35,18 @@ const getDate = (props) => {
34
35
  // Reset the date to the 1st initially at 1am
35
36
  date.setUTCDate(1);
36
37
  date.setUTCHours(1, 0, 0, 0);
37
- date.setFullYear(year);
38
- date.setUTCMonth(month);
39
- date.setUTCDate(day);
40
- date.setUTCHours(0, 0, 0, 0);
41
- // Resolve timezone offset
42
- //date = addMinutes(date, date.getTimezoneOffset() * -1);
38
+ if (isUtc) {
39
+ date.setUTCFullYear(year);
40
+ date.setUTCMonth(month);
41
+ date.setUTCDate(day);
42
+ date.setUTCHours(0, 0, 0, 0);
43
+ }
44
+ else {
45
+ date.setFullYear(year);
46
+ date.setMonth(month);
47
+ date.setDate(day);
48
+ date.setHours(0, 0, 0, 0);
49
+ }
43
50
  }
44
51
  // 2022-04-12
45
52
  else if (regexes.ymdDash.test(dateString)) {
@@ -47,21 +54,22 @@ const getDate = (props) => {
47
54
  const month = Number(dateString.substring(5, 7)) - 1;
48
55
  const day = Number(dateString.substring(8, 10));
49
56
  date = new Date();
50
- //console.log('default - date', date);
51
- // Reset the date
52
- date.setFullYear(year);
53
- date.setUTCHours(1, 0, 0, 0);
54
- date.setUTCMonth(0);
57
+ // Reset the date to the 1st initially at 1am
55
58
  date.setUTCDate(1);
56
- //console.log('reset - date', date);
59
+ date.setUTCHours(1, 0, 0, 0);
57
60
  // Finalise date
58
- date.setUTCMonth(month);
59
- date.setUTCDate(day);
60
- date.setUTCHours(0, 0, 0, 0);
61
- //console.log('finalise - date', date);
62
- // Resolve timezone offset
63
- //date = addMinutes(date, date.getTimezoneOffset() * -1);
64
- //console.log('timezone - date', date);
61
+ if (isUtc) {
62
+ date.setUTCFullYear(year);
63
+ date.setUTCMonth(month);
64
+ date.setUTCDate(day);
65
+ date.setUTCHours(0, 0, 0, 0);
66
+ }
67
+ else {
68
+ date.setFullYear(year);
69
+ date.setMonth(month);
70
+ date.setDate(day);
71
+ date.setHours(0, 0, 0, 0);
72
+ }
65
73
  }
66
74
  // 2022-04-12 01:01:01
67
75
  else if (regexes.ymdHisDash.test(dateString)) {
@@ -75,12 +83,19 @@ const getDate = (props) => {
75
83
  // Reset the date to the 1st initially at 1am
76
84
  date.setUTCDate(1);
77
85
  date.setUTCHours(1, 0, 0, 0);
78
- date.setFullYear(year);
79
- date.setUTCMonth(month);
80
- date.setUTCDate(day);
81
- date.setUTCHours(hours, minutes, seconds);
82
- // Resolve timezone offset
83
- //date = addMinutes(date, date.getTimezoneOffset() * -1);
86
+ // Finalise date
87
+ if (isUtc) {
88
+ date.setUTCFullYear(year);
89
+ date.setUTCMonth(month);
90
+ date.setUTCDate(day);
91
+ date.setUTCHours(hours, minutes, seconds);
92
+ }
93
+ else {
94
+ date.setFullYear(year);
95
+ date.setMonth(month);
96
+ date.setDate(day);
97
+ date.setHours(hours, minutes, seconds);
98
+ }
84
99
  }
85
100
  // 20220412010101
86
101
  else if (regexes.ymdHisNumber.test(dateString)) {
@@ -94,32 +109,30 @@ const getDate = (props) => {
94
109
  // Reset the date to the 1st initially at 1am
95
110
  date.setUTCDate(1);
96
111
  date.setUTCHours(1, 0, 0, 0);
97
- date.setFullYear(year);
98
- date.setUTCMonth(month);
99
- date.setUTCDate(day);
100
- date.setUTCHours(hours, minutes, seconds);
101
- // Resolve timezone offset
102
- // date = addMinutes(date, date.getTimezoneOffset() * -1);
112
+ // Finalise date
113
+ if (isUtc) {
114
+ date.setUTCFullYear(year);
115
+ date.setUTCMonth(month);
116
+ date.setUTCDate(day);
117
+ date.setUTCHours(hours, minutes, seconds);
118
+ }
119
+ else {
120
+ date.setFullYear(year);
121
+ date.setMonth(month);
122
+ date.setDate(day);
123
+ date.setHours(hours, minutes, seconds);
124
+ }
103
125
  }
104
126
  // Unsure date format, try anything
105
127
  else {
106
128
  date = new Date(dateString);
107
129
  }
108
130
  }
109
- // console.log('date - before midnight', date);
110
- // console.log('date', date.getTimezoneOffset());
111
131
  // Reset to midnight
112
132
  date = (0, getMidnight_1.default)({
113
133
  input: date,
114
134
  setMidnight: props?.setMidnight,
115
135
  });
116
- // console.log('date - after midnight', date);
117
- // console.log(' props?.setTimeZone', props?.setTimeZone);
118
- // Convert to timezone
119
- date = (0, getTimeZoned_1.default)({
120
- input: date,
121
- setTimeZone: props?.setTimeZone,
122
- });
123
136
  return date;
124
137
  };
125
138
  exports.default = getDate;
@@ -1,12 +1,13 @@
1
- import { DateType } from './date';
1
+ import { DateType } from "./date";
2
2
  type GetDatesBetween = {
3
3
  end: DateType;
4
4
  start: DateType;
5
+ isUtc?: boolean;
5
6
  };
6
7
  /**
7
8
  * Similar to date-fns' eachDayOfInterval, however the timezone messes this function up.
8
9
  * https://date-fns.org/v2.28.0/docs/eachDayOfInterval
9
10
  * https://www.gov.uk/when-do-the-clocks-change
10
11
  */
11
- declare const getDatesBetween: ({ end, start }: GetDatesBetween) => Date[];
12
+ declare const getDatesBetween: (props: GetDatesBetween) => Date[];
12
13
  export default getDatesBetween;
@@ -12,23 +12,30 @@ const date_fns_2 = require("date-fns");
12
12
  * https://date-fns.org/v2.28.0/docs/eachDayOfInterval
13
13
  * https://www.gov.uk/when-do-the-clocks-change
14
14
  */
15
- const getDatesBetween = ({ end, start }) => {
15
+ const getDatesBetween = (props) => {
16
16
  let response = [];
17
- let endDate = (0, getDate_1.default)({ input: end });
17
+ let endDate = (0, getDate_1.default)({
18
+ input: props.end,
19
+ isUtc: props.isUtc,
20
+ });
18
21
  // Increase the end date by 2 hours so it can handle the change in hours
19
22
  endDate = (0, date_fns_2.addHours)(endDate, 2);
20
23
  // Use a string to ensure there's no changes with the timezone
21
- let startString = (0, format_1.default)({ input: start });
24
+ let startString = (0, format_1.default)({
25
+ input: props.start,
26
+ isUtc: props.isUtc,
27
+ });
22
28
  // Create a pointer Date instance
23
- let pointer = (0, getDate_1.default)({ input: startString });
29
+ let pointer = (0, getDate_1.default)({
30
+ input: startString,
31
+ isUtc: props.isUtc,
32
+ });
24
33
  // While we before the end
25
34
  while (pointer <= endDate) {
26
35
  // We need to create a new date entry so its always set to 00:00:00
27
36
  const entry = (0, getDate_1.default)({
28
- input: (0, format_1.default)({
29
- input: pointer,
30
- dateFormat: 'yyyy-MM-dd'
31
- }),
37
+ input: pointer,
38
+ isUtc: props.isUtc,
32
39
  setMidnight: true,
33
40
  });
34
41
  // Add this new entry to our response
@@ -5,5 +5,5 @@ type GetFinancialYearType = {
5
5
  /**
6
6
  * Get the current financial year.
7
7
  */
8
- declare const getFinancialYear: ({ year }?: GetFinancialYearType) => FinancialYear;
8
+ declare const getFinancialYear: (props?: GetFinancialYearType) => FinancialYear;
9
9
  export default getFinancialYear;
@@ -12,10 +12,10 @@ const getToday_1 = __importDefault(require("./getToday"));
12
12
  /**
13
13
  * Get the current financial year.
14
14
  */
15
- const getFinancialYear = ({ year } = { year: undefined }) => {
15
+ const getFinancialYear = (props = {}) => {
16
16
  // Either use the current year or a specified year
17
- let financialYear = year;
18
- if (undefined === year) {
17
+ let financialYear = props.year;
18
+ if (undefined === props.year) {
19
19
  // As this isn't provided by the suer, we want to ensure its London timezone
20
20
  const today = (0, getToday_1.default)();
21
21
  // If today is before 1st of April, then use last year
@@ -29,10 +29,16 @@ const getFinancialYear = ({ year } = { year: undefined }) => {
29
29
  }
30
30
  // The year-end needs to be 31st March next year
31
31
  // We are specifying the date, so don't change the timezone
32
- let yearEnd = (0, getDate_1.default)({ input: `${financialYear + 1}-03-31` });
32
+ let yearEnd = (0, getDate_1.default)({
33
+ input: `${financialYear + 1}-03-31`,
34
+ isUtc: true,
35
+ });
33
36
  // The year start needs to be 1st April this year
34
37
  // We are specifying the date, so don't change the timezone
35
- let yearStart = (0, getDate_1.default)({ input: `${financialYear}-04-01` });
38
+ let yearStart = (0, getDate_1.default)({
39
+ input: `${financialYear}-04-01`,
40
+ isUtc: true,
41
+ });
36
42
  // Get the previous Monday if the 1st of April isn't a Monday
37
43
  if (!(0, date_fns_1.isMonday)(yearStart)) {
38
44
  yearStart = (0, date_fns_4.previousMonday)(yearStart);
@@ -1,9 +1,9 @@
1
- import { FinancialYearWeekType } from './financialYearWeek';
1
+ import { FinancialYearWeekType } from "./financialYearWeek";
2
2
  type GetFinancialYearWeeks = {
3
3
  year?: number;
4
4
  };
5
5
  /**
6
6
  * Get the current financial year.
7
7
  */
8
- declare const getFinancialYearWeeks: ({ year }?: GetFinancialYearWeeks) => FinancialYearWeekType[];
8
+ declare const getFinancialYearWeeks: (props?: GetFinancialYearWeeks) => FinancialYearWeekType[];
9
9
  export default getFinancialYearWeeks;
@@ -10,9 +10,13 @@ const getTimeZoned_1 = __importDefault(require("./getTimeZoned"));
10
10
  /**
11
11
  * Get the current financial year.
12
12
  */
13
- const getFinancialYearWeeks = ({ year } = { year: undefined }) => {
14
- const financialYear = (0, getFinancialYear_1.default)({ year });
15
- const weeks = (0, date_fns_2.eachWeekOfInterval)(financialYear, { weekStartsOn: 1 });
13
+ const getFinancialYearWeeks = (props = {}) => {
14
+ const financialYear = (0, getFinancialYear_1.default)({
15
+ year: props.year
16
+ });
17
+ const weeks = (0, date_fns_2.eachWeekOfInterval)(financialYear, {
18
+ weekStartsOn: 1
19
+ });
16
20
  let response = weeks.map((week, index) => {
17
21
  let weekStart = new Date(week.getTime());
18
22
  weekStart = (0, getTimeZoned_1.default)({ input: weekStart });
@@ -22,7 +26,7 @@ const getFinancialYearWeeks = ({ year } = { year: undefined }) => {
22
26
  start: weekStart,
23
27
  end: weekEnd,
24
28
  financialWeek: (index + 1),
25
- financialYear: year,
29
+ financialYear: props.year,
26
30
  };
27
31
  });
28
32
  return response;
@@ -1,6 +1,6 @@
1
- import { GetMidnight } from './getMidnight';
2
- import { GetTimeZoned } from './getTimeZoned';
3
- import { Timeframe } from './timeframe';
1
+ import { GetMidnight } from "./getMidnight";
2
+ import { GetTimeZoned } from "./getTimeZoned";
3
+ import { Timeframe } from "./timeframe";
4
4
  type GetLastWeek = GetTimeZoned & GetMidnight;
5
5
  /**
6
6
  * Return an object of start/end predefined date of Last Week.
@@ -23,8 +23,12 @@ const getLastWeek = ({ setMidnight = true, setTimeZone = getTimeZoned_1.timeZone
23
23
  setTimeZone,
24
24
  });
25
25
  return {
26
- end: (0, getNumber_1.default)({ input: sunday }),
27
- start: (0, getNumber_1.default)({ input: monday }),
26
+ end: (0, getNumber_1.default)({
27
+ input: sunday
28
+ }),
29
+ start: (0, getNumber_1.default)({
30
+ input: monday
31
+ }),
28
32
  };
29
33
  };
30
34
  exports.default = getLastWeek;
package/date/getMax.d.ts CHANGED
@@ -1,8 +1,9 @@
1
- import { DateType } from './date';
2
- import { GetMidnight } from './getMidnight';
3
- import { GetTimeZoned } from './getTimeZoned';
1
+ import { DateType } from "./date";
2
+ import { GetMidnight } from "./getMidnight";
3
+ import { GetTimeZoned } from "./getTimeZoned";
4
4
  type GetMax = GetTimeZoned & GetMidnight & {
5
5
  input: DateType;
6
+ isUtc: boolean;
6
7
  max: DateType;
7
8
  };
8
9
  /**
package/date/getMax.js CHANGED
@@ -11,10 +11,12 @@ const getDate_1 = __importDefault(require("./getDate"));
11
11
  const getMax = (props) => {
12
12
  const parsedMax = (0, getDate_1.default)({
13
13
  input: props.max,
14
+ isUtc: props.isUtc,
14
15
  setMidnight: props?.setMidnight || true,
15
16
  });
16
17
  const parsedInput = (0, getDate_1.default)({
17
18
  input: props.input,
19
+ isUtc: props.isUtc,
18
20
  setMidnight: props?.setMidnight || true,
19
21
  });
20
22
  return (0, date_fns_1.isAfter)(parsedInput, parsedMax) ? parsedMax : parsedInput;
@@ -7,16 +7,6 @@ const getMidnight = (props) => {
7
7
  let dateInstance = props.input;
8
8
  if (true === props?.setMidnight) {
9
9
  dateInstance.setUTCHours(0, 0, 0, 0);
10
- /**
11
- if (0 === dateInstance.getTimezoneOffset())
12
- {
13
- dateInstance.setUTCHours(0, 0, 0, 0);
14
- }
15
- else
16
- {
17
- dateInstance.setUTCHours(1, 0, 0, 0);
18
- }
19
- */
20
10
  }
21
11
  return dateInstance;
22
12
  };
package/date/getMin.d.ts CHANGED
@@ -3,6 +3,7 @@ import { GetMidnight } from './getMidnight';
3
3
  import { GetTimeZoned } from './getTimeZoned';
4
4
  type GetMin = GetTimeZoned & GetMidnight & {
5
5
  input: DateType;
6
+ isUtc: boolean;
6
7
  min: DateType;
7
8
  };
8
9
  /**
package/date/getMin.js CHANGED
@@ -11,10 +11,12 @@ const getDate_1 = __importDefault(require("./getDate"));
11
11
  const getMin = (props) => {
12
12
  const parsedMin = (0, getDate_1.default)({
13
13
  input: props.min,
14
+ isUtc: props.isUtc,
14
15
  setMidnight: props?.setMidnight || true,
15
16
  });
16
17
  const parsedInput = (0, getDate_1.default)({
17
18
  input: props.input,
19
+ isUtc: props.isUtc,
18
20
  setMidnight: props?.setMidnight || true,
19
21
  });
20
22
  return (0, date_fns_1.isBefore)(parsedInput, parsedMin) ? parsedMin : parsedInput;
@@ -3,6 +3,7 @@ import { GetMidnight } from './getMidnight';
3
3
  import { GetTimeZoned } from './getTimeZoned';
4
4
  type GetMonday = GetTimeZoned & GetMidnight & {
5
5
  input?: DateType;
6
+ isUtc?: boolean;
6
7
  weeksAgo: number;
7
8
  };
8
9
  /**
@@ -10,5 +11,5 @@ type GetMonday = GetTimeZoned & GetMidnight & {
10
11
  * 0 weeksAgo - Tuesday (10th), return Monday (8th)
11
12
  * 1 weeksAgo - Tuesday (10th), return Monday (1st)
12
13
  */
13
- declare const getMonday: ({ weeksAgo, input, setMidnight, setTimeZone }: GetMonday) => Date;
14
+ declare const getMonday: (props: GetMonday) => Date;
14
15
  export default getMonday;
package/date/getMonday.js CHANGED
@@ -14,13 +14,13 @@ const getToday_1 = __importDefault(require("./getToday"));
14
14
  * 0 weeksAgo - Tuesday (10th), return Monday (8th)
15
15
  * 1 weeksAgo - Tuesday (10th), return Monday (1st)
16
16
  */
17
- const getMonday = ({ weeksAgo, input, setMidnight = true, setTimeZone = false }) => {
17
+ const getMonday = (props) => {
18
18
  let dateInstance;
19
- if (input) {
19
+ if (props?.input) {
20
20
  dateInstance = (0, getDate_1.default)({
21
- input,
21
+ input: props.input,
22
+ isUtc: props.isUtc,
22
23
  setMidnight: false,
23
- setTimeZone
24
24
  });
25
25
  }
26
26
  else {
@@ -37,11 +37,11 @@ const getMonday = ({ weeksAgo, input, setMidnight = true, setTimeZone = false })
37
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, date_fns_3.subDays)(dateInstance, 7 * weeksAgo);
40
+ dateInstance = (0, date_fns_3.subDays)(dateInstance, 7 * props.weeksAgo);
41
41
  // console.log('dateInstance', dateInstance);
42
42
  dateInstance = (0, getMidnight_1.default)({
43
43
  input: dateInstance,
44
- setMidnight
44
+ setMidnight: props.setMidnight,
45
45
  });
46
46
  return dateInstance;
47
47
  };
@@ -1,11 +1,7 @@
1
- import { DateType } from './date';
2
- import { GetMidnight } from './getMidnight';
3
- import { GetTimeZoned } from './getTimeZoned';
4
- type GetNumber = GetTimeZoned & GetMidnight & {
5
- input: DateType;
6
- };
1
+ import { GetDate } from "./getDate";
2
+ type GetNumber = GetDate;
7
3
  /**
8
4
  * Convert a (number | string | Date) into a YYYYMMDD number.
9
5
  */
10
- declare const getNumber: ({ input, setMidnight, setTimeZone }: GetNumber) => number;
6
+ declare const getNumber: (props: GetNumber) => number;
11
7
  export default getNumber;
package/date/getNumber.js CHANGED
@@ -8,12 +8,13 @@ const getDate_1 = __importDefault(require("./getDate"));
8
8
  /**
9
9
  * Convert a (number | string | Date) into a YYYYMMDD number.
10
10
  */
11
- const getNumber = ({ input, setMidnight = true, setTimeZone = false }) => {
11
+ const getNumber = (props) => {
12
12
  let date = (0, getDate_1.default)({
13
- input,
14
- setMidnight,
15
- setTimeZone
13
+ input: props.input,
14
+ isUtc: props.isUtc,
15
+ setMidnight: props.setMidnight,
16
+ setTimeZone: props.setTimeZone,
16
17
  });
17
- return Number((0, date_fns_1.format)(date, 'yyyyMMdd'));
18
+ return Number((0, date_fns_1.format)(date, "yyyyMMdd"));
18
19
  };
19
20
  exports.default = getNumber;
@@ -1,8 +1,9 @@
1
- import { DateType } from './date';
2
- import { GetMidnight } from './getMidnight';
3
- import { GetTimeZoned } from './getTimeZoned';
1
+ import { DateType } from "./date";
2
+ import { GetMidnight } from "./getMidnight";
3
+ import { GetTimeZoned } from "./getTimeZoned";
4
4
  type GetSunday = GetTimeZoned & GetMidnight & {
5
5
  input?: DateType;
6
+ isUtc?: boolean;
6
7
  weeksAgo: number;
7
8
  };
8
9
  /**
@@ -10,5 +11,5 @@ type GetSunday = GetTimeZoned & GetMidnight & {
10
11
  * 0 weeksAgo - Tuesday (17th), return Sunday (14th)
11
12
  * 1 weeksAgo - Tuesday (17th), return Monday (7th)
12
13
  */
13
- declare const getSunday: ({ weeksAgo, input, setMidnight, setTimeZone }: GetSunday) => Date;
14
+ declare const getSunday: (props: GetSunday) => Date;
14
15
  export default getSunday;
package/date/getSunday.js CHANGED
@@ -13,14 +13,21 @@ const getToday_1 = __importDefault(require("./getToday"));
13
13
  * 0 weeksAgo - Tuesday (17th), return Sunday (14th)
14
14
  * 1 weeksAgo - Tuesday (17th), return Monday (7th)
15
15
  */
16
- const getSunday = ({ weeksAgo, input, setMidnight = true, setTimeZone = false }) => {
16
+ const getSunday = (props) => {
17
17
  let dateInstance;
18
- if (input) {
19
- dateInstance = (0, getDate_1.default)({ input, setMidnight, setTimeZone });
18
+ if (props?.input) {
19
+ dateInstance = (0, getDate_1.default)({
20
+ input: props.input,
21
+ isUtc: props.isUtc,
22
+ setMidnight: props.setMidnight,
23
+ setTimeZone: props.setTimeZone,
24
+ });
20
25
  }
21
26
  else {
22
27
  // As we are getting today's date we don't want to convert this timezone
23
- dateInstance = (0, getToday_1.default)({ setMidnight });
28
+ dateInstance = (0, getToday_1.default)({
29
+ setTimeZone: props.setTimeZone,
30
+ });
24
31
  }
25
32
  if (!(0, date_fns_2.isSunday)(dateInstance)) {
26
33
  // Get the ISO Day of week (Monday - 1 to Sunday - 7)
@@ -29,7 +36,7 @@ const getSunday = ({ weeksAgo, input, setMidnight = true, setTimeZone = false })
29
36
  dateInstance = (0, date_fns_3.subDays)(dateInstance, isoDay);
30
37
  }
31
38
  // Move it back a given number of weeks
32
- dateInstance = (0, date_fns_3.subDays)(dateInstance, 7 * weeksAgo);
39
+ dateInstance = (0, date_fns_3.subDays)(dateInstance, 7 * props.weeksAgo);
33
40
  return dateInstance;
34
41
  };
35
42
  exports.default = getSunday;
@@ -1,6 +1,6 @@
1
- import { GetMidnight } from './getMidnight';
2
- import { GetTimeZoned } from './getTimeZoned';
3
- import { Timeframe } from './timeframe';
1
+ import { GetMidnight } from "./getMidnight";
2
+ import { GetTimeZoned } from "./getTimeZoned";
3
+ import { Timeframe } from "./timeframe";
4
4
  type GetThisWeek = GetTimeZoned & GetMidnight;
5
5
  /**
6
6
  * Return an object of start/end predefined date of This Week.
@@ -23,8 +23,14 @@ const getThisWeek = ({ setMidnight = true, setTimeZone = getTimeZoned_1.timeZone
23
23
  setTimeZone,
24
24
  });
25
25
  return {
26
- end: (0, getNumber_1.default)({ input: sunday }),
27
- start: (0, getNumber_1.default)({ input: monday }),
26
+ end: (0, getNumber_1.default)({
27
+ input: sunday,
28
+ isUtc: true,
29
+ }),
30
+ start: (0, getNumber_1.default)({
31
+ input: monday,
32
+ isUtc: true,
33
+ }),
28
34
  };
29
35
  };
30
36
  exports.default = getThisWeek;
@@ -12,7 +12,8 @@ const getTodayYmd = () => {
12
12
  const today = (0, getToday_1.default)({ setMidnight: false });
13
13
  const todayYmd = (0, format_1.default)({
14
14
  input: today,
15
- dateFormat: 'yyyy-MM-dd',
15
+ isUtc: true,
16
+ dateFormat: "yyyy-MM-dd",
16
17
  setMidnight: false,
17
18
  });
18
19
  return todayYmd;
@@ -12,6 +12,7 @@ const getTodayYmdhis = () => {
12
12
  const today = (0, getToday_1.default)({ setMidnight: false });
13
13
  const todayYmdhis = (0, format_1.default)({
14
14
  input: today,
15
+ isUtc: true,
15
16
  dateFormat: 'yyyy-MM-dd HH:mm:ss',
16
17
  setMidnight: false,
17
18
  });
@@ -1,6 +1,6 @@
1
- import { GetMidnight } from './getMidnight';
2
- import { GetTimeZoned } from './getTimeZoned';
3
- import { Timeframe } from './timeframe';
1
+ import { GetMidnight } from "./getMidnight";
2
+ import { GetTimeZoned } from "./getTimeZoned";
3
+ import { Timeframe } from "./timeframe";
4
4
  type GetTwoWeeksAgo = GetTimeZoned & GetMidnight;
5
5
  /**
6
6
  * Return an object of start/end predefined date of Two Weeks Ago.
@@ -23,8 +23,14 @@ const getTwoWeeksAgo = ({ setMidnight = true, setTimeZone = getTimeZoned_1.timeZ
23
23
  setTimeZone,
24
24
  });
25
25
  return {
26
- end: (0, getNumber_1.default)({ input: sunday }),
27
- start: (0, getNumber_1.default)({ input: monday }),
26
+ end: (0, getNumber_1.default)({
27
+ input: sunday,
28
+ isUtc: true,
29
+ }),
30
+ start: (0, getNumber_1.default)({
31
+ input: monday,
32
+ isUtc: true,
33
+ }),
28
34
  };
29
35
  };
30
36
  exports.default = getTwoWeeksAgo;
@@ -2,11 +2,12 @@ import { DateType } from './date';
2
2
  import { GetTimeZoned } from './getTimeZoned';
3
3
  type GetWeeksAgo = GetTimeZoned & {
4
4
  input: DateType;
5
+ isUtc: boolean;
5
6
  weeksAgo: number;
6
7
  setMidnight?: boolean;
7
8
  };
8
9
  /**
9
10
  * From a given input, move the date back X weeksAgo
10
11
  */
11
- declare const getWeeksAgo: ({ input, weeksAgo, setMidnight, setTimeZone }: GetWeeksAgo) => number;
12
+ declare const getWeeksAgo: ({ input, isUtc, weeksAgo, setMidnight, setTimeZone }: GetWeeksAgo) => number;
12
13
  export default getWeeksAgo;
@@ -9,13 +9,17 @@ const getNumber_1 = __importDefault(require("./getNumber"));
9
9
  /**
10
10
  * From a given input, move the date back X weeksAgo
11
11
  */
12
- const getWeeksAgo = ({ input, weeksAgo = 0, setMidnight = true, setTimeZone = false }) => {
12
+ const getWeeksAgo = ({ input, isUtc, weeksAgo = 0, setMidnight = true, setTimeZone = false }) => {
13
13
  let dateInstance = (0, getDate_1.default)({
14
14
  input,
15
+ isUtc,
15
16
  setMidnight,
16
17
  setTimeZone
17
18
  });
18
19
  dateInstance = (0, date_fns_1.sub)(dateInstance, { weeks: weeksAgo });
19
- return (0, getNumber_1.default)({ input: dateInstance });
20
+ return (0, getNumber_1.default)({
21
+ input: dateInstance,
22
+ isUtc,
23
+ });
20
24
  };
21
25
  exports.default = getWeeksAgo;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@8ms/helpers",
3
3
  "license": "UNLICENSED",
4
- "version": "1.16.0",
4
+ "version": "1.21.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/8millionstories-organisation/8ms-helpers-ts.git"