@strapi-community/plugin-io 1.0.0

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.
@@ -0,0 +1,120 @@
1
+ const en = {
2
+ "plugin.name": "Socket.IO",
3
+ "widget.socket-stats.title": "Socket.IO Stats",
4
+ "widget.connections": "Active Connections",
5
+ "widget.rooms": "Active Rooms",
6
+ "widget.eventsPerSec": "Events/sec",
7
+ "widget.totalEvents": "Total Events",
8
+ "widget.viewMonitoring": "View Monitoring",
9
+ "widget.live": "Live",
10
+ "widget.offline": "Offline",
11
+ "settings.title": "Settings",
12
+ "settings.description": "Configure the Socket.IO connection for real-time events",
13
+ "settings.save": "Save",
14
+ "settings.saved": "Saved",
15
+ "settings.saveAndApply": "Save & Apply",
16
+ "settings.success": "Settings saved successfully!",
17
+ "settings.error": "Error saving settings",
18
+ "settings.loadError": "Error loading settings",
19
+ "settings.noRestart": "Changes are applied immediately – no restart required!",
20
+ "settings.export": "Export",
21
+ "settings.import": "Import",
22
+ "settings.exported": "Settings exported successfully!",
23
+ "settings.imported": "Settings imported successfully!",
24
+ "settings.importError": "Import failed",
25
+ "settings.invalidJson": "Invalid settings file!",
26
+ "cors.title": "CORS Settings",
27
+ "cors.description": "Configure which frontends can connect",
28
+ "cors.origins": "Allowed Origins",
29
+ "cors.originsHint": "Add multiple frontend URLs that can connect",
30
+ "cors.add": "Add",
31
+ "cors.credentials": "Allow Credentials",
32
+ "cors.methods": "Allowed HTTP Methods",
33
+ "connection.title": "Connection Settings",
34
+ "connection.description": "Configure connection limits and timeouts",
35
+ "connection.maxConnections": "Max Connections",
36
+ "connection.pingTimeout": "Ping Timeout (ms)",
37
+ "connection.pingInterval": "Ping Interval (ms)",
38
+ "connection.connectionTimeout": "Connection Timeout (ms)",
39
+ "security.title": "Security Settings",
40
+ "security.description": "Configure authentication and rate limiting",
41
+ "security.requireAuth": "Require Authentication",
42
+ "security.rateLimiting": "Enable Rate Limiting",
43
+ "security.maxEventsPerSecond": "Max Events/Second",
44
+ "events.title": "Real-time Events",
45
+ "events.description": "Configure which events are sent for which content types",
46
+ "events.enableAll": "Enable all",
47
+ "events.disableAll": "Disable all",
48
+ "events.noContentTypes": "No API content types found. Create content types in the Content-Type Builder first.",
49
+ "events.contentType": "Content Type",
50
+ "events.create": "Create",
51
+ "events.update": "Update",
52
+ "events.delete": "Delete",
53
+ "events.customNames": "Use Custom Event Names",
54
+ "events.includeRelations": "Include Relations",
55
+ "events.onlyPublished": "Only Published Content",
56
+ "permissions.title": "Role Permissions",
57
+ "permissions.description": "Configure Socket.IO permissions per user role",
58
+ "permissions.role": "Role",
59
+ "permissions.canConnect": "Can Connect",
60
+ "permissions.blocked": "Blocked",
61
+ "permissions.contentTypesEnabled": "content types enabled",
62
+ "permissions.allowConnection": "Allow Connection",
63
+ "permissions.allowConnectionHint": "Users with this role can connect to Socket.IO",
64
+ "permissions.allowCredentials": "Allow Credentials",
65
+ "permissions.allowCredentialsHint": "Allow cookies and auth headers",
66
+ "permissions.allowedMethods": "Allowed HTTP Methods",
67
+ "permissions.contentTypePermissions": "Content Type Permissions",
68
+ "permissions.noRoles": "No roles found",
69
+ "permissions.enableAll": "Enable All",
70
+ "permissions.disableAll": "Disable All",
71
+ "redis.title": "Redis Adapter",
72
+ "redis.description": "Enable Redis for multi-server scaling",
73
+ "redis.enable": "Enable Redis Adapter",
74
+ "redis.url": "Redis URL",
75
+ "namespaces.title": "Namespaces",
76
+ "namespaces.description": "Create separate Socket.IO endpoints",
77
+ "namespaces.enable": "Enable Namespaces",
78
+ "namespaces.list": "Namespaces",
79
+ "namespaces.add": "Add",
80
+ "namespaces.hint": "Examples: admin, chat, notifications",
81
+ "namespaces.authRequired": "Auth required",
82
+ "monitoring.title": "Monitoring & Logging",
83
+ "monitoring.description": "Real-time connection and event statistics",
84
+ "monitoring.connectionLogging": "Connection Logging",
85
+ "monitoring.connectionLoggingHint": "Log client connections",
86
+ "monitoring.eventLogging": "Event Logging",
87
+ "monitoring.eventLoggingHint": "Log all events for debugging",
88
+ "monitoring.maxLogSize": "Max Log Size",
89
+ "monitoring.refresh": "Refresh",
90
+ "monitoring.reset": "Reset Stats",
91
+ "monitoring.connectedClients": "Connected Clients",
92
+ "monitoring.totalEvents": "Total Events",
93
+ "monitoring.eventsPerSecond": "Events/Second",
94
+ "monitoring.rooms": "Active Rooms",
95
+ "monitoring.testEvent": "Send Test Event",
96
+ "monitoring.eventName": "Event Name",
97
+ "monitoring.eventData": "Event Data (JSON)",
98
+ "monitoring.send": "Send",
99
+ "monitoring.connectedClientsList": "Connected Clients",
100
+ "monitoring.noClients": "No clients connected",
101
+ "monitoring.eventLog": "Recent Events",
102
+ "monitoring.noEvents": "No events logged yet",
103
+ "monitoring.noMatchingEvents": "No matching events",
104
+ "monitoring.searchEvents": "Search events...",
105
+ "monitoring.invalidJson": "Invalid JSON data",
106
+ "monitoring.testEventSent": "Test event sent successfully!",
107
+ "monitoring.testEventError": "Error sending test event",
108
+ "monitoring.statsReset": "Statistics reset successfully!",
109
+ "monitoring.resetError": "Error resetting statistics",
110
+ "validation.errors": "Validation errors",
111
+ "validation.invalidOrigin": "Invalid origin",
112
+ "validation.pingTimeoutPositive": "Ping timeout must be positive",
113
+ "validation.pingIntervalPositive": "Ping interval must be positive",
114
+ "validation.connectionTimeoutPositive": "Connection timeout must be positive",
115
+ "validation.maxConnectionsPositive": "Max connections must be positive",
116
+ "validation.redisUrlRequired": "Redis URL is required when Redis is enabled"
117
+ };
118
+ export {
119
+ en as default
120
+ };
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const en = {
4
+ "plugin.name": "Socket.IO",
5
+ "widget.socket-stats.title": "Socket.IO Stats",
6
+ "widget.connections": "Active Connections",
7
+ "widget.rooms": "Active Rooms",
8
+ "widget.eventsPerSec": "Events/sec",
9
+ "widget.totalEvents": "Total Events",
10
+ "widget.viewMonitoring": "View Monitoring",
11
+ "widget.live": "Live",
12
+ "widget.offline": "Offline",
13
+ "settings.title": "Settings",
14
+ "settings.description": "Configure the Socket.IO connection for real-time events",
15
+ "settings.save": "Save",
16
+ "settings.saved": "Saved",
17
+ "settings.saveAndApply": "Save & Apply",
18
+ "settings.success": "Settings saved successfully!",
19
+ "settings.error": "Error saving settings",
20
+ "settings.loadError": "Error loading settings",
21
+ "settings.noRestart": "Changes are applied immediately – no restart required!",
22
+ "settings.export": "Export",
23
+ "settings.import": "Import",
24
+ "settings.exported": "Settings exported successfully!",
25
+ "settings.imported": "Settings imported successfully!",
26
+ "settings.importError": "Import failed",
27
+ "settings.invalidJson": "Invalid settings file!",
28
+ "cors.title": "CORS Settings",
29
+ "cors.description": "Configure which frontends can connect",
30
+ "cors.origins": "Allowed Origins",
31
+ "cors.originsHint": "Add multiple frontend URLs that can connect",
32
+ "cors.add": "Add",
33
+ "cors.credentials": "Allow Credentials",
34
+ "cors.methods": "Allowed HTTP Methods",
35
+ "connection.title": "Connection Settings",
36
+ "connection.description": "Configure connection limits and timeouts",
37
+ "connection.maxConnections": "Max Connections",
38
+ "connection.pingTimeout": "Ping Timeout (ms)",
39
+ "connection.pingInterval": "Ping Interval (ms)",
40
+ "connection.connectionTimeout": "Connection Timeout (ms)",
41
+ "security.title": "Security Settings",
42
+ "security.description": "Configure authentication and rate limiting",
43
+ "security.requireAuth": "Require Authentication",
44
+ "security.rateLimiting": "Enable Rate Limiting",
45
+ "security.maxEventsPerSecond": "Max Events/Second",
46
+ "events.title": "Real-time Events",
47
+ "events.description": "Configure which events are sent for which content types",
48
+ "events.enableAll": "Enable all",
49
+ "events.disableAll": "Disable all",
50
+ "events.noContentTypes": "No API content types found. Create content types in the Content-Type Builder first.",
51
+ "events.contentType": "Content Type",
52
+ "events.create": "Create",
53
+ "events.update": "Update",
54
+ "events.delete": "Delete",
55
+ "events.customNames": "Use Custom Event Names",
56
+ "events.includeRelations": "Include Relations",
57
+ "events.onlyPublished": "Only Published Content",
58
+ "permissions.title": "Role Permissions",
59
+ "permissions.description": "Configure Socket.IO permissions per user role",
60
+ "permissions.role": "Role",
61
+ "permissions.canConnect": "Can Connect",
62
+ "permissions.blocked": "Blocked",
63
+ "permissions.contentTypesEnabled": "content types enabled",
64
+ "permissions.allowConnection": "Allow Connection",
65
+ "permissions.allowConnectionHint": "Users with this role can connect to Socket.IO",
66
+ "permissions.allowCredentials": "Allow Credentials",
67
+ "permissions.allowCredentialsHint": "Allow cookies and auth headers",
68
+ "permissions.allowedMethods": "Allowed HTTP Methods",
69
+ "permissions.contentTypePermissions": "Content Type Permissions",
70
+ "permissions.noRoles": "No roles found",
71
+ "permissions.enableAll": "Enable All",
72
+ "permissions.disableAll": "Disable All",
73
+ "redis.title": "Redis Adapter",
74
+ "redis.description": "Enable Redis for multi-server scaling",
75
+ "redis.enable": "Enable Redis Adapter",
76
+ "redis.url": "Redis URL",
77
+ "namespaces.title": "Namespaces",
78
+ "namespaces.description": "Create separate Socket.IO endpoints",
79
+ "namespaces.enable": "Enable Namespaces",
80
+ "namespaces.list": "Namespaces",
81
+ "namespaces.add": "Add",
82
+ "namespaces.hint": "Examples: admin, chat, notifications",
83
+ "namespaces.authRequired": "Auth required",
84
+ "monitoring.title": "Monitoring & Logging",
85
+ "monitoring.description": "Real-time connection and event statistics",
86
+ "monitoring.connectionLogging": "Connection Logging",
87
+ "monitoring.connectionLoggingHint": "Log client connections",
88
+ "monitoring.eventLogging": "Event Logging",
89
+ "monitoring.eventLoggingHint": "Log all events for debugging",
90
+ "monitoring.maxLogSize": "Max Log Size",
91
+ "monitoring.refresh": "Refresh",
92
+ "monitoring.reset": "Reset Stats",
93
+ "monitoring.connectedClients": "Connected Clients",
94
+ "monitoring.totalEvents": "Total Events",
95
+ "monitoring.eventsPerSecond": "Events/Second",
96
+ "monitoring.rooms": "Active Rooms",
97
+ "monitoring.testEvent": "Send Test Event",
98
+ "monitoring.eventName": "Event Name",
99
+ "monitoring.eventData": "Event Data (JSON)",
100
+ "monitoring.send": "Send",
101
+ "monitoring.connectedClientsList": "Connected Clients",
102
+ "monitoring.noClients": "No clients connected",
103
+ "monitoring.eventLog": "Recent Events",
104
+ "monitoring.noEvents": "No events logged yet",
105
+ "monitoring.noMatchingEvents": "No matching events",
106
+ "monitoring.searchEvents": "Search events...",
107
+ "monitoring.invalidJson": "Invalid JSON data",
108
+ "monitoring.testEventSent": "Test event sent successfully!",
109
+ "monitoring.testEventError": "Error sending test event",
110
+ "monitoring.statsReset": "Statistics reset successfully!",
111
+ "monitoring.resetError": "Error resetting statistics",
112
+ "validation.errors": "Validation errors",
113
+ "validation.invalidOrigin": "Invalid origin",
114
+ "validation.pingTimeoutPositive": "Ping timeout must be positive",
115
+ "validation.pingIntervalPositive": "Ping interval must be positive",
116
+ "validation.connectionTimeoutPositive": "Connection timeout must be positive",
117
+ "validation.maxConnectionsPositive": "Max connections must be positive",
118
+ "validation.redisUrlRequired": "Redis URL is required when Redis is enabled"
119
+ };
120
+ exports.default = en;
@@ -0,0 +1,41 @@
1
+ const es = {
2
+ "plugin.name": "Socket.IO",
3
+ "widget.socket-stats.title": "Estadísticas Socket.IO",
4
+ "widget.connections": "Conexiones Activas",
5
+ "widget.rooms": "Salas Activas",
6
+ "widget.eventsPerSec": "Eventos/seg",
7
+ "widget.totalEvents": "Eventos Totales",
8
+ "widget.viewMonitoring": "Ver Monitoreo",
9
+ "widget.live": "En Vivo",
10
+ "widget.offline": "Desconectado",
11
+ "settings.title": "Configuración",
12
+ "settings.description": "Configura la conexión Socket.IO para eventos en tiempo real",
13
+ "settings.save": "Guardar",
14
+ "settings.saved": "Guardado",
15
+ "settings.saveAndApply": "Guardar y Aplicar",
16
+ "settings.success": "¡Configuración guardada correctamente!",
17
+ "settings.error": "Error al guardar la configuración",
18
+ "settings.loadError": "Error al cargar la configuración",
19
+ "settings.noRestart": "¡Los cambios se aplican inmediatamente – no se requiere reinicio!",
20
+ "cors.title": "Configuración CORS",
21
+ "cors.description": "Configura qué frontends pueden conectarse",
22
+ "cors.origin": "URL del Frontend (CORS Origin)",
23
+ "cors.originHint": "La URL de tu frontend (ej: http://localhost:3000 o https://mi-app.es)",
24
+ "cors.credentials": "Permitir Credentials",
25
+ "cors.methods": "Métodos HTTP permitidos",
26
+ "events.title": "Eventos en tiempo real",
27
+ "events.description": "Configura qué eventos se envían para qué tipos de contenido",
28
+ "events.enableAll": "Activar todos",
29
+ "events.disableAll": "Desactivar todos",
30
+ "events.noContentTypes": "No se encontraron tipos de contenido API. Crea primero tipos de contenido en el Content-Type Builder.",
31
+ "events.contentType": "Tipo de contenido",
32
+ "events.create": "Crear",
33
+ "events.update": "Actualizar",
34
+ "events.delete": "Eliminar",
35
+ "logging.title": "Registro",
36
+ "logging.connectionLogging": "Registro de conexiones",
37
+ "logging.connectionLoggingHint": "Muestra las conexiones de clientes en el registro del servidor"
38
+ };
39
+ export {
40
+ es as default
41
+ };
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const es = {
4
+ "plugin.name": "Socket.IO",
5
+ "widget.socket-stats.title": "Estadísticas Socket.IO",
6
+ "widget.connections": "Conexiones Activas",
7
+ "widget.rooms": "Salas Activas",
8
+ "widget.eventsPerSec": "Eventos/seg",
9
+ "widget.totalEvents": "Eventos Totales",
10
+ "widget.viewMonitoring": "Ver Monitoreo",
11
+ "widget.live": "En Vivo",
12
+ "widget.offline": "Desconectado",
13
+ "settings.title": "Configuración",
14
+ "settings.description": "Configura la conexión Socket.IO para eventos en tiempo real",
15
+ "settings.save": "Guardar",
16
+ "settings.saved": "Guardado",
17
+ "settings.saveAndApply": "Guardar y Aplicar",
18
+ "settings.success": "¡Configuración guardada correctamente!",
19
+ "settings.error": "Error al guardar la configuración",
20
+ "settings.loadError": "Error al cargar la configuración",
21
+ "settings.noRestart": "¡Los cambios se aplican inmediatamente – no se requiere reinicio!",
22
+ "cors.title": "Configuración CORS",
23
+ "cors.description": "Configura qué frontends pueden conectarse",
24
+ "cors.origin": "URL del Frontend (CORS Origin)",
25
+ "cors.originHint": "La URL de tu frontend (ej: http://localhost:3000 o https://mi-app.es)",
26
+ "cors.credentials": "Permitir Credentials",
27
+ "cors.methods": "Métodos HTTP permitidos",
28
+ "events.title": "Eventos en tiempo real",
29
+ "events.description": "Configura qué eventos se envían para qué tipos de contenido",
30
+ "events.enableAll": "Activar todos",
31
+ "events.disableAll": "Desactivar todos",
32
+ "events.noContentTypes": "No se encontraron tipos de contenido API. Crea primero tipos de contenido en el Content-Type Builder.",
33
+ "events.contentType": "Tipo de contenido",
34
+ "events.create": "Crear",
35
+ "events.update": "Actualizar",
36
+ "events.delete": "Eliminar",
37
+ "logging.title": "Registro",
38
+ "logging.connectionLogging": "Registro de conexiones",
39
+ "logging.connectionLoggingHint": "Muestra las conexiones de clientes en el registro del servidor"
40
+ };
41
+ exports.default = es;
@@ -0,0 +1,41 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
+ const fr = {
4
+ "plugin.name": "Socket.IO",
5
+ "widget.socket-stats.title": "Statistiques Socket.IO",
6
+ "widget.connections": "Connexions Actives",
7
+ "widget.rooms": "Salles Actives",
8
+ "widget.eventsPerSec": "Événements/sec",
9
+ "widget.totalEvents": "Événements Totaux",
10
+ "widget.viewMonitoring": "Voir Surveillance",
11
+ "widget.live": "En Direct",
12
+ "widget.offline": "Hors Ligne",
13
+ "settings.title": "Paramètres",
14
+ "settings.description": "Configurez la connexion Socket.IO pour les événements en temps réel",
15
+ "settings.save": "Enregistrer",
16
+ "settings.saved": "Enregistré",
17
+ "settings.saveAndApply": "Enregistrer & Appliquer",
18
+ "settings.success": "Paramètres enregistrés avec succès !",
19
+ "settings.error": "Erreur lors de l'enregistrement des paramètres",
20
+ "settings.loadError": "Erreur lors du chargement des paramètres",
21
+ "settings.noRestart": "Les modifications sont appliquées immédiatement – aucun redémarrage requis !",
22
+ "cors.title": "Paramètres CORS",
23
+ "cors.description": "Configurez quels frontends peuvent se connecter",
24
+ "cors.origin": "URL Frontend (CORS Origin)",
25
+ "cors.originHint": "L'URL de votre frontend (ex: http://localhost:3000 ou https://mon-app.fr)",
26
+ "cors.credentials": "Autoriser les Credentials",
27
+ "cors.methods": "Méthodes HTTP autorisées",
28
+ "events.title": "Événements en temps réel",
29
+ "events.description": "Configurez quels événements sont envoyés pour quels types de contenu",
30
+ "events.enableAll": "Tout activer",
31
+ "events.disableAll": "Tout désactiver",
32
+ "events.noContentTypes": "Aucun type de contenu API trouvé. Créez d'abord des types de contenu dans le Content-Type Builder.",
33
+ "events.contentType": "Type de contenu",
34
+ "events.create": "Créer",
35
+ "events.update": "Mettre à jour",
36
+ "events.delete": "Supprimer",
37
+ "logging.title": "Journalisation",
38
+ "logging.connectionLogging": "Journal des connexions",
39
+ "logging.connectionLoggingHint": "Affiche les connexions clients dans le journal serveur"
40
+ };
41
+ exports.default = fr;
@@ -0,0 +1,41 @@
1
+ const fr = {
2
+ "plugin.name": "Socket.IO",
3
+ "widget.socket-stats.title": "Statistiques Socket.IO",
4
+ "widget.connections": "Connexions Actives",
5
+ "widget.rooms": "Salles Actives",
6
+ "widget.eventsPerSec": "Événements/sec",
7
+ "widget.totalEvents": "Événements Totaux",
8
+ "widget.viewMonitoring": "Voir Surveillance",
9
+ "widget.live": "En Direct",
10
+ "widget.offline": "Hors Ligne",
11
+ "settings.title": "Paramètres",
12
+ "settings.description": "Configurez la connexion Socket.IO pour les événements en temps réel",
13
+ "settings.save": "Enregistrer",
14
+ "settings.saved": "Enregistré",
15
+ "settings.saveAndApply": "Enregistrer & Appliquer",
16
+ "settings.success": "Paramètres enregistrés avec succès !",
17
+ "settings.error": "Erreur lors de l'enregistrement des paramètres",
18
+ "settings.loadError": "Erreur lors du chargement des paramètres",
19
+ "settings.noRestart": "Les modifications sont appliquées immédiatement – aucun redémarrage requis !",
20
+ "cors.title": "Paramètres CORS",
21
+ "cors.description": "Configurez quels frontends peuvent se connecter",
22
+ "cors.origin": "URL Frontend (CORS Origin)",
23
+ "cors.originHint": "L'URL de votre frontend (ex: http://localhost:3000 ou https://mon-app.fr)",
24
+ "cors.credentials": "Autoriser les Credentials",
25
+ "cors.methods": "Méthodes HTTP autorisées",
26
+ "events.title": "Événements en temps réel",
27
+ "events.description": "Configurez quels événements sont envoyés pour quels types de contenu",
28
+ "events.enableAll": "Tout activer",
29
+ "events.disableAll": "Tout désactiver",
30
+ "events.noContentTypes": "Aucun type de contenu API trouvé. Créez d'abord des types de contenu dans le Content-Type Builder.",
31
+ "events.contentType": "Type de contenu",
32
+ "events.create": "Créer",
33
+ "events.update": "Mettre à jour",
34
+ "events.delete": "Supprimer",
35
+ "logging.title": "Journalisation",
36
+ "logging.connectionLogging": "Journal des connexions",
37
+ "logging.connectionLoggingHint": "Affiche les connexions clients dans le journal serveur"
38
+ };
39
+ export {
40
+ fr as default
41
+ };
@@ -0,0 +1,113 @@
1
+ "use strict";
2
+ const React = require("react");
3
+ const jsxRuntime = require("react/jsx-runtime");
4
+ const icons = require("@strapi/icons");
5
+ const __variableDynamicImportRuntimeHelper = (glob, path, segs) => {
6
+ const v = glob[path];
7
+ if (v) {
8
+ return typeof v === "function" ? v() : Promise.resolve(v);
9
+ }
10
+ return new Promise((_, reject) => {
11
+ (typeof queueMicrotask === "function" ? queueMicrotask : setTimeout)(
12
+ reject.bind(
13
+ null,
14
+ new Error(
15
+ "Unknown variable dynamic import: " + path + (path.split("/").length !== segs ? ". Note that variables only represent file names one level deep." : "")
16
+ )
17
+ )
18
+ );
19
+ });
20
+ };
21
+ const PLUGIN_ID = "io";
22
+ const Initializer = ({ setPlugin }) => {
23
+ const ref = React.useRef(setPlugin);
24
+ React.useEffect(() => {
25
+ ref.current(PLUGIN_ID);
26
+ }, []);
27
+ return null;
28
+ };
29
+ const PluginIcon = () => /* @__PURE__ */ jsxRuntime.jsx(icons.Server, {});
30
+ const index = {
31
+ register(app) {
32
+ app.registerPlugin({
33
+ id: PLUGIN_ID,
34
+ initializer: Initializer,
35
+ isReady: false,
36
+ name: PLUGIN_ID
37
+ });
38
+ app.createSettingSection(
39
+ {
40
+ id: PLUGIN_ID,
41
+ intlLabel: {
42
+ id: `${PLUGIN_ID}.plugin.name`,
43
+ defaultMessage: "Socket.IO"
44
+ }
45
+ },
46
+ [
47
+ {
48
+ intlLabel: {
49
+ id: `${PLUGIN_ID}.settings.title`,
50
+ defaultMessage: "Settings"
51
+ },
52
+ id: `${PLUGIN_ID}-settings`,
53
+ to: `${PLUGIN_ID}/settings`,
54
+ Component: () => Promise.resolve().then(() => require("./SettingsPage-88RdJkLy.js")).then((mod) => ({ default: mod.SettingsPage }))
55
+ },
56
+ {
57
+ intlLabel: {
58
+ id: `${PLUGIN_ID}.monitoring.title`,
59
+ defaultMessage: "Monitoring"
60
+ },
61
+ id: `${PLUGIN_ID}-monitoring`,
62
+ to: `${PLUGIN_ID}/monitoring`,
63
+ Component: () => Promise.resolve().then(() => require("./MonitoringPage-HxHK1nFr.js")).then((mod) => ({ default: mod.MonitoringPage }))
64
+ }
65
+ ]
66
+ );
67
+ if ("widgets" in app) {
68
+ app.widgets.register({
69
+ icon: PluginIcon,
70
+ title: {
71
+ id: `${PLUGIN_ID}.widget.socket-stats.title`,
72
+ defaultMessage: "Socket.IO Stats"
73
+ },
74
+ component: async () => {
75
+ const component = await Promise.resolve().then(() => require("./SocketStatsWidget-C1-1_VOB.js"));
76
+ return component.SocketStatsWidget;
77
+ },
78
+ id: "socket-io-stats-widget",
79
+ pluginId: PLUGIN_ID
80
+ });
81
+ console.log(`[${PLUGIN_ID}] ✅ Socket.IO Stats Widget registered`);
82
+ }
83
+ },
84
+ bootstrap(app) {
85
+ console.log(`[${PLUGIN_ID}] Bootstrapping plugin...`);
86
+ },
87
+ async registerTrads({ locales }) {
88
+ const importedTrads = await Promise.all(
89
+ locales.map((locale) => {
90
+ return __variableDynamicImportRuntimeHelper(/* @__PURE__ */ Object.assign({ "./translations/de.json": () => Promise.resolve().then(() => require("./de-Crne_WJ-.js")), "./translations/en.json": () => Promise.resolve().then(() => require("./en-Bd2IKJzy.js")), "./translations/es.json": () => Promise.resolve().then(() => require("./es-Xj8RgKuQ.js")), "./translations/fr.json": () => Promise.resolve().then(() => require("./fr-D_r96iuZ.js")), "./translations/pt.json": () => Promise.resolve().then(() => require("./pt-Bba2cd2e.js")) }), `./translations/${locale}.json`, 3).then(({ default: data }) => {
91
+ return {
92
+ data: prefixPluginTranslations(data, PLUGIN_ID),
93
+ locale
94
+ };
95
+ }).catch(() => {
96
+ return {
97
+ data: {},
98
+ locale
99
+ };
100
+ });
101
+ })
102
+ );
103
+ return Promise.resolve(importedTrads);
104
+ }
105
+ };
106
+ const prefixPluginTranslations = (trad, pluginId) => {
107
+ return Object.keys(trad).reduce((acc, current) => {
108
+ acc[`${pluginId}.${current}`] = trad[current];
109
+ return acc;
110
+ }, {});
111
+ };
112
+ exports.PLUGIN_ID = PLUGIN_ID;
113
+ exports.index = index;