@runnerpro/backend 1.1.10 → 1.1.11
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/lib/cjs/chat/api/conversation.js +13 -13
- package/lib/cjs/chat/api/listConversations.js +13 -13
- package/lib/cjs/chat/exposed/conversation.js +1 -1
- package/lib/cjs/chat/utils/getCountNotificaciones.js +12 -12
- package/lib/cjs/fetch/fetchIA.js +7 -7
- package/lib/cjs/googleSheet/index.js +3 -2
- package/lib/cjs/sendMail/index.js +65 -65
- package/lib/cjs/sendNotification/index.js +1 -1
- package/lib/cjs/types/chat/api/conversation.d.ts.map +1 -1
- package/lib/cjs/types/googleSheet/index.d.ts +1 -1
- package/lib/cjs/types/googleSheet/index.d.ts.map +1 -1
- package/package.json +71 -71
|
@@ -44,11 +44,11 @@ const conversationRoute = (_a) => {
|
|
|
44
44
|
},
|
|
45
45
|
});
|
|
46
46
|
router.get('/conversation', (req, res, next) => getConversation(req, res, params).catch((error) => (0, index_1.err)(req, res, error, next)));
|
|
47
|
-
router.get('/conversation/suggestion', (req, res, next) => getConversationSuggestion(req, res
|
|
47
|
+
router.get('/conversation/suggestion', (req, res, next) => getConversationSuggestion(req, res).catch((error) => (0, index_1.err)(req, res, error, next)));
|
|
48
48
|
router.get('/conversation/image/:id', (req, res, next) => getConversationImage(req, res, params).catch((error) => (0, index_1.err)(req, res, error, next)));
|
|
49
49
|
router.get('/conversation/file/:id', (req, res, next) => getConversationFile(req, res, params).catch((error) => (0, index_1.err)(req, res, error, next)));
|
|
50
50
|
router.post('/conversation/send', (req, res, next) => sendMessage(req, res, params).catch((error) => (0, index_1.err)(req, res, error, next)));
|
|
51
|
-
router.post('/conversation/send-file', uploadFile.single('file'), (req, res, next) => sendFile(req, res, params
|
|
51
|
+
router.post('/conversation/send-file', uploadFile.single('file'), (req, res, next) => sendFile(req, res, params).catch((error) => (0, index_1.err)(req, res, error, next)));
|
|
52
52
|
router.post('/conversation/read', (req, res, next) => readMessage(req, res, params).catch((error) => (0, index_1.err)(req, res, error, next)));
|
|
53
53
|
router.post('/conversation/read-feelings', (req, res, next) => readFeelings(req, res, params).catch((error) => (0, index_1.err)(req, res, error, next)));
|
|
54
54
|
};
|
|
@@ -56,13 +56,13 @@ exports.conversationRoute = conversationRoute;
|
|
|
56
56
|
const getConversation = (req, res, { query, isClient }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
57
57
|
const idCliente = isClient ? req.session.userid : req.query.id;
|
|
58
58
|
const [header] = yield query('SELECT [NAME], [PREFERRED LANGUAGE] FROM [CLIENTE] WHERE [ID] = ?', [idCliente]);
|
|
59
|
-
let messages = yield query(`SELECT [CHAT MESSAGE].*,
|
|
60
|
-
[WORKOUT].[DATE] AS [WORKOUT DATE], [WORKOUT].[TYPE] AS [WORKOUT TYPE], [WORKOUT].[TITLE] AS [WORKOUT TITLE],
|
|
61
|
-
[FEELINGS], [FEELINGS DESCRIPTION]
|
|
62
|
-
FROM [CHAT MESSAGE]
|
|
63
|
-
LEFT JOIN [WORKOUT] ON [WORKOUT].[ID] = [CHAT MESSAGE].[ID WORKOUT]
|
|
64
|
-
WHERE [CHAT MESSAGE].[ID CLIENTE] = ? AND (${isClient} = FALSE OR [CHAT MESSAGE].[SHOW CLIENT] = TRUE)
|
|
65
|
-
ORDER BY [CHAT MESSAGE].[DATE] DESC
|
|
59
|
+
let messages = yield query(`SELECT [CHAT MESSAGE].*,
|
|
60
|
+
[WORKOUT].[DATE] AS [WORKOUT DATE], [WORKOUT].[TYPE] AS [WORKOUT TYPE], [WORKOUT].[TITLE] AS [WORKOUT TITLE],
|
|
61
|
+
[FEELINGS], [FEELINGS DESCRIPTION]
|
|
62
|
+
FROM [CHAT MESSAGE]
|
|
63
|
+
LEFT JOIN [WORKOUT] ON [WORKOUT].[ID] = [CHAT MESSAGE].[ID WORKOUT]
|
|
64
|
+
WHERE [CHAT MESSAGE].[ID CLIENTE] = ? AND (${isClient} = FALSE OR [CHAT MESSAGE].[SHOW CLIENT] = TRUE)
|
|
65
|
+
ORDER BY [CHAT MESSAGE].[DATE] DESC
|
|
66
66
|
LIMIT 100`, [idCliente]);
|
|
67
67
|
messages = messages.reverse();
|
|
68
68
|
// Si el cliente no habla español, se muestran los mensajes en el idioma del cliente. El entrenador siempre ve los mensajes en español que están en la columna [TEXT]
|
|
@@ -127,7 +127,7 @@ const getChatFile = ({ query, bucket, id, isClient, userid }) => __awaiter(void
|
|
|
127
127
|
return null;
|
|
128
128
|
}
|
|
129
129
|
});
|
|
130
|
-
const getConversationSuggestion = (req, res
|
|
130
|
+
const getConversationSuggestion = (req, res) => __awaiter(void 0, void 0, void 0, function* () {
|
|
131
131
|
let result;
|
|
132
132
|
try {
|
|
133
133
|
result = yield axios_1.default
|
|
@@ -141,7 +141,7 @@ const getConversationSuggestion = (req, res, next) => __awaiter(void 0, void 0,
|
|
|
141
141
|
.then((response) => response.data);
|
|
142
142
|
}
|
|
143
143
|
catch (e) {
|
|
144
|
-
(0, index_1.err)(null, null, e,
|
|
144
|
+
(0, index_1.err)(null, null, e, null);
|
|
145
145
|
result = { error: 'Ha habido un error con el servidor' };
|
|
146
146
|
}
|
|
147
147
|
finally {
|
|
@@ -196,7 +196,7 @@ const getPreferredLanguageForChat = ({ text, idCliente, isClient, query }) => __
|
|
|
196
196
|
preferredLanguage: preferredLanguage,
|
|
197
197
|
};
|
|
198
198
|
});
|
|
199
|
-
const sendFile = (req, res, { sendNotification, firebaseMessaging, query, isClient, bucket }
|
|
199
|
+
const sendFile = (req, res, { sendNotification, firebaseMessaging, query, isClient, bucket }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
200
200
|
const { idCliente, type, duration } = req.body;
|
|
201
201
|
const { userid } = req.session;
|
|
202
202
|
const [{ id: idFile }] = yield query('INSERT INTO [CHAT MESSAGE] ([ID CLIENTE], [ID SENDER], [TEXT], [MIMETYPE], [DURATION], [TYPE]) VALUES (?, ?, ?, ?, ?, ?) RETURNING [ID]', [isClient ? userid : idCliente, userid, req.file.originalname, req.file.mimetype, duration || null, type || 2]);
|
|
@@ -211,7 +211,7 @@ const sendFile = (req, res, { sendNotification, firebaseMessaging, query, isClie
|
|
|
211
211
|
files.push({ data: fileDataOriented, id: `${idFile}-original` });
|
|
212
212
|
}
|
|
213
213
|
catch (error) {
|
|
214
|
-
(0, index_1.err)(null, null, error,
|
|
214
|
+
(0, index_1.err)(null, null, error, null);
|
|
215
215
|
}
|
|
216
216
|
}
|
|
217
217
|
else {
|
|
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
23
23
|
exports.listConversationsRoute = void 0;
|
|
24
24
|
const listConversationsRoute = (_a) => {
|
|
25
25
|
var { router, err } = _a, params = __rest(_a, ["router", "err"]);
|
|
26
|
-
router.get('/list', (req, res
|
|
26
|
+
router.get('/list', (req, res) => getList(req, res, params).catch((error) => err(req, res, error)));
|
|
27
27
|
};
|
|
28
28
|
exports.listConversationsRoute = listConversationsRoute;
|
|
29
29
|
const getList = (req, res, { query, isClient }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -32,18 +32,18 @@ const getList = (req, res, { query, isClient }) => __awaiter(void 0, void 0, voi
|
|
|
32
32
|
else {
|
|
33
33
|
const { page } = req.query;
|
|
34
34
|
const limit = 20;
|
|
35
|
-
const list = yield query(`
|
|
36
|
-
SELECT [C].[ID], [C].[NAME],
|
|
37
|
-
[CM].[DATE], [CM].[TEXT],
|
|
38
|
-
CASE WHEN [CM].[READ] = FALSE AND [CM].[ID SENDER] = [CM].[ID CLIENTE] THEN 0
|
|
39
|
-
ELSE 1 END AS [READ]
|
|
40
|
-
FROM [CLIENTE] AS [C]
|
|
41
|
-
LEFT JOIN (
|
|
42
|
-
SELECT *, ROW_NUMBER() OVER (PARTITION BY [ID CLIENTE] ORDER BY [DATE] DESC) AS [ROW]
|
|
43
|
-
FROM [CHAT MESSAGE]
|
|
44
|
-
) AS [CM] ON [CM].[ID CLIENTE] = [C].[ID] AND [CM].[ROW] = 1
|
|
45
|
-
ORDER BY CASE WHEN [CM].[DATE] IS NULL THEN 1 ELSE 0 END, [CM].[DATE] DESC
|
|
46
|
-
LIMIT ? OFFSET ?
|
|
35
|
+
const list = yield query(`
|
|
36
|
+
SELECT [C].[ID], [C].[NAME],
|
|
37
|
+
[CM].[DATE], [CM].[TEXT],
|
|
38
|
+
CASE WHEN [CM].[READ] = FALSE AND [CM].[ID SENDER] = [CM].[ID CLIENTE] THEN 0
|
|
39
|
+
ELSE 1 END AS [READ]
|
|
40
|
+
FROM [CLIENTE] AS [C]
|
|
41
|
+
LEFT JOIN (
|
|
42
|
+
SELECT *, ROW_NUMBER() OVER (PARTITION BY [ID CLIENTE] ORDER BY [DATE] DESC) AS [ROW]
|
|
43
|
+
FROM [CHAT MESSAGE]
|
|
44
|
+
) AS [CM] ON [CM].[ID CLIENTE] = [C].[ID] AND [CM].[ROW] = 1
|
|
45
|
+
ORDER BY CASE WHEN [CM].[DATE] IS NULL THEN 1 ELSE 0 END, [CM].[DATE] DESC
|
|
46
|
+
LIMIT ? OFFSET ?
|
|
47
47
|
`, [limit, limit * page]);
|
|
48
48
|
res.send(list);
|
|
49
49
|
}
|
|
@@ -24,7 +24,7 @@ exports.conversationRoute = void 0;
|
|
|
24
24
|
const getRoom_1 = require("../utils/getRoom");
|
|
25
25
|
const conversationRoute = (_a) => {
|
|
26
26
|
var { router, err } = _a, params = __rest(_a, ["router", "err"]);
|
|
27
|
-
router.post('/conversation/socket', (req, res
|
|
27
|
+
router.post('/conversation/socket', (req, res) => socketConversation(req, res, params).catch((error) => err(req, res, error)));
|
|
28
28
|
};
|
|
29
29
|
exports.conversationRoute = conversationRoute;
|
|
30
30
|
const socketConversation = (req, res, { isClient }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
@@ -12,22 +12,22 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
12
12
|
exports.getCountNotificaciones = void 0;
|
|
13
13
|
const getCountNotificaciones = ({ query, isClient, idClient }) => __awaiter(void 0, void 0, void 0, function* () {
|
|
14
14
|
if (isClient) {
|
|
15
|
-
const [{ chat }] = yield query(`
|
|
16
|
-
SELECT COUNT([ID]) AS [CHAT]
|
|
17
|
-
FROM [CHAT MESSAGE]
|
|
18
|
-
WHERE [ID CLIENTE] = ? AND [READ] = FALSE AND [ID SENDER] != [ID CLIENTE]
|
|
15
|
+
const [{ chat }] = yield query(`
|
|
16
|
+
SELECT COUNT([ID]) AS [CHAT]
|
|
17
|
+
FROM [CHAT MESSAGE]
|
|
18
|
+
WHERE [ID CLIENTE] = ? AND [READ] = FALSE AND [ID SENDER] != [ID CLIENTE]
|
|
19
19
|
`, [idClient]);
|
|
20
20
|
return chat;
|
|
21
21
|
}
|
|
22
22
|
else {
|
|
23
|
-
const [{ chat }] = yield query(`
|
|
24
|
-
SELECT COUNT([C].[ID]) AS [CHAT]
|
|
25
|
-
FROM [CLIENTE] AS [C]
|
|
26
|
-
LEFT JOIN (
|
|
27
|
-
SELECT *, ROW_NUMBER() OVER (PARTITION BY [ID CLIENTE] ORDER BY [DATE] DESC) AS [ROW]
|
|
28
|
-
FROM [CHAT MESSAGE]
|
|
29
|
-
) AS [CM] ON [CM].[ID CLIENTE] = [C].[ID] AND [CM].[ROW] = 1
|
|
30
|
-
WHERE [CM].[READ] = FALSE AND [CM].[ID SENDER] = [CM].[ID CLIENTE]
|
|
23
|
+
const [{ chat }] = yield query(`
|
|
24
|
+
SELECT COUNT([C].[ID]) AS [CHAT]
|
|
25
|
+
FROM [CLIENTE] AS [C]
|
|
26
|
+
LEFT JOIN (
|
|
27
|
+
SELECT *, ROW_NUMBER() OVER (PARTITION BY [ID CLIENTE] ORDER BY [DATE] DESC) AS [ROW]
|
|
28
|
+
FROM [CHAT MESSAGE]
|
|
29
|
+
) AS [CM] ON [CM].[ID CLIENTE] = [C].[ID] AND [CM].[ROW] = 1
|
|
30
|
+
WHERE [CM].[READ] = FALSE AND [CM].[ID SENDER] = [CM].[ID CLIENTE]
|
|
31
31
|
`);
|
|
32
32
|
return chat;
|
|
33
33
|
}
|
package/lib/cjs/fetch/fetchIA.js
CHANGED
|
@@ -24,7 +24,7 @@ const fetchIA = {
|
|
|
24
24
|
Authorization: `Bearer ${process.env.IA_ACCESS_TOKEN}`,
|
|
25
25
|
} }, options === null || options === void 0 ? void 0 : options.extra))
|
|
26
26
|
.then(({ data }) => data)
|
|
27
|
-
.catch((error) => catchAxios(error, !!(options === null || options === void 0 ? void 0 : options.bypassStatus)
|
|
27
|
+
.catch((error) => catchAxios(error, !!(options === null || options === void 0 ? void 0 : options.bypassStatus)));
|
|
28
28
|
}),
|
|
29
29
|
post: (url, body, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
30
30
|
return axios_1.default
|
|
@@ -36,7 +36,7 @@ const fetchIA = {
|
|
|
36
36
|
},
|
|
37
37
|
})
|
|
38
38
|
.then(({ data }) => data)
|
|
39
|
-
.catch((error) => catchAxios(error, !!(options === null || options === void 0 ? void 0 : options.bypassStatus)
|
|
39
|
+
.catch((error) => catchAxios(error, !!(options === null || options === void 0 ? void 0 : options.bypassStatus)));
|
|
40
40
|
}),
|
|
41
41
|
put: (url, body, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
42
42
|
return axios_1.default
|
|
@@ -48,7 +48,7 @@ const fetchIA = {
|
|
|
48
48
|
},
|
|
49
49
|
})
|
|
50
50
|
.then(({ data }) => data)
|
|
51
|
-
.catch((error) => catchAxios(error, !!(options === null || options === void 0 ? void 0 : options.bypassStatus)
|
|
51
|
+
.catch((error) => catchAxios(error, !!(options === null || options === void 0 ? void 0 : options.bypassStatus)));
|
|
52
52
|
}),
|
|
53
53
|
delete: (url, body, options) => __awaiter(void 0, void 0, void 0, function* () {
|
|
54
54
|
return axios_1.default
|
|
@@ -61,13 +61,13 @@ const fetchIA = {
|
|
|
61
61
|
},
|
|
62
62
|
})
|
|
63
63
|
.then(({ data }) => data)
|
|
64
|
-
.catch((error) => catchAxios(error, !!(options === null || options === void 0 ? void 0 : options.bypassStatus)
|
|
64
|
+
.catch((error) => catchAxios(error, !!(options === null || options === void 0 ? void 0 : options.bypassStatus)));
|
|
65
65
|
}),
|
|
66
66
|
};
|
|
67
67
|
exports.fetchIA = fetchIA;
|
|
68
|
-
function catchAxios(error, bypassStatus
|
|
69
|
-
var _a
|
|
68
|
+
function catchAxios(error, bypassStatus) {
|
|
69
|
+
var _a;
|
|
70
70
|
if (bypassStatus)
|
|
71
71
|
return error.response;
|
|
72
|
-
(0, index_1.err)(
|
|
72
|
+
(0, index_1.err)(null, null, (_a = error.response) === null || _a === void 0 ? void 0 : _a.status, null);
|
|
73
73
|
}
|
|
@@ -43,7 +43,7 @@ function readSheet({ sheetInstance, sheetName, sheetPage, cellPositionStart, cel
|
|
|
43
43
|
return infoObjectFromSheet.data.values;
|
|
44
44
|
}
|
|
45
45
|
catch (error) {
|
|
46
|
-
(0, err_1.err)(
|
|
46
|
+
(0, err_1.err)(null, null, error, null);
|
|
47
47
|
}
|
|
48
48
|
});
|
|
49
49
|
}
|
|
@@ -74,6 +74,7 @@ const findCellByValue = ({ sheetName, sheetPage, value, positionX, positionXStar
|
|
|
74
74
|
array = readRow[0];
|
|
75
75
|
}
|
|
76
76
|
let index;
|
|
77
|
+
// @ts-ignore
|
|
77
78
|
if (valueType === 'CONTAIN')
|
|
78
79
|
index = array.findIndex((cell) => cell.includes(value));
|
|
79
80
|
// @ts-ignore
|
|
@@ -129,7 +130,7 @@ const writeSheet = ({ sheetInstance, sheetName, sheetPage, cellValue, cellPositi
|
|
|
129
130
|
});
|
|
130
131
|
}
|
|
131
132
|
catch (error) {
|
|
132
|
-
(0, err_1.err)(
|
|
133
|
+
(0, err_1.err)(null, null, error, null);
|
|
133
134
|
}
|
|
134
135
|
});
|
|
135
136
|
exports.writeSheet = writeSheet;
|
|
@@ -45,72 +45,72 @@ const sendMail = ({ subject, title, body, to, link, attachments, bcc }) => __awa
|
|
|
45
45
|
});
|
|
46
46
|
exports.sendMail = sendMail;
|
|
47
47
|
function getBodyHTML(title, body, link) {
|
|
48
|
-
return `
|
|
49
|
-
<html lang="es">
|
|
50
|
-
<head>
|
|
51
|
-
<meta charset="UTF-8">
|
|
52
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
53
|
-
<title>Correo con estilo</title>
|
|
54
|
-
<style>
|
|
55
|
-
/* Estilos generales */
|
|
56
|
-
body {
|
|
57
|
-
margin: 0;
|
|
58
|
-
padding: 0;
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
/* Estilos específicos del botón */
|
|
62
|
-
.button {
|
|
63
|
-
display: inline-block;
|
|
64
|
-
padding: 12px 26px;
|
|
65
|
-
font-size: 17px;
|
|
66
|
-
text-align: center;
|
|
67
|
-
text-decoration: none;
|
|
68
|
-
background-color: #ea5b1b;
|
|
69
|
-
color: #ffffff !important;
|
|
70
|
-
margin: 40px 0 20px 0;
|
|
71
|
-
font-family: 'Sofia Sans', 'Roboto', sans-serif;
|
|
72
|
-
font-weight: bold;
|
|
73
|
-
border-radius: 4px;
|
|
74
|
-
border: 2px solid #ea5b1b;
|
|
75
|
-
}
|
|
76
|
-
</style>
|
|
77
|
-
</head>
|
|
78
|
-
<body style="background: #f0f0f0; padding: 0 0 40px 0">
|
|
79
|
-
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#f0f0f0">
|
|
80
|
-
<tr>
|
|
81
|
-
<td align="center" style="padding:0;">
|
|
82
|
-
<table role="presentation" style="width:100%;border-collapse:collapse;border-spacing:0;text-align:left;">
|
|
83
|
-
<tr>
|
|
84
|
-
<td align="center" style="padding:5px 0 0 0;background:#ea5b1b;">
|
|
85
|
-
<img src="cid:logo" alt="" width="220" style="height:auto;display:block;">
|
|
86
|
-
</td>
|
|
87
|
-
</tr>
|
|
88
|
-
<tr>
|
|
89
|
-
<td style="padding:20px 24px 0px 24px; max-width: 600px" align="center">
|
|
90
|
-
<h1 style="font-size:22px;text-align:center;margin:16px 0 6px 0;font-family:'Sofia Sans', 'Roboto', sans-serif;font-style: italic">
|
|
91
|
-
${title || ''}
|
|
92
|
-
</h1>
|
|
93
|
-
<p style="text-align:left;margin:0 0 12px 0;font-size:15px;line-height:24px;font-family:'Sofia Sans', 'Roboto', sans-serif;">
|
|
94
|
-
${body.split('\n').join('<br>')}
|
|
95
|
-
</p>
|
|
48
|
+
return `
|
|
49
|
+
<html lang="es">
|
|
50
|
+
<head>
|
|
51
|
+
<meta charset="UTF-8">
|
|
52
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
53
|
+
<title>Correo con estilo</title>
|
|
54
|
+
<style>
|
|
55
|
+
/* Estilos generales */
|
|
56
|
+
body {
|
|
57
|
+
margin: 0;
|
|
58
|
+
padding: 0;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
/* Estilos específicos del botón */
|
|
62
|
+
.button {
|
|
63
|
+
display: inline-block;
|
|
64
|
+
padding: 12px 26px;
|
|
65
|
+
font-size: 17px;
|
|
66
|
+
text-align: center;
|
|
67
|
+
text-decoration: none;
|
|
68
|
+
background-color: #ea5b1b;
|
|
69
|
+
color: #ffffff !important;
|
|
70
|
+
margin: 40px 0 20px 0;
|
|
71
|
+
font-family: 'Sofia Sans', 'Roboto', sans-serif;
|
|
72
|
+
font-weight: bold;
|
|
73
|
+
border-radius: 4px;
|
|
74
|
+
border: 2px solid #ea5b1b;
|
|
75
|
+
}
|
|
76
|
+
</style>
|
|
77
|
+
</head>
|
|
78
|
+
<body style="background: #f0f0f0; padding: 0 0 40px 0">
|
|
79
|
+
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#f0f0f0">
|
|
80
|
+
<tr>
|
|
81
|
+
<td align="center" style="padding:0;">
|
|
82
|
+
<table role="presentation" style="width:100%;border-collapse:collapse;border-spacing:0;text-align:left;">
|
|
83
|
+
<tr>
|
|
84
|
+
<td align="center" style="padding:5px 0 0 0;background:#ea5b1b;">
|
|
85
|
+
<img src="cid:logo" alt="" width="220" style="height:auto;display:block;">
|
|
86
|
+
</td>
|
|
87
|
+
</tr>
|
|
88
|
+
<tr>
|
|
89
|
+
<td style="padding:20px 24px 0px 24px; max-width: 600px" align="center">
|
|
90
|
+
<h1 style="font-size:22px;text-align:center;margin:16px 0 6px 0;font-family:'Sofia Sans', 'Roboto', sans-serif;font-style: italic">
|
|
91
|
+
${title || ''}
|
|
92
|
+
</h1>
|
|
93
|
+
<p style="text-align:left;margin:0 0 12px 0;font-size:15px;line-height:24px;font-family:'Sofia Sans', 'Roboto', sans-serif;">
|
|
94
|
+
${body.split('\n').join('<br>')}
|
|
95
|
+
</p>
|
|
96
96
|
${link
|
|
97
|
-
? `
|
|
98
|
-
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#f0f0f0;">
|
|
99
|
-
<tr>
|
|
100
|
-
<td align="center" style="padding:0;">
|
|
101
|
-
<a href="${
|
|
102
|
-
</td>
|
|
103
|
-
</tr>
|
|
104
|
-
</table>
|
|
97
|
+
? `
|
|
98
|
+
<table role="presentation" style="width:100%;border-collapse:collapse;border:0;border-spacing:0;background:#f0f0f0;">
|
|
99
|
+
<tr>
|
|
100
|
+
<td align="center" style="padding:0;">
|
|
101
|
+
<a href="${process.env.FRONTEND_URL}${link.url}" class="button" style="color:white">${link.text}</a>
|
|
102
|
+
</td>
|
|
103
|
+
</tr>
|
|
104
|
+
</table>
|
|
105
105
|
`
|
|
106
|
-
: ''}
|
|
107
|
-
</td>
|
|
108
|
-
</tr>
|
|
109
|
-
</table>
|
|
110
|
-
</td>
|
|
111
|
-
</tr>
|
|
112
|
-
</table>
|
|
113
|
-
</body>
|
|
114
|
-
</html>
|
|
106
|
+
: ''}
|
|
107
|
+
</td>
|
|
108
|
+
</tr>
|
|
109
|
+
</table>
|
|
110
|
+
</td>
|
|
111
|
+
</tr>
|
|
112
|
+
</table>
|
|
113
|
+
</body>
|
|
114
|
+
</html>
|
|
115
115
|
`;
|
|
116
116
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../../../src/chat/api/conversation.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,iBAAiB,0BAA2B,GAAG,
|
|
1
|
+
{"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../../../../src/chat/api/conversation.ts"],"names":[],"mappings":"AAWA,QAAA,MAAM,iBAAiB,0BAA2B,GAAG,SAmBpD,CAAC;AAmQF,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -24,5 +24,5 @@ declare const writeSheet: ({ sheetInstance, sheetName, sheetPage, cellValue, cel
|
|
|
24
24
|
cellValue: any;
|
|
25
25
|
cellPosition: any;
|
|
26
26
|
}) => Promise<void>;
|
|
27
|
-
export { readSheet, findCellByValue, writeSheet, getNumberByLetter, getLetter
|
|
27
|
+
export { readSheet, findCellByValue, writeSheet, getNumberByLetter, getLetter };
|
|
28
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/googleSheet/index.ts"],"names":[],"mappings":"AA2BA,iBAAe,SAAS,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE;;;;;;CAAA,gBAcnG;AAED,QAAA,MAAM,eAAe;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/googleSheet/index.ts"],"names":[],"mappings":"AA2BA,iBAAe,SAAS,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,iBAAiB,EAAE,eAAe,EAAE;;;;;;CAAA,gBAcnG;AAED,QAAA,MAAM,eAAe;;;;;;;;;0BAiCpB,CAAC;AAGF,iBAAS,SAAS,CAAC,MAAM,KAAA,UAaxB;AAED,iBAAS,iBAAiB,CAAC,MAAM,KAAA,UAOhC;AAED,QAAA,MAAM,UAAU;;;;;;mBAgBf,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@runnerpro/backend",
|
|
3
|
-
"version": "1.1.
|
|
4
|
-
"description": "A collection of common backend functions",
|
|
5
|
-
"exports": {
|
|
6
|
-
".": "./lib/cjs/index.js"
|
|
7
|
-
},
|
|
8
|
-
"types": "./lib/cjs/types/index.d.ts",
|
|
9
|
-
"main": "./lib/cjs/index.js",
|
|
10
|
-
"files": [
|
|
11
|
-
"lib/**/*"
|
|
12
|
-
],
|
|
13
|
-
"scripts": {
|
|
14
|
-
"clean": "del-cli ./lib",
|
|
15
|
-
"build": "npm run clean && tsc -p ./configs/tsconfig.cjs.json",
|
|
16
|
-
"deploy": "npm run build && npm publish",
|
|
17
|
-
"semantic-release": "semantic-release",
|
|
18
|
-
"lint": "eslint --ext .ts --ignore-path .gitignore .",
|
|
19
|
-
"format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,json,css,scss,md}\"",
|
|
20
|
-
"prepare": "husky",
|
|
21
|
-
"test": "jest"
|
|
22
|
-
},
|
|
23
|
-
"release": {
|
|
24
|
-
"branches": [
|
|
25
|
-
"main"
|
|
26
|
-
]
|
|
27
|
-
},
|
|
28
|
-
"publishConfig": {
|
|
29
|
-
"access": "public"
|
|
30
|
-
},
|
|
31
|
-
"repository": {
|
|
32
|
-
"type": "git",
|
|
33
|
-
"url": "https://gitlab.com/runner-pro/runnerpro-backend.git"
|
|
34
|
-
},
|
|
35
|
-
"author": "Runner Pro",
|
|
36
|
-
"license": "MIT",
|
|
37
|
-
"devDependencies": {
|
|
38
|
-
"@eslint/js": "^9.6.0",
|
|
39
|
-
"@types/eslint__js": "^8.42.3",
|
|
40
|
-
"@types/nodemailer": "^6.4.15",
|
|
41
|
-
"@types/pg": "^8.11.3",
|
|
42
|
-
"del-cli": "5.1.0",
|
|
43
|
-
"eslint": "^8.57.0",
|
|
44
|
-
"eslint-config-prettier": "^9.1.0",
|
|
45
|
-
"eslint-plugin-exception-handling": "^1.0.2",
|
|
46
|
-
"eslint-plugin-sonarjs": "^1.0.3",
|
|
47
|
-
"husky": "^9.0.11",
|
|
48
|
-
"jest": "^29.7.0",
|
|
49
|
-
"semantic-release": "23.0.2",
|
|
50
|
-
"ts-node": "10.9.2",
|
|
51
|
-
"typescript": "5.3.3",
|
|
52
|
-
"typescript-eslint": "^7.15.0"
|
|
53
|
-
},
|
|
54
|
-
"peerDependencies": {
|
|
55
|
-
"@parse/node-apn": "6.0.1",
|
|
56
|
-
"@runnerpro/common": "^1.4.1",
|
|
57
|
-
"axios": "^1.6.7",
|
|
58
|
-
"jimp": "^0.22.10",
|
|
59
|
-
"nodemailer": "6.9.9",
|
|
60
|
-
"pg": "8.11.3"
|
|
61
|
-
},
|
|
62
|
-
"dependencies": {
|
|
63
|
-
"@google-cloud/translate": "^8.3.0",
|
|
64
|
-
"@notionhq/client": "^2.2.15",
|
|
65
|
-
"exifr": "^7.1.3",
|
|
66
|
-
"googleapis": "^144.0.0",
|
|
67
|
-
"image-size": "^1.0.2",
|
|
68
|
-
"multer": "^1.4.5-lts.1",
|
|
69
|
-
"socket.io": "^4.7.2"
|
|
70
|
-
}
|
|
71
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@runnerpro/backend",
|
|
3
|
+
"version": "1.1.11",
|
|
4
|
+
"description": "A collection of common backend functions",
|
|
5
|
+
"exports": {
|
|
6
|
+
".": "./lib/cjs/index.js"
|
|
7
|
+
},
|
|
8
|
+
"types": "./lib/cjs/types/index.d.ts",
|
|
9
|
+
"main": "./lib/cjs/index.js",
|
|
10
|
+
"files": [
|
|
11
|
+
"lib/**/*"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"clean": "del-cli ./lib",
|
|
15
|
+
"build": "npm run clean && tsc -p ./configs/tsconfig.cjs.json",
|
|
16
|
+
"deploy": "npm run build && npm publish",
|
|
17
|
+
"semantic-release": "semantic-release",
|
|
18
|
+
"lint": "eslint --ext .ts --ignore-path .gitignore .",
|
|
19
|
+
"format": "prettier --write \"src/**/*.{js,jsx,ts,tsx,json,css,scss,md}\"",
|
|
20
|
+
"prepare": "husky",
|
|
21
|
+
"test": "jest"
|
|
22
|
+
},
|
|
23
|
+
"release": {
|
|
24
|
+
"branches": [
|
|
25
|
+
"main"
|
|
26
|
+
]
|
|
27
|
+
},
|
|
28
|
+
"publishConfig": {
|
|
29
|
+
"access": "public"
|
|
30
|
+
},
|
|
31
|
+
"repository": {
|
|
32
|
+
"type": "git",
|
|
33
|
+
"url": "https://gitlab.com/runner-pro/runnerpro-backend.git"
|
|
34
|
+
},
|
|
35
|
+
"author": "Runner Pro",
|
|
36
|
+
"license": "MIT",
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@eslint/js": "^9.6.0",
|
|
39
|
+
"@types/eslint__js": "^8.42.3",
|
|
40
|
+
"@types/nodemailer": "^6.4.15",
|
|
41
|
+
"@types/pg": "^8.11.3",
|
|
42
|
+
"del-cli": "5.1.0",
|
|
43
|
+
"eslint": "^8.57.0",
|
|
44
|
+
"eslint-config-prettier": "^9.1.0",
|
|
45
|
+
"eslint-plugin-exception-handling": "^1.0.2",
|
|
46
|
+
"eslint-plugin-sonarjs": "^1.0.3",
|
|
47
|
+
"husky": "^9.0.11",
|
|
48
|
+
"jest": "^29.7.0",
|
|
49
|
+
"semantic-release": "23.0.2",
|
|
50
|
+
"ts-node": "10.9.2",
|
|
51
|
+
"typescript": "5.3.3",
|
|
52
|
+
"typescript-eslint": "^7.15.0"
|
|
53
|
+
},
|
|
54
|
+
"peerDependencies": {
|
|
55
|
+
"@parse/node-apn": "6.0.1",
|
|
56
|
+
"@runnerpro/common": "^1.4.1",
|
|
57
|
+
"axios": "^1.6.7",
|
|
58
|
+
"jimp": "^0.22.10",
|
|
59
|
+
"nodemailer": "6.9.9",
|
|
60
|
+
"pg": "8.11.3"
|
|
61
|
+
},
|
|
62
|
+
"dependencies": {
|
|
63
|
+
"@google-cloud/translate": "^8.3.0",
|
|
64
|
+
"@notionhq/client": "^2.2.15",
|
|
65
|
+
"exifr": "^7.1.3",
|
|
66
|
+
"googleapis": "^144.0.0",
|
|
67
|
+
"image-size": "^1.0.2",
|
|
68
|
+
"multer": "^1.4.5-lts.1",
|
|
69
|
+
"socket.io": "^4.7.2"
|
|
70
|
+
}
|
|
71
|
+
}
|