@@ -12,7 +12,8 @@ function uploadcareLoader({ src, width, quality }) {
12
12
? ( 0 , helpers_1 . generateDefaultProxyEndpoint ) ( customProxyDomain )
13
13
: null ;
14
14
const proxyEndpoint = customProxyEndpoint || ( 0 , helpers_1 . generateDefaultProxyEndpoint ) ( publicKey ) ;
15
- const root = ( 0 , helpers_1 . trimTrailingSlash ) ( proxyEndpoint ) ;
15
+ const basePath = ( 0 , helpers_1 . trimTrailingSlash ) ( process . env . NEXT_PUBLIC_UPLOADCARE_APP_BASE_PATH || '' ) ;
16
+ const proxy = ( 0 , helpers_1 . trimTrailingSlash ) ( proxyEndpoint ) ;
16
17
const isOnCdn = ( 0 , helpers_1 . isCdnUrl ) ( src , cdnDomain ) ;
17
18
if ( ! ( 0 , helpers_1 . isProduction ) ( ) && ! isOnCdn ) {
18
19
const isPublicKeySet = ! ( 0 , helpers_1 . isDotenvParamEmpty ) ( publicKey ) ;
@@ -21,15 +22,22 @@ function uploadcareLoader({ src, width, quality }) {
21
22
throw new Error ( `Both NEXT_PUBLIC_UPLOADCARE_PUBLIC_KEY and NEXT_PUBLIC_UPLOADCARE_CUSTOM_PROXY_DOMAIN are not set. Please set either one.` ) ;
22
23
}
23
24
if ( src . startsWith ( '/' ) ) {
24
- throw new Error ( `Failed to parse " ${ src } " in "uploadcareLoader", Uploadcare loader doesn't support relative images.` ) ;
25
+ return src ;
25
26
}
26
27
}
28
+ // Process local images in Production.
29
+ if ( ( 0 , helpers_1 . isProduction ) ( ) && ! isOnCdn && src . startsWith ( '/' ) ) {
30
+ const isBasePathSet = ! ( 0 , helpers_1 . isDotenvParamEmpty ) ( basePath ) ;
31
+ if ( ! isBasePathSet ) {
32
+ return src ;
33
+ }
34
+ return `${ basePath } ${ src } ` ;
35
+ }
27
36
const filename = ( 0 , helpers_1 . getFilename ) ( src ) ;
28
37
const extension = ( 0 , helpers_1 . getExtension ) ( filename ) ;
29
38
// Some extensions are not processed by Uploadcare, e.g. SVG.
30
39
if ( constants_1 . NOT_PROCESSED_EXTENSIONS . includes ( extension ) ) {
31
- // @todo : Test non-CDN urls.
32
- return isOnCdn ? src : `${ root } ${ src } ` ;
40
+ return isOnCdn ? src : `${ basePath } ${ src } ` ;
33
41
}
34
42
// Demo: https://ucarecdn.com/a6f8abc8-f92e-460a-b7a1-c5cd70a18cdb/-/format/auto/-/resize/300x/vercel.png
35
43
const userParams = ( 0 , helpers_1 . parseUserParamsString ) ( userParamsString ) ;
@@ -48,6 +56,6 @@ function uploadcareLoader({ src, width, quality }) {
48
56
const withoutFilename = src . slice ( 0 , src . lastIndexOf ( '/' ) ) ;
49
57
return `${ withoutFilename } ${ apiParamsString } ${ filename } ` ;
50
58
}
51
- return `${ root } ${ apiParamsString } ${ src } ` ;
59
+ return `${ proxy } ${ apiParamsString } ${ src } ` ;
52
60
}
53
61
exports . uploadcareLoader = uploadcareLoader ;
0 commit comments