@qwickapps/server 1.6.0 → 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 +64 -0
- package/README.md +177 -0
- package/dist/core/control-panel.d.ts.map +1 -1
- package/dist/core/control-panel.js +111 -254
- 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.map +1 -1
- package/dist/plugins/api-keys/api-keys-plugin.js +126 -3
- package/dist/plugins/api-keys/api-keys-plugin.js.map +1 -1
- package/dist/plugins/api-keys/index.d.ts +4 -0
- package/dist/plugins/api-keys/index.d.ts.map +1 -1
- package/dist/plugins/api-keys/index.js +3 -0
- package/dist/plugins/api-keys/index.js.map +1 -1
- package/dist/plugins/api-keys/middleware/index.d.ts +1 -0
- package/dist/plugins/api-keys/middleware/index.d.ts.map +1 -1
- package/dist/plugins/api-keys/middleware/index.js +1 -0
- package/dist/plugins/api-keys/middleware/index.js.map +1 -1
- 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 +2 -0
- package/dist/plugins/api-keys/stores/index.d.ts.map +1 -1
- package/dist/plugins/api-keys/stores/index.js +2 -0
- package/dist/plugins/api-keys/stores/index.js.map +1 -1
- 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/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 +62 -21
- package/dist/plugins/api-keys/types.d.ts.map +1 -1
- package/dist/plugins/api-keys/types.js +50 -1
- package/dist/plugins/api-keys/types.js.map +1 -1
- 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/env-config.d.ts +15 -1
- package/dist/plugins/auth/env-config.d.ts.map +1 -1
- package/dist/plugins/auth/env-config.js +14 -4
- 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/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 +52 -55
- package/dist/plugins/users/stores/postgres-store.js.map +1 -1
- package/dist/plugins/users/types.d.ts +8 -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 +3693 -3126
- 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 +65 -3
- 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 +3 -1
- 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/PreferencesPage.d.ts +9 -0
- package/package.json +10 -4
- package/src/core/control-panel.ts +134 -279
- 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 +139 -3
- package/src/plugins/api-keys/index.ts +6 -0
- package/src/plugins/api-keys/middleware/index.ts +3 -0
- package/src/plugins/api-keys/middleware/usage-logging.ts +78 -0
- package/src/plugins/api-keys/stores/index.ts +14 -0
- package/src/plugins/api-keys/stores/plugin-scope-store.ts +280 -0
- package/src/plugins/api-keys/stores/usage-log-store.ts +423 -0
- package/src/plugins/api-keys/types.ts +66 -2
- 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/env-config.ts +14 -4
- 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/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__/users-plugin.test.ts +19 -18
- package/src/plugins/users/stores/postgres-store.ts +64 -55
- package/src/plugins/users/types.ts +8 -1
- package/src/plugins/users/users-plugin.ts +137 -3
- package/ui/src/App.tsx +13 -4
- package/ui/src/api/clientBuilder.ts +206 -0
- package/ui/src/api/controlPanelApi.ts +199 -169
- 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 +15 -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 +262 -74
- 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/__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 -230
- 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 -552
- package/dist/plugins/users/__tests__/users-plugin.test.js.map +0 -1
- package/dist-ui/assets/index-5nX8fM1a.js +0 -469
- package/dist-ui/assets/index-5nX8fM1a.js.map +0 -1
- package/dist-ui-lib/components/StatCard.d.ts +0 -16
- package/dist-ui-lib/pages/APIKeysPage.d.ts +0 -13
- 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}/AcceptInvitationPage.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;
|
|
@@ -153,7 +156,7 @@ export interface ApiKey {
|
|
|
153
156
|
name: string;
|
|
154
157
|
key_prefix: string;
|
|
155
158
|
key_type: 'm2m' | 'pat';
|
|
156
|
-
scopes:
|
|
159
|
+
scopes: string[]; // Phase 2: Support plugin-declared scopes
|
|
157
160
|
last_used_at: string | null;
|
|
158
161
|
expires_at: string | null;
|
|
159
162
|
is_active: boolean;
|
|
@@ -172,17 +175,62 @@ export interface ApiKeysResponse {
|
|
|
172
175
|
export interface CreateApiKeyRequest {
|
|
173
176
|
name: string;
|
|
174
177
|
key_type: 'm2m' | 'pat';
|
|
175
|
-
scopes:
|
|
178
|
+
scopes: string[]; // Phase 2: Support plugin-declared scopes
|
|
176
179
|
expires_at?: string;
|
|
177
180
|
}
|
|
178
181
|
|
|
179
182
|
export interface UpdateApiKeyRequest {
|
|
180
183
|
name?: string;
|
|
181
|
-
scopes?:
|
|
184
|
+
scopes?: string[]; // Phase 2: Support plugin-declared scopes
|
|
182
185
|
expires_at?: string;
|
|
183
186
|
is_active?: boolean;
|
|
184
187
|
}
|
|
185
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
|
+
|
|
186
234
|
// ==================
|
|
187
235
|
// Entitlements API Types
|
|
188
236
|
// ==================
|
|
@@ -489,19 +537,57 @@ export interface RateLimitConfigUpdateResponse {
|
|
|
489
537
|
config: RateLimitConfig;
|
|
490
538
|
}
|
|
491
539
|
|
|
540
|
+
export interface PreferencesResponse {
|
|
541
|
+
user_id: string;
|
|
542
|
+
preferences: Record<string, unknown>;
|
|
543
|
+
}
|
|
544
|
+
|
|
492
545
|
class ControlPanelApi {
|
|
493
546
|
private baseUrl: string;
|
|
547
|
+
private client: APIClient | null = null;
|
|
548
|
+
private clientPromise: Promise<APIClient> | null = null;
|
|
494
549
|
|
|
495
550
|
constructor(baseUrl = '') {
|
|
496
551
|
this.baseUrl = baseUrl;
|
|
497
552
|
}
|
|
498
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
|
+
|
|
499
581
|
/**
|
|
500
582
|
* Set the base URL for API requests.
|
|
501
583
|
* Call this when the control panel is mounted at a custom path.
|
|
584
|
+
* Invalidates the cached client since the manifest will be different.
|
|
502
585
|
*/
|
|
503
586
|
setBaseUrl(baseUrl: string): void {
|
|
504
587
|
this.baseUrl = baseUrl;
|
|
588
|
+
// Invalidate cached client
|
|
589
|
+
this.client = null;
|
|
590
|
+
this.clientPromise = null;
|
|
505
591
|
}
|
|
506
592
|
|
|
507
593
|
/**
|
|
@@ -591,37 +677,18 @@ class ControlPanelApi {
|
|
|
591
677
|
page?: number;
|
|
592
678
|
search?: string;
|
|
593
679
|
} = {}): Promise<UsersResponse> {
|
|
594
|
-
const
|
|
595
|
-
|
|
596
|
-
if (options.page) params.set('page', options.page.toString());
|
|
597
|
-
if (options.search) params.set('q', options.search);
|
|
598
|
-
|
|
599
|
-
const response = await this._fetch(`${this.baseUrl}/api/users?${params}`);
|
|
600
|
-
if (!response.ok) {
|
|
601
|
-
throw new Error(`Users request failed: ${response.statusText}`);
|
|
602
|
-
}
|
|
603
|
-
return response.json();
|
|
680
|
+
const client = await this.ensureClient();
|
|
681
|
+
return client.users.query(options);
|
|
604
682
|
}
|
|
605
683
|
|
|
606
684
|
async getUserById(id: string): Promise<User> {
|
|
607
|
-
const
|
|
608
|
-
|
|
609
|
-
throw new Error(`User request failed: ${response.statusText}`);
|
|
610
|
-
}
|
|
611
|
-
return response.json();
|
|
685
|
+
const client = await this.ensureClient();
|
|
686
|
+
return client.users.get(id);
|
|
612
687
|
}
|
|
613
688
|
|
|
614
689
|
async inviteUser(request: InviteUserRequest): Promise<InvitationResponse> {
|
|
615
|
-
const
|
|
616
|
-
|
|
617
|
-
headers: { 'Content-Type': 'application/json' },
|
|
618
|
-
body: JSON.stringify(request),
|
|
619
|
-
});
|
|
620
|
-
if (!response.ok) {
|
|
621
|
-
const error = await response.json().catch(() => ({}));
|
|
622
|
-
throw new Error(error.error || `Invite user failed: ${response.statusText}`);
|
|
623
|
-
}
|
|
624
|
-
return response.json();
|
|
690
|
+
const client = await this.ensureClient();
|
|
691
|
+
return client.users.invite(request);
|
|
625
692
|
}
|
|
626
693
|
|
|
627
694
|
async acceptInvitation(token: string): Promise<AcceptInvitationResponse> {
|
|
@@ -650,11 +717,8 @@ class ControlPanelApi {
|
|
|
650
717
|
// ==================
|
|
651
718
|
|
|
652
719
|
async getBans(): Promise<BansResponse> {
|
|
653
|
-
const
|
|
654
|
-
|
|
655
|
-
throw new Error(`Bans request failed: ${response.statusText}`);
|
|
656
|
-
}
|
|
657
|
-
return response.json();
|
|
720
|
+
const client = await this.ensureClient();
|
|
721
|
+
return client.bans.query();
|
|
658
722
|
}
|
|
659
723
|
|
|
660
724
|
async banUser(email: string, reason: string, expiresAt?: string): Promise<void> {
|
|
@@ -769,11 +833,8 @@ class ControlPanelApi {
|
|
|
769
833
|
}
|
|
770
834
|
|
|
771
835
|
async getEntitlementsStatus(): Promise<EntitlementsStatus> {
|
|
772
|
-
const
|
|
773
|
-
|
|
774
|
-
throw new Error(`Entitlements status request failed: ${response.statusText}`);
|
|
775
|
-
}
|
|
776
|
-
return response.json();
|
|
836
|
+
const client = await this.ensureClient();
|
|
837
|
+
return client.entitlements.query();
|
|
777
838
|
}
|
|
778
839
|
|
|
779
840
|
// ==================
|
|
@@ -781,35 +842,23 @@ class ControlPanelApi {
|
|
|
781
842
|
// ==================
|
|
782
843
|
|
|
783
844
|
async getHealth(): Promise<HealthResponse> {
|
|
784
|
-
const
|
|
785
|
-
|
|
786
|
-
throw new Error(`Health check failed: ${response.statusText}`);
|
|
787
|
-
}
|
|
788
|
-
return response.json();
|
|
845
|
+
const client = await this.ensureClient();
|
|
846
|
+
return client.core.health();
|
|
789
847
|
}
|
|
790
848
|
|
|
791
849
|
async getInfo(): Promise<InfoResponse> {
|
|
792
|
-
const
|
|
793
|
-
|
|
794
|
-
throw new Error(`Info request failed: ${response.statusText}`);
|
|
795
|
-
}
|
|
796
|
-
return response.json();
|
|
850
|
+
const client = await this.ensureClient();
|
|
851
|
+
return client.core.info();
|
|
797
852
|
}
|
|
798
853
|
|
|
799
854
|
async getDiagnostics(): Promise<DiagnosticsResponse> {
|
|
800
|
-
const
|
|
801
|
-
|
|
802
|
-
throw new Error(`Diagnostics request failed: ${response.statusText}`);
|
|
803
|
-
}
|
|
804
|
-
return response.json();
|
|
855
|
+
const client = await this.ensureClient();
|
|
856
|
+
return client.core.diagnostics();
|
|
805
857
|
}
|
|
806
858
|
|
|
807
859
|
async getConfig(): Promise<ConfigResponse> {
|
|
808
|
-
const
|
|
809
|
-
|
|
810
|
-
throw new Error(`Config request failed: ${response.statusText}`);
|
|
811
|
-
}
|
|
812
|
-
return response.json();
|
|
860
|
+
const client = await this.ensureClient();
|
|
861
|
+
return client.config.query();
|
|
813
862
|
}
|
|
814
863
|
|
|
815
864
|
async getLogs(options: {
|
|
@@ -819,27 +868,13 @@ class ControlPanelApi {
|
|
|
819
868
|
limit?: number;
|
|
820
869
|
page?: number;
|
|
821
870
|
} = {}): Promise<LogsResponse> {
|
|
822
|
-
const
|
|
823
|
-
|
|
824
|
-
if (options.level) params.set('level', options.level);
|
|
825
|
-
if (options.search) params.set('search', options.search);
|
|
826
|
-
if (options.limit) params.set('limit', options.limit.toString());
|
|
827
|
-
if (options.page) params.set('page', options.page.toString());
|
|
828
|
-
|
|
829
|
-
const response = await this._fetch(`${this.baseUrl}/api/logs?${params}`);
|
|
830
|
-
if (!response.ok) {
|
|
831
|
-
throw new Error(`Logs request failed: ${response.statusText}`);
|
|
832
|
-
}
|
|
833
|
-
return response.json();
|
|
871
|
+
const client = await this.ensureClient();
|
|
872
|
+
return client.logs.query(options);
|
|
834
873
|
}
|
|
835
874
|
|
|
836
875
|
async getLogSources(): Promise<LogSource[]> {
|
|
837
|
-
const
|
|
838
|
-
|
|
839
|
-
throw new Error(`Log sources request failed: ${response.statusText}`);
|
|
840
|
-
}
|
|
841
|
-
const data = await response.json();
|
|
842
|
-
return data.sources;
|
|
876
|
+
const client = await this.ensureClient();
|
|
877
|
+
return client.logs.sources();
|
|
843
878
|
}
|
|
844
879
|
|
|
845
880
|
// ==================
|
|
@@ -847,11 +882,8 @@ class ControlPanelApi {
|
|
|
847
882
|
// ==================
|
|
848
883
|
|
|
849
884
|
async getPlugins(): Promise<PluginsResponse> {
|
|
850
|
-
const
|
|
851
|
-
|
|
852
|
-
throw new Error(`Plugins request failed: ${response.statusText}`);
|
|
853
|
-
}
|
|
854
|
-
return response.json();
|
|
885
|
+
const client = await this.ensureClient();
|
|
886
|
+
return client.core.plugins();
|
|
855
887
|
}
|
|
856
888
|
|
|
857
889
|
async getPluginDetail(id: string): Promise<PluginDetailResponse> {
|
|
@@ -870,11 +902,8 @@ class ControlPanelApi {
|
|
|
870
902
|
// ==================
|
|
871
903
|
|
|
872
904
|
async getUiContributions(): Promise<UiContributionsResponse> {
|
|
873
|
-
const
|
|
874
|
-
|
|
875
|
-
throw new Error(`UI contributions request failed: ${response.statusText}`);
|
|
876
|
-
}
|
|
877
|
-
return response.json();
|
|
905
|
+
const client = await this.ensureClient();
|
|
906
|
+
return client.core.uiContributions();
|
|
878
907
|
}
|
|
879
908
|
|
|
880
909
|
// ==================
|
|
@@ -882,42 +911,37 @@ class ControlPanelApi {
|
|
|
882
911
|
// ==================
|
|
883
912
|
|
|
884
913
|
async getAuthConfigStatus(): Promise<AuthConfigStatus> {
|
|
885
|
-
|
|
886
|
-
|
|
914
|
+
try {
|
|
915
|
+
const client = await this.ensureClient();
|
|
916
|
+
return await client.auth.status();
|
|
917
|
+
} catch (error) {
|
|
887
918
|
// Return disabled state if endpoint not available
|
|
888
|
-
if (
|
|
919
|
+
if (error instanceof Error && error.message.includes('404')) {
|
|
889
920
|
return { state: 'disabled', adapter: null };
|
|
890
921
|
}
|
|
891
|
-
throw
|
|
922
|
+
throw error;
|
|
892
923
|
}
|
|
893
|
-
return response.json();
|
|
894
924
|
}
|
|
895
925
|
|
|
896
926
|
async getAuthConfig(): Promise<AuthConfigStatus> {
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
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')) {
|
|
900
933
|
return { state: 'disabled', adapter: null };
|
|
901
934
|
}
|
|
902
|
-
throw
|
|
935
|
+
throw error;
|
|
903
936
|
}
|
|
904
|
-
return response.json();
|
|
905
937
|
}
|
|
906
938
|
|
|
907
939
|
/**
|
|
908
940
|
* Update auth configuration (save to database for hot-reload)
|
|
909
941
|
*/
|
|
910
942
|
async updateAuthConfig(request: UpdateAuthConfigRequest): Promise<{ success: boolean; message: string }> {
|
|
911
|
-
const
|
|
912
|
-
|
|
913
|
-
headers: { 'Content-Type': 'application/json' },
|
|
914
|
-
body: JSON.stringify(request),
|
|
915
|
-
});
|
|
916
|
-
if (!response.ok) {
|
|
917
|
-
const error = await response.json().catch(() => ({}));
|
|
918
|
-
throw new Error(error.error || `Auth config update failed: ${response.statusText}`);
|
|
919
|
-
}
|
|
920
|
-
return response.json();
|
|
943
|
+
const client = await this.ensureClient();
|
|
944
|
+
return client.auth.update(request) as unknown as { success: boolean; message: string };
|
|
921
945
|
}
|
|
922
946
|
|
|
923
947
|
/**
|
|
@@ -938,16 +962,8 @@ class ControlPanelApi {
|
|
|
938
962
|
* Test auth provider connection without saving
|
|
939
963
|
*/
|
|
940
964
|
async testAuthProvider(request: TestProviderRequest): Promise<TestProviderResponse> {
|
|
941
|
-
const
|
|
942
|
-
|
|
943
|
-
headers: { 'Content-Type': 'application/json' },
|
|
944
|
-
body: JSON.stringify(request),
|
|
945
|
-
});
|
|
946
|
-
if (!response.ok) {
|
|
947
|
-
const error = await response.json().catch(() => ({}));
|
|
948
|
-
throw new Error(error.error || `Provider test failed: ${response.statusText}`);
|
|
949
|
-
}
|
|
950
|
-
return response.json();
|
|
965
|
+
const client = await this.ensureClient();
|
|
966
|
+
return client.auth.test(request);
|
|
951
967
|
}
|
|
952
968
|
|
|
953
969
|
/**
|
|
@@ -970,24 +986,13 @@ class ControlPanelApi {
|
|
|
970
986
|
// ==================
|
|
971
987
|
|
|
972
988
|
async getRateLimitConfig(): Promise<RateLimitConfig> {
|
|
973
|
-
const
|
|
974
|
-
|
|
975
|
-
throw new Error(`Rate limit config request failed: ${response.statusText}`);
|
|
976
|
-
}
|
|
977
|
-
return response.json();
|
|
989
|
+
const client = await this.ensureClient();
|
|
990
|
+
return client.rateLimit.config() as unknown as RateLimitConfig;
|
|
978
991
|
}
|
|
979
992
|
|
|
980
993
|
async updateRateLimitConfig(updates: RateLimitConfigUpdateRequest): Promise<RateLimitConfigUpdateResponse> {
|
|
981
|
-
const
|
|
982
|
-
|
|
983
|
-
headers: { 'Content-Type': 'application/json' },
|
|
984
|
-
body: JSON.stringify(updates),
|
|
985
|
-
});
|
|
986
|
-
if (!response.ok) {
|
|
987
|
-
const error = await response.json().catch(() => ({}));
|
|
988
|
-
throw new Error(error.error || `Rate limit config update failed: ${response.statusText}`);
|
|
989
|
-
}
|
|
990
|
-
return response.json();
|
|
994
|
+
const client = await this.ensureClient();
|
|
995
|
+
return client.rateLimit.update(updates);
|
|
991
996
|
}
|
|
992
997
|
|
|
993
998
|
// ==================
|
|
@@ -995,19 +1000,13 @@ class ControlPanelApi {
|
|
|
995
1000
|
// ==================
|
|
996
1001
|
|
|
997
1002
|
async getNotificationsStats(): Promise<NotificationsStatsResponse> {
|
|
998
|
-
const
|
|
999
|
-
|
|
1000
|
-
throw new Error(`Notifications stats request failed: ${response.statusText}`);
|
|
1001
|
-
}
|
|
1002
|
-
return response.json();
|
|
1003
|
+
const client = await this.ensureClient();
|
|
1004
|
+
return client.notifications.stats();
|
|
1003
1005
|
}
|
|
1004
1006
|
|
|
1005
1007
|
async getNotificationsClients(): Promise<NotificationsClientsResponse> {
|
|
1006
|
-
const
|
|
1007
|
-
|
|
1008
|
-
throw new Error(`Notifications clients request failed: ${response.statusText}`);
|
|
1009
|
-
}
|
|
1010
|
-
return response.json();
|
|
1008
|
+
const client = await this.ensureClient();
|
|
1009
|
+
return client.notifications.clients();
|
|
1011
1010
|
}
|
|
1012
1011
|
|
|
1013
1012
|
async disconnectNotificationsClient(clientId: string): Promise<{ success: boolean }> {
|
|
@@ -1037,54 +1036,85 @@ class ControlPanelApi {
|
|
|
1037
1036
|
// ==================
|
|
1038
1037
|
|
|
1039
1038
|
async getApiKeys(): Promise<ApiKeysResponse> {
|
|
1040
|
-
const
|
|
1041
|
-
|
|
1042
|
-
throw new Error(`API keys request failed: ${response.statusText}`);
|
|
1043
|
-
}
|
|
1044
|
-
return response.json();
|
|
1039
|
+
const client = await this.ensureClient();
|
|
1040
|
+
return client.apiKeys.query();
|
|
1045
1041
|
}
|
|
1046
1042
|
|
|
1047
1043
|
async createApiKey(request: CreateApiKeyRequest): Promise<ApiKeyWithPlaintext> {
|
|
1048
|
-
const
|
|
1049
|
-
|
|
1050
|
-
headers: { 'Content-Type': 'application/json' },
|
|
1051
|
-
body: JSON.stringify(request),
|
|
1052
|
-
});
|
|
1053
|
-
if (!response.ok) {
|
|
1054
|
-
const error = await response.json().catch(() => ({}));
|
|
1055
|
-
throw new Error(error.error || `API key creation failed: ${response.statusText}`);
|
|
1056
|
-
}
|
|
1057
|
-
return response.json();
|
|
1044
|
+
const client = await this.ensureClient();
|
|
1045
|
+
return client.apiKeys.create(request) as unknown as ApiKeyWithPlaintext;
|
|
1058
1046
|
}
|
|
1059
1047
|
|
|
1060
1048
|
async getApiKey(keyId: string): Promise<ApiKey> {
|
|
1061
|
-
const
|
|
1062
|
-
|
|
1063
|
-
throw new Error(`API key request failed: ${response.statusText}`);
|
|
1064
|
-
}
|
|
1065
|
-
return response.json();
|
|
1049
|
+
const client = await this.ensureClient();
|
|
1050
|
+
return client.apiKeys.get(keyId);
|
|
1066
1051
|
}
|
|
1067
1052
|
|
|
1068
1053
|
async updateApiKey(keyId: string, updates: UpdateApiKeyRequest): Promise<ApiKey> {
|
|
1069
|
-
const
|
|
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, {
|
|
1070
1100
|
method: 'PUT',
|
|
1071
1101
|
headers: { 'Content-Type': 'application/json' },
|
|
1072
|
-
body: JSON.stringify(
|
|
1102
|
+
body: JSON.stringify(preferences),
|
|
1073
1103
|
});
|
|
1074
1104
|
if (!response.ok) {
|
|
1075
|
-
const error = await response.json().catch(() => ({}));
|
|
1076
|
-
throw new Error(error.error || `
|
|
1105
|
+
const error = await response.json().catch(() => ({ error: response.statusText }));
|
|
1106
|
+
throw new Error(error.error || `Failed to update preferences: ${response.statusText}`);
|
|
1077
1107
|
}
|
|
1078
1108
|
return response.json();
|
|
1079
1109
|
}
|
|
1080
1110
|
|
|
1081
|
-
async
|
|
1082
|
-
const
|
|
1111
|
+
async deletePreferences(): Promise<void> {
|
|
1112
|
+
const url = `${this.baseUrl}/api/preferences`;
|
|
1113
|
+
const response = await this._fetch(url, {
|
|
1083
1114
|
method: 'DELETE',
|
|
1084
1115
|
});
|
|
1085
1116
|
if (!response.ok) {
|
|
1086
|
-
|
|
1087
|
-
throw new Error(error.error || `API key deletion failed: ${response.statusText}`);
|
|
1117
|
+
throw new Error(`Failed to delete preferences: ${response.statusText}`);
|
|
1088
1118
|
}
|
|
1089
1119
|
}
|
|
1090
1120
|
}
|
|
@@ -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
|