mirror of
https://github.com/Studio-Saelix/sencho.git
synced 2026-08-08 01:43:55 +00:00
refactor(backend): collapse entitlement provider abstraction back to LicenseService (#889)
Removes backend/src/entitlements/ (registry, loadProvider, CommunityEntitlementProvider, types, headers, normalize) and the two abstraction-only tests. Relocates headers/normalize/types to services/license-*.ts. Swaps 22 consumer call sites from getEntitlementProvider() to LicenseService.getInstance(). Drops the Dockerfile install step plus PRO_PACKAGE_VERSION build-arg and github_token BuildKit secret in docker-publish.yml. Removes the now stale no-restricted-imports rule in backend/eslint.config.mjs. Net: 37 files changed, ~700 lines removed, no behavior change. Local dev no longer requires GitHub Packages auth to start the backend. Rationale and revisit conditions in docs/internal/adrs/2026-05-02-collapse-entitlement-provider.md.
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
import type { Server } from 'http';
|
||||
import { DatabaseService } from '../services/DatabaseService';
|
||||
import { getEntitlementProvider } from '../entitlements/registry';
|
||||
import { LicenseService } from '../services/LicenseService';
|
||||
import { MonitorService } from '../services/MonitorService';
|
||||
import { AutoHealService } from '../services/AutoHealService';
|
||||
import { DockerEventManager } from '../services/DockerEventManager';
|
||||
@@ -22,8 +22,8 @@ export function installShutdownHandlers(server: Server): void {
|
||||
|
||||
server.close(() => {
|
||||
console.log('[Shutdown] HTTP server closed');
|
||||
try { getEntitlementProvider().destroy(); } catch (e) {
|
||||
console.warn('[Shutdown] EntitlementProvider cleanup failed:', (e as Error).message);
|
||||
try { LicenseService.getInstance().destroy(); } catch (e) {
|
||||
console.warn('[Shutdown] LicenseService cleanup failed:', (e as Error).message);
|
||||
}
|
||||
try { MonitorService.getInstance().stop(); } catch (e) {
|
||||
console.warn('[Shutdown] MonitorService cleanup failed:', (e as Error).message);
|
||||
|
||||
@@ -1,8 +1,7 @@
|
||||
import type { Server } from 'http';
|
||||
import { FileSystemService } from '../services/FileSystemService';
|
||||
import { NodeRegistry } from '../services/NodeRegistry';
|
||||
import { loadEntitlementProvider } from '../entitlements/loadProvider';
|
||||
import { setEntitlementProvider } from '../entitlements/registry';
|
||||
import { LicenseService } from '../services/LicenseService';
|
||||
import SelfUpdateService from '../services/SelfUpdateService';
|
||||
import { MonitorService } from '../services/MonitorService';
|
||||
import { AutoHealService } from '../services/AutoHealService';
|
||||
@@ -32,14 +31,8 @@ export async function startServer(server: Server): Promise<void> {
|
||||
console.error('Migration failed:', error);
|
||||
}
|
||||
|
||||
// Resolve the EntitlementProvider before any tier-gated code can run.
|
||||
// Phase 1 returns the in-tree LicenseService singleton; Phase 2 will
|
||||
// dynamic-import the private package and fall back to Community.
|
||||
// Awaited because the loader is async-by-signature (so the Phase-2
|
||||
// swap doesn't change this call site).
|
||||
const entitlementProvider = await loadEntitlementProvider();
|
||||
setEntitlementProvider(entitlementProvider);
|
||||
entitlementProvider.initialize();
|
||||
// Initialize the license service before any tier-gated code can run.
|
||||
LicenseService.getInstance().initialize();
|
||||
|
||||
// Synchronous starts: schedule background timers and continue. None of
|
||||
// these fire their first tick for at least a few seconds, so they
|
||||
|
||||
Reference in New Issue
Block a user