@qwickapps/server 1.5.2 → 1.6.1
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 +86 -0
- package/README.md +177 -0
- package/dist/core/control-panel.d.ts.map +1 -1
- package/dist/core/control-panel.js +118 -261
- package/dist/core/control-panel.js.map +1 -1
- package/dist/core/plugin-registry.d.ts +20 -0
- package/dist/core/plugin-registry.d.ts.map +1 -1
- package/dist/core/plugin-registry.js +27 -2
- package/dist/core/plugin-registry.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -2
- package/dist/index.js.map +1 -1
- package/dist/plugins/api-keys/ApiKeysManagementPage.d.ts +9 -0
- package/dist/plugins/api-keys/ApiKeysManagementPage.d.ts.map +1 -0
- package/dist/plugins/api-keys/ApiKeysManagementPage.js +66 -0
- package/dist/plugins/api-keys/ApiKeysManagementPage.js.map +1 -0
- package/dist/plugins/api-keys/ApiKeysStatusWidget.d.ts +9 -0
- package/dist/plugins/api-keys/ApiKeysStatusWidget.d.ts.map +1 -0
- package/dist/plugins/api-keys/ApiKeysStatusWidget.js +30 -0
- package/dist/plugins/api-keys/ApiKeysStatusWidget.js.map +1 -0
- package/dist/plugins/api-keys/api-keys-plugin.d.ts +46 -0
- package/dist/plugins/api-keys/api-keys-plugin.d.ts.map +1 -0
- package/dist/plugins/api-keys/api-keys-plugin.js +452 -0
- package/dist/plugins/api-keys/api-keys-plugin.js.map +1 -0
- package/dist/plugins/api-keys/index.d.ts +18 -0
- package/dist/plugins/api-keys/index.d.ts.map +1 -0
- package/dist/plugins/api-keys/index.js +20 -0
- package/dist/plugins/api-keys/index.js.map +1 -0
- package/dist/plugins/api-keys/middleware/bearer-token-auth.d.ts +74 -0
- package/dist/plugins/api-keys/middleware/bearer-token-auth.d.ts.map +1 -0
- package/dist/plugins/api-keys/middleware/bearer-token-auth.js +201 -0
- package/dist/plugins/api-keys/middleware/bearer-token-auth.js.map +1 -0
- package/dist/plugins/api-keys/middleware/index.d.ts +8 -0
- package/dist/plugins/api-keys/middleware/index.d.ts.map +1 -0
- package/dist/plugins/api-keys/middleware/index.js +8 -0
- package/dist/plugins/api-keys/middleware/index.js.map +1 -0
- package/dist/plugins/api-keys/middleware/usage-logging.d.ts +21 -0
- package/dist/plugins/api-keys/middleware/usage-logging.d.ts.map +1 -0
- package/dist/plugins/api-keys/middleware/usage-logging.js +57 -0
- package/dist/plugins/api-keys/middleware/usage-logging.js.map +1 -0
- package/dist/plugins/api-keys/stores/index.d.ts +9 -0
- package/dist/plugins/api-keys/stores/index.d.ts.map +1 -0
- package/dist/plugins/api-keys/stores/index.js +9 -0
- package/dist/plugins/api-keys/stores/index.js.map +1 -0
- package/dist/plugins/api-keys/stores/plugin-scope-store.d.ts +81 -0
- package/dist/plugins/api-keys/stores/plugin-scope-store.d.ts.map +1 -0
- package/dist/plugins/api-keys/stores/plugin-scope-store.js +155 -0
- package/dist/plugins/api-keys/stores/plugin-scope-store.js.map +1 -0
- package/dist/plugins/api-keys/stores/postgres-store.d.ts +34 -0
- package/dist/plugins/api-keys/stores/postgres-store.d.ts.map +1 -0
- package/dist/plugins/api-keys/stores/postgres-store.js +360 -0
- package/dist/plugins/api-keys/stores/postgres-store.js.map +1 -0
- package/dist/plugins/api-keys/stores/usage-log-store.d.ts +119 -0
- package/dist/plugins/api-keys/stores/usage-log-store.d.ts.map +1 -0
- package/dist/plugins/api-keys/stores/usage-log-store.js +246 -0
- package/dist/plugins/api-keys/stores/usage-log-store.js.map +1 -0
- package/dist/plugins/api-keys/types.d.ts +309 -0
- package/dist/plugins/api-keys/types.d.ts.map +1 -0
- package/dist/plugins/api-keys/types.js +105 -0
- package/dist/plugins/api-keys/types.js.map +1 -0
- package/dist/plugins/auth/AuthManagementPage.d.ts +9 -0
- package/dist/plugins/auth/AuthManagementPage.d.ts.map +1 -0
- package/dist/plugins/auth/AuthManagementPage.js +73 -0
- package/dist/plugins/auth/AuthManagementPage.js.map +1 -0
- package/dist/plugins/auth/AuthStatusWidget.d.ts +9 -0
- package/dist/plugins/auth/AuthStatusWidget.d.ts.map +1 -0
- package/dist/plugins/auth/AuthStatusWidget.js +30 -0
- package/dist/plugins/auth/AuthStatusWidget.js.map +1 -0
- package/dist/plugins/auth/adapters/basic-adapter.d.ts +1 -0
- package/dist/plugins/auth/adapters/basic-adapter.d.ts.map +1 -1
- package/dist/plugins/auth/adapters/basic-adapter.js +54 -0
- package/dist/plugins/auth/adapters/basic-adapter.js.map +1 -1
- package/dist/plugins/auth/auth-plugin.js +1 -1
- package/dist/plugins/auth/auth-plugin.js.map +1 -1
- package/dist/plugins/auth/env-config.d.ts +15 -1
- package/dist/plugins/auth/env-config.d.ts.map +1 -1
- package/dist/plugins/auth/env-config.js +16 -6
- package/dist/plugins/auth/env-config.js.map +1 -1
- package/dist/plugins/auth/index.d.ts +5 -1
- package/dist/plugins/auth/index.d.ts.map +1 -1
- package/dist/plugins/auth/index.js +7 -1
- package/dist/plugins/auth/index.js.map +1 -1
- package/dist/plugins/bans/BansManagementPage.d.ts +9 -0
- package/dist/plugins/bans/BansManagementPage.d.ts.map +1 -0
- package/dist/plugins/bans/BansManagementPage.js +65 -0
- package/dist/plugins/bans/BansManagementPage.js.map +1 -0
- package/dist/plugins/bans/BansStatusWidget.d.ts +9 -0
- package/dist/plugins/bans/BansStatusWidget.d.ts.map +1 -0
- package/dist/plugins/bans/BansStatusWidget.js +30 -0
- package/dist/plugins/bans/BansStatusWidget.js.map +1 -0
- package/dist/plugins/bans/bans-plugin.js +1 -1
- package/dist/plugins/bans/bans-plugin.js.map +1 -1
- package/dist/plugins/bans/index.d.ts +4 -0
- package/dist/plugins/bans/index.d.ts.map +1 -1
- package/dist/plugins/bans/index.js +3 -0
- package/dist/plugins/bans/index.js.map +1 -1
- package/dist/plugins/cache/CacheManagementPage.d.ts +13 -0
- package/dist/plugins/cache/CacheManagementPage.d.ts.map +1 -0
- package/dist/plugins/cache/CacheManagementPage.js +175 -0
- package/dist/plugins/cache/CacheManagementPage.js.map +1 -0
- package/dist/plugins/cache/CacheStatusWidget.d.ts +13 -0
- package/dist/plugins/cache/CacheStatusWidget.d.ts.map +1 -0
- package/dist/plugins/cache/CacheStatusWidget.js +80 -0
- package/dist/plugins/cache/CacheStatusWidget.js.map +1 -0
- package/dist/plugins/cache/index.d.ts +10 -0
- package/dist/plugins/cache/index.d.ts.map +1 -0
- package/dist/plugins/cache/index.js +8 -0
- package/dist/plugins/cache/index.js.map +1 -0
- package/dist/plugins/cms/cms-plugin.d.ts +24 -0
- package/dist/plugins/cms/cms-plugin.d.ts.map +1 -0
- package/dist/plugins/cms/cms-plugin.js +220 -0
- package/dist/plugins/cms/cms-plugin.js.map +1 -0
- package/dist/plugins/cms/index.d.ts +8 -0
- package/dist/plugins/cms/index.d.ts.map +1 -0
- package/dist/plugins/cms/index.js +7 -0
- package/dist/plugins/cms/index.js.map +1 -0
- package/dist/plugins/config-plugin.js +4 -4
- package/dist/plugins/config-plugin.js.map +1 -1
- package/dist/plugins/core/index.d.ts +32 -0
- package/dist/plugins/core/index.d.ts.map +1 -0
- package/dist/plugins/core/index.js +129 -0
- package/dist/plugins/core/index.js.map +1 -0
- package/dist/plugins/devices/DevicesManagementPage.d.ts +9 -0
- package/dist/plugins/devices/DevicesManagementPage.d.ts.map +1 -0
- package/dist/plugins/devices/DevicesManagementPage.js +65 -0
- package/dist/plugins/devices/DevicesManagementPage.js.map +1 -0
- package/dist/plugins/devices/DevicesStatusWidget.d.ts +9 -0
- package/dist/plugins/devices/DevicesStatusWidget.d.ts.map +1 -0
- package/dist/plugins/devices/DevicesStatusWidget.js +30 -0
- package/dist/plugins/devices/DevicesStatusWidget.js.map +1 -0
- package/dist/plugins/devices/devices-plugin.js +1 -1
- package/dist/plugins/devices/devices-plugin.js.map +1 -1
- package/dist/plugins/devices/index.d.ts +4 -0
- package/dist/plugins/devices/index.d.ts.map +1 -1
- package/dist/plugins/devices/index.js +3 -0
- package/dist/plugins/devices/index.js.map +1 -1
- package/dist/plugins/diagnostics/DiagnosticsManagementPage.d.ts +13 -0
- package/dist/plugins/diagnostics/DiagnosticsManagementPage.d.ts.map +1 -0
- package/dist/plugins/diagnostics/DiagnosticsManagementPage.js +78 -0
- package/dist/plugins/diagnostics/DiagnosticsManagementPage.js.map +1 -0
- package/dist/plugins/diagnostics/DiagnosticsStatusWidget.d.ts +13 -0
- package/dist/plugins/diagnostics/DiagnosticsStatusWidget.d.ts.map +1 -0
- package/dist/plugins/diagnostics/DiagnosticsStatusWidget.js +87 -0
- package/dist/plugins/diagnostics/DiagnosticsStatusWidget.js.map +1 -0
- package/dist/plugins/diagnostics/index.d.ts +10 -0
- package/dist/plugins/diagnostics/index.d.ts.map +1 -0
- package/dist/plugins/diagnostics/index.js +8 -0
- package/dist/plugins/diagnostics/index.js.map +1 -0
- package/dist/plugins/diagnostics-plugin.js +4 -3
- package/dist/plugins/diagnostics-plugin.js.map +1 -1
- package/dist/plugins/entitlements/EntitlementsManagementPage.d.ts +9 -0
- package/dist/plugins/entitlements/EntitlementsManagementPage.d.ts.map +1 -0
- package/dist/plugins/entitlements/EntitlementsManagementPage.js +59 -0
- package/dist/plugins/entitlements/EntitlementsManagementPage.js.map +1 -0
- package/dist/plugins/entitlements/EntitlementsStatusWidget.d.ts +9 -0
- package/dist/plugins/entitlements/EntitlementsStatusWidget.d.ts.map +1 -0
- package/dist/plugins/entitlements/EntitlementsStatusWidget.js +30 -0
- package/dist/plugins/entitlements/EntitlementsStatusWidget.js.map +1 -0
- package/dist/plugins/entitlements/entitlements-plugin.js +1 -1
- package/dist/plugins/entitlements/entitlements-plugin.js.map +1 -1
- package/dist/plugins/entitlements/index.d.ts +4 -0
- package/dist/plugins/entitlements/index.d.ts.map +1 -1
- package/dist/plugins/entitlements/index.js +3 -0
- package/dist/plugins/entitlements/index.js.map +1 -1
- package/dist/plugins/frontend-app-plugin.d.ts.map +1 -1
- package/dist/plugins/frontend-app-plugin.js +5 -2
- package/dist/plugins/frontend-app-plugin.js.map +1 -1
- package/dist/plugins/health/HealthManagementPage.d.ts +13 -0
- package/dist/plugins/health/HealthManagementPage.d.ts.map +1 -0
- package/dist/plugins/health/HealthManagementPage.js +120 -0
- package/dist/plugins/health/HealthManagementPage.js.map +1 -0
- package/dist/plugins/health/HealthStatusWidget.d.ts +13 -0
- package/dist/plugins/health/HealthStatusWidget.d.ts.map +1 -0
- package/dist/plugins/health/HealthStatusWidget.js +80 -0
- package/dist/plugins/health/HealthStatusWidget.js.map +1 -0
- package/dist/plugins/health/index.d.ts +10 -0
- package/dist/plugins/health/index.d.ts.map +1 -0
- package/dist/plugins/health/index.js +8 -0
- package/dist/plugins/health/index.js.map +1 -0
- package/dist/plugins/index.d.ts +9 -1
- package/dist/plugins/index.d.ts.map +1 -1
- package/dist/plugins/index.js +6 -1
- package/dist/plugins/index.js.map +1 -1
- package/dist/plugins/logs/LogsManagementPage.d.ts +13 -0
- package/dist/plugins/logs/LogsManagementPage.d.ts.map +1 -0
- package/dist/plugins/logs/LogsManagementPage.js +151 -0
- package/dist/plugins/logs/LogsManagementPage.js.map +1 -0
- package/dist/plugins/logs/LogsStatusWidget.d.ts +13 -0
- package/dist/plugins/logs/LogsStatusWidget.d.ts.map +1 -0
- package/dist/plugins/logs/LogsStatusWidget.js +76 -0
- package/dist/plugins/logs/LogsStatusWidget.js.map +1 -0
- package/dist/plugins/logs/index.d.ts +10 -0
- package/dist/plugins/logs/index.d.ts.map +1 -0
- package/dist/plugins/logs/index.js +8 -0
- package/dist/plugins/logs/index.js.map +1 -0
- package/dist/plugins/logs-plugin.js +6 -6
- package/dist/plugins/logs-plugin.js.map +1 -1
- package/dist/plugins/maintenance/MaintenanceManagementPage.d.ts +13 -0
- package/dist/plugins/maintenance/MaintenanceManagementPage.d.ts.map +1 -0
- package/dist/plugins/maintenance/MaintenanceManagementPage.js +40 -0
- package/dist/plugins/maintenance/MaintenanceManagementPage.js.map +1 -0
- package/dist/plugins/maintenance/MaintenanceStatusWidget.d.ts +13 -0
- package/dist/plugins/maintenance/MaintenanceStatusWidget.d.ts.map +1 -0
- package/dist/plugins/maintenance/MaintenanceStatusWidget.js +76 -0
- package/dist/plugins/maintenance/MaintenanceStatusWidget.js.map +1 -0
- package/dist/plugins/maintenance/SeedExecutor.d.ts +17 -0
- package/dist/plugins/maintenance/SeedExecutor.d.ts.map +1 -0
- package/dist/plugins/maintenance/SeedExecutor.js +154 -0
- package/dist/plugins/maintenance/SeedExecutor.js.map +1 -0
- package/dist/plugins/maintenance/SeedHistory.d.ts +14 -0
- package/dist/plugins/maintenance/SeedHistory.d.ts.map +1 -0
- package/dist/plugins/maintenance/SeedHistory.js +183 -0
- package/dist/plugins/maintenance/SeedHistory.js.map +1 -0
- package/dist/plugins/maintenance/SeedList.d.ts +15 -0
- package/dist/plugins/maintenance/SeedList.d.ts.map +1 -0
- package/dist/plugins/maintenance/SeedList.js +68 -0
- package/dist/plugins/maintenance/SeedList.js.map +1 -0
- package/dist/plugins/maintenance/SeedManagementPage.d.ts +14 -0
- package/dist/plugins/maintenance/SeedManagementPage.d.ts.map +1 -0
- package/dist/plugins/maintenance/SeedManagementPage.js +42 -0
- package/dist/plugins/maintenance/SeedManagementPage.js.map +1 -0
- package/dist/plugins/maintenance/index.d.ts +20 -0
- package/dist/plugins/maintenance/index.d.ts.map +1 -0
- package/dist/plugins/maintenance/index.js +15 -0
- package/dist/plugins/maintenance/index.js.map +1 -0
- package/dist/plugins/maintenance/seed-executor.d.ts +55 -0
- package/dist/plugins/maintenance/seed-executor.d.ts.map +1 -0
- package/dist/plugins/maintenance/seed-executor.js +178 -0
- package/dist/plugins/maintenance/seed-executor.js.map +1 -0
- package/dist/plugins/maintenance-plugin.d.ts +35 -0
- package/dist/plugins/maintenance-plugin.d.ts.map +1 -0
- package/dist/plugins/maintenance-plugin.js +321 -0
- package/dist/plugins/maintenance-plugin.js.map +1 -0
- package/dist/plugins/notifications/NotificationsManagementPage.d.ts +13 -0
- package/dist/plugins/notifications/NotificationsManagementPage.d.ts.map +1 -0
- package/dist/plugins/notifications/NotificationsManagementPage.js +59 -0
- package/dist/plugins/notifications/NotificationsManagementPage.js.map +1 -0
- package/dist/plugins/notifications/NotificationsStatusWidget.d.ts +9 -0
- package/dist/plugins/notifications/NotificationsStatusWidget.d.ts.map +1 -0
- package/dist/plugins/notifications/NotificationsStatusWidget.js +30 -0
- package/dist/plugins/notifications/NotificationsStatusWidget.js.map +1 -0
- package/dist/plugins/notifications/index.d.ts +4 -0
- package/dist/plugins/notifications/index.d.ts.map +1 -1
- package/dist/plugins/notifications/index.js +3 -0
- package/dist/plugins/notifications/index.js.map +1 -1
- package/dist/plugins/notifications/notifications-plugin.js +1 -1
- package/dist/plugins/notifications/notifications-plugin.js.map +1 -1
- package/dist/plugins/parental/ParentalManagementPage.d.ts +9 -0
- package/dist/plugins/parental/ParentalManagementPage.d.ts.map +1 -0
- package/dist/plugins/parental/ParentalManagementPage.js +56 -0
- package/dist/plugins/parental/ParentalManagementPage.js.map +1 -0
- package/dist/plugins/parental/ParentalStatusWidget.d.ts +9 -0
- package/dist/plugins/parental/ParentalStatusWidget.d.ts.map +1 -0
- package/dist/plugins/parental/ParentalStatusWidget.js +30 -0
- package/dist/plugins/parental/ParentalStatusWidget.js.map +1 -0
- package/dist/plugins/parental/index.d.ts +4 -0
- package/dist/plugins/parental/index.d.ts.map +1 -1
- package/dist/plugins/parental/index.js +3 -0
- package/dist/plugins/parental/index.js.map +1 -1
- package/dist/plugins/parental/parental-plugin.js +1 -1
- package/dist/plugins/parental/parental-plugin.js.map +1 -1
- package/dist/plugins/postgres/PostgresManagementPage.d.ts +13 -0
- package/dist/plugins/postgres/PostgresManagementPage.d.ts.map +1 -0
- package/dist/plugins/postgres/PostgresManagementPage.js +139 -0
- package/dist/plugins/postgres/PostgresManagementPage.js.map +1 -0
- package/dist/plugins/postgres/PostgresStatusWidget.d.ts +13 -0
- package/dist/plugins/postgres/PostgresStatusWidget.d.ts.map +1 -0
- package/dist/plugins/postgres/PostgresStatusWidget.js +87 -0
- package/dist/plugins/postgres/PostgresStatusWidget.js.map +1 -0
- package/dist/plugins/postgres/index.d.ts +10 -0
- package/dist/plugins/postgres/index.d.ts.map +1 -0
- package/dist/plugins/postgres/index.js +8 -0
- package/dist/plugins/postgres/index.js.map +1 -0
- package/dist/plugins/preferences/PreferencesManagementPage.d.ts +9 -0
- package/dist/plugins/preferences/PreferencesManagementPage.d.ts.map +1 -0
- package/dist/plugins/preferences/PreferencesManagementPage.js +67 -0
- package/dist/plugins/preferences/PreferencesManagementPage.js.map +1 -0
- package/dist/plugins/preferences/PreferencesStatusWidget.d.ts +9 -0
- package/dist/plugins/preferences/PreferencesStatusWidget.d.ts.map +1 -0
- package/dist/plugins/preferences/PreferencesStatusWidget.js +30 -0
- package/dist/plugins/preferences/PreferencesStatusWidget.js.map +1 -0
- package/dist/plugins/preferences/index.d.ts +4 -0
- package/dist/plugins/preferences/index.d.ts.map +1 -1
- package/dist/plugins/preferences/index.js +3 -0
- package/dist/plugins/preferences/index.js.map +1 -1
- package/dist/plugins/preferences/preferences-plugin.d.ts.map +1 -1
- package/dist/plugins/preferences/preferences-plugin.js +9 -4
- package/dist/plugins/preferences/preferences-plugin.js.map +1 -1
- package/dist/plugins/preferences/types.d.ts +5 -0
- package/dist/plugins/preferences/types.d.ts.map +1 -1
- package/dist/plugins/preferences/types.js +5 -1
- package/dist/plugins/preferences/types.js.map +1 -1
- package/dist/plugins/profiles/ProfilesManagementPage.d.ts +9 -0
- package/dist/plugins/profiles/ProfilesManagementPage.d.ts.map +1 -0
- package/dist/plugins/profiles/ProfilesManagementPage.js +51 -0
- package/dist/plugins/profiles/ProfilesManagementPage.js.map +1 -0
- package/dist/plugins/profiles/ProfilesStatusWidget.d.ts +9 -0
- package/dist/plugins/profiles/ProfilesStatusWidget.d.ts.map +1 -0
- package/dist/plugins/profiles/ProfilesStatusWidget.js +30 -0
- package/dist/plugins/profiles/ProfilesStatusWidget.js.map +1 -0
- package/dist/plugins/profiles/index.d.ts +4 -0
- package/dist/plugins/profiles/index.d.ts.map +1 -1
- package/dist/plugins/profiles/index.js +3 -0
- package/dist/plugins/profiles/index.js.map +1 -1
- package/dist/plugins/profiles/profiles-plugin.js +1 -1
- package/dist/plugins/profiles/profiles-plugin.js.map +1 -1
- package/dist/plugins/qwickbrain/QwickbrainManagementPage.d.ts +13 -0
- package/dist/plugins/qwickbrain/QwickbrainManagementPage.d.ts.map +1 -0
- package/dist/plugins/qwickbrain/QwickbrainManagementPage.js +59 -0
- package/dist/plugins/qwickbrain/QwickbrainManagementPage.js.map +1 -0
- package/dist/plugins/qwickbrain/QwickbrainStatusWidget.d.ts +9 -0
- package/dist/plugins/qwickbrain/QwickbrainStatusWidget.d.ts.map +1 -0
- package/dist/plugins/qwickbrain/QwickbrainStatusWidget.js +30 -0
- package/dist/plugins/qwickbrain/QwickbrainStatusWidget.js.map +1 -0
- package/dist/plugins/qwickbrain/index.d.ts +4 -0
- package/dist/plugins/qwickbrain/index.d.ts.map +1 -1
- package/dist/plugins/qwickbrain/index.js +3 -0
- package/dist/plugins/qwickbrain/index.js.map +1 -1
- package/dist/plugins/qwickbrain/qwickbrain-plugin.d.ts.map +1 -1
- package/dist/plugins/qwickbrain/qwickbrain-plugin.js +12 -34
- package/dist/plugins/qwickbrain/qwickbrain-plugin.js.map +1 -1
- package/dist/plugins/qwickbrain/types.d.ts +0 -1
- package/dist/plugins/qwickbrain/types.d.ts.map +1 -1
- package/dist/plugins/rate-limit/RateLimitManagementPage.d.ts +13 -0
- package/dist/plugins/rate-limit/RateLimitManagementPage.d.ts.map +1 -0
- package/dist/plugins/rate-limit/RateLimitManagementPage.js +60 -0
- package/dist/plugins/rate-limit/RateLimitManagementPage.js.map +1 -0
- package/dist/plugins/rate-limit/RateLimitStatusWidget.d.ts +9 -0
- package/dist/plugins/rate-limit/RateLimitStatusWidget.d.ts.map +1 -0
- package/dist/plugins/rate-limit/RateLimitStatusWidget.js +30 -0
- package/dist/plugins/rate-limit/RateLimitStatusWidget.js.map +1 -0
- package/dist/plugins/rate-limit/index.d.ts +4 -0
- package/dist/plugins/rate-limit/index.d.ts.map +1 -1
- package/dist/plugins/rate-limit/index.js +3 -0
- package/dist/plugins/rate-limit/index.js.map +1 -1
- package/dist/plugins/rate-limit/rate-limit-plugin.js +5 -5
- package/dist/plugins/rate-limit/rate-limit-plugin.js.map +1 -1
- package/dist/plugins/subscriptions/SubscriptionsManagementPage.d.ts +9 -0
- package/dist/plugins/subscriptions/SubscriptionsManagementPage.d.ts.map +1 -0
- package/dist/plugins/subscriptions/SubscriptionsManagementPage.js +66 -0
- package/dist/plugins/subscriptions/SubscriptionsManagementPage.js.map +1 -0
- package/dist/plugins/subscriptions/SubscriptionsStatusWidget.d.ts +9 -0
- package/dist/plugins/subscriptions/SubscriptionsStatusWidget.d.ts.map +1 -0
- package/dist/plugins/subscriptions/SubscriptionsStatusWidget.js +30 -0
- package/dist/plugins/subscriptions/SubscriptionsStatusWidget.js.map +1 -0
- package/dist/plugins/subscriptions/index.d.ts +4 -0
- package/dist/plugins/subscriptions/index.d.ts.map +1 -1
- package/dist/plugins/subscriptions/index.js +3 -0
- package/dist/plugins/subscriptions/index.js.map +1 -1
- package/dist/plugins/subscriptions/subscriptions-plugin.js +1 -1
- package/dist/plugins/subscriptions/subscriptions-plugin.js.map +1 -1
- package/dist/plugins/usage/UsageManagementPage.d.ts +9 -0
- package/dist/plugins/usage/UsageManagementPage.d.ts.map +1 -0
- package/dist/plugins/usage/UsageManagementPage.js +42 -0
- package/dist/plugins/usage/UsageManagementPage.js.map +1 -0
- package/dist/plugins/usage/UsageStatusWidget.d.ts +9 -0
- package/dist/plugins/usage/UsageStatusWidget.d.ts.map +1 -0
- package/dist/plugins/usage/UsageStatusWidget.js +30 -0
- package/dist/plugins/usage/UsageStatusWidget.js.map +1 -0
- package/dist/plugins/usage/index.d.ts +4 -0
- package/dist/plugins/usage/index.d.ts.map +1 -1
- package/dist/plugins/usage/index.js +3 -0
- package/dist/plugins/usage/index.js.map +1 -1
- package/dist/plugins/usage/usage-plugin.js +1 -1
- package/dist/plugins/usage/usage-plugin.js.map +1 -1
- package/dist/plugins/users/UsersManagementPage.d.ts +13 -0
- package/dist/plugins/users/UsersManagementPage.d.ts.map +1 -0
- package/dist/plugins/users/UsersManagementPage.js +199 -0
- package/dist/plugins/users/UsersManagementPage.js.map +1 -0
- package/dist/plugins/users/UsersStatusWidget.d.ts +13 -0
- package/dist/plugins/users/UsersStatusWidget.d.ts.map +1 -0
- package/dist/plugins/users/UsersStatusWidget.js +79 -0
- package/dist/plugins/users/UsersStatusWidget.js.map +1 -0
- package/dist/plugins/users/stores/postgres-store.d.ts.map +1 -1
- package/dist/plugins/users/stores/postgres-store.js +74 -19
- package/dist/plugins/users/stores/postgres-store.js.map +1 -1
- package/dist/plugins/users/types.d.ts +30 -1
- package/dist/plugins/users/types.d.ts.map +1 -1
- package/dist/plugins/users/users-plugin.d.ts.map +1 -1
- package/dist/plugins/users/users-plugin.js +118 -3
- package/dist/plugins/users/users-plugin.js.map +1 -1
- package/dist-ui/assets/index-BiEHWqD3.js +528 -0
- package/dist-ui/assets/index-BiEHWqD3.js.map +1 -0
- package/dist-ui/index.html +1 -1
- package/dist-ui-lib/index.js +3682 -2765
- package/dist-ui-lib/index.js.map +1 -1
- package/dist-ui-lib/src/api/clientBuilder.d.ts +33 -0
- package/dist-ui-lib/{api → src/api}/controlPanelApi.d.ts +124 -0
- package/dist-ui-lib/src/api/index.d.ts +11 -0
- package/dist-ui-lib/src/api/types.d.ts +313 -0
- package/dist-ui-lib/{components → src/components}/ControlPanelApp.d.ts +2 -1
- package/dist-ui-lib/src/components/auth/AcceptInvitationPage.d.ts +21 -0
- package/dist-ui-lib/src/components/auth/LoginPage.d.ts +27 -0
- package/dist-ui-lib/src/components/auth/PasswordResetConfirmPage.d.ts +17 -0
- package/dist-ui-lib/src/components/auth/PasswordResetPage.d.ts +12 -0
- package/dist-ui-lib/src/components/auth/SignupPage.d.ts +27 -0
- package/dist-ui-lib/src/components/auth/VerifyEmailPage.d.ts +12 -0
- package/dist-ui-lib/src/components/auth/index.d.ts +19 -0
- package/dist-ui-lib/src/components/auth/shared/AuthError.d.ts +9 -0
- package/dist-ui-lib/src/components/auth/shared/AuthLayout.d.ts +11 -0
- package/dist-ui-lib/src/components/auth/shared/index.d.ts +7 -0
- package/dist-ui-lib/{components → src/components}/index.d.ts +5 -2
- package/dist-ui-lib/src/components/plugins/PluginConfigPanel.d.ts +65 -0
- package/dist-ui-lib/src/components/plugins/PluginManagementPage.d.ts +62 -0
- package/dist-ui-lib/src/components/plugins/PluginStatusWidget.d.ts +51 -0
- package/dist-ui-lib/src/components/plugins/index.d.ts +13 -0
- package/dist-ui-lib/src/config/preferences.d.ts +16 -0
- package/dist-ui-lib/src/dashboard/widgets/CMSMaintenanceWidget.d.ts +8 -0
- package/dist-ui-lib/src/dashboard/widgets/CMSStatusWidget.d.ts +8 -0
- package/dist-ui-lib/{dashboard → src/dashboard}/widgets/index.d.ts +2 -0
- package/dist-ui-lib/src/hooks/useJobStream.d.ts +38 -0
- package/dist-ui-lib/src/pages/AcceptInvitationPage.d.ts +28 -0
- package/dist-ui-lib/src/pages/PreferencesPage.d.ts +9 -0
- package/package.json +12 -5
- package/src/core/control-panel.ts +141 -286
- package/src/core/plugin-registry.ts +52 -3
- package/src/index.ts +27 -0
- package/src/plugins/api-keys/API_ROUTES.md +165 -0
- package/src/plugins/api-keys/ApiKeysManagementPage.test.tsx +58 -0
- package/src/plugins/api-keys/ApiKeysManagementPage.tsx +131 -0
- package/src/plugins/api-keys/ApiKeysStatusWidget.test.tsx +112 -0
- package/src/plugins/api-keys/ApiKeysStatusWidget.tsx +53 -0
- package/src/plugins/api-keys/api-keys-plugin.ts +533 -0
- package/src/plugins/api-keys/index.ts +55 -0
- package/src/plugins/api-keys/middleware/bearer-token-auth.ts +250 -0
- package/src/plugins/api-keys/middleware/index.ts +15 -0
- package/src/plugins/api-keys/middleware/usage-logging.ts +78 -0
- package/src/plugins/api-keys/stores/index.ts +21 -0
- package/src/plugins/api-keys/stores/plugin-scope-store.ts +280 -0
- package/src/plugins/api-keys/stores/postgres-store.ts +487 -0
- package/src/plugins/api-keys/stores/usage-log-store.ts +423 -0
- package/src/plugins/api-keys/types.ts +307 -0
- package/src/plugins/auth/API_ROUTES.md +110 -0
- package/src/plugins/auth/AuthManagementPage.test.tsx +58 -0
- package/src/plugins/auth/AuthManagementPage.tsx +170 -0
- package/src/plugins/auth/AuthStatusWidget.test.tsx +112 -0
- package/src/plugins/auth/AuthStatusWidget.tsx +53 -0
- package/src/plugins/auth/adapters/basic-adapter.ts +62 -0
- package/src/plugins/auth/auth-plugin.ts +1 -1
- package/src/plugins/auth/env-config.ts +16 -6
- package/src/plugins/auth/index.ts +9 -0
- package/src/plugins/bans/API_ROUTES.md +183 -0
- package/src/plugins/bans/BansManagementPage.test.tsx +58 -0
- package/src/plugins/bans/BansManagementPage.tsx +129 -0
- package/src/plugins/bans/BansStatusWidget.test.tsx +112 -0
- package/src/plugins/bans/BansStatusWidget.tsx +53 -0
- package/src/plugins/bans/bans-plugin.ts +1 -1
- package/src/plugins/bans/index.ts +6 -0
- package/src/plugins/cache/API_ROUTES.md +312 -0
- package/src/plugins/cache/CacheManagementPage.test.tsx +57 -0
- package/src/plugins/cache/CacheManagementPage.tsx +360 -0
- package/src/plugins/cache/CacheStatusWidget.test.tsx +113 -0
- package/src/plugins/cache/CacheStatusWidget.tsx +122 -0
- package/src/plugins/cache/index.ts +10 -0
- package/src/plugins/cms/cms-plugin.ts +259 -0
- package/src/plugins/cms/index.ts +8 -0
- package/src/plugins/config-plugin.ts +4 -4
- package/src/plugins/core/index.ts +164 -0
- package/src/plugins/devices/API_ROUTES.md +27 -0
- package/src/plugins/devices/DevicesManagementPage.test.tsx +58 -0
- package/src/plugins/devices/DevicesManagementPage.tsx +124 -0
- package/src/plugins/devices/DevicesStatusWidget.test.tsx +109 -0
- package/src/plugins/devices/DevicesStatusWidget.tsx +52 -0
- package/src/plugins/devices/devices-plugin.ts +1 -1
- package/src/plugins/devices/index.ts +6 -0
- package/src/plugins/diagnostics/API_ROUTES.md +316 -0
- package/src/plugins/diagnostics/DiagnosticsManagementPage.test.tsx +58 -0
- package/src/plugins/diagnostics/DiagnosticsManagementPage.tsx +306 -0
- package/src/plugins/diagnostics/DiagnosticsStatusWidget.test.tsx +112 -0
- package/src/plugins/diagnostics/DiagnosticsStatusWidget.tsx +129 -0
- package/src/plugins/diagnostics/index.ts +10 -0
- package/src/plugins/diagnostics-plugin.ts +3 -3
- package/src/plugins/entitlements/API_ROUTES.md +27 -0
- package/src/plugins/entitlements/EntitlementsManagementPage.test.tsx +58 -0
- package/src/plugins/entitlements/EntitlementsManagementPage.tsx +113 -0
- package/src/plugins/entitlements/EntitlementsStatusWidget.test.tsx +109 -0
- package/src/plugins/entitlements/EntitlementsStatusWidget.tsx +52 -0
- package/src/plugins/entitlements/entitlements-plugin.ts +1 -1
- package/src/plugins/entitlements/index.ts +6 -0
- package/src/plugins/frontend-app-plugin.ts +7 -2
- package/src/plugins/health/API_ROUTES.md +283 -0
- package/src/plugins/health/HealthManagementPage.test.tsx +57 -0
- package/src/plugins/health/HealthManagementPage.tsx +320 -0
- package/src/plugins/health/HealthStatusWidget.test.tsx +107 -0
- package/src/plugins/health/HealthStatusWidget.tsx +134 -0
- package/src/plugins/health/index.ts +10 -0
- package/src/plugins/index.ts +49 -0
- package/src/plugins/logs/API_ROUTES.md +297 -0
- package/src/plugins/logs/LogsManagementPage.test.tsx +58 -0
- package/src/plugins/logs/LogsManagementPage.tsx +283 -0
- package/src/plugins/logs/LogsStatusWidget.test.tsx +119 -0
- package/src/plugins/logs/LogsStatusWidget.tsx +123 -0
- package/src/plugins/logs/index.ts +10 -0
- package/src/plugins/logs-plugin.ts +6 -6
- package/src/plugins/maintenance/MaintenanceManagementPage.tsx +193 -0
- package/src/plugins/maintenance/MaintenanceStatusWidget.tsx +120 -0
- package/src/plugins/maintenance/SeedExecutor.tsx +236 -0
- package/src/plugins/maintenance/SeedHistory.tsx +360 -0
- package/src/plugins/maintenance/SeedList.tsx +130 -0
- package/src/plugins/maintenance/SeedManagementPage.tsx +91 -0
- package/src/plugins/maintenance/index.ts +24 -0
- package/src/plugins/maintenance/seed-executor.ts +224 -0
- package/src/plugins/maintenance-plugin.ts +409 -0
- package/src/plugins/notifications/NotificationsManagementPage.test.tsx +58 -0
- package/src/plugins/notifications/NotificationsManagementPage.tsx +128 -0
- package/src/plugins/notifications/NotificationsStatusWidget.test.tsx +109 -0
- package/src/plugins/notifications/NotificationsStatusWidget.tsx +52 -0
- package/src/plugins/notifications/index.ts +6 -0
- package/src/plugins/notifications/notifications-plugin.ts +1 -1
- package/src/plugins/parental/API_ROUTES.md +30 -0
- package/src/plugins/parental/ParentalManagementPage.test.tsx +58 -0
- package/src/plugins/parental/ParentalManagementPage.tsx +119 -0
- package/src/plugins/parental/ParentalStatusWidget.test.tsx +109 -0
- package/src/plugins/parental/ParentalStatusWidget.tsx +52 -0
- package/src/plugins/parental/index.ts +6 -0
- package/src/plugins/parental/parental-plugin.ts +1 -1
- package/src/plugins/postgres/API_ROUTES.md +243 -0
- package/src/plugins/postgres/PostgresManagementPage.test.tsx +62 -0
- package/src/plugins/postgres/PostgresManagementPage.tsx +362 -0
- package/src/plugins/postgres/PostgresStatusWidget.test.tsx +117 -0
- package/src/plugins/postgres/PostgresStatusWidget.tsx +131 -0
- package/src/plugins/postgres/index.ts +10 -0
- package/src/plugins/preferences/API_ROUTES.md +162 -0
- package/src/plugins/preferences/PreferencesManagementPage.test.tsx +58 -0
- package/src/plugins/preferences/PreferencesManagementPage.tsx +139 -0
- package/src/plugins/preferences/PreferencesStatusWidget.test.tsx +109 -0
- package/src/plugins/preferences/PreferencesStatusWidget.tsx +52 -0
- package/src/plugins/preferences/index.ts +6 -0
- package/src/plugins/preferences/preferences-plugin.ts +10 -5
- package/src/plugins/preferences/types.d.ts +95 -0
- package/src/plugins/preferences/types.ts +6 -0
- package/src/plugins/profiles/API_ROUTES.md +27 -0
- package/src/plugins/profiles/ProfilesManagementPage.test.tsx +58 -0
- package/src/plugins/profiles/ProfilesManagementPage.tsx +113 -0
- package/src/plugins/profiles/ProfilesStatusWidget.test.tsx +109 -0
- package/src/plugins/profiles/ProfilesStatusWidget.tsx +52 -0
- package/src/plugins/profiles/index.ts +6 -0
- package/src/plugins/profiles/profiles-plugin.ts +1 -1
- package/src/plugins/qwickbrain/QwickbrainManagementPage.test.tsx +58 -0
- package/src/plugins/qwickbrain/QwickbrainManagementPage.tsx +126 -0
- package/src/plugins/qwickbrain/QwickbrainStatusWidget.test.tsx +109 -0
- package/src/plugins/qwickbrain/QwickbrainStatusWidget.tsx +52 -0
- package/src/plugins/qwickbrain/index.ts +6 -0
- package/src/plugins/qwickbrain/qwickbrain-plugin.ts +12 -36
- package/src/plugins/qwickbrain/types.ts +0 -1
- package/src/plugins/rate-limit/RateLimitManagementPage.test.tsx +58 -0
- package/src/plugins/rate-limit/RateLimitManagementPage.tsx +127 -0
- package/src/plugins/rate-limit/RateLimitStatusWidget.test.tsx +109 -0
- package/src/plugins/rate-limit/RateLimitStatusWidget.tsx +52 -0
- package/src/plugins/rate-limit/index.ts +6 -0
- package/src/plugins/rate-limit/rate-limit-plugin.ts +5 -5
- package/src/plugins/subscriptions/API_ROUTES.md +27 -0
- package/src/plugins/subscriptions/SubscriptionsManagementPage.test.tsx +58 -0
- package/src/plugins/subscriptions/SubscriptionsManagementPage.tsx +125 -0
- package/src/plugins/subscriptions/SubscriptionsStatusWidget.test.tsx +109 -0
- package/src/plugins/subscriptions/SubscriptionsStatusWidget.tsx +52 -0
- package/src/plugins/subscriptions/index.ts +6 -0
- package/src/plugins/subscriptions/subscriptions-plugin.ts +1 -1
- package/src/plugins/usage/API_ROUTES.md +24 -0
- package/src/plugins/usage/UsageManagementPage.test.tsx +58 -0
- package/src/plugins/usage/UsageManagementPage.tsx +93 -0
- package/src/plugins/usage/UsageStatusWidget.test.tsx +109 -0
- package/src/plugins/usage/UsageStatusWidget.tsx +52 -0
- package/src/plugins/usage/index.ts +6 -0
- package/src/plugins/usage/usage-plugin.ts +1 -1
- package/src/plugins/users/API_ROUTES.md +311 -0
- package/src/plugins/users/UsersManagementPage.test.tsx +58 -0
- package/src/plugins/users/UsersManagementPage.tsx +384 -0
- package/src/plugins/users/UsersStatusWidget.test.tsx +114 -0
- package/src/plugins/users/UsersStatusWidget.tsx +120 -0
- package/src/plugins/users/__tests__/postgres-store.test.ts +1 -0
- package/src/plugins/users/__tests__/users-plugin.test.ts +22 -18
- package/src/plugins/users/stores/postgres-store.ts +95 -17
- package/src/plugins/users/types.ts +33 -1
- package/src/plugins/users/users-plugin.ts +137 -3
- package/ui/src/App.tsx +18 -4
- package/ui/src/api/clientBuilder.ts +206 -0
- package/ui/src/api/controlPanelApi.ts +309 -122
- package/ui/src/api/index.ts +12 -0
- package/ui/src/api/types.ts +276 -0
- package/ui/src/components/ControlPanelApp.tsx +4 -5
- package/ui/src/components/auth/AcceptInvitationPage.tsx +151 -0
- package/ui/src/components/auth/LoginPage.tsx +122 -0
- package/ui/src/components/auth/PasswordResetConfirmPage.tsx +109 -0
- package/ui/src/components/auth/PasswordResetPage.tsx +95 -0
- package/ui/src/components/auth/SignupPage.tsx +140 -0
- package/ui/src/components/auth/VerifyEmailPage.tsx +38 -0
- package/ui/src/components/auth/__tests__/AcceptInvitationPage.test.tsx +201 -0
- package/ui/src/components/auth/__tests__/LoginPage.test.tsx +207 -0
- package/ui/src/components/auth/__tests__/PasswordResetConfirmPage.test.tsx +183 -0
- package/ui/src/components/auth/__tests__/PasswordResetPage.test.tsx +174 -0
- package/ui/src/components/auth/__tests__/SignupPage.test.tsx +210 -0
- package/ui/src/components/auth/__tests__/VerifyEmailPage.test.tsx +53 -0
- package/ui/src/components/auth/index.ts +26 -0
- package/ui/src/components/auth/shared/AuthError.tsx +28 -0
- package/ui/src/components/auth/shared/AuthLayout.tsx +42 -0
- package/ui/src/components/auth/shared/index.ts +9 -0
- package/ui/src/components/index.ts +21 -2
- package/ui/src/components/plugins/PluginConfigPanel.tsx +315 -0
- package/ui/src/components/plugins/PluginManagementPage.tsx +218 -0
- package/ui/src/components/plugins/PluginStatusWidget.tsx +158 -0
- package/ui/src/components/plugins/index.ts +20 -0
- package/ui/src/config/preferences.ts +18 -0
- package/ui/src/dashboard/builtInWidgets.tsx +15 -1
- package/ui/src/dashboard/widgets/CMSMaintenanceWidget.tsx +229 -0
- package/ui/src/dashboard/widgets/CMSStatusWidget.tsx +115 -0
- package/ui/src/dashboard/widgets/NotificationsStatsWidget.tsx +1 -1
- package/ui/src/dashboard/widgets/index.ts +2 -0
- package/ui/src/hooks/useJobStream.ts +194 -0
- package/ui/src/pages/APIKeysPage.tsx +849 -0
- package/ui/src/pages/AcceptInvitationPage.tsx +169 -0
- package/ui/src/pages/ContentOpsJobsPage.tsx +422 -0
- package/ui/src/pages/MaintenancePage.tsx +27 -0
- package/ui/src/pages/NotificationsPage.tsx +1 -1
- package/ui/src/pages/PluginPage.tsx +3 -1
- package/ui/src/pages/PreferencesPage.tsx +240 -0
- package/ui/src/pages/UsersPage.tsx +225 -2
- package/ui/src/pages/__tests__/PreferencesPage.test.tsx +273 -0
- package/ui/src/pages/index.ts +15 -0
- package/ui/tsconfig.lib.json +4 -2
- package/dist/plugins/auth/adapter-wrapper.test.d.ts +0 -7
- package/dist/plugins/auth/adapter-wrapper.test.d.ts.map +0 -1
- package/dist/plugins/auth/adapter-wrapper.test.js +0 -303
- package/dist/plugins/auth/adapter-wrapper.test.js.map +0 -1
- package/dist/plugins/auth/auth-plugin.test.d.ts +0 -9
- package/dist/plugins/auth/auth-plugin.test.d.ts.map +0 -1
- package/dist/plugins/auth/auth-plugin.test.js +0 -280
- package/dist/plugins/auth/auth-plugin.test.js.map +0 -1
- package/dist/plugins/auth/config-store.test.d.ts +0 -7
- package/dist/plugins/auth/config-store.test.d.ts.map +0 -1
- package/dist/plugins/auth/config-store.test.js +0 -299
- package/dist/plugins/auth/config-store.test.js.map +0 -1
- package/dist/plugins/auth/supertokens-adapter.test.d.ts +0 -10
- package/dist/plugins/auth/supertokens-adapter.test.d.ts.map +0 -1
- package/dist/plugins/auth/supertokens-adapter.test.js +0 -486
- package/dist/plugins/auth/supertokens-adapter.test.js.map +0 -1
- package/dist/plugins/cache-plugin.test.d.ts +0 -8
- package/dist/plugins/cache-plugin.test.d.ts.map +0 -1
- package/dist/plugins/cache-plugin.test.js +0 -255
- package/dist/plugins/cache-plugin.test.js.map +0 -1
- package/dist/plugins/devices/__tests__/devices-plugin.test.d.ts +0 -11
- package/dist/plugins/devices/__tests__/devices-plugin.test.d.ts.map +0 -1
- package/dist/plugins/devices/__tests__/devices-plugin.test.js +0 -410
- package/dist/plugins/devices/__tests__/devices-plugin.test.js.map +0 -1
- package/dist/plugins/devices/__tests__/token-utils.test.d.ts +0 -7
- package/dist/plugins/devices/__tests__/token-utils.test.d.ts.map +0 -1
- package/dist/plugins/devices/__tests__/token-utils.test.js +0 -199
- package/dist/plugins/devices/__tests__/token-utils.test.js.map +0 -1
- package/dist/plugins/notifications/__tests__/notifications-manager.test.d.ts +0 -5
- package/dist/plugins/notifications/__tests__/notifications-manager.test.d.ts.map +0 -1
- package/dist/plugins/notifications/__tests__/notifications-manager.test.js +0 -470
- package/dist/plugins/notifications/__tests__/notifications-manager.test.js.map +0 -1
- package/dist/plugins/parental/__tests__/parental-plugin.test.d.ts +0 -12
- package/dist/plugins/parental/__tests__/parental-plugin.test.d.ts.map +0 -1
- package/dist/plugins/parental/__tests__/parental-plugin.test.js +0 -349
- package/dist/plugins/parental/__tests__/parental-plugin.test.js.map +0 -1
- package/dist/plugins/postgres-plugin.test.d.ts +0 -8
- package/dist/plugins/postgres-plugin.test.d.ts.map +0 -1
- package/dist/plugins/postgres-plugin.test.js +0 -186
- package/dist/plugins/postgres-plugin.test.js.map +0 -1
- package/dist/plugins/preferences/__tests__/deep-merge.test.d.ts +0 -7
- package/dist/plugins/preferences/__tests__/deep-merge.test.d.ts.map +0 -1
- package/dist/plugins/preferences/__tests__/deep-merge.test.js +0 -215
- package/dist/plugins/preferences/__tests__/deep-merge.test.js.map +0 -1
- package/dist/plugins/preferences/__tests__/preferences-plugin.test.d.ts +0 -7
- package/dist/plugins/preferences/__tests__/preferences-plugin.test.d.ts.map +0 -1
- package/dist/plugins/preferences/__tests__/preferences-plugin.test.js +0 -265
- package/dist/plugins/preferences/__tests__/preferences-plugin.test.js.map +0 -1
- package/dist/plugins/profiles/__tests__/profiles-plugin.test.d.ts +0 -11
- package/dist/plugins/profiles/__tests__/profiles-plugin.test.d.ts.map +0 -1
- package/dist/plugins/profiles/__tests__/profiles-plugin.test.js +0 -243
- package/dist/plugins/profiles/__tests__/profiles-plugin.test.js.map +0 -1
- package/dist/plugins/rate-limit/__tests__/rate-limit-plugin.test.d.ts +0 -7
- package/dist/plugins/rate-limit/__tests__/rate-limit-plugin.test.d.ts.map +0 -1
- package/dist/plugins/rate-limit/__tests__/rate-limit-plugin.test.js +0 -220
- package/dist/plugins/rate-limit/__tests__/rate-limit-plugin.test.js.map +0 -1
- package/dist/plugins/subscriptions/__tests__/subscriptions-plugin.test.d.ts +0 -11
- package/dist/plugins/subscriptions/__tests__/subscriptions-plugin.test.d.ts.map +0 -1
- package/dist/plugins/subscriptions/__tests__/subscriptions-plugin.test.js +0 -305
- package/dist/plugins/subscriptions/__tests__/subscriptions-plugin.test.js.map +0 -1
- package/dist/plugins/usage/__tests__/usage-plugin.test.d.ts +0 -11
- package/dist/plugins/usage/__tests__/usage-plugin.test.d.ts.map +0 -1
- package/dist/plugins/usage/__tests__/usage-plugin.test.js +0 -218
- package/dist/plugins/usage/__tests__/usage-plugin.test.js.map +0 -1
- package/dist/plugins/users/__tests__/postgres-store.test.d.ts +0 -10
- package/dist/plugins/users/__tests__/postgres-store.test.d.ts.map +0 -1
- package/dist/plugins/users/__tests__/postgres-store.test.js +0 -229
- package/dist/plugins/users/__tests__/postgres-store.test.js.map +0 -1
- package/dist/plugins/users/__tests__/users-plugin.test.d.ts +0 -9
- package/dist/plugins/users/__tests__/users-plugin.test.d.ts.map +0 -1
- package/dist/plugins/users/__tests__/users-plugin.test.js +0 -549
- package/dist/plugins/users/__tests__/users-plugin.test.js.map +0 -1
- package/dist-ui/assets/index-BfC7mG5L.js +0 -469
- package/dist-ui/assets/index-BfC7mG5L.js.map +0 -1
- package/dist-ui-lib/components/StatCard.d.ts +0 -16
- package/dist-ui-lib/pages/ConfigPage.d.ts +0 -1
- package/dist-ui-lib/pages/DiagnosticsPage.d.ts +0 -1
- package/dist-ui-lib/pages/IntegrationsPage.d.ts +0 -1
- package/dist-ui-lib/pages/NotificationsPage.d.ts +0 -9
- package/dist-ui-lib/pages/PluginPage.d.ts +0 -15
- package/dist-ui-lib/pages/PluginsPage.d.ts +0 -1
- package/dist-ui-lib/pages/RateLimitPage.d.ts +0 -1
- package/ui/src/components/StatCard.tsx +0 -58
- /package/dist-ui-lib/{config → src/config}/AppConfig.d.ts +0 -0
- /package/dist-ui-lib/{dashboard → src/dashboard}/DashboardWidgetRegistry.d.ts +0 -0
- /package/dist-ui-lib/{dashboard → src/dashboard}/DashboardWidgetRenderer.d.ts +0 -0
- /package/dist-ui-lib/{dashboard → src/dashboard}/PluginWidgetRenderer.d.ts +0 -0
- /package/dist-ui-lib/{dashboard → src/dashboard}/WidgetComponentRegistry.d.ts +0 -0
- /package/dist-ui-lib/{dashboard → src/dashboard}/builtInWidgets.d.ts +0 -0
- /package/dist-ui-lib/{dashboard → src/dashboard}/index.d.ts +0 -0
- /package/dist-ui-lib/{dashboard → src/dashboard}/widgets/AuthStatusWidget.d.ts +0 -0
- /package/dist-ui-lib/{dashboard → src/dashboard}/widgets/IntegrationStatusWidget.d.ts +0 -0
- /package/dist-ui-lib/{dashboard → src/dashboard}/widgets/NotificationsStatsWidget.d.ts +0 -0
- /package/dist-ui-lib/{dashboard → src/dashboard}/widgets/ServiceHealthWidget.d.ts +0 -0
- /package/dist-ui-lib/{pages → src/pages}/AuthPage.d.ts +0 -0
- /package/dist-ui-lib/{pages → src/pages}/DashboardPage.d.ts +0 -0
- /package/dist-ui-lib/{pages → src/pages}/EntitlementsPage.d.ts +0 -0
- /package/dist-ui-lib/{pages → src/pages}/LogsPage.d.ts +0 -0
- /package/dist-ui-lib/{pages → src/pages}/NotFoundPage.d.ts +0 -0
- /package/dist-ui-lib/{pages → src/pages}/SystemPage.d.ts +0 -0
- /package/dist-ui-lib/{pages → src/pages}/UsersPage.d.ts +0 -0
- /package/dist-ui-lib/{utils → src/utils}/formatters.d.ts +0 -0
|
@@ -4,6 +4,9 @@
|
|
|
4
4
|
* Communicates with the backend Express API
|
|
5
5
|
*/
|
|
6
6
|
|
|
7
|
+
import { buildClientFromManifest } from './clientBuilder.js';
|
|
8
|
+
import type { APIClient } from './types.js';
|
|
9
|
+
|
|
7
10
|
export interface HealthCheck {
|
|
8
11
|
status: 'healthy' | 'degraded' | 'unhealthy';
|
|
9
12
|
latency?: number;
|
|
@@ -81,10 +84,15 @@ export interface LogSource {
|
|
|
81
84
|
// ==================
|
|
82
85
|
// Users API Types
|
|
83
86
|
// ==================
|
|
87
|
+
export type UserStatus = 'invited' | 'active' | 'suspended';
|
|
88
|
+
|
|
84
89
|
export interface User {
|
|
85
90
|
id: string;
|
|
86
91
|
email: string;
|
|
87
92
|
name?: string;
|
|
93
|
+
status: UserStatus;
|
|
94
|
+
invitation_token?: string;
|
|
95
|
+
invitation_expires_at?: string;
|
|
88
96
|
created_at?: string;
|
|
89
97
|
updated_at?: string;
|
|
90
98
|
last_login?: string;
|
|
@@ -98,6 +106,30 @@ export interface UsersResponse {
|
|
|
98
106
|
limit: number;
|
|
99
107
|
}
|
|
100
108
|
|
|
109
|
+
export interface InviteUserRequest {
|
|
110
|
+
email: string;
|
|
111
|
+
name?: string;
|
|
112
|
+
role?: string;
|
|
113
|
+
metadata?: Record<string, unknown>;
|
|
114
|
+
expiresInDays?: number;
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
export interface InvitationResponse {
|
|
118
|
+
user: User;
|
|
119
|
+
token: string;
|
|
120
|
+
inviteLink: string;
|
|
121
|
+
expiresAt: string;
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
export interface AcceptInvitationRequest {
|
|
125
|
+
token: string;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export interface AcceptInvitationResponse {
|
|
129
|
+
success: boolean;
|
|
130
|
+
user: User;
|
|
131
|
+
}
|
|
132
|
+
|
|
101
133
|
// ==================
|
|
102
134
|
// Bans API Types
|
|
103
135
|
// ==================
|
|
@@ -116,6 +148,89 @@ export interface BansResponse {
|
|
|
116
148
|
total: number;
|
|
117
149
|
}
|
|
118
150
|
|
|
151
|
+
// ==================
|
|
152
|
+
// API Keys Types
|
|
153
|
+
// ==================
|
|
154
|
+
export interface ApiKey {
|
|
155
|
+
id: string;
|
|
156
|
+
name: string;
|
|
157
|
+
key_prefix: string;
|
|
158
|
+
key_type: 'm2m' | 'pat';
|
|
159
|
+
scopes: string[]; // Phase 2: Support plugin-declared scopes
|
|
160
|
+
last_used_at: string | null;
|
|
161
|
+
expires_at: string | null;
|
|
162
|
+
is_active: boolean;
|
|
163
|
+
created_at: string;
|
|
164
|
+
updated_at: string;
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
export interface ApiKeyWithPlaintext extends ApiKey {
|
|
168
|
+
key: string; // Only available on creation
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
export interface ApiKeysResponse {
|
|
172
|
+
keys: ApiKey[];
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
export interface CreateApiKeyRequest {
|
|
176
|
+
name: string;
|
|
177
|
+
key_type: 'm2m' | 'pat';
|
|
178
|
+
scopes: string[]; // Phase 2: Support plugin-declared scopes
|
|
179
|
+
expires_at?: string;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export interface UpdateApiKeyRequest {
|
|
183
|
+
name?: string;
|
|
184
|
+
scopes?: string[]; // Phase 2: Support plugin-declared scopes
|
|
185
|
+
expires_at?: string;
|
|
186
|
+
is_active?: boolean;
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Phase 2: Scope Management
|
|
190
|
+
export interface PluginScope {
|
|
191
|
+
name: string;
|
|
192
|
+
description: string;
|
|
193
|
+
category?: 'read' | 'write' | 'admin';
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
export interface PluginScopesGroup {
|
|
197
|
+
pluginId: string;
|
|
198
|
+
scopes: PluginScope[];
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
export interface AvailableScopesResponse {
|
|
202
|
+
scopes: PluginScopesGroup[];
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
// Phase 2: Usage Tracking
|
|
206
|
+
export interface UsageLogEntry {
|
|
207
|
+
id: string;
|
|
208
|
+
key_id: string;
|
|
209
|
+
endpoint: string;
|
|
210
|
+
method: string;
|
|
211
|
+
status_code?: number;
|
|
212
|
+
ip_address?: string;
|
|
213
|
+
user_agent?: string;
|
|
214
|
+
timestamp: string;
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
export interface UsageStats {
|
|
218
|
+
totalCalls: number;
|
|
219
|
+
lastUsed: string | null;
|
|
220
|
+
callsByStatus: Record<string, number>;
|
|
221
|
+
callsByEndpoint: Record<string, number>;
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
export interface KeyUsageResponse {
|
|
225
|
+
keyId: string;
|
|
226
|
+
keyName: string;
|
|
227
|
+
totalCalls: number;
|
|
228
|
+
lastUsed: string | null;
|
|
229
|
+
callsByStatus: Record<string, number>;
|
|
230
|
+
callsByEndpoint: Record<string, number>;
|
|
231
|
+
logs: UsageLogEntry[];
|
|
232
|
+
}
|
|
233
|
+
|
|
119
234
|
// ==================
|
|
120
235
|
// Entitlements API Types
|
|
121
236
|
// ==================
|
|
@@ -422,19 +537,57 @@ export interface RateLimitConfigUpdateResponse {
|
|
|
422
537
|
config: RateLimitConfig;
|
|
423
538
|
}
|
|
424
539
|
|
|
540
|
+
export interface PreferencesResponse {
|
|
541
|
+
user_id: string;
|
|
542
|
+
preferences: Record<string, unknown>;
|
|
543
|
+
}
|
|
544
|
+
|
|
425
545
|
class ControlPanelApi {
|
|
426
546
|
private baseUrl: string;
|
|
547
|
+
private client: APIClient | null = null;
|
|
548
|
+
private clientPromise: Promise<APIClient> | null = null;
|
|
427
549
|
|
|
428
550
|
constructor(baseUrl = '') {
|
|
429
551
|
this.baseUrl = baseUrl;
|
|
430
552
|
}
|
|
431
553
|
|
|
554
|
+
/**
|
|
555
|
+
* Ensure the API client is initialized.
|
|
556
|
+
* Lazy-loads the client on first use by fetching the manifest.
|
|
557
|
+
*/
|
|
558
|
+
private async ensureClient(): Promise<APIClient> {
|
|
559
|
+
if (this.client) {
|
|
560
|
+
return this.client;
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
// If already fetching, wait for that promise
|
|
564
|
+
if (this.clientPromise) {
|
|
565
|
+
return this.clientPromise;
|
|
566
|
+
}
|
|
567
|
+
|
|
568
|
+
// Start fetching the client
|
|
569
|
+
this.clientPromise = buildClientFromManifest<APIClient>(this.baseUrl);
|
|
570
|
+
|
|
571
|
+
try {
|
|
572
|
+
this.client = await this.clientPromise;
|
|
573
|
+
return this.client;
|
|
574
|
+
} catch (error) {
|
|
575
|
+
// Reset promise so we can retry on next call
|
|
576
|
+
this.clientPromise = null;
|
|
577
|
+
throw error;
|
|
578
|
+
}
|
|
579
|
+
}
|
|
580
|
+
|
|
432
581
|
/**
|
|
433
582
|
* Set the base URL for API requests.
|
|
434
583
|
* Call this when the control panel is mounted at a custom path.
|
|
584
|
+
* Invalidates the cached client since the manifest will be different.
|
|
435
585
|
*/
|
|
436
586
|
setBaseUrl(baseUrl: string): void {
|
|
437
587
|
this.baseUrl = baseUrl;
|
|
588
|
+
// Invalidate cached client
|
|
589
|
+
this.client = null;
|
|
590
|
+
this.clientPromise = null;
|
|
438
591
|
}
|
|
439
592
|
|
|
440
593
|
/**
|
|
@@ -524,22 +677,37 @@ class ControlPanelApi {
|
|
|
524
677
|
page?: number;
|
|
525
678
|
search?: string;
|
|
526
679
|
} = {}): Promise<UsersResponse> {
|
|
527
|
-
const
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
if (options.search) params.set('q', options.search);
|
|
680
|
+
const client = await this.ensureClient();
|
|
681
|
+
return client.users.query(options);
|
|
682
|
+
}
|
|
531
683
|
|
|
532
|
-
|
|
684
|
+
async getUserById(id: string): Promise<User> {
|
|
685
|
+
const client = await this.ensureClient();
|
|
686
|
+
return client.users.get(id);
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
async inviteUser(request: InviteUserRequest): Promise<InvitationResponse> {
|
|
690
|
+
const client = await this.ensureClient();
|
|
691
|
+
return client.users.invite(request);
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
async acceptInvitation(token: string): Promise<AcceptInvitationResponse> {
|
|
695
|
+
const response = await this._fetch(`${this.baseUrl}/api/users/accept-invitation/${encodeURIComponent(token)}`);
|
|
533
696
|
if (!response.ok) {
|
|
534
|
-
|
|
697
|
+
const error = await response.json().catch(() => ({}));
|
|
698
|
+
throw new Error(error.error || `Accept invitation failed: ${response.statusText}`);
|
|
535
699
|
}
|
|
536
700
|
return response.json();
|
|
537
701
|
}
|
|
538
702
|
|
|
539
|
-
async
|
|
540
|
-
const
|
|
703
|
+
async getInvitations(): Promise<UsersResponse> {
|
|
704
|
+
const params = new URLSearchParams();
|
|
705
|
+
params.set('status', 'invited');
|
|
706
|
+
params.set('limit', '100');
|
|
707
|
+
|
|
708
|
+
const response = await this._fetch(`${this.baseUrl}/api/users?${params}`);
|
|
541
709
|
if (!response.ok) {
|
|
542
|
-
throw new Error(`
|
|
710
|
+
throw new Error(`Invitations request failed: ${response.statusText}`);
|
|
543
711
|
}
|
|
544
712
|
return response.json();
|
|
545
713
|
}
|
|
@@ -549,11 +717,8 @@ class ControlPanelApi {
|
|
|
549
717
|
// ==================
|
|
550
718
|
|
|
551
719
|
async getBans(): Promise<BansResponse> {
|
|
552
|
-
const
|
|
553
|
-
|
|
554
|
-
throw new Error(`Bans request failed: ${response.statusText}`);
|
|
555
|
-
}
|
|
556
|
-
return response.json();
|
|
720
|
+
const client = await this.ensureClient();
|
|
721
|
+
return client.bans.query();
|
|
557
722
|
}
|
|
558
723
|
|
|
559
724
|
async banUser(email: string, reason: string, expiresAt?: string): Promise<void> {
|
|
@@ -668,11 +833,8 @@ class ControlPanelApi {
|
|
|
668
833
|
}
|
|
669
834
|
|
|
670
835
|
async getEntitlementsStatus(): Promise<EntitlementsStatus> {
|
|
671
|
-
const
|
|
672
|
-
|
|
673
|
-
throw new Error(`Entitlements status request failed: ${response.statusText}`);
|
|
674
|
-
}
|
|
675
|
-
return response.json();
|
|
836
|
+
const client = await this.ensureClient();
|
|
837
|
+
return client.entitlements.query();
|
|
676
838
|
}
|
|
677
839
|
|
|
678
840
|
// ==================
|
|
@@ -680,35 +842,23 @@ class ControlPanelApi {
|
|
|
680
842
|
// ==================
|
|
681
843
|
|
|
682
844
|
async getHealth(): Promise<HealthResponse> {
|
|
683
|
-
const
|
|
684
|
-
|
|
685
|
-
throw new Error(`Health check failed: ${response.statusText}`);
|
|
686
|
-
}
|
|
687
|
-
return response.json();
|
|
845
|
+
const client = await this.ensureClient();
|
|
846
|
+
return client.core.health();
|
|
688
847
|
}
|
|
689
848
|
|
|
690
849
|
async getInfo(): Promise<InfoResponse> {
|
|
691
|
-
const
|
|
692
|
-
|
|
693
|
-
throw new Error(`Info request failed: ${response.statusText}`);
|
|
694
|
-
}
|
|
695
|
-
return response.json();
|
|
850
|
+
const client = await this.ensureClient();
|
|
851
|
+
return client.core.info();
|
|
696
852
|
}
|
|
697
853
|
|
|
698
854
|
async getDiagnostics(): Promise<DiagnosticsResponse> {
|
|
699
|
-
const
|
|
700
|
-
|
|
701
|
-
throw new Error(`Diagnostics request failed: ${response.statusText}`);
|
|
702
|
-
}
|
|
703
|
-
return response.json();
|
|
855
|
+
const client = await this.ensureClient();
|
|
856
|
+
return client.core.diagnostics();
|
|
704
857
|
}
|
|
705
858
|
|
|
706
859
|
async getConfig(): Promise<ConfigResponse> {
|
|
707
|
-
const
|
|
708
|
-
|
|
709
|
-
throw new Error(`Config request failed: ${response.statusText}`);
|
|
710
|
-
}
|
|
711
|
-
return response.json();
|
|
860
|
+
const client = await this.ensureClient();
|
|
861
|
+
return client.config.query();
|
|
712
862
|
}
|
|
713
863
|
|
|
714
864
|
async getLogs(options: {
|
|
@@ -718,27 +868,13 @@ class ControlPanelApi {
|
|
|
718
868
|
limit?: number;
|
|
719
869
|
page?: number;
|
|
720
870
|
} = {}): Promise<LogsResponse> {
|
|
721
|
-
const
|
|
722
|
-
|
|
723
|
-
if (options.level) params.set('level', options.level);
|
|
724
|
-
if (options.search) params.set('search', options.search);
|
|
725
|
-
if (options.limit) params.set('limit', options.limit.toString());
|
|
726
|
-
if (options.page) params.set('page', options.page.toString());
|
|
727
|
-
|
|
728
|
-
const response = await this._fetch(`${this.baseUrl}/api/logs?${params}`);
|
|
729
|
-
if (!response.ok) {
|
|
730
|
-
throw new Error(`Logs request failed: ${response.statusText}`);
|
|
731
|
-
}
|
|
732
|
-
return response.json();
|
|
871
|
+
const client = await this.ensureClient();
|
|
872
|
+
return client.logs.query(options);
|
|
733
873
|
}
|
|
734
874
|
|
|
735
875
|
async getLogSources(): Promise<LogSource[]> {
|
|
736
|
-
const
|
|
737
|
-
|
|
738
|
-
throw new Error(`Log sources request failed: ${response.statusText}`);
|
|
739
|
-
}
|
|
740
|
-
const data = await response.json();
|
|
741
|
-
return data.sources;
|
|
876
|
+
const client = await this.ensureClient();
|
|
877
|
+
return client.logs.sources();
|
|
742
878
|
}
|
|
743
879
|
|
|
744
880
|
// ==================
|
|
@@ -746,11 +882,8 @@ class ControlPanelApi {
|
|
|
746
882
|
// ==================
|
|
747
883
|
|
|
748
884
|
async getPlugins(): Promise<PluginsResponse> {
|
|
749
|
-
const
|
|
750
|
-
|
|
751
|
-
throw new Error(`Plugins request failed: ${response.statusText}`);
|
|
752
|
-
}
|
|
753
|
-
return response.json();
|
|
885
|
+
const client = await this.ensureClient();
|
|
886
|
+
return client.core.plugins();
|
|
754
887
|
}
|
|
755
888
|
|
|
756
889
|
async getPluginDetail(id: string): Promise<PluginDetailResponse> {
|
|
@@ -769,11 +902,8 @@ class ControlPanelApi {
|
|
|
769
902
|
// ==================
|
|
770
903
|
|
|
771
904
|
async getUiContributions(): Promise<UiContributionsResponse> {
|
|
772
|
-
const
|
|
773
|
-
|
|
774
|
-
throw new Error(`UI contributions request failed: ${response.statusText}`);
|
|
775
|
-
}
|
|
776
|
-
return response.json();
|
|
905
|
+
const client = await this.ensureClient();
|
|
906
|
+
return client.core.uiContributions();
|
|
777
907
|
}
|
|
778
908
|
|
|
779
909
|
// ==================
|
|
@@ -781,42 +911,37 @@ class ControlPanelApi {
|
|
|
781
911
|
// ==================
|
|
782
912
|
|
|
783
913
|
async getAuthConfigStatus(): Promise<AuthConfigStatus> {
|
|
784
|
-
|
|
785
|
-
|
|
914
|
+
try {
|
|
915
|
+
const client = await this.ensureClient();
|
|
916
|
+
return await client.auth.status();
|
|
917
|
+
} catch (error) {
|
|
786
918
|
// Return disabled state if endpoint not available
|
|
787
|
-
if (
|
|
919
|
+
if (error instanceof Error && error.message.includes('404')) {
|
|
788
920
|
return { state: 'disabled', adapter: null };
|
|
789
921
|
}
|
|
790
|
-
throw
|
|
922
|
+
throw error;
|
|
791
923
|
}
|
|
792
|
-
return response.json();
|
|
793
924
|
}
|
|
794
925
|
|
|
795
926
|
async getAuthConfig(): Promise<AuthConfigStatus> {
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
927
|
+
try {
|
|
928
|
+
const client = await this.ensureClient();
|
|
929
|
+
return await client.auth.config() as unknown as AuthConfigStatus;
|
|
930
|
+
} catch (error) {
|
|
931
|
+
// Return disabled state if endpoint not available
|
|
932
|
+
if (error instanceof Error && error.message.includes('404')) {
|
|
799
933
|
return { state: 'disabled', adapter: null };
|
|
800
934
|
}
|
|
801
|
-
throw
|
|
935
|
+
throw error;
|
|
802
936
|
}
|
|
803
|
-
return response.json();
|
|
804
937
|
}
|
|
805
938
|
|
|
806
939
|
/**
|
|
807
940
|
* Update auth configuration (save to database for hot-reload)
|
|
808
941
|
*/
|
|
809
942
|
async updateAuthConfig(request: UpdateAuthConfigRequest): Promise<{ success: boolean; message: string }> {
|
|
810
|
-
const
|
|
811
|
-
|
|
812
|
-
headers: { 'Content-Type': 'application/json' },
|
|
813
|
-
body: JSON.stringify(request),
|
|
814
|
-
});
|
|
815
|
-
if (!response.ok) {
|
|
816
|
-
const error = await response.json().catch(() => ({}));
|
|
817
|
-
throw new Error(error.error || `Auth config update failed: ${response.statusText}`);
|
|
818
|
-
}
|
|
819
|
-
return response.json();
|
|
943
|
+
const client = await this.ensureClient();
|
|
944
|
+
return client.auth.update(request) as unknown as { success: boolean; message: string };
|
|
820
945
|
}
|
|
821
946
|
|
|
822
947
|
/**
|
|
@@ -837,16 +962,8 @@ class ControlPanelApi {
|
|
|
837
962
|
* Test auth provider connection without saving
|
|
838
963
|
*/
|
|
839
964
|
async testAuthProvider(request: TestProviderRequest): Promise<TestProviderResponse> {
|
|
840
|
-
const
|
|
841
|
-
|
|
842
|
-
headers: { 'Content-Type': 'application/json' },
|
|
843
|
-
body: JSON.stringify(request),
|
|
844
|
-
});
|
|
845
|
-
if (!response.ok) {
|
|
846
|
-
const error = await response.json().catch(() => ({}));
|
|
847
|
-
throw new Error(error.error || `Provider test failed: ${response.statusText}`);
|
|
848
|
-
}
|
|
849
|
-
return response.json();
|
|
965
|
+
const client = await this.ensureClient();
|
|
966
|
+
return client.auth.test(request);
|
|
850
967
|
}
|
|
851
968
|
|
|
852
969
|
/**
|
|
@@ -869,24 +986,13 @@ class ControlPanelApi {
|
|
|
869
986
|
// ==================
|
|
870
987
|
|
|
871
988
|
async getRateLimitConfig(): Promise<RateLimitConfig> {
|
|
872
|
-
const
|
|
873
|
-
|
|
874
|
-
throw new Error(`Rate limit config request failed: ${response.statusText}`);
|
|
875
|
-
}
|
|
876
|
-
return response.json();
|
|
989
|
+
const client = await this.ensureClient();
|
|
990
|
+
return client.rateLimit.config() as unknown as RateLimitConfig;
|
|
877
991
|
}
|
|
878
992
|
|
|
879
993
|
async updateRateLimitConfig(updates: RateLimitConfigUpdateRequest): Promise<RateLimitConfigUpdateResponse> {
|
|
880
|
-
const
|
|
881
|
-
|
|
882
|
-
headers: { 'Content-Type': 'application/json' },
|
|
883
|
-
body: JSON.stringify(updates),
|
|
884
|
-
});
|
|
885
|
-
if (!response.ok) {
|
|
886
|
-
const error = await response.json().catch(() => ({}));
|
|
887
|
-
throw new Error(error.error || `Rate limit config update failed: ${response.statusText}`);
|
|
888
|
-
}
|
|
889
|
-
return response.json();
|
|
994
|
+
const client = await this.ensureClient();
|
|
995
|
+
return client.rateLimit.update(updates);
|
|
890
996
|
}
|
|
891
997
|
|
|
892
998
|
// ==================
|
|
@@ -894,19 +1000,13 @@ class ControlPanelApi {
|
|
|
894
1000
|
// ==================
|
|
895
1001
|
|
|
896
1002
|
async getNotificationsStats(): Promise<NotificationsStatsResponse> {
|
|
897
|
-
const
|
|
898
|
-
|
|
899
|
-
throw new Error(`Notifications stats request failed: ${response.statusText}`);
|
|
900
|
-
}
|
|
901
|
-
return response.json();
|
|
1003
|
+
const client = await this.ensureClient();
|
|
1004
|
+
return client.notifications.stats();
|
|
902
1005
|
}
|
|
903
1006
|
|
|
904
1007
|
async getNotificationsClients(): Promise<NotificationsClientsResponse> {
|
|
905
|
-
const
|
|
906
|
-
|
|
907
|
-
throw new Error(`Notifications clients request failed: ${response.statusText}`);
|
|
908
|
-
}
|
|
909
|
-
return response.json();
|
|
1008
|
+
const client = await this.ensureClient();
|
|
1009
|
+
return client.notifications.clients();
|
|
910
1010
|
}
|
|
911
1011
|
|
|
912
1012
|
async disconnectNotificationsClient(clientId: string): Promise<{ success: boolean }> {
|
|
@@ -930,6 +1030,93 @@ class ControlPanelApi {
|
|
|
930
1030
|
}
|
|
931
1031
|
return response.json();
|
|
932
1032
|
}
|
|
1033
|
+
|
|
1034
|
+
// ==================
|
|
1035
|
+
// API Keys API
|
|
1036
|
+
// ==================
|
|
1037
|
+
|
|
1038
|
+
async getApiKeys(): Promise<ApiKeysResponse> {
|
|
1039
|
+
const client = await this.ensureClient();
|
|
1040
|
+
return client.apiKeys.query();
|
|
1041
|
+
}
|
|
1042
|
+
|
|
1043
|
+
async createApiKey(request: CreateApiKeyRequest): Promise<ApiKeyWithPlaintext> {
|
|
1044
|
+
const client = await this.ensureClient();
|
|
1045
|
+
return client.apiKeys.create(request) as unknown as ApiKeyWithPlaintext;
|
|
1046
|
+
}
|
|
1047
|
+
|
|
1048
|
+
async getApiKey(keyId: string): Promise<ApiKey> {
|
|
1049
|
+
const client = await this.ensureClient();
|
|
1050
|
+
return client.apiKeys.get(keyId);
|
|
1051
|
+
}
|
|
1052
|
+
|
|
1053
|
+
async updateApiKey(keyId: string, updates: UpdateApiKeyRequest): Promise<ApiKey> {
|
|
1054
|
+
const client = await this.ensureClient();
|
|
1055
|
+
return client.apiKeys.update(keyId, updates);
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
async deleteApiKey(keyId: string): Promise<void> {
|
|
1059
|
+
const client = await this.ensureClient();
|
|
1060
|
+
return client.apiKeys.delete(keyId);
|
|
1061
|
+
}
|
|
1062
|
+
|
|
1063
|
+
// Phase 2: Scope Management
|
|
1064
|
+
async getAvailableScopes(): Promise<AvailableScopesResponse> {
|
|
1065
|
+
const client = await this.ensureClient();
|
|
1066
|
+
return client.apiKeys.scopes();
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
// Phase 2: Usage Tracking
|
|
1070
|
+
async getKeyUsage(
|
|
1071
|
+
keyId: string,
|
|
1072
|
+
_params?: {
|
|
1073
|
+
limit?: number;
|
|
1074
|
+
offset?: number;
|
|
1075
|
+
since?: string;
|
|
1076
|
+
until?: string;
|
|
1077
|
+
endpoint?: string;
|
|
1078
|
+
method?: string;
|
|
1079
|
+
statusCode?: number;
|
|
1080
|
+
}
|
|
1081
|
+
): Promise<KeyUsageResponse> {
|
|
1082
|
+
const client = await this.ensureClient();
|
|
1083
|
+
// Note: _params are ignored in auto-generated client - API expects them as query params
|
|
1084
|
+
// TODO: Verify if usage endpoint accepts query params and update client if needed
|
|
1085
|
+
return client.apiKeys.usage(keyId);
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
// ============================================================================
|
|
1089
|
+
// Preferences API
|
|
1090
|
+
// ============================================================================
|
|
1091
|
+
|
|
1092
|
+
async getPreferences(): Promise<PreferencesResponse> {
|
|
1093
|
+
const client = await this.ensureClient();
|
|
1094
|
+
return client.preferences.query();
|
|
1095
|
+
}
|
|
1096
|
+
|
|
1097
|
+
async updatePreferences(preferences: Record<string, unknown>): Promise<PreferencesResponse> {
|
|
1098
|
+
const url = `${this.baseUrl}/api/preferences`;
|
|
1099
|
+
const response = await this._fetch(url, {
|
|
1100
|
+
method: 'PUT',
|
|
1101
|
+
headers: { 'Content-Type': 'application/json' },
|
|
1102
|
+
body: JSON.stringify(preferences),
|
|
1103
|
+
});
|
|
1104
|
+
if (!response.ok) {
|
|
1105
|
+
const error = await response.json().catch(() => ({ error: response.statusText }));
|
|
1106
|
+
throw new Error(error.error || `Failed to update preferences: ${response.statusText}`);
|
|
1107
|
+
}
|
|
1108
|
+
return response.json();
|
|
1109
|
+
}
|
|
1110
|
+
|
|
1111
|
+
async deletePreferences(): Promise<void> {
|
|
1112
|
+
const url = `${this.baseUrl}/api/preferences`;
|
|
1113
|
+
const response = await this._fetch(url, {
|
|
1114
|
+
method: 'DELETE',
|
|
1115
|
+
});
|
|
1116
|
+
if (!response.ok) {
|
|
1117
|
+
throw new Error(`Failed to delete preferences: ${response.statusText}`);
|
|
1118
|
+
}
|
|
1119
|
+
}
|
|
933
1120
|
}
|
|
934
1121
|
|
|
935
1122
|
export const api = new ControlPanelApi();
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* QwickApps Control Panel API Client
|
|
3
|
+
*
|
|
4
|
+
* Auto-generated typed API client from server manifest.
|
|
5
|
+
*
|
|
6
|
+
* Copyright (c) 2025 QwickApps.com. All rights reserved.
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
export { buildClientFromManifest } from './clientBuilder.js';
|
|
10
|
+
export type { ClientManifest, RouteManifestEntry } from './clientBuilder.js';
|
|
11
|
+
export type { APIClient } from './types.js';
|
|
12
|
+
export * from './controlPanelApi.js'; // Re-export all types for compatibility
|