@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
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-plugin.test.js","sourceRoot":"","sources":["../../src/plugins/postgres-plugin.test.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAEzE,sCAAsC;AACtC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE;IACjB,MAAM,UAAU,GAAG;QACjB,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC9C,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE;KACjB,CAAC;IAEF,MAAM,QAAQ,GAAG;QACf,OAAO,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,UAAU,CAAC;QAC9C,KAAK,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;QAC9C,GAAG,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,SAAS,CAAC;QACzC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE;QACX,UAAU,EAAE,CAAC;QACb,SAAS,EAAE,CAAC;QACZ,YAAY,EAAE,CAAC;KAChB,CAAC;IAEF,OAAO;QACL,OAAO,EAAE;YACP,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;SAC5B;QACD,IAAI,EAAE,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC;KAC5B,CAAC;AACJ,CAAC,CAAC,CAAC;AAEH,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,WAAW,GAEZ,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"postgres-plugin.test.js","sourceRoot":"","sources":["../../src/plugins/postgres-plugin.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Users Plugin Index
|
|
3
|
+
*
|
|
4
|
+
* User identity management plugin.
|
|
5
|
+
* For ban management, use the separate Bans Plugin which depends on this plugin.
|
|
6
|
+
*
|
|
7
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
8
|
+
*/
|
|
9
|
+
export { createUsersPlugin, getUserStore, getUserById, getUserByEmail, findOrCreateUser, } from './users-plugin.js';
|
|
10
|
+
export type { UsersPluginConfig, UserStore, User, CreateUserInput, UpdateUserInput, UserSearchParams, UserListResponse, PostgresUserStoreConfig, UserSyncConfig, UsersApiConfig, UsersUiConfig, } from './types.js';
|
|
11
|
+
export { postgresUserStore } from './stores/index.js';
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/plugins/users/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAG3B,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,YAAY,CAAC;AAGpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Users Plugin Index
|
|
3
|
+
*
|
|
4
|
+
* User identity management plugin.
|
|
5
|
+
* For ban management, use the separate Bans Plugin which depends on this plugin.
|
|
6
|
+
*
|
|
7
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
8
|
+
*/
|
|
9
|
+
// Main plugin
|
|
10
|
+
export { createUsersPlugin, getUserStore, getUserById, getUserByEmail, findOrCreateUser, } from './users-plugin.js';
|
|
11
|
+
// Stores
|
|
12
|
+
export { postgresUserStore } from './stores/index.js';
|
|
13
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/plugins/users/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,cAAc;AACd,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAiB3B,SAAS;AACT,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/plugins/users/stores/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/plugins/users/stores/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL User Store
|
|
3
|
+
*
|
|
4
|
+
* User storage implementation using PostgreSQL.
|
|
5
|
+
* Requires the 'pg' package to be installed.
|
|
6
|
+
*
|
|
7
|
+
* Note: Ban management is handled by the separate Bans Plugin.
|
|
8
|
+
*
|
|
9
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
10
|
+
*/
|
|
11
|
+
import type { UserStore, PostgresUserStoreConfig } from '../types.js';
|
|
12
|
+
/**
|
|
13
|
+
* Create a PostgreSQL user store
|
|
14
|
+
*
|
|
15
|
+
* @param config Configuration including a pg Pool instance
|
|
16
|
+
* @returns UserStore implementation
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* import { Pool } from 'pg';
|
|
21
|
+
* import { postgresUserStore } from '@qwickapps/server';
|
|
22
|
+
*
|
|
23
|
+
* const pool = new Pool({ connectionString: process.env.DATABASE_URL });
|
|
24
|
+
* const store = postgresUserStore({ pool });
|
|
25
|
+
* ```
|
|
26
|
+
*/
|
|
27
|
+
export declare function postgresUserStore(config: PostgresUserStoreConfig): UserStore;
|
|
28
|
+
//# sourceMappingURL=postgres-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-store.d.ts","sourceRoot":"","sources":["../../../../src/plugins/users/stores/postgres-store.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EACV,SAAS,EAMT,uBAAuB,EACxB,MAAM,aAAa,CAAC;AAOrB;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,uBAAuB,GAAG,SAAS,CAuL5E"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PostgreSQL User Store
|
|
3
|
+
*
|
|
4
|
+
* User storage implementation using PostgreSQL.
|
|
5
|
+
* Requires the 'pg' package to be installed.
|
|
6
|
+
*
|
|
7
|
+
* Note: Ban management is handled by the separate Bans Plugin.
|
|
8
|
+
*
|
|
9
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Create a PostgreSQL user store
|
|
13
|
+
*
|
|
14
|
+
* @param config Configuration including a pg Pool instance
|
|
15
|
+
* @returns UserStore implementation
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* ```ts
|
|
19
|
+
* import { Pool } from 'pg';
|
|
20
|
+
* import { postgresUserStore } from '@qwickapps/server';
|
|
21
|
+
*
|
|
22
|
+
* const pool = new Pool({ connectionString: process.env.DATABASE_URL });
|
|
23
|
+
* const store = postgresUserStore({ pool });
|
|
24
|
+
* ```
|
|
25
|
+
*/
|
|
26
|
+
export function postgresUserStore(config) {
|
|
27
|
+
const { pool: poolOrFn, usersTable = 'users', schema = 'public', autoCreateTables = true, } = config;
|
|
28
|
+
// Helper to get pool (supports lazy initialization via function)
|
|
29
|
+
const getPool = () => {
|
|
30
|
+
const pool = typeof poolOrFn === 'function' ? poolOrFn() : poolOrFn;
|
|
31
|
+
return pool;
|
|
32
|
+
};
|
|
33
|
+
const usersTableFull = `"${schema}"."${usersTable}"`;
|
|
34
|
+
return {
|
|
35
|
+
name: 'postgres',
|
|
36
|
+
async initialize() {
|
|
37
|
+
if (!autoCreateTables)
|
|
38
|
+
return;
|
|
39
|
+
// Create users table
|
|
40
|
+
await getPool().query(`
|
|
41
|
+
CREATE TABLE IF NOT EXISTS ${usersTableFull} (
|
|
42
|
+
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
|
|
43
|
+
email VARCHAR(255) NOT NULL UNIQUE,
|
|
44
|
+
name VARCHAR(255),
|
|
45
|
+
external_id VARCHAR(255),
|
|
46
|
+
provider VARCHAR(50),
|
|
47
|
+
picture TEXT,
|
|
48
|
+
metadata JSONB DEFAULT '{}',
|
|
49
|
+
created_at TIMESTAMPTZ DEFAULT NOW(),
|
|
50
|
+
updated_at TIMESTAMPTZ DEFAULT NOW(),
|
|
51
|
+
last_login_at TIMESTAMPTZ
|
|
52
|
+
);
|
|
53
|
+
|
|
54
|
+
CREATE INDEX IF NOT EXISTS idx_${usersTable}_email ON ${usersTableFull}(email);
|
|
55
|
+
CREATE INDEX IF NOT EXISTS idx_${usersTable}_external_id ON ${usersTableFull}(external_id, provider);
|
|
56
|
+
`);
|
|
57
|
+
},
|
|
58
|
+
async getById(id) {
|
|
59
|
+
const result = await getPool().query(`SELECT * FROM ${usersTableFull} WHERE id = $1`, [id]);
|
|
60
|
+
return result.rows[0] || null;
|
|
61
|
+
},
|
|
62
|
+
async getByEmail(email) {
|
|
63
|
+
const result = await getPool().query(`SELECT * FROM ${usersTableFull} WHERE LOWER(email) = LOWER($1)`, [
|
|
64
|
+
email,
|
|
65
|
+
]);
|
|
66
|
+
return result.rows[0] || null;
|
|
67
|
+
},
|
|
68
|
+
async getByExternalId(externalId, provider) {
|
|
69
|
+
const result = await getPool().query(`SELECT * FROM ${usersTableFull} WHERE external_id = $1 AND provider = $2`, [externalId, provider]);
|
|
70
|
+
return result.rows[0] || null;
|
|
71
|
+
},
|
|
72
|
+
async create(input) {
|
|
73
|
+
const result = await getPool().query(`INSERT INTO ${usersTableFull} (email, name, external_id, provider, picture, metadata)
|
|
74
|
+
VALUES ($1, $2, $3, $4, $5, $6)
|
|
75
|
+
RETURNING *`, [
|
|
76
|
+
input.email.toLowerCase(),
|
|
77
|
+
input.name,
|
|
78
|
+
input.external_id,
|
|
79
|
+
input.provider,
|
|
80
|
+
input.picture,
|
|
81
|
+
JSON.stringify(input.metadata || {}),
|
|
82
|
+
]);
|
|
83
|
+
return result.rows[0];
|
|
84
|
+
},
|
|
85
|
+
async update(id, input) {
|
|
86
|
+
const updates = [];
|
|
87
|
+
const values = [];
|
|
88
|
+
let paramIndex = 1;
|
|
89
|
+
if (input.name !== undefined) {
|
|
90
|
+
updates.push(`name = $${paramIndex++}`);
|
|
91
|
+
values.push(input.name);
|
|
92
|
+
}
|
|
93
|
+
if (input.picture !== undefined) {
|
|
94
|
+
updates.push(`picture = $${paramIndex++}`);
|
|
95
|
+
values.push(input.picture);
|
|
96
|
+
}
|
|
97
|
+
if (input.metadata !== undefined) {
|
|
98
|
+
updates.push(`metadata = $${paramIndex++}`);
|
|
99
|
+
values.push(JSON.stringify(input.metadata));
|
|
100
|
+
}
|
|
101
|
+
if (updates.length === 0) {
|
|
102
|
+
return this.getById(id);
|
|
103
|
+
}
|
|
104
|
+
updates.push(`updated_at = NOW()`);
|
|
105
|
+
values.push(id);
|
|
106
|
+
const result = await getPool().query(`UPDATE ${usersTableFull} SET ${updates.join(', ')} WHERE id = $${paramIndex} RETURNING *`, values);
|
|
107
|
+
return result.rows[0] || null;
|
|
108
|
+
},
|
|
109
|
+
async delete(id) {
|
|
110
|
+
const result = await getPool().query(`DELETE FROM ${usersTableFull} WHERE id = $1`, [id]);
|
|
111
|
+
return (result.rowCount ?? 0) > 0;
|
|
112
|
+
},
|
|
113
|
+
async search(params) {
|
|
114
|
+
const { query, provider, page = 1, limit = 20, sortBy = 'created_at', sortOrder = 'desc', } = params;
|
|
115
|
+
const conditions = [];
|
|
116
|
+
const values = [];
|
|
117
|
+
let paramIndex = 1;
|
|
118
|
+
if (query) {
|
|
119
|
+
conditions.push(`(LOWER(email) LIKE $${paramIndex} OR LOWER(name) LIKE $${paramIndex})`);
|
|
120
|
+
values.push(`%${query.toLowerCase()}%`);
|
|
121
|
+
paramIndex++;
|
|
122
|
+
}
|
|
123
|
+
if (provider) {
|
|
124
|
+
conditions.push(`provider = $${paramIndex}`);
|
|
125
|
+
values.push(provider);
|
|
126
|
+
paramIndex++;
|
|
127
|
+
}
|
|
128
|
+
const whereClause = conditions.length > 0 ? `WHERE ${conditions.join(' AND ')}` : '';
|
|
129
|
+
// Validate sort column to prevent SQL injection
|
|
130
|
+
const validSortColumns = ['email', 'name', 'created_at', 'last_login_at'];
|
|
131
|
+
const sortColumn = validSortColumns.includes(sortBy) ? sortBy : 'created_at';
|
|
132
|
+
const sortDir = sortOrder === 'asc' ? 'ASC' : 'DESC';
|
|
133
|
+
const offset = (page - 1) * limit;
|
|
134
|
+
// Get total count
|
|
135
|
+
const countResult = await getPool().query(`SELECT COUNT(*) FROM ${usersTableFull} ${whereClause}`, values);
|
|
136
|
+
const total = parseInt(countResult.rows[0].count, 10);
|
|
137
|
+
// Get users
|
|
138
|
+
const result = await getPool().query(`SELECT * FROM ${usersTableFull} ${whereClause}
|
|
139
|
+
ORDER BY ${sortColumn} ${sortDir}
|
|
140
|
+
LIMIT $${paramIndex} OFFSET $${paramIndex + 1}`, [...values, limit, offset]);
|
|
141
|
+
return {
|
|
142
|
+
users: result.rows,
|
|
143
|
+
total,
|
|
144
|
+
page,
|
|
145
|
+
limit,
|
|
146
|
+
totalPages: Math.ceil(total / limit),
|
|
147
|
+
};
|
|
148
|
+
},
|
|
149
|
+
async updateLastLogin(id) {
|
|
150
|
+
await getPool().query(`UPDATE ${usersTableFull} SET last_login_at = NOW() WHERE id = $1`, [id]);
|
|
151
|
+
},
|
|
152
|
+
async shutdown() {
|
|
153
|
+
// Pool is managed externally, nothing to do here
|
|
154
|
+
},
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=postgres-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"postgres-store.js","sourceRoot":"","sources":["../../../../src/plugins/users/stores/postgres-store.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Users Plugin Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for user identity management.
|
|
5
|
+
* Storage-agnostic - supports any database through the UserStore interface.
|
|
6
|
+
*
|
|
7
|
+
* Note: Ban management is handled by the separate Bans Plugin.
|
|
8
|
+
*
|
|
9
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* User record in the database
|
|
13
|
+
*/
|
|
14
|
+
export interface User {
|
|
15
|
+
/** Primary key - UUID */
|
|
16
|
+
id: string;
|
|
17
|
+
/** User's email address (unique) */
|
|
18
|
+
email: string;
|
|
19
|
+
/** User's display name */
|
|
20
|
+
name?: string;
|
|
21
|
+
/** External provider ID (e.g., Auth0 sub) */
|
|
22
|
+
external_id?: string;
|
|
23
|
+
/** Provider name (e.g., 'auth0', 'supabase') */
|
|
24
|
+
provider?: string;
|
|
25
|
+
/** Profile picture URL */
|
|
26
|
+
picture?: string;
|
|
27
|
+
/** Additional metadata (JSON) */
|
|
28
|
+
metadata?: Record<string, unknown>;
|
|
29
|
+
/** When the user was created */
|
|
30
|
+
created_at: Date;
|
|
31
|
+
/** When the user was last updated */
|
|
32
|
+
updated_at: Date;
|
|
33
|
+
/** When the user last logged in */
|
|
34
|
+
last_login_at?: Date;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* User creation payload
|
|
38
|
+
*/
|
|
39
|
+
export interface CreateUserInput {
|
|
40
|
+
email: string;
|
|
41
|
+
name?: string;
|
|
42
|
+
external_id?: string;
|
|
43
|
+
provider?: string;
|
|
44
|
+
picture?: string;
|
|
45
|
+
metadata?: Record<string, unknown>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* User update payload
|
|
49
|
+
*/
|
|
50
|
+
export interface UpdateUserInput {
|
|
51
|
+
name?: string;
|
|
52
|
+
picture?: string;
|
|
53
|
+
metadata?: Record<string, unknown>;
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* User search parameters
|
|
57
|
+
*/
|
|
58
|
+
export interface UserSearchParams {
|
|
59
|
+
/** Search query (searches email and name) */
|
|
60
|
+
query?: string;
|
|
61
|
+
/** Filter by provider */
|
|
62
|
+
provider?: string;
|
|
63
|
+
/** Page number (1-indexed) */
|
|
64
|
+
page?: number;
|
|
65
|
+
/** Items per page */
|
|
66
|
+
limit?: number;
|
|
67
|
+
/** Sort field */
|
|
68
|
+
sortBy?: 'email' | 'name' | 'created_at' | 'last_login_at';
|
|
69
|
+
/** Sort direction */
|
|
70
|
+
sortOrder?: 'asc' | 'desc';
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Paginated user list response
|
|
74
|
+
*/
|
|
75
|
+
export interface UserListResponse {
|
|
76
|
+
users: User[];
|
|
77
|
+
total: number;
|
|
78
|
+
page: number;
|
|
79
|
+
limit: number;
|
|
80
|
+
totalPages: number;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* User store interface - all storage backends must implement this
|
|
84
|
+
*/
|
|
85
|
+
export interface UserStore {
|
|
86
|
+
/** Store name (e.g., 'postgres', 'memory') */
|
|
87
|
+
name: string;
|
|
88
|
+
/**
|
|
89
|
+
* Initialize the store (create tables, etc.)
|
|
90
|
+
*/
|
|
91
|
+
initialize(): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Get a user by ID
|
|
94
|
+
*/
|
|
95
|
+
getById(id: string): Promise<User | null>;
|
|
96
|
+
/**
|
|
97
|
+
* Get a user by email
|
|
98
|
+
*/
|
|
99
|
+
getByEmail(email: string): Promise<User | null>;
|
|
100
|
+
/**
|
|
101
|
+
* Get a user by external ID
|
|
102
|
+
*/
|
|
103
|
+
getByExternalId(externalId: string, provider: string): Promise<User | null>;
|
|
104
|
+
/**
|
|
105
|
+
* Create a new user
|
|
106
|
+
*/
|
|
107
|
+
create(input: CreateUserInput): Promise<User>;
|
|
108
|
+
/**
|
|
109
|
+
* Update an existing user
|
|
110
|
+
*/
|
|
111
|
+
update(id: string, input: UpdateUserInput): Promise<User | null>;
|
|
112
|
+
/**
|
|
113
|
+
* Delete a user
|
|
114
|
+
*/
|
|
115
|
+
delete(id: string): Promise<boolean>;
|
|
116
|
+
/**
|
|
117
|
+
* Search/list users
|
|
118
|
+
*/
|
|
119
|
+
search(params: UserSearchParams): Promise<UserListResponse>;
|
|
120
|
+
/**
|
|
121
|
+
* Update last login timestamp
|
|
122
|
+
*/
|
|
123
|
+
updateLastLogin(id: string): Promise<void>;
|
|
124
|
+
/**
|
|
125
|
+
* Shutdown the store
|
|
126
|
+
*/
|
|
127
|
+
shutdown(): Promise<void>;
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* PostgreSQL user store configuration
|
|
131
|
+
* Note: Import Pool type from 'pg' when using this store
|
|
132
|
+
*/
|
|
133
|
+
export interface PostgresUserStoreConfig {
|
|
134
|
+
/** PostgreSQL pool instance or a function that returns one (for lazy initialization) */
|
|
135
|
+
pool: unknown | (() => unknown);
|
|
136
|
+
/** Users table name (default: 'users') */
|
|
137
|
+
usersTable?: string;
|
|
138
|
+
/** Schema name (default: 'public') */
|
|
139
|
+
schema?: string;
|
|
140
|
+
/** Auto-create tables on init (default: true) */
|
|
141
|
+
autoCreateTables?: boolean;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* User sync configuration
|
|
145
|
+
*/
|
|
146
|
+
export interface UserSyncConfig {
|
|
147
|
+
/** Enable sync */
|
|
148
|
+
enabled: boolean;
|
|
149
|
+
/** Create local user on first login */
|
|
150
|
+
onFirstLogin?: boolean;
|
|
151
|
+
/** Fields to sync from external provider */
|
|
152
|
+
syncFields?: Array<'email' | 'name' | 'picture'>;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* API configuration
|
|
156
|
+
*/
|
|
157
|
+
export interface UsersApiConfig {
|
|
158
|
+
/** API route prefix (default: '/api/users') */
|
|
159
|
+
prefix?: string;
|
|
160
|
+
/** Enable CRUD endpoints */
|
|
161
|
+
crud?: boolean;
|
|
162
|
+
/** Enable search endpoint */
|
|
163
|
+
search?: boolean;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* UI configuration
|
|
167
|
+
*/
|
|
168
|
+
export interface UsersUiConfig {
|
|
169
|
+
/** Enable UI pages */
|
|
170
|
+
enabled: boolean;
|
|
171
|
+
/** UI page path (default: '/users') */
|
|
172
|
+
page?: string;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Users plugin configuration
|
|
176
|
+
*/
|
|
177
|
+
export interface UsersPluginConfig {
|
|
178
|
+
/** User storage backend */
|
|
179
|
+
store: UserStore;
|
|
180
|
+
/** Sync configuration (optional) */
|
|
181
|
+
sync?: UserSyncConfig;
|
|
182
|
+
/** API configuration */
|
|
183
|
+
api?: UsersApiConfig;
|
|
184
|
+
/** UI configuration */
|
|
185
|
+
ui?: UsersUiConfig;
|
|
186
|
+
/** Enable debug logging */
|
|
187
|
+
debug?: boolean;
|
|
188
|
+
}
|
|
189
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/plugins/users/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Users Plugin Types
|
|
3
|
+
*
|
|
4
|
+
* Type definitions for user identity management.
|
|
5
|
+
* Storage-agnostic - supports any database through the UserStore interface.
|
|
6
|
+
*
|
|
7
|
+
* Note: Ban management is handled by the separate Bans Plugin.
|
|
8
|
+
*
|
|
9
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/plugins/users/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Users Plugin
|
|
3
|
+
*
|
|
4
|
+
* User identity management plugin for @qwickapps/server.
|
|
5
|
+
* Provides CRUD operations, search, and user lookup functionality.
|
|
6
|
+
*
|
|
7
|
+
* Note: Ban management is handled by the separate Bans Plugin.
|
|
8
|
+
*
|
|
9
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
10
|
+
*/
|
|
11
|
+
import type { Plugin } from '../../core/plugin-registry.js';
|
|
12
|
+
import type { UsersPluginConfig, UserStore, User } from './types.js';
|
|
13
|
+
/**
|
|
14
|
+
* Create the Users plugin
|
|
15
|
+
*/
|
|
16
|
+
export declare function createUsersPlugin(config: UsersPluginConfig): Plugin;
|
|
17
|
+
/**
|
|
18
|
+
* Get the current user store instance
|
|
19
|
+
*/
|
|
20
|
+
export declare function getUserStore(): UserStore | null;
|
|
21
|
+
/**
|
|
22
|
+
* Get a user by ID
|
|
23
|
+
*/
|
|
24
|
+
export declare function getUserById(id: string): Promise<User | null>;
|
|
25
|
+
/**
|
|
26
|
+
* Get a user by email
|
|
27
|
+
*/
|
|
28
|
+
export declare function getUserByEmail(email: string): Promise<User | null>;
|
|
29
|
+
/**
|
|
30
|
+
* Find or create a user from auth provider data
|
|
31
|
+
*/
|
|
32
|
+
export declare function findOrCreateUser(data: {
|
|
33
|
+
email: string;
|
|
34
|
+
name?: string;
|
|
35
|
+
external_id: string;
|
|
36
|
+
provider: string;
|
|
37
|
+
picture?: string;
|
|
38
|
+
}): Promise<User>;
|
|
39
|
+
//# sourceMappingURL=users-plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"users-plugin.d.ts","sourceRoot":"","sources":["../../../src/plugins/users/users-plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAgC,MAAM,+BAA+B,CAAC;AAC1F,OAAO,KAAK,EACV,iBAAiB,EACjB,SAAS,EACT,IAAI,EAIL,MAAM,YAAY,CAAC;AAKpB;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,CAiLnE;AAMD;;GAEG;AACH,wBAAgB,YAAY,IAAI,SAAS,GAAG,IAAI,CAE/C;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAKlE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CAKxE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,IAAI,EAAE;IAC3C,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,OAAO,CAAC,IAAI,CAAC,CAiChB"}
|