/**
 * Helper used by the `OMNIROUTE_BUILD_PROFILE=minimal` stubs to surface a
 * consistent "this feature was compiled out" error. Routes that depend on a
 * stubbed module should catch the error and return HTTP 503 with a clear
 * message; we don't want the bundle to silently fail.
 *
 * See docs/security/SOCKET_DEV_FINDINGS.md for the build profile rationale.
 */
export class FeatureDisabledError extends Error {
  readonly featureName: string;
  constructor(featureName: string) {
    super(
      `Feature "${featureName}" is disabled in this build (OMNIROUTE_BUILD_PROFILE=minimal). ` +
        `Install the full omniroute artifact instead of omniroute-secure if you need this feature.`
    );
    this.name = "FeatureDisabledError";
    this.featureName = featureName;
  }
}

export function featureDisabledError(featureName: string): FeatureDisabledError {
  return new FeatureDisabledError(featureName);
}

export const OMNIROUTE_BUILD_PROFILE: string = process.env.OMNIROUTE_BUILD_PROFILE || "full";
export const IS_MINIMAL_BUILD: boolean = OMNIROUTE_BUILD_PROFILE === "minimal";
