@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.
@@ -1,8 +1,9 @@
1
- const bootstrap = ({ strapi }) => {
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 = strapi.plugin("upsnap").service("service").getWelcomeMessage();
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 service = ({ strapi }) => ({
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: strapi.store({
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&region=${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}&region=${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 (type) queryParams.set("type", type);
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",