ui-config.ts 2.5 KB

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