@qwickapps/server 1.2.0 → 1.3.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.
- package/README.md +238 -0
- package/dist/core/control-panel.d.ts +7 -2
- package/dist/core/control-panel.d.ts.map +1 -1
- package/dist/core/control-panel.js +92 -54
- package/dist/core/control-panel.js.map +1 -1
- package/dist/core/gateway.d.ts +159 -79
- package/dist/core/gateway.d.ts.map +1 -1
- package/dist/core/gateway.js +679 -319
- package/dist/core/gateway.js.map +1 -1
- package/dist/core/index.d.ts +3 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +2 -0
- package/dist/core/index.js.map +1 -1
- package/dist/core/plugin-registry.d.ts +271 -0
- package/dist/core/plugin-registry.d.ts.map +1 -0
- package/dist/core/plugin-registry.js +326 -0
- package/dist/core/plugin-registry.js.map +1 -0
- package/dist/core/types.d.ts +16 -33
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +8 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -7
- package/dist/index.js.map +1 -1
- package/dist/plugins/auth/adapters/auth0-adapter.d.ts +14 -0
- package/dist/plugins/auth/adapters/auth0-adapter.d.ts.map +1 -0
- package/dist/plugins/auth/adapters/auth0-adapter.js +179 -0
- package/dist/plugins/auth/adapters/auth0-adapter.js.map +1 -0
- package/dist/plugins/auth/adapters/basic-adapter.d.ts +13 -0
- package/dist/plugins/auth/adapters/basic-adapter.d.ts.map +1 -0
- package/dist/plugins/auth/adapters/basic-adapter.js +51 -0
- package/dist/plugins/auth/adapters/basic-adapter.js.map +1 -0
- package/dist/plugins/auth/adapters/index.d.ts +9 -0
- package/dist/plugins/auth/adapters/index.d.ts.map +1 -0
- package/dist/plugins/auth/adapters/index.js +9 -0
- package/dist/plugins/auth/adapters/index.js.map +1 -0
- package/dist/plugins/auth/adapters/supabase-adapter.d.ts +13 -0
- package/dist/plugins/auth/adapters/supabase-adapter.d.ts.map +1 -0
- package/dist/plugins/auth/adapters/supabase-adapter.js +109 -0
- package/dist/plugins/auth/adapters/supabase-adapter.js.map +1 -0
- package/dist/plugins/auth/auth-plugin.d.ts +40 -0
- package/dist/plugins/auth/auth-plugin.d.ts.map +1 -0
- package/dist/plugins/auth/auth-plugin.js +255 -0
- package/dist/plugins/auth/auth-plugin.js.map +1 -0
- package/dist/plugins/auth/auth-plugin.test.d.ts +9 -0
- package/dist/plugins/auth/auth-plugin.test.d.ts.map +1 -0
- package/dist/plugins/auth/auth-plugin.test.js +147 -0
- package/dist/plugins/auth/auth-plugin.test.js.map +1 -0
- package/dist/plugins/auth/index.d.ts +12 -0
- package/dist/plugins/auth/index.d.ts.map +1 -0
- package/dist/plugins/auth/index.js +13 -0
- package/dist/plugins/auth/index.js.map +1 -0
- package/dist/plugins/auth/types.d.ts +148 -0
- package/dist/plugins/auth/types.d.ts.map +1 -0
- package/dist/plugins/auth/types.js +14 -0
- package/dist/plugins/auth/types.js.map +1 -0
- package/dist/plugins/bans/bans-plugin.d.ts +59 -0
- package/dist/plugins/bans/bans-plugin.d.ts.map +1 -0
- package/dist/plugins/bans/bans-plugin.js +428 -0
- package/dist/plugins/bans/bans-plugin.js.map +1 -0
- package/dist/plugins/bans/index.d.ts +9 -0
- package/dist/plugins/bans/index.d.ts.map +1 -0
- package/dist/plugins/bans/index.js +10 -0
- package/dist/plugins/bans/index.js.map +1 -0
- package/dist/plugins/bans/stores/index.d.ts +7 -0
- package/dist/plugins/bans/stores/index.d.ts.map +1 -0
- package/dist/plugins/bans/stores/index.js +7 -0
- package/dist/plugins/bans/stores/index.js.map +1 -0
- package/dist/plugins/bans/stores/postgres-store.d.ts +29 -0
- package/dist/plugins/bans/stores/postgres-store.d.ts.map +1 -0
- package/dist/plugins/bans/stores/postgres-store.js +132 -0
- package/dist/plugins/bans/stores/postgres-store.js.map +1 -0
- package/dist/plugins/bans/types.d.ts +128 -0
- package/dist/plugins/bans/types.d.ts.map +1 -0
- package/dist/plugins/bans/types.js +11 -0
- package/dist/plugins/bans/types.js.map +1 -0
- package/dist/plugins/cache-plugin.d.ts +14 -3
- package/dist/plugins/cache-plugin.d.ts.map +1 -1
- package/dist/plugins/cache-plugin.js +27 -7
- package/dist/plugins/cache-plugin.js.map +1 -1
- package/dist/plugins/cache-plugin.test.js +96 -32
- package/dist/plugins/cache-plugin.test.js.map +1 -1
- package/dist/plugins/config-plugin.d.ts +3 -2
- package/dist/plugins/config-plugin.d.ts.map +1 -1
- package/dist/plugins/config-plugin.js +17 -10
- package/dist/plugins/config-plugin.js.map +1 -1
- package/dist/plugins/diagnostics-plugin.d.ts +2 -2
- package/dist/plugins/diagnostics-plugin.d.ts.map +1 -1
- package/dist/plugins/diagnostics-plugin.js +17 -10
- package/dist/plugins/diagnostics-plugin.js.map +1 -1
- package/dist/plugins/entitlements/entitlements-plugin.d.ts +95 -0
- package/dist/plugins/entitlements/entitlements-plugin.d.ts.map +1 -0
- package/dist/plugins/entitlements/entitlements-plugin.js +707 -0
- package/dist/plugins/entitlements/entitlements-plugin.js.map +1 -0
- package/dist/plugins/entitlements/index.d.ts +12 -0
- package/dist/plugins/entitlements/index.d.ts.map +1 -0
- package/dist/plugins/entitlements/index.js +16 -0
- package/dist/plugins/entitlements/index.js.map +1 -0
- package/dist/plugins/entitlements/sources/index.d.ts +9 -0
- package/dist/plugins/entitlements/sources/index.d.ts.map +1 -0
- package/dist/plugins/entitlements/sources/index.js +9 -0
- package/dist/plugins/entitlements/sources/index.js.map +1 -0
- package/dist/plugins/entitlements/sources/postgres-source.d.ts +29 -0
- package/dist/plugins/entitlements/sources/postgres-source.d.ts.map +1 -0
- package/dist/plugins/entitlements/sources/postgres-source.js +169 -0
- package/dist/plugins/entitlements/sources/postgres-source.js.map +1 -0
- package/dist/plugins/entitlements/types.d.ts +232 -0
- package/dist/plugins/entitlements/types.d.ts.map +1 -0
- package/dist/plugins/entitlements/types.js +11 -0
- package/dist/plugins/entitlements/types.js.map +1 -0
- package/dist/plugins/frontend-app-plugin.d.ts +9 -3
- package/dist/plugins/frontend-app-plugin.d.ts.map +1 -1
- package/dist/plugins/frontend-app-plugin.js +14 -9
- package/dist/plugins/frontend-app-plugin.js.map +1 -1
- package/dist/plugins/health-plugin.d.ts +5 -2
- package/dist/plugins/health-plugin.d.ts.map +1 -1
- package/dist/plugins/health-plugin.js +20 -5
- package/dist/plugins/health-plugin.js.map +1 -1
- package/dist/plugins/index.d.ts +8 -2
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +8 -2
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/logs-plugin.d.ts +3 -2
- package/dist/plugins/logs-plugin.d.ts.map +1 -1
- package/dist/plugins/logs-plugin.js +21 -12
- package/dist/plugins/logs-plugin.js.map +1 -1
- package/dist/plugins/postgres-plugin.d.ts +3 -3
- package/dist/plugins/postgres-plugin.d.ts.map +1 -1
- package/dist/plugins/postgres-plugin.js +9 -7
- package/dist/plugins/postgres-plugin.js.map +1 -1
- package/dist/plugins/postgres-plugin.test.js +47 -29
- package/dist/plugins/postgres-plugin.test.js.map +1 -1
- package/dist/plugins/users/index.d.ts +12 -0
- package/dist/plugins/users/index.d.ts.map +1 -0
- package/dist/plugins/users/index.js +13 -0
- package/dist/plugins/users/index.js.map +1 -0
- package/dist/plugins/users/stores/index.d.ts +7 -0
- package/dist/plugins/users/stores/index.d.ts.map +1 -0
- package/dist/plugins/users/stores/index.js +7 -0
- package/dist/plugins/users/stores/index.js.map +1 -0
- package/dist/plugins/users/stores/postgres-store.d.ts +28 -0
- package/dist/plugins/users/stores/postgres-store.d.ts.map +1 -0
- package/dist/plugins/users/stores/postgres-store.js +157 -0
- package/dist/plugins/users/stores/postgres-store.js.map +1 -0
- package/dist/plugins/users/types.d.ts +189 -0
- package/dist/plugins/users/types.d.ts.map +1 -0
- package/dist/plugins/users/types.js +12 -0
- package/dist/plugins/users/types.js.map +1 -0
- package/dist/plugins/users/users-plugin.d.ts +39 -0
- package/dist/plugins/users/users-plugin.d.ts.map +1 -0
- package/dist/plugins/users/users-plugin.js +242 -0
- package/dist/plugins/users/users-plugin.js.map +1 -0
- package/dist-ui/assets/index-Bsp2ntcw.js +465 -0
- package/dist-ui/assets/index-Bsp2ntcw.js.map +1 -0
- package/dist-ui/index.html +1 -1
- package/dist-ui-lib/api/controlPanelApi.d.ts +232 -0
- package/dist-ui-lib/components/ControlPanelApp.d.ts +61 -0
- package/dist-ui-lib/components/index.d.ts +18 -0
- package/dist-ui-lib/config/AppConfig.d.ts +7 -0
- package/dist-ui-lib/dashboard/DashboardWidgetRegistry.d.ts +62 -0
- package/dist-ui-lib/dashboard/DashboardWidgetRenderer.d.ts +8 -0
- package/dist-ui-lib/dashboard/PluginWidgetRenderer.d.ts +19 -0
- package/dist-ui-lib/dashboard/WidgetComponentRegistry.d.ts +44 -0
- package/dist-ui-lib/dashboard/builtInWidgets.d.ts +19 -0
- package/dist-ui-lib/dashboard/index.d.ts +13 -0
- package/dist-ui-lib/dashboard/widgets/ServiceHealthWidget.d.ts +12 -0
- package/dist-ui-lib/dashboard/widgets/index.d.ts +6 -0
- package/dist-ui-lib/index.js +6441 -0
- package/dist-ui-lib/index.js.map +1 -0
- package/dist-ui-lib/pages/ConfigPage.d.ts +1 -0
- package/dist-ui-lib/pages/DashboardPage.d.ts +1 -0
- package/dist-ui-lib/pages/DiagnosticsPage.d.ts +1 -0
- package/dist-ui-lib/pages/EntitlementsPage.d.ts +17 -0
- package/dist-ui-lib/pages/LogsPage.d.ts +1 -0
- package/dist-ui-lib/pages/NotFoundPage.d.ts +1 -0
- package/dist-ui-lib/pages/PluginPage.d.ts +15 -0
- package/dist-ui-lib/pages/SystemPage.d.ts +1 -0
- package/dist-ui-lib/pages/UsersPage.d.ts +22 -0
- package/package.json +18 -6
- package/src/core/control-panel.ts +114 -61
- package/src/core/gateway.ts +863 -403
- package/src/core/index.ts +21 -2
- package/src/core/plugin-registry.ts +653 -0
- package/src/core/types.ts +31 -37
- package/src/index.ts +118 -19
- package/src/plugins/auth/adapters/auth0-adapter.ts +214 -0
- package/src/plugins/auth/adapters/basic-adapter.ts +61 -0
- package/src/plugins/auth/adapters/index.ts +9 -0
- package/src/plugins/auth/adapters/supabase-adapter.ts +141 -0
- package/src/plugins/auth/auth-plugin.test.ts +176 -0
- package/src/plugins/auth/auth-plugin.ts +303 -0
- package/src/plugins/auth/index.ts +33 -0
- package/src/plugins/auth/types.ts +165 -0
- package/src/plugins/bans/bans-plugin.ts +485 -0
- package/src/plugins/bans/index.ts +31 -0
- package/src/plugins/bans/stores/index.ts +7 -0
- package/src/plugins/bans/stores/postgres-store.ts +195 -0
- package/src/plugins/bans/types.ts +141 -0
- package/src/plugins/cache-plugin.test.ts +105 -32
- package/src/plugins/cache-plugin.ts +40 -9
- package/src/plugins/config-plugin.ts +23 -12
- package/src/plugins/diagnostics-plugin.ts +22 -12
- package/src/plugins/entitlements/entitlements-plugin.ts +820 -0
- package/src/plugins/entitlements/index.ts +51 -0
- package/src/plugins/entitlements/sources/index.ts +9 -0
- package/src/plugins/entitlements/sources/postgres-source.ts +253 -0
- package/src/plugins/entitlements/types.ts +256 -0
- package/src/plugins/frontend-app-plugin.ts +24 -12
- package/src/plugins/health-plugin.ts +27 -7
- package/src/plugins/index.ts +106 -4
- package/src/plugins/logs-plugin.ts +28 -14
- package/src/plugins/postgres-plugin.test.ts +49 -29
- package/src/plugins/postgres-plugin.ts +11 -9
- package/src/plugins/users/index.ts +35 -0
- package/src/plugins/users/stores/index.ts +7 -0
- package/src/plugins/users/stores/postgres-store.ts +225 -0
- package/src/plugins/users/types.ts +209 -0
- package/src/plugins/users/users-plugin.ts +281 -0
- package/ui/src/App.tsx +185 -31
- package/ui/src/api/controlPanelApi.ts +354 -1
- package/ui/src/components/ControlPanelApp.tsx +209 -0
- package/ui/src/components/index.ts +62 -0
- package/ui/src/dashboard/DashboardWidgetRegistry.tsx +129 -0
- package/ui/src/dashboard/DashboardWidgetRenderer.tsx +34 -0
- package/ui/src/dashboard/PluginWidgetRenderer.tsx +115 -0
- package/ui/src/dashboard/WidgetComponentRegistry.tsx +116 -0
- package/ui/src/dashboard/builtInWidgets.tsx +29 -0
- package/ui/src/dashboard/index.ts +35 -0
- package/ui/src/dashboard/widgets/ServiceHealthWidget.tsx +140 -0
- package/ui/src/dashboard/widgets/index.ts +7 -0
- package/ui/src/pages/DashboardPage.tsx +28 -149
- package/ui/src/pages/EntitlementsPage.tsx +557 -0
- package/ui/src/pages/LogsPage.tsx +174 -8
- package/ui/src/pages/PluginPage.tsx +148 -0
- package/ui/src/pages/SystemPage.tsx +445 -0
- package/ui/src/pages/UsersPage.tsx +837 -0
- package/ui/tsconfig.lib.json +11 -0
- package/ui/vite.lib.config.ts +51 -0
- package/dist-ui/assets/index-CW1BviRn.js +0 -465
- package/dist-ui/assets/index-CW1BviRn.js.map +0 -1
- package/ui/src/pages/HealthPage.tsx +0 -204
|
@@ -18,10 +18,12 @@ import { createRouteGuard } from '../core/guards.js';
|
|
|
18
18
|
*/
|
|
19
19
|
export function createFrontendAppPlugin(config) {
|
|
20
20
|
return {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
21
|
+
id: 'frontend-app',
|
|
22
|
+
name: 'Frontend App Plugin',
|
|
23
|
+
version: '1.0.0',
|
|
24
|
+
async onStart(_pluginConfig, registry) {
|
|
25
|
+
const logger = registry.getLogger('frontend-app');
|
|
26
|
+
const app = registry.getApp();
|
|
25
27
|
// Apply guard if configured
|
|
26
28
|
if (config.guard && config.guard.type !== 'none') {
|
|
27
29
|
const guardMiddleware = createRouteGuard(config.guard);
|
|
@@ -65,16 +67,19 @@ export function createFrontendAppPlugin(config) {
|
|
|
65
67
|
logger.info(`Frontend app: Serving default welcome page`);
|
|
66
68
|
app.get('/', (_req, res) => {
|
|
67
69
|
const html = generateLandingPageHtml({
|
|
68
|
-
title:
|
|
69
|
-
heading: `Welcome to ${
|
|
70
|
+
title: config.productName || 'QwickApps Server',
|
|
71
|
+
heading: `Welcome to ${config.productName || 'QwickApps Server'}`,
|
|
70
72
|
description: 'Your application is running.',
|
|
71
73
|
links: [
|
|
72
|
-
{ label: 'Control Panel', url:
|
|
74
|
+
{ label: 'Control Panel', url: config.mountPath || '/cpanel' },
|
|
73
75
|
],
|
|
74
76
|
});
|
|
75
77
|
res.type('html').send(html);
|
|
76
78
|
});
|
|
77
79
|
},
|
|
80
|
+
async onStop() {
|
|
81
|
+
// Nothing to cleanup
|
|
82
|
+
},
|
|
78
83
|
};
|
|
79
84
|
}
|
|
80
85
|
/**
|
|
@@ -107,7 +112,7 @@ function generateLandingPageHtml(config) {
|
|
|
107
112
|
max-width: 600px;
|
|
108
113
|
padding: 2rem;
|
|
109
114
|
}
|
|
110
|
-
${config.
|
|
115
|
+
${config.logoIconUrl ? `
|
|
111
116
|
.logo {
|
|
112
117
|
width: 80px;
|
|
113
118
|
height: 80px;
|
|
@@ -162,7 +167,7 @@ function generateLandingPageHtml(config) {
|
|
|
162
167
|
</head>
|
|
163
168
|
<body>
|
|
164
169
|
<div class="container">
|
|
165
|
-
${config.
|
|
170
|
+
${config.logoIconUrl ? `<img src="${config.logoIconUrl}" alt="Logo" class="logo">` : ''}
|
|
166
171
|
<h1>${config.heading || config.title}</h1>
|
|
167
172
|
${config.description ? `<p>${config.description}</p>` : ''}
|
|
168
173
|
${linksHtml ? `<div class="links">${linksHtml}</div>` : ''}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontend-app-plugin.js","sourceRoot":"","sources":["../../src/plugins/frontend-app-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"frontend-app-plugin.js","sourceRoot":"","sources":["../../src/plugins/frontend-app-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,16 @@
|
|
|
5
5
|
*
|
|
6
6
|
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
7
7
|
*/
|
|
8
|
-
import type {
|
|
8
|
+
import type { Plugin } from '../core/plugin-registry.js';
|
|
9
|
+
import type { HealthCheck } from '../core/types.js';
|
|
9
10
|
export interface HealthPluginConfig {
|
|
10
11
|
checks: HealthCheck[];
|
|
11
12
|
aggregateEndpoint?: string;
|
|
13
|
+
/** Whether to show the ServiceHealthWidget on the dashboard (default: true) */
|
|
14
|
+
showWidget?: boolean;
|
|
12
15
|
}
|
|
13
16
|
/**
|
|
14
17
|
* Create a health check plugin
|
|
15
18
|
*/
|
|
16
|
-
export declare function createHealthPlugin(config: HealthPluginConfig):
|
|
19
|
+
export declare function createHealthPlugin(config: HealthPluginConfig): Plugin;
|
|
17
20
|
//# sourceMappingURL=health-plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/health-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"health-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/health-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAgC,MAAM,4BAA4B,CAAC;AACvF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+EAA+E;IAC/E,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CAiCrE"}
|
|
@@ -10,16 +10,31 @@
|
|
|
10
10
|
*/
|
|
11
11
|
export function createHealthPlugin(config) {
|
|
12
12
|
return {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
id: 'health',
|
|
14
|
+
name: 'Health Plugin',
|
|
15
|
+
version: '1.0.0',
|
|
16
|
+
async onStart(_pluginConfig, registry) {
|
|
17
|
+
const logger = registry.getLogger('health');
|
|
17
18
|
// Register all health checks
|
|
18
19
|
for (const check of config.checks) {
|
|
19
|
-
registerHealthCheck(check);
|
|
20
|
+
registry.registerHealthCheck(check);
|
|
21
|
+
}
|
|
22
|
+
// Register the ServiceHealthWidget (shown by default unless disabled)
|
|
23
|
+
if (config.showWidget !== false) {
|
|
24
|
+
registry.addWidget({
|
|
25
|
+
id: 'service-health',
|
|
26
|
+
title: 'Service Health',
|
|
27
|
+
component: 'ServiceHealthWidget',
|
|
28
|
+
priority: 10,
|
|
29
|
+
showByDefault: true,
|
|
30
|
+
pluginId: 'health',
|
|
31
|
+
});
|
|
20
32
|
}
|
|
21
33
|
logger.debug(`Registered ${config.checks.length} health checks`);
|
|
22
34
|
},
|
|
35
|
+
async onStop() {
|
|
36
|
+
// Nothing to cleanup
|
|
37
|
+
},
|
|
23
38
|
};
|
|
24
39
|
}
|
|
25
40
|
//# sourceMappingURL=health-plugin.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"health-plugin.js","sourceRoot":"","sources":["../../src/plugins/health-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"health-plugin.js","sourceRoot":"","sources":["../../src/plugins/health-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAYH;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA0B;IAC3D,OAAO;QACL,EAAE,EAAE,QAAQ;QACZ,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,OAAO;QAEhB,KAAK,CAAC,OAAO,CAAC,aAA2B,EAAE,QAAwB;YACjE,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAE5C,6BAA6B;YAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClC,QAAQ,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YACtC,CAAC;YAED,sEAAsE;YACtE,IAAI,MAAM,CAAC,UAAU,KAAK,KAAK,EAAE,CAAC;gBAChC,QAAQ,CAAC,SAAS,CAAC;oBACjB,EAAE,EAAE,gBAAgB;oBACpB,KAAK,EAAE,gBAAgB;oBACvB,SAAS,EAAE,qBAAqB;oBAChC,QAAQ,EAAE,EAAE;oBACZ,aAAa,EAAE,IAAI;oBACnB,QAAQ,EAAE,QAAQ;iBACnB,CAAC,CAAC;YACL,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,cAAc,MAAM,CAAC,MAAM,CAAC,MAAM,gBAAgB,CAAC,CAAC;QACnE,CAAC;QAED,KAAK,CAAC,MAAM;YACV,qBAAqB;QACvB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/plugins/index.d.ts
CHANGED
|
@@ -15,8 +15,14 @@ export { createFrontendAppPlugin } from './frontend-app-plugin.js';
|
|
|
15
15
|
export type { FrontendAppPluginConfig } from './frontend-app-plugin.js';
|
|
16
16
|
export { createPostgresPlugin, getPostgres, hasPostgres } from './postgres-plugin.js';
|
|
17
17
|
export type { PostgresPluginConfig, PostgresInstance, TransactionCallback } from './postgres-plugin.js';
|
|
18
|
-
export { createPostgresPlugin as createDatabasePlugin, getPostgres as getDatabase, hasPostgres as hasDatabase } from './postgres-plugin.js';
|
|
19
|
-
export type { PostgresPluginConfig as DatabasePluginConfig, PostgresInstance as DatabaseInstance } from './postgres-plugin.js';
|
|
20
18
|
export { createCachePlugin, getCache, hasCache } from './cache-plugin.js';
|
|
21
19
|
export type { CachePluginConfig, CacheInstance } from './cache-plugin.js';
|
|
20
|
+
export { createAuthPlugin, isAuthenticated, getAuthenticatedUser, getAccessToken, requireAuth, requireRoles, requireAnyRole, auth0Adapter, basicAdapter, supabaseAdapter, isAuthenticatedRequest, } from './auth/index.js';
|
|
21
|
+
export type { AuthPluginConfig, AuthAdapter, AuthenticatedUser, AuthenticatedRequest, Auth0AdapterConfig, SupabaseAdapterConfig, BasicAdapterConfig, } from './auth/index.js';
|
|
22
|
+
export { createUsersPlugin, getUserStore, getUserById, getUserByEmail, findOrCreateUser, postgresUserStore, } from './users/index.js';
|
|
23
|
+
export type { UsersPluginConfig, UserStore, User, CreateUserInput, UpdateUserInput, UserSearchParams, UserListResponse, PostgresUserStoreConfig, UserSyncConfig, UsersApiConfig, UsersUiConfig, } from './users/index.js';
|
|
24
|
+
export { createBansPlugin, getBanStore, isUserBanned, isEmailBanned, getActiveBan, banUser, unbanUser, listActiveBans, postgresBanStore, } from './bans/index.js';
|
|
25
|
+
export type { BansPluginConfig, BanStore, Ban, CreateBanInput, RemoveBanInput, BanCallbacks, PostgresBanStoreConfig, } from './bans/index.js';
|
|
26
|
+
export { createEntitlementsPlugin, getEntitlementSource, isSourceReadonly, getEntitlements, refreshEntitlements, hasEntitlement, hasAnyEntitlement, hasAllEntitlements, grantEntitlement, revokeEntitlement, setEntitlements, getAvailableEntitlements, getEntitlementStats, invalidateEntitlementCache, storeExternalIdMapping, invalidateByExternalId, requireEntitlement, requireAnyEntitlement, requireAllEntitlements, postgresEntitlementSource, } from './entitlements/index.js';
|
|
27
|
+
export type { EntitlementsPluginConfig, EntitlementSource, EntitlementResult, EntitlementDefinition, EntitlementCallbacks, EntitlementsCacheConfig, EntitlementsApiConfig, PostgresEntitlementSourceConfig, UserEntitlement, CachedEntitlements, EntitlementStats, } from './entitlements/index.js';
|
|
22
28
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACtF,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAE7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAClE,YAAY,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAEvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AACnE,YAAY,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAExE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACtF,YAAY,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAExG,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC1E,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAG1E,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,gBAAgB,EAChB,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,iBAAiB,EACjB,SAAS,EACT,IAAI,EACJ,eAAe,EACf,eAAe,EACf,gBAAgB,EAChB,gBAAgB,EAChB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,aAAa,GACd,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,OAAO,EACP,SAAS,EACT,cAAc,EACd,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,gBAAgB,EAChB,QAAQ,EACR,GAAG,EACH,cAAc,EACd,cAAc,EACd,YAAY,EACZ,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC;AACjC,YAAY,EACV,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,uBAAuB,EACvB,qBAAqB,EACrB,+BAA+B,EAC/B,eAAe,EACf,kBAAkB,EAClB,gBAAgB,GACjB,MAAM,yBAAyB,CAAC"}
|
package/dist/plugins/index.js
CHANGED
|
@@ -9,7 +9,13 @@ export { createConfigPlugin } from './config-plugin.js';
|
|
|
9
9
|
export { createDiagnosticsPlugin } from './diagnostics-plugin.js';
|
|
10
10
|
export { createFrontendAppPlugin } from './frontend-app-plugin.js';
|
|
11
11
|
export { createPostgresPlugin, getPostgres, hasPostgres } from './postgres-plugin.js';
|
|
12
|
-
// Backward compatibility aliases (deprecated)
|
|
13
|
-
export { createPostgresPlugin as createDatabasePlugin, getPostgres as getDatabase, hasPostgres as hasDatabase } from './postgres-plugin.js';
|
|
14
12
|
export { createCachePlugin, getCache, hasCache } from './cache-plugin.js';
|
|
13
|
+
// Auth plugin
|
|
14
|
+
export { createAuthPlugin, isAuthenticated, getAuthenticatedUser, getAccessToken, requireAuth, requireRoles, requireAnyRole, auth0Adapter, basicAdapter, supabaseAdapter, isAuthenticatedRequest, } from './auth/index.js';
|
|
15
|
+
// Users plugin
|
|
16
|
+
export { createUsersPlugin, getUserStore, getUserById, getUserByEmail, findOrCreateUser, postgresUserStore, } from './users/index.js';
|
|
17
|
+
// Bans plugin (separate from Users, depends on Users)
|
|
18
|
+
export { createBansPlugin, getBanStore, isUserBanned, isEmailBanned, getActiveBan, banUser, unbanUser, listActiveBans, postgresBanStore, } from './bans/index.js';
|
|
19
|
+
// Entitlements plugin
|
|
20
|
+
export { createEntitlementsPlugin, getEntitlementSource, isSourceReadonly, getEntitlements, refreshEntitlements, hasEntitlement, hasAnyEntitlement, hasAllEntitlements, grantEntitlement, revokeEntitlement, setEntitlements, getAvailableEntitlements, getEntitlementStats, invalidateEntitlementCache, storeExternalIdMapping, invalidateByExternalId, requireEntitlement, requireAnyEntitlement, requireAllEntitlements, postgresEntitlementSource, } from './entitlements/index.js';
|
|
15
21
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAGnE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGtF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAGxD,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAGlE,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAGnE,OAAO,EAAE,oBAAoB,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGtF,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAG1E,cAAc;AACd,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,cAAc,EACd,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,sBAAsB,GACvB,MAAM,iBAAiB,CAAC;AAWzB,eAAe;AACf,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAe1B,sDAAsD;AACtD,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,OAAO,EACP,SAAS,EACT,cAAc,EACd,gBAAgB,GACjB,MAAM,iBAAiB,CAAC;AAWzB,sBAAsB;AACtB,OAAO,EACL,wBAAwB,EACxB,oBAAoB,EACpB,gBAAgB,EAChB,eAAe,EACf,mBAAmB,EACnB,cAAc,EACd,iBAAiB,EACjB,kBAAkB,EAClB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,mBAAmB,EACnB,0BAA0B,EAC1B,sBAAsB,EACtB,sBAAsB,EACtB,kBAAkB,EAClB,qBAAqB,EACrB,sBAAsB,EACtB,yBAAyB,GAC1B,MAAM,yBAAyB,CAAC"}
|
|
@@ -6,7 +6,8 @@
|
|
|
6
6
|
*
|
|
7
7
|
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
8
8
|
*/
|
|
9
|
-
import type {
|
|
9
|
+
import type { Plugin } from '../core/plugin-registry.js';
|
|
10
|
+
import type { LogSource } from '../core/types.js';
|
|
10
11
|
export interface LogsPluginConfig {
|
|
11
12
|
/** Log sources to display. If empty, uses default sources from logging subsystem */
|
|
12
13
|
sources?: LogSource[];
|
|
@@ -18,5 +19,5 @@ export interface LogsPluginConfig {
|
|
|
18
19
|
/**
|
|
19
20
|
* Create a logs plugin
|
|
20
21
|
*/
|
|
21
|
-
export declare function createLogsPlugin(config?: LogsPluginConfig):
|
|
22
|
+
export declare function createLogsPlugin(config?: LogsPluginConfig): Plugin;
|
|
22
23
|
//# sourceMappingURL=logs-plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/logs-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"logs-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/logs-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAgC,MAAM,4BAA4B,CAAC;AACvF,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAGlD,MAAM,WAAW,gBAAgB;IAC/B,oFAAoF;IACpF,OAAO,CAAC,EAAE,SAAS,EAAE,CAAC;IACtB,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,CAAC;CACH;AAsCD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,GAAE,gBAAqB,GAAG,MAAM,CA+GtE"}
|
|
@@ -33,12 +33,16 @@ export function createLogsPlugin(config = {}) {
|
|
|
33
33
|
return getDefaultSources();
|
|
34
34
|
};
|
|
35
35
|
return {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
36
|
+
id: 'logs',
|
|
37
|
+
name: 'Logs Plugin',
|
|
38
|
+
version: '1.0.0',
|
|
39
|
+
async onStart(_pluginConfig, registry) {
|
|
40
|
+
const logger = registry.getLogger('logs');
|
|
41
|
+
// Register /logs/sources route
|
|
42
|
+
registry.addRoute({
|
|
40
43
|
method: 'get',
|
|
41
44
|
path: '/logs/sources',
|
|
45
|
+
pluginId: 'logs',
|
|
42
46
|
handler: (_req, res) => {
|
|
43
47
|
const sources = getSources();
|
|
44
48
|
res.json({
|
|
@@ -48,10 +52,12 @@ export function createLogsPlugin(config = {}) {
|
|
|
48
52
|
})),
|
|
49
53
|
});
|
|
50
54
|
},
|
|
51
|
-
}
|
|
52
|
-
|
|
55
|
+
});
|
|
56
|
+
// Register /logs route
|
|
57
|
+
registry.addRoute({
|
|
53
58
|
method: 'get',
|
|
54
59
|
path: '/logs',
|
|
60
|
+
pluginId: 'logs',
|
|
55
61
|
handler: (req, res) => {
|
|
56
62
|
try {
|
|
57
63
|
const sources = getSources();
|
|
@@ -82,10 +88,12 @@ export function createLogsPlugin(config = {}) {
|
|
|
82
88
|
});
|
|
83
89
|
}
|
|
84
90
|
},
|
|
85
|
-
}
|
|
86
|
-
|
|
91
|
+
});
|
|
92
|
+
// Register /logs/stats route
|
|
93
|
+
registry.addRoute({
|
|
87
94
|
method: 'get',
|
|
88
95
|
path: '/logs/stats',
|
|
96
|
+
pluginId: 'logs',
|
|
89
97
|
handler: (req, res) => {
|
|
90
98
|
try {
|
|
91
99
|
const sources = getSources();
|
|
@@ -107,11 +115,12 @@ export function createLogsPlugin(config = {}) {
|
|
|
107
115
|
});
|
|
108
116
|
}
|
|
109
117
|
},
|
|
110
|
-
}
|
|
111
|
-
],
|
|
112
|
-
async onInit(context) {
|
|
118
|
+
});
|
|
113
119
|
const sources = getSources();
|
|
114
|
-
|
|
120
|
+
logger.debug(`Logs plugin initialized with ${sources.length} sources`);
|
|
121
|
+
},
|
|
122
|
+
async onStop() {
|
|
123
|
+
// Nothing to cleanup
|
|
115
124
|
},
|
|
116
125
|
};
|
|
117
126
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs-plugin.js","sourceRoot":"","sources":["../../src/plugins/logs-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,IAAI,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"logs-plugin.js","sourceRoot":"","sources":["../../src/plugins/logs-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
47
47
|
*/
|
|
48
48
|
import pg from 'pg';
|
|
49
|
-
import type {
|
|
49
|
+
import type { Plugin } from '../core/plugin-registry.js';
|
|
50
50
|
/**
|
|
51
51
|
* Configuration for the PostgreSQL plugin
|
|
52
52
|
*/
|
|
@@ -140,7 +140,7 @@ export declare function hasPostgres(name?: string): boolean;
|
|
|
140
140
|
*
|
|
141
141
|
* @param config - PostgreSQL configuration
|
|
142
142
|
* @param instanceName - Name for this PostgreSQL instance (default: 'default')
|
|
143
|
-
* @returns A
|
|
143
|
+
* @returns A plugin
|
|
144
144
|
*
|
|
145
145
|
* @example
|
|
146
146
|
* ```typescript
|
|
@@ -151,5 +151,5 @@ export declare function hasPostgres(name?: string): boolean;
|
|
|
151
151
|
* });
|
|
152
152
|
* ```
|
|
153
153
|
*/
|
|
154
|
-
export declare function createPostgresPlugin(config: PostgresPluginConfig, instanceName?: string):
|
|
154
|
+
export declare function createPostgresPlugin(config: PostgresPluginConfig, instanceName?: string): Plugin;
|
|
155
155
|
//# sourceMappingURL=postgres-plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/postgres-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"postgres-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/postgres-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,KAAK,EAAE,MAAM,EAAgC,MAAM,4BAA4B,CAAC;AAIvF;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,0EAA0E;IAC1E,GAAG,EAAE,MAAM,CAAC;IAEZ,0DAA0D;IAC1D,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,yDAAyD;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,yFAAyF;IACzF,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,kGAAkG;IAClG,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,uFAAuF;IACvF,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAE5B,gEAAgE;IAChE,WAAW,CAAC,EAAE,OAAO,CAAC;IAEtB,sDAAsD;IACtD,eAAe,CAAC,EAAE,MAAM,CAAC;IAEzB,6DAA6D;IAC7D,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAE7B,yEAAyE;IACzE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAErD,4BAA4B;IAC5B,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,UAAU,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,2DAA2D;IAC3D,SAAS,IAAI,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAEpC,sCAAsC;IACtC,KAAK,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;IAElF,mDAAmD;IACnD,QAAQ,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;IAE1F,2EAA2E;IAC3E,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;IAEnE;;;;;;;;;;;OAWG;IACH,WAAW,CAAC,CAAC,EAAE,QAAQ,EAAE,mBAAmB,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAE7D,uDAAuD;IACvD,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC;IAEnB,0BAA0B;IAC1B,QAAQ,IAAI;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IAE7D,4BAA4B;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAKD;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,IAAI,SAAY,GAAG,gBAAgB,CAM9D;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,IAAI,SAAY,GAAG,OAAO,CAErD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,EAC5B,YAAY,SAAY,GACvB,MAAM,CA6JR"}
|
|
@@ -83,7 +83,7 @@ export function hasPostgres(name = 'default') {
|
|
|
83
83
|
*
|
|
84
84
|
* @param config - PostgreSQL configuration
|
|
85
85
|
* @param instanceName - Name for this PostgreSQL instance (default: 'default')
|
|
86
|
-
* @returns A
|
|
86
|
+
* @returns A plugin
|
|
87
87
|
*
|
|
88
88
|
* @example
|
|
89
89
|
* ```typescript
|
|
@@ -96,6 +96,7 @@ export function hasPostgres(name = 'default') {
|
|
|
96
96
|
*/
|
|
97
97
|
export function createPostgresPlugin(config, instanceName = 'default') {
|
|
98
98
|
let pool = null;
|
|
99
|
+
const pluginId = `postgres:${instanceName}`;
|
|
99
100
|
const createInstance = () => {
|
|
100
101
|
if (!pool) {
|
|
101
102
|
pool = new Pool({
|
|
@@ -183,10 +184,11 @@ export function createPostgresPlugin(config, instanceName = 'default') {
|
|
|
183
184
|
return instance;
|
|
184
185
|
};
|
|
185
186
|
return {
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
187
|
+
id: pluginId,
|
|
188
|
+
name: `PostgreSQL (${instanceName})`,
|
|
189
|
+
version: '1.0.0',
|
|
190
|
+
async onStart(_pluginConfig, registry) {
|
|
191
|
+
const logger = registry.getLogger(pluginId);
|
|
190
192
|
// Create and register the instance
|
|
191
193
|
const instance = createInstance();
|
|
192
194
|
instances.set(instanceName, instance);
|
|
@@ -201,7 +203,7 @@ export function createPostgresPlugin(config, instanceName = 'default') {
|
|
|
201
203
|
}
|
|
202
204
|
// Register health check if enabled
|
|
203
205
|
if (config.healthCheck !== false) {
|
|
204
|
-
registerHealthCheck({
|
|
206
|
+
registry.registerHealthCheck({
|
|
205
207
|
name: config.healthCheckName ?? 'postgres',
|
|
206
208
|
type: 'custom',
|
|
207
209
|
interval: config.healthCheckInterval ?? 30000,
|
|
@@ -232,7 +234,7 @@ export function createPostgresPlugin(config, instanceName = 'default') {
|
|
|
232
234
|
});
|
|
233
235
|
}
|
|
234
236
|
},
|
|
235
|
-
async
|
|
237
|
+
async onStop() {
|
|
236
238
|
const instance = instances.get(instanceName);
|
|
237
239
|
if (instance) {
|
|
238
240
|
await instance.close();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-plugin.js","sourceRoot":"","sources":["../../src/plugins/postgres-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8CG;AAEH,OAAO,EAAE,MAAM,IAAI,CAAC;AAGpB,MAAM,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;AAqFpB,kDAAkD;AAClD,MAAM,SAAS,GAAG,IAAI,GAAG,EAA4B,CAAC;AAEtD;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,WAAW,CAAC,IAAI,GAAG,SAAS;IAC1C,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACrC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,IAAI,KAAK,CAAC,wBAAwB,IAAI,oDAAoD,CAAC,CAAC;IACpG,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAI,GAAG,SAAS;IAC1C,OAAO,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAA4B,EAC5B,YAAY,GAAG,SAAS;IAExB,IAAI,IAAI,GAAmB,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"postgres-plugin.js","sourceRoot":"","sources":["../../src/plugins/postgres-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -34,20 +34,37 @@ describe('PostgreSQL Plugin', () => {
|
|
|
34
34
|
maxConnections: 10,
|
|
35
35
|
healthCheck: false, // Disable for unit tests
|
|
36
36
|
};
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
37
|
+
// Create a mock registry that matches the new Plugin interface
|
|
38
|
+
const createMockRegistry = () => ({
|
|
39
|
+
hasPlugin: vi.fn().mockReturnValue(false),
|
|
40
|
+
getPlugin: vi.fn().mockReturnValue(null),
|
|
41
|
+
listPlugins: vi.fn().mockReturnValue([]),
|
|
42
|
+
addRoute: vi.fn(),
|
|
43
|
+
addMenuItem: vi.fn(),
|
|
44
|
+
addPage: vi.fn(),
|
|
45
|
+
addWidget: vi.fn(),
|
|
46
|
+
getRoutes: vi.fn().mockReturnValue([]),
|
|
47
|
+
getMenuItems: vi.fn().mockReturnValue([]),
|
|
48
|
+
getPages: vi.fn().mockReturnValue([]),
|
|
49
|
+
getWidgets: vi.fn().mockReturnValue([]),
|
|
50
|
+
getConfig: vi.fn().mockReturnValue({}),
|
|
51
|
+
setConfig: vi.fn().mockResolvedValue(undefined),
|
|
52
|
+
subscribe: vi.fn().mockReturnValue(() => { }),
|
|
53
|
+
emit: vi.fn(),
|
|
54
|
+
registerHealthCheck: vi.fn(),
|
|
55
|
+
getApp: vi.fn().mockReturnValue({}),
|
|
56
|
+
getRouter: vi.fn().mockReturnValue({}),
|
|
57
|
+
getLogger: vi.fn().mockReturnValue({
|
|
42
58
|
debug: vi.fn(),
|
|
43
59
|
info: vi.fn(),
|
|
44
60
|
warn: vi.fn(),
|
|
45
61
|
error: vi.fn(),
|
|
46
|
-
},
|
|
47
|
-
|
|
48
|
-
|
|
62
|
+
}),
|
|
63
|
+
});
|
|
64
|
+
let mockRegistry;
|
|
49
65
|
beforeEach(() => {
|
|
50
66
|
vi.clearAllMocks();
|
|
67
|
+
mockRegistry = createMockRegistry();
|
|
51
68
|
});
|
|
52
69
|
afterEach(async () => {
|
|
53
70
|
// Clean up any registered instances
|
|
@@ -59,33 +76,34 @@ describe('PostgreSQL Plugin', () => {
|
|
|
59
76
|
describe('createPostgresPlugin', () => {
|
|
60
77
|
it('should create a plugin with correct name', () => {
|
|
61
78
|
const plugin = createPostgresPlugin(mockConfig, 'test');
|
|
62
|
-
expect(plugin.name).toBe('
|
|
79
|
+
expect(plugin.name).toBe('PostgreSQL (test)');
|
|
63
80
|
});
|
|
64
81
|
it('should use "default" as instance name when not specified', () => {
|
|
65
82
|
const plugin = createPostgresPlugin(mockConfig);
|
|
66
|
-
expect(plugin.name).toBe('
|
|
83
|
+
expect(plugin.name).toBe('PostgreSQL (default)');
|
|
67
84
|
});
|
|
68
|
-
it('should have
|
|
69
|
-
const plugin = createPostgresPlugin(mockConfig);
|
|
70
|
-
expect(plugin.
|
|
85
|
+
it('should have correct plugin id', () => {
|
|
86
|
+
const plugin = createPostgresPlugin(mockConfig, 'test');
|
|
87
|
+
expect(plugin.id).toBe('postgres:test');
|
|
71
88
|
});
|
|
72
89
|
});
|
|
73
|
-
describe('
|
|
90
|
+
describe('onStart', () => {
|
|
74
91
|
it('should register the postgres instance', async () => {
|
|
75
92
|
const plugin = createPostgresPlugin(mockConfig, 'test');
|
|
76
|
-
await plugin.
|
|
93
|
+
await plugin.onStart({}, mockRegistry);
|
|
77
94
|
expect(hasPostgres('test')).toBe(true);
|
|
78
95
|
});
|
|
79
96
|
it('should log debug message on successful connection', async () => {
|
|
80
97
|
const plugin = createPostgresPlugin(mockConfig, 'test');
|
|
81
|
-
await plugin.
|
|
82
|
-
|
|
98
|
+
await plugin.onStart({}, mockRegistry);
|
|
99
|
+
const logger = mockRegistry.getLogger('postgres:test');
|
|
100
|
+
expect(logger.debug).toHaveBeenCalledWith(expect.stringContaining('connected'));
|
|
83
101
|
});
|
|
84
102
|
it('should register health check when enabled', async () => {
|
|
85
103
|
const configWithHealth = { ...mockConfig, healthCheck: true };
|
|
86
104
|
const plugin = createPostgresPlugin(configWithHealth, 'test');
|
|
87
|
-
await plugin.
|
|
88
|
-
expect(
|
|
105
|
+
await plugin.onStart({}, mockRegistry);
|
|
106
|
+
expect(mockRegistry.registerHealthCheck).toHaveBeenCalledWith(expect.objectContaining({
|
|
89
107
|
name: 'postgres',
|
|
90
108
|
type: 'custom',
|
|
91
109
|
}));
|
|
@@ -97,8 +115,8 @@ describe('PostgreSQL Plugin', () => {
|
|
|
97
115
|
healthCheckName: 'custom-db',
|
|
98
116
|
};
|
|
99
117
|
const plugin = createPostgresPlugin(configWithCustomName, 'test');
|
|
100
|
-
await plugin.
|
|
101
|
-
expect(
|
|
118
|
+
await plugin.onStart({}, mockRegistry);
|
|
119
|
+
expect(mockRegistry.registerHealthCheck).toHaveBeenCalledWith(expect.objectContaining({
|
|
102
120
|
name: 'custom-db',
|
|
103
121
|
}));
|
|
104
122
|
});
|
|
@@ -106,7 +124,7 @@ describe('PostgreSQL Plugin', () => {
|
|
|
106
124
|
describe('getPostgres', () => {
|
|
107
125
|
it('should return registered instance', async () => {
|
|
108
126
|
const plugin = createPostgresPlugin(mockConfig, 'test');
|
|
109
|
-
await plugin.
|
|
127
|
+
await plugin.onStart({}, mockRegistry);
|
|
110
128
|
const db = getPostgres('test');
|
|
111
129
|
expect(db).toBeDefined();
|
|
112
130
|
expect(db.query).toBeDefined();
|
|
@@ -123,28 +141,28 @@ describe('PostgreSQL Plugin', () => {
|
|
|
123
141
|
});
|
|
124
142
|
it('should return true for registered instance', async () => {
|
|
125
143
|
const plugin = createPostgresPlugin(mockConfig, 'test');
|
|
126
|
-
await plugin.
|
|
144
|
+
await plugin.onStart({}, mockRegistry);
|
|
127
145
|
expect(hasPostgres('test')).toBe(true);
|
|
128
146
|
});
|
|
129
147
|
});
|
|
130
148
|
describe('PostgresInstance', () => {
|
|
131
149
|
it('should execute query and return rows', async () => {
|
|
132
150
|
const plugin = createPostgresPlugin(mockConfig, 'test');
|
|
133
|
-
await plugin.
|
|
151
|
+
await plugin.onStart({}, mockRegistry);
|
|
134
152
|
const db = getPostgres('test');
|
|
135
153
|
const result = await db.query('SELECT 1');
|
|
136
154
|
expect(result).toEqual([]);
|
|
137
155
|
});
|
|
138
156
|
it('should return null from queryOne when no rows', async () => {
|
|
139
157
|
const plugin = createPostgresPlugin(mockConfig, 'test');
|
|
140
|
-
await plugin.
|
|
158
|
+
await plugin.onStart({}, mockRegistry);
|
|
141
159
|
const db = getPostgres('test');
|
|
142
160
|
const result = await db.queryOne('SELECT 1');
|
|
143
161
|
expect(result).toBeNull();
|
|
144
162
|
});
|
|
145
163
|
it('should return pool stats', async () => {
|
|
146
164
|
const plugin = createPostgresPlugin(mockConfig, 'test');
|
|
147
|
-
await plugin.
|
|
165
|
+
await plugin.onStart({}, mockRegistry);
|
|
148
166
|
const db = getPostgres('test');
|
|
149
167
|
const stats = db.getStats();
|
|
150
168
|
expect(stats).toHaveProperty('total');
|
|
@@ -152,12 +170,12 @@ describe('PostgreSQL Plugin', () => {
|
|
|
152
170
|
expect(stats).toHaveProperty('waiting');
|
|
153
171
|
});
|
|
154
172
|
});
|
|
155
|
-
describe('
|
|
173
|
+
describe('onStop', () => {
|
|
156
174
|
it('should close pool and unregister instance', async () => {
|
|
157
175
|
const plugin = createPostgresPlugin(mockConfig, 'test');
|
|
158
|
-
await plugin.
|
|
176
|
+
await plugin.onStart({}, mockRegistry);
|
|
159
177
|
expect(hasPostgres('test')).toBe(true);
|
|
160
|
-
await plugin.
|
|
178
|
+
await plugin.onStop();
|
|
161
179
|
expect(hasPostgres('test')).toBe(false);
|
|
162
180
|
});
|
|
163
181
|
});
|