All files / platform/core/src/services/CustomizationService customizationUrl.ts

75% Statements 3/4
100% Branches 3/3
100% Functions 1/1
75% Lines 3/4

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50                                                1x 1x 1x                                              
import {
  CUSTOMIZATION_URL_PREFIXES_KEY,
  customizationUrlDefaults,
  DEFAULT_PREFIX,
} from './customizationUrlDefaults';
import type { CustomizationUrlPolicy } from './customizationUrlDefaults';
import { getUrlCustomizationModulePayload } from './getUrlCustomizationModulePayload';
import {
  parseCustomizationParams,
  validateCustomizationRequests,
  normalizeCustomizationValue,
} from './validate';
import type { ValidatedCustomization, ValidationResult } from './validate';
import { resolveCustomizationUrl } from './resolve';
 
/**
 * Builds the `?customization=` policy from the **app config** property
 * `customizationUrlPrefixes` (read off `extensionManager.appConfig`). This is
 * intentionally not a customization: customizations can be loaded from the URL,
 * so letting one define prefixes would let it widen its own allowlist. When the
 * property is absent the policy has no prefixes and the feature is off.
 */
export function getCustomizationUrlPolicy(customizationService: any): CustomizationUrlPolicy {
  const prefixes =
    customizationService?.extensionManager?.appConfig?.[CUSTOMIZATION_URL_PREFIXES_KEY];
  if (prefixes && typeof prefixes === 'object') {
    return { prefixes };
  }
  return customizationUrlDefaults;
}
 
export {
  CUSTOMIZATION_URL_PREFIXES_KEY,
  customizationUrlDefaults,
  DEFAULT_PREFIX,
  getUrlCustomizationModulePayload,
  parseCustomizationParams,
  validateCustomizationRequests,
  normalizeCustomizationValue,
  resolveCustomizationUrl,
};
 
export type {
  CustomizationUrlPolicy,
  ValidatedCustomization,
  ValidationResult,
};
 
export type { CustomizationModule, LoadedCustomization, LoadOptions } from './customizationUrlTypes';