fetchbasequery 0.1.0 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fetchbasequery",
3
- "version": "0.1.0",
3
+ "version": "0.1.2",
4
4
  "description": "Library for easily make HTTP queries without mass of boilerplate code.",
5
5
  "type": "module",
6
6
  "main": "src/fetchBaseQuery.js",
package/src/baseQuery.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import responseFromError from './helpers/responseFromError.js'
2
2
  import purge from './helpers/purge.js'
3
+ import mergeHeaders from './helpers/mergeHeaders.js'
3
4
 
4
5
  const moduleName = 'fetchBaseQuery/baseQuery'
5
6
 
@@ -44,6 +45,8 @@ export default async ({ url: endpoint, request: subject, ...options } = {}) => {
44
45
  )
45
46
  }
46
47
  subject = url
48
+ } else if (fetchOptions.headers) {
49
+ fetchOptions.headers = mergeHeaders(subject.headers, fetchOptions.headers)
47
50
  }
48
51
  request = new Request(subject, fetchOptions)
49
52
  if (debug?.baseQuery) {
@@ -0,0 +1,9 @@
1
+ export default (a, b) => {
2
+ const result = new Headers(a)
3
+ b = (b instanceof Headers ? b : new Headers(b))
4
+ for (let pair of b.entries())
5
+ result.delete(pair[0])
6
+ for (let pair of b.entries())
7
+ result.append(pair[0], pair[1])
8
+ return result
9
+ }
@@ -1,4 +1,16 @@
1
- export default object => Object.fromEntries(
1
+ const purgeObject = object => Object.fromEntries(
2
2
  Object.entries(object)
3
3
  .filter(entry => entry[1] !== undefined)
4
4
  )
5
+
6
+ const purgeHeaders = headers => {
7
+ headers.entities().forEach(([ name, value ]) => {
8
+ if (value === '')
9
+ headers.delete(name)
10
+ })
11
+ return headers
12
+ }
13
+
14
+ export default object => object instanceof Headers
15
+ ? purgeHeaders(object)
16
+ : purgeObject(object)
@@ -1,5 +1,6 @@
1
1
  import responseFromError from '../helpers/responseFromError.js'
2
2
  import purge from '../helpers/purge.js'
3
+ import mergeHeaders from '../helpers/mergeHeaders.js'
3
4
 
4
5
  const moduleName = 'fetchBaseQuery/middlewares/accessToken'
5
6
 
@@ -28,10 +29,10 @@ export default (settings = {}) => query => async ({ payload, headers, ...options
28
29
  try {
29
30
  response = await query({
30
31
  ...options,
31
- headers: purge({
32
- ...(getAuthorizationHeaders(getAccessToken(payload))),
33
- ...(headers || {})
34
- })
32
+ headers: mergeHeaders(
33
+ purge(getAuthorizationHeaders(getAccessToken(payload))),
34
+ headers || {}
35
+ )
35
36
  })
36
37
  } catch (error) {
37
38
  if (options.logErrors) {
@@ -1,6 +1,7 @@
1
1
  import purge from '../helpers/purge.js'
2
2
  import encodeJson from '../helpers/encodeJson.js'
3
3
  import responseFromError from '../helpers/responseFromError.js'
4
+ import mergeHeaders from '../helpers/mergeHeaders.js'
4
5
 
5
6
  const moduleName = 'fetchBaseQuery/middlewares/accessToken'
6
7
 
@@ -61,12 +62,14 @@ export default (settings = {}) => (query) => async ({ body, headers, ...options
61
62
  try {
62
63
  response = await query({
63
64
  ...options,
64
- headers: purge({
65
- 'Content-Type': contentType instanceof Function
66
- ? contentType({ body })
67
- : contentType,
68
- ...(headers || {})
69
- }),
65
+ headers: mergeHeaders(
66
+ purge({
67
+ 'Content-Type': contentType instanceof Function
68
+ ? contentType({ body })
69
+ : contentType
70
+ }),
71
+ headers || {}
72
+ ),
70
73
  body: encodeBody(body)
71
74
  })
72
75
  } catch (error) {
package/types/index.d.ts CHANGED
@@ -11,7 +11,7 @@ export type FetchOptions = {
11
11
  url: URL | string | undefined,
12
12
  request: Request | undefined,
13
13
  method: string | undefined,
14
- headers: object | undefined,
14
+ headers: Headers | object | undefined,
15
15
  body: string
16
16
  | object
17
17
  | FormData