@8ms/helpers 1.14.0 → 1.16.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.
- package/date/getDate.js +25 -26
- package/date/getMidnight.js +9 -4
- package/date/getTimeZoned.js +27 -10
- package/date/getToday.d.ts +3 -3
- package/date/getToday.js +6 -29
- package/package.json +40 -41
- package/prisma/initClient.d.ts +6 -0
- package/prisma/initClient.js +7 -2
package/date/getDate.js
CHANGED
|
@@ -5,7 +5,6 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const getMidnight_1 = __importDefault(require("./getMidnight"));
|
|
7
7
|
const getTimeZoned_1 = __importDefault(require("./getTimeZoned"));
|
|
8
|
-
const date_fns_1 = require("date-fns");
|
|
9
8
|
/**
|
|
10
9
|
* Convert a (number | string | Date) into a Date object.
|
|
11
10
|
* As the user would be providing the input we don't want to change the timezone typically.
|
|
@@ -33,14 +32,14 @@ const getDate = (props) => {
|
|
|
33
32
|
const day = Number(dateString.substring(6, 8));
|
|
34
33
|
date = new Date();
|
|
35
34
|
// Reset the date to the 1st initially at 1am
|
|
36
|
-
date.
|
|
37
|
-
date.
|
|
35
|
+
date.setUTCDate(1);
|
|
36
|
+
date.setUTCHours(1, 0, 0, 0);
|
|
38
37
|
date.setFullYear(year);
|
|
39
|
-
date.
|
|
40
|
-
date.
|
|
41
|
-
date.
|
|
38
|
+
date.setUTCMonth(month);
|
|
39
|
+
date.setUTCDate(day);
|
|
40
|
+
date.setUTCHours(0, 0, 0, 0);
|
|
42
41
|
// Resolve timezone offset
|
|
43
|
-
date =
|
|
42
|
+
//date = addMinutes(date, date.getTimezoneOffset() * -1);
|
|
44
43
|
}
|
|
45
44
|
// 2022-04-12
|
|
46
45
|
else if (regexes.ymdDash.test(dateString)) {
|
|
@@ -51,17 +50,17 @@ const getDate = (props) => {
|
|
|
51
50
|
//console.log('default - date', date);
|
|
52
51
|
// Reset the date
|
|
53
52
|
date.setFullYear(year);
|
|
54
|
-
date.
|
|
55
|
-
date.
|
|
56
|
-
date.
|
|
53
|
+
date.setUTCHours(1, 0, 0, 0);
|
|
54
|
+
date.setUTCMonth(0);
|
|
55
|
+
date.setUTCDate(1);
|
|
57
56
|
//console.log('reset - date', date);
|
|
58
57
|
// Finalise date
|
|
59
|
-
date.
|
|
60
|
-
date.
|
|
61
|
-
date.
|
|
58
|
+
date.setUTCMonth(month);
|
|
59
|
+
date.setUTCDate(day);
|
|
60
|
+
date.setUTCHours(0, 0, 0, 0);
|
|
62
61
|
//console.log('finalise - date', date);
|
|
63
62
|
// Resolve timezone offset
|
|
64
|
-
date =
|
|
63
|
+
//date = addMinutes(date, date.getTimezoneOffset() * -1);
|
|
65
64
|
//console.log('timezone - date', date);
|
|
66
65
|
}
|
|
67
66
|
// 2022-04-12 01:01:01
|
|
@@ -74,14 +73,14 @@ const getDate = (props) => {
|
|
|
74
73
|
const seconds = Number(dateString.substring(17, 19));
|
|
75
74
|
date = new Date();
|
|
76
75
|
// Reset the date to the 1st initially at 1am
|
|
77
|
-
date.
|
|
78
|
-
date.
|
|
76
|
+
date.setUTCDate(1);
|
|
77
|
+
date.setUTCHours(1, 0, 0, 0);
|
|
79
78
|
date.setFullYear(year);
|
|
80
|
-
date.
|
|
81
|
-
date.
|
|
82
|
-
date.
|
|
79
|
+
date.setUTCMonth(month);
|
|
80
|
+
date.setUTCDate(day);
|
|
81
|
+
date.setUTCHours(hours, minutes, seconds);
|
|
83
82
|
// Resolve timezone offset
|
|
84
|
-
date =
|
|
83
|
+
//date = addMinutes(date, date.getTimezoneOffset() * -1);
|
|
85
84
|
}
|
|
86
85
|
// 20220412010101
|
|
87
86
|
else if (regexes.ymdHisNumber.test(dateString)) {
|
|
@@ -93,14 +92,14 @@ const getDate = (props) => {
|
|
|
93
92
|
const seconds = Number(dateString.substring(12, 14));
|
|
94
93
|
date = new Date();
|
|
95
94
|
// Reset the date to the 1st initially at 1am
|
|
96
|
-
date.
|
|
97
|
-
date.
|
|
95
|
+
date.setUTCDate(1);
|
|
96
|
+
date.setUTCHours(1, 0, 0, 0);
|
|
98
97
|
date.setFullYear(year);
|
|
99
|
-
date.
|
|
100
|
-
date.
|
|
101
|
-
date.
|
|
98
|
+
date.setUTCMonth(month);
|
|
99
|
+
date.setUTCDate(day);
|
|
100
|
+
date.setUTCHours(hours, minutes, seconds);
|
|
102
101
|
// Resolve timezone offset
|
|
103
|
-
date =
|
|
102
|
+
// date = addMinutes(date, date.getTimezoneOffset() * -1);
|
|
104
103
|
}
|
|
105
104
|
// Unsure date format, try anything
|
|
106
105
|
else {
|
package/date/getMidnight.js
CHANGED
|
@@ -6,12 +6,17 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
const getMidnight = (props) => {
|
|
7
7
|
let dateInstance = props.input;
|
|
8
8
|
if (true === props?.setMidnight) {
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
dateInstance.setUTCHours(0, 0, 0, 0);
|
|
10
|
+
/**
|
|
11
|
+
if (0 === dateInstance.getTimezoneOffset())
|
|
12
|
+
{
|
|
13
|
+
dateInstance.setUTCHours(0, 0, 0, 0);
|
|
11
14
|
}
|
|
12
|
-
else
|
|
13
|
-
|
|
15
|
+
else
|
|
16
|
+
{
|
|
17
|
+
dateInstance.setUTCHours(1, 0, 0, 0);
|
|
14
18
|
}
|
|
19
|
+
*/
|
|
15
20
|
}
|
|
16
21
|
return dateInstance;
|
|
17
22
|
};
|
package/date/getTimeZoned.js
CHANGED
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.timeZoneLondon = void 0;
|
|
4
|
-
const date_fns_tz_1 = require("date-fns-tz");
|
|
5
|
-
const date_fns_1 = require("date-fns");
|
|
6
4
|
exports.timeZoneLondon = 'Europe/London';
|
|
7
5
|
/**
|
|
8
6
|
* Convert an input into a given timezone.
|
|
@@ -11,28 +9,47 @@ exports.timeZoneLondon = 'Europe/London';
|
|
|
11
9
|
*/
|
|
12
10
|
const getTimeZoned = (props) => {
|
|
13
11
|
let dateInstance = props.input;
|
|
14
|
-
|
|
12
|
+
/**
|
|
13
|
+
|
|
14
|
+
if (props?.input && 'string' === typeof props.setTimeZone)
|
|
15
|
+
{
|
|
15
16
|
// Cannot convert YYYY-MM-DD into new Date as Safari doesn't support this
|
|
16
|
-
const dateString =
|
|
17
|
+
const dateString = formatInTimeZone(
|
|
18
|
+
dateInstance,
|
|
19
|
+
props?.setTimeZone,
|
|
20
|
+
'yyyy-MM-dd HH:mm:ss'
|
|
21
|
+
);
|
|
22
|
+
|
|
17
23
|
const year = Number(dateString.substring(0, 4));
|
|
18
24
|
const month = Number(dateString.substring(5, 7)) - 1;
|
|
19
25
|
const day = Number(dateString.substring(8, 10));
|
|
26
|
+
|
|
20
27
|
const hours = Number(dateString.substring(11, 13));
|
|
21
28
|
const minutes = Number(dateString.substring(14, 16));
|
|
22
29
|
const seconds = Number(dateString.substring(17, 19));
|
|
30
|
+
|
|
23
31
|
dateInstance = new Date();
|
|
32
|
+
|
|
24
33
|
// Reset the date to the 1st initially at 1am
|
|
25
|
-
dateInstance.
|
|
26
|
-
dateInstance.
|
|
34
|
+
dateInstance.setUTCDate(1);
|
|
35
|
+
dateInstance.setUTCHours(1, 0, 0, 0);
|
|
36
|
+
|
|
27
37
|
dateInstance.setFullYear(year);
|
|
28
|
-
dateInstance.
|
|
29
|
-
dateInstance.
|
|
30
|
-
dateInstance.
|
|
38
|
+
dateInstance.setUTCMonth(month);
|
|
39
|
+
dateInstance.setUTCDate(day);
|
|
40
|
+
dateInstance.setUTCHours(hours, minutes, seconds);
|
|
41
|
+
|
|
31
42
|
// console.log('dateInstance', dateInstance);
|
|
32
43
|
// console.log('dateInstance.getTimezoneOffset()', dateInstance.getTimezoneOffset());
|
|
44
|
+
|
|
33
45
|
// Fixes the timezone offset due to daylight savings
|
|
34
|
-
dateInstance =
|
|
46
|
+
dateInstance = addMinutes(
|
|
47
|
+
dateInstance,
|
|
48
|
+
dateInstance.getTimezoneOffset() * -1
|
|
49
|
+
);
|
|
35
50
|
}
|
|
51
|
+
|
|
52
|
+
*/
|
|
36
53
|
return dateInstance;
|
|
37
54
|
};
|
|
38
55
|
exports.default = getTimeZoned;
|
package/date/getToday.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { GetMidnight } from
|
|
2
|
-
import { GetTimeZoned } from
|
|
1
|
+
import { GetMidnight } from "./getMidnight";
|
|
2
|
+
import { GetTimeZoned } from "./getTimeZoned";
|
|
3
3
|
type GetToday = GetTimeZoned & GetMidnight;
|
|
4
4
|
/**
|
|
5
5
|
* Shortcut to get today's date.
|
|
6
6
|
* Creating a date from scratch (no user input), thus needs to be London time.
|
|
7
7
|
*/
|
|
8
|
-
declare const getToday: (
|
|
8
|
+
declare const getToday: (props?: GetToday) => Date;
|
|
9
9
|
export default getToday;
|
package/date/getToday.js
CHANGED
|
@@ -1,46 +1,23 @@
|
|
|
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 =
|
|
7
|
+
const getTimeZoned_1 = __importDefault(require("./getTimeZoned"));
|
|
31
8
|
/**
|
|
32
9
|
* Shortcut to get today's date.
|
|
33
10
|
* Creating a date from scratch (no user input), thus needs to be London time.
|
|
34
11
|
*/
|
|
35
|
-
const getToday = (
|
|
12
|
+
const getToday = (props = {}) => {
|
|
36
13
|
let today = new Date();
|
|
37
|
-
today = (0,
|
|
14
|
+
today = (0, getMidnight_1.default)({
|
|
38
15
|
input: today,
|
|
39
|
-
|
|
16
|
+
setMidnight: undefined === props?.setMidnight ? true : props?.setMidnight,
|
|
40
17
|
});
|
|
41
|
-
today = (0,
|
|
18
|
+
today = (0, getTimeZoned_1.default)({
|
|
42
19
|
input: today,
|
|
43
|
-
|
|
20
|
+
setTimeZone: undefined === props?.setTimeZone ? undefined : props?.setTimeZone,
|
|
44
21
|
});
|
|
45
22
|
return today;
|
|
46
23
|
};
|
package/package.json
CHANGED
|
@@ -1,52 +1,51 @@
|
|
|
1
1
|
{
|
|
2
|
-
"name":
|
|
3
|
-
"license":
|
|
4
|
-
"version":
|
|
5
|
-
"repository":
|
|
2
|
+
"name": "@8ms/helpers",
|
|
3
|
+
"license": "UNLICENSED",
|
|
4
|
+
"version": "1.16.0",
|
|
5
|
+
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
|
-
"url":
|
|
7
|
+
"url": "git+https://github.com/8millionstories-organisation/8ms-helpers-ts.git"
|
|
8
8
|
},
|
|
9
|
-
"main":
|
|
10
|
-
"types":
|
|
11
|
-
"scripts":
|
|
9
|
+
"main": "index.js",
|
|
10
|
+
"types": "index.d.ts",
|
|
11
|
+
"scripts": {
|
|
12
12
|
"build": "tsc",
|
|
13
|
-
"jest":
|
|
13
|
+
"jest": "jest --watch"
|
|
14
14
|
},
|
|
15
|
-
"dependencies":
|
|
16
|
-
"axios":
|
|
17
|
-
"crypto-js":
|
|
18
|
-
"date-fns":
|
|
15
|
+
"dependencies": {
|
|
16
|
+
"axios": "1.6.8",
|
|
17
|
+
"crypto-js": "4.2.0",
|
|
18
|
+
"date-fns": "3.6.0",
|
|
19
19
|
"date-fns-tz": "3.1.3",
|
|
20
|
-
"lodash":
|
|
21
|
-
"zod":
|
|
20
|
+
"lodash": "4.17.21",
|
|
21
|
+
"zod": "3.23.5"
|
|
22
22
|
},
|
|
23
23
|
"devDependencies": {
|
|
24
|
-
"@aws-sdk/client-s3":
|
|
25
|
-
"@aws-sdk/client-ses":
|
|
26
|
-
"@aws-sdk/client-sqs":
|
|
27
|
-
"@aws-sdk/client-ssm":
|
|
28
|
-
"@aws-sdk/lib-storage":
|
|
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
29
|
"@aws-sdk/s3-request-presigner": "3.567.0",
|
|
30
|
-
"@babel/preset-env":
|
|
31
|
-
"@babel/preset-flow":
|
|
32
|
-
"@babel/preset-typescript":
|
|
33
|
-
"@google-cloud/bigquery":
|
|
34
|
-
"@google-cloud/storage":
|
|
35
|
-
"@planetscale/database":
|
|
36
|
-
"@prisma/adapter-planetscale":
|
|
37
|
-
"@prisma/client":
|
|
38
|
-
"@types/jest":
|
|
39
|
-
"@types/lodash":
|
|
40
|
-
"@types/node":
|
|
41
|
-
"babel-jest":
|
|
42
|
-
"jest":
|
|
43
|
-
"node-fetch":
|
|
44
|
-
"stream-chain":
|
|
45
|
-
"stream-json":
|
|
46
|
-
"timezone-mock":
|
|
47
|
-
"ts-node":
|
|
48
|
-
"tslib":
|
|
49
|
-
"typescript":
|
|
50
|
-
"undici": "^6.16.1"
|
|
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
|
+
"@planetscale/database": "1.18.0",
|
|
36
|
+
"@prisma/adapter-planetscale": "5.14.0",
|
|
37
|
+
"@prisma/client": "5.13.0",
|
|
38
|
+
"@types/jest": "29.5.12",
|
|
39
|
+
"@types/lodash": "4.17.0",
|
|
40
|
+
"@types/node": "20.12.8",
|
|
41
|
+
"babel-jest": "29.7.0",
|
|
42
|
+
"jest": "29.7.0",
|
|
43
|
+
"node-fetch": "3.3.2",
|
|
44
|
+
"stream-chain": "2.2.5",
|
|
45
|
+
"stream-json": "1.8.0",
|
|
46
|
+
"timezone-mock": "1.3.6",
|
|
47
|
+
"ts-node": "10.9.2",
|
|
48
|
+
"tslib": "2.6.2",
|
|
49
|
+
"typescript": "5.4.5"
|
|
51
50
|
}
|
|
52
51
|
}
|
package/prisma/initClient.d.ts
CHANGED
|
@@ -1,3 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prevent too many connections
|
|
3
|
+
* https://github.com/prisma/prisma/issues/1983#issuecomment-620621213
|
|
4
|
+
* https://next-auth.js.org/schemas/adapters
|
|
5
|
+
* Library: @prisma/client, prisma-query-log
|
|
6
|
+
*/
|
|
1
7
|
declare const initClient: ({ debug }?: {
|
|
2
8
|
debug?: boolean;
|
|
3
9
|
}) => void;
|
package/prisma/initClient.js
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Prevent too many connections
|
|
4
|
+
* https://github.com/prisma/prisma/issues/1983#issuecomment-620621213
|
|
5
|
+
* https://next-auth.js.org/schemas/adapters
|
|
6
|
+
* Library: @prisma/client, prisma-query-log
|
|
7
|
+
*/
|
|
2
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
9
|
global.prisma = null;
|
|
4
10
|
const initClient = ({ debug } = { debug: false }) => {
|
|
@@ -6,9 +12,8 @@ const initClient = ({ debug } = { debug: false }) => {
|
|
|
6
12
|
const { Client } = require("@planetscale/database");
|
|
7
13
|
const { PrismaClient } = require("@prisma/client");
|
|
8
14
|
const { PrismaPlanetScale } = require("@prisma/adapter-planetscale");
|
|
9
|
-
const { fetch: undiciFetch } = require("undici");
|
|
10
15
|
const client = new Client({
|
|
11
|
-
url: process.env.DATABASE_URL
|
|
16
|
+
url: process.env.DATABASE_URL
|
|
12
17
|
});
|
|
13
18
|
const adapter = new PrismaPlanetScale(client);
|
|
14
19
|
// Show the full query if debugging
|