Skip to content

Refactor: Unify scattered request config into request.serverConfig #115

@melvincarvalho

Description

@melvincarvalho

Problem

Config properties are scattered across 29 places with inconsistent patterns:

// server.js:143-155 - mixed patterns
request.connegEnabled = connegEnabled;
request.notificationsEnabled = notificationsEnabled || liveReloadEnabled;
request.idpEnabled = idpEnabled;
request.subdomainsEnabled = subdomainsEnabled;
request.baseDomain = baseDomain;
request.mashlibEnabled = mashlibEnabled;
request.mashlibCdn = mashlibCdn;
request.mashlibVersion = mashlibVersion;
request.solidosUiEnabled = solidosUiEnabled;
request.defaultQuota = defaultQuota;
request.config = { public: options.public, readOnly: options.readOnly }; // Inconsistent!
request.liveReloadEnabled = liveReloadEnabled;

Some configs are direct properties (request.connegEnabled), some nested (request.config?.public).

Proposed Solution

Consolidate into a single unified config container:

request.serverConfig = {
  conneg: connegEnabled,
  notifications: notificationsEnabled,
  idp: idpEnabled,
  subdomains: subdomainsEnabled,
  baseDomain: baseDomain,
  mashlib: mashlibEnabled,
  mashlibCdn: mashlibCdn,
  mashlibVersion: mashlibVersion,
  solidosUi: solidosUiEnabled,
  defaultQuota: defaultQuota,
  public: options.public,
  readOnly: options.readOnly,
  liveReload: liveReloadEnabled
};

Benefits

  • Single namespace for all config
  • IDE autocomplete works
  • Easier to add new configs
  • Clear what's available on request object

Files Affected

  • src/server.js (main change)
  • src/handlers/resource.js
  • src/handlers/container.js
  • src/auth/middleware.js
  • Any file accessing request.*Enabled or request.config

Priority

P0 - Critical refactoring for maintainability

Metadata

Metadata

Assignees

No one assigned

    Labels

    priority: criticalP0 - Do first, blocking or major tech debtrefactorCode refactoring

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions