@@ -5,6 +5,8 @@ const Async = require("crocks/Async");
5
5
const assign = require ( "crocks/helpers/assign" ) ;
6
6
const compose = require ( "crocks/helpers/compose" ) ;
7
7
const curry = require ( "crocks/core/curry" ) ;
8
+ const identity = require ( "crocks/combinators/identity" ) ;
9
+ const ifElse = require ( "crocks/logic/ifElse" ) ;
8
10
const flip = require ( "crocks/combinators/flip" ) ;
9
11
const liftA2 = require ( "crocks/helpers/liftA2" ) ;
10
12
const maybePropOr = require ( "crocks/helpers/getPropOr" ) ;
@@ -15,6 +17,7 @@ const substitution = require("crocks/combinators/substitution");
15
17
const { getProp } = require ( "@epistemology-factory/crocks-ext/Async" ) ;
16
18
const { prepend } = require ( "@epistemology-factory/crocks-ext/helpers" ) ;
17
19
20
+ const { isRelativeUrl } = require ( "./predicates" ) ;
18
21
const { newError } = require ( "./errors" ) ;
19
22
20
23
// getPropOr :: a -> String -> b -> Async c
@@ -110,11 +113,17 @@ const addHeaders = curry((factory) =>
110
113
/**
111
114
* Resolves a relative URL in a {@link HttpRequest} to an absolute URL.
112
115
*
116
+ * Leaves absolute URLs unchanged.
117
+ *
113
118
* Takes a base URL to resolve to, followed by a request.
114
119
*/
115
120
// resolveUrl :: String -> HttpRequestPolicy
116
121
const resolveUrl = curry ( ( base ) =>
117
- modifyRequest ( "url" , map ( prepend ( base ) ) )
122
+ modifyRequest ( "url" , map ( ifElse (
123
+ isRelativeUrl ,
124
+ prepend ( base ) ,
125
+ identity
126
+ ) ) )
118
127
) ;
119
128
120
129
module . exports = {
0 commit comments