From ed81fbebe9346ef5804c86df2ce5ad5b6d88dcd1 Mon Sep 17 00:00:00 2001 From: Matt Pilott Date: Sun, 26 Jul 2020 00:06:10 +0100 Subject: [PATCH] optional headers --- docs/index.md | 3 ++- package.json | 3 ++- src/svelte/pull.js | 15 ++++++++++----- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/docs/index.md b/docs/index.md index d54dd14..c253863 100644 --- a/docs/index.md +++ b/docs/index.md @@ -154,12 +154,13 @@ Handy sapper fetch wrapper - `params` **[object][56]** object to convert to query string (optional, default `{}`) - `preload` **[boolean][58]** instruction to use sappers preload fetch (optional, default `false`) - `api` **[boolean][58]** toggle to opt out of the prepended API_URL env var (optional, default `true`) +- `head` **([array][59] \| [boolean][58])** include headers in return (optional, default `false`) Returns **[object][56]** fetch data in json format **Meta** -- **version**: 1.1.2 +- **version**: 1.2.0 ### push diff --git a/package.json b/package.json index 1e0b2ea..c91c116 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@neuekit/utilities", - "version": "1.5.7", + "version": "1.6.0", "license": "MIT", "description": "Tree-shakeable JavaScript utilities, add yours today!", "main": "dist/bundle.js", @@ -22,6 +22,7 @@ "qss": "^2.0.3" }, "devDependencies": { + "@babel/core": "^7.10.5", "@babel/preset-env": "^7.9.6", "@rollup/plugin-babel": "^5.0.0", "@rollup/plugin-commonjs": "^11.1.0", diff --git a/src/svelte/pull.js b/src/svelte/pull.js index 1c553c0..9fdec21 100644 --- a/src/svelte/pull.js +++ b/src/svelte/pull.js @@ -3,11 +3,12 @@ import { encode } from 'qss'; /** * Handy sapper fetch wrapper * @memberof Svelte - * @version 1.1.3 + * @version 1.2.0 * @param {string} endpoint api url * @param {object} [params={}] object to convert to query string * @param {boolean} [preload=false] instruction to use sappers preload fetch * @param {boolean} api toggle to opt out of the prepended API_URL env var + * @param {array|boolean} head include headers in return * @returns {object} fetch data in json format */ @@ -15,12 +16,16 @@ export default async function ( endpoint, params = {}, preload = false, - api = true + api = true, + head = false ) { const base = (api && process.env.API_URL) || ''; const url = base + endpoint + encode(params, '?'); - const req = await (preload ? preload.fetch(url) : fetch(url)); - const res = await req.json(); + const res = await (preload ? preload.fetch(url) : fetch(url)); + const json = await res.json(); + const headers = + head && + head.reduce((o, key) => ({ ...o, [key]: res.headers.get(key) }), {}); - return res; + return head ? { headers, json } : json; }