@upsnap/strapi 1.0.10 β 1.0.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/README.md +13 -26
- package/dist/server/index.js +157 -88
- package/dist/server/index.mjs +157 -88
- package/dist/server/src/index.d.ts +2 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -26,17 +26,7 @@ Track monitoring incidents with detailed timelines, status history, recovery tra
|
|
|
26
26
|
|
|
27
27
|
## π Rich Notification Integrations
|
|
28
28
|
Get real-time alerts through multiple channels:
|
|
29
|
-
Email
|
|
30
|
-
Slack
|
|
31
|
-
Discord
|
|
32
|
-
SMS
|
|
33
|
-
Telegram
|
|
34
|
-
Google Chat
|
|
35
|
-
Microsoft Teams
|
|
36
|
-
Webhooks
|
|
37
|
-
PagerDuty
|
|
38
|
-
Zapier
|
|
39
|
-
β¦and more integrations coming soon.
|
|
29
|
+
Email, Slack, Discord, SMS, Telegram, Google Chat, Microsoft Teams, Webhooks, PagerDuty, Zapier, and more.
|
|
40
30
|
|
|
41
31
|
## π Website Monitoring
|
|
42
32
|
Comprehensive website health monitoring including availability, performance checks, SSL status, and content integrity monitoring in one place.
|
|
@@ -50,7 +40,6 @@ Comprehensive website health monitoring including availability, performance chec
|
|
|
50
40
|
- Nodejs ">=18.0.0 <=22.x.x"
|
|
51
41
|
- React 18 (provided by Strapi)
|
|
52
42
|
|
|
53
|
-
|
|
54
43
|
## π¦ Installation
|
|
55
44
|
|
|
56
45
|
Install via npm:
|
|
@@ -68,9 +57,12 @@ yarn add @upsnap/strapi
|
|
|
68
57
|
Enable it in confing/plugins:
|
|
69
58
|
|
|
70
59
|
```bash
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
60
|
+
module.exports = {
|
|
61
|
+
// ...
|
|
62
|
+
upsnap: {
|
|
63
|
+
enabled: true,
|
|
64
|
+
},
|
|
65
|
+
};
|
|
74
66
|
```
|
|
75
67
|
|
|
76
68
|
Restart Strapi:
|
|
@@ -87,23 +79,18 @@ Upsnap will appear in your admin sidebar.
|
|
|
87
79
|
|
|
88
80
|
After installing the plugin and restarting Strapi:
|
|
89
81
|
|
|
90
|
-
1. Go to
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
or select a primary monitor if one is already created
|
|
95
|
-
|
|
96
|
-
3. Configure monitoring options
|
|
97
|
-
|
|
98
|
-
4. Save and go to dashboard
|
|
82
|
+
1. Authenticate: Go to Upsnap β Settings and login with your UpSnap account or register for a new one directly within the plugin.
|
|
83
|
+
2. Add Monitor: Add a new monitor or select a primary monitor if one is already created.
|
|
84
|
+
3. Configure: Set up your monitoring options and notification channels.
|
|
85
|
+
4. Save: Save your settings and head to the dashboard to see your site's health in real-time.
|
|
99
86
|
|
|
100
87
|
|
|
101
88
|
## Documentation
|
|
102
|
-
[Full Documentation](https://github.com/Appfoster/upsnap/
|
|
89
|
+
[Full Documentation](https://github.com/Appfoster/upsnap-docs/blob/master/strapi/Home.md)
|
|
103
90
|
|
|
104
91
|
## Issue Tracking
|
|
105
92
|
[GitHub Issues](https://github.com/Appfoster/upsnap-strapi/issues)
|
|
106
|
-
[Changelog](https://github.com/Appfoster/upsnap/blob/
|
|
93
|
+
[Changelog](https://github.com/Appfoster/upsnap-docs/blob/master/strapi/changelog.md)
|
|
107
94
|
|
|
108
95
|
## Contact
|
|
109
96
|
**Email**: support@upsnap.ai
|
package/dist/server/index.js
CHANGED
|
@@ -1,29 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperties(exports, { __esModule: { value: true }, [Symbol.toStringTag]: { value: "Module" } });
|
|
3
|
-
const bootstrap = ({ strapi }) => {
|
|
4
|
-
};
|
|
5
|
-
const destroy = ({ strapi }) => {
|
|
6
|
-
};
|
|
7
|
-
const register = ({ strapi }) => {
|
|
8
|
-
};
|
|
9
|
-
const config = {
|
|
10
|
-
default: {},
|
|
11
|
-
validator() {
|
|
12
|
-
}
|
|
13
|
-
};
|
|
14
|
-
const contentTypes = {};
|
|
15
|
-
const controller = ({ strapi }) => ({
|
|
16
|
-
index(ctx) {
|
|
17
|
-
ctx.body = strapi.plugin("upsnap").service("service").getWelcomeMessage();
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
3
|
const BACKEND_URL = "https://api.upsnap.ai/v1";
|
|
21
4
|
const LIGHTHOUSE_CHECKS = ["performance", "accessibility", "bestPractices", "seo", "pwa"];
|
|
22
|
-
const
|
|
5
|
+
const version = "1.0.11";
|
|
6
|
+
const repository = { "type": "git", "url": "https://github.com/Appfoster/upsnap-strapi" };
|
|
7
|
+
const keywords = [];
|
|
8
|
+
const type = "commonjs";
|
|
9
|
+
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" } };
|
|
10
|
+
const files = ["dist"];
|
|
11
|
+
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" };
|
|
12
|
+
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" };
|
|
13
|
+
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" };
|
|
14
|
+
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" };
|
|
15
|
+
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." };
|
|
16
|
+
const name = "@upsnap/strapi";
|
|
17
|
+
const description = "Complete website health monitoring for Strapi, including uptime, SSL certificates, broken links, performance metrics, domain health, and mixed content issues.";
|
|
18
|
+
const license = "MIT";
|
|
19
|
+
const author = "Upsnap <support@upsnap.ai>";
|
|
20
|
+
const packageJson = {
|
|
21
|
+
version,
|
|
22
|
+
repository,
|
|
23
|
+
keywords,
|
|
24
|
+
type,
|
|
25
|
+
exports: exports$1,
|
|
26
|
+
files,
|
|
27
|
+
scripts,
|
|
28
|
+
dependencies,
|
|
29
|
+
devDependencies,
|
|
30
|
+
peerDependencies,
|
|
31
|
+
strapi,
|
|
32
|
+
name,
|
|
33
|
+
description,
|
|
34
|
+
license,
|
|
35
|
+
author
|
|
36
|
+
};
|
|
37
|
+
const service = ({ strapi: strapi2 }) => ({
|
|
23
38
|
getWelcomeMessage() {
|
|
24
39
|
return "Welcome to Strapi π";
|
|
25
40
|
},
|
|
26
|
-
settingsStore:
|
|
41
|
+
settingsStore: strapi2.store({
|
|
27
42
|
type: "plugin",
|
|
28
43
|
name: "upsnap",
|
|
29
44
|
key: "settings"
|
|
@@ -61,11 +76,65 @@ const service = ({ strapi }) => ({
|
|
|
61
76
|
data: await response.arrayBuffer(),
|
|
62
77
|
headers: response.headers
|
|
63
78
|
};
|
|
79
|
+
},
|
|
80
|
+
async trackInstallation() {
|
|
81
|
+
try {
|
|
82
|
+
const settings2 = await this.settingsStore.get();
|
|
83
|
+
if (settings2?.installationTracked) {
|
|
84
|
+
return;
|
|
85
|
+
}
|
|
86
|
+
const pluginVersion = packageJson.version;
|
|
87
|
+
const strapiVersion = strapi2.config.get("info.strapi");
|
|
88
|
+
const siteUrl = strapi2.config.get("server.url") || `http://${strapi2.config.get("server.host") || "localhost"}:${strapi2.config.get("server.port") || 1337}`;
|
|
89
|
+
const response = await this.makeBackendRequest(
|
|
90
|
+
"/installation-data",
|
|
91
|
+
{
|
|
92
|
+
method: "POST",
|
|
93
|
+
body: JSON.stringify({
|
|
94
|
+
platform: "strapi",
|
|
95
|
+
details: {
|
|
96
|
+
version: pluginVersion,
|
|
97
|
+
site_url: siteUrl,
|
|
98
|
+
strapi_version: strapiVersion
|
|
99
|
+
}
|
|
100
|
+
})
|
|
101
|
+
},
|
|
102
|
+
true
|
|
103
|
+
);
|
|
104
|
+
if (response?.status === "success") {
|
|
105
|
+
await this.settingsStore.set({
|
|
106
|
+
value: {
|
|
107
|
+
...settings2,
|
|
108
|
+
installationTracked: true
|
|
109
|
+
}
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
} catch (error) {
|
|
113
|
+
console.log("UpSnap: Failed to track installation data ", error);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
const bootstrap = async ({ strapi: strapi2 }) => {
|
|
118
|
+
await service({ strapi: strapi2 }).trackInstallation();
|
|
119
|
+
};
|
|
120
|
+
const destroy = ({ strapi: strapi2 }) => {
|
|
121
|
+
};
|
|
122
|
+
const register = ({ strapi: strapi2 }) => {
|
|
123
|
+
};
|
|
124
|
+
const config = {
|
|
125
|
+
default: {},
|
|
126
|
+
validator() {
|
|
127
|
+
}
|
|
128
|
+
};
|
|
129
|
+
const contentTypes = {};
|
|
130
|
+
const controller = ({ strapi: strapi2 }) => ({
|
|
131
|
+
index(ctx) {
|
|
132
|
+
ctx.body = strapi2.plugin("upsnap").service("service").getWelcomeMessage();
|
|
64
133
|
}
|
|
65
134
|
});
|
|
66
|
-
const settings = ({ strapi }) => ({
|
|
135
|
+
const settings = ({ strapi: strapi2 }) => ({
|
|
67
136
|
async get(ctx) {
|
|
68
|
-
const settings2 = await service({ strapi }).settingsStore.get();
|
|
137
|
+
const settings2 = await service({ strapi: strapi2 }).settingsStore.get();
|
|
69
138
|
ctx.body = {
|
|
70
139
|
token: settings2?.token ?? null,
|
|
71
140
|
primaryMonitorId: settings2?.primaryMonitorId ?? null
|
|
@@ -74,7 +143,7 @@ const settings = ({ strapi }) => ({
|
|
|
74
143
|
async set(ctx) {
|
|
75
144
|
const { token, logOut } = ctx.request.body;
|
|
76
145
|
if (!logOut) {
|
|
77
|
-
const isValidData = await service({ strapi }).makeBackendRequest("/tokens/validate", {
|
|
146
|
+
const isValidData = await service({ strapi: strapi2 }).makeBackendRequest("/tokens/validate", {
|
|
78
147
|
method: "POST",
|
|
79
148
|
body: JSON.stringify({ token })
|
|
80
149
|
}, true);
|
|
@@ -83,7 +152,7 @@ const settings = ({ strapi }) => ({
|
|
|
83
152
|
return;
|
|
84
153
|
}
|
|
85
154
|
}
|
|
86
|
-
const store = service({ strapi }).settingsStore;
|
|
155
|
+
const store = service({ strapi: strapi2 }).settingsStore;
|
|
87
156
|
const current = await store.get() || {};
|
|
88
157
|
await store.set({
|
|
89
158
|
value: {
|
|
@@ -95,7 +164,7 @@ const settings = ({ strapi }) => ({
|
|
|
95
164
|
},
|
|
96
165
|
async setPrimaryMonitorId(ctx) {
|
|
97
166
|
const { monitorId } = ctx.request.body;
|
|
98
|
-
const store = service({ strapi }).settingsStore;
|
|
167
|
+
const store = service({ strapi: strapi2 }).settingsStore;
|
|
99
168
|
const current = await store.get() || {};
|
|
100
169
|
await store.set({
|
|
101
170
|
value: {
|
|
@@ -106,7 +175,7 @@ const settings = ({ strapi }) => ({
|
|
|
106
175
|
ctx.body = { ok: true };
|
|
107
176
|
},
|
|
108
177
|
async getPrimaryMonitorId(ctx) {
|
|
109
|
-
const settings2 = await service({ strapi }).settingsStore.get();
|
|
178
|
+
const settings2 = await service({ strapi: strapi2 }).settingsStore.get();
|
|
110
179
|
ctx.body = { primaryMonitorId: settings2?.primaryMonitorId };
|
|
111
180
|
}
|
|
112
181
|
});
|
|
@@ -334,10 +403,10 @@ function buildBrokenLinksErrorResponse(raw) {
|
|
|
334
403
|
data: raw
|
|
335
404
|
};
|
|
336
405
|
}
|
|
337
|
-
const monitor = ({ strapi }) => ({
|
|
406
|
+
const monitor = ({ strapi: strapi2 }) => ({
|
|
338
407
|
async getById(ctx) {
|
|
339
408
|
const monitorId = ctx.params.id;
|
|
340
|
-
const token = await service({ strapi }).getToken();
|
|
409
|
+
const token = await service({ strapi: strapi2 }).getToken();
|
|
341
410
|
const monitorResponse = await fetch(`${BACKEND_URL}/user/monitors/${monitorId}`, {
|
|
342
411
|
method: "GET",
|
|
343
412
|
headers: {
|
|
@@ -349,7 +418,7 @@ const monitor = ({ strapi }) => ({
|
|
|
349
418
|
ctx.body = { monitor: monitor2 };
|
|
350
419
|
},
|
|
351
420
|
async get(ctx) {
|
|
352
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(
|
|
421
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
353
422
|
`/user/monitors`,
|
|
354
423
|
{
|
|
355
424
|
method: "GET"
|
|
@@ -360,7 +429,7 @@ const monitor = ({ strapi }) => ({
|
|
|
360
429
|
async getMonitorUptimeStats(ctx) {
|
|
361
430
|
const monitorId = ctx.params.id;
|
|
362
431
|
const { region } = ctx.query;
|
|
363
|
-
const uptimeStatsData = await service({ strapi }).makeBackendRequest(
|
|
432
|
+
const uptimeStatsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
364
433
|
`/user/monitors/${monitorId}/uptime-stats?uptime_stats_time_frames=day,week,month®ion=${region}`,
|
|
365
434
|
{
|
|
366
435
|
method: "GET"
|
|
@@ -371,7 +440,7 @@ const monitor = ({ strapi }) => ({
|
|
|
371
440
|
async getMonitorHistogram(ctx) {
|
|
372
441
|
const monitorId = ctx.params.id;
|
|
373
442
|
const { region } = ctx.query;
|
|
374
|
-
const histogramData = await service({ strapi }).makeBackendRequest(
|
|
443
|
+
const histogramData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
375
444
|
`/user/monitors/${monitorId}/histogram?region=${region}`,
|
|
376
445
|
{
|
|
377
446
|
method: "GET"
|
|
@@ -381,7 +450,7 @@ const monitor = ({ strapi }) => ({
|
|
|
381
450
|
},
|
|
382
451
|
async getHealthChecks(ctx) {
|
|
383
452
|
const { monitorUrl } = ctx.request.body;
|
|
384
|
-
const healthCheckData = await service({ strapi }).makeBackendRequest(`/healthcheck`, {
|
|
453
|
+
const healthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(`/healthcheck`, {
|
|
385
454
|
method: "POST",
|
|
386
455
|
headers: {
|
|
387
456
|
"X-Requested-From": "craft"
|
|
@@ -397,7 +466,7 @@ const monitor = ({ strapi }) => ({
|
|
|
397
466
|
},
|
|
398
467
|
async getUptimeHealthCheck(ctx) {
|
|
399
468
|
const { monitorUrl } = ctx.request.body;
|
|
400
|
-
const uptimeHealthCheckData = await service({ strapi }).makeBackendRequest(
|
|
469
|
+
const uptimeHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
401
470
|
`/healthcheck`,
|
|
402
471
|
{
|
|
403
472
|
method: "POST",
|
|
@@ -422,7 +491,7 @@ const monitor = ({ strapi }) => ({
|
|
|
422
491
|
},
|
|
423
492
|
async getSslHealthCheck(ctx) {
|
|
424
493
|
const { monitorUrl } = ctx.request.body;
|
|
425
|
-
const sslHealthCheckData = await service({ strapi }).makeBackendRequest(`/healthcheck`, {
|
|
494
|
+
const sslHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(`/healthcheck`, {
|
|
426
495
|
method: "POST",
|
|
427
496
|
headers: {
|
|
428
497
|
"X-Requested-From": "craft"
|
|
@@ -444,7 +513,7 @@ const monitor = ({ strapi }) => ({
|
|
|
444
513
|
},
|
|
445
514
|
async getDomainHealthCheck(ctx) {
|
|
446
515
|
const { monitorUrl } = ctx.request.body;
|
|
447
|
-
const domainHealthCheckData = await service({ strapi }).makeBackendRequest(
|
|
516
|
+
const domainHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
448
517
|
`/healthcheck`,
|
|
449
518
|
{
|
|
450
519
|
method: "POST",
|
|
@@ -469,7 +538,7 @@ const monitor = ({ strapi }) => ({
|
|
|
469
538
|
},
|
|
470
539
|
async getLighthouseHealthCheck(ctx) {
|
|
471
540
|
const { monitorUrl, strategy } = ctx.request.body;
|
|
472
|
-
const lighthouseHealthCheckData = await service({ strapi }).makeBackendRequest(
|
|
541
|
+
const lighthouseHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
473
542
|
`/healthcheck`,
|
|
474
543
|
{
|
|
475
544
|
method: "POST",
|
|
@@ -499,7 +568,7 @@ const monitor = ({ strapi }) => ({
|
|
|
499
568
|
},
|
|
500
569
|
async getBrokenLinksHealthCheck(ctx) {
|
|
501
570
|
const { monitorUrl } = ctx.request.body;
|
|
502
|
-
const brokenLinksHealthCheckData = await service({ strapi }).makeBackendRequest(
|
|
571
|
+
const brokenLinksHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
503
572
|
`/healthcheck`,
|
|
504
573
|
{
|
|
505
574
|
method: "POST",
|
|
@@ -528,7 +597,7 @@ const monitor = ({ strapi }) => ({
|
|
|
528
597
|
},
|
|
529
598
|
async getMixedContentHealthCheck(ctx) {
|
|
530
599
|
const { monitorUrl } = ctx.request.body;
|
|
531
|
-
const mixedContentHealthCheckData = await service({ strapi }).makeBackendRequest(
|
|
600
|
+
const mixedContentHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
532
601
|
`/healthcheck`,
|
|
533
602
|
{
|
|
534
603
|
method: "POST",
|
|
@@ -547,7 +616,7 @@ const monitor = ({ strapi }) => ({
|
|
|
547
616
|
async getMonitorResponseTime(ctx) {
|
|
548
617
|
const monitorId = ctx.params.id;
|
|
549
618
|
const { start, end, region } = ctx.query;
|
|
550
|
-
const responseTimeData = await service({ strapi }).makeBackendRequest(
|
|
619
|
+
const responseTimeData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
551
620
|
`/user/monitors/${monitorId}/response-time?start=${start}&end=${end}®ion=${region || "default"}`,
|
|
552
621
|
{
|
|
553
622
|
method: "GET"
|
|
@@ -557,7 +626,7 @@ const monitor = ({ strapi }) => ({
|
|
|
557
626
|
},
|
|
558
627
|
async getMonitorIncidents(ctx) {
|
|
559
628
|
const monitorId = ctx.params.id;
|
|
560
|
-
const incidentsData = await service({ strapi }).makeBackendRequest(
|
|
629
|
+
const incidentsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
561
630
|
`/user/monitors/incidents?monitorId=${monitorId}&page=1&page_size=20&time_range=7D`,
|
|
562
631
|
{
|
|
563
632
|
method: "GET"
|
|
@@ -567,7 +636,7 @@ const monitor = ({ strapi }) => ({
|
|
|
567
636
|
},
|
|
568
637
|
async getMonitorSettings(ctx) {
|
|
569
638
|
const monitorId = ctx.params.id;
|
|
570
|
-
const monitorSettingsData = await service({ strapi }).makeBackendRequest(
|
|
639
|
+
const monitorSettingsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
571
640
|
`/user/monitors/settings?id=${monitorId}`,
|
|
572
641
|
{
|
|
573
642
|
method: "GET"
|
|
@@ -577,7 +646,7 @@ const monitor = ({ strapi }) => ({
|
|
|
577
646
|
},
|
|
578
647
|
async createMonitor(ctx) {
|
|
579
648
|
const { ...data } = ctx.request.body;
|
|
580
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(`/user/monitors`, {
|
|
649
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/monitors`, {
|
|
581
650
|
method: "POST",
|
|
582
651
|
body: JSON.stringify(data)
|
|
583
652
|
});
|
|
@@ -586,7 +655,7 @@ const monitor = ({ strapi }) => ({
|
|
|
586
655
|
async updateMonitor(ctx) {
|
|
587
656
|
const monitorId = ctx.params.id;
|
|
588
657
|
const { ...data } = ctx.request.body;
|
|
589
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(
|
|
658
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
590
659
|
`/user/monitors/${monitorId}`,
|
|
591
660
|
{
|
|
592
661
|
method: "PUT",
|
|
@@ -597,7 +666,7 @@ const monitor = ({ strapi }) => ({
|
|
|
597
666
|
},
|
|
598
667
|
async deleteMonitor(ctx) {
|
|
599
668
|
const monitorId = ctx.params.id;
|
|
600
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(
|
|
669
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
601
670
|
`/user/monitors/${monitorId}`,
|
|
602
671
|
{
|
|
603
672
|
method: "DELETE"
|
|
@@ -607,7 +676,7 @@ const monitor = ({ strapi }) => ({
|
|
|
607
676
|
},
|
|
608
677
|
async deleteMonitors(ctx) {
|
|
609
678
|
const { monitorIds } = ctx.request.body;
|
|
610
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(`/user/monitors`, {
|
|
679
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/monitors`, {
|
|
611
680
|
method: "PATCH",
|
|
612
681
|
body: JSON.stringify({ ids: monitorIds, action: "delete" })
|
|
613
682
|
});
|
|
@@ -642,7 +711,7 @@ const monitor = ({ strapi }) => ({
|
|
|
642
711
|
if (search) queryParams.set("search", search);
|
|
643
712
|
if (sortBy) queryParams.set("sort_by", sortBy);
|
|
644
713
|
if (sortOrder) queryParams.set("sort_order", sortOrder);
|
|
645
|
-
const incidentsData = await service({ strapi }).makeBackendRequest(
|
|
714
|
+
const incidentsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
646
715
|
`/user/monitors/incidents?${queryParams.toString()}`,
|
|
647
716
|
{
|
|
648
717
|
method: "GET"
|
|
@@ -652,20 +721,20 @@ const monitor = ({ strapi }) => ({
|
|
|
652
721
|
},
|
|
653
722
|
async exportIncidents(ctx) {
|
|
654
723
|
try {
|
|
655
|
-
const { monitorId, region, type, start_time, end_time, search, file_type } = ctx.request.body;
|
|
724
|
+
const { monitorId, region, type: type2, start_time, end_time, search, file_type } = ctx.request.body;
|
|
656
725
|
if (!monitorId) {
|
|
657
726
|
ctx.status = 400;
|
|
658
727
|
ctx.body = { error: "monitorId is required" };
|
|
659
728
|
return;
|
|
660
729
|
}
|
|
661
730
|
const queryParams = new URLSearchParams();
|
|
662
|
-
if (
|
|
731
|
+
if (type2) queryParams.set("type", type2);
|
|
663
732
|
if (start_time) queryParams.set("start_time", start_time);
|
|
664
733
|
if (end_time) queryParams.set("end_time", end_time);
|
|
665
734
|
if (search) queryParams.set("search", search);
|
|
666
735
|
if (file_type) queryParams.set("file_type", file_type);
|
|
667
736
|
if (region) queryParams.set("region", region);
|
|
668
|
-
const response = await service({ strapi }).makeBackendRequest(
|
|
737
|
+
const response = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
669
738
|
`/user/monitors/${monitorId}/incidents/export?${queryParams.toString()}`,
|
|
670
739
|
{ method: "GET" }
|
|
671
740
|
);
|
|
@@ -689,16 +758,16 @@ const monitor = ({ strapi }) => ({
|
|
|
689
758
|
}
|
|
690
759
|
}
|
|
691
760
|
});
|
|
692
|
-
const statusPage = ({ strapi }) => ({
|
|
761
|
+
const statusPage = ({ strapi: strapi2 }) => ({
|
|
693
762
|
async getStatusPages(ctx) {
|
|
694
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(`/user/status-pages`, {
|
|
763
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/status-pages`, {
|
|
695
764
|
method: "GET"
|
|
696
765
|
});
|
|
697
766
|
ctx.body = { statusPagesData };
|
|
698
767
|
},
|
|
699
768
|
async getStatusPagesByID(ctx) {
|
|
700
769
|
const id = ctx.params.id;
|
|
701
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(
|
|
770
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
702
771
|
`/user/status-pages/${id}`,
|
|
703
772
|
{
|
|
704
773
|
method: "GET"
|
|
@@ -707,16 +776,16 @@ const statusPage = ({ strapi }) => ({
|
|
|
707
776
|
ctx.body = { statusPagesData };
|
|
708
777
|
},
|
|
709
778
|
async saveStatusPages(ctx) {
|
|
710
|
-
const { name, monitor_ids, is_published } = ctx.request.body;
|
|
711
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(`/user/status-pages`, {
|
|
779
|
+
const { name: name2, monitor_ids, is_published } = ctx.request.body;
|
|
780
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/status-pages`, {
|
|
712
781
|
method: "POST",
|
|
713
|
-
body: JSON.stringify({ name, monitor_ids, is_published })
|
|
782
|
+
body: JSON.stringify({ name: name2, monitor_ids, is_published })
|
|
714
783
|
});
|
|
715
784
|
ctx.body = { statusPagesData };
|
|
716
785
|
},
|
|
717
786
|
async updateStatusPages(ctx) {
|
|
718
787
|
const { id, ...data } = ctx.request.body;
|
|
719
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(
|
|
788
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
720
789
|
`/user/status-pages/${id}`,
|
|
721
790
|
{
|
|
722
791
|
method: "PUT",
|
|
@@ -727,7 +796,7 @@ const statusPage = ({ strapi }) => ({
|
|
|
727
796
|
},
|
|
728
797
|
async resetLink(ctx) {
|
|
729
798
|
const { id } = ctx.request.body;
|
|
730
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(
|
|
799
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
731
800
|
`/user/status-pages/${id}/reset`,
|
|
732
801
|
{
|
|
733
802
|
method: "POST"
|
|
@@ -737,7 +806,7 @@ const statusPage = ({ strapi }) => ({
|
|
|
737
806
|
},
|
|
738
807
|
async deleteStatusPages(ctx) {
|
|
739
808
|
const id = ctx.params.id;
|
|
740
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(
|
|
809
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
741
810
|
`/user/status-pages/${id}`,
|
|
742
811
|
{
|
|
743
812
|
method: "DELETE"
|
|
@@ -746,17 +815,17 @@ const statusPage = ({ strapi }) => ({
|
|
|
746
815
|
ctx.body = { statusPagesData };
|
|
747
816
|
}
|
|
748
817
|
});
|
|
749
|
-
const regions = ({ strapi }) => ({
|
|
818
|
+
const regions = ({ strapi: strapi2 }) => ({
|
|
750
819
|
async getRegions(ctx) {
|
|
751
|
-
const regionsData = await service({ strapi }).makeBackendRequest(`/regions`, {
|
|
820
|
+
const regionsData = await service({ strapi: strapi2 }).makeBackendRequest(`/regions`, {
|
|
752
821
|
method: "GET"
|
|
753
822
|
});
|
|
754
823
|
ctx.body = { regionsData };
|
|
755
824
|
}
|
|
756
825
|
});
|
|
757
|
-
const userDetailsService = ({ strapi }) => ({
|
|
826
|
+
const userDetailsService = ({ strapi: strapi2 }) => ({
|
|
758
827
|
async createUserApiToken(sessionToken) {
|
|
759
|
-
const apiTokens = await service({ strapi }).makeBackendRequest(
|
|
828
|
+
const apiTokens = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
760
829
|
`/tokens/generate`,
|
|
761
830
|
{
|
|
762
831
|
method: "POST",
|
|
@@ -776,7 +845,7 @@ const userDetailsService = ({ strapi }) => ({
|
|
|
776
845
|
return null;
|
|
777
846
|
},
|
|
778
847
|
async getUserApiToken(sessionToken) {
|
|
779
|
-
const apiTokens = await service({ strapi }).makeBackendRequest(
|
|
848
|
+
const apiTokens = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
780
849
|
`/tokens`,
|
|
781
850
|
{
|
|
782
851
|
method: "GET"
|
|
@@ -845,7 +914,7 @@ const userDetailsService = ({ strapi }) => ({
|
|
|
845
914
|
}
|
|
846
915
|
}
|
|
847
916
|
};
|
|
848
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(`/user/monitors`, {
|
|
917
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/monitors`, {
|
|
849
918
|
method: "POST",
|
|
850
919
|
body: JSON.stringify(payload)
|
|
851
920
|
}, true, apiToken);
|
|
@@ -860,9 +929,9 @@ const userDetailsService = ({ strapi }) => ({
|
|
|
860
929
|
}
|
|
861
930
|
}
|
|
862
931
|
});
|
|
863
|
-
const userDetails = ({ strapi }) => ({
|
|
932
|
+
const userDetails = ({ strapi: strapi2 }) => ({
|
|
864
933
|
async getUserDetails(ctx) {
|
|
865
|
-
const userDetailsData = await service({ strapi }).makeBackendRequest(`/user/details`, {
|
|
934
|
+
const userDetailsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/details`, {
|
|
866
935
|
method: "GET"
|
|
867
936
|
});
|
|
868
937
|
ctx.body = { userDetailsData };
|
|
@@ -870,7 +939,7 @@ const userDetails = ({ strapi }) => ({
|
|
|
870
939
|
async signUp(ctx) {
|
|
871
940
|
try {
|
|
872
941
|
const { email, password, source, site_url, fullName } = ctx.request.body;
|
|
873
|
-
const registerData = await service({ strapi }).makeBackendRequest(
|
|
942
|
+
const registerData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
874
943
|
`/user/register`,
|
|
875
944
|
{
|
|
876
945
|
method: "POST",
|
|
@@ -884,13 +953,13 @@ const userDetails = ({ strapi }) => ({
|
|
|
884
953
|
true
|
|
885
954
|
);
|
|
886
955
|
if (registerData?.data?.token) {
|
|
887
|
-
const apiToken = await userDetailsService({ strapi }).getUserApiToken(registerData?.data?.token);
|
|
888
|
-
const monitorId = await userDetailsService({ strapi }).createInitialMonitor(site_url, apiToken);
|
|
956
|
+
const apiToken = await userDetailsService({ strapi: strapi2 }).getUserApiToken(registerData?.data?.token);
|
|
957
|
+
const monitorId = await userDetailsService({ strapi: strapi2 }).createInitialMonitor(site_url, apiToken);
|
|
889
958
|
if (!apiToken || !monitorId) {
|
|
890
959
|
ctx.body = { ok: false, message: "Error creating API token or Monitor" };
|
|
891
960
|
return;
|
|
892
961
|
}
|
|
893
|
-
const store = service({ strapi }).settingsStore;
|
|
962
|
+
const store = service({ strapi: strapi2 }).settingsStore;
|
|
894
963
|
const current = await store.get() || {};
|
|
895
964
|
await store.set({
|
|
896
965
|
value: {
|
|
@@ -910,7 +979,7 @@ const userDetails = ({ strapi }) => ({
|
|
|
910
979
|
async signIn(ctx) {
|
|
911
980
|
try {
|
|
912
981
|
const { email, password } = ctx.request.body;
|
|
913
|
-
const loginData = await service({ strapi }).makeBackendRequest(
|
|
982
|
+
const loginData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
914
983
|
`/user/login`,
|
|
915
984
|
{
|
|
916
985
|
method: "POST",
|
|
@@ -922,8 +991,8 @@ const userDetails = ({ strapi }) => ({
|
|
|
922
991
|
true
|
|
923
992
|
);
|
|
924
993
|
if (loginData?.data?.token) {
|
|
925
|
-
const apiToken = await userDetailsService({ strapi }).getUserApiToken(loginData?.data?.token);
|
|
926
|
-
const store = service({ strapi }).settingsStore;
|
|
994
|
+
const apiToken = await userDetailsService({ strapi: strapi2 }).getUserApiToken(loginData?.data?.token);
|
|
995
|
+
const store = service({ strapi: strapi2 }).settingsStore;
|
|
927
996
|
const current = await store.get() || {};
|
|
928
997
|
await store.set({
|
|
929
998
|
value: {
|
|
@@ -942,7 +1011,7 @@ const userDetails = ({ strapi }) => ({
|
|
|
942
1011
|
async forgotPassword(ctx) {
|
|
943
1012
|
try {
|
|
944
1013
|
const { email } = ctx.request.body;
|
|
945
|
-
const forgotPasswordData = await service({ strapi }).makeBackendRequest(
|
|
1014
|
+
const forgotPasswordData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
946
1015
|
`/user/forgot-password`,
|
|
947
1016
|
{
|
|
948
1017
|
method: "POST",
|
|
@@ -962,9 +1031,9 @@ const userDetails = ({ strapi }) => ({
|
|
|
962
1031
|
}
|
|
963
1032
|
}
|
|
964
1033
|
});
|
|
965
|
-
const notificationChannels = ({ strapi }) => ({
|
|
1034
|
+
const notificationChannels = ({ strapi: strapi2 }) => ({
|
|
966
1035
|
async getNotificationChannels(ctx) {
|
|
967
|
-
const notificationChannelsData = await service({ strapi }).makeBackendRequest(
|
|
1036
|
+
const notificationChannelsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
968
1037
|
`/user/integrations`,
|
|
969
1038
|
{
|
|
970
1039
|
method: "GET"
|
|
@@ -974,7 +1043,7 @@ const notificationChannels = ({ strapi }) => ({
|
|
|
974
1043
|
},
|
|
975
1044
|
async createNotificationChannel(ctx) {
|
|
976
1045
|
const { ...data } = ctx.request.body;
|
|
977
|
-
const notificationChannelsData = await service({ strapi }).makeBackendRequest(
|
|
1046
|
+
const notificationChannelsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
978
1047
|
`/user/integrations`,
|
|
979
1048
|
{
|
|
980
1049
|
method: "POST",
|
|
@@ -984,7 +1053,7 @@ const notificationChannels = ({ strapi }) => ({
|
|
|
984
1053
|
ctx.body = { notificationChannelsData };
|
|
985
1054
|
},
|
|
986
1055
|
async getSupportedIntegrations(ctx) {
|
|
987
|
-
const supportedIntegrationsData = await service({ strapi }).makeBackendRequest(
|
|
1056
|
+
const supportedIntegrationsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
988
1057
|
`/integrations/supported`,
|
|
989
1058
|
{
|
|
990
1059
|
method: "GET"
|
|
@@ -994,7 +1063,7 @@ const notificationChannels = ({ strapi }) => ({
|
|
|
994
1063
|
},
|
|
995
1064
|
async testNotificationChannel(ctx) {
|
|
996
1065
|
const { id } = ctx.params;
|
|
997
|
-
const testResult = await service({ strapi }).makeBackendRequest(
|
|
1066
|
+
const testResult = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
998
1067
|
`/user/integrations/${id}/test`,
|
|
999
1068
|
{
|
|
1000
1069
|
method: "POST"
|
|
@@ -1005,7 +1074,7 @@ const notificationChannels = ({ strapi }) => ({
|
|
|
1005
1074
|
async updateNotificationChannel(ctx) {
|
|
1006
1075
|
const { id } = ctx.params;
|
|
1007
1076
|
const { ...data } = ctx.request.body;
|
|
1008
|
-
const updatedChannel = await service({ strapi }).makeBackendRequest(
|
|
1077
|
+
const updatedChannel = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
1009
1078
|
`/user/integrations/${id}`,
|
|
1010
1079
|
{
|
|
1011
1080
|
method: "PUT",
|
|
@@ -1016,22 +1085,22 @@ const notificationChannels = ({ strapi }) => ({
|
|
|
1016
1085
|
},
|
|
1017
1086
|
async deleteNotificationChannel(ctx) {
|
|
1018
1087
|
const { id } = ctx.params;
|
|
1019
|
-
const deleteResult = await service({ strapi }).makeBackendRequest(`/user/integrations/${id}`, {
|
|
1088
|
+
const deleteResult = await service({ strapi: strapi2 }).makeBackendRequest(`/user/integrations/${id}`, {
|
|
1020
1089
|
method: "DELETE"
|
|
1021
1090
|
});
|
|
1022
1091
|
ctx.body = { deleteResult };
|
|
1023
1092
|
}
|
|
1024
1093
|
});
|
|
1025
|
-
const tags = ({ strapi }) => ({
|
|
1094
|
+
const tags = ({ strapi: strapi2 }) => ({
|
|
1026
1095
|
async getTags(ctx) {
|
|
1027
|
-
const tagsData = await service({ strapi }).makeBackendRequest(`/user/tags`, {
|
|
1096
|
+
const tagsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/tags`, {
|
|
1028
1097
|
method: "GET"
|
|
1029
1098
|
});
|
|
1030
1099
|
ctx.body = { tagsData };
|
|
1031
1100
|
},
|
|
1032
1101
|
async getTagsByID(ctx) {
|
|
1033
1102
|
const id = ctx.params.id;
|
|
1034
|
-
const tagsData = await service({ strapi }).makeBackendRequest(
|
|
1103
|
+
const tagsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
1035
1104
|
`/user/tags/${id}`,
|
|
1036
1105
|
{
|
|
1037
1106
|
method: "GET"
|
|
@@ -1040,10 +1109,10 @@ const tags = ({ strapi }) => ({
|
|
|
1040
1109
|
ctx.body = { tagsData };
|
|
1041
1110
|
},
|
|
1042
1111
|
async createTag(ctx) {
|
|
1043
|
-
const { name, color } = ctx.request.body;
|
|
1044
|
-
const tagsData = await service({ strapi }).makeBackendRequest(`/user/tags`, {
|
|
1112
|
+
const { name: name2, color } = ctx.request.body;
|
|
1113
|
+
const tagsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/tags`, {
|
|
1045
1114
|
method: "POST",
|
|
1046
|
-
body: JSON.stringify({ name, color })
|
|
1115
|
+
body: JSON.stringify({ name: name2, color })
|
|
1047
1116
|
});
|
|
1048
1117
|
ctx.body = { tagsData };
|
|
1049
1118
|
},
|
|
@@ -1055,7 +1124,7 @@ const tags = ({ strapi }) => ({
|
|
|
1055
1124
|
ctx.body = { error: "Tag ID is required" };
|
|
1056
1125
|
return;
|
|
1057
1126
|
}
|
|
1058
|
-
const tagsData = await service({ strapi }).makeBackendRequest(
|
|
1127
|
+
const tagsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
1059
1128
|
`/user/tags/${id}`,
|
|
1060
1129
|
{
|
|
1061
1130
|
method: "PUT",
|
|
@@ -1066,7 +1135,7 @@ const tags = ({ strapi }) => ({
|
|
|
1066
1135
|
},
|
|
1067
1136
|
async deleteTags(ctx) {
|
|
1068
1137
|
const id = ctx.params.id;
|
|
1069
|
-
const tagsData = await service({ strapi }).makeBackendRequest(
|
|
1138
|
+
const tagsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
1070
1139
|
`/user/tags/${id}`,
|
|
1071
1140
|
{
|
|
1072
1141
|
method: "DELETE"
|
package/dist/server/index.mjs
CHANGED
|
@@ -1,27 +1,42 @@
|
|
|
1
|
-
const bootstrap = ({ strapi }) => {
|
|
2
|
-
};
|
|
3
|
-
const destroy = ({ strapi }) => {
|
|
4
|
-
};
|
|
5
|
-
const register = ({ strapi }) => {
|
|
6
|
-
};
|
|
7
|
-
const config = {
|
|
8
|
-
default: {},
|
|
9
|
-
validator() {
|
|
10
|
-
}
|
|
11
|
-
};
|
|
12
|
-
const contentTypes = {};
|
|
13
|
-
const controller = ({ strapi }) => ({
|
|
14
|
-
index(ctx) {
|
|
15
|
-
ctx.body = strapi.plugin("upsnap").service("service").getWelcomeMessage();
|
|
16
|
-
}
|
|
17
|
-
});
|
|
18
1
|
const BACKEND_URL = "https://api.upsnap.ai/v1";
|
|
19
2
|
const LIGHTHOUSE_CHECKS = ["performance", "accessibility", "bestPractices", "seo", "pwa"];
|
|
20
|
-
const
|
|
3
|
+
const version = "1.0.11";
|
|
4
|
+
const repository = { "type": "git", "url": "https://github.com/Appfoster/upsnap-strapi" };
|
|
5
|
+
const keywords = [];
|
|
6
|
+
const type = "commonjs";
|
|
7
|
+
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" } };
|
|
8
|
+
const files = ["dist"];
|
|
9
|
+
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" };
|
|
10
|
+
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" };
|
|
11
|
+
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" };
|
|
12
|
+
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" };
|
|
13
|
+
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." };
|
|
14
|
+
const name = "@upsnap/strapi";
|
|
15
|
+
const description = "Complete website health monitoring for Strapi, including uptime, SSL certificates, broken links, performance metrics, domain health, and mixed content issues.";
|
|
16
|
+
const license = "MIT";
|
|
17
|
+
const author = "Upsnap <support@upsnap.ai>";
|
|
18
|
+
const packageJson = {
|
|
19
|
+
version,
|
|
20
|
+
repository,
|
|
21
|
+
keywords,
|
|
22
|
+
type,
|
|
23
|
+
exports: exports$1,
|
|
24
|
+
files,
|
|
25
|
+
scripts,
|
|
26
|
+
dependencies,
|
|
27
|
+
devDependencies,
|
|
28
|
+
peerDependencies,
|
|
29
|
+
strapi,
|
|
30
|
+
name,
|
|
31
|
+
description,
|
|
32
|
+
license,
|
|
33
|
+
author
|
|
34
|
+
};
|
|
35
|
+
const service = ({ strapi: strapi2 }) => ({
|
|
21
36
|
getWelcomeMessage() {
|
|
22
37
|
return "Welcome to Strapi π";
|
|
23
38
|
},
|
|
24
|
-
settingsStore:
|
|
39
|
+
settingsStore: strapi2.store({
|
|
25
40
|
type: "plugin",
|
|
26
41
|
name: "upsnap",
|
|
27
42
|
key: "settings"
|
|
@@ -59,11 +74,65 @@ const service = ({ strapi }) => ({
|
|
|
59
74
|
data: await response.arrayBuffer(),
|
|
60
75
|
headers: response.headers
|
|
61
76
|
};
|
|
77
|
+
},
|
|
78
|
+
async trackInstallation() {
|
|
79
|
+
try {
|
|
80
|
+
const settings2 = await this.settingsStore.get();
|
|
81
|
+
if (settings2?.installationTracked) {
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const pluginVersion = packageJson.version;
|
|
85
|
+
const strapiVersion = strapi2.config.get("info.strapi");
|
|
86
|
+
const siteUrl = strapi2.config.get("server.url") || `http://${strapi2.config.get("server.host") || "localhost"}:${strapi2.config.get("server.port") || 1337}`;
|
|
87
|
+
const response = await this.makeBackendRequest(
|
|
88
|
+
"/installation-data",
|
|
89
|
+
{
|
|
90
|
+
method: "POST",
|
|
91
|
+
body: JSON.stringify({
|
|
92
|
+
platform: "strapi",
|
|
93
|
+
details: {
|
|
94
|
+
version: pluginVersion,
|
|
95
|
+
site_url: siteUrl,
|
|
96
|
+
strapi_version: strapiVersion
|
|
97
|
+
}
|
|
98
|
+
})
|
|
99
|
+
},
|
|
100
|
+
true
|
|
101
|
+
);
|
|
102
|
+
if (response?.status === "success") {
|
|
103
|
+
await this.settingsStore.set({
|
|
104
|
+
value: {
|
|
105
|
+
...settings2,
|
|
106
|
+
installationTracked: true
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
} catch (error) {
|
|
111
|
+
console.log("UpSnap: Failed to track installation data ", error);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
const bootstrap = async ({ strapi: strapi2 }) => {
|
|
116
|
+
await service({ strapi: strapi2 }).trackInstallation();
|
|
117
|
+
};
|
|
118
|
+
const destroy = ({ strapi: strapi2 }) => {
|
|
119
|
+
};
|
|
120
|
+
const register = ({ strapi: strapi2 }) => {
|
|
121
|
+
};
|
|
122
|
+
const config = {
|
|
123
|
+
default: {},
|
|
124
|
+
validator() {
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
const contentTypes = {};
|
|
128
|
+
const controller = ({ strapi: strapi2 }) => ({
|
|
129
|
+
index(ctx) {
|
|
130
|
+
ctx.body = strapi2.plugin("upsnap").service("service").getWelcomeMessage();
|
|
62
131
|
}
|
|
63
132
|
});
|
|
64
|
-
const settings = ({ strapi }) => ({
|
|
133
|
+
const settings = ({ strapi: strapi2 }) => ({
|
|
65
134
|
async get(ctx) {
|
|
66
|
-
const settings2 = await service({ strapi }).settingsStore.get();
|
|
135
|
+
const settings2 = await service({ strapi: strapi2 }).settingsStore.get();
|
|
67
136
|
ctx.body = {
|
|
68
137
|
token: settings2?.token ?? null,
|
|
69
138
|
primaryMonitorId: settings2?.primaryMonitorId ?? null
|
|
@@ -72,7 +141,7 @@ const settings = ({ strapi }) => ({
|
|
|
72
141
|
async set(ctx) {
|
|
73
142
|
const { token, logOut } = ctx.request.body;
|
|
74
143
|
if (!logOut) {
|
|
75
|
-
const isValidData = await service({ strapi }).makeBackendRequest("/tokens/validate", {
|
|
144
|
+
const isValidData = await service({ strapi: strapi2 }).makeBackendRequest("/tokens/validate", {
|
|
76
145
|
method: "POST",
|
|
77
146
|
body: JSON.stringify({ token })
|
|
78
147
|
}, true);
|
|
@@ -81,7 +150,7 @@ const settings = ({ strapi }) => ({
|
|
|
81
150
|
return;
|
|
82
151
|
}
|
|
83
152
|
}
|
|
84
|
-
const store = service({ strapi }).settingsStore;
|
|
153
|
+
const store = service({ strapi: strapi2 }).settingsStore;
|
|
85
154
|
const current = await store.get() || {};
|
|
86
155
|
await store.set({
|
|
87
156
|
value: {
|
|
@@ -93,7 +162,7 @@ const settings = ({ strapi }) => ({
|
|
|
93
162
|
},
|
|
94
163
|
async setPrimaryMonitorId(ctx) {
|
|
95
164
|
const { monitorId } = ctx.request.body;
|
|
96
|
-
const store = service({ strapi }).settingsStore;
|
|
165
|
+
const store = service({ strapi: strapi2 }).settingsStore;
|
|
97
166
|
const current = await store.get() || {};
|
|
98
167
|
await store.set({
|
|
99
168
|
value: {
|
|
@@ -104,7 +173,7 @@ const settings = ({ strapi }) => ({
|
|
|
104
173
|
ctx.body = { ok: true };
|
|
105
174
|
},
|
|
106
175
|
async getPrimaryMonitorId(ctx) {
|
|
107
|
-
const settings2 = await service({ strapi }).settingsStore.get();
|
|
176
|
+
const settings2 = await service({ strapi: strapi2 }).settingsStore.get();
|
|
108
177
|
ctx.body = { primaryMonitorId: settings2?.primaryMonitorId };
|
|
109
178
|
}
|
|
110
179
|
});
|
|
@@ -332,10 +401,10 @@ function buildBrokenLinksErrorResponse(raw) {
|
|
|
332
401
|
data: raw
|
|
333
402
|
};
|
|
334
403
|
}
|
|
335
|
-
const monitor = ({ strapi }) => ({
|
|
404
|
+
const monitor = ({ strapi: strapi2 }) => ({
|
|
336
405
|
async getById(ctx) {
|
|
337
406
|
const monitorId = ctx.params.id;
|
|
338
|
-
const token = await service({ strapi }).getToken();
|
|
407
|
+
const token = await service({ strapi: strapi2 }).getToken();
|
|
339
408
|
const monitorResponse = await fetch(`${BACKEND_URL}/user/monitors/${monitorId}`, {
|
|
340
409
|
method: "GET",
|
|
341
410
|
headers: {
|
|
@@ -347,7 +416,7 @@ const monitor = ({ strapi }) => ({
|
|
|
347
416
|
ctx.body = { monitor: monitor2 };
|
|
348
417
|
},
|
|
349
418
|
async get(ctx) {
|
|
350
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(
|
|
419
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
351
420
|
`/user/monitors`,
|
|
352
421
|
{
|
|
353
422
|
method: "GET"
|
|
@@ -358,7 +427,7 @@ const monitor = ({ strapi }) => ({
|
|
|
358
427
|
async getMonitorUptimeStats(ctx) {
|
|
359
428
|
const monitorId = ctx.params.id;
|
|
360
429
|
const { region } = ctx.query;
|
|
361
|
-
const uptimeStatsData = await service({ strapi }).makeBackendRequest(
|
|
430
|
+
const uptimeStatsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
362
431
|
`/user/monitors/${monitorId}/uptime-stats?uptime_stats_time_frames=day,week,month®ion=${region}`,
|
|
363
432
|
{
|
|
364
433
|
method: "GET"
|
|
@@ -369,7 +438,7 @@ const monitor = ({ strapi }) => ({
|
|
|
369
438
|
async getMonitorHistogram(ctx) {
|
|
370
439
|
const monitorId = ctx.params.id;
|
|
371
440
|
const { region } = ctx.query;
|
|
372
|
-
const histogramData = await service({ strapi }).makeBackendRequest(
|
|
441
|
+
const histogramData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
373
442
|
`/user/monitors/${monitorId}/histogram?region=${region}`,
|
|
374
443
|
{
|
|
375
444
|
method: "GET"
|
|
@@ -379,7 +448,7 @@ const monitor = ({ strapi }) => ({
|
|
|
379
448
|
},
|
|
380
449
|
async getHealthChecks(ctx) {
|
|
381
450
|
const { monitorUrl } = ctx.request.body;
|
|
382
|
-
const healthCheckData = await service({ strapi }).makeBackendRequest(`/healthcheck`, {
|
|
451
|
+
const healthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(`/healthcheck`, {
|
|
383
452
|
method: "POST",
|
|
384
453
|
headers: {
|
|
385
454
|
"X-Requested-From": "craft"
|
|
@@ -395,7 +464,7 @@ const monitor = ({ strapi }) => ({
|
|
|
395
464
|
},
|
|
396
465
|
async getUptimeHealthCheck(ctx) {
|
|
397
466
|
const { monitorUrl } = ctx.request.body;
|
|
398
|
-
const uptimeHealthCheckData = await service({ strapi }).makeBackendRequest(
|
|
467
|
+
const uptimeHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
399
468
|
`/healthcheck`,
|
|
400
469
|
{
|
|
401
470
|
method: "POST",
|
|
@@ -420,7 +489,7 @@ const monitor = ({ strapi }) => ({
|
|
|
420
489
|
},
|
|
421
490
|
async getSslHealthCheck(ctx) {
|
|
422
491
|
const { monitorUrl } = ctx.request.body;
|
|
423
|
-
const sslHealthCheckData = await service({ strapi }).makeBackendRequest(`/healthcheck`, {
|
|
492
|
+
const sslHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(`/healthcheck`, {
|
|
424
493
|
method: "POST",
|
|
425
494
|
headers: {
|
|
426
495
|
"X-Requested-From": "craft"
|
|
@@ -442,7 +511,7 @@ const monitor = ({ strapi }) => ({
|
|
|
442
511
|
},
|
|
443
512
|
async getDomainHealthCheck(ctx) {
|
|
444
513
|
const { monitorUrl } = ctx.request.body;
|
|
445
|
-
const domainHealthCheckData = await service({ strapi }).makeBackendRequest(
|
|
514
|
+
const domainHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
446
515
|
`/healthcheck`,
|
|
447
516
|
{
|
|
448
517
|
method: "POST",
|
|
@@ -467,7 +536,7 @@ const monitor = ({ strapi }) => ({
|
|
|
467
536
|
},
|
|
468
537
|
async getLighthouseHealthCheck(ctx) {
|
|
469
538
|
const { monitorUrl, strategy } = ctx.request.body;
|
|
470
|
-
const lighthouseHealthCheckData = await service({ strapi }).makeBackendRequest(
|
|
539
|
+
const lighthouseHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
471
540
|
`/healthcheck`,
|
|
472
541
|
{
|
|
473
542
|
method: "POST",
|
|
@@ -497,7 +566,7 @@ const monitor = ({ strapi }) => ({
|
|
|
497
566
|
},
|
|
498
567
|
async getBrokenLinksHealthCheck(ctx) {
|
|
499
568
|
const { monitorUrl } = ctx.request.body;
|
|
500
|
-
const brokenLinksHealthCheckData = await service({ strapi }).makeBackendRequest(
|
|
569
|
+
const brokenLinksHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
501
570
|
`/healthcheck`,
|
|
502
571
|
{
|
|
503
572
|
method: "POST",
|
|
@@ -526,7 +595,7 @@ const monitor = ({ strapi }) => ({
|
|
|
526
595
|
},
|
|
527
596
|
async getMixedContentHealthCheck(ctx) {
|
|
528
597
|
const { monitorUrl } = ctx.request.body;
|
|
529
|
-
const mixedContentHealthCheckData = await service({ strapi }).makeBackendRequest(
|
|
598
|
+
const mixedContentHealthCheckData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
530
599
|
`/healthcheck`,
|
|
531
600
|
{
|
|
532
601
|
method: "POST",
|
|
@@ -545,7 +614,7 @@ const monitor = ({ strapi }) => ({
|
|
|
545
614
|
async getMonitorResponseTime(ctx) {
|
|
546
615
|
const monitorId = ctx.params.id;
|
|
547
616
|
const { start, end, region } = ctx.query;
|
|
548
|
-
const responseTimeData = await service({ strapi }).makeBackendRequest(
|
|
617
|
+
const responseTimeData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
549
618
|
`/user/monitors/${monitorId}/response-time?start=${start}&end=${end}®ion=${region || "default"}`,
|
|
550
619
|
{
|
|
551
620
|
method: "GET"
|
|
@@ -555,7 +624,7 @@ const monitor = ({ strapi }) => ({
|
|
|
555
624
|
},
|
|
556
625
|
async getMonitorIncidents(ctx) {
|
|
557
626
|
const monitorId = ctx.params.id;
|
|
558
|
-
const incidentsData = await service({ strapi }).makeBackendRequest(
|
|
627
|
+
const incidentsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
559
628
|
`/user/monitors/incidents?monitorId=${monitorId}&page=1&page_size=20&time_range=7D`,
|
|
560
629
|
{
|
|
561
630
|
method: "GET"
|
|
@@ -565,7 +634,7 @@ const monitor = ({ strapi }) => ({
|
|
|
565
634
|
},
|
|
566
635
|
async getMonitorSettings(ctx) {
|
|
567
636
|
const monitorId = ctx.params.id;
|
|
568
|
-
const monitorSettingsData = await service({ strapi }).makeBackendRequest(
|
|
637
|
+
const monitorSettingsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
569
638
|
`/user/monitors/settings?id=${monitorId}`,
|
|
570
639
|
{
|
|
571
640
|
method: "GET"
|
|
@@ -575,7 +644,7 @@ const monitor = ({ strapi }) => ({
|
|
|
575
644
|
},
|
|
576
645
|
async createMonitor(ctx) {
|
|
577
646
|
const { ...data } = ctx.request.body;
|
|
578
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(`/user/monitors`, {
|
|
647
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/monitors`, {
|
|
579
648
|
method: "POST",
|
|
580
649
|
body: JSON.stringify(data)
|
|
581
650
|
});
|
|
@@ -584,7 +653,7 @@ const monitor = ({ strapi }) => ({
|
|
|
584
653
|
async updateMonitor(ctx) {
|
|
585
654
|
const monitorId = ctx.params.id;
|
|
586
655
|
const { ...data } = ctx.request.body;
|
|
587
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(
|
|
656
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
588
657
|
`/user/monitors/${monitorId}`,
|
|
589
658
|
{
|
|
590
659
|
method: "PUT",
|
|
@@ -595,7 +664,7 @@ const monitor = ({ strapi }) => ({
|
|
|
595
664
|
},
|
|
596
665
|
async deleteMonitor(ctx) {
|
|
597
666
|
const monitorId = ctx.params.id;
|
|
598
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(
|
|
667
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
599
668
|
`/user/monitors/${monitorId}`,
|
|
600
669
|
{
|
|
601
670
|
method: "DELETE"
|
|
@@ -605,7 +674,7 @@ const monitor = ({ strapi }) => ({
|
|
|
605
674
|
},
|
|
606
675
|
async deleteMonitors(ctx) {
|
|
607
676
|
const { monitorIds } = ctx.request.body;
|
|
608
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(`/user/monitors`, {
|
|
677
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/monitors`, {
|
|
609
678
|
method: "PATCH",
|
|
610
679
|
body: JSON.stringify({ ids: monitorIds, action: "delete" })
|
|
611
680
|
});
|
|
@@ -640,7 +709,7 @@ const monitor = ({ strapi }) => ({
|
|
|
640
709
|
if (search) queryParams.set("search", search);
|
|
641
710
|
if (sortBy) queryParams.set("sort_by", sortBy);
|
|
642
711
|
if (sortOrder) queryParams.set("sort_order", sortOrder);
|
|
643
|
-
const incidentsData = await service({ strapi }).makeBackendRequest(
|
|
712
|
+
const incidentsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
644
713
|
`/user/monitors/incidents?${queryParams.toString()}`,
|
|
645
714
|
{
|
|
646
715
|
method: "GET"
|
|
@@ -650,20 +719,20 @@ const monitor = ({ strapi }) => ({
|
|
|
650
719
|
},
|
|
651
720
|
async exportIncidents(ctx) {
|
|
652
721
|
try {
|
|
653
|
-
const { monitorId, region, type, start_time, end_time, search, file_type } = ctx.request.body;
|
|
722
|
+
const { monitorId, region, type: type2, start_time, end_time, search, file_type } = ctx.request.body;
|
|
654
723
|
if (!monitorId) {
|
|
655
724
|
ctx.status = 400;
|
|
656
725
|
ctx.body = { error: "monitorId is required" };
|
|
657
726
|
return;
|
|
658
727
|
}
|
|
659
728
|
const queryParams = new URLSearchParams();
|
|
660
|
-
if (
|
|
729
|
+
if (type2) queryParams.set("type", type2);
|
|
661
730
|
if (start_time) queryParams.set("start_time", start_time);
|
|
662
731
|
if (end_time) queryParams.set("end_time", end_time);
|
|
663
732
|
if (search) queryParams.set("search", search);
|
|
664
733
|
if (file_type) queryParams.set("file_type", file_type);
|
|
665
734
|
if (region) queryParams.set("region", region);
|
|
666
|
-
const response = await service({ strapi }).makeBackendRequest(
|
|
735
|
+
const response = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
667
736
|
`/user/monitors/${monitorId}/incidents/export?${queryParams.toString()}`,
|
|
668
737
|
{ method: "GET" }
|
|
669
738
|
);
|
|
@@ -687,16 +756,16 @@ const monitor = ({ strapi }) => ({
|
|
|
687
756
|
}
|
|
688
757
|
}
|
|
689
758
|
});
|
|
690
|
-
const statusPage = ({ strapi }) => ({
|
|
759
|
+
const statusPage = ({ strapi: strapi2 }) => ({
|
|
691
760
|
async getStatusPages(ctx) {
|
|
692
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(`/user/status-pages`, {
|
|
761
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/status-pages`, {
|
|
693
762
|
method: "GET"
|
|
694
763
|
});
|
|
695
764
|
ctx.body = { statusPagesData };
|
|
696
765
|
},
|
|
697
766
|
async getStatusPagesByID(ctx) {
|
|
698
767
|
const id = ctx.params.id;
|
|
699
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(
|
|
768
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
700
769
|
`/user/status-pages/${id}`,
|
|
701
770
|
{
|
|
702
771
|
method: "GET"
|
|
@@ -705,16 +774,16 @@ const statusPage = ({ strapi }) => ({
|
|
|
705
774
|
ctx.body = { statusPagesData };
|
|
706
775
|
},
|
|
707
776
|
async saveStatusPages(ctx) {
|
|
708
|
-
const { name, monitor_ids, is_published } = ctx.request.body;
|
|
709
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(`/user/status-pages`, {
|
|
777
|
+
const { name: name2, monitor_ids, is_published } = ctx.request.body;
|
|
778
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/status-pages`, {
|
|
710
779
|
method: "POST",
|
|
711
|
-
body: JSON.stringify({ name, monitor_ids, is_published })
|
|
780
|
+
body: JSON.stringify({ name: name2, monitor_ids, is_published })
|
|
712
781
|
});
|
|
713
782
|
ctx.body = { statusPagesData };
|
|
714
783
|
},
|
|
715
784
|
async updateStatusPages(ctx) {
|
|
716
785
|
const { id, ...data } = ctx.request.body;
|
|
717
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(
|
|
786
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
718
787
|
`/user/status-pages/${id}`,
|
|
719
788
|
{
|
|
720
789
|
method: "PUT",
|
|
@@ -725,7 +794,7 @@ const statusPage = ({ strapi }) => ({
|
|
|
725
794
|
},
|
|
726
795
|
async resetLink(ctx) {
|
|
727
796
|
const { id } = ctx.request.body;
|
|
728
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(
|
|
797
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
729
798
|
`/user/status-pages/${id}/reset`,
|
|
730
799
|
{
|
|
731
800
|
method: "POST"
|
|
@@ -735,7 +804,7 @@ const statusPage = ({ strapi }) => ({
|
|
|
735
804
|
},
|
|
736
805
|
async deleteStatusPages(ctx) {
|
|
737
806
|
const id = ctx.params.id;
|
|
738
|
-
const statusPagesData = await service({ strapi }).makeBackendRequest(
|
|
807
|
+
const statusPagesData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
739
808
|
`/user/status-pages/${id}`,
|
|
740
809
|
{
|
|
741
810
|
method: "DELETE"
|
|
@@ -744,17 +813,17 @@ const statusPage = ({ strapi }) => ({
|
|
|
744
813
|
ctx.body = { statusPagesData };
|
|
745
814
|
}
|
|
746
815
|
});
|
|
747
|
-
const regions = ({ strapi }) => ({
|
|
816
|
+
const regions = ({ strapi: strapi2 }) => ({
|
|
748
817
|
async getRegions(ctx) {
|
|
749
|
-
const regionsData = await service({ strapi }).makeBackendRequest(`/regions`, {
|
|
818
|
+
const regionsData = await service({ strapi: strapi2 }).makeBackendRequest(`/regions`, {
|
|
750
819
|
method: "GET"
|
|
751
820
|
});
|
|
752
821
|
ctx.body = { regionsData };
|
|
753
822
|
}
|
|
754
823
|
});
|
|
755
|
-
const userDetailsService = ({ strapi }) => ({
|
|
824
|
+
const userDetailsService = ({ strapi: strapi2 }) => ({
|
|
756
825
|
async createUserApiToken(sessionToken) {
|
|
757
|
-
const apiTokens = await service({ strapi }).makeBackendRequest(
|
|
826
|
+
const apiTokens = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
758
827
|
`/tokens/generate`,
|
|
759
828
|
{
|
|
760
829
|
method: "POST",
|
|
@@ -774,7 +843,7 @@ const userDetailsService = ({ strapi }) => ({
|
|
|
774
843
|
return null;
|
|
775
844
|
},
|
|
776
845
|
async getUserApiToken(sessionToken) {
|
|
777
|
-
const apiTokens = await service({ strapi }).makeBackendRequest(
|
|
846
|
+
const apiTokens = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
778
847
|
`/tokens`,
|
|
779
848
|
{
|
|
780
849
|
method: "GET"
|
|
@@ -843,7 +912,7 @@ const userDetailsService = ({ strapi }) => ({
|
|
|
843
912
|
}
|
|
844
913
|
}
|
|
845
914
|
};
|
|
846
|
-
const monitorsData = await service({ strapi }).makeBackendRequest(`/user/monitors`, {
|
|
915
|
+
const monitorsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/monitors`, {
|
|
847
916
|
method: "POST",
|
|
848
917
|
body: JSON.stringify(payload)
|
|
849
918
|
}, true, apiToken);
|
|
@@ -858,9 +927,9 @@ const userDetailsService = ({ strapi }) => ({
|
|
|
858
927
|
}
|
|
859
928
|
}
|
|
860
929
|
});
|
|
861
|
-
const userDetails = ({ strapi }) => ({
|
|
930
|
+
const userDetails = ({ strapi: strapi2 }) => ({
|
|
862
931
|
async getUserDetails(ctx) {
|
|
863
|
-
const userDetailsData = await service({ strapi }).makeBackendRequest(`/user/details`, {
|
|
932
|
+
const userDetailsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/details`, {
|
|
864
933
|
method: "GET"
|
|
865
934
|
});
|
|
866
935
|
ctx.body = { userDetailsData };
|
|
@@ -868,7 +937,7 @@ const userDetails = ({ strapi }) => ({
|
|
|
868
937
|
async signUp(ctx) {
|
|
869
938
|
try {
|
|
870
939
|
const { email, password, source, site_url, fullName } = ctx.request.body;
|
|
871
|
-
const registerData = await service({ strapi }).makeBackendRequest(
|
|
940
|
+
const registerData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
872
941
|
`/user/register`,
|
|
873
942
|
{
|
|
874
943
|
method: "POST",
|
|
@@ -882,13 +951,13 @@ const userDetails = ({ strapi }) => ({
|
|
|
882
951
|
true
|
|
883
952
|
);
|
|
884
953
|
if (registerData?.data?.token) {
|
|
885
|
-
const apiToken = await userDetailsService({ strapi }).getUserApiToken(registerData?.data?.token);
|
|
886
|
-
const monitorId = await userDetailsService({ strapi }).createInitialMonitor(site_url, apiToken);
|
|
954
|
+
const apiToken = await userDetailsService({ strapi: strapi2 }).getUserApiToken(registerData?.data?.token);
|
|
955
|
+
const monitorId = await userDetailsService({ strapi: strapi2 }).createInitialMonitor(site_url, apiToken);
|
|
887
956
|
if (!apiToken || !monitorId) {
|
|
888
957
|
ctx.body = { ok: false, message: "Error creating API token or Monitor" };
|
|
889
958
|
return;
|
|
890
959
|
}
|
|
891
|
-
const store = service({ strapi }).settingsStore;
|
|
960
|
+
const store = service({ strapi: strapi2 }).settingsStore;
|
|
892
961
|
const current = await store.get() || {};
|
|
893
962
|
await store.set({
|
|
894
963
|
value: {
|
|
@@ -908,7 +977,7 @@ const userDetails = ({ strapi }) => ({
|
|
|
908
977
|
async signIn(ctx) {
|
|
909
978
|
try {
|
|
910
979
|
const { email, password } = ctx.request.body;
|
|
911
|
-
const loginData = await service({ strapi }).makeBackendRequest(
|
|
980
|
+
const loginData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
912
981
|
`/user/login`,
|
|
913
982
|
{
|
|
914
983
|
method: "POST",
|
|
@@ -920,8 +989,8 @@ const userDetails = ({ strapi }) => ({
|
|
|
920
989
|
true
|
|
921
990
|
);
|
|
922
991
|
if (loginData?.data?.token) {
|
|
923
|
-
const apiToken = await userDetailsService({ strapi }).getUserApiToken(loginData?.data?.token);
|
|
924
|
-
const store = service({ strapi }).settingsStore;
|
|
992
|
+
const apiToken = await userDetailsService({ strapi: strapi2 }).getUserApiToken(loginData?.data?.token);
|
|
993
|
+
const store = service({ strapi: strapi2 }).settingsStore;
|
|
925
994
|
const current = await store.get() || {};
|
|
926
995
|
await store.set({
|
|
927
996
|
value: {
|
|
@@ -940,7 +1009,7 @@ const userDetails = ({ strapi }) => ({
|
|
|
940
1009
|
async forgotPassword(ctx) {
|
|
941
1010
|
try {
|
|
942
1011
|
const { email } = ctx.request.body;
|
|
943
|
-
const forgotPasswordData = await service({ strapi }).makeBackendRequest(
|
|
1012
|
+
const forgotPasswordData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
944
1013
|
`/user/forgot-password`,
|
|
945
1014
|
{
|
|
946
1015
|
method: "POST",
|
|
@@ -960,9 +1029,9 @@ const userDetails = ({ strapi }) => ({
|
|
|
960
1029
|
}
|
|
961
1030
|
}
|
|
962
1031
|
});
|
|
963
|
-
const notificationChannels = ({ strapi }) => ({
|
|
1032
|
+
const notificationChannels = ({ strapi: strapi2 }) => ({
|
|
964
1033
|
async getNotificationChannels(ctx) {
|
|
965
|
-
const notificationChannelsData = await service({ strapi }).makeBackendRequest(
|
|
1034
|
+
const notificationChannelsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
966
1035
|
`/user/integrations`,
|
|
967
1036
|
{
|
|
968
1037
|
method: "GET"
|
|
@@ -972,7 +1041,7 @@ const notificationChannels = ({ strapi }) => ({
|
|
|
972
1041
|
},
|
|
973
1042
|
async createNotificationChannel(ctx) {
|
|
974
1043
|
const { ...data } = ctx.request.body;
|
|
975
|
-
const notificationChannelsData = await service({ strapi }).makeBackendRequest(
|
|
1044
|
+
const notificationChannelsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
976
1045
|
`/user/integrations`,
|
|
977
1046
|
{
|
|
978
1047
|
method: "POST",
|
|
@@ -982,7 +1051,7 @@ const notificationChannels = ({ strapi }) => ({
|
|
|
982
1051
|
ctx.body = { notificationChannelsData };
|
|
983
1052
|
},
|
|
984
1053
|
async getSupportedIntegrations(ctx) {
|
|
985
|
-
const supportedIntegrationsData = await service({ strapi }).makeBackendRequest(
|
|
1054
|
+
const supportedIntegrationsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
986
1055
|
`/integrations/supported`,
|
|
987
1056
|
{
|
|
988
1057
|
method: "GET"
|
|
@@ -992,7 +1061,7 @@ const notificationChannels = ({ strapi }) => ({
|
|
|
992
1061
|
},
|
|
993
1062
|
async testNotificationChannel(ctx) {
|
|
994
1063
|
const { id } = ctx.params;
|
|
995
|
-
const testResult = await service({ strapi }).makeBackendRequest(
|
|
1064
|
+
const testResult = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
996
1065
|
`/user/integrations/${id}/test`,
|
|
997
1066
|
{
|
|
998
1067
|
method: "POST"
|
|
@@ -1003,7 +1072,7 @@ const notificationChannels = ({ strapi }) => ({
|
|
|
1003
1072
|
async updateNotificationChannel(ctx) {
|
|
1004
1073
|
const { id } = ctx.params;
|
|
1005
1074
|
const { ...data } = ctx.request.body;
|
|
1006
|
-
const updatedChannel = await service({ strapi }).makeBackendRequest(
|
|
1075
|
+
const updatedChannel = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
1007
1076
|
`/user/integrations/${id}`,
|
|
1008
1077
|
{
|
|
1009
1078
|
method: "PUT",
|
|
@@ -1014,22 +1083,22 @@ const notificationChannels = ({ strapi }) => ({
|
|
|
1014
1083
|
},
|
|
1015
1084
|
async deleteNotificationChannel(ctx) {
|
|
1016
1085
|
const { id } = ctx.params;
|
|
1017
|
-
const deleteResult = await service({ strapi }).makeBackendRequest(`/user/integrations/${id}`, {
|
|
1086
|
+
const deleteResult = await service({ strapi: strapi2 }).makeBackendRequest(`/user/integrations/${id}`, {
|
|
1018
1087
|
method: "DELETE"
|
|
1019
1088
|
});
|
|
1020
1089
|
ctx.body = { deleteResult };
|
|
1021
1090
|
}
|
|
1022
1091
|
});
|
|
1023
|
-
const tags = ({ strapi }) => ({
|
|
1092
|
+
const tags = ({ strapi: strapi2 }) => ({
|
|
1024
1093
|
async getTags(ctx) {
|
|
1025
|
-
const tagsData = await service({ strapi }).makeBackendRequest(`/user/tags`, {
|
|
1094
|
+
const tagsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/tags`, {
|
|
1026
1095
|
method: "GET"
|
|
1027
1096
|
});
|
|
1028
1097
|
ctx.body = { tagsData };
|
|
1029
1098
|
},
|
|
1030
1099
|
async getTagsByID(ctx) {
|
|
1031
1100
|
const id = ctx.params.id;
|
|
1032
|
-
const tagsData = await service({ strapi }).makeBackendRequest(
|
|
1101
|
+
const tagsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
1033
1102
|
`/user/tags/${id}`,
|
|
1034
1103
|
{
|
|
1035
1104
|
method: "GET"
|
|
@@ -1038,10 +1107,10 @@ const tags = ({ strapi }) => ({
|
|
|
1038
1107
|
ctx.body = { tagsData };
|
|
1039
1108
|
},
|
|
1040
1109
|
async createTag(ctx) {
|
|
1041
|
-
const { name, color } = ctx.request.body;
|
|
1042
|
-
const tagsData = await service({ strapi }).makeBackendRequest(`/user/tags`, {
|
|
1110
|
+
const { name: name2, color } = ctx.request.body;
|
|
1111
|
+
const tagsData = await service({ strapi: strapi2 }).makeBackendRequest(`/user/tags`, {
|
|
1043
1112
|
method: "POST",
|
|
1044
|
-
body: JSON.stringify({ name, color })
|
|
1113
|
+
body: JSON.stringify({ name: name2, color })
|
|
1045
1114
|
});
|
|
1046
1115
|
ctx.body = { tagsData };
|
|
1047
1116
|
},
|
|
@@ -1053,7 +1122,7 @@ const tags = ({ strapi }) => ({
|
|
|
1053
1122
|
ctx.body = { error: "Tag ID is required" };
|
|
1054
1123
|
return;
|
|
1055
1124
|
}
|
|
1056
|
-
const tagsData = await service({ strapi }).makeBackendRequest(
|
|
1125
|
+
const tagsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
1057
1126
|
`/user/tags/${id}`,
|
|
1058
1127
|
{
|
|
1059
1128
|
method: "PUT",
|
|
@@ -1064,7 +1133,7 @@ const tags = ({ strapi }) => ({
|
|
|
1064
1133
|
},
|
|
1065
1134
|
async deleteTags(ctx) {
|
|
1066
1135
|
const id = ctx.params.id;
|
|
1067
|
-
const tagsData = await service({ strapi }).makeBackendRequest(
|
|
1136
|
+
const tagsData = await service({ strapi: strapi2 }).makeBackendRequest(
|
|
1068
1137
|
`/user/tags/${id}`,
|
|
1069
1138
|
{
|
|
1070
1139
|
method: "DELETE"
|
|
@@ -4,7 +4,7 @@ declare const _default: {
|
|
|
4
4
|
}) => void;
|
|
5
5
|
bootstrap: ({ strapi }: {
|
|
6
6
|
strapi: import('@strapi/types/dist/core').Strapi;
|
|
7
|
-
}) => void
|
|
7
|
+
}) => Promise<void>;
|
|
8
8
|
destroy: ({ strapi }: {
|
|
9
9
|
strapi: import('@strapi/types/dist/core').Strapi;
|
|
10
10
|
}) => void;
|
|
@@ -146,6 +146,7 @@ declare const _default: {
|
|
|
146
146
|
};
|
|
147
147
|
getToken(): Promise<string>;
|
|
148
148
|
makeBackendRequest(endpoint: string, options: RequestInit, forValidation?: boolean, sessionToken?: string): Promise<unknown>;
|
|
149
|
+
trackInstallation(): Promise<void>;
|
|
149
150
|
};
|
|
150
151
|
userDetailsService: ({ strapi }: {
|
|
151
152
|
strapi: import('@strapi/types/dist/core').Strapi;
|
package/package.json
CHANGED