common.ts 894 B

12345678910111213141516171819202122
  1. import { REQUEST_CONTEXT_KEY } from '@vendure/core/dist/common/constants';
  2. import { Request } from 'express';
  3. import { AssetServerOptions } from './types';
  4. export function getAssetUrlPrefixFn(options: AssetServerOptions) {
  5. const { assetUrlPrefix, route } = options;
  6. if (assetUrlPrefix == null) {
  7. return (request: Request, identifier: string) =>
  8. `${request.protocol}://${request.get('host')}/${route}/`;
  9. }
  10. if (typeof assetUrlPrefix === 'string') {
  11. return (...args: any[]) => assetUrlPrefix;
  12. }
  13. if (typeof assetUrlPrefix === 'function') {
  14. return (request: Request, identifier: string) => {
  15. const ctx = (request as any)[REQUEST_CONTEXT_KEY];
  16. return assetUrlPrefix(ctx, identifier);
  17. };
  18. }
  19. throw new Error(`The assetUrlPrefix option was of an unexpected type: ${JSON.stringify(assetUrlPrefix)}`);
  20. }