@qwickapps/server 1.6.1 → 1.7.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/CHANGELOG.md +39 -1
- package/README.md +255 -7
- package/dist/src/core/control-panel.d.ts.map +1 -0
- package/dist/src/core/control-panel.js.map +1 -0
- package/dist/src/core/gateway.d.ts.map +1 -0
- package/dist/src/core/gateway.js.map +1 -0
- package/dist/src/core/guards.d.ts.map +1 -0
- package/dist/src/core/guards.js.map +1 -0
- package/dist/src/core/health-manager.d.ts.map +1 -0
- package/dist/src/core/health-manager.js.map +1 -0
- package/dist/src/core/index.d.ts.map +1 -0
- package/dist/src/core/index.js.map +1 -0
- package/dist/src/core/logging.d.ts.map +1 -0
- package/dist/src/core/logging.js.map +1 -0
- package/dist/src/core/plugin-registry.d.ts.map +1 -0
- package/dist/src/core/plugin-registry.js.map +1 -0
- package/dist/src/core/types.d.ts.map +1 -0
- package/dist/src/core/types.js.map +1 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/plugins/api-keys/ApiKeysManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/api-keys/ApiKeysManagementPage.js.map +1 -0
- package/dist/src/plugins/api-keys/ApiKeysStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/api-keys/ApiKeysStatusWidget.js.map +1 -0
- package/dist/src/plugins/api-keys/api-keys-plugin.d.ts.map +1 -0
- package/dist/src/plugins/api-keys/api-keys-plugin.js.map +1 -0
- package/dist/src/plugins/api-keys/index.d.ts.map +1 -0
- package/dist/src/plugins/api-keys/index.js.map +1 -0
- package/dist/src/plugins/api-keys/middleware/bearer-token-auth.d.ts.map +1 -0
- package/dist/src/plugins/api-keys/middleware/bearer-token-auth.js.map +1 -0
- package/dist/src/plugins/api-keys/middleware/index.d.ts.map +1 -0
- package/dist/src/plugins/api-keys/middleware/index.js.map +1 -0
- package/dist/src/plugins/api-keys/middleware/usage-logging.d.ts.map +1 -0
- package/dist/src/plugins/api-keys/middleware/usage-logging.js.map +1 -0
- package/dist/src/plugins/api-keys/stores/index.d.ts.map +1 -0
- package/dist/src/plugins/api-keys/stores/index.js.map +1 -0
- package/dist/src/plugins/api-keys/stores/plugin-scope-store.d.ts.map +1 -0
- package/dist/src/plugins/api-keys/stores/plugin-scope-store.js.map +1 -0
- package/dist/src/plugins/api-keys/stores/postgres-store.d.ts.map +1 -0
- package/dist/src/plugins/api-keys/stores/postgres-store.js.map +1 -0
- package/dist/src/plugins/api-keys/stores/usage-log-store.d.ts.map +1 -0
- package/dist/src/plugins/api-keys/stores/usage-log-store.js.map +1 -0
- package/dist/src/plugins/api-keys/types.d.ts.map +1 -0
- package/dist/src/plugins/api-keys/types.js.map +1 -0
- package/dist/src/plugins/auth/AuthManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/auth/AuthManagementPage.js.map +1 -0
- package/dist/src/plugins/auth/AuthStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/auth/AuthStatusWidget.js.map +1 -0
- package/dist/src/plugins/auth/adapter-wrapper.d.ts.map +1 -0
- package/dist/src/plugins/auth/adapter-wrapper.js.map +1 -0
- package/dist/src/plugins/auth/adapters/auth0-adapter.d.ts.map +1 -0
- package/dist/src/plugins/auth/adapters/auth0-adapter.js.map +1 -0
- package/dist/src/plugins/auth/adapters/basic-adapter.d.ts.map +1 -0
- package/dist/src/plugins/auth/adapters/basic-adapter.js.map +1 -0
- package/dist/src/plugins/auth/adapters/index.d.ts.map +1 -0
- package/dist/src/plugins/auth/adapters/index.js.map +1 -0
- package/dist/src/plugins/auth/adapters/supabase-adapter.d.ts.map +1 -0
- package/dist/src/plugins/auth/adapters/supabase-adapter.js.map +1 -0
- package/dist/src/plugins/auth/adapters/supertokens-adapter.d.ts.map +1 -0
- package/dist/src/plugins/auth/adapters/supertokens-adapter.js.map +1 -0
- package/dist/src/plugins/auth/auth-plugin.d.ts.map +1 -0
- package/dist/src/plugins/auth/auth-plugin.js.map +1 -0
- package/dist/src/plugins/auth/config-store.d.ts.map +1 -0
- package/dist/src/plugins/auth/config-store.js.map +1 -0
- package/dist/src/plugins/auth/env-config.d.ts.map +1 -0
- package/dist/src/plugins/auth/env-config.js.map +1 -0
- package/dist/src/plugins/auth/index.d.ts.map +1 -0
- package/dist/src/plugins/auth/index.js.map +1 -0
- package/dist/src/plugins/auth/types.d.ts.map +1 -0
- package/dist/src/plugins/auth/types.js.map +1 -0
- package/dist/src/plugins/bans/BansManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/bans/BansManagementPage.js.map +1 -0
- package/dist/src/plugins/bans/BansStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/bans/BansStatusWidget.js.map +1 -0
- package/dist/src/plugins/bans/bans-plugin.d.ts.map +1 -0
- package/dist/src/plugins/bans/bans-plugin.js.map +1 -0
- package/dist/src/plugins/bans/index.d.ts.map +1 -0
- package/dist/src/plugins/bans/index.js.map +1 -0
- package/dist/src/plugins/bans/stores/index.d.ts.map +1 -0
- package/dist/src/plugins/bans/stores/index.js.map +1 -0
- package/dist/src/plugins/bans/stores/postgres-store.d.ts.map +1 -0
- package/dist/src/plugins/bans/stores/postgres-store.js.map +1 -0
- package/dist/src/plugins/bans/types.d.ts.map +1 -0
- package/dist/src/plugins/bans/types.js.map +1 -0
- package/dist/src/plugins/cache/CacheManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/cache/CacheManagementPage.js.map +1 -0
- package/dist/src/plugins/cache/CacheStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/cache/CacheStatusWidget.js.map +1 -0
- package/dist/src/plugins/cache/index.d.ts.map +1 -0
- package/dist/src/plugins/cache/index.js.map +1 -0
- package/dist/src/plugins/cache-plugin.d.ts.map +1 -0
- package/dist/src/plugins/cache-plugin.js.map +1 -0
- package/dist/src/plugins/cms/cms-plugin.d.ts.map +1 -0
- package/dist/src/plugins/cms/cms-plugin.js.map +1 -0
- package/dist/src/plugins/cms/index.d.ts.map +1 -0
- package/dist/src/plugins/cms/index.js.map +1 -0
- package/dist/src/plugins/config-plugin.d.ts.map +1 -0
- package/dist/src/plugins/config-plugin.js.map +1 -0
- package/dist/src/plugins/core/index.d.ts.map +1 -0
- package/dist/src/plugins/core/index.js.map +1 -0
- package/dist/src/plugins/devices/DevicesManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/devices/DevicesManagementPage.js.map +1 -0
- package/dist/src/plugins/devices/DevicesStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/devices/DevicesStatusWidget.js.map +1 -0
- package/dist/src/plugins/devices/adapters/compute-adapter.d.ts.map +1 -0
- package/dist/src/plugins/devices/adapters/compute-adapter.js.map +1 -0
- package/dist/src/plugins/devices/adapters/index.d.ts.map +1 -0
- package/dist/src/plugins/devices/adapters/index.js.map +1 -0
- package/dist/src/plugins/devices/adapters/mobile-adapter.d.ts.map +1 -0
- package/dist/src/plugins/devices/adapters/mobile-adapter.js.map +1 -0
- package/dist/src/plugins/devices/devices-plugin.d.ts.map +1 -0
- package/dist/src/plugins/devices/devices-plugin.js.map +1 -0
- package/dist/src/plugins/devices/index.d.ts.map +1 -0
- package/dist/src/plugins/devices/index.js.map +1 -0
- package/dist/src/plugins/devices/stores/index.d.ts.map +1 -0
- package/dist/src/plugins/devices/stores/index.js.map +1 -0
- package/dist/src/plugins/devices/stores/postgres-store.d.ts.map +1 -0
- package/dist/src/plugins/devices/stores/postgres-store.js.map +1 -0
- package/dist/src/plugins/devices/token-utils.d.ts.map +1 -0
- package/dist/src/plugins/devices/token-utils.js.map +1 -0
- package/dist/src/plugins/devices/types.d.ts.map +1 -0
- package/dist/src/plugins/devices/types.js.map +1 -0
- package/dist/src/plugins/diagnostics/DiagnosticsManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/diagnostics/DiagnosticsManagementPage.js.map +1 -0
- package/dist/src/plugins/diagnostics/DiagnosticsStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/diagnostics/DiagnosticsStatusWidget.js.map +1 -0
- package/dist/src/plugins/diagnostics/index.d.ts.map +1 -0
- package/dist/src/plugins/diagnostics/index.js.map +1 -0
- package/dist/src/plugins/diagnostics-plugin.d.ts.map +1 -0
- package/dist/src/plugins/diagnostics-plugin.js.map +1 -0
- package/dist/src/plugins/entitlements/EntitlementsManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/entitlements/EntitlementsManagementPage.js.map +1 -0
- package/dist/src/plugins/entitlements/EntitlementsStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/entitlements/EntitlementsStatusWidget.js.map +1 -0
- package/dist/src/plugins/entitlements/entitlements-plugin.d.ts.map +1 -0
- package/dist/src/plugins/entitlements/entitlements-plugin.js.map +1 -0
- package/dist/src/plugins/entitlements/index.d.ts.map +1 -0
- package/dist/src/plugins/entitlements/index.js.map +1 -0
- package/dist/src/plugins/entitlements/sources/index.d.ts.map +1 -0
- package/dist/src/plugins/entitlements/sources/index.js.map +1 -0
- package/dist/src/plugins/entitlements/sources/postgres-source.d.ts.map +1 -0
- package/dist/src/plugins/entitlements/sources/postgres-source.js.map +1 -0
- package/dist/src/plugins/entitlements/types.d.ts.map +1 -0
- package/dist/src/plugins/entitlements/types.js.map +1 -0
- package/dist/src/plugins/frontend-app-plugin.d.ts.map +1 -0
- package/dist/src/plugins/frontend-app-plugin.js.map +1 -0
- package/dist/src/plugins/health/HealthManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/health/HealthManagementPage.js.map +1 -0
- package/dist/src/plugins/health/HealthStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/health/HealthStatusWidget.js.map +1 -0
- package/dist/src/plugins/health/index.d.ts.map +1 -0
- package/dist/src/plugins/health/index.js.map +1 -0
- package/dist/src/plugins/health-plugin.d.ts.map +1 -0
- package/dist/src/plugins/health-plugin.js.map +1 -0
- package/dist/src/plugins/index.d.ts +56 -0
- package/dist/src/plugins/index.d.ts.map +1 -0
- package/dist/src/plugins/index.js +46 -0
- package/dist/src/plugins/index.js.map +1 -0
- package/dist/src/plugins/logs/LogsManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/logs/LogsManagementPage.js.map +1 -0
- package/dist/src/plugins/logs/LogsStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/logs/LogsStatusWidget.js.map +1 -0
- package/dist/src/plugins/logs/index.d.ts.map +1 -0
- package/dist/src/plugins/logs/index.js.map +1 -0
- package/dist/src/plugins/logs-plugin.d.ts.map +1 -0
- package/dist/src/plugins/logs-plugin.js.map +1 -0
- package/dist/src/plugins/maintenance/MaintenanceManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/maintenance/MaintenanceManagementPage.js.map +1 -0
- package/dist/src/plugins/maintenance/MaintenanceStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/maintenance/MaintenanceStatusWidget.js.map +1 -0
- package/dist/src/plugins/maintenance/SeedExecutor.d.ts.map +1 -0
- package/dist/src/plugins/maintenance/SeedExecutor.js.map +1 -0
- package/dist/src/plugins/maintenance/SeedHistory.d.ts.map +1 -0
- package/dist/src/plugins/maintenance/SeedHistory.js.map +1 -0
- package/dist/src/plugins/maintenance/SeedList.d.ts.map +1 -0
- package/dist/src/plugins/maintenance/SeedList.js.map +1 -0
- package/dist/src/plugins/maintenance/SeedManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/maintenance/SeedManagementPage.js.map +1 -0
- package/dist/src/plugins/maintenance/index.d.ts.map +1 -0
- package/dist/src/plugins/maintenance/index.js.map +1 -0
- package/dist/src/plugins/maintenance/seed-executor.d.ts.map +1 -0
- package/dist/src/plugins/maintenance/seed-executor.js.map +1 -0
- package/dist/src/plugins/maintenance-plugin.d.ts.map +1 -0
- package/dist/src/plugins/maintenance-plugin.js.map +1 -0
- package/dist/src/plugins/notifications/NotificationsManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/notifications/NotificationsManagementPage.js.map +1 -0
- package/dist/src/plugins/notifications/NotificationsStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/notifications/NotificationsStatusWidget.js.map +1 -0
- package/dist/src/plugins/notifications/index.d.ts.map +1 -0
- package/dist/src/plugins/notifications/index.js.map +1 -0
- package/dist/src/plugins/notifications/notifications-manager.d.ts.map +1 -0
- package/dist/src/plugins/notifications/notifications-manager.js.map +1 -0
- package/dist/src/plugins/notifications/notifications-plugin.d.ts.map +1 -0
- package/dist/src/plugins/notifications/notifications-plugin.js.map +1 -0
- package/dist/src/plugins/notifications/types.d.ts.map +1 -0
- package/dist/src/plugins/notifications/types.js.map +1 -0
- package/dist/src/plugins/parental/ParentalManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/parental/ParentalManagementPage.js.map +1 -0
- package/dist/src/plugins/parental/ParentalStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/parental/ParentalStatusWidget.js.map +1 -0
- package/dist/src/plugins/parental/adapters/index.d.ts.map +1 -0
- package/dist/src/plugins/parental/adapters/index.js.map +1 -0
- package/dist/src/plugins/parental/adapters/kids-adapter.d.ts.map +1 -0
- package/dist/src/plugins/parental/adapters/kids-adapter.js.map +1 -0
- package/dist/src/plugins/parental/index.d.ts.map +1 -0
- package/dist/src/plugins/parental/index.js.map +1 -0
- package/dist/src/plugins/parental/parental-plugin.d.ts.map +1 -0
- package/dist/src/plugins/parental/parental-plugin.js.map +1 -0
- package/dist/src/plugins/parental/stores/index.d.ts.map +1 -0
- package/dist/src/plugins/parental/stores/index.js.map +1 -0
- package/dist/src/plugins/parental/stores/postgres-store.d.ts.map +1 -0
- package/dist/src/plugins/parental/stores/postgres-store.js.map +1 -0
- package/dist/src/plugins/parental/types.d.ts.map +1 -0
- package/dist/src/plugins/parental/types.js.map +1 -0
- package/dist/src/plugins/postgres/PostgresManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/postgres/PostgresManagementPage.js.map +1 -0
- package/dist/src/plugins/postgres/PostgresStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/postgres/PostgresStatusWidget.js.map +1 -0
- package/dist/src/plugins/postgres/index.d.ts.map +1 -0
- package/dist/src/plugins/postgres/index.js.map +1 -0
- package/dist/src/plugins/postgres-plugin.d.ts.map +1 -0
- package/dist/src/plugins/postgres-plugin.js.map +1 -0
- package/dist/src/plugins/preferences/PreferencesManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/preferences/PreferencesManagementPage.js.map +1 -0
- package/dist/src/plugins/preferences/PreferencesStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/preferences/PreferencesStatusWidget.js.map +1 -0
- package/dist/src/plugins/preferences/index.d.ts.map +1 -0
- package/dist/src/plugins/preferences/index.js.map +1 -0
- package/dist/src/plugins/preferences/preferences-plugin.d.ts.map +1 -0
- package/dist/src/plugins/preferences/preferences-plugin.js.map +1 -0
- package/dist/src/plugins/preferences/stores/index.d.ts.map +1 -0
- package/dist/src/plugins/preferences/stores/index.js.map +1 -0
- package/dist/src/plugins/preferences/stores/postgres-store.d.ts.map +1 -0
- package/dist/src/plugins/preferences/stores/postgres-store.js.map +1 -0
- package/dist/src/plugins/preferences/types.d.ts.map +1 -0
- package/dist/src/plugins/preferences/types.js.map +1 -0
- package/dist/src/plugins/profiles/ProfilesManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/profiles/ProfilesManagementPage.js.map +1 -0
- package/dist/src/plugins/profiles/ProfilesStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/profiles/ProfilesStatusWidget.js.map +1 -0
- package/dist/src/plugins/profiles/index.d.ts.map +1 -0
- package/dist/src/plugins/profiles/index.js.map +1 -0
- package/dist/src/plugins/profiles/profiles-plugin.d.ts.map +1 -0
- package/dist/src/plugins/profiles/profiles-plugin.js.map +1 -0
- package/dist/src/plugins/profiles/stores/index.d.ts.map +1 -0
- package/dist/src/plugins/profiles/stores/index.js.map +1 -0
- package/dist/src/plugins/profiles/stores/postgres-store.d.ts.map +1 -0
- package/dist/src/plugins/profiles/stores/postgres-store.js.map +1 -0
- package/dist/src/plugins/profiles/types.d.ts.map +1 -0
- package/dist/src/plugins/profiles/types.js.map +1 -0
- package/dist/src/plugins/qwickbrain/QwickbrainManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/qwickbrain/QwickbrainManagementPage.js.map +1 -0
- package/dist/src/plugins/qwickbrain/QwickbrainStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/qwickbrain/QwickbrainStatusWidget.js.map +1 -0
- package/dist/src/plugins/qwickbrain/index.d.ts.map +1 -0
- package/dist/src/plugins/qwickbrain/index.js.map +1 -0
- package/dist/src/plugins/qwickbrain/qwickbrain-plugin.d.ts.map +1 -0
- package/dist/src/plugins/qwickbrain/qwickbrain-plugin.js.map +1 -0
- package/dist/src/plugins/qwickbrain/types.d.ts.map +1 -0
- package/dist/src/plugins/qwickbrain/types.js.map +1 -0
- package/dist/src/plugins/rate-limit/RateLimitManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/rate-limit/RateLimitManagementPage.js.map +1 -0
- package/dist/src/plugins/rate-limit/RateLimitStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/rate-limit/RateLimitStatusWidget.js.map +1 -0
- package/dist/src/plugins/rate-limit/cleanup.d.ts.map +1 -0
- package/dist/src/plugins/rate-limit/cleanup.js.map +1 -0
- package/dist/src/plugins/rate-limit/env-config.d.ts.map +1 -0
- package/dist/src/plugins/rate-limit/env-config.js.map +1 -0
- package/dist/src/plugins/rate-limit/index.d.ts.map +1 -0
- package/dist/src/plugins/rate-limit/index.js.map +1 -0
- package/dist/src/plugins/rate-limit/middleware.d.ts.map +1 -0
- package/dist/src/plugins/rate-limit/middleware.js.map +1 -0
- package/dist/src/plugins/rate-limit/rate-limit-plugin.d.ts.map +1 -0
- package/dist/src/plugins/rate-limit/rate-limit-plugin.js.map +1 -0
- package/dist/src/plugins/rate-limit/rate-limit-service.d.ts.map +1 -0
- package/dist/src/plugins/rate-limit/rate-limit-service.js.map +1 -0
- package/dist/src/plugins/rate-limit/stores/cache-store.d.ts.map +1 -0
- package/dist/src/plugins/rate-limit/stores/cache-store.js.map +1 -0
- package/dist/src/plugins/rate-limit/stores/index.d.ts.map +1 -0
- package/dist/src/plugins/rate-limit/stores/index.js.map +1 -0
- package/dist/src/plugins/rate-limit/stores/postgres-store.d.ts.map +1 -0
- package/dist/src/plugins/rate-limit/stores/postgres-store.js.map +1 -0
- package/dist/src/plugins/rate-limit/strategies/fixed-window.d.ts.map +1 -0
- package/dist/src/plugins/rate-limit/strategies/fixed-window.js.map +1 -0
- package/dist/src/plugins/rate-limit/strategies/index.d.ts.map +1 -0
- package/dist/src/plugins/rate-limit/strategies/index.js.map +1 -0
- package/dist/src/plugins/rate-limit/strategies/sliding-window.d.ts.map +1 -0
- package/dist/src/plugins/rate-limit/strategies/sliding-window.js.map +1 -0
- package/dist/src/plugins/rate-limit/strategies/token-bucket.d.ts.map +1 -0
- package/dist/src/plugins/rate-limit/strategies/token-bucket.js.map +1 -0
- package/dist/src/plugins/rate-limit/types.d.ts.map +1 -0
- package/dist/src/plugins/rate-limit/types.js.map +1 -0
- package/dist/src/plugins/subscriptions/SubscriptionsManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/subscriptions/SubscriptionsManagementPage.js.map +1 -0
- package/dist/src/plugins/subscriptions/SubscriptionsStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/subscriptions/SubscriptionsStatusWidget.js.map +1 -0
- package/dist/src/plugins/subscriptions/index.d.ts.map +1 -0
- package/dist/src/plugins/subscriptions/index.js.map +1 -0
- package/dist/src/plugins/subscriptions/stores/index.d.ts.map +1 -0
- package/dist/src/plugins/subscriptions/stores/index.js.map +1 -0
- package/dist/src/plugins/subscriptions/stores/postgres-store.d.ts.map +1 -0
- package/dist/src/plugins/subscriptions/stores/postgres-store.js.map +1 -0
- package/dist/src/plugins/subscriptions/subscriptions-plugin.d.ts.map +1 -0
- package/dist/src/plugins/subscriptions/subscriptions-plugin.js.map +1 -0
- package/dist/src/plugins/subscriptions/types.d.ts.map +1 -0
- package/dist/src/plugins/subscriptions/types.js.map +1 -0
- package/dist/src/plugins/tenants/index.d.ts +12 -0
- package/dist/src/plugins/tenants/index.d.ts.map +1 -0
- package/dist/src/plugins/tenants/index.js +13 -0
- package/dist/src/plugins/tenants/index.js.map +1 -0
- package/dist/src/plugins/tenants/stores/postgres-store.d.ts +26 -0
- package/dist/src/plugins/tenants/stores/postgres-store.d.ts.map +1 -0
- package/dist/src/plugins/tenants/stores/postgres-store.js +260 -0
- package/dist/src/plugins/tenants/stores/postgres-store.js.map +1 -0
- package/dist/src/plugins/tenants/tenants-plugin.d.ts +28 -0
- package/dist/src/plugins/tenants/tenants-plugin.d.ts.map +1 -0
- package/dist/src/plugins/tenants/tenants-plugin.js +627 -0
- package/dist/src/plugins/tenants/tenants-plugin.js.map +1 -0
- package/dist/src/plugins/tenants/types.d.ts +217 -0
- package/dist/src/plugins/tenants/types.d.ts.map +1 -0
- package/dist/src/plugins/tenants/types.js +13 -0
- package/dist/src/plugins/tenants/types.js.map +1 -0
- package/dist/src/plugins/usage/UsageManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/usage/UsageManagementPage.js.map +1 -0
- package/dist/src/plugins/usage/UsageStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/usage/UsageStatusWidget.js.map +1 -0
- package/dist/src/plugins/usage/index.d.ts.map +1 -0
- package/dist/src/plugins/usage/index.js.map +1 -0
- package/dist/src/plugins/usage/stores/index.d.ts.map +1 -0
- package/dist/src/plugins/usage/stores/index.js.map +1 -0
- package/dist/src/plugins/usage/stores/postgres-store.d.ts.map +1 -0
- package/dist/src/plugins/usage/stores/postgres-store.js.map +1 -0
- package/dist/src/plugins/usage/types.d.ts.map +1 -0
- package/dist/src/plugins/usage/types.js.map +1 -0
- package/dist/src/plugins/usage/usage-plugin.d.ts.map +1 -0
- package/dist/src/plugins/usage/usage-plugin.js.map +1 -0
- package/dist/src/plugins/users/UsersManagementPage.d.ts.map +1 -0
- package/dist/src/plugins/users/UsersManagementPage.js.map +1 -0
- package/dist/src/plugins/users/UsersStatusWidget.d.ts.map +1 -0
- package/dist/src/plugins/users/UsersStatusWidget.js.map +1 -0
- package/dist/src/plugins/users/index.d.ts.map +1 -0
- package/dist/src/plugins/users/index.js.map +1 -0
- package/dist/src/plugins/users/stores/index.d.ts.map +1 -0
- package/dist/src/plugins/users/stores/index.js.map +1 -0
- package/dist/src/plugins/users/stores/postgres-store.d.ts.map +1 -0
- package/dist/src/plugins/users/stores/postgres-store.js.map +1 -0
- package/dist/src/plugins/users/types.d.ts.map +1 -0
- package/dist/src/plugins/users/types.js.map +1 -0
- package/dist/src/plugins/users/users-plugin.d.ts.map +1 -0
- package/dist/src/plugins/users/users-plugin.js +525 -0
- package/dist/src/plugins/users/users-plugin.js.map +1 -0
- package/dist/ui/src/api/clientBuilder.d.ts +34 -0
- package/dist/ui/src/api/clientBuilder.d.ts.map +1 -0
- package/dist/ui/src/api/clientBuilder.js +157 -0
- package/dist/ui/src/api/clientBuilder.js.map +1 -0
- package/dist/ui/src/api/controlPanelApi.d.ts +596 -0
- package/dist/ui/src/api/controlPanelApi.d.ts.map +1 -0
- package/dist/ui/src/api/controlPanelApi.js +487 -0
- package/dist/ui/src/api/controlPanelApi.js.map +1 -0
- package/dist/ui/src/api/types.d.ts +314 -0
- package/dist/ui/src/api/types.d.ts.map +1 -0
- package/dist/ui/src/api/types.js +11 -0
- package/dist/ui/src/api/types.js.map +1 -0
- package/dist/ui/src/components/ControlPanelApp.d.ts +63 -0
- package/dist/ui/src/components/ControlPanelApp.d.ts.map +1 -0
- package/dist/ui/src/components/ControlPanelApp.js +92 -0
- package/dist/ui/src/components/ControlPanelApp.js.map +1 -0
- package/dist/ui/src/components/index.d.ts +22 -0
- package/dist/ui/src/components/index.d.ts.map +1 -0
- package/dist/ui/src/components/index.js +28 -0
- package/dist/ui/src/components/index.js.map +1 -0
- package/dist/ui/src/components/plugins/PluginConfigPanel.d.ts +66 -0
- package/dist/ui/src/components/plugins/PluginConfigPanel.d.ts.map +1 -0
- package/dist/ui/src/components/plugins/PluginConfigPanel.js +107 -0
- package/dist/ui/src/components/plugins/PluginConfigPanel.js.map +1 -0
- package/dist/ui/src/components/plugins/PluginManagementPage.d.ts +63 -0
- package/dist/ui/src/components/plugins/PluginManagementPage.d.ts.map +1 -0
- package/dist/ui/src/components/plugins/PluginManagementPage.js +41 -0
- package/dist/ui/src/components/plugins/PluginManagementPage.js.map +1 -0
- package/dist/ui/src/components/plugins/PluginStatusWidget.d.ts +52 -0
- package/dist/ui/src/components/plugins/PluginStatusWidget.d.ts.map +1 -0
- package/dist/ui/src/components/plugins/PluginStatusWidget.js +26 -0
- package/dist/ui/src/components/plugins/PluginStatusWidget.js.map +1 -0
- package/dist/ui/src/components/plugins/index.d.ts +14 -0
- package/dist/ui/src/components/plugins/index.d.ts.map +1 -0
- package/dist/ui/src/components/plugins/index.js +11 -0
- package/dist/ui/src/components/plugins/index.js.map +1 -0
- package/dist/ui/src/config/AppConfig.d.ts +8 -0
- package/dist/ui/src/config/AppConfig.d.ts.map +1 -0
- package/dist/ui/src/config/AppConfig.js +16 -0
- package/dist/ui/src/config/AppConfig.js.map +1 -0
- package/dist/ui/src/config/preferences.d.ts +17 -0
- package/dist/ui/src/config/preferences.d.ts.map +1 -0
- package/dist/ui/src/config/preferences.js +17 -0
- package/dist/ui/src/config/preferences.js.map +1 -0
- package/dist/ui/src/dashboard/DashboardWidgetRegistry.d.ts +63 -0
- package/dist/ui/src/dashboard/DashboardWidgetRegistry.d.ts.map +1 -0
- package/dist/ui/src/dashboard/DashboardWidgetRegistry.js +81 -0
- package/dist/ui/src/dashboard/DashboardWidgetRegistry.js.map +1 -0
- package/dist/ui/src/dashboard/DashboardWidgetRenderer.d.ts +9 -0
- package/dist/ui/src/dashboard/DashboardWidgetRenderer.d.ts.map +1 -0
- package/dist/ui/src/dashboard/DashboardWidgetRenderer.js +19 -0
- package/dist/ui/src/dashboard/DashboardWidgetRenderer.js.map +1 -0
- package/dist/ui/src/dashboard/PluginWidgetRenderer.d.ts +20 -0
- package/dist/ui/src/dashboard/PluginWidgetRenderer.d.ts.map +1 -0
- package/dist/ui/src/dashboard/PluginWidgetRenderer.js +70 -0
- package/dist/ui/src/dashboard/PluginWidgetRenderer.js.map +1 -0
- package/dist/ui/src/dashboard/WidgetComponentRegistry.d.ts +49 -0
- package/dist/ui/src/dashboard/WidgetComponentRegistry.d.ts.map +1 -0
- package/dist/ui/src/dashboard/WidgetComponentRegistry.js +68 -0
- package/dist/ui/src/dashboard/WidgetComponentRegistry.js.map +1 -0
- package/dist/ui/src/dashboard/builtInWidgets.d.ts +26 -0
- package/dist/ui/src/dashboard/builtInWidgets.d.ts.map +1 -0
- package/dist/ui/src/dashboard/builtInWidgets.js +45 -0
- package/dist/ui/src/dashboard/builtInWidgets.js.map +1 -0
- package/dist/ui/src/dashboard/index.d.ts +14 -0
- package/dist/ui/src/dashboard/index.d.ts.map +1 -0
- package/dist/ui/src/dashboard/index.js +19 -0
- package/dist/ui/src/dashboard/index.js.map +1 -0
- package/dist/ui/src/dashboard/widgets/AuthStatusWidget.d.ts +10 -0
- package/dist/ui/src/dashboard/widgets/AuthStatusWidget.d.ts.map +1 -0
- package/dist/ui/src/dashboard/widgets/AuthStatusWidget.js +92 -0
- package/dist/ui/src/dashboard/widgets/AuthStatusWidget.js.map +1 -0
- package/dist/ui/src/dashboard/widgets/CMSMaintenanceWidget.d.ts +9 -0
- package/dist/ui/src/dashboard/widgets/CMSMaintenanceWidget.d.ts.map +1 -0
- package/dist/ui/src/dashboard/widgets/CMSMaintenanceWidget.js +100 -0
- package/dist/ui/src/dashboard/widgets/CMSMaintenanceWidget.js.map +1 -0
- package/dist/ui/src/dashboard/widgets/CMSStatusWidget.d.ts +9 -0
- package/dist/ui/src/dashboard/widgets/CMSStatusWidget.d.ts.map +1 -0
- package/dist/ui/src/dashboard/widgets/CMSStatusWidget.js +48 -0
- package/dist/ui/src/dashboard/widgets/CMSStatusWidget.js.map +1 -0
- package/dist/ui/src/dashboard/widgets/IntegrationStatusWidget.d.ts +10 -0
- package/dist/ui/src/dashboard/widgets/IntegrationStatusWidget.d.ts.map +1 -0
- package/dist/ui/src/dashboard/widgets/IntegrationStatusWidget.js +64 -0
- package/dist/ui/src/dashboard/widgets/IntegrationStatusWidget.js.map +1 -0
- package/dist/ui/src/dashboard/widgets/NotificationsStatsWidget.d.ts +13 -0
- package/dist/ui/src/dashboard/widgets/NotificationsStatsWidget.d.ts.map +1 -0
- package/dist/ui/src/dashboard/widgets/NotificationsStatsWidget.js +71 -0
- package/dist/ui/src/dashboard/widgets/NotificationsStatsWidget.js.map +1 -0
- package/dist/ui/src/dashboard/widgets/ServiceHealthWidget.d.ts +13 -0
- package/dist/ui/src/dashboard/widgets/ServiceHealthWidget.d.ts.map +1 -0
- package/dist/ui/src/dashboard/widgets/ServiceHealthWidget.js +88 -0
- package/dist/ui/src/dashboard/widgets/ServiceHealthWidget.js.map +1 -0
- package/dist/ui/src/dashboard/widgets/index.d.ts +12 -0
- package/dist/ui/src/dashboard/widgets/index.d.ts.map +1 -0
- package/dist/ui/src/dashboard/widgets/index.js +12 -0
- package/dist/ui/src/dashboard/widgets/index.js.map +1 -0
- package/dist/ui/src/pages/AcceptInvitationPage.d.ts +29 -0
- package/dist/ui/src/pages/AcceptInvitationPage.d.ts.map +1 -0
- package/dist/ui/src/pages/AcceptInvitationPage.js +66 -0
- package/dist/ui/src/pages/AcceptInvitationPage.js.map +1 -0
- package/dist/ui/src/pages/AuthPage.d.ts +2 -0
- package/dist/ui/src/pages/AuthPage.d.ts.map +1 -0
- package/dist/ui/src/pages/AuthPage.js +357 -0
- package/dist/ui/src/pages/AuthPage.js.map +1 -0
- package/dist/ui/src/pages/DashboardPage.d.ts +2 -0
- package/dist/ui/src/pages/DashboardPage.d.ts.map +1 -0
- package/dist/ui/src/pages/DashboardPage.js +80 -0
- package/dist/ui/src/pages/DashboardPage.js.map +1 -0
- package/dist/ui/src/pages/EntitlementsPage.d.ts +18 -0
- package/dist/ui/src/pages/EntitlementsPage.d.ts.map +1 -0
- package/dist/ui/src/pages/EntitlementsPage.js +171 -0
- package/dist/ui/src/pages/EntitlementsPage.js.map +1 -0
- package/dist/ui/src/pages/LogsPage.d.ts +2 -0
- package/dist/ui/src/pages/LogsPage.d.ts.map +1 -0
- package/dist/ui/src/pages/LogsPage.js +141 -0
- package/dist/ui/src/pages/LogsPage.js.map +1 -0
- package/dist/ui/src/pages/NotFoundPage.d.ts +2 -0
- package/dist/ui/src/pages/NotFoundPage.d.ts.map +1 -0
- package/dist/ui/src/pages/NotFoundPage.js +19 -0
- package/dist/ui/src/pages/NotFoundPage.js.map +1 -0
- package/dist/ui/src/pages/PreferencesPage.d.ts +10 -0
- package/dist/ui/src/pages/PreferencesPage.d.ts.map +1 -0
- package/dist/ui/src/pages/PreferencesPage.js +139 -0
- package/dist/ui/src/pages/PreferencesPage.js.map +1 -0
- package/dist/ui/src/pages/SystemPage.d.ts +2 -0
- package/dist/ui/src/pages/SystemPage.d.ts.map +1 -0
- package/dist/ui/src/pages/SystemPage.js +143 -0
- package/dist/ui/src/pages/SystemPage.js.map +1 -0
- package/dist/ui/src/pages/UsersPage.d.ts +23 -0
- package/dist/ui/src/pages/UsersPage.d.ts.map +1 -0
- package/dist/ui/src/pages/UsersPage.js +406 -0
- package/dist/ui/src/pages/UsersPage.js.map +1 -0
- package/dist/ui/src/utils/formatters.d.ts +20 -0
- package/dist/ui/src/utils/formatters.d.ts.map +1 -0
- package/dist/ui/src/utils/formatters.js +36 -0
- package/dist/ui/src/utils/formatters.js.map +1 -0
- package/dist-ui/assets/index-DQED0KPI.css +1 -0
- package/dist-ui/assets/index-lm1yX6UD.js +528 -0
- package/dist-ui/assets/index-lm1yX6UD.js.map +1 -0
- package/dist-ui/index.html +2 -2
- package/dist-ui-lib/src/components/tenants/MemberInviteDialog.d.ts +21 -0
- package/dist-ui-lib/src/components/tenants/MemberListDialog.d.ts +31 -0
- package/dist-ui-lib/src/components/tenants/MemberRoleDialog.d.ts +25 -0
- package/dist-ui-lib/src/components/tenants/TenantCard.d.ts +29 -0
- package/dist-ui-lib/src/components/tenants/TenantFormDialog.d.ts +32 -0
- package/dist-ui-lib/src/components/tenants/index.d.ts +15 -0
- package/package.json +7 -7
- package/src/plugins/index.ts +18 -0
- package/src/plugins/tenants/index.ts +31 -0
- package/src/plugins/tenants/stores/postgres-store.ts +370 -0
- package/src/plugins/tenants/tenants-plugin.ts +703 -0
- package/src/plugins/tenants/types.ts +249 -0
- package/src/plugins/users/users-plugin.ts +23 -0
- package/ui/src/App.tsx +6 -1
- package/ui/src/components/tenants/MemberInviteDialog.tsx +139 -0
- package/ui/src/components/tenants/MemberListDialog.tsx +290 -0
- package/ui/src/components/tenants/MemberRoleDialog.tsx +133 -0
- package/ui/src/components/tenants/TenantCard.tsx +140 -0
- package/ui/src/components/tenants/TenantFormDialog.tsx +217 -0
- package/ui/src/components/tenants/index.ts +20 -0
- package/ui/src/pages/TenantsManagementPage.tsx +495 -0
- package/dist/core/control-panel.d.ts.map +0 -1
- package/dist/core/control-panel.js.map +0 -1
- package/dist/core/gateway.d.ts.map +0 -1
- package/dist/core/gateway.js.map +0 -1
- package/dist/core/guards.d.ts.map +0 -1
- package/dist/core/guards.js.map +0 -1
- package/dist/core/health-manager.d.ts.map +0 -1
- package/dist/core/health-manager.js.map +0 -1
- package/dist/core/index.d.ts.map +0 -1
- package/dist/core/index.js.map +0 -1
- package/dist/core/logging.d.ts.map +0 -1
- package/dist/core/logging.js.map +0 -1
- package/dist/core/plugin-registry.d.ts.map +0 -1
- package/dist/core/plugin-registry.js.map +0 -1
- package/dist/core/types.d.ts.map +0 -1
- package/dist/core/types.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/plugins/api-keys/ApiKeysManagementPage.d.ts.map +0 -1
- package/dist/plugins/api-keys/ApiKeysManagementPage.js.map +0 -1
- package/dist/plugins/api-keys/ApiKeysStatusWidget.d.ts.map +0 -1
- package/dist/plugins/api-keys/ApiKeysStatusWidget.js.map +0 -1
- package/dist/plugins/api-keys/api-keys-plugin.d.ts.map +0 -1
- package/dist/plugins/api-keys/api-keys-plugin.js.map +0 -1
- package/dist/plugins/api-keys/index.d.ts.map +0 -1
- package/dist/plugins/api-keys/index.js.map +0 -1
- package/dist/plugins/api-keys/middleware/bearer-token-auth.d.ts.map +0 -1
- package/dist/plugins/api-keys/middleware/bearer-token-auth.js.map +0 -1
- package/dist/plugins/api-keys/middleware/index.d.ts.map +0 -1
- package/dist/plugins/api-keys/middleware/index.js.map +0 -1
- package/dist/plugins/api-keys/middleware/usage-logging.d.ts.map +0 -1
- package/dist/plugins/api-keys/middleware/usage-logging.js.map +0 -1
- package/dist/plugins/api-keys/stores/index.d.ts.map +0 -1
- package/dist/plugins/api-keys/stores/index.js.map +0 -1
- package/dist/plugins/api-keys/stores/plugin-scope-store.d.ts.map +0 -1
- package/dist/plugins/api-keys/stores/plugin-scope-store.js.map +0 -1
- package/dist/plugins/api-keys/stores/postgres-store.d.ts.map +0 -1
- package/dist/plugins/api-keys/stores/postgres-store.js.map +0 -1
- package/dist/plugins/api-keys/stores/usage-log-store.d.ts.map +0 -1
- package/dist/plugins/api-keys/stores/usage-log-store.js.map +0 -1
- package/dist/plugins/api-keys/types.d.ts.map +0 -1
- package/dist/plugins/api-keys/types.js.map +0 -1
- package/dist/plugins/auth/AuthManagementPage.d.ts.map +0 -1
- package/dist/plugins/auth/AuthManagementPage.js.map +0 -1
- package/dist/plugins/auth/AuthStatusWidget.d.ts.map +0 -1
- package/dist/plugins/auth/AuthStatusWidget.js.map +0 -1
- package/dist/plugins/auth/adapter-wrapper.d.ts.map +0 -1
- package/dist/plugins/auth/adapter-wrapper.js.map +0 -1
- package/dist/plugins/auth/adapters/auth0-adapter.d.ts.map +0 -1
- package/dist/plugins/auth/adapters/auth0-adapter.js.map +0 -1
- package/dist/plugins/auth/adapters/basic-adapter.d.ts.map +0 -1
- package/dist/plugins/auth/adapters/basic-adapter.js.map +0 -1
- package/dist/plugins/auth/adapters/index.d.ts.map +0 -1
- package/dist/plugins/auth/adapters/index.js.map +0 -1
- package/dist/plugins/auth/adapters/supabase-adapter.d.ts.map +0 -1
- package/dist/plugins/auth/adapters/supabase-adapter.js.map +0 -1
- package/dist/plugins/auth/adapters/supertokens-adapter.d.ts.map +0 -1
- package/dist/plugins/auth/adapters/supertokens-adapter.js.map +0 -1
- package/dist/plugins/auth/auth-plugin.d.ts.map +0 -1
- package/dist/plugins/auth/auth-plugin.js.map +0 -1
- package/dist/plugins/auth/config-store.d.ts.map +0 -1
- package/dist/plugins/auth/config-store.js.map +0 -1
- package/dist/plugins/auth/env-config.d.ts.map +0 -1
- package/dist/plugins/auth/env-config.js.map +0 -1
- package/dist/plugins/auth/index.d.ts.map +0 -1
- package/dist/plugins/auth/index.js.map +0 -1
- package/dist/plugins/auth/types.d.ts.map +0 -1
- package/dist/plugins/auth/types.js.map +0 -1
- package/dist/plugins/bans/BansManagementPage.d.ts.map +0 -1
- package/dist/plugins/bans/BansManagementPage.js.map +0 -1
- package/dist/plugins/bans/BansStatusWidget.d.ts.map +0 -1
- package/dist/plugins/bans/BansStatusWidget.js.map +0 -1
- package/dist/plugins/bans/bans-plugin.d.ts.map +0 -1
- package/dist/plugins/bans/bans-plugin.js.map +0 -1
- package/dist/plugins/bans/index.d.ts.map +0 -1
- package/dist/plugins/bans/index.js.map +0 -1
- package/dist/plugins/bans/stores/index.d.ts.map +0 -1
- package/dist/plugins/bans/stores/index.js.map +0 -1
- package/dist/plugins/bans/stores/postgres-store.d.ts.map +0 -1
- package/dist/plugins/bans/stores/postgres-store.js.map +0 -1
- package/dist/plugins/bans/types.d.ts.map +0 -1
- package/dist/plugins/bans/types.js.map +0 -1
- package/dist/plugins/cache/CacheManagementPage.d.ts.map +0 -1
- package/dist/plugins/cache/CacheManagementPage.js.map +0 -1
- package/dist/plugins/cache/CacheStatusWidget.d.ts.map +0 -1
- package/dist/plugins/cache/CacheStatusWidget.js.map +0 -1
- package/dist/plugins/cache/index.d.ts.map +0 -1
- package/dist/plugins/cache/index.js.map +0 -1
- package/dist/plugins/cache-plugin.d.ts.map +0 -1
- package/dist/plugins/cache-plugin.js.map +0 -1
- package/dist/plugins/cms/cms-plugin.d.ts.map +0 -1
- package/dist/plugins/cms/cms-plugin.js.map +0 -1
- package/dist/plugins/cms/index.d.ts.map +0 -1
- package/dist/plugins/cms/index.js.map +0 -1
- package/dist/plugins/config-plugin.d.ts.map +0 -1
- package/dist/plugins/config-plugin.js.map +0 -1
- package/dist/plugins/core/index.d.ts.map +0 -1
- package/dist/plugins/core/index.js.map +0 -1
- package/dist/plugins/devices/DevicesManagementPage.d.ts.map +0 -1
- package/dist/plugins/devices/DevicesManagementPage.js.map +0 -1
- package/dist/plugins/devices/DevicesStatusWidget.d.ts.map +0 -1
- package/dist/plugins/devices/DevicesStatusWidget.js.map +0 -1
- package/dist/plugins/devices/adapters/compute-adapter.d.ts.map +0 -1
- package/dist/plugins/devices/adapters/compute-adapter.js.map +0 -1
- package/dist/plugins/devices/adapters/index.d.ts.map +0 -1
- package/dist/plugins/devices/adapters/index.js.map +0 -1
- package/dist/plugins/devices/adapters/mobile-adapter.d.ts.map +0 -1
- package/dist/plugins/devices/adapters/mobile-adapter.js.map +0 -1
- package/dist/plugins/devices/devices-plugin.d.ts.map +0 -1
- package/dist/plugins/devices/devices-plugin.js.map +0 -1
- package/dist/plugins/devices/index.d.ts.map +0 -1
- package/dist/plugins/devices/index.js.map +0 -1
- package/dist/plugins/devices/stores/index.d.ts.map +0 -1
- package/dist/plugins/devices/stores/index.js.map +0 -1
- package/dist/plugins/devices/stores/postgres-store.d.ts.map +0 -1
- package/dist/plugins/devices/stores/postgres-store.js.map +0 -1
- package/dist/plugins/devices/token-utils.d.ts.map +0 -1
- package/dist/plugins/devices/token-utils.js.map +0 -1
- package/dist/plugins/devices/types.d.ts.map +0 -1
- package/dist/plugins/devices/types.js.map +0 -1
- package/dist/plugins/diagnostics/DiagnosticsManagementPage.d.ts.map +0 -1
- package/dist/plugins/diagnostics/DiagnosticsManagementPage.js.map +0 -1
- package/dist/plugins/diagnostics/DiagnosticsStatusWidget.d.ts.map +0 -1
- package/dist/plugins/diagnostics/DiagnosticsStatusWidget.js.map +0 -1
- package/dist/plugins/diagnostics/index.d.ts.map +0 -1
- package/dist/plugins/diagnostics/index.js.map +0 -1
- package/dist/plugins/diagnostics-plugin.d.ts.map +0 -1
- package/dist/plugins/diagnostics-plugin.js.map +0 -1
- package/dist/plugins/entitlements/EntitlementsManagementPage.d.ts.map +0 -1
- package/dist/plugins/entitlements/EntitlementsManagementPage.js.map +0 -1
- package/dist/plugins/entitlements/EntitlementsStatusWidget.d.ts.map +0 -1
- package/dist/plugins/entitlements/EntitlementsStatusWidget.js.map +0 -1
- package/dist/plugins/entitlements/entitlements-plugin.d.ts.map +0 -1
- package/dist/plugins/entitlements/entitlements-plugin.js.map +0 -1
- package/dist/plugins/entitlements/index.d.ts.map +0 -1
- package/dist/plugins/entitlements/index.js.map +0 -1
- package/dist/plugins/entitlements/sources/index.d.ts.map +0 -1
- package/dist/plugins/entitlements/sources/index.js.map +0 -1
- package/dist/plugins/entitlements/sources/postgres-source.d.ts.map +0 -1
- package/dist/plugins/entitlements/sources/postgres-source.js.map +0 -1
- package/dist/plugins/entitlements/types.d.ts.map +0 -1
- package/dist/plugins/entitlements/types.js.map +0 -1
- package/dist/plugins/frontend-app-plugin.d.ts.map +0 -1
- package/dist/plugins/frontend-app-plugin.js.map +0 -1
- package/dist/plugins/health/HealthManagementPage.d.ts.map +0 -1
- package/dist/plugins/health/HealthManagementPage.js.map +0 -1
- package/dist/plugins/health/HealthStatusWidget.d.ts.map +0 -1
- package/dist/plugins/health/HealthStatusWidget.js.map +0 -1
- package/dist/plugins/health/index.d.ts.map +0 -1
- package/dist/plugins/health/index.js.map +0 -1
- package/dist/plugins/health-plugin.d.ts.map +0 -1
- package/dist/plugins/health-plugin.js.map +0 -1
- package/dist/plugins/index.d.ts +0 -54
- package/dist/plugins/index.d.ts.map +0 -1
- package/dist/plugins/index.js +0 -44
- package/dist/plugins/index.js.map +0 -1
- package/dist/plugins/logs/LogsManagementPage.d.ts.map +0 -1
- package/dist/plugins/logs/LogsManagementPage.js.map +0 -1
- package/dist/plugins/logs/LogsStatusWidget.d.ts.map +0 -1
- package/dist/plugins/logs/LogsStatusWidget.js.map +0 -1
- package/dist/plugins/logs/index.d.ts.map +0 -1
- package/dist/plugins/logs/index.js.map +0 -1
- package/dist/plugins/logs-plugin.d.ts.map +0 -1
- package/dist/plugins/logs-plugin.js.map +0 -1
- package/dist/plugins/maintenance/MaintenanceManagementPage.d.ts.map +0 -1
- package/dist/plugins/maintenance/MaintenanceManagementPage.js.map +0 -1
- package/dist/plugins/maintenance/MaintenanceStatusWidget.d.ts.map +0 -1
- package/dist/plugins/maintenance/MaintenanceStatusWidget.js.map +0 -1
- package/dist/plugins/maintenance/SeedExecutor.d.ts.map +0 -1
- package/dist/plugins/maintenance/SeedExecutor.js.map +0 -1
- package/dist/plugins/maintenance/SeedHistory.d.ts.map +0 -1
- package/dist/plugins/maintenance/SeedHistory.js.map +0 -1
- package/dist/plugins/maintenance/SeedList.d.ts.map +0 -1
- package/dist/plugins/maintenance/SeedList.js.map +0 -1
- package/dist/plugins/maintenance/SeedManagementPage.d.ts.map +0 -1
- package/dist/plugins/maintenance/SeedManagementPage.js.map +0 -1
- package/dist/plugins/maintenance/index.d.ts.map +0 -1
- package/dist/plugins/maintenance/index.js.map +0 -1
- package/dist/plugins/maintenance/seed-executor.d.ts.map +0 -1
- package/dist/plugins/maintenance/seed-executor.js.map +0 -1
- package/dist/plugins/maintenance-plugin.d.ts.map +0 -1
- package/dist/plugins/maintenance-plugin.js.map +0 -1
- package/dist/plugins/notifications/NotificationsManagementPage.d.ts.map +0 -1
- package/dist/plugins/notifications/NotificationsManagementPage.js.map +0 -1
- package/dist/plugins/notifications/NotificationsStatusWidget.d.ts.map +0 -1
- package/dist/plugins/notifications/NotificationsStatusWidget.js.map +0 -1
- package/dist/plugins/notifications/index.d.ts.map +0 -1
- package/dist/plugins/notifications/index.js.map +0 -1
- package/dist/plugins/notifications/notifications-manager.d.ts.map +0 -1
- package/dist/plugins/notifications/notifications-manager.js.map +0 -1
- package/dist/plugins/notifications/notifications-plugin.d.ts.map +0 -1
- package/dist/plugins/notifications/notifications-plugin.js.map +0 -1
- package/dist/plugins/notifications/types.d.ts.map +0 -1
- package/dist/plugins/notifications/types.js.map +0 -1
- package/dist/plugins/parental/ParentalManagementPage.d.ts.map +0 -1
- package/dist/plugins/parental/ParentalManagementPage.js.map +0 -1
- package/dist/plugins/parental/ParentalStatusWidget.d.ts.map +0 -1
- package/dist/plugins/parental/ParentalStatusWidget.js.map +0 -1
- package/dist/plugins/parental/adapters/index.d.ts.map +0 -1
- package/dist/plugins/parental/adapters/index.js.map +0 -1
- package/dist/plugins/parental/adapters/kids-adapter.d.ts.map +0 -1
- package/dist/plugins/parental/adapters/kids-adapter.js.map +0 -1
- package/dist/plugins/parental/index.d.ts.map +0 -1
- package/dist/plugins/parental/index.js.map +0 -1
- package/dist/plugins/parental/parental-plugin.d.ts.map +0 -1
- package/dist/plugins/parental/parental-plugin.js.map +0 -1
- package/dist/plugins/parental/stores/index.d.ts.map +0 -1
- package/dist/plugins/parental/stores/index.js.map +0 -1
- package/dist/plugins/parental/stores/postgres-store.d.ts.map +0 -1
- package/dist/plugins/parental/stores/postgres-store.js.map +0 -1
- package/dist/plugins/parental/types.d.ts.map +0 -1
- package/dist/plugins/parental/types.js.map +0 -1
- package/dist/plugins/postgres/PostgresManagementPage.d.ts.map +0 -1
- package/dist/plugins/postgres/PostgresManagementPage.js.map +0 -1
- package/dist/plugins/postgres/PostgresStatusWidget.d.ts.map +0 -1
- package/dist/plugins/postgres/PostgresStatusWidget.js.map +0 -1
- package/dist/plugins/postgres/index.d.ts.map +0 -1
- package/dist/plugins/postgres/index.js.map +0 -1
- package/dist/plugins/postgres-plugin.d.ts.map +0 -1
- package/dist/plugins/postgres-plugin.js.map +0 -1
- package/dist/plugins/preferences/PreferencesManagementPage.d.ts.map +0 -1
- package/dist/plugins/preferences/PreferencesManagementPage.js.map +0 -1
- package/dist/plugins/preferences/PreferencesStatusWidget.d.ts.map +0 -1
- package/dist/plugins/preferences/PreferencesStatusWidget.js.map +0 -1
- package/dist/plugins/preferences/index.d.ts.map +0 -1
- package/dist/plugins/preferences/index.js.map +0 -1
- package/dist/plugins/preferences/preferences-plugin.d.ts.map +0 -1
- package/dist/plugins/preferences/preferences-plugin.js.map +0 -1
- package/dist/plugins/preferences/stores/index.d.ts.map +0 -1
- package/dist/plugins/preferences/stores/index.js.map +0 -1
- package/dist/plugins/preferences/stores/postgres-store.d.ts.map +0 -1
- package/dist/plugins/preferences/stores/postgres-store.js.map +0 -1
- package/dist/plugins/preferences/types.d.ts.map +0 -1
- package/dist/plugins/preferences/types.js.map +0 -1
- package/dist/plugins/profiles/ProfilesManagementPage.d.ts.map +0 -1
- package/dist/plugins/profiles/ProfilesManagementPage.js.map +0 -1
- package/dist/plugins/profiles/ProfilesStatusWidget.d.ts.map +0 -1
- package/dist/plugins/profiles/ProfilesStatusWidget.js.map +0 -1
- package/dist/plugins/profiles/index.d.ts.map +0 -1
- package/dist/plugins/profiles/index.js.map +0 -1
- package/dist/plugins/profiles/profiles-plugin.d.ts.map +0 -1
- package/dist/plugins/profiles/profiles-plugin.js.map +0 -1
- package/dist/plugins/profiles/stores/index.d.ts.map +0 -1
- package/dist/plugins/profiles/stores/index.js.map +0 -1
- package/dist/plugins/profiles/stores/postgres-store.d.ts.map +0 -1
- package/dist/plugins/profiles/stores/postgres-store.js.map +0 -1
- package/dist/plugins/profiles/types.d.ts.map +0 -1
- package/dist/plugins/profiles/types.js.map +0 -1
- package/dist/plugins/qwickbrain/QwickbrainManagementPage.d.ts.map +0 -1
- package/dist/plugins/qwickbrain/QwickbrainManagementPage.js.map +0 -1
- package/dist/plugins/qwickbrain/QwickbrainStatusWidget.d.ts.map +0 -1
- package/dist/plugins/qwickbrain/QwickbrainStatusWidget.js.map +0 -1
- package/dist/plugins/qwickbrain/index.d.ts.map +0 -1
- package/dist/plugins/qwickbrain/index.js.map +0 -1
- package/dist/plugins/qwickbrain/qwickbrain-plugin.d.ts.map +0 -1
- package/dist/plugins/qwickbrain/qwickbrain-plugin.js.map +0 -1
- package/dist/plugins/qwickbrain/types.d.ts.map +0 -1
- package/dist/plugins/qwickbrain/types.js.map +0 -1
- package/dist/plugins/rate-limit/RateLimitManagementPage.d.ts.map +0 -1
- package/dist/plugins/rate-limit/RateLimitManagementPage.js.map +0 -1
- package/dist/plugins/rate-limit/RateLimitStatusWidget.d.ts.map +0 -1
- package/dist/plugins/rate-limit/RateLimitStatusWidget.js.map +0 -1
- package/dist/plugins/rate-limit/cleanup.d.ts.map +0 -1
- package/dist/plugins/rate-limit/cleanup.js.map +0 -1
- package/dist/plugins/rate-limit/env-config.d.ts.map +0 -1
- package/dist/plugins/rate-limit/env-config.js.map +0 -1
- package/dist/plugins/rate-limit/index.d.ts.map +0 -1
- package/dist/plugins/rate-limit/index.js.map +0 -1
- package/dist/plugins/rate-limit/middleware.d.ts.map +0 -1
- package/dist/plugins/rate-limit/middleware.js.map +0 -1
- package/dist/plugins/rate-limit/rate-limit-plugin.d.ts.map +0 -1
- package/dist/plugins/rate-limit/rate-limit-plugin.js.map +0 -1
- package/dist/plugins/rate-limit/rate-limit-service.d.ts.map +0 -1
- package/dist/plugins/rate-limit/rate-limit-service.js.map +0 -1
- package/dist/plugins/rate-limit/stores/cache-store.d.ts.map +0 -1
- package/dist/plugins/rate-limit/stores/cache-store.js.map +0 -1
- package/dist/plugins/rate-limit/stores/index.d.ts.map +0 -1
- package/dist/plugins/rate-limit/stores/index.js.map +0 -1
- package/dist/plugins/rate-limit/stores/postgres-store.d.ts.map +0 -1
- package/dist/plugins/rate-limit/stores/postgres-store.js.map +0 -1
- package/dist/plugins/rate-limit/strategies/fixed-window.d.ts.map +0 -1
- package/dist/plugins/rate-limit/strategies/fixed-window.js.map +0 -1
- package/dist/plugins/rate-limit/strategies/index.d.ts.map +0 -1
- package/dist/plugins/rate-limit/strategies/index.js.map +0 -1
- package/dist/plugins/rate-limit/strategies/sliding-window.d.ts.map +0 -1
- package/dist/plugins/rate-limit/strategies/sliding-window.js.map +0 -1
- package/dist/plugins/rate-limit/strategies/token-bucket.d.ts.map +0 -1
- package/dist/plugins/rate-limit/strategies/token-bucket.js.map +0 -1
- package/dist/plugins/rate-limit/types.d.ts.map +0 -1
- package/dist/plugins/rate-limit/types.js.map +0 -1
- package/dist/plugins/subscriptions/SubscriptionsManagementPage.d.ts.map +0 -1
- package/dist/plugins/subscriptions/SubscriptionsManagementPage.js.map +0 -1
- package/dist/plugins/subscriptions/SubscriptionsStatusWidget.d.ts.map +0 -1
- package/dist/plugins/subscriptions/SubscriptionsStatusWidget.js.map +0 -1
- package/dist/plugins/subscriptions/index.d.ts.map +0 -1
- package/dist/plugins/subscriptions/index.js.map +0 -1
- package/dist/plugins/subscriptions/stores/index.d.ts.map +0 -1
- package/dist/plugins/subscriptions/stores/index.js.map +0 -1
- package/dist/plugins/subscriptions/stores/postgres-store.d.ts.map +0 -1
- package/dist/plugins/subscriptions/stores/postgres-store.js.map +0 -1
- package/dist/plugins/subscriptions/subscriptions-plugin.d.ts.map +0 -1
- package/dist/plugins/subscriptions/subscriptions-plugin.js.map +0 -1
- package/dist/plugins/subscriptions/types.d.ts.map +0 -1
- package/dist/plugins/subscriptions/types.js.map +0 -1
- package/dist/plugins/usage/UsageManagementPage.d.ts.map +0 -1
- package/dist/plugins/usage/UsageManagementPage.js.map +0 -1
- package/dist/plugins/usage/UsageStatusWidget.d.ts.map +0 -1
- package/dist/plugins/usage/UsageStatusWidget.js.map +0 -1
- package/dist/plugins/usage/index.d.ts.map +0 -1
- package/dist/plugins/usage/index.js.map +0 -1
- package/dist/plugins/usage/stores/index.d.ts.map +0 -1
- package/dist/plugins/usage/stores/index.js.map +0 -1
- package/dist/plugins/usage/stores/postgres-store.d.ts.map +0 -1
- package/dist/plugins/usage/stores/postgres-store.js.map +0 -1
- package/dist/plugins/usage/types.d.ts.map +0 -1
- package/dist/plugins/usage/types.js.map +0 -1
- package/dist/plugins/usage/usage-plugin.d.ts.map +0 -1
- package/dist/plugins/usage/usage-plugin.js.map +0 -1
- package/dist/plugins/users/UsersManagementPage.d.ts.map +0 -1
- package/dist/plugins/users/UsersManagementPage.js.map +0 -1
- package/dist/plugins/users/UsersStatusWidget.d.ts.map +0 -1
- package/dist/plugins/users/UsersStatusWidget.js.map +0 -1
- package/dist/plugins/users/index.d.ts.map +0 -1
- package/dist/plugins/users/index.js.map +0 -1
- package/dist/plugins/users/stores/index.d.ts.map +0 -1
- package/dist/plugins/users/stores/index.js.map +0 -1
- package/dist/plugins/users/stores/postgres-store.d.ts.map +0 -1
- package/dist/plugins/users/stores/postgres-store.js.map +0 -1
- package/dist/plugins/users/types.d.ts.map +0 -1
- package/dist/plugins/users/types.js.map +0 -1
- package/dist/plugins/users/users-plugin.d.ts.map +0 -1
- package/dist/plugins/users/users-plugin.js +0 -503
- package/dist/plugins/users/users-plugin.js.map +0 -1
- package/dist-ui/assets/index-BiEHWqD3.js +0 -528
- package/dist-ui/assets/index-BiEHWqD3.js.map +0 -1
- package/dist-ui/assets/index-CiizQQnb.css +0 -1
- /package/dist/{core → src/core}/control-panel.d.ts +0 -0
- /package/dist/{core → src/core}/control-panel.js +0 -0
- /package/dist/{core → src/core}/gateway.d.ts +0 -0
- /package/dist/{core → src/core}/gateway.js +0 -0
- /package/dist/{core → src/core}/guards.d.ts +0 -0
- /package/dist/{core → src/core}/guards.js +0 -0
- /package/dist/{core → src/core}/health-manager.d.ts +0 -0
- /package/dist/{core → src/core}/health-manager.js +0 -0
- /package/dist/{core → src/core}/index.d.ts +0 -0
- /package/dist/{core → src/core}/index.js +0 -0
- /package/dist/{core → src/core}/logging.d.ts +0 -0
- /package/dist/{core → src/core}/logging.js +0 -0
- /package/dist/{core → src/core}/plugin-registry.d.ts +0 -0
- /package/dist/{core → src/core}/plugin-registry.js +0 -0
- /package/dist/{core → src/core}/types.d.ts +0 -0
- /package/dist/{core → src/core}/types.js +0 -0
- /package/dist/{index.d.ts → src/index.d.ts} +0 -0
- /package/dist/{index.js → src/index.js} +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/ApiKeysManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/ApiKeysManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/ApiKeysStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/ApiKeysStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/api-keys-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/api-keys-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/index.js +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/middleware/bearer-token-auth.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/middleware/bearer-token-auth.js +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/middleware/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/middleware/index.js +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/middleware/usage-logging.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/middleware/usage-logging.js +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/stores/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/stores/index.js +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/stores/plugin-scope-store.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/stores/plugin-scope-store.js +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/stores/postgres-store.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/stores/postgres-store.js +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/stores/usage-log-store.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/stores/usage-log-store.js +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/types.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/api-keys/types.js +0 -0
- /package/dist/{plugins → src/plugins}/auth/AuthManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/auth/AuthManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/auth/AuthStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/auth/AuthStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/auth/adapter-wrapper.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/auth/adapter-wrapper.js +0 -0
- /package/dist/{plugins → src/plugins}/auth/adapters/auth0-adapter.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/auth/adapters/auth0-adapter.js +0 -0
- /package/dist/{plugins → src/plugins}/auth/adapters/basic-adapter.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/auth/adapters/basic-adapter.js +0 -0
- /package/dist/{plugins → src/plugins}/auth/adapters/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/auth/adapters/index.js +0 -0
- /package/dist/{plugins → src/plugins}/auth/adapters/supabase-adapter.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/auth/adapters/supabase-adapter.js +0 -0
- /package/dist/{plugins → src/plugins}/auth/adapters/supertokens-adapter.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/auth/adapters/supertokens-adapter.js +0 -0
- /package/dist/{plugins → src/plugins}/auth/auth-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/auth/auth-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/auth/config-store.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/auth/config-store.js +0 -0
- /package/dist/{plugins → src/plugins}/auth/env-config.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/auth/env-config.js +0 -0
- /package/dist/{plugins → src/plugins}/auth/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/auth/index.js +0 -0
- /package/dist/{plugins → src/plugins}/auth/types.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/auth/types.js +0 -0
- /package/dist/{plugins → src/plugins}/bans/BansManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/bans/BansManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/bans/BansStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/bans/BansStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/bans/bans-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/bans/bans-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/bans/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/bans/index.js +0 -0
- /package/dist/{plugins → src/plugins}/bans/stores/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/bans/stores/index.js +0 -0
- /package/dist/{plugins → src/plugins}/bans/stores/postgres-store.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/bans/stores/postgres-store.js +0 -0
- /package/dist/{plugins → src/plugins}/bans/types.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/bans/types.js +0 -0
- /package/dist/{plugins → src/plugins}/cache/CacheManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/cache/CacheManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/cache/CacheStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/cache/CacheStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/cache/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/cache/index.js +0 -0
- /package/dist/{plugins → src/plugins}/cache-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/cache-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/cms/cms-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/cms/cms-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/cms/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/cms/index.js +0 -0
- /package/dist/{plugins → src/plugins}/config-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/config-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/core/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/core/index.js +0 -0
- /package/dist/{plugins → src/plugins}/devices/DevicesManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/devices/DevicesManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/devices/DevicesStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/devices/DevicesStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/devices/adapters/compute-adapter.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/devices/adapters/compute-adapter.js +0 -0
- /package/dist/{plugins → src/plugins}/devices/adapters/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/devices/adapters/index.js +0 -0
- /package/dist/{plugins → src/plugins}/devices/adapters/mobile-adapter.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/devices/adapters/mobile-adapter.js +0 -0
- /package/dist/{plugins → src/plugins}/devices/devices-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/devices/devices-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/devices/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/devices/index.js +0 -0
- /package/dist/{plugins → src/plugins}/devices/stores/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/devices/stores/index.js +0 -0
- /package/dist/{plugins → src/plugins}/devices/stores/postgres-store.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/devices/stores/postgres-store.js +0 -0
- /package/dist/{plugins → src/plugins}/devices/token-utils.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/devices/token-utils.js +0 -0
- /package/dist/{plugins → src/plugins}/devices/types.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/devices/types.js +0 -0
- /package/dist/{plugins → src/plugins}/diagnostics/DiagnosticsManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/diagnostics/DiagnosticsManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/diagnostics/DiagnosticsStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/diagnostics/DiagnosticsStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/diagnostics/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/diagnostics/index.js +0 -0
- /package/dist/{plugins → src/plugins}/diagnostics-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/diagnostics-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/entitlements/EntitlementsManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/entitlements/EntitlementsManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/entitlements/EntitlementsStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/entitlements/EntitlementsStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/entitlements/entitlements-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/entitlements/entitlements-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/entitlements/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/entitlements/index.js +0 -0
- /package/dist/{plugins → src/plugins}/entitlements/sources/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/entitlements/sources/index.js +0 -0
- /package/dist/{plugins → src/plugins}/entitlements/sources/postgres-source.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/entitlements/sources/postgres-source.js +0 -0
- /package/dist/{plugins → src/plugins}/entitlements/types.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/entitlements/types.js +0 -0
- /package/dist/{plugins → src/plugins}/frontend-app-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/frontend-app-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/health/HealthManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/health/HealthManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/health/HealthStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/health/HealthStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/health/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/health/index.js +0 -0
- /package/dist/{plugins → src/plugins}/health-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/health-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/logs/LogsManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/logs/LogsManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/logs/LogsStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/logs/LogsStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/logs/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/logs/index.js +0 -0
- /package/dist/{plugins → src/plugins}/logs-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/logs-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/maintenance/MaintenanceManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/maintenance/MaintenanceManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/maintenance/MaintenanceStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/maintenance/MaintenanceStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/maintenance/SeedExecutor.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/maintenance/SeedExecutor.js +0 -0
- /package/dist/{plugins → src/plugins}/maintenance/SeedHistory.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/maintenance/SeedHistory.js +0 -0
- /package/dist/{plugins → src/plugins}/maintenance/SeedList.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/maintenance/SeedList.js +0 -0
- /package/dist/{plugins → src/plugins}/maintenance/SeedManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/maintenance/SeedManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/maintenance/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/maintenance/index.js +0 -0
- /package/dist/{plugins → src/plugins}/maintenance/seed-executor.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/maintenance/seed-executor.js +0 -0
- /package/dist/{plugins → src/plugins}/maintenance-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/maintenance-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/notifications/NotificationsManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/notifications/NotificationsManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/notifications/NotificationsStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/notifications/NotificationsStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/notifications/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/notifications/index.js +0 -0
- /package/dist/{plugins → src/plugins}/notifications/notifications-manager.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/notifications/notifications-manager.js +0 -0
- /package/dist/{plugins → src/plugins}/notifications/notifications-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/notifications/notifications-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/notifications/types.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/notifications/types.js +0 -0
- /package/dist/{plugins → src/plugins}/parental/ParentalManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/parental/ParentalManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/parental/ParentalStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/parental/ParentalStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/parental/adapters/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/parental/adapters/index.js +0 -0
- /package/dist/{plugins → src/plugins}/parental/adapters/kids-adapter.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/parental/adapters/kids-adapter.js +0 -0
- /package/dist/{plugins → src/plugins}/parental/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/parental/index.js +0 -0
- /package/dist/{plugins → src/plugins}/parental/parental-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/parental/parental-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/parental/stores/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/parental/stores/index.js +0 -0
- /package/dist/{plugins → src/plugins}/parental/stores/postgres-store.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/parental/stores/postgres-store.js +0 -0
- /package/dist/{plugins → src/plugins}/parental/types.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/parental/types.js +0 -0
- /package/dist/{plugins → src/plugins}/postgres/PostgresManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/postgres/PostgresManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/postgres/PostgresStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/postgres/PostgresStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/postgres/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/postgres/index.js +0 -0
- /package/dist/{plugins → src/plugins}/postgres-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/postgres-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/preferences/PreferencesManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/preferences/PreferencesManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/preferences/PreferencesStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/preferences/PreferencesStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/preferences/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/preferences/index.js +0 -0
- /package/dist/{plugins → src/plugins}/preferences/preferences-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/preferences/preferences-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/preferences/stores/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/preferences/stores/index.js +0 -0
- /package/dist/{plugins → src/plugins}/preferences/stores/postgres-store.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/preferences/stores/postgres-store.js +0 -0
- /package/dist/{plugins → src/plugins}/preferences/types.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/preferences/types.js +0 -0
- /package/dist/{plugins → src/plugins}/profiles/ProfilesManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/profiles/ProfilesManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/profiles/ProfilesStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/profiles/ProfilesStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/profiles/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/profiles/index.js +0 -0
- /package/dist/{plugins → src/plugins}/profiles/profiles-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/profiles/profiles-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/profiles/stores/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/profiles/stores/index.js +0 -0
- /package/dist/{plugins → src/plugins}/profiles/stores/postgres-store.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/profiles/stores/postgres-store.js +0 -0
- /package/dist/{plugins → src/plugins}/profiles/types.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/profiles/types.js +0 -0
- /package/dist/{plugins → src/plugins}/qwickbrain/QwickbrainManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/qwickbrain/QwickbrainManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/qwickbrain/QwickbrainStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/qwickbrain/QwickbrainStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/qwickbrain/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/qwickbrain/index.js +0 -0
- /package/dist/{plugins → src/plugins}/qwickbrain/qwickbrain-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/qwickbrain/qwickbrain-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/qwickbrain/types.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/qwickbrain/types.js +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/RateLimitManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/RateLimitManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/RateLimitStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/RateLimitStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/cleanup.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/cleanup.js +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/env-config.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/env-config.js +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/index.js +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/middleware.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/middleware.js +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/rate-limit-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/rate-limit-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/rate-limit-service.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/rate-limit-service.js +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/stores/cache-store.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/stores/cache-store.js +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/stores/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/stores/index.js +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/stores/postgres-store.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/stores/postgres-store.js +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/strategies/fixed-window.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/strategies/fixed-window.js +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/strategies/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/strategies/index.js +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/strategies/sliding-window.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/strategies/sliding-window.js +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/strategies/token-bucket.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/strategies/token-bucket.js +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/types.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/rate-limit/types.js +0 -0
- /package/dist/{plugins → src/plugins}/subscriptions/SubscriptionsManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/subscriptions/SubscriptionsManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/subscriptions/SubscriptionsStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/subscriptions/SubscriptionsStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/subscriptions/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/subscriptions/index.js +0 -0
- /package/dist/{plugins → src/plugins}/subscriptions/stores/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/subscriptions/stores/index.js +0 -0
- /package/dist/{plugins → src/plugins}/subscriptions/stores/postgres-store.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/subscriptions/stores/postgres-store.js +0 -0
- /package/dist/{plugins → src/plugins}/subscriptions/subscriptions-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/subscriptions/subscriptions-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/subscriptions/types.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/subscriptions/types.js +0 -0
- /package/dist/{plugins → src/plugins}/usage/UsageManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/usage/UsageManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/usage/UsageStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/usage/UsageStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/usage/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/usage/index.js +0 -0
- /package/dist/{plugins → src/plugins}/usage/stores/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/usage/stores/index.js +0 -0
- /package/dist/{plugins → src/plugins}/usage/stores/postgres-store.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/usage/stores/postgres-store.js +0 -0
- /package/dist/{plugins → src/plugins}/usage/types.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/usage/types.js +0 -0
- /package/dist/{plugins → src/plugins}/usage/usage-plugin.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/usage/usage-plugin.js +0 -0
- /package/dist/{plugins → src/plugins}/users/UsersManagementPage.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/users/UsersManagementPage.js +0 -0
- /package/dist/{plugins → src/plugins}/users/UsersStatusWidget.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/users/UsersStatusWidget.js +0 -0
- /package/dist/{plugins → src/plugins}/users/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/users/index.js +0 -0
- /package/dist/{plugins → src/plugins}/users/stores/index.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/users/stores/index.js +0 -0
- /package/dist/{plugins → src/plugins}/users/stores/postgres-store.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/users/stores/postgres-store.js +0 -0
- /package/dist/{plugins → src/plugins}/users/types.d.ts +0 -0
- /package/dist/{plugins → src/plugins}/users/types.js +0 -0
- /package/dist/{plugins → src/plugins}/users/users-plugin.d.ts +0 -0
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* UsersPage Component
|
|
4
|
+
*
|
|
5
|
+
* Generic user management page that works with Users, Bans, and Entitlements plugins.
|
|
6
|
+
* All features are optional and auto-detected based on available plugins.
|
|
7
|
+
*
|
|
8
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
9
|
+
*/
|
|
10
|
+
import { useState, useEffect, useCallback } from 'react';
|
|
11
|
+
import { Box, Card, CardContent, TextField, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Chip, Alert, LinearProgress, InputAdornment, Tabs, Tab, TablePagination, Tooltip, IconButton, CircularProgress, Autocomplete, } from '@mui/material';
|
|
12
|
+
import { Text, Button, Dialog, DialogTitle, DialogContent, DialogActions, GridLayout } from '@qwickapps/react-framework';
|
|
13
|
+
import SearchIcon from '@mui/icons-material/Search';
|
|
14
|
+
import PersonIcon from '@mui/icons-material/Person';
|
|
15
|
+
import LocalOfferIcon from '@mui/icons-material/LocalOffer';
|
|
16
|
+
import BlockIcon from '@mui/icons-material/Block';
|
|
17
|
+
import CheckCircleIcon from '@mui/icons-material/CheckCircle';
|
|
18
|
+
import DeleteIcon from '@mui/icons-material/Delete';
|
|
19
|
+
import ContentCopyIcon from '@mui/icons-material/ContentCopy';
|
|
20
|
+
import { api, } from '../api/controlPanelApi';
|
|
21
|
+
export function UsersPage({ title = 'User Management', subtitle = 'Manage users, bans, and entitlements', features: featureOverrides, headerActions, onUserSelect, }) {
|
|
22
|
+
// Feature detection
|
|
23
|
+
const [features, setFeatures] = useState({
|
|
24
|
+
users: featureOverrides?.users ?? true,
|
|
25
|
+
bans: featureOverrides?.bans ?? false,
|
|
26
|
+
entitlements: featureOverrides?.entitlements ?? false,
|
|
27
|
+
entitlementsReadonly: featureOverrides?.entitlementsReadonly ?? true,
|
|
28
|
+
});
|
|
29
|
+
const [featuresLoaded, setFeaturesLoaded] = useState(!!featureOverrides);
|
|
30
|
+
// Tab state
|
|
31
|
+
const [activeTab, setActiveTab] = useState(0);
|
|
32
|
+
// Users state
|
|
33
|
+
const [users, setUsers] = useState([]);
|
|
34
|
+
const [usersTotal, setUsersTotal] = useState(0);
|
|
35
|
+
const [usersPage, setUsersPage] = useState(0);
|
|
36
|
+
const [usersPerPage, setUsersPerPage] = useState(25);
|
|
37
|
+
const [usersSearch, setUsersSearch] = useState('');
|
|
38
|
+
// User entitlements cache (email -> count)
|
|
39
|
+
const [userEntitlementCounts, setUserEntitlementCounts] = useState({});
|
|
40
|
+
// Banned users state
|
|
41
|
+
const [bans, setBans] = useState([]);
|
|
42
|
+
const [bansTotal, setBansTotal] = useState(0);
|
|
43
|
+
// Invitations state
|
|
44
|
+
const [invitations, setInvitations] = useState([]);
|
|
45
|
+
const [invitationsTotal, setInvitationsTotal] = useState(0);
|
|
46
|
+
// Shared state
|
|
47
|
+
const [loading, setLoading] = useState(true);
|
|
48
|
+
const [error, setError] = useState(null);
|
|
49
|
+
const [success, setSuccess] = useState(null);
|
|
50
|
+
// Ban dialog state
|
|
51
|
+
const [banDialogOpen, setBanDialogOpen] = useState(false);
|
|
52
|
+
const [newBan, setNewBan] = useState({
|
|
53
|
+
email: '',
|
|
54
|
+
reason: '',
|
|
55
|
+
expiresAt: '',
|
|
56
|
+
});
|
|
57
|
+
// Invite dialog state
|
|
58
|
+
const [inviteDialogOpen, setInviteDialogOpen] = useState(false);
|
|
59
|
+
const [newInvite, setNewInvite] = useState({
|
|
60
|
+
email: '',
|
|
61
|
+
name: '',
|
|
62
|
+
role: '',
|
|
63
|
+
expiresInDays: 7,
|
|
64
|
+
});
|
|
65
|
+
const [inviteResult, setInviteResult] = useState(null);
|
|
66
|
+
// Entitlements lookup state
|
|
67
|
+
const [entitlementsDialogOpen, setEntitlementsDialogOpen] = useState(false);
|
|
68
|
+
const [entitlementsSearch, setEntitlementsSearch] = useState('');
|
|
69
|
+
const [entitlementsLoading, setEntitlementsLoading] = useState(false);
|
|
70
|
+
const [entitlementsRefreshing, setEntitlementsRefreshing] = useState(false);
|
|
71
|
+
const [entitlementsData, setEntitlementsData] = useState(null);
|
|
72
|
+
const [entitlementsError, setEntitlementsError] = useState(null);
|
|
73
|
+
// Available entitlements (for grant dropdown)
|
|
74
|
+
const [availableEntitlements, setAvailableEntitlements] = useState([]);
|
|
75
|
+
const [selectedEntitlement, setSelectedEntitlement] = useState('');
|
|
76
|
+
const [grantingEntitlement, setGrantingEntitlement] = useState(false);
|
|
77
|
+
// Detect features on mount
|
|
78
|
+
useEffect(() => {
|
|
79
|
+
if (featureOverrides)
|
|
80
|
+
return;
|
|
81
|
+
api.detectFeatures().then((detected) => {
|
|
82
|
+
setFeatures(detected);
|
|
83
|
+
setFeaturesLoaded(true);
|
|
84
|
+
}).catch(() => {
|
|
85
|
+
setFeaturesLoaded(true);
|
|
86
|
+
});
|
|
87
|
+
}, [featureOverrides]);
|
|
88
|
+
// Fetch available entitlements when features are loaded
|
|
89
|
+
useEffect(() => {
|
|
90
|
+
if (featuresLoaded && features.entitlements && !features.entitlementsReadonly) {
|
|
91
|
+
api.getAvailableEntitlements().then(setAvailableEntitlements).catch(() => { });
|
|
92
|
+
}
|
|
93
|
+
}, [featuresLoaded, features.entitlements, features.entitlementsReadonly]);
|
|
94
|
+
// Fetch users
|
|
95
|
+
const fetchUsers = useCallback(async () => {
|
|
96
|
+
if (!features.users)
|
|
97
|
+
return;
|
|
98
|
+
setLoading(true);
|
|
99
|
+
try {
|
|
100
|
+
const data = await api.getUsers({
|
|
101
|
+
limit: usersPerPage,
|
|
102
|
+
page: usersPage,
|
|
103
|
+
search: usersSearch || undefined,
|
|
104
|
+
});
|
|
105
|
+
setUsers(data.users || []);
|
|
106
|
+
setUsersTotal(data.total);
|
|
107
|
+
setError(null);
|
|
108
|
+
// Fetch entitlement counts for visible users if entitlements plugin is enabled
|
|
109
|
+
if (features.entitlements && data.users?.length) {
|
|
110
|
+
const counts = {};
|
|
111
|
+
await Promise.all(data.users.map(async (user) => {
|
|
112
|
+
try {
|
|
113
|
+
const ent = await api.getEntitlements(user.email);
|
|
114
|
+
counts[user.email] = ent.entitlements.length;
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
counts[user.email] = 0;
|
|
118
|
+
}
|
|
119
|
+
}));
|
|
120
|
+
setUserEntitlementCounts((prev) => ({ ...prev, ...counts }));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
setError(err instanceof Error ? err.message : 'Failed to fetch users');
|
|
125
|
+
}
|
|
126
|
+
finally {
|
|
127
|
+
setLoading(false);
|
|
128
|
+
}
|
|
129
|
+
}, [features.users, features.entitlements, usersPage, usersPerPage, usersSearch]);
|
|
130
|
+
// Fetch bans
|
|
131
|
+
const fetchBans = useCallback(async () => {
|
|
132
|
+
if (!features.bans)
|
|
133
|
+
return;
|
|
134
|
+
setLoading(true);
|
|
135
|
+
try {
|
|
136
|
+
const data = await api.getBans();
|
|
137
|
+
setBans(data.bans || []);
|
|
138
|
+
setBansTotal(data.total);
|
|
139
|
+
setError(null);
|
|
140
|
+
}
|
|
141
|
+
catch (err) {
|
|
142
|
+
setError(err instanceof Error ? err.message : 'Failed to fetch bans');
|
|
143
|
+
}
|
|
144
|
+
finally {
|
|
145
|
+
setLoading(false);
|
|
146
|
+
}
|
|
147
|
+
}, [features.bans]);
|
|
148
|
+
// Fetch invitations
|
|
149
|
+
const fetchInvitations = useCallback(async () => {
|
|
150
|
+
if (!features.users)
|
|
151
|
+
return;
|
|
152
|
+
setLoading(true);
|
|
153
|
+
try {
|
|
154
|
+
const data = await api.getInvitations();
|
|
155
|
+
setInvitations(data.users || []);
|
|
156
|
+
setInvitationsTotal(data.total);
|
|
157
|
+
setError(null);
|
|
158
|
+
}
|
|
159
|
+
catch (err) {
|
|
160
|
+
setError(err instanceof Error ? err.message : 'Failed to fetch invitations');
|
|
161
|
+
}
|
|
162
|
+
finally {
|
|
163
|
+
setLoading(false);
|
|
164
|
+
}
|
|
165
|
+
}, [features.users]);
|
|
166
|
+
// Initial fetch and tab-based fetching
|
|
167
|
+
useEffect(() => {
|
|
168
|
+
if (!featuresLoaded)
|
|
169
|
+
return;
|
|
170
|
+
if (activeTab === 0 && features.users) {
|
|
171
|
+
fetchUsers();
|
|
172
|
+
}
|
|
173
|
+
else if (activeTab === 1 && features.bans) {
|
|
174
|
+
fetchBans();
|
|
175
|
+
}
|
|
176
|
+
else if (activeTab === 2 && features.users) {
|
|
177
|
+
fetchInvitations();
|
|
178
|
+
}
|
|
179
|
+
}, [activeTab, featuresLoaded, features.users, features.bans, fetchUsers, fetchBans, fetchInvitations]);
|
|
180
|
+
// Fetch bans count for stats (only on initial load)
|
|
181
|
+
useEffect(() => {
|
|
182
|
+
if (featuresLoaded && features.bans) {
|
|
183
|
+
fetchBans();
|
|
184
|
+
}
|
|
185
|
+
}, [featuresLoaded, features.bans, fetchBans]);
|
|
186
|
+
// Debounced search
|
|
187
|
+
useEffect(() => {
|
|
188
|
+
if (!featuresLoaded)
|
|
189
|
+
return;
|
|
190
|
+
const timeout = setTimeout(() => {
|
|
191
|
+
if (activeTab === 0 && features.users) {
|
|
192
|
+
setUsersPage(0);
|
|
193
|
+
fetchUsers();
|
|
194
|
+
}
|
|
195
|
+
}, 300);
|
|
196
|
+
return () => clearTimeout(timeout);
|
|
197
|
+
}, [usersSearch, activeTab, featuresLoaded, features.users, fetchUsers]);
|
|
198
|
+
// Ban handlers
|
|
199
|
+
const handleBanUser = async () => {
|
|
200
|
+
try {
|
|
201
|
+
await api.banUser(newBan.email, newBan.reason, newBan.expiresAt || undefined);
|
|
202
|
+
setSuccess('User banned successfully');
|
|
203
|
+
setBanDialogOpen(false);
|
|
204
|
+
setNewBan({ email: '', reason: '', expiresAt: '' });
|
|
205
|
+
fetchBans();
|
|
206
|
+
}
|
|
207
|
+
catch (err) {
|
|
208
|
+
setError(err instanceof Error ? err.message : 'Failed to ban user');
|
|
209
|
+
}
|
|
210
|
+
};
|
|
211
|
+
const handleUnbanUser = async (email) => {
|
|
212
|
+
if (!confirm('Unban this user?'))
|
|
213
|
+
return;
|
|
214
|
+
try {
|
|
215
|
+
await api.unbanUser(email);
|
|
216
|
+
setSuccess('User unbanned successfully');
|
|
217
|
+
fetchBans();
|
|
218
|
+
}
|
|
219
|
+
catch (err) {
|
|
220
|
+
setError('Failed to unban user');
|
|
221
|
+
}
|
|
222
|
+
};
|
|
223
|
+
// Invite handlers
|
|
224
|
+
const handleInviteUser = async () => {
|
|
225
|
+
try {
|
|
226
|
+
const result = await api.inviteUser({
|
|
227
|
+
email: newInvite.email,
|
|
228
|
+
name: newInvite.name || undefined,
|
|
229
|
+
role: newInvite.role || undefined,
|
|
230
|
+
expiresInDays: newInvite.expiresInDays,
|
|
231
|
+
});
|
|
232
|
+
setInviteResult({ token: result.token, inviteLink: result.inviteLink });
|
|
233
|
+
setSuccess('User invitation created successfully');
|
|
234
|
+
fetchUsers();
|
|
235
|
+
}
|
|
236
|
+
catch (err) {
|
|
237
|
+
setError(err instanceof Error ? err.message : 'Failed to invite user');
|
|
238
|
+
}
|
|
239
|
+
};
|
|
240
|
+
const handleCopyInviteLink = () => {
|
|
241
|
+
if (inviteResult) {
|
|
242
|
+
navigator.clipboard.writeText(inviteResult.inviteLink);
|
|
243
|
+
setSuccess('Invite link copied to clipboard');
|
|
244
|
+
}
|
|
245
|
+
};
|
|
246
|
+
const handleCloseInviteDialog = () => {
|
|
247
|
+
setInviteDialogOpen(false);
|
|
248
|
+
setNewInvite({ email: '', name: '', role: '', expiresInDays: 7 });
|
|
249
|
+
setInviteResult(null);
|
|
250
|
+
};
|
|
251
|
+
// Entitlements handlers
|
|
252
|
+
const handleEntitlementsSearch = async () => {
|
|
253
|
+
if (!entitlementsSearch.trim()) {
|
|
254
|
+
setEntitlementsError('Please enter an email address');
|
|
255
|
+
return;
|
|
256
|
+
}
|
|
257
|
+
setEntitlementsLoading(true);
|
|
258
|
+
setEntitlementsError(null);
|
|
259
|
+
setEntitlementsData(null);
|
|
260
|
+
try {
|
|
261
|
+
const data = await api.getEntitlements(entitlementsSearch);
|
|
262
|
+
setEntitlementsData(data);
|
|
263
|
+
}
|
|
264
|
+
catch (err) {
|
|
265
|
+
setEntitlementsError(err instanceof Error ? err.message : 'Failed to lookup entitlements');
|
|
266
|
+
}
|
|
267
|
+
finally {
|
|
268
|
+
setEntitlementsLoading(false);
|
|
269
|
+
}
|
|
270
|
+
};
|
|
271
|
+
const handleEntitlementsRefresh = async () => {
|
|
272
|
+
if (!entitlementsData)
|
|
273
|
+
return;
|
|
274
|
+
setEntitlementsRefreshing(true);
|
|
275
|
+
try {
|
|
276
|
+
const data = await api.refreshEntitlements(entitlementsSearch);
|
|
277
|
+
setEntitlementsData(data);
|
|
278
|
+
}
|
|
279
|
+
catch (err) {
|
|
280
|
+
setEntitlementsError('Failed to refresh entitlements');
|
|
281
|
+
}
|
|
282
|
+
finally {
|
|
283
|
+
setEntitlementsRefreshing(false);
|
|
284
|
+
}
|
|
285
|
+
};
|
|
286
|
+
const handleGrantEntitlement = async () => {
|
|
287
|
+
if (!selectedEntitlement || !entitlementsData)
|
|
288
|
+
return;
|
|
289
|
+
setGrantingEntitlement(true);
|
|
290
|
+
try {
|
|
291
|
+
await api.grantEntitlement(entitlementsData.identifier, selectedEntitlement);
|
|
292
|
+
setSuccess(`Entitlement "${selectedEntitlement}" granted`);
|
|
293
|
+
setSelectedEntitlement('');
|
|
294
|
+
// Refresh to show new entitlement
|
|
295
|
+
const data = await api.refreshEntitlements(entitlementsData.identifier);
|
|
296
|
+
setEntitlementsData(data);
|
|
297
|
+
// Update count cache
|
|
298
|
+
setUserEntitlementCounts((prev) => ({
|
|
299
|
+
...prev,
|
|
300
|
+
[entitlementsData.identifier]: data.entitlements.length,
|
|
301
|
+
}));
|
|
302
|
+
}
|
|
303
|
+
catch (err) {
|
|
304
|
+
setError(err instanceof Error ? err.message : 'Failed to grant entitlement');
|
|
305
|
+
}
|
|
306
|
+
finally {
|
|
307
|
+
setGrantingEntitlement(false);
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
const handleRevokeEntitlement = async (entitlement) => {
|
|
311
|
+
if (!entitlementsData)
|
|
312
|
+
return;
|
|
313
|
+
if (!confirm(`Revoke "${entitlement}" from ${entitlementsData.identifier}?`))
|
|
314
|
+
return;
|
|
315
|
+
try {
|
|
316
|
+
await api.revokeEntitlement(entitlementsData.identifier, entitlement);
|
|
317
|
+
setSuccess(`Entitlement "${entitlement}" revoked`);
|
|
318
|
+
// Refresh to show updated entitlements
|
|
319
|
+
const data = await api.refreshEntitlements(entitlementsData.identifier);
|
|
320
|
+
setEntitlementsData(data);
|
|
321
|
+
// Update count cache
|
|
322
|
+
setUserEntitlementCounts((prev) => ({
|
|
323
|
+
...prev,
|
|
324
|
+
[entitlementsData.identifier]: data.entitlements.length,
|
|
325
|
+
}));
|
|
326
|
+
}
|
|
327
|
+
catch (err) {
|
|
328
|
+
setError(err instanceof Error ? err.message : 'Failed to revoke entitlement');
|
|
329
|
+
}
|
|
330
|
+
};
|
|
331
|
+
const openEntitlementsDialog = (email) => {
|
|
332
|
+
if (email) {
|
|
333
|
+
setEntitlementsSearch(email);
|
|
334
|
+
// Auto-search when opened with email
|
|
335
|
+
setEntitlementsLoading(true);
|
|
336
|
+
setEntitlementsError(null);
|
|
337
|
+
setEntitlementsData(null);
|
|
338
|
+
api.getEntitlements(email)
|
|
339
|
+
.then(setEntitlementsData)
|
|
340
|
+
.catch((err) => setEntitlementsError(err instanceof Error ? err.message : 'Failed to lookup entitlements'))
|
|
341
|
+
.finally(() => setEntitlementsLoading(false));
|
|
342
|
+
}
|
|
343
|
+
setEntitlementsDialogOpen(true);
|
|
344
|
+
};
|
|
345
|
+
// Utility functions
|
|
346
|
+
const formatDate = (date) => {
|
|
347
|
+
if (!date)
|
|
348
|
+
return 'Never';
|
|
349
|
+
return new Date(date).toLocaleDateString('en-US', {
|
|
350
|
+
year: 'numeric',
|
|
351
|
+
month: 'short',
|
|
352
|
+
day: 'numeric',
|
|
353
|
+
hour: '2-digit',
|
|
354
|
+
minute: '2-digit',
|
|
355
|
+
});
|
|
356
|
+
};
|
|
357
|
+
// Get entitlements that can be granted (not already assigned)
|
|
358
|
+
const grantableEntitlements = availableEntitlements.filter((e) => !entitlementsData?.entitlements.includes(e.name));
|
|
359
|
+
// Build tabs based on available features
|
|
360
|
+
const tabs = [];
|
|
361
|
+
if (features.users)
|
|
362
|
+
tabs.push({ label: 'Users', count: usersTotal });
|
|
363
|
+
if (features.bans)
|
|
364
|
+
tabs.push({ label: 'Banned', count: bansTotal });
|
|
365
|
+
if (features.users)
|
|
366
|
+
tabs.push({ label: 'Invitations', count: invitationsTotal });
|
|
367
|
+
if (!featuresLoaded) {
|
|
368
|
+
return (_jsx(Box, { sx: { display: 'flex', justifyContent: 'center', py: 8 }, children: _jsx(CircularProgress, {}) }));
|
|
369
|
+
}
|
|
370
|
+
return (_jsxs(Box, { children: [_jsxs(Box, { sx: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 3 }, children: [_jsxs(Box, { children: [_jsx(Text, { variant: "h4", content: title, customColor: "var(--theme-text-primary)" }), _jsx(Text, { variant: "body2", content: subtitle, customColor: "var(--theme-text-secondary)" })] }), _jsxs(Box, { sx: { display: 'flex', gap: 1 }, children: [headerActions, features.users && (_jsx(Button, { variant: "primary", icon: "person_add", label: "Invite User", onClick: () => setInviteDialogOpen(true) })), features.entitlements && (_jsx(Button, { variant: "outlined", icon: "person_search", label: "Lookup Entitlements", onClick: () => openEntitlementsDialog() })), features.bans && (_jsx(Button, { variant: "outlined", color: "error", icon: "block", label: "Ban User", onClick: () => setBanDialogOpen(true) }))] })] }), loading && _jsx(LinearProgress, { sx: { mb: 2 } }), error && (_jsx(Alert, { severity: "error", onClose: () => setError(null), sx: { mb: 2 }, children: error })), success && (_jsx(Alert, { severity: "success", onClose: () => setSuccess(null), sx: { mb: 2 }, children: success })), features.users && (_jsxs(GridLayout, { columns: features.bans ? 3 : 2, spacing: "medium", sx: { mb: 3 }, equalHeight: true, children: [_jsx(Card, { sx: { bgcolor: 'var(--theme-surface)' }, children: _jsx(CardContent, { children: _jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 2 }, children: [_jsx(PersonIcon, { sx: { fontSize: 40, color: 'var(--theme-primary)' } }), _jsxs(Box, { children: [_jsx(Text, { variant: "h4", content: usersTotal.toLocaleString(), customColor: "var(--theme-text-primary)" }), _jsx(Text, { variant: "body2", content: "Total Users", customColor: "var(--theme-text-secondary)" })] })] }) }) }), features.entitlements && (_jsx(Card, { sx: { bgcolor: 'var(--theme-surface)' }, children: _jsx(CardContent, { children: _jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 2 }, children: [_jsx(LocalOfferIcon, { sx: { fontSize: 40, color: 'var(--theme-success)' } }), _jsxs(Box, { children: [_jsx(Text, { variant: "body1", fontWeight: "500", content: "Entitlements", customColor: "var(--theme-text-primary)" }), _jsx(Text, { variant: "body2", content: features.entitlementsReadonly ? 'Read-only Mode' : 'Plugin Active', customColor: features.entitlementsReadonly ? 'var(--theme-warning)' : 'var(--theme-success)' })] })] }) }) })), features.bans && (_jsx(Card, { sx: { bgcolor: 'var(--theme-surface)' }, children: _jsx(CardContent, { children: _jsxs(Box, { sx: { display: 'flex', alignItems: 'center', gap: 2 }, children: [_jsx(BlockIcon, { sx: { fontSize: 40, color: bansTotal > 0 ? 'var(--theme-error)' : 'var(--theme-text-secondary)' } }), _jsxs(Box, { children: [_jsx(Text, { variant: "h4", content: bansTotal.toString(), customColor: bansTotal > 0 ? 'var(--theme-error)' : 'var(--theme-text-primary)' }), _jsx(Text, { variant: "body2", content: "Banned Users", customColor: "var(--theme-text-secondary)" })] })] }) }) }))] })), _jsxs(Card, { sx: { bgcolor: 'var(--theme-surface)' }, children: [tabs.length > 1 && (_jsx(Tabs, { value: activeTab, onChange: (_, v) => setActiveTab(v), sx: { borderBottom: 1, borderColor: 'var(--theme-border)', px: 2 }, children: tabs.map((tab, idx) => (_jsx(Tab, { label: `${tab.label}${tab.count !== undefined ? ` (${tab.count})` : ''}` }, idx))) })), _jsxs(CardContent, { sx: { p: 0 }, children: [_jsx(Box, { sx: { p: 2, borderBottom: 1, borderColor: 'var(--theme-border)' }, children: _jsx(TextField, { size: "small", placeholder: "Search by email or name...", value: usersSearch, onChange: (e) => setUsersSearch(e.target.value), InputProps: {
|
|
371
|
+
startAdornment: (_jsx(InputAdornment, { position: "start", children: _jsx(SearchIcon, { sx: { color: 'var(--theme-text-secondary)' } }) })),
|
|
372
|
+
}, sx: { minWidth: 300 } }) }), activeTab === 0 && features.users && (_jsxs(_Fragment, { children: [_jsx(TableContainer, { children: _jsxs(Table, { children: [_jsx(TableHead, { children: _jsxs(TableRow, { children: [_jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: "ID" }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: "Name" }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: "Email" }), features.entitlements && (_jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, align: "center", children: "Entitlements" })), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: "Created" }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, align: "right", children: "Actions" })] }) }), _jsxs(TableBody, { children: [users.map((user) => (_jsxs(TableRow, { hover: true, sx: { cursor: onUserSelect ? 'pointer' : 'default' }, onClick: () => onUserSelect?.(user), children: [_jsxs(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)', fontFamily: 'monospace', fontSize: '0.75rem' }, children: [user.id.substring(0, 8), "..."] }), _jsx(TableCell, { sx: { color: 'var(--theme-text-primary)', borderColor: 'var(--theme-border)' }, children: _jsx(Text, { variant: "body1", content: user.name || '--', fontWeight: "500" }) }), _jsx(TableCell, { sx: { color: 'var(--theme-text-primary)', borderColor: 'var(--theme-border)' }, children: user.email }), features.entitlements && (_jsx(TableCell, { sx: { borderColor: 'var(--theme-border)' }, align: "center", children: _jsx(Chip, { size: "small", icon: _jsx(LocalOfferIcon, { sx: { fontSize: 14 } }), label: userEntitlementCounts[user.email] ?? '...', sx: {
|
|
373
|
+
bgcolor: 'var(--theme-primary)20',
|
|
374
|
+
color: 'var(--theme-primary)',
|
|
375
|
+
} }) })), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: formatDate(user.created_at) }), _jsx(TableCell, { sx: { borderColor: 'var(--theme-border)' }, align: "right", children: features.entitlements && (_jsx(Tooltip, { title: "View entitlements", children: _jsx(IconButton, { size: "small", onClick: (e) => { e.stopPropagation(); openEntitlementsDialog(user.email); }, children: _jsx(LocalOfferIcon, { fontSize: "small" }) }) })) })] }, user.id))), users.length === 0 && !loading && (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: features.entitlements ? 6 : 5, align: "center", sx: { py: 4, color: 'var(--theme-text-secondary)' }, children: usersSearch ? 'No users match your search' : 'No users found' }) }))] })] }) }), _jsx(TablePagination, { component: "div", count: usersTotal, page: usersPage, onPageChange: (_, page) => setUsersPage(page), rowsPerPage: usersPerPage, onRowsPerPageChange: (e) => {
|
|
376
|
+
setUsersPerPage(parseInt(e.target.value, 10));
|
|
377
|
+
setUsersPage(0);
|
|
378
|
+
}, rowsPerPageOptions: [10, 25, 50, 100], sx: { borderTop: 1, borderColor: 'var(--theme-border)' } })] })), activeTab === 1 && features.bans && (_jsx(TableContainer, { children: _jsxs(Table, { children: [_jsx(TableHead, { children: _jsxs(TableRow, { children: [_jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: "Email" }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: "Reason" }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: "Banned At" }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: "Expires" }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: "Banned By" }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, align: "right", children: "Actions" })] }) }), _jsxs(TableBody, { children: [bans.map((ban) => (_jsxs(TableRow, { children: [_jsx(TableCell, { sx: { color: 'var(--theme-text-primary)', borderColor: 'var(--theme-border)' }, children: _jsx(Text, { variant: "body1", content: ban.email, fontWeight: "500" }) }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)', maxWidth: 200 }, children: _jsx(Text, { variant: "body2", content: ban.reason, noWrap: true }) }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: formatDate(ban.banned_at) }), _jsx(TableCell, { sx: { borderColor: 'var(--theme-border)' }, children: _jsx(Chip, { size: "small", label: ban.expires_at ? formatDate(ban.expires_at) : 'Permanent', sx: {
|
|
379
|
+
bgcolor: ban.expires_at ? 'var(--theme-warning)20' : 'var(--theme-error)20',
|
|
380
|
+
color: ban.expires_at ? 'var(--theme-warning)' : 'var(--theme-error)',
|
|
381
|
+
} }) }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: ban.banned_by }), _jsx(TableCell, { sx: { borderColor: 'var(--theme-border)' }, align: "right", children: _jsx(Button, { buttonSize: "small", variant: "text", color: "success", icon: "check_circle", label: "Unban", onClick: () => handleUnbanUser(ban.email) }) })] }, ban.id))), bans.length === 0 && !loading && (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: 6, align: "center", sx: { py: 4, color: 'var(--theme-text-secondary)' }, children: "No users are currently banned" }) }))] })] }) })), activeTab === 2 && features.users && (_jsx(TableContainer, { children: _jsxs(Table, { children: [_jsx(TableHead, { children: _jsxs(TableRow, { children: [_jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: "Email" }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: "Name" }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: "Created" }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: "Expires" }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: "Status" })] }) }), _jsxs(TableBody, { children: [invitations.map((invitation) => {
|
|
382
|
+
const isExpired = invitation.invitation_expires_at && new Date(invitation.invitation_expires_at) < new Date();
|
|
383
|
+
return (_jsxs(TableRow, { children: [_jsx(TableCell, { sx: { color: 'var(--theme-text-primary)', borderColor: 'var(--theme-border)' }, children: _jsx(Text, { variant: "body1", content: invitation.email, fontWeight: "500" }) }), _jsx(TableCell, { sx: { color: 'var(--theme-text-primary)', borderColor: 'var(--theme-border)' }, children: invitation.name || '--' }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: formatDate(invitation.created_at) }), _jsx(TableCell, { sx: { color: 'var(--theme-text-secondary)', borderColor: 'var(--theme-border)' }, children: formatDate(invitation.invitation_expires_at) }), _jsx(TableCell, { sx: { borderColor: 'var(--theme-border)' }, children: _jsx(Chip, { size: "small", label: isExpired ? 'Expired' : 'Pending', sx: {
|
|
384
|
+
bgcolor: isExpired ? 'var(--theme-error)20' : 'var(--theme-warning)20',
|
|
385
|
+
color: isExpired ? 'var(--theme-error)' : 'var(--theme-warning)',
|
|
386
|
+
} }) })] }, invitation.id));
|
|
387
|
+
}), invitations.length === 0 && !loading && (_jsx(TableRow, { children: _jsx(TableCell, { colSpan: 5, align: "center", sx: { py: 4, color: 'var(--theme-text-secondary)' }, children: "No pending invitations" }) }))] })] }) }))] })] }), features.users && (_jsxs(Dialog, { open: inviteDialogOpen, onClose: handleCloseInviteDialog, maxWidth: "sm", fullWidth: true, children: [_jsx(DialogTitle, { children: "Invite User" }), _jsx(DialogContent, { children: !inviteResult ? (_jsxs(Box, { sx: { display: 'flex', flexDirection: 'column', gap: 2, mt: 1 }, children: [_jsx(TextField, { label: "Email", fullWidth: true, required: true, value: newInvite.email, onChange: (e) => setNewInvite({ ...newInvite, email: e.target.value }), placeholder: "user@example.com", type: "email" }), _jsx(TextField, { label: "Name (Optional)", fullWidth: true, value: newInvite.name, onChange: (e) => setNewInvite({ ...newInvite, name: e.target.value }), placeholder: "Enter user's full name" }), _jsx(TextField, { label: "Role (Optional)", fullWidth: true, value: newInvite.role, onChange: (e) => setNewInvite({ ...newInvite, role: e.target.value }), placeholder: "e.g., admin, editor, viewer", helperText: "Stored in user metadata for your app to use" }), _jsx(TextField, { label: "Invitation Expiry", type: "number", fullWidth: true, value: newInvite.expiresInDays, onChange: (e) => setNewInvite({ ...newInvite, expiresInDays: parseInt(e.target.value) || 7 }), InputProps: {
|
|
388
|
+
endAdornment: _jsx(InputAdornment, { position: "end", children: "days" }),
|
|
389
|
+
}, helperText: "How many days until the invitation expires" })] })) : (_jsxs(Box, { sx: { display: 'flex', flexDirection: 'column', gap: 2, mt: 1 }, children: [_jsx(Alert, { severity: "success", children: "Invitation created successfully! Share this link with the user:" }), _jsx(TextField, { label: "Invitation Link", fullWidth: true, value: inviteResult.inviteLink, InputProps: {
|
|
390
|
+
readOnly: true,
|
|
391
|
+
endAdornment: (_jsx(InputAdornment, { position: "end", children: _jsx(Tooltip, { title: "Copy to clipboard", children: _jsx(IconButton, { onClick: handleCopyInviteLink, edge: "end", children: _jsx(ContentCopyIcon, {}) }) }) })),
|
|
392
|
+
}, helperText: "Click the icon to copy the link to clipboard" }), _jsx(Alert, { severity: "info", children: "The user will need to visit this link to activate their account." })] })) }), _jsxs(DialogActions, { children: [_jsx(Button, { variant: "text", label: "Close", onClick: handleCloseInviteDialog }), !inviteResult && (_jsx(Button, { variant: "primary", label: "Create Invitation", onClick: handleInviteUser, disabled: !newInvite.email }))] })] })), features.bans && (_jsxs(Dialog, { open: banDialogOpen, onClose: () => setBanDialogOpen(false), maxWidth: "sm", fullWidth: true, children: [_jsx(DialogTitle, { children: "Ban User" }), _jsx(DialogContent, { children: _jsxs(Box, { sx: { display: 'flex', flexDirection: 'column', gap: 2, mt: 1 }, children: [_jsx(TextField, { label: "Email", fullWidth: true, value: newBan.email, onChange: (e) => setNewBan({ ...newBan, email: e.target.value }), placeholder: "Enter user email" }), _jsx(TextField, { label: "Reason", fullWidth: true, multiline: true, rows: 3, value: newBan.reason, onChange: (e) => setNewBan({ ...newBan, reason: e.target.value }), placeholder: "Enter reason for ban" }), _jsx(TextField, { label: "Expiration (Optional)", type: "datetime-local", fullWidth: true, value: newBan.expiresAt, onChange: (e) => setNewBan({ ...newBan, expiresAt: e.target.value }), InputLabelProps: { shrink: true }, helperText: "Leave empty for permanent ban" })] }) }), _jsxs(DialogActions, { children: [_jsx(Button, { variant: "text", label: "Cancel", onClick: () => {
|
|
393
|
+
setBanDialogOpen(false);
|
|
394
|
+
setNewBan({ email: '', reason: '', expiresAt: '' });
|
|
395
|
+
} }), _jsx(Button, { variant: "primary", color: "error", label: "Ban User", onClick: handleBanUser, disabled: !newBan.email || !newBan.reason })] })] })), features.entitlements && (_jsxs(Dialog, { open: entitlementsDialogOpen, onClose: () => setEntitlementsDialogOpen(false), maxWidth: "md", fullWidth: true, children: [_jsx(DialogTitle, { children: "User Entitlements" }), _jsx(DialogContent, { children: _jsxs(Box, { sx: { display: 'flex', flexDirection: 'column', gap: 2, mt: 1 }, children: [_jsxs(Box, { sx: { display: 'flex', gap: 1 }, children: [_jsx(TextField, { label: "Email", fullWidth: true, value: entitlementsSearch, onChange: (e) => setEntitlementsSearch(e.target.value), placeholder: "Enter user email", onKeyDown: (e) => e.key === 'Enter' && handleEntitlementsSearch() }), _jsx(Button, { variant: "primary", icon: "search", label: "Lookup", onClick: handleEntitlementsSearch, disabled: entitlementsLoading })] }), entitlementsLoading && (_jsx(Box, { sx: { display: 'flex', justifyContent: 'center', py: 4 }, children: _jsx(CircularProgress, {}) })), entitlementsError && (_jsx(Alert, { severity: "error", children: entitlementsError })), entitlementsData && (_jsxs(Box, { children: [_jsxs(Box, { sx: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', mb: 2 }, children: [_jsxs(Box, { children: [_jsx(Text, { variant: "h6", content: entitlementsData.identifier, customColor: "var(--theme-text-primary)" }), _jsx(Text, { variant: "body2", content: `Source: ${entitlementsData.source}`, customColor: "var(--theme-text-secondary)" })] }), _jsx(Button, { variant: "outlined", icon: "refresh", label: entitlementsRefreshing ? 'Refreshing...' : 'Refresh', onClick: handleEntitlementsRefresh, disabled: entitlementsRefreshing, buttonSize: "small" })] }), !features.entitlementsReadonly && grantableEntitlements.length > 0 && (_jsxs(Box, { sx: { display: 'flex', gap: 1, mb: 2, p: 2, bgcolor: 'var(--theme-background)', borderRadius: 1 }, children: [_jsx(Autocomplete, { size: "small", options: grantableEntitlements, getOptionLabel: (option) => option.name, value: grantableEntitlements.find((e) => e.name === selectedEntitlement) || null, onChange: (_, newValue) => setSelectedEntitlement(newValue?.name || ''), renderInput: (params) => (_jsx(TextField, { ...params, label: "Grant Entitlement", placeholder: "Select entitlement" })), sx: { flex: 1 } }), _jsx(Button, { variant: "primary", icon: "add", label: "Grant", onClick: handleGrantEntitlement, disabled: !selectedEntitlement || grantingEntitlement, buttonSize: "small" })] })), _jsx(Text, { variant: "subtitle2", content: "Current Entitlements", customColor: "var(--theme-text-secondary)", style: { marginBottom: '8px' } }), entitlementsData.entitlements.length === 0 ? (_jsx(Text, { variant: "body2", content: "No entitlements found", customColor: "var(--theme-text-secondary)" })) : (_jsx(Box, { sx: { display: 'flex', flexWrap: 'wrap', gap: 1 }, children: entitlementsData.entitlements.map((ent, idx) => (_jsx(Chip, { icon: _jsx(CheckCircleIcon, { sx: { fontSize: 16 } }), label: ent, onDelete: !features.entitlementsReadonly ? () => handleRevokeEntitlement(ent) : undefined, deleteIcon: _jsx(DeleteIcon, { sx: { fontSize: 16 } }), sx: {
|
|
396
|
+
bgcolor: 'var(--theme-success)20',
|
|
397
|
+
color: 'var(--theme-success)',
|
|
398
|
+
'& .MuiChip-deleteIcon': {
|
|
399
|
+
color: 'var(--theme-error)',
|
|
400
|
+
'&:hover': {
|
|
401
|
+
color: 'var(--theme-error)',
|
|
402
|
+
},
|
|
403
|
+
},
|
|
404
|
+
} }, idx))) })), _jsxs(Box, { sx: { mt: 2, pt: 2, borderTop: 1, borderColor: 'var(--theme-border)' }, children: [_jsx(Text, { variant: "caption", content: `Data from: ${entitlementsData.source === 'cache' ? 'Cache' : 'Source'}`, customColor: "var(--theme-text-secondary)" }), entitlementsData.cachedAt && (_jsx(Text, { variant: "caption", content: ` | Cached: ${formatDate(entitlementsData.cachedAt)}`, customColor: "var(--theme-text-secondary)" })), features.entitlementsReadonly && (_jsx(Text, { variant: "caption", content: " | Read-only mode (modifications disabled)", customColor: "var(--theme-warning)" }))] })] }))] }) }), _jsx(DialogActions, { children: _jsx(Button, { variant: "text", label: "Close", onClick: () => setEntitlementsDialogOpen(false) }) })] }))] }));
|
|
405
|
+
}
|
|
406
|
+
//# sourceMappingURL=UsersPage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"UsersPage.js","sourceRoot":"","sources":["../../../../ui/src/pages/UsersPage.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formatting Utilities
|
|
3
|
+
*
|
|
4
|
+
* Common formatting functions for numbers, durations, and strings.
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Format a number with K/M suffix for large values
|
|
10
|
+
*/
|
|
11
|
+
export declare function formatNumber(num: number): string;
|
|
12
|
+
/**
|
|
13
|
+
* Format milliseconds to human-readable duration
|
|
14
|
+
*/
|
|
15
|
+
export declare function formatDuration(ms: number): string;
|
|
16
|
+
/**
|
|
17
|
+
* Truncate a string ID for display
|
|
18
|
+
*/
|
|
19
|
+
export declare function truncateId(id: string, maxLength?: number): string;
|
|
20
|
+
//# sourceMappingURL=formatters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.d.ts","sourceRoot":"","sources":["../../../../ui/src/utils/formatters.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAIhD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAKjD;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,MAAM,EAAE,SAAS,SAAK,GAAG,MAAM,CAE7D"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Formatting Utilities
|
|
3
|
+
*
|
|
4
|
+
* Common formatting functions for numbers, durations, and strings.
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
7
|
+
*/
|
|
8
|
+
/**
|
|
9
|
+
* Format a number with K/M suffix for large values
|
|
10
|
+
*/
|
|
11
|
+
export function formatNumber(num) {
|
|
12
|
+
if (num >= 1000000)
|
|
13
|
+
return `${(num / 1000000).toFixed(1)}M`;
|
|
14
|
+
if (num >= 1000)
|
|
15
|
+
return `${(num / 1000).toFixed(1)}K`;
|
|
16
|
+
return num.toString();
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Format milliseconds to human-readable duration
|
|
20
|
+
*/
|
|
21
|
+
export function formatDuration(ms) {
|
|
22
|
+
if (ms < 1000)
|
|
23
|
+
return `${ms}ms`;
|
|
24
|
+
if (ms < 60000)
|
|
25
|
+
return `${(ms / 1000).toFixed(0)}s`;
|
|
26
|
+
if (ms < 3600000)
|
|
27
|
+
return `${(ms / 60000).toFixed(0)}m`;
|
|
28
|
+
return `${(ms / 3600000).toFixed(1)}h`;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Truncate a string ID for display
|
|
32
|
+
*/
|
|
33
|
+
export function truncateId(id, maxLength = 12) {
|
|
34
|
+
return id.length > maxLength ? `${id.substring(0, maxLength)}...` : id;
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=formatters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"formatters.js","sourceRoot":"","sources":["../../../../ui/src/utils/formatters.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,IAAI,GAAG,IAAI,OAAO;QAAE,OAAO,GAAG,CAAC,GAAG,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IAC5D,IAAI,GAAG,IAAI,IAAI;QAAE,OAAO,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACtD,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,EAAU;IACvC,IAAI,EAAE,GAAG,IAAI;QAAE,OAAO,GAAG,EAAE,IAAI,CAAC;IAChC,IAAI,EAAE,GAAG,KAAK;QAAE,OAAO,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACpD,IAAI,EAAE,GAAG,OAAO;QAAE,OAAO,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;IACvD,OAAO,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC;AACzC,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,EAAU,EAAE,SAAS,GAAG,EAAE;IACnD,OAAO,EAAE,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;AACzE,CAAC"}
|