@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
|
@@ -7,6 +7,27 @@
|
|
|
7
7
|
import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest';
|
|
8
8
|
// Mock ioredis before importing the plugin
|
|
9
9
|
vi.mock('ioredis', () => {
|
|
10
|
+
// Create a mock stream that emits keys in batches
|
|
11
|
+
const createMockScanStream = (keys) => {
|
|
12
|
+
const handlers = {};
|
|
13
|
+
return {
|
|
14
|
+
on: vi.fn((event, handler) => {
|
|
15
|
+
if (!handlers[event])
|
|
16
|
+
handlers[event] = [];
|
|
17
|
+
handlers[event].push(handler);
|
|
18
|
+
// Simulate async emission after all handlers are registered
|
|
19
|
+
if (event === 'error') {
|
|
20
|
+
setTimeout(() => {
|
|
21
|
+
// Emit data in batches
|
|
22
|
+
handlers['data']?.forEach(h => h(keys));
|
|
23
|
+
// Then emit end
|
|
24
|
+
handlers['end']?.forEach(h => h());
|
|
25
|
+
}, 0);
|
|
26
|
+
}
|
|
27
|
+
return { on: vi.fn() };
|
|
28
|
+
}),
|
|
29
|
+
};
|
|
30
|
+
};
|
|
10
31
|
const mockClient = {
|
|
11
32
|
get: vi.fn().mockResolvedValue(null),
|
|
12
33
|
setex: vi.fn().mockResolvedValue('OK'),
|
|
@@ -17,6 +38,7 @@ vi.mock('ioredis', () => {
|
|
|
17
38
|
incr: vi.fn().mockResolvedValue(1),
|
|
18
39
|
incrby: vi.fn().mockResolvedValue(5),
|
|
19
40
|
keys: vi.fn().mockResolvedValue([]),
|
|
41
|
+
scanStream: vi.fn(() => createMockScanStream(['test:key1', 'test:key2', 'test:key3'])),
|
|
20
42
|
info: vi.fn().mockResolvedValue('used_memory_human:1.5M\n'),
|
|
21
43
|
dbsize: vi.fn().mockResolvedValue(100),
|
|
22
44
|
ping: vi.fn().mockResolvedValue('PONG'),
|
|
@@ -36,20 +58,37 @@ describe('Cache Plugin', () => {
|
|
|
36
58
|
defaultTtl: 3600,
|
|
37
59
|
healthCheck: false, // Disable for unit tests
|
|
38
60
|
};
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
61
|
+
// Create a mock registry that matches the new Plugin interface
|
|
62
|
+
const createMockRegistry = () => ({
|
|
63
|
+
hasPlugin: vi.fn().mockReturnValue(false),
|
|
64
|
+
getPlugin: vi.fn().mockReturnValue(null),
|
|
65
|
+
listPlugins: vi.fn().mockReturnValue([]),
|
|
66
|
+
addRoute: vi.fn(),
|
|
67
|
+
addMenuItem: vi.fn(),
|
|
68
|
+
addPage: vi.fn(),
|
|
69
|
+
addWidget: vi.fn(),
|
|
70
|
+
getRoutes: vi.fn().mockReturnValue([]),
|
|
71
|
+
getMenuItems: vi.fn().mockReturnValue([]),
|
|
72
|
+
getPages: vi.fn().mockReturnValue([]),
|
|
73
|
+
getWidgets: vi.fn().mockReturnValue([]),
|
|
74
|
+
getConfig: vi.fn().mockReturnValue({}),
|
|
75
|
+
setConfig: vi.fn().mockResolvedValue(undefined),
|
|
76
|
+
subscribe: vi.fn().mockReturnValue(() => { }),
|
|
77
|
+
emit: vi.fn(),
|
|
78
|
+
registerHealthCheck: vi.fn(),
|
|
79
|
+
getApp: vi.fn().mockReturnValue({}),
|
|
80
|
+
getRouter: vi.fn().mockReturnValue({}),
|
|
81
|
+
getLogger: vi.fn().mockReturnValue({
|
|
44
82
|
debug: vi.fn(),
|
|
45
83
|
info: vi.fn(),
|
|
46
84
|
warn: vi.fn(),
|
|
47
85
|
error: vi.fn(),
|
|
48
|
-
},
|
|
49
|
-
|
|
50
|
-
|
|
86
|
+
}),
|
|
87
|
+
});
|
|
88
|
+
let mockRegistry;
|
|
51
89
|
beforeEach(() => {
|
|
52
90
|
vi.clearAllMocks();
|
|
91
|
+
mockRegistry = createMockRegistry();
|
|
53
92
|
});
|
|
54
93
|
afterEach(async () => {
|
|
55
94
|
// Clean up any registered instances
|
|
@@ -61,33 +100,34 @@ describe('Cache Plugin', () => {
|
|
|
61
100
|
describe('createCachePlugin', () => {
|
|
62
101
|
it('should create a plugin with correct name', () => {
|
|
63
102
|
const plugin = createCachePlugin(mockConfig, 'test');
|
|
64
|
-
expect(plugin.name).toBe('
|
|
103
|
+
expect(plugin.name).toBe('Redis Cache (test)');
|
|
65
104
|
});
|
|
66
105
|
it('should use "default" as instance name when not specified', () => {
|
|
67
106
|
const plugin = createCachePlugin(mockConfig);
|
|
68
|
-
expect(plugin.name).toBe('
|
|
107
|
+
expect(plugin.name).toBe('Redis Cache (default)');
|
|
69
108
|
});
|
|
70
|
-
it('should have
|
|
71
|
-
const plugin = createCachePlugin(mockConfig);
|
|
72
|
-
expect(plugin.
|
|
109
|
+
it('should have correct plugin id', () => {
|
|
110
|
+
const plugin = createCachePlugin(mockConfig, 'test');
|
|
111
|
+
expect(plugin.id).toBe('cache:test');
|
|
73
112
|
});
|
|
74
113
|
});
|
|
75
|
-
describe('
|
|
114
|
+
describe('onStart', () => {
|
|
76
115
|
it('should register the cache instance', async () => {
|
|
77
116
|
const plugin = createCachePlugin(mockConfig, 'test');
|
|
78
|
-
await plugin.
|
|
117
|
+
await plugin.onStart({}, mockRegistry);
|
|
79
118
|
expect(hasCache('test')).toBe(true);
|
|
80
119
|
});
|
|
81
120
|
it('should log debug message on successful connection', async () => {
|
|
82
121
|
const plugin = createCachePlugin(mockConfig, 'test');
|
|
83
|
-
await plugin.
|
|
84
|
-
|
|
122
|
+
await plugin.onStart({}, mockRegistry);
|
|
123
|
+
const logger = mockRegistry.getLogger('cache:test');
|
|
124
|
+
expect(logger.debug).toHaveBeenCalledWith(expect.stringContaining('connected'));
|
|
85
125
|
});
|
|
86
126
|
it('should register health check when enabled', async () => {
|
|
87
127
|
const configWithHealth = { ...mockConfig, healthCheck: true };
|
|
88
128
|
const plugin = createCachePlugin(configWithHealth, 'test');
|
|
89
|
-
await plugin.
|
|
90
|
-
expect(
|
|
129
|
+
await plugin.onStart({}, mockRegistry);
|
|
130
|
+
expect(mockRegistry.registerHealthCheck).toHaveBeenCalledWith(expect.objectContaining({
|
|
91
131
|
name: 'redis',
|
|
92
132
|
type: 'custom',
|
|
93
133
|
}));
|
|
@@ -99,8 +139,8 @@ describe('Cache Plugin', () => {
|
|
|
99
139
|
healthCheckName: 'custom-cache',
|
|
100
140
|
};
|
|
101
141
|
const plugin = createCachePlugin(configWithCustomName, 'test');
|
|
102
|
-
await plugin.
|
|
103
|
-
expect(
|
|
142
|
+
await plugin.onStart({}, mockRegistry);
|
|
143
|
+
expect(mockRegistry.registerHealthCheck).toHaveBeenCalledWith(expect.objectContaining({
|
|
104
144
|
name: 'custom-cache',
|
|
105
145
|
}));
|
|
106
146
|
});
|
|
@@ -108,7 +148,7 @@ describe('Cache Plugin', () => {
|
|
|
108
148
|
describe('getCache', () => {
|
|
109
149
|
it('should return registered instance', async () => {
|
|
110
150
|
const plugin = createCachePlugin(mockConfig, 'test');
|
|
111
|
-
await plugin.
|
|
151
|
+
await plugin.onStart({}, mockRegistry);
|
|
112
152
|
const cache = getCache('test');
|
|
113
153
|
expect(cache).toBeDefined();
|
|
114
154
|
expect(cache.get).toBeDefined();
|
|
@@ -125,14 +165,14 @@ describe('Cache Plugin', () => {
|
|
|
125
165
|
});
|
|
126
166
|
it('should return true for registered instance', async () => {
|
|
127
167
|
const plugin = createCachePlugin(mockConfig, 'test');
|
|
128
|
-
await plugin.
|
|
168
|
+
await plugin.onStart({}, mockRegistry);
|
|
129
169
|
expect(hasCache('test')).toBe(true);
|
|
130
170
|
});
|
|
131
171
|
});
|
|
132
172
|
describe('CacheInstance', () => {
|
|
133
173
|
it('should get value and parse JSON', async () => {
|
|
134
174
|
const plugin = createCachePlugin(mockConfig, 'test');
|
|
135
|
-
await plugin.
|
|
175
|
+
await plugin.onStart({}, mockRegistry);
|
|
136
176
|
const cache = getCache('test');
|
|
137
177
|
// Mock will return null by default
|
|
138
178
|
const result = await cache.get('key');
|
|
@@ -140,14 +180,14 @@ describe('Cache Plugin', () => {
|
|
|
140
180
|
});
|
|
141
181
|
it('should set value with JSON stringification', async () => {
|
|
142
182
|
const plugin = createCachePlugin(mockConfig, 'test');
|
|
143
|
-
await plugin.
|
|
183
|
+
await plugin.onStart({}, mockRegistry);
|
|
144
184
|
const cache = getCache('test');
|
|
145
185
|
await cache.set('key', { foo: 'bar' }, 3600);
|
|
146
186
|
// Just verify it doesn't throw
|
|
147
187
|
});
|
|
148
188
|
it('should return cache stats', async () => {
|
|
149
189
|
const plugin = createCachePlugin(mockConfig, 'test');
|
|
150
|
-
await plugin.
|
|
190
|
+
await plugin.onStart({}, mockRegistry);
|
|
151
191
|
const cache = getCache('test');
|
|
152
192
|
const stats = await cache.getStats();
|
|
153
193
|
expect(stats).toHaveProperty('connected');
|
|
@@ -155,32 +195,56 @@ describe('Cache Plugin', () => {
|
|
|
155
195
|
});
|
|
156
196
|
it('should check if key exists', async () => {
|
|
157
197
|
const plugin = createCachePlugin(mockConfig, 'test');
|
|
158
|
-
await plugin.
|
|
198
|
+
await plugin.onStart({}, mockRegistry);
|
|
159
199
|
const cache = getCache('test');
|
|
160
200
|
const exists = await cache.exists('key');
|
|
161
201
|
expect(typeof exists).toBe('boolean');
|
|
162
202
|
});
|
|
163
203
|
it('should get TTL for a key', async () => {
|
|
164
204
|
const plugin = createCachePlugin(mockConfig, 'test');
|
|
165
|
-
await plugin.
|
|
205
|
+
await plugin.onStart({}, mockRegistry);
|
|
166
206
|
const cache = getCache('test');
|
|
167
207
|
const ttl = await cache.ttl('key');
|
|
168
208
|
expect(typeof ttl).toBe('number');
|
|
169
209
|
});
|
|
170
210
|
it('should increment a value', async () => {
|
|
171
211
|
const plugin = createCachePlugin(mockConfig, 'test');
|
|
172
|
-
await plugin.
|
|
212
|
+
await plugin.onStart({}, mockRegistry);
|
|
173
213
|
const cache = getCache('test');
|
|
174
214
|
const value = await cache.incr('counter');
|
|
175
215
|
expect(typeof value).toBe('number');
|
|
176
216
|
});
|
|
217
|
+
it('should scan keys using cursor-based iteration', async () => {
|
|
218
|
+
const plugin = createCachePlugin(mockConfig, 'test');
|
|
219
|
+
await plugin.onStart({}, mockRegistry);
|
|
220
|
+
const cache = getCache('test');
|
|
221
|
+
const keys = await cache.scanKeys('*');
|
|
222
|
+
// Mock returns ['test:key1', 'test:key2', 'test:key3']
|
|
223
|
+
// After prefix removal, should be ['key1', 'key2', 'key3']
|
|
224
|
+
expect(Array.isArray(keys)).toBe(true);
|
|
225
|
+
expect(keys).toHaveLength(3);
|
|
226
|
+
expect(keys).toContain('key1');
|
|
227
|
+
expect(keys).toContain('key2');
|
|
228
|
+
expect(keys).toContain('key3');
|
|
229
|
+
});
|
|
230
|
+
it('should pass count option to scanStream', async () => {
|
|
231
|
+
const plugin = createCachePlugin(mockConfig, 'test');
|
|
232
|
+
await plugin.onStart({}, mockRegistry);
|
|
233
|
+
const cache = getCache('test');
|
|
234
|
+
const client = cache.getClient();
|
|
235
|
+
await cache.scanKeys('*', { count: 500 });
|
|
236
|
+
expect(client.scanStream).toHaveBeenCalledWith({
|
|
237
|
+
match: 'test:*',
|
|
238
|
+
count: 500,
|
|
239
|
+
});
|
|
240
|
+
});
|
|
177
241
|
});
|
|
178
|
-
describe('
|
|
242
|
+
describe('onStop', () => {
|
|
179
243
|
it('should close client and unregister instance', async () => {
|
|
180
244
|
const plugin = createCachePlugin(mockConfig, 'test');
|
|
181
|
-
await plugin.
|
|
245
|
+
await plugin.onStart({}, mockRegistry);
|
|
182
246
|
expect(hasCache('test')).toBe(true);
|
|
183
|
-
await plugin.
|
|
247
|
+
await plugin.onStop();
|
|
184
248
|
expect(hasCache('test')).toBe(false);
|
|
185
249
|
});
|
|
186
250
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cache-plugin.test.js","sourceRoot":"","sources":["../../src/plugins/cache-plugin.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cache-plugin.test.js","sourceRoot":"","sources":["../../src/plugins/cache-plugin.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,11 +5,12 @@
|
|
|
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 { ConfigDisplayOptions } from '../core/types.js';
|
|
9
10
|
export interface ConfigPluginConfig extends ConfigDisplayOptions {
|
|
10
11
|
}
|
|
11
12
|
/**
|
|
12
13
|
* Create a config display plugin
|
|
13
14
|
*/
|
|
14
|
-
export declare function createConfigPlugin(config: ConfigPluginConfig):
|
|
15
|
+
export declare function createConfigPlugin(config: ConfigPluginConfig): Plugin;
|
|
15
16
|
//# sourceMappingURL=config-plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/config-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"config-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/config-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAgC,MAAM,4BAA4B,CAAC;AACvF,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAE7D,MAAM,WAAW,kBAAmB,SAAQ,oBAAoB;CAAG;AAQnE;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,MAAM,CA8FrE"}
|
|
@@ -10,12 +10,16 @@
|
|
|
10
10
|
*/
|
|
11
11
|
export function createConfigPlugin(config) {
|
|
12
12
|
return {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
id: 'config',
|
|
14
|
+
name: 'Config Plugin',
|
|
15
|
+
version: '1.0.0',
|
|
16
|
+
async onStart(_pluginConfig, registry) {
|
|
17
|
+
const logger = registry.getLogger('config');
|
|
18
|
+
// Register /config route
|
|
19
|
+
registry.addRoute({
|
|
17
20
|
method: 'get',
|
|
18
21
|
path: '/config',
|
|
22
|
+
pluginId: 'config',
|
|
19
23
|
handler: (_req, res) => {
|
|
20
24
|
const envVars = {};
|
|
21
25
|
// Get visible env vars
|
|
@@ -39,10 +43,12 @@ export function createConfigPlugin(config) {
|
|
|
39
43
|
config: envVars,
|
|
40
44
|
});
|
|
41
45
|
},
|
|
42
|
-
}
|
|
43
|
-
|
|
46
|
+
});
|
|
47
|
+
// Register /config/validate route
|
|
48
|
+
registry.addRoute({
|
|
44
49
|
method: 'get',
|
|
45
50
|
path: '/config/validate',
|
|
51
|
+
pluginId: 'config',
|
|
46
52
|
handler: (_req, res) => {
|
|
47
53
|
const results = [];
|
|
48
54
|
let allValid = true;
|
|
@@ -77,10 +83,11 @@ export function createConfigPlugin(config) {
|
|
|
77
83
|
results,
|
|
78
84
|
});
|
|
79
85
|
},
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
86
|
+
});
|
|
87
|
+
logger.debug(`Config plugin initialized with ${config.show.length} vars`);
|
|
88
|
+
},
|
|
89
|
+
async onStop() {
|
|
90
|
+
// Nothing to cleanup
|
|
84
91
|
},
|
|
85
92
|
};
|
|
86
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-plugin.js","sourceRoot":"","sources":["../../src/plugins/config-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;
|
|
1
|
+
{"version":3,"file":"config-plugin.js","sourceRoot":"","sources":["../../src/plugins/config-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,7 +5,7 @@
|
|
|
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
9
|
export interface DiagnosticsPluginConfig {
|
|
10
10
|
include?: {
|
|
11
11
|
logs?: {
|
|
@@ -25,5 +25,5 @@ export interface DiagnosticsPluginConfig {
|
|
|
25
25
|
/**
|
|
26
26
|
* Create a diagnostics plugin for AI agents
|
|
27
27
|
*/
|
|
28
|
-
export declare function createDiagnosticsPlugin(config?: DiagnosticsPluginConfig):
|
|
28
|
+
export declare function createDiagnosticsPlugin(config?: DiagnosticsPluginConfig): Plugin;
|
|
29
29
|
//# sourceMappingURL=diagnostics-plugin.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/diagnostics-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"diagnostics-plugin.d.ts","sourceRoot":"","sources":["../../src/plugins/diagnostics-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,OAAO,KAAK,EAAE,MAAM,EAAgC,MAAM,4BAA4B,CAAC;AAEvF,MAAM,WAAW,uBAAuB;IACtC,OAAO,CAAC,EAAE;QACR,IAAI,CAAC,EAAE;YACL,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,GAAG,CAAC,EAAE,MAAM,CAAC;SACd,CAAC;QACF,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;QACjB,MAAM,CAAC,EAAE,OAAO,CAAC;KAClB,CAAC;IACF,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,GAAG,CAAC,EAAE,MAAM,CAAC;KACd,CAAC;IACF,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,GAAE,uBAA4B,GAAG,MAAM,CA4HpF"}
|
|
@@ -13,12 +13,16 @@ import { resolve } from 'path';
|
|
|
13
13
|
export function createDiagnosticsPlugin(config = {}) {
|
|
14
14
|
const { include = { logs: { startup: 100, app: 200 }, health: true, config: true, system: true }, logPaths = { startup: './logs/startup.log', app: './logs/app.log' }, endpoint = '/diagnostics/full', } = config;
|
|
15
15
|
return {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
16
|
+
id: 'diagnostics',
|
|
17
|
+
name: 'Diagnostics Plugin',
|
|
18
|
+
version: '1.0.0',
|
|
19
|
+
async onStart(_pluginConfig, registry) {
|
|
20
|
+
const logger = registry.getLogger('diagnostics');
|
|
21
|
+
// Register full diagnostics endpoint
|
|
22
|
+
registry.addRoute({
|
|
20
23
|
method: 'get',
|
|
21
24
|
path: endpoint,
|
|
25
|
+
pluginId: 'diagnostics',
|
|
22
26
|
handler: (_req, res) => {
|
|
23
27
|
try {
|
|
24
28
|
const report = {
|
|
@@ -79,10 +83,12 @@ export function createDiagnosticsPlugin(config = {}) {
|
|
|
79
83
|
});
|
|
80
84
|
}
|
|
81
85
|
},
|
|
82
|
-
}
|
|
83
|
-
|
|
86
|
+
});
|
|
87
|
+
// Register summary diagnostics endpoint
|
|
88
|
+
registry.addRoute({
|
|
84
89
|
method: 'get',
|
|
85
90
|
path: '/diagnostics/summary',
|
|
91
|
+
pluginId: 'diagnostics',
|
|
86
92
|
handler: (_req, res) => {
|
|
87
93
|
try {
|
|
88
94
|
const memUsage = process.memoryUsage();
|
|
@@ -104,10 +110,11 @@ export function createDiagnosticsPlugin(config = {}) {
|
|
|
104
110
|
});
|
|
105
111
|
}
|
|
106
112
|
},
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
113
|
+
});
|
|
114
|
+
logger.debug('Diagnostics plugin initialized');
|
|
115
|
+
},
|
|
116
|
+
async onStop() {
|
|
117
|
+
// Nothing to cleanup
|
|
111
118
|
},
|
|
112
119
|
};
|
|
113
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics-plugin.js","sourceRoot":"","sources":["../../src/plugins/diagnostics-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,IAAI,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,MAAM,CAAC;AAqB/B;;GAEG;AACH,MAAM,UAAU,uBAAuB,CAAC,SAAkC,EAAE;IAC1E,MAAM,EACJ,OAAO,GAAG,EAAE,IAAI,EAAE,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,EACxF,QAAQ,GAAG,EAAE,OAAO,EAAE,oBAAoB,EAAE,GAAG,EAAE,gBAAgB,EAAE,EACnE,QAAQ,GAAG,mBAAmB,GAC/B,GAAG,MAAM,CAAC;IAEX,OAAO;QACL,
|
|
1
|
+
{"version":3,"file":"diagnostics-plugin.js","sourceRoot":"","sources":["../../src/plugins/diagnostics-plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Entitlements Plugin
|
|
3
|
+
*
|
|
4
|
+
* User entitlement management plugin for @qwickapps/server.
|
|
5
|
+
* Supports pluggable sources (PostgreSQL, Keap, etc.) with Redis caching.
|
|
6
|
+
*
|
|
7
|
+
* Entitlements are string-based tags (e.g., 'pro', 'enterprise', 'feature:analytics').
|
|
8
|
+
* Multiple sources can be combined - entitlements are merged from all sources.
|
|
9
|
+
*
|
|
10
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
11
|
+
*/
|
|
12
|
+
import type { RequestHandler } from 'express';
|
|
13
|
+
import type { Plugin } from '../../core/plugin-registry.js';
|
|
14
|
+
import type { EntitlementsPluginConfig, EntitlementSource, EntitlementResult, EntitlementDefinition, EntitlementStats } from './types.js';
|
|
15
|
+
/**
|
|
16
|
+
* Create the Entitlements plugin
|
|
17
|
+
*/
|
|
18
|
+
export declare function createEntitlementsPlugin(config: EntitlementsPluginConfig): Plugin;
|
|
19
|
+
/**
|
|
20
|
+
* Get the primary entitlement source
|
|
21
|
+
*/
|
|
22
|
+
export declare function getEntitlementSource(): EntitlementSource | null;
|
|
23
|
+
/**
|
|
24
|
+
* Check if the primary source is readonly
|
|
25
|
+
*/
|
|
26
|
+
export declare function isSourceReadonly(): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Get entitlements for an email (cache-first)
|
|
29
|
+
*/
|
|
30
|
+
export declare function getEntitlements(email: string): Promise<EntitlementResult>;
|
|
31
|
+
/**
|
|
32
|
+
* Refresh entitlements (bypass cache)
|
|
33
|
+
*/
|
|
34
|
+
export declare function refreshEntitlements(email: string): Promise<EntitlementResult>;
|
|
35
|
+
/**
|
|
36
|
+
* Check if user has a specific entitlement
|
|
37
|
+
*/
|
|
38
|
+
export declare function hasEntitlement(email: string, entitlement: string): Promise<boolean>;
|
|
39
|
+
/**
|
|
40
|
+
* Check if user has any of the specified entitlements
|
|
41
|
+
*/
|
|
42
|
+
export declare function hasAnyEntitlement(email: string, entitlements: string[]): Promise<boolean>;
|
|
43
|
+
/**
|
|
44
|
+
* Check if user has all of the specified entitlements
|
|
45
|
+
*/
|
|
46
|
+
export declare function hasAllEntitlements(email: string, entitlements: string[]): Promise<boolean>;
|
|
47
|
+
/**
|
|
48
|
+
* Grant an entitlement to a user
|
|
49
|
+
* @throws Error if source is read-only
|
|
50
|
+
*/
|
|
51
|
+
export declare function grantEntitlement(email: string, entitlement: string, grantedBy?: string): Promise<void>;
|
|
52
|
+
/**
|
|
53
|
+
* Revoke an entitlement from a user
|
|
54
|
+
* @throws Error if source is read-only
|
|
55
|
+
*/
|
|
56
|
+
export declare function revokeEntitlement(email: string, entitlement: string): Promise<void>;
|
|
57
|
+
/**
|
|
58
|
+
* Set all entitlements for a user (replaces existing)
|
|
59
|
+
* Used by sync services to bulk-update user entitlements from external sources
|
|
60
|
+
* @throws Error if source is read-only or doesn't support setEntitlements
|
|
61
|
+
*/
|
|
62
|
+
export declare function setEntitlements(email: string, entitlements: string[]): Promise<void>;
|
|
63
|
+
/**
|
|
64
|
+
* Get all available entitlement definitions
|
|
65
|
+
*/
|
|
66
|
+
export declare function getAvailableEntitlements(): Promise<EntitlementDefinition[]>;
|
|
67
|
+
/**
|
|
68
|
+
* Get entitlement statistics from the primary source
|
|
69
|
+
*/
|
|
70
|
+
export declare function getEntitlementStats(): Promise<EntitlementStats>;
|
|
71
|
+
/**
|
|
72
|
+
* Invalidate cache for an email
|
|
73
|
+
*/
|
|
74
|
+
export declare function invalidateEntitlementCache(email: string): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Store a mapping from external ID to email (for webhook invalidation)
|
|
77
|
+
*/
|
|
78
|
+
export declare function storeExternalIdMapping(source: string, externalId: string, email: string): Promise<void>;
|
|
79
|
+
/**
|
|
80
|
+
* Invalidate cache by external ID (for webhook handling)
|
|
81
|
+
*/
|
|
82
|
+
export declare function invalidateByExternalId(source: string, externalId: string): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Express middleware to require a specific entitlement
|
|
85
|
+
*/
|
|
86
|
+
export declare function requireEntitlement(entitlement: string): RequestHandler;
|
|
87
|
+
/**
|
|
88
|
+
* Express middleware to require any of the specified entitlements
|
|
89
|
+
*/
|
|
90
|
+
export declare function requireAnyEntitlement(entitlements: string[]): RequestHandler;
|
|
91
|
+
/**
|
|
92
|
+
* Express middleware to require all of the specified entitlements
|
|
93
|
+
*/
|
|
94
|
+
export declare function requireAllEntitlements(entitlements: string[]): RequestHandler;
|
|
95
|
+
//# sourceMappingURL=entitlements-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entitlements-plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/entitlements/entitlements-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAqB,cAAc,EAAE,MAAM,SAAS,CAAC;AACjE,OAAO,KAAK,EAAE,MAAM,EAAgC,MAAM,+BAA+B,CAAC;AAC1F,OAAO,KAAK,EACV,wBAAwB,EACxB,iBAAiB,EACjB,iBAAiB,EACjB,qBAAqB,EAErB,gBAAgB,EACjB,MAAM,YAAY,CAAC;AAepB;;GAEG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,wBAAwB,GAAG,MAAM,CAsWjF;AAMD;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,iBAAiB,GAAG,IAAI,CAE/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,OAAO,CAE1C;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkC/E;AAwED;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAGnF;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAGzF;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAG/F;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAGhG;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAkBf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAkBzF;AAED;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAiB1F;AAED;;GAEG;AACH,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAiCjF;AAED;;GAEG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,gBAAgB,CAAC,CAerE;AAED;;GAEG;AACH,wBAAsB,0BAA0B,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAS7E;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,IAAI,CAAC,CAYf;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW9F;AAMD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG,cAAc,CAmBtE;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,cAAc,CAoB5E;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,cAAc,CAoB7E"}
|