@strapi-community/plugin-io 5.3.0 → 5.3.2
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 +23 -21
- package/dist/_chunks/{LivePresencePanel-D_vzQr4B.mjs → LivePresencePanel-GVXmNi4P.mjs} +1 -1
- package/dist/_chunks/{LivePresencePanel-BkeWL4kq.js → LivePresencePanel-vr2O8XCP.js} +1 -1
- package/dist/_chunks/{MonitoringPage-CYGqkzva.js → MonitoringPage-BF7j_o-y.js} +1 -1
- package/dist/_chunks/{MonitoringPage-DKfhYUgU.mjs → MonitoringPage-D_-Z46BS.mjs} +1 -1
- package/dist/_chunks/{OnlineEditorsWidget-Bf8hfVha.js → OnlineEditorsWidget-CIvPvATB.js} +1 -2
- package/dist/_chunks/{OnlineEditorsWidget-RcYLxQke.mjs → OnlineEditorsWidget-HoSM-JvQ.mjs} +2 -3
- package/dist/_chunks/{SettingsPage-Qi0iMaWc.mjs → SettingsPage-CbtGTI5C.mjs} +1 -1
- package/dist/_chunks/{SettingsPage-0k9qPAJZ.js → SettingsPage-Cq__0eJy.js} +1 -1
- package/dist/_chunks/{index-Bw7WjN5H.mjs → index-6OLmXhVw.mjs} +4 -4
- package/dist/_chunks/{index-DVNfszio.js → index-BOmMSyxA.js} +4 -4
- package/dist/admin/index.js +1 -1
- package/dist/admin/index.mjs +1 -1
- package/dist/server/index.js +4243 -232
- package/dist/server/index.mjs +4243 -232
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -898,13 +898,17 @@ Authorization: Bearer <admin-jwt>
|
|
|
898
898
|
|
|
899
899
|
The plugin provides a full admin interface for configuration and monitoring.
|
|
900
900
|
|
|
901
|
-
### Dashboard
|
|
901
|
+
### Dashboard Widgets
|
|
902
902
|
|
|
903
903
|
> **Requires Strapi v5.13+**
|
|
904
904
|
|
|
905
|
-
After installation,
|
|
905
|
+
After installation, live statistics widgets appear on your Strapi admin homepage:
|
|
906
906
|
|
|
907
|
-
|
|
907
|
+
#### Socket.IO Statistics Widget
|
|
908
|
+
|
|
909
|
+

|
|
910
|
+
|
|
911
|
+
**Shows:**
|
|
908
912
|
- Live connection status (pulsing indicator when active)
|
|
909
913
|
- Active connections count
|
|
910
914
|
- Active rooms count
|
|
@@ -913,12 +917,24 @@ After installation, a live statistics widget appears on your Strapi admin homepa
|
|
|
913
917
|
|
|
914
918
|
Updates automatically every 5 seconds.
|
|
915
919
|
|
|
920
|
+
#### Who's Online Widget
|
|
921
|
+
|
|
922
|
+

|
|
923
|
+
|
|
924
|
+
**Shows:**
|
|
925
|
+
- List of currently online admin users
|
|
926
|
+
- User avatars with role badges
|
|
927
|
+
- Online status and last activity
|
|
928
|
+
- Quick access to view all activity
|
|
929
|
+
|
|
916
930
|
### Settings Page
|
|
917
931
|
|
|
918
932
|
Navigate to **Settings > Socket.IO > Settings** for visual configuration:
|
|
919
933
|
|
|
920
934
|
**Path:** `/admin/settings/io/settings`
|
|
921
935
|
|
|
936
|
+

|
|
937
|
+
|
|
922
938
|
#### General Settings
|
|
923
939
|
- Enable/disable the plugin
|
|
924
940
|
- Configure CORS origins
|
|
@@ -956,6 +972,8 @@ Navigate to **Settings > Socket.IO > Monitoring** for live statistics:
|
|
|
956
972
|
|
|
957
973
|
**Path:** `/admin/settings/io/monitoring`
|
|
958
974
|
|
|
975
|
+

|
|
976
|
+
|
|
959
977
|
- View active connections with user details
|
|
960
978
|
- See event logs in real-time
|
|
961
979
|
- Monitor performance metrics (events/second)
|
|
@@ -971,6 +989,8 @@ When editing content in the Content Manager, a **Live Presence** panel appears i
|
|
|
971
989
|
- **Active Editors** - List of other users editing the same content
|
|
972
990
|
- **Typing Indicator** - Shows when someone is typing and in which field
|
|
973
991
|
|
|
992
|
+

