@upsnap/strapi 1.0.10 → 1.0.14
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/README.md +15 -25
- package/dist/admin/{App-BIxhBt5_.mjs → App-QKoGSuNi.mjs} +60 -303
- package/dist/admin/{App-CH5fBeNI.js → App-l5dYTPZP.js} +221 -465
- package/dist/admin/index-BWyzuEFm.js +344 -0
- package/dist/admin/index-Ct7siGlB.mjs +343 -0
- package/dist/admin/index.js +2 -63
- package/dist/admin/index.mjs +2 -63
- package/dist/server/index.js +230 -76
- package/dist/server/index.mjs +228 -76
- package/dist/server/src/index.d.ts +3 -1
- package/package.json +1 -1
package/dist/server/index.mjs
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
|
|
1
|
+
import crypto from "crypto";
|
|
2
|
+
const bootstrap = async ({ strapi: strapi2 }) => {
|
|
2
3
|
};
|
|
3
|
-
const destroy = ({ strapi }) => {
|
|
4
|
+
const destroy = ({ strapi: strapi2 }) => {
|
|
4
5
|
};
|
|
5
|
-
const register = ({ strapi }) => {
|
|
6
|
+
const register = ({ strapi: strapi2 }) => {
|
|
6
7
|
};
|
|
7
8
|
const config = {
|
|
8
9
|
default: {},
|
|
@@ -10,18 +11,51 @@ const config = {
|
|
|
10
11
|
}
|
|
11
12
|
};
|
|
12
13
|
const contentTypes = {};
|
|
13
|
-
const controller = ({ strapi }) => ({
|
|
14
|
+
const controller = ({ strapi: strapi2 }) => ({
|
|
14
15
|
index(ctx) {
|
|
15
|
-
ctx.body =
|
|
16
|
+
ctx.body = strapi2.plugin("upsnap").service("service").getWelcomeMessage();
|
|
16
17
|
}
|
|
17
18
|
});
|
|
18
19
|
const BACKEND_URL = "https://api.upsnap.ai/v1";
|
|
20
|
+
const IP_API_BASE_URL = "https://ipapi.co";
|
|
19
21
|
const LIGHTHOUSE_CHECKS = ["performance", "accessibility", "bestPractices", "seo", "pwa"];
|
|
20
|
-
const
|
|
22
|
+
const version = "1.0.14";
|
|
23
|
+
const repository = { "type": "git", "url": "https://github.com/Appfoster/upsnap-strapi" };
|
|
24
|
+
const keywords = [];
|
|
25
|
+
const type = "commonjs";
|
|
26
|
+
const exports$1 = { "./package.json": "./package.json", "./strapi-admin": { "types": "./dist/admin/src/index.d.ts", "source": "./admin/src/index.ts", "import": "./dist/admin/index.mjs", "require": "./dist/admin/index.js", "default": "./dist/admin/index.js" }, "./strapi-server": { "types": "./dist/server/src/index.d.ts", "source": "./server/src/index.ts", "import": "./dist/server/index.mjs", "require": "./dist/server/index.js", "default": "./dist/server/index.js" } };
|
|
27
|
+
const files = ["dist"];
|
|
28
|
+
const scripts = { "build": "strapi-plugin build", "watch": "strapi-plugin watch", "watch:link": "strapi-plugin watch:link", "verify": "strapi-plugin verify", "test:ts:front": "run -T tsc -p admin/tsconfig.json", "test:ts:back": "run -T tsc -p server/tsconfig.json" };
|
|
29
|
+
const dependencies = { "@strapi/design-system": "^2.0.0-rc.30", "@strapi/icons": "^2.0.0-rc.30", "axios": "^1.13.5", "react-apexcharts": "^2.0.1", "react-intl": "^6.6.0", "react-toastify": "^11.0.5" };
|
|
30
|
+
const devDependencies = { "@strapi/sdk-plugin": "^6.0.1", "@strapi/strapi": "^5.37.1", "@strapi/typescript-utils": "^5.37.1", "@types/react": "^19.2.14", "@types/react-dom": "^19.2.3", "prettier": "^3.8.1", "react": "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "^6.30.3", "styled-components": "^6.3.11", "typescript": "^5.9.3" };
|
|
31
|
+
const peerDependencies = { "@strapi/sdk-plugin": "^5.4.0", "@strapi/strapi": "^5.0.0", "react": "^18.3.1", "react-dom": "^18.3.1", "react-router-dom": "^6.30.3", "styled-components": "^6.3.11" };
|
|
32
|
+
const strapi = { "kind": "plugin", "name": "upsnap", "displayName": "Upsnap", "description": "Complete website health monitoring for Strapi, including uptime, SSL certificates, broken links, performance metrics, domain health, and mixed content issues." };
|
|
33
|
+
const name = "@upsnap/strapi";
|
|
34
|
+
const description = "Complete website health monitoring for Strapi, including uptime, SSL certificates, broken links, performance metrics, domain health, and mixed content issues.";
|
|
35
|
+
const license = "MIT";
|
|
36
|
+
const author = "Upsnap <support@upsnap.ai>";
|
|
37
|
+
const packageJson = {
|
|
38
|
+
version,
|
|
39
|
+
repository,
|
|
40
|
+
keywords,
|
|
41
|
+
type,
|
|
42
|
+
exports: exports$1,
|
|
43
|
+
files,
|
|
44
|
+
scripts,
|
|
45
|
+
dependencies,
|
|
46
|
+
devDependencies,
|
|
47
|
+
peerDependencies,
|
|
48
|
+
strapi,
|
|
49
|
+
name,
|
|
50
|
+
description,
|
|
51
|
+
license,
|
|
52
|
+
author
|
|
53
|
+
};
|
|
54
|
+
const service = ({ strapi: strapi2 }) => ({
|
|
21
55
|
getWelcomeMessage() {
|
|
22
56
|
return "Welcome to Strapi 🚀";
|
|
23
57
|
},
|
|
24
|
-
settingsStore:
|
|
58
|
+
settingsStore: strapi2.store({
|
|
25
59
|
type: "plugin",
|
|
26
60
|
name: "upsnap",
|
|
27
61
|
key: "settings"
|
|
@@ -59,11 +93,89 @@ const service = ({ strapi }) => ({
|
|
|
59
93
|
data: await response.arrayBuffer(),
|
|
60
94
|
headers: response.headers
|
|
61
95
|
};
|
|
96
|
+
},
|
|
97
|
+
async trackInstallation(userPayload) {
|
|
98
|
+
try {
|
|
99
|
+
const settings2 = await this.settingsStore.get();
|
|
100
|
+
if (settings2?.installationTracked) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
const pluginVersion = packageJson.version;
|
|
104
|
+
const strapiVersion = strapi2.config.get("info.strapi");
|
|
105
|
+
const siteUrl = strapi2.config.get("server.url") || `http://${strapi2.config.get("server.host") || "localhost"}:${strapi2.config.get("server.port") || 1337}`;
|
|
106
|
+
const users = await strapi2.db.query("admin::user").findMany({
|
|
107
|
+
orderBy: { createdAt: "ASC" },
|
|
108
|
+
limit: 1
|
|
109
|
+
});
|
|
110
|
+
const firstUser = users?.[0];
|
|
111
|
+
const email = firstUser?.email || "";
|
|
112
|
+
const name2 = `${firstUser?.firstname || ""} ${firstUser?.lastname || ""}`.trim();
|
|
113
|
+
const phoneNumber = firstUser?.phoneNumber || firstUser?.phone || "";
|
|
114
|
+
const company = firstUser?.company || "";
|
|
115
|
+
const installId = settings2?.installId || crypto.randomUUID();
|
|
116
|
+
let finalDetails = {
|
|
117
|
+
version: pluginVersion,
|
|
118
|
+
site_url: siteUrl,
|
|
119
|
+
strapi_version: strapiVersion,
|
|
120
|
+
install_id: installId,
|
|
121
|
+
email,
|
|
122
|
+
name: name2,
|
|
123
|
+
phone_number: phoneNumber,
|
|
124
|
+
company
|
|
125
|
+
};
|
|
126
|
+
if (userPayload) {
|
|
127
|
+
finalDetails = { ...finalDetails, ...userPayload };
|
|
128
|
+
} else {
|
|
129
|
+
let ipAddress = "";
|
|
130
|
+
let country = "";
|
|
131
|
+
let timezone = Intl.DateTimeFormat().resolvedOptions().timeZone || "";
|
|
132
|
+
let browserOs = `Node.js ${process.version} / ${process.platform}`;
|
|
133
|
+
try {
|
|
134
|
+
const ipRes = await fetch(`${IP_API_BASE_URL}/json/`);
|
|
135
|
+
if (ipRes.ok) {
|
|
136
|
+
const ipData = await ipRes.json();
|
|
137
|
+
ipAddress = ipData.ip || "";
|
|
138
|
+
country = ipData.country_name || ipData.country || "";
|
|
139
|
+
if (ipData.timezone) timezone = ipData.timezone;
|
|
140
|
+
}
|
|
141
|
+
} catch (e) {
|
|
142
|
+
}
|
|
143
|
+
finalDetails = {
|
|
144
|
+
...finalDetails,
|
|
145
|
+
ip_address: ipAddress,
|
|
146
|
+
country,
|
|
147
|
+
browser_os: browserOs,
|
|
148
|
+
timezone
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
const response = await this.makeBackendRequest(
|
|
152
|
+
"/installation-data",
|
|
153
|
+
{
|
|
154
|
+
method: "POST",
|
|
155
|
+
body: JSON.stringify({
|
|
156
|
+
platform: "strapi",
|
|
157
|
+
details: finalDetails
|
|
158
|
+
})
|
|
159
|
+
},
|
|
160
|
+
true
|
|
161
|
+
);
|
|
162
|
+
if (response?.status === "success" && !settings2?.installationTracked) {
|
|
163
|
+
await this.settingsStore.set({
|
|
164
|
+
value: {
|
|
165
|
+
...settings2 || {},
|
|
166
|
+
installId,
|
|
167
|
+
installationTracked: true
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
} catch (error) {
|
|
172
|
+
console.log("UpSnap: Failed to track installation data ", error);
|
|
173
|
+
}
|
|
62
174
|
}
|
|
63
175
|
});
|
|
64
|
-
const settings = ({ strapi }) => ({
|
|
176
|
+
const settings = ({ strapi: strapi2 }) => ({
|
|
65
177
|
async get(ctx) {
|
|
66
|
-
const settings2 = await service({ strapi }).settingsStore.get();
|
|
178
|
+
const settings2 = await service({ strapi: strapi2 }).settingsStore.get();
|
|
67
179
|
ctx.body = {
|
|
68
180
|
token: settings2?.token ?? null,
|
|
69
181
|
primaryMonitorId: settings2?.primaryMonitorId ?? null
|
|
@@ -72,7 +184,7 @@ const settings = ({ strapi }) => ({
|
|
|
72
184
|
async set(ctx) {
|
|
73
185
|
const { token, logOut } = ctx.request.body;
|
|
74
186
|
if (!logOut) {
|
|
75
|
-
const isValidData = await service({ strapi }).makeBackendRequest("/tokens/validate", {
|
|
187
|
+
const isValidData = await service({ strapi: strapi2 }).makeBackendRequest("/tokens/validate", {
|
|
76
188
|
method: "POST",
|
|
77
189
|
body: JSON.stringify({ token })
|
|
78
190
|
}, true);
|
|
@@ -81,7 +193,7 @@ const settings = ({ strapi }) => ({
|
|
|
81
193
|
return;
|
|
82
194
|
}
|
|
83
195
|
}
|
|
84
|
-
const store = service({ strapi }).settingsStore;
|
|
196
|
+
const store = service({ strapi: strapi2 }).settingsStore;
|
|
85
197
|
const current = await store.get() || {};
|
|
86
198
|
await store.set({
|
|
87
199
|
value: {
|
|
@@ -93,7 +205,7 @@ const settings = ({ strapi }) => ({
|
|
|
93
205
|
},
|
|
94
206
|
async setPrimaryMonitorId(ctx) {
|
|
95
207
|
const { monitorId } = ctx.request.body;
|
|
96
|
-
const store = service({ strapi }).settingsStore;
|
|
208
|
+
const store = service({ strapi: strapi2 }).settingsStore;
|
|
97
209
|
const current = await store.get() || {};
|
|
98
210
|
await store.set({
|
|
99
211
|
value: {
|
|
@@ -104,8 +216,39 @@ const settings = ({ strapi }) => ({
|
|
|
104
216
|
ctx.body = { ok: true };
|
|
105
217
|
},
|
|
106
218
|
async getPrimaryMonitorId(ctx) {
|
|
107
|
-
const settings2 = await service({ strapi }).settingsStore.get();
|
|
219
|
+
const settings2 = await service({ strapi: strapi2 }).settingsStore.get();
|
|
108
220
|
ctx.body = { primaryMonitorId: settings2?.primaryMonitorId };
|
|
221
|
+
},
|
|
222
|
+
async trackUserData(ctx) {
|
|
223
|
+
const { browser, os, language, screen, client_timezone } = ctx.request.body || {};
|
|
224
|
+
const settings2 = await service({ strapi: strapi2 }).settingsStore.get();
|
|
225
|
+
if (settings2?.installationTracked) {
|
|
226
|
+
ctx.body = { ok: false, error: "Installation already tracked" };
|
|
227
|
+
return;
|
|
228
|
+
}
|
|
229
|
+
const ip = ctx.ip;
|
|
230
|
+
let country = "";
|
|
231
|
+
let ipAddress = ip;
|
|
232
|
+
try {
|
|
233
|
+
if (ip && ip !== "127.0.0.1" && ip !== "::1") {
|
|
234
|
+
const ipRes = await fetch(`${IP_API_BASE_URL}/${ip}/json/`);
|
|
235
|
+
if (ipRes.ok) {
|
|
236
|
+
const ipData = await ipRes.json();
|
|
237
|
+
country = ipData.country_name || ipData.country || "";
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
} catch (e) {
|
|
241
|
+
}
|
|
242
|
+
const userPayload = {
|
|
243
|
+
ip_address: ipAddress,
|
|
244
|
+
country,
|
|
245
|
+
browser_os: `${browser || ""} / ${os || ""}`,
|
|
246
|
+
timezone: client_timezone || "",
|
|
247
|
+
language: language || "",
|
|
248
|
+
screen: screen || ""
|
|
249
|
+
};
|
|
250
|
+
await service({ strapi: strapi2 }).trackInstallation(userPayload);
|
|
251
|
+
ctx.body = { ok: true };
|
|
109
252
|
}
|
|
110
253
|
});
|
|
111
254
|
function getMixedContentMessage(meta) {
|
|
@@ -332,10 +475,10 @@ function buildBrokenLinksErrorResponse(raw) {
|
|
|
332
475
|
data: raw
|
|
333
476
|
};
|
|
334
477
|
}
|
|
335
|
-
const monitor = ({ strapi }) => ({
|
|
478
|
+
const monitor = ({ strapi: strapi2 }) => ({
|
|
336
479
|
async getById(ctx) {
|
|
337
480
|
const monitorId = ctx.params.id;
|
|
338
|
-
const token = await service({ strapi }).getToken();
|
|
481
|
+
const token = await service({ strapi: strapi2 }).getToken();
|
|
339
482
|
const monitorResponse = await fetch(`${BACKEND_URL}/user/monitors/${monitorId}`, {
|
|
340
483
|
method: "GET",
|
|
341
484
|
headers: {
|
|
@@ -347,7 +490,7 @@ const monitor = ({ strapi }) => ({
|
|
|
347
490
|
ctx.body = { monitor: monitor2 };
|
|
348
491
|
},
|
|
349
492
|
async get(ctx) {
|
|
350
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(
|
|
493
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
351
494
|
`/user/monitors`,
|
|
352
495
|
{
|
|
353
496
|
method: "GET"
|
|
@@ -358,7 +501,7 @@ const monitor = ({ strapi }) => ({
|
|
|
358
501
|
async getMonitorUptimeStats(ctx) {
|
|
359
502
|
const monitorId = ctx.params.id;
|
|
360
503
|
const { region } = ctx.query;
|
|
361
|
-
const uptimeStatsData = await service({ strapi }).makeBackendRequest(
|
|
504
|
+
const uptimeStatsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
362
505
|
`/user/monitors/${monitorId}/uptime-stats?uptime_stats_time_frames=day,week,month®ion=${region}`,
|
|
363
506
|
{
|
|
364
507
|
method: "GET"
|
|
@@ -369,7 +512,7 @@ const monitor = ({ strapi }) => ({
|
|
|
369
512
|
async getMonitorHistogram(ctx) {
|
|
370
513
|
const monitorId = ctx.params.id;
|
|
371
514
|
const { region } = ctx.query;
|
|
372
|
-
const histogramData = await service({ strapi }).makeBackendRequest(
|
|
515
|
+
const histogramData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
373
516
|
`/user/monitors/${monitorId}/histogram?region=${region}`,
|
|
374
517
|
{
|
|
375
518
|
method: "GET"
|
|
@@ -379,7 +522,7 @@ const monitor = ({ strapi }) => ({
|
|
|
379
522
|
},
|
|
380
523
|
async getHealthChecks(ctx) {
|
|
381
524
|
const { monitorUrl } = ctx.request.body;
|
|
382
|
-
const healthCheckData = await service({ strapi }).makeBackendRequest(`/healthcheck`, {
|
|
525
|
+
const healthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(`/healthcheck`, {
|
|
383
526
|
method: "POST",
|
|
384
527
|
headers: {
|
|
385
528
|
"X-Requested-From": "craft"
|
|
@@ -395,7 +538,7 @@ const monitor = ({ strapi }) => ({
|
|
|
395
538
|
},
|
|
396
539
|
async getUptimeHealthCheck(ctx) {
|
|
397
540
|
const { monitorUrl } = ctx.request.body;
|
|
398
|
-
const uptimeHealthCheckData = await service({ strapi }).makeBackendRequest(
|
|
541
|
+
const uptimeHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
399
542
|
`/healthcheck`,
|
|
400
543
|
{
|
|
401
544
|
method: "POST",
|
|
@@ -420,7 +563,7 @@ const monitor = ({ strapi }) => ({
|
|
|
420
563
|
},
|
|
421
564
|
async getSslHealthCheck(ctx) {
|
|
422
565
|
const { monitorUrl } = ctx.request.body;
|
|
423
|
-
const sslHealthCheckData = await service({ strapi }).makeBackendRequest(`/healthcheck`, {
|
|
566
|
+
const sslHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(`/healthcheck`, {
|
|
424
567
|
method: "POST",
|
|
425
568
|
headers: {
|
|
426
569
|
"X-Requested-From": "craft"
|
|
@@ -442,7 +585,7 @@ const monitor = ({ strapi }) => ({
|
|
|
442
585
|
},
|
|
443
586
|
async getDomainHealthCheck(ctx) {
|
|
444
587
|
const { monitorUrl } = ctx.request.body;
|
|
445
|
-
const domainHealthCheckData = await service({ strapi }).makeBackendRequest(
|
|
588
|
+
const domainHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
446
589
|
`/healthcheck`,
|
|
447
590
|
{
|
|
448
591
|
method: "POST",
|
|
@@ -467,7 +610,7 @@ const monitor = ({ strapi }) => ({
|
|
|
467
610
|
},
|
|
468
611
|
async getLighthouseHealthCheck(ctx) {
|
|
469
612
|
const { monitorUrl, strategy } = ctx.request.body;
|
|
470
|
-
const lighthouseHealthCheckData = await service({ strapi }).makeBackendRequest(
|
|
613
|
+
const lighthouseHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
471
614
|
`/healthcheck`,
|
|
472
615
|
{
|
|
473
616
|
method: "POST",
|
|
@@ -497,7 +640,7 @@ const monitor = ({ strapi }) => ({
|
|
|
497
640
|
},
|
|
498
641
|
async getBrokenLinksHealthCheck(ctx) {
|
|
499
642
|
const { monitorUrl } = ctx.request.body;
|
|
500
|
-
const brokenLinksHealthCheckData = await service({ strapi }).makeBackendRequest(
|
|
643
|
+
const brokenLinksHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
501
644
|
`/healthcheck`,
|
|
502
645
|
{
|
|
503
646
|
method: "POST",
|
|
@@ -526,7 +669,7 @@ const monitor = ({ strapi }) => ({
|
|
|
526
669
|
},
|
|
527
670
|
async getMixedContentHealthCheck(ctx) {
|
|
528
671
|
const { monitorUrl } = ctx.request.body;
|
|
529
|
-
const mixedContentHealthCheckData = await service({ strapi }).makeBackendRequest(
|
|
672
|
+
const mixedContentHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
530
673
|
`/healthcheck`,
|
|
531
674
|
{
|
|
532
675
|
method: "POST",
|
|
@@ -545,7 +688,7 @@ const monitor = ({ strapi }) => ({
|
|
|
545
688
|
async getMonitorResponseTime(ctx) {
|
|
546
689
|
const monitorId = ctx.params.id;
|
|
547
690
|
const { start, end, region } = ctx.query;
|
|
548
|
-
const responseTimeData = await service({ strapi }).makeBackendRequest(
|
|
691
|
+
const responseTimeData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
549
692
|
`/user/monitors/${monitorId}/response-time?start=${start}&end=${end}®ion=${region || "default"}`,
|
|
550
693
|
{
|
|
551
694
|
method: "GET"
|
|
@@ -555,7 +698,7 @@ const monitor = ({ strapi }) => ({
|
|
|
555
698
|
},
|
|
556
699
|
async getMonitorIncidents(ctx) {
|
|
557
700
|
const monitorId = ctx.params.id;
|
|
558
|
-
const incidentsData = await service({ strapi }).makeBackendRequest(
|
|
701
|
+
const incidentsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
559
702
|
`/user/monitors/incidents?monitorId=${monitorId}&page=1&page_size=20&time_range=7D`,
|
|
560
703
|
{
|
|
561
704
|
method: "GET"
|
|
@@ -565,7 +708,7 @@ const monitor = ({ strapi }) => ({
|
|
|
565
708
|
},
|
|
566
709
|
async getMonitorSettings(ctx) {
|
|
567
710
|
const monitorId = ctx.params.id;
|
|
568
|
-
const monitorSettingsData = await service({ strapi }).makeBackendRequest(
|
|
711
|
+
const monitorSettingsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
569
712
|
`/user/monitors/settings?id=${monitorId}`,
|
|
570
713
|
{
|
|
571
714
|
method: "GET"
|
|
@@ -575,7 +718,7 @@ const monitor = ({ strapi }) => ({
|
|
|
575
718
|
},
|
|
576
719
|
async createMonitor(ctx) {
|
|
577
720
|
const { ...data } = ctx.request.body;
|
|
578
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(`/user/monitors`, {
|
|
721
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/monitors`, {
|
|
579
722
|
method: "POST",
|
|
580
723
|
body: JSON.stringify(data)
|
|
581
724
|
});
|
|
@@ -584,7 +727,7 @@ const monitor = ({ strapi }) => ({
|
|
|
584
727
|
async updateMonitor(ctx) {
|
|
585
728
|
const monitorId = ctx.params.id;
|
|
586
729
|
const { ...data } = ctx.request.body;
|
|
587
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(
|
|
730
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
588
731
|
`/user/monitors/${monitorId}`,
|
|
589
732
|
{
|
|
590
733
|
method: "PUT",
|
|
@@ -595,7 +738,7 @@ const monitor = ({ strapi }) => ({
|
|
|
595
738
|
},
|
|
596
739
|
async deleteMonitor(ctx) {
|
|
597
740
|
const monitorId = ctx.params.id;
|
|
598
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(
|
|
741
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
599
742
|
`/user/monitors/${monitorId}`,
|
|
600
743
|
{
|
|
601
744
|
method: "DELETE"
|
|
@@ -605,7 +748,7 @@ const monitor = ({ strapi }) => ({
|
|
|
605
748
|
},
|
|
606
749
|
async deleteMonitors(ctx) {
|
|
607
750
|
const { monitorIds } = ctx.request.body;
|
|
608
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(`/user/monitors`, {
|
|
751
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/monitors`, {
|
|
609
752
|
method: "PATCH",
|
|
610
753
|
body: JSON.stringify({ ids: monitorIds, action: "delete" })
|
|
611
754
|
});
|
|
@@ -640,7 +783,7 @@ const monitor = ({ strapi }) => ({
|
|
|
640
783
|
if (search) queryParams.set("search", search);
|
|
641
784
|
if (sortBy) queryParams.set("sort_by", sortBy);
|
|
642
785
|
if (sortOrder) queryParams.set("sort_order", sortOrder);
|
|
643
|
-
const incidentsData = await service({ strapi }).makeBackendRequest(
|
|
786
|
+
const incidentsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
644
787
|
`/user/monitors/incidents?${queryParams.toString()}`,
|
|
645
788
|
{
|
|
646
789
|
method: "GET"
|
|
@@ -650,20 +793,20 @@ const monitor = ({ strapi }) => ({
|
|
|
650
793
|
},
|
|
651
794
|
async exportIncidents(ctx) {
|
|
652
795
|
try {
|
|
653
|
-
const { monitorId, region, type, start_time, end_time, search, file_type } = ctx.request.body;
|
|
796
|
+
const { monitorId, region, type: type2, start_time, end_time, search, file_type } = ctx.request.body;
|
|
654
797
|
if (!monitorId) {
|
|
655
798
|
ctx.status = 400;
|
|
656
799
|
ctx.body = { error: "monitorId is required" };
|
|
657
800
|
return;
|
|
658
801
|
}
|
|
659
802
|
const queryParams = new URLSearchParams();
|
|
660
|
-
if (
|
|
803
|
+
if (type2) queryParams.set("type", type2);
|
|
661
804
|
if (start_time) queryParams.set("start_time", start_time);
|
|
662
805
|
if (end_time) queryParams.set("end_time", end_time);
|
|
663
806
|
if (search) queryParams.set("search", search);
|
|
664
807
|
if (file_type) queryParams.set("file_type", file_type);
|
|
665
808
|
if (region) queryParams.set("region", region);
|
|
666
|
-
const response = await service({ strapi }).makeBackendRequest(
|
|
809
|
+
const response = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
667
810
|
`/user/monitors/${monitorId}/incidents/export?${queryParams.toString()}`,
|
|
668
811
|
{ method: "GET" }
|
|
669
812
|
);
|
|
@@ -687,16 +830,16 @@ const monitor = ({ strapi }) => ({
|
|
|
687
830
|
}
|
|
688
831
|
}
|
|
689
832
|
});
|
|
690
|
-
const statusPage = ({ strapi }) => ({
|
|
833
|
+
const statusPage = ({ strapi: strapi2 }) => ({
|
|
691
834
|
async getStatusPages(ctx) {
|
|
692
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(`/user/status-pages`, {
|
|
835
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/status-pages`, {
|
|
693
836
|
method: "GET"
|
|
694
837
|
});
|
|
695
838
|
ctx.body = { statusPagesData };
|
|
696
839
|
},
|
|
697
840
|
async getStatusPagesByID(ctx) {
|
|
698
841
|
const id = ctx.params.id;
|
|
699
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(
|
|
842
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
700
843
|
`/user/status-pages/${id}`,
|
|
701
844
|
{
|
|
702
845
|
method: "GET"
|
|
@@ -705,16 +848,16 @@ const statusPage = ({ strapi }) => ({
|
|
|
705
848
|
ctx.body = { statusPagesData };
|
|
706
849
|
},
|
|
707
850
|
async saveStatusPages(ctx) {
|
|
708
|
-
const { name, monitor_ids, is_published } = ctx.request.body;
|
|
709
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(`/user/status-pages`, {
|
|
851
|
+
const { name: name2, monitor_ids, is_published } = ctx.request.body;
|
|
852
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/status-pages`, {
|
|
710
853
|
method: "POST",
|
|
711
|
-
body: JSON.stringify({ name, monitor_ids, is_published })
|
|
854
|
+
body: JSON.stringify({ name: name2, monitor_ids, is_published })
|
|
712
855
|
});
|
|
713
856
|
ctx.body = { statusPagesData };
|
|
714
857
|
},
|
|
715
858
|
async updateStatusPages(ctx) {
|
|
716
859
|
const { id, ...data } = ctx.request.body;
|
|
717
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(
|
|
860
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
718
861
|
`/user/status-pages/${id}`,
|
|
719
862
|
{
|
|
720
863
|
method: "PUT",
|
|
@@ -725,7 +868,7 @@ const statusPage = ({ strapi }) => ({
|
|
|
725
868
|
},
|
|
726
869
|
async resetLink(ctx) {
|
|
727
870
|
const { id } = ctx.request.body;
|
|
728
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(
|
|
871
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
729
872
|
`/user/status-pages/${id}/reset`,
|
|
730
873
|
{
|
|
731
874
|
method: "POST"
|
|
@@ -735,7 +878,7 @@ const statusPage = ({ strapi }) => ({
|
|
|
735
878
|
},
|
|
736
879
|
async deleteStatusPages(ctx) {
|
|
737
880
|
const id = ctx.params.id;
|
|
738
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(
|
|
881
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
739
882
|
`/user/status-pages/${id}`,
|
|
740
883
|
{
|
|
741
884
|
method: "DELETE"
|
|
@@ -744,17 +887,17 @@ const statusPage = ({ strapi }) => ({
|
|
|
744
887
|
ctx.body = { statusPagesData };
|
|
745
888
|
}
|
|
746
889
|
});
|
|
747
|
-
const regions = ({ strapi }) => ({
|
|
890
|
+
const regions = ({ strapi: strapi2 }) => ({
|
|
748
891
|
async getRegions(ctx) {
|
|
749
|
-
const regionsData = await service({ strapi }).makeBackendRequest(`/regions`, {
|
|
892
|
+
const regionsData = await service({ strapi: strapi2 }).makeBackendRequest(`/regions`, {
|
|
750
893
|
method: "GET"
|
|
751
894
|
});
|
|
752
895
|
ctx.body = { regionsData };
|
|
753
896
|
}
|
|
754
897
|
});
|
|
755
|
-
const userDetailsService = ({ strapi }) => ({
|
|
898
|
+
const userDetailsService = ({ strapi: strapi2 }) => ({
|
|
756
899
|
async createUserApiToken(sessionToken) {
|
|
757
|
-
const apiTokens = await service({ strapi }).makeBackendRequest(
|
|
900
|
+
const apiTokens = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
758
901
|
`/tokens/generate`,
|
|
759
902
|
{
|
|
760
903
|
method: "POST",
|
|
@@ -774,7 +917,7 @@ const userDetailsService = ({ strapi }) => ({
|
|
|
774
917
|
return null;
|
|
775
918
|
},
|
|
776
919
|
async getUserApiToken(sessionToken) {
|
|
777
|
-
const apiTokens = await service({ strapi }).makeBackendRequest(
|
|
920
|
+
const apiTokens = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
778
921
|
`/tokens`,
|
|
779
922
|
{
|
|
780
923
|
method: "GET"
|
|
@@ -843,7 +986,7 @@ const userDetailsService = ({ strapi }) => ({
|
|
|
843
986
|
}
|
|
844
987
|
}
|
|
845
988
|
};
|
|
846
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(`/user/monitors`, {
|
|
989
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/monitors`, {
|
|
847
990
|
method: "POST",
|
|
848
991
|
body: JSON.stringify(payload)
|
|
849
992
|
}, true, apiToken);
|
|
@@ -858,9 +1001,9 @@ const userDetailsService = ({ strapi }) => ({
|
|
|
858
1001
|
}
|
|
859
1002
|
}
|
|
860
1003
|
});
|
|
861
|
-
const userDetails = ({ strapi }) => ({
|
|
1004
|
+
const userDetails = ({ strapi: strapi2 }) => ({
|
|
862
1005
|
async getUserDetails(ctx) {
|
|
863
|
-
const userDetailsData = await service({ strapi }).makeBackendRequest(`/user/details`, {
|
|
1006
|
+
const userDetailsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/details`, {
|
|
864
1007
|
method: "GET"
|
|
865
1008
|
});
|
|
866
1009
|
ctx.body = { userDetailsData };
|
|
@@ -868,7 +1011,7 @@ const userDetails = ({ strapi }) => ({
|
|
|
868
1011
|
async signUp(ctx) {
|
|
869
1012
|
try {
|
|
870
1013
|
const { email, password, source, site_url, fullName } = ctx.request.body;
|
|
871
|
-
const registerData = await service({ strapi }).makeBackendRequest(
|
|
1014
|
+
const registerData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
872
1015
|
`/user/register`,
|
|
873
1016
|
{
|
|
874
1017
|
method: "POST",
|
|
@@ -882,13 +1025,13 @@ const userDetails = ({ strapi }) => ({
|
|
|
882
1025
|
true
|
|
883
1026
|
);
|
|
884
1027
|
if (registerData?.data?.token) {
|
|
885
|
-
const apiToken = await userDetailsService({ strapi }).getUserApiToken(registerData?.data?.token);
|
|
886
|
-
const monitorId = await userDetailsService({ strapi }).createInitialMonitor(site_url, apiToken);
|
|
1028
|
+
const apiToken = await userDetailsService({ strapi: strapi2 }).getUserApiToken(registerData?.data?.token);
|
|
1029
|
+
const monitorId = await userDetailsService({ strapi: strapi2 }).createInitialMonitor(site_url, apiToken);
|
|
887
1030
|
if (!apiToken || !monitorId) {
|
|
888
1031
|
ctx.body = { ok: false, message: "Error creating API token or Monitor" };
|
|
889
1032
|
return;
|
|
890
1033
|
}
|
|
891
|
-
const store = service({ strapi }).settingsStore;
|
|
1034
|
+
const store = service({ strapi: strapi2 }).settingsStore;
|
|
892
1035
|
const current = await store.get() || {};
|
|
893
1036
|
await store.set({
|
|
894
1037
|
value: {
|
|
@@ -908,7 +1051,7 @@ const userDetails = ({ strapi }) => ({
|
|
|
908
1051
|
async signIn(ctx) {
|
|
909
1052
|
try {
|
|
910
1053
|
const { email, password } = ctx.request.body;
|
|
911
|
-
const loginData = await service({ strapi }).makeBackendRequest(
|
|
1054
|
+
const loginData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
912
1055
|
`/user/login`,
|
|
913
1056
|
{
|
|
914
1057
|
method: "POST",
|
|
@@ -920,8 +1063,8 @@ const userDetails = ({ strapi }) => ({
|
|
|
920
1063
|
true
|
|
921
1064
|
);
|
|
922
1065
|
if (loginData?.data?.token) {
|
|
923
|
-
const apiToken = await userDetailsService({ strapi }).getUserApiToken(loginData?.data?.token);
|
|
924
|
-
const store = service({ strapi }).settingsStore;
|
|
1066
|
+
const apiToken = await userDetailsService({ strapi: strapi2 }).getUserApiToken(loginData?.data?.token);
|
|
1067
|
+
const store = service({ strapi: strapi2 }).settingsStore;
|
|
925
1068
|
const current = await store.get() || {};
|
|
926
1069
|
await store.set({
|
|
927
1070
|
value: {
|
|
@@ -940,7 +1083,7 @@ const userDetails = ({ strapi }) => ({
|
|
|
940
1083
|
async forgotPassword(ctx) {
|
|
941
1084
|
try {
|
|
942
1085
|
const { email } = ctx.request.body;
|
|
943
|
-
const forgotPasswordData = await service({ strapi }).makeBackendRequest(
|
|
1086
|
+
const forgotPasswordData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
944
1087
|
`/user/forgot-password`,
|
|
945
1088
|
{
|
|
946
1089
|
method: "POST",
|
|
@@ -960,9 +1103,9 @@ const userDetails = ({ strapi }) => ({
|
|
|
960
1103
|
}
|
|
961
1104
|
}
|
|
962
1105
|
});
|
|
963
|
-
const notificationChannels = ({ strapi }) => ({
|
|
1106
|
+
const notificationChannels = ({ strapi: strapi2 }) => ({
|
|
964
1107
|
async getNotificationChannels(ctx) {
|
|
965
|
-
const notificationChannelsData = await service({ strapi }).makeBackendRequest(
|
|
1108
|
+
const notificationChannelsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
966
1109
|
`/user/integrations`,
|
|
967
1110
|
{
|
|
968
1111
|
method: "GET"
|
|
@@ -972,7 +1115,7 @@ const notificationChannels = ({ strapi }) => ({
|
|
|
972
1115
|
},
|
|
973
1116
|
async createNotificationChannel(ctx) {
|
|
974
1117
|
const { ...data } = ctx.request.body;
|
|
975
|
-
const notificationChannelsData = await service({ strapi }).makeBackendRequest(
|
|
1118
|
+
const notificationChannelsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
976
1119
|
`/user/integrations`,
|
|
977
1120
|
{
|
|
978
1121
|
method: "POST",
|
|
@@ -982,7 +1125,7 @@ const notificationChannels = ({ strapi }) => ({
|
|
|
982
1125
|
ctx.body = { notificationChannelsData };
|
|
983
1126
|
},
|
|
984
1127
|
async getSupportedIntegrations(ctx) {
|
|
985
|
-
const supportedIntegrationsData = await service({ strapi }).makeBackendRequest(
|
|
1128
|
+
const supportedIntegrationsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
986
1129
|
`/integrations/supported`,
|
|
987
1130
|
{
|
|
988
1131
|
method: "GET"
|
|
@@ -992,7 +1135,7 @@ const notificationChannels = ({ strapi }) => ({
|
|
|
992
1135
|
},
|
|
993
1136
|
async testNotificationChannel(ctx) {
|
|
994
1137
|
const { id } = ctx.params;
|
|
995
|
-
const testResult = await service({ strapi }).makeBackendRequest(
|
|
1138
|
+
const testResult = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
996
1139
|
`/user/integrations/${id}/test`,
|
|
997
1140
|
{
|
|
998
1141
|
method: "POST"
|
|
@@ -1003,7 +1146,7 @@ const notificationChannels = ({ strapi }) => ({
|
|
|
1003
1146
|
async updateNotificationChannel(ctx) {
|
|
1004
1147
|
const { id } = ctx.params;
|
|
1005
1148
|
const { ...data } = ctx.request.body;
|
|
1006
|
-
const updatedChannel = await service({ strapi }).makeBackendRequest(
|
|
1149
|
+
const updatedChannel = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
1007
1150
|
`/user/integrations/${id}`,
|
|
1008
1151
|
{
|
|
1009
1152
|
method: "PUT",
|
|
@@ -1014,22 +1157,22 @@ const notificationChannels = ({ strapi }) => ({
|
|
|
1014
1157
|
},
|
|
1015
1158
|
async deleteNotificationChannel(ctx) {
|
|
1016
1159
|
const { id } = ctx.params;
|
|
1017
|
-
const deleteResult = await service({ strapi }).makeBackendRequest(`/user/integrations/${id}`, {
|
|
1160
|
+
const deleteResult = await service({ strapi: strapi2 }).makeBackendRequest(`/user/integrations/${id}`, {
|
|
1018
1161
|
method: "DELETE"
|
|
1019
1162
|
});
|
|
1020
1163
|
ctx.body = { deleteResult };
|
|
1021
1164
|
}
|
|
1022
1165
|
});
|
|
1023
|
-
const tags = ({ strapi }) => ({
|
|
1166
|
+
const tags = ({ strapi: strapi2 }) => ({
|
|
1024
1167
|
async getTags(ctx) {
|
|
1025
|
-
const tagsData = await service({ strapi }).makeBackendRequest(`/user/tags`, {
|
|
1168
|
+
const tagsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/tags`, {
|
|
1026
1169
|
method: "GET"
|
|
1027
1170
|
});
|
|
1028
1171
|
ctx.body = { tagsData };
|
|
1029
1172
|
},
|
|
1030
1173
|
async getTagsByID(ctx) {
|
|
1031
1174
|
const id = ctx.params.id;
|
|
1032
|
-
const tagsData = await service({ strapi }).makeBackendRequest(
|
|
1175
|
+
const tagsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
1033
1176
|
`/user/tags/${id}`,
|
|
1034
1177
|
{
|
|
1035
1178
|
method: "GET"
|
|
@@ -1038,10 +1181,10 @@ const tags = ({ strapi }) => ({
|
|
|
1038
1181
|
ctx.body = { tagsData };
|
|
1039
1182
|
},
|
|
1040
1183
|
async createTag(ctx) {
|
|
1041
|
-
const { name, color } = ctx.request.body;
|
|
1042
|
-
const tagsData = await service({ strapi }).makeBackendRequest(`/user/tags`, {
|
|
1184
|
+
const { name: name2, color } = ctx.request.body;
|
|
1185
|
+
const tagsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/tags`, {
|
|
1043
1186
|
method: "POST",
|
|
1044
|
-
body: JSON.stringify({ name, color })
|
|
1187
|
+
body: JSON.stringify({ name: name2, color })
|
|
1045
1188
|
});
|
|
1046
1189
|
ctx.body = { tagsData };
|
|
1047
1190
|
},
|
|
@@ -1053,7 +1196,7 @@ const tags = ({ strapi }) => ({
|
|
|
1053
1196
|
ctx.body = { error: "Tag ID is required" };
|
|
1054
1197
|
return;
|
|
1055
1198
|
}
|
|
1056
|
-
const tagsData = await service({ strapi }).makeBackendRequest(
|
|
1199
|
+
const tagsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
1057
1200
|
`/user/tags/${id}`,
|
|
1058
1201
|
{
|
|
1059
1202
|
method: "PUT",
|
|
@@ -1064,7 +1207,7 @@ const tags = ({ strapi }) => ({
|
|
|
1064
1207
|
},
|
|
1065
1208
|
async deleteTags(ctx) {
|
|
1066
1209
|
const id = ctx.params.id;
|
|
1067
|
-
const tagsData = await service({ strapi }).makeBackendRequest(
|
|
1210
|
+
const tagsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
1068
1211
|
`/user/tags/${id}`,
|
|
1069
1212
|
{
|
|
1070
1213
|
method: "DELETE"
|
|
@@ -1107,6 +1250,15 @@ const routes = {
|
|
|
1107
1250
|
auth: false
|
|
1108
1251
|
}
|
|
1109
1252
|
},
|
|
1253
|
+
{
|
|
1254
|
+
method: "POST",
|
|
1255
|
+
path: "/track-user-data",
|
|
1256
|
+
handler: "settings.trackUserData",
|
|
1257
|
+
config: {
|
|
1258
|
+
policies: [],
|
|
1259
|
+
auth: false
|
|
1260
|
+
}
|
|
1261
|
+
},
|
|
1110
1262
|
{
|
|
1111
1263
|
method: "GET",
|
|
1112
1264
|
path: "/monitor/:id",
|