ui-config.ts 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import {
  2. DEFAULT_AUTH_TOKEN_HEADER_KEY,
  3. DEFAULT_CHANNEL_TOKEN_KEY,
  4. ADMIN_API_PATH,
  5. } from '@vendure/common/lib/shared-constants';
  6. import { AdminUiConfig } from '@vendure/common/lib/shared-types';
  7. import { VendureConfig } from '@vendure/core';
  8. import { defaultAvailableLocales } from './constants.js';
  9. import { defaultLocale, defaultLanguage, defaultAvailableLanguages } from './constants.js';
  10. export function getAdminUiConfig(
  11. config: VendureConfig,
  12. adminUiConfig?: Partial<AdminUiConfig>,
  13. ): AdminUiConfig {
  14. const { authOptions, apiOptions } = config;
  15. const propOrDefault = <Prop extends keyof AdminUiConfig>(
  16. prop: Prop,
  17. defaultVal: AdminUiConfig[Prop],
  18. isArray: boolean = false,
  19. ): AdminUiConfig[Prop] => {
  20. if (isArray) {
  21. const isValidArray = !!adminUiConfig
  22. ? !!((adminUiConfig as AdminUiConfig)[prop] as any[])?.length
  23. : false;
  24. return !!adminUiConfig && isValidArray ? (adminUiConfig as AdminUiConfig)[prop] : defaultVal;
  25. } else {
  26. return adminUiConfig ? (adminUiConfig as AdminUiConfig)[prop] || defaultVal : defaultVal;
  27. }
  28. };
  29. return {
  30. adminApiPath: propOrDefault('adminApiPath', apiOptions.adminApiPath || ADMIN_API_PATH),
  31. apiHost: propOrDefault('apiHost', 'auto'),
  32. apiPort: propOrDefault('apiPort', 'auto'),
  33. tokenMethod: propOrDefault('tokenMethod', authOptions.tokenMethod === 'bearer' ? 'bearer' : 'cookie'),
  34. authTokenHeaderKey: propOrDefault(
  35. 'authTokenHeaderKey',
  36. authOptions.authTokenHeaderKey || DEFAULT_AUTH_TOKEN_HEADER_KEY,
  37. ),
  38. channelTokenKey: propOrDefault(
  39. 'channelTokenKey',
  40. apiOptions.channelTokenKey || DEFAULT_CHANNEL_TOKEN_KEY,
  41. ),
  42. defaultLanguage: propOrDefault('defaultLanguage', defaultLanguage),
  43. defaultLocale: propOrDefault('defaultLocale', defaultLocale),
  44. availableLanguages: propOrDefault('availableLanguages', defaultAvailableLanguages, true),
  45. availableLocales: propOrDefault('availableLocales', defaultAvailableLocales, true),
  46. brand: adminUiConfig?.brand,
  47. hideVendureBranding: propOrDefault(
  48. 'hideVendureBranding',
  49. adminUiConfig?.hideVendureBranding || false,
  50. ),
  51. hideVersion: propOrDefault('hideVersion', adminUiConfig?.hideVersion || false),
  52. loginImageUrl: adminUiConfig?.loginImageUrl,
  53. cancellationReasons: propOrDefault('cancellationReasons', undefined),
  54. };
  55. }