|
|
993
|
+
|
|
974
994
|
**How It Works:**
|
|
975
995
|
|
|
976
996
|
1. When you open a content entry, the panel connects via Socket.IO
|
|
@@ -978,24 +998,6 @@ When editing content in the Content Manager, a **Live Presence** panel appears i
|
|
|
978
998
|
3. Typing in any field broadcasts a typing indicator to others
|
|
979
999
|
4. When you leave, others are notified
|
|
980
1000
|
|
|
981
|
-
**Example Display:**
|
|
982
|
-
|
|
983
|
-
```
|
|
984
|
-
+-----------------------------+
|
|
985
|
-
| Live Presence |
|
|
986
|
-
+-----------------------------+
|
|
987
|
-
| [*] Live |
|
|
988
|
-
| Real-time sync active |
|
|
989
|
-
+-----------------------------+
|
|
990
|
-
| ALSO EDITING (1) |
|
|
991
|
-
| +-------------------------+ |
|
|
992
|
-
| | SA Sarah Admin | |
|
|
993
|
-
| | Typing in: title | |
|
|
994
|
-
| | [Typing...] | |
|
|
995
|
-
| +-------------------------+ |
|
|
996
|
-
+-----------------------------+
|
|
997
|
-
```
|
|
998
|
-
|
|
999
1001
|
---
|
|
1000
1002
|
|
|
1001
1003
|
## Monitoring Service
|
|
@@ -5,7 +5,7 @@ import { Flex } from "@strapi/design-system";
|
|
|
5
5
|
import { useFetchClient } from "@strapi/strapi/admin";
|
|
6
6
|
import styled, { css, keyframes } from "styled-components";
|
|
7
7
|
import { io } from "socket.io-client";
|
|
8
|
-
import { P as PLUGIN_ID } from "./index-
|
|
8
|
+
import { P as PLUGIN_ID } from "./index-6OLmXhVw.mjs";
|
|
9
9
|
const pulse = keyframes`
|
|
10
10
|
0%, 100% {
|
|
11
11
|
box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.2);
|
|
@@ -7,7 +7,7 @@ const designSystem = require("@strapi/design-system");
|
|
|
7
7
|
const admin = require("@strapi/strapi/admin");
|
|
8
8
|
const styled = require("styled-components");
|
|
9
9
|
const socket_ioClient = require("socket.io-client");
|
|
10
|
-
const index$1 = require("./index-
|
|
10
|
+
const index$1 = require("./index-BOmMSyxA.js");
|
|
11
11
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
12
12
|
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
|
13
13
|
const pulse = styled.keyframes`
|
|
@@ -6,7 +6,7 @@ const admin = require("@strapi/strapi/admin");
|
|
|
6
6
|
const styled = require("styled-components");
|
|
7
7
|
const designSystem = require("@strapi/design-system");
|
|
8
8
|
const index = require("./index-DkTxsEqL.js");
|
|
9
|
-
const index$1 = require("./index-
|
|
9
|
+
const index$1 = require("./index-BOmMSyxA.js");
|
|
10
10
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
11
11
|
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
|
12
12
|
const UsersIcon = () => /* @__PURE__ */ jsxRuntime.jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", children: /* @__PURE__ */ jsxRuntime.jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15 19.128a9.38 9.38 0 0 0 2.625.372 9.337 9.337 0 0 0 4.121-.952 4.125 4.125 0 0 0-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 0 1 8.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0 1 11.964-3.07M12 6.375a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0Zm8.25 2.25a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z" }) });
|
|
@@ -4,7 +4,7 @@ import { useFetchClient, useNotification } from "@strapi/strapi/admin";
|
|
|
4
4
|
import styled, { css, keyframes } from "styled-components";
|
|
5
5
|
import { Box, Loader, Flex, Field, TextInput, Badge, Typography } from "@strapi/design-system";
|
|
6
6
|
import { u as useIntl } from "./index-CEh8vkxY.mjs";
|
|
7
|
-
import { P as PLUGIN_ID } from "./index-
|
|
7
|
+
import { P as PLUGIN_ID } from "./index-6OLmXhVw.mjs";
|
|
8
8
|
const UsersIcon = () => /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M15 19.128a9.38 9.38 0 0 0 2.625.372 9.337 9.337 0 0 0 4.121-.952 4.125 4.125 0 0 0-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 0 1 8.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0 1 11.964-3.07M12 6.375a3.375 3.375 0 1 1-6.75 0 3.375 3.375 0 0 1 6.75 0Zm8.25 2.25a2.625 2.625 0 1 1-5.25 0 2.625 2.625 0 0 1 5.25 0Z" }) });
|
|
9
9
|
const BoltIcon = () => /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "m3.75 13.5 10.5-11.25L12 10.5h8.25L9.75 21.75 12 13.5H3.75Z" }) });
|
|
10
10
|
const ChartBarIcon = () => /* @__PURE__ */ jsx("svg", { xmlns: "http://www.w3.org/2000/svg", fill: "none", viewBox: "0 0 24 24", strokeWidth: 1.5, stroke: "currentColor", children: /* @__PURE__ */ jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", d: "M3 13.125C3 12.504 3.504 12 4.125 12h2.25c.621 0 1.125.504 1.125 1.125v6.75C7.5 20.496 6.996 21 6.375 21h-2.25A1.125 1.125 0 0 1 3 19.875v-6.75ZM9.75 8.625c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125v11.25c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V8.625ZM16.5 4.125c0-.621.504-1.125 1.125-1.125h2.25C20.496 3 21 3.504 21 4.125v15.75c0 .621-.504 1.125-1.125 1.125h-2.25a1.125 1.125 0 0 1-1.125-1.125V4.125Z" }) });
|
|
@@ -7,7 +7,7 @@ const icons = require("@strapi/icons");
|
|
|
7
7
|
const admin = require("@strapi/strapi/admin");
|
|
8
8
|
const styled = require("styled-components");
|
|
9
9
|
const socket_ioClient = require("socket.io-client");
|
|
10
|
-
const index = require("./index-
|
|
10
|
+
const index = require("./index-BOmMSyxA.js");
|
|
11
11
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
12
12
|
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
|
13
13
|
const pulse = styled.keyframes`
|
|
@@ -338,4 +338,3 @@ const OnlineEditorsWidget = () => {
|
|
|
338
338
|
] });
|
|
339
339
|
};
|
|
340
340
|
exports.OnlineEditorsWidget = OnlineEditorsWidget;
|
|
341
|
-
exports.default = OnlineEditorsWidget;
|
|
@@ -5,7 +5,7 @@ import { Pencil, User, Clock } from "@strapi/icons";
|
|
|
5
5
|
import { useFetchClient } from "@strapi/strapi/admin";
|
|
6
6
|
import styled, { keyframes } from "styled-components";
|
|
7
7
|
import { io } from "socket.io-client";
|
|
8
|
-
import { P as PLUGIN_ID } from "./index-
|
|
8
|
+
import { P as PLUGIN_ID } from "./index-6OLmXhVw.mjs";
|
|
9
9
|
const pulse = keyframes`
|
|
10
10
|
0%, 100% { opacity: 1; }
|
|
11
11
|
50% { opacity: 0.5; }
|
|
@@ -334,6 +334,5 @@ const OnlineEditorsWidget = () => {
|
|
|
334
334
|
] });
|
|
335
335
|
};
|
|
336
336
|
export {
|
|
337
|
-
OnlineEditorsWidget
|
|
338
|
-
OnlineEditorsWidget as default
|
|
337
|
+
OnlineEditorsWidget
|
|
339
338
|
};
|
|
@@ -5,7 +5,7 @@ import { Download, Upload, Check } from "@strapi/icons";
|
|
|
5
5
|
import { useFetchClient, useNotification } from "@strapi/strapi/admin";
|
|
6
6
|
import { u as useIntl } from "./index-CEh8vkxY.mjs";
|
|
7
7
|
import styled from "styled-components";
|
|
8
|
-
import { P as PLUGIN_ID } from "./index-
|
|
8
|
+
import { P as PLUGIN_ID } from "./index-6OLmXhVw.mjs";
|
|
9
9
|
const ResponsiveMain = styled(Main)`
|
|
10
10
|
& > div {
|
|
11
11
|
padding: 16px !important;
|
|
@@ -7,7 +7,7 @@ const icons = require("@strapi/icons");
|
|
|
7
7
|
const admin = require("@strapi/strapi/admin");
|
|
8
8
|
const index = require("./index-DkTxsEqL.js");
|
|
9
9
|
const styled = require("styled-components");
|
|
10
|
-
const index$1 = require("./index-
|
|
10
|
+
const index$1 = require("./index-BOmMSyxA.js");
|
|
11
11
|
const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
|
|
12
12
|
const styled__default = /* @__PURE__ */ _interopDefault(styled);
|
|
13
13
|
const ResponsiveMain = styled__default.default(designSystem.Main)`
|
|
@@ -50,7 +50,7 @@ const index = {
|
|
|
50
50
|
},
|
|
51
51
|
id: `${PLUGIN_ID}-settings`,
|
|
52
52
|
to: `${PLUGIN_ID}/settings`,
|
|
53
|
-
Component: () => import("./SettingsPage-
|
|
53
|
+
Component: () => import("./SettingsPage-CbtGTI5C.mjs").then((mod) => ({ default: mod.SettingsPage }))
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
intlLabel: {
|
|
@@ -59,7 +59,7 @@ const index = {
|
|
|
59
59
|
},
|
|
60
60
|
id: `${PLUGIN_ID}-monitoring`,
|
|
61
61
|
to: `${PLUGIN_ID}/monitoring`,
|
|
62
|
-
Component: () => import("./MonitoringPage-
|
|
62
|
+
Component: () => import("./MonitoringPage-D_-Z46BS.mjs").then((mod) => ({ default: mod.MonitoringPage }))
|
|
63
63
|
}
|
|
64
64
|
]
|
|
65
65
|
);
|
|
@@ -84,7 +84,7 @@ const index = {
|
|
|
84
84
|
defaultMessage: "Who's Online"
|
|
85
85
|
},
|
|
86
86
|
component: async () => {
|
|
87
|
-
const component = await import("./OnlineEditorsWidget-
|
|
87
|
+
const component = await import("./OnlineEditorsWidget-HoSM-JvQ.mjs");
|
|
88
88
|
return component.OnlineEditorsWidget;
|
|
89
89
|
},
|
|
90
90
|
id: "socket-io-online-editors-widget",
|
|
@@ -96,7 +96,7 @@ const index = {
|
|
|
96
96
|
async bootstrap(app) {
|
|
97
97
|
console.log(`[${PLUGIN_ID}] [INFO] Bootstrapping plugin...`);
|
|
98
98
|
try {
|
|
99
|
-
const { default: LivePresencePanel } = await import("./LivePresencePanel-
|
|
99
|
+
const { default: LivePresencePanel } = await import("./LivePresencePanel-GVXmNi4P.mjs");
|
|
100
100
|
const contentManagerPlugin = app.getPlugin("content-manager");
|
|
101
101
|
if (contentManagerPlugin && contentManagerPlugin.apis) {
|
|
102
102
|
contentManagerPlugin.apis.addEditViewSidePanel([LivePresencePanel]);
|
|
@@ -51,7 +51,7 @@ const index = {
|
|
|
51
51
|
},
|
|
52
52
|
id: `${PLUGIN_ID}-settings`,
|
|
53
53
|
to: `${PLUGIN_ID}/settings`,
|
|
54
|
-
Component: () => Promise.resolve().then(() => require("./SettingsPage-
|
|
54
|
+
Component: () => Promise.resolve().then(() => require("./SettingsPage-Cq__0eJy.js")).then((mod) => ({ default: mod.SettingsPage }))
|
|
55
55
|
},
|
|
56
56
|
{
|
|
57
57
|
intlLabel: {
|
|
@@ -60,7 +60,7 @@ const index = {
|
|
|
60
60
|
},
|
|
61
61
|
id: `${PLUGIN_ID}-monitoring`,
|
|
62
62
|
to: `${PLUGIN_ID}/monitoring`,
|
|
63
|
-
Component: () => Promise.resolve().then(() => require("./MonitoringPage-
|
|
63
|
+
Component: () => Promise.resolve().then(() => require("./MonitoringPage-BF7j_o-y.js")).then((mod) => ({ default: mod.MonitoringPage }))
|
|
64
64
|
}
|
|
65
65
|
]
|
|
66
66
|
);
|
|
@@ -85,7 +85,7 @@ const index = {
|
|
|
85
85
|
defaultMessage: "Who's Online"
|
|
86
86
|
},
|
|
87
87
|
component: async () => {
|
|
88
|
-
const component = await Promise.resolve().then(() => require("./OnlineEditorsWidget-
|
|
88
|
+
const component = await Promise.resolve().then(() => require("./OnlineEditorsWidget-CIvPvATB.js"));
|
|
89
89
|
return component.OnlineEditorsWidget;
|
|
90
90
|
},
|
|
91
91
|
id: "socket-io-online-editors-widget",
|
|
@@ -97,7 +97,7 @@ const index = {
|
|
|
97
97
|
async bootstrap(app) {
|
|
98
98
|
console.log(`[${PLUGIN_ID}] [INFO] Bootstrapping plugin...`);
|
|
99
99
|
try {
|
|
100
|
-
const { default: LivePresencePanel } = await Promise.resolve().then(() => require("./LivePresencePanel-
|
|
100
|
+
const { default: LivePresencePanel } = await Promise.resolve().then(() => require("./LivePresencePanel-vr2O8XCP.js"));
|
|
101
101
|
const contentManagerPlugin = app.getPlugin("content-manager");
|
|
102
102
|
if (contentManagerPlugin && contentManagerPlugin.apis) {
|
|
103
103
|
contentManagerPlugin.apis.addEditViewSidePanel([LivePresencePanel]);
|
package/dist/admin/index.js
CHANGED
package/dist/admin/index.mjs
CHANGED