@qwickapps/server 1.3.1 → 1.4.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 +157 -0
- package/dist/core/control-panel.d.ts.map +1 -1
- package/dist/core/control-panel.js +114 -0
- package/dist/core/control-panel.js.map +1 -1
- package/dist/core/types.d.ts +19 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/plugins/auth/adapter-wrapper.d.ts +47 -0
- package/dist/plugins/auth/adapter-wrapper.d.ts.map +1 -0
- package/dist/plugins/auth/adapter-wrapper.js +166 -0
- package/dist/plugins/auth/adapter-wrapper.js.map +1 -0
- package/dist/plugins/auth/adapter-wrapper.test.d.ts +7 -0
- package/dist/plugins/auth/adapter-wrapper.test.d.ts.map +1 -0
- package/dist/plugins/auth/adapter-wrapper.test.js +303 -0
- package/dist/plugins/auth/adapter-wrapper.test.js.map +1 -0
- package/dist/plugins/auth/config-store.d.ts +11 -0
- package/dist/plugins/auth/config-store.d.ts.map +1 -0
- package/dist/plugins/auth/config-store.js +232 -0
- package/dist/plugins/auth/config-store.js.map +1 -0
- package/dist/plugins/auth/config-store.test.d.ts +7 -0
- package/dist/plugins/auth/config-store.test.d.ts.map +1 -0
- package/dist/plugins/auth/config-store.test.js +299 -0
- package/dist/plugins/auth/config-store.test.js.map +1 -0
- package/dist/plugins/auth/env-config.d.ts +51 -1
- package/dist/plugins/auth/env-config.d.ts.map +1 -1
- package/dist/plugins/auth/env-config.js +640 -7
- package/dist/plugins/auth/env-config.js.map +1 -1
- package/dist/plugins/auth/index.d.ts +6 -2
- package/dist/plugins/auth/index.d.ts.map +1 -1
- package/dist/plugins/auth/index.js +5 -1
- package/dist/plugins/auth/index.js.map +1 -1
- package/dist/plugins/auth/types.d.ts +106 -0
- package/dist/plugins/auth/types.d.ts.map +1 -1
- package/dist/plugins/index.d.ts +4 -2
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +3 -1
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/rate-limit/__tests__/rate-limit-plugin.test.d.ts +7 -0
- package/dist/plugins/rate-limit/__tests__/rate-limit-plugin.test.d.ts.map +1 -0
- package/dist/plugins/rate-limit/__tests__/rate-limit-plugin.test.js +220 -0
- package/dist/plugins/rate-limit/__tests__/rate-limit-plugin.test.js.map +1 -0
- package/dist/plugins/rate-limit/cleanup.d.ts +40 -0
- package/dist/plugins/rate-limit/cleanup.d.ts.map +1 -0
- package/dist/plugins/rate-limit/cleanup.js +72 -0
- package/dist/plugins/rate-limit/cleanup.js.map +1 -0
- package/dist/plugins/rate-limit/env-config.d.ts +91 -0
- package/dist/plugins/rate-limit/env-config.d.ts.map +1 -0
- package/dist/plugins/rate-limit/env-config.js +318 -0
- package/dist/plugins/rate-limit/env-config.js.map +1 -0
- package/dist/plugins/rate-limit/index.d.ts +76 -0
- package/dist/plugins/rate-limit/index.d.ts.map +1 -0
- package/dist/plugins/rate-limit/index.js +79 -0
- package/dist/plugins/rate-limit/index.js.map +1 -0
- package/dist/plugins/rate-limit/middleware.d.ts +40 -0
- package/dist/plugins/rate-limit/middleware.d.ts.map +1 -0
- package/dist/plugins/rate-limit/middleware.js +169 -0
- package/dist/plugins/rate-limit/middleware.js.map +1 -0
- package/dist/plugins/rate-limit/rate-limit-plugin.d.ts +44 -0
- package/dist/plugins/rate-limit/rate-limit-plugin.d.ts.map +1 -0
- package/dist/plugins/rate-limit/rate-limit-plugin.js +354 -0
- package/dist/plugins/rate-limit/rate-limit-plugin.js.map +1 -0
- package/dist/plugins/rate-limit/rate-limit-service.d.ts +110 -0
- package/dist/plugins/rate-limit/rate-limit-service.d.ts.map +1 -0
- package/dist/plugins/rate-limit/rate-limit-service.js +172 -0
- package/dist/plugins/rate-limit/rate-limit-service.js.map +1 -0
- package/dist/plugins/rate-limit/stores/cache-store.d.ts +33 -0
- package/dist/plugins/rate-limit/stores/cache-store.d.ts.map +1 -0
- package/dist/plugins/rate-limit/stores/cache-store.js +225 -0
- package/dist/plugins/rate-limit/stores/cache-store.js.map +1 -0
- package/dist/plugins/rate-limit/stores/index.d.ts +8 -0
- package/dist/plugins/rate-limit/stores/index.d.ts.map +1 -0
- package/dist/plugins/rate-limit/stores/index.js +8 -0
- package/dist/plugins/rate-limit/stores/index.js.map +1 -0
- package/dist/plugins/rate-limit/stores/postgres-store.d.ts +34 -0
- package/dist/plugins/rate-limit/stores/postgres-store.d.ts.map +1 -0
- package/dist/plugins/rate-limit/stores/postgres-store.js +320 -0
- package/dist/plugins/rate-limit/stores/postgres-store.js.map +1 -0
- package/dist/plugins/rate-limit/strategies/fixed-window.d.ts +21 -0
- package/dist/plugins/rate-limit/strategies/fixed-window.d.ts.map +1 -0
- package/dist/plugins/rate-limit/strategies/fixed-window.js +97 -0
- package/dist/plugins/rate-limit/strategies/fixed-window.js.map +1 -0
- package/dist/plugins/rate-limit/strategies/index.d.ts +14 -0
- package/dist/plugins/rate-limit/strategies/index.d.ts.map +1 -0
- package/dist/plugins/rate-limit/strategies/index.js +27 -0
- package/dist/plugins/rate-limit/strategies/index.js.map +1 -0
- package/dist/plugins/rate-limit/strategies/sliding-window.d.ts +22 -0
- package/dist/plugins/rate-limit/strategies/sliding-window.d.ts.map +1 -0
- package/dist/plugins/rate-limit/strategies/sliding-window.js +122 -0
- package/dist/plugins/rate-limit/strategies/sliding-window.js.map +1 -0
- package/dist/plugins/rate-limit/strategies/token-bucket.d.ts +28 -0
- package/dist/plugins/rate-limit/strategies/token-bucket.d.ts.map +1 -0
- package/dist/plugins/rate-limit/strategies/token-bucket.js +121 -0
- package/dist/plugins/rate-limit/strategies/token-bucket.js.map +1 -0
- package/dist/plugins/rate-limit/types.d.ts +265 -0
- package/dist/plugins/rate-limit/types.d.ts.map +1 -0
- package/dist/plugins/rate-limit/types.js +9 -0
- package/dist/plugins/rate-limit/types.js.map +1 -0
- package/dist-ui/assets/index-D7DoZ9rL.js +478 -0
- package/dist-ui/assets/index-D7DoZ9rL.js.map +1 -0
- package/dist-ui/index.html +1 -1
- package/dist-ui-lib/api/controlPanelApi.d.ts +141 -0
- package/dist-ui-lib/dashboard/widgets/AuthStatusWidget.d.ts +9 -0
- package/dist-ui-lib/dashboard/widgets/IntegrationStatusWidget.d.ts +9 -0
- package/dist-ui-lib/dashboard/widgets/index.d.ts +2 -0
- package/dist-ui-lib/index.js +3332 -2343
- package/dist-ui-lib/index.js.map +1 -1
- package/dist-ui-lib/pages/IntegrationsPage.d.ts +1 -0
- package/dist-ui-lib/pages/RateLimitPage.d.ts +1 -0
- package/package.json +1 -1
- package/src/core/control-panel.ts +128 -0
- package/src/core/types.ts +17 -0
- package/src/index.ts +38 -0
- package/src/plugins/auth/adapter-wrapper.test.ts +395 -0
- package/src/plugins/auth/adapter-wrapper.ts +205 -0
- package/src/plugins/auth/config-store.test.ts +417 -0
- package/src/plugins/auth/config-store.ts +305 -0
- package/src/plugins/auth/env-config.ts +714 -7
- package/src/plugins/auth/index.ts +22 -1
- package/src/plugins/auth/types.ts +138 -0
- package/src/plugins/index.ts +49 -0
- package/src/plugins/rate-limit/__tests__/rate-limit-plugin.test.ts +259 -0
- package/src/plugins/rate-limit/cleanup.ts +117 -0
- package/src/plugins/rate-limit/env-config.ts +400 -0
- package/src/plugins/rate-limit/index.ts +128 -0
- package/src/plugins/rate-limit/middleware.ts +212 -0
- package/src/plugins/rate-limit/rate-limit-plugin.ts +400 -0
- package/src/plugins/rate-limit/rate-limit-service.ts +228 -0
- package/src/plugins/rate-limit/stores/cache-store.ts +261 -0
- package/src/plugins/rate-limit/stores/index.ts +8 -0
- package/src/plugins/rate-limit/stores/postgres-store.ts +402 -0
- package/src/plugins/rate-limit/strategies/fixed-window.ts +116 -0
- package/src/plugins/rate-limit/strategies/index.ts +30 -0
- package/src/plugins/rate-limit/strategies/sliding-window.ts +157 -0
- package/src/plugins/rate-limit/strategies/token-bucket.ts +154 -0
- package/src/plugins/rate-limit/types.ts +338 -0
- package/ui/src/App.tsx +32 -14
- package/ui/src/api/controlPanelApi.ts +226 -0
- package/ui/src/dashboard/builtInWidgets.tsx +5 -1
- package/ui/src/dashboard/widgets/AuthStatusWidget.tsx +143 -0
- package/ui/src/dashboard/widgets/IntegrationStatusWidget.tsx +135 -0
- package/ui/src/dashboard/widgets/index.ts +2 -0
- package/ui/src/pages/AuthPage.tsx +986 -142
- package/ui/src/pages/IntegrationsPage.tsx +288 -0
- package/ui/src/pages/RateLimitPage.tsx +292 -0
- package/dist-ui/assets/index-BY8OxNgO.js +0 -465
- package/dist-ui/assets/index-BY8OxNgO.js.map +0 -1
package/dist-ui/index.html
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
<meta charset="UTF-8" />
|
|
5
5
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
6
|
<title>Control Panel</title>
|
|
7
|
-
<script type="module" crossorigin src="/assets/index-
|
|
7
|
+
<script type="module" crossorigin src="/assets/index-D7DoZ9rL.js"></script>
|
|
8
8
|
<link rel="stylesheet" crossorigin href="/assets/index-CiizQQnb.css">
|
|
9
9
|
</head>
|
|
10
10
|
<body>
|
|
@@ -213,12 +213,120 @@ export interface PluginDetailResponse {
|
|
|
213
213
|
contributions: PluginContributions;
|
|
214
214
|
}
|
|
215
215
|
export type AuthPluginState = 'disabled' | 'enabled' | 'error';
|
|
216
|
+
export type AuthAdapterType = 'auth0' | 'supabase' | 'supertokens' | 'basic';
|
|
216
217
|
export interface AuthConfigStatus {
|
|
217
218
|
state: AuthPluginState;
|
|
218
219
|
adapter: string | null;
|
|
219
220
|
error?: string;
|
|
220
221
|
missingVars?: string[];
|
|
221
222
|
config?: Record<string, string>;
|
|
223
|
+
/** Runtime config from database (if available) */
|
|
224
|
+
runtimeConfig?: RuntimeAuthConfig;
|
|
225
|
+
}
|
|
226
|
+
export interface RuntimeAuthConfig {
|
|
227
|
+
adapter: AuthAdapterType | null;
|
|
228
|
+
config: {
|
|
229
|
+
auth0?: Auth0AdapterConfig;
|
|
230
|
+
supabase?: SupabaseAdapterConfig;
|
|
231
|
+
supertokens?: SupertokensAdapterConfig;
|
|
232
|
+
basic?: BasicAdapterConfig;
|
|
233
|
+
};
|
|
234
|
+
settings: {
|
|
235
|
+
authRequired?: boolean;
|
|
236
|
+
excludePaths?: string[];
|
|
237
|
+
debug?: boolean;
|
|
238
|
+
};
|
|
239
|
+
updatedAt: string;
|
|
240
|
+
updatedBy?: string;
|
|
241
|
+
}
|
|
242
|
+
export interface Auth0AdapterConfig {
|
|
243
|
+
domain: string;
|
|
244
|
+
clientId: string;
|
|
245
|
+
clientSecret: string;
|
|
246
|
+
baseUrl: string;
|
|
247
|
+
secret: string;
|
|
248
|
+
audience?: string;
|
|
249
|
+
scopes?: string[];
|
|
250
|
+
allowedRoles?: string[];
|
|
251
|
+
allowedDomains?: string[];
|
|
252
|
+
}
|
|
253
|
+
export interface SupabaseAdapterConfig {
|
|
254
|
+
url: string;
|
|
255
|
+
anonKey: string;
|
|
256
|
+
}
|
|
257
|
+
export interface BasicAdapterConfig {
|
|
258
|
+
username: string;
|
|
259
|
+
password: string;
|
|
260
|
+
realm?: string;
|
|
261
|
+
}
|
|
262
|
+
export interface SupertokensAdapterConfig {
|
|
263
|
+
connectionUri: string;
|
|
264
|
+
apiKey?: string;
|
|
265
|
+
appName: string;
|
|
266
|
+
apiDomain: string;
|
|
267
|
+
websiteDomain: string;
|
|
268
|
+
apiBasePath?: string;
|
|
269
|
+
websiteBasePath?: string;
|
|
270
|
+
enableEmailPassword?: boolean;
|
|
271
|
+
socialProviders?: {
|
|
272
|
+
google?: {
|
|
273
|
+
clientId: string;
|
|
274
|
+
clientSecret: string;
|
|
275
|
+
};
|
|
276
|
+
apple?: {
|
|
277
|
+
clientId: string;
|
|
278
|
+
clientSecret: string;
|
|
279
|
+
keyId: string;
|
|
280
|
+
teamId: string;
|
|
281
|
+
};
|
|
282
|
+
github?: {
|
|
283
|
+
clientId: string;
|
|
284
|
+
clientSecret: string;
|
|
285
|
+
};
|
|
286
|
+
};
|
|
287
|
+
}
|
|
288
|
+
export interface UpdateAuthConfigRequest {
|
|
289
|
+
adapter: AuthAdapterType;
|
|
290
|
+
config: Record<string, unknown>;
|
|
291
|
+
settings?: {
|
|
292
|
+
authRequired?: boolean;
|
|
293
|
+
excludePaths?: string[];
|
|
294
|
+
};
|
|
295
|
+
}
|
|
296
|
+
export interface TestProviderRequest {
|
|
297
|
+
adapter: AuthAdapterType;
|
|
298
|
+
config: Record<string, unknown>;
|
|
299
|
+
provider?: 'google' | 'github' | 'apple';
|
|
300
|
+
}
|
|
301
|
+
export interface TestProviderResponse {
|
|
302
|
+
success: boolean;
|
|
303
|
+
message: string;
|
|
304
|
+
details?: {
|
|
305
|
+
latency?: number;
|
|
306
|
+
version?: string;
|
|
307
|
+
};
|
|
308
|
+
}
|
|
309
|
+
export type RateLimitStrategy = 'sliding-window' | 'fixed-window' | 'token-bucket';
|
|
310
|
+
export interface RateLimitConfig {
|
|
311
|
+
windowMs: number;
|
|
312
|
+
maxRequests: number;
|
|
313
|
+
strategy: RateLimitStrategy;
|
|
314
|
+
cleanupEnabled: boolean;
|
|
315
|
+
cleanupIntervalMs: number;
|
|
316
|
+
store: string;
|
|
317
|
+
cache: string;
|
|
318
|
+
cacheAvailable: boolean;
|
|
319
|
+
}
|
|
320
|
+
export interface RateLimitConfigUpdateRequest {
|
|
321
|
+
windowMs?: number;
|
|
322
|
+
maxRequests?: number;
|
|
323
|
+
strategy?: RateLimitStrategy;
|
|
324
|
+
cleanupEnabled?: boolean;
|
|
325
|
+
cleanupIntervalMs?: number;
|
|
326
|
+
}
|
|
327
|
+
export interface RateLimitConfigUpdateResponse {
|
|
328
|
+
success: boolean;
|
|
329
|
+
config: RateLimitConfig;
|
|
222
330
|
}
|
|
223
331
|
declare class ControlPanelApi {
|
|
224
332
|
private baseUrl;
|
|
@@ -228,6 +336,15 @@ declare class ControlPanelApi {
|
|
|
228
336
|
* Call this when the control panel is mounted at a custom path.
|
|
229
337
|
*/
|
|
230
338
|
setBaseUrl(baseUrl: string): void;
|
|
339
|
+
/**
|
|
340
|
+
* Get the base URL for API requests.
|
|
341
|
+
*/
|
|
342
|
+
getBaseUrl(): string;
|
|
343
|
+
/**
|
|
344
|
+
* Generic fetch method for API requests.
|
|
345
|
+
* Automatically prepends the base URL and /api prefix.
|
|
346
|
+
*/
|
|
347
|
+
fetch<T = unknown>(path: string, options?: RequestInit): Promise<T>;
|
|
231
348
|
/**
|
|
232
349
|
* Detect which user management plugins are available by probing their endpoints
|
|
233
350
|
*/
|
|
@@ -273,6 +390,30 @@ declare class ControlPanelApi {
|
|
|
273
390
|
getUiContributions(): Promise<UiContributionsResponse>;
|
|
274
391
|
getAuthConfigStatus(): Promise<AuthConfigStatus>;
|
|
275
392
|
getAuthConfig(): Promise<AuthConfigStatus>;
|
|
393
|
+
/**
|
|
394
|
+
* Update auth configuration (save to database for hot-reload)
|
|
395
|
+
*/
|
|
396
|
+
updateAuthConfig(request: UpdateAuthConfigRequest): Promise<{
|
|
397
|
+
success: boolean;
|
|
398
|
+
message: string;
|
|
399
|
+
}>;
|
|
400
|
+
/**
|
|
401
|
+
* Delete auth configuration (revert to environment variables)
|
|
402
|
+
*/
|
|
403
|
+
deleteAuthConfig(): Promise<{
|
|
404
|
+
success: boolean;
|
|
405
|
+
message: string;
|
|
406
|
+
}>;
|
|
407
|
+
/**
|
|
408
|
+
* Test auth provider connection without saving
|
|
409
|
+
*/
|
|
410
|
+
testAuthProvider(request: TestProviderRequest): Promise<TestProviderResponse>;
|
|
411
|
+
/**
|
|
412
|
+
* Test current auth provider connection (uses existing env/runtime config)
|
|
413
|
+
*/
|
|
414
|
+
testCurrentAuthProvider(): Promise<TestProviderResponse>;
|
|
415
|
+
getRateLimitConfig(): Promise<RateLimitConfig>;
|
|
416
|
+
updateRateLimitConfig(updates: RateLimitConfigUpdateRequest): Promise<RateLimitConfigUpdateResponse>;
|
|
276
417
|
}
|
|
277
418
|
export declare const api: ControlPanelApi;
|
|
278
419
|
export {};
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Auth Status Widget
|
|
3
|
+
*
|
|
4
|
+
* Displays the authentication plugin status on the dashboard.
|
|
5
|
+
* Shows whether auth is enabled, the adapter type, and configuration status.
|
|
6
|
+
*
|
|
7
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
8
|
+
*/
|
|
9
|
+
export declare function AuthStatusWidget(): import("react/jsx-runtime").JSX.Element | null;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Integration Status Widget
|
|
3
|
+
*
|
|
4
|
+
* Displays the status of configured integrations with their connection status.
|
|
5
|
+
* Used in the dashboard to show a quick overview of integration health.
|
|
6
|
+
*
|
|
7
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
8
|
+
*/
|
|
9
|
+
export declare function IntegrationStatusWidget(): import("react/jsx-runtime").JSX.Element | null;
|