Socket
Socket
Sign inDemoInstall

mande

Package Overview
Dependencies
Maintainers
1
Versions
36
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

mande - npm Package Compare versions

Comparing version 0.0.23 to 1.0.0

6

CHANGELOG.md

@@ -0,1 +1,7 @@

# [1.0.0](https://github.com/posva/mande/compare/v0.0.23...v1.0.0) (2021-03-24)
### Bug Fixes
- remove null headers ([#210](https://github.com/posva/mande/issues/210)) ([32fcd3e](https://github.com/posva/mande/commit/32fcd3ec83f6bd07c68e0b25ef5c222dc08b258d))
## [0.0.23](https://github.com/posva/mande/compare/v0.0.22...v0.0.23) (2020-08-10)

@@ -2,0 +8,0 @@

37

dist/mande.common.js
/*!
* mande v0.0.22
* (c) 2020 Eduardo San Martin Morote
* mande v0.0.23
* (c) 2021 Eduardo San Martin Morote
* @license MIT

@@ -21,2 +21,11 @@ */

}
function removeNullishValues(headers) {
return Object.keys(headers).reduce((newHeaders, headerName) => {
if (headers[headerName] != null) {
// @ts-ignore
newHeaders[headerName] = headers[headerName];
}
return newHeaders;
}, {});
}
/**

@@ -63,6 +72,7 @@ * Global default options as {@link Options} that are applied to **all** mande

}
let mergedOptions = Object.assign(Object.assign(Object.assign(Object.assign({}, defaults), instanceOptions), { method }), localOptions);
let mergedOptions = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, defaults), instanceOptions), { method }), localOptions), {
// we need to ditch nullish headers
headers: removeNullishValues(Object.assign(Object.assign(Object.assign({}, defaults.headers), instanceOptions.headers), localOptions.headers)) });
let query = Object.assign(Object.assign(Object.assign({}, defaults.query), instanceOptions.query), localOptions.query);
let { responseAs } = mergedOptions;
mergedOptions.headers = Object.assign(Object.assign(Object.assign({}, defaults.headers), instanceOptions.headers), localOptions.headers);
url = joinURL(baseURL, typeof url === 'number' ? '' + url : url || '');

@@ -95,3 +105,3 @@ // TODO: warn about multiple queries provided not supported

}
const instanceOptions = Object.assign({ headers: {} }, passedInstanceOptions);
const instanceOptions = Object.assign({ query: {}, headers: {} }, passedInstanceOptions);
return {

@@ -107,2 +117,19 @@ options: instanceOptions,

}
/**
* Creates an Nuxt SSR compatible function that automatically proxies cookies
* to requests and works transparently on the server and client (it still
* requires a fetch polyfill on Node).
* @example
* ```js
* import { mande, nuxtWrap } from 'mande'
*
* const fetchPolyfill = process.server ? require('node-fetch') : fetch
* const users = mande(BASE_URL + '/api/users', {}, fetchPolyfill)
*
* export const getUserById = nuxtWrap(users, (api, id: string) => api.get(id))
* ```
*
* @param api - Mande instance to wrap
* @param fn - function to be wrapped
*/
function nuxtWrap(api, fn) {

@@ -109,0 +136,0 @@ // args for the api call + 1 because of api parameter

@@ -27,3 +27,3 @@

*/
export declare function mande(baseURL: string, passedInstanceOptions?: Options, fetchPolyfill?: Window['fetch']): MandeInstance;
export declare function mande(baseURL: string, passedInstanceOptions?: OptionsRaw, fetchPolyfill?: Window['fetch']): MandeInstance;

@@ -45,5 +45,3 @@ /**

*/
options: Options & {
headers: Required<Options>['headers'];
};
options: Required<Pick<OptionsRaw, 'headers'>> & Pick<OptionsRaw, 'responseAs' | 'query'>;
/**

@@ -122,2 +120,19 @@ * Sends a GET request to the given url.

/**
* Creates an Nuxt SSR compatible function that automatically proxies cookies
* to requests and works transparently on the server and client (it still
* requires a fetch polyfill on Node).
* @example
* ```js
* import { mande, nuxtWrap } from 'mande'
*
* const fetchPolyfill = process.server ? require('node-fetch') : fetch
* const users = mande(BASE_URL + '/api/users', {}, fetchPolyfill)
*
* export const getUserById = nuxtWrap(users, (api, id: string) => api.get(id))
* ```
*
* @param api - Mande instance to wrap
* @param fn - function to be wrapped
*/
export declare function nuxtWrap<M extends MandeInstance, F extends (api: M, ...args: any[]) => any>(api: M, fn: F): (...args: InferArgs<F>) => ReturnType<F>;

@@ -144,2 +159,9 @@

export declare interface OptionsRaw extends Omit<Options, 'headers'> {
/**
* Headers sent alongside the request. Set any header to null to remove it.
*/
headers?: Record<string, string | null>;
}
export { }
/*!
* mande v0.0.22
* (c) 2020 Eduardo San Martin Morote
* mande v0.0.23
* (c) 2021 Eduardo San Martin Morote
* @license MIT

@@ -17,2 +17,11 @@ */

}
function removeNullishValues(headers) {
return Object.keys(headers).reduce((newHeaders, headerName) => {
if (headers[headerName] != null) {
// @ts-ignore
newHeaders[headerName] = headers[headerName];
}
return newHeaders;
}, {});
}
/**

@@ -59,6 +68,7 @@ * Global default options as {@link Options} that are applied to **all** mande

}
let mergedOptions = Object.assign(Object.assign(Object.assign(Object.assign({}, defaults), instanceOptions), { method }), localOptions);
let mergedOptions = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, defaults), instanceOptions), { method }), localOptions), {
// we need to ditch nullish headers
headers: removeNullishValues(Object.assign(Object.assign(Object.assign({}, defaults.headers), instanceOptions.headers), localOptions.headers)) });
let query = Object.assign(Object.assign(Object.assign({}, defaults.query), instanceOptions.query), localOptions.query);
let { responseAs } = mergedOptions;
mergedOptions.headers = Object.assign(Object.assign(Object.assign({}, defaults.headers), instanceOptions.headers), localOptions.headers);
url = joinURL(baseURL, typeof url === 'number' ? '' + url : url || '');

@@ -91,3 +101,3 @@ // TODO: warn about multiple queries provided not supported

}
const instanceOptions = Object.assign({ headers: {} }, passedInstanceOptions);
const instanceOptions = Object.assign({ query: {}, headers: {} }, passedInstanceOptions);
return {

@@ -103,2 +113,19 @@ options: instanceOptions,

}
/**
* Creates an Nuxt SSR compatible function that automatically proxies cookies
* to requests and works transparently on the server and client (it still
* requires a fetch polyfill on Node).
* @example
* ```js
* import { mande, nuxtWrap } from 'mande'
*
* const fetchPolyfill = process.server ? require('node-fetch') : fetch
* const users = mande(BASE_URL + '/api/users', {}, fetchPolyfill)
*
* export const getUserById = nuxtWrap(users, (api, id: string) => api.get(id))
* ```
*
* @param api - Mande instance to wrap
* @param fn - function to be wrapped
*/
function nuxtWrap(api, fn) {

@@ -105,0 +132,0 @@ // args for the api call + 1 because of api parameter

6

dist/mande.esm.min.js
/*!
* mande v0.0.22
* (c) 2020 Eduardo San Martin Morote
* mande v0.0.23
* (c) 2021 Eduardo San Martin Morote
* @license MIT
*/
let e=/\/+$/,n=/^\/+/;const t={responseAs:"json",headers:{Accept:"application/json","Content-Type":"application/json"}};function s(s,o={},r){function c(o,r,c,a={}){let u,p;"object"==typeof r?(u="",p=r,a=c||{}):(u=r,p=c);let b=Object.assign(Object.assign(Object.assign(Object.assign({},t),l),{method:o}),a),f=Object.assign(Object.assign(Object.assign({},t.query),l.query),a.query),{responseAs:j}=b;return b.headers=Object.assign(Object.assign(Object.assign({},t.headers),l.headers),a.headers),u=function(t,s){return t.replace(e,"")+"/"+s.replace(n,"")}(s,"number"==typeof u?""+u:u||""),u+=function(e){let n=Object.keys(e).map(n=>[n,e[n]].map(encodeURIComponent).join("=")).join("&");return n?"?"+n:""}(f),p&&(b.body=JSON.stringify(p)),i(u,b).then(e=>Promise.all([e,"response"===j?e:e[j]().catch(()=>null)])).then(([e,n])=>{if(e.status>=200&&e.status<300)return 204==e.status?null:n;let t=new Error(e.statusText);throw t.response=e,t.body=n,t})}const i="undefined"!=typeof fetch?fetch:r;if(!i)throw new Error("No fetch function exists. Make sure to include a polyfill on Node.js.");const l=Object.assign({headers:{}},o);return{options:l,post:c.bind(null,"POST"),put:c.bind(null,"PUT"),patch:c.bind(null,"PATCH"),get:(e,n)=>c("GET",e,null,n),delete:(e,n)=>c("DELETE",e,null,n)}}function o(e,n){const t=n.length;return function(){let s=e,o=Array.from(arguments);if(arguments.length===t){s=Object.assign({},e);const[n]=o.splice(0,1);n(s)}return n.call(null,s,...o)}}export{t as defaults,s as mande,o as nuxtWrap};
let e=/\/+$/,t=/^\/+/;const n={responseAs:"json",headers:{Accept:"application/json","Content-Type":"application/json"}};function s(s,o={},r){function c(o,r,c,a={}){let u,p;"object"==typeof r?(u="",p=r,a=c||{}):(u=r,p=c);let b=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},n),l),{method:o}),a),{headers:(j=Object.assign(Object.assign(Object.assign({},n.headers),l.headers),a.headers),Object.keys(j).reduce(((e,t)=>(null!=j[t]&&(e[t]=j[t]),e)),{}))});var j;let f=Object.assign(Object.assign(Object.assign({},n.query),l.query),a.query),{responseAs:d}=b;return u=function(n,s){return n.replace(e,"")+"/"+s.replace(t,"")}(s,"number"==typeof u?""+u:u||""),u+=function(e){let t=Object.keys(e).map((t=>[t,e[t]].map(encodeURIComponent).join("="))).join("&");return t?"?"+t:""}(f),p&&(b.body=JSON.stringify(p)),i(u,b).then((e=>Promise.all([e,"response"===d?e:e[d]().catch((()=>null))]))).then((([e,t])=>{if(e.status>=200&&e.status<300)return 204==e.status?null:t;let n=new Error(e.statusText);throw n.response=e,n.body=t,n}))}const i="undefined"!=typeof fetch?fetch:r;if(!i)throw new Error("No fetch function exists. Make sure to include a polyfill on Node.js.");const l=Object.assign({query:{},headers:{}},o);return{options:l,post:c.bind(null,"POST"),put:c.bind(null,"PUT"),patch:c.bind(null,"PATCH"),get:(e,t)=>c("GET",e,null,t),delete:(e,t)=>c("DELETE",e,null,t)}}function o(e,t){const n=t.length;return function(){let s=e,o=Array.from(arguments);if(arguments.length===n){s=Object.assign({},e);const[t]=o.splice(0,1);t(s)}return t.call(null,s,...o)}}export{n as defaults,s as mande,o as nuxtWrap};
/*!
* mande v0.0.22
* (c) 2020 Eduardo San Martin Morote
* mande v0.0.23
* (c) 2021 Eduardo San Martin Morote
* @license MIT

@@ -20,2 +20,11 @@ */

}
function removeNullishValues(headers) {
return Object.keys(headers).reduce((newHeaders, headerName) => {
if (headers[headerName] != null) {
// @ts-ignore
newHeaders[headerName] = headers[headerName];
}
return newHeaders;
}, {});
}
/**

@@ -62,6 +71,7 @@ * Global default options as {@link Options} that are applied to **all** mande

}
let mergedOptions = Object.assign(Object.assign(Object.assign(Object.assign({}, defaults), instanceOptions), { method }), localOptions);
let mergedOptions = Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({}, defaults), instanceOptions), { method }), localOptions), {
// we need to ditch nullish headers
headers: removeNullishValues(Object.assign(Object.assign(Object.assign({}, defaults.headers), instanceOptions.headers), localOptions.headers)) });
let query = Object.assign(Object.assign(Object.assign({}, defaults.query), instanceOptions.query), localOptions.query);
let { responseAs } = mergedOptions;
mergedOptions.headers = Object.assign(Object.assign(Object.assign({}, defaults.headers), instanceOptions.headers), localOptions.headers);
url = joinURL(baseURL, typeof url === 'number' ? '' + url : url || '');

@@ -94,3 +104,3 @@ // TODO: warn about multiple queries provided not supported

}
const instanceOptions = Object.assign({ headers: {} }, passedInstanceOptions);
const instanceOptions = Object.assign({ query: {}, headers: {} }, passedInstanceOptions);
return {

@@ -106,2 +116,19 @@ options: instanceOptions,

}
/**
* Creates an Nuxt SSR compatible function that automatically proxies cookies
* to requests and works transparently on the server and client (it still
* requires a fetch polyfill on Node).
* @example
* ```js
* import { mande, nuxtWrap } from 'mande'
*
* const fetchPolyfill = process.server ? require('node-fetch') : fetch
* const users = mande(BASE_URL + '/api/users', {}, fetchPolyfill)
*
* export const getUserById = nuxtWrap(users, (api, id: string) => api.get(id))
* ```
*
* @param api - Mande instance to wrap
* @param fn - function to be wrapped
*/
function nuxtWrap(api, fn) {

@@ -130,4 +157,6 @@ // args for the api call + 1 because of api parameter

Object.defineProperty(exports, '__esModule', { value: true });
return exports;
}({}));
/*!
* mande v0.0.22
* (c) 2020 Eduardo San Martin Morote
* mande v0.0.23
* (c) 2021 Eduardo San Martin Morote
* @license MIT
*/
var Mande=function(e){"use strict";let n=/\/+$/,t=/^\/+/;const s={responseAs:"json",headers:{Accept:"application/json","Content-Type":"application/json"}};return e.defaults=s,e.mande=function(e,o={},r){function c(o,r,c,l={}){let u,p;"object"==typeof r?(u="",p=r,l=c||{}):(u=r,p=c);let f=Object.assign(Object.assign(Object.assign(Object.assign({},s),i),{method:o}),l),d=Object.assign(Object.assign(Object.assign({},s.query),i.query),l.query),{responseAs:b}=f;return f.headers=Object.assign(Object.assign(Object.assign({},s.headers),i.headers),l.headers),u=function(e,s){return e.replace(n,"")+"/"+s.replace(t,"")}(e,"number"==typeof u?""+u:u||""),u+=function(e){let n=Object.keys(e).map(n=>[n,e[n]].map(encodeURIComponent).join("=")).join("&");return n?"?"+n:""}(d),p&&(f.body=JSON.stringify(p)),a(u,f).then(e=>Promise.all([e,"response"===b?e:e[b]().catch(()=>null)])).then(([e,n])=>{if(e.status>=200&&e.status<300)return 204==e.status?null:n;let t=new Error(e.statusText);throw t.response=e,t.body=n,t})}const a="undefined"!=typeof fetch?fetch:r;if(!a)throw new Error("No fetch function exists. Make sure to include a polyfill on Node.js.");const i=Object.assign({headers:{}},o);return{options:i,post:c.bind(null,"POST"),put:c.bind(null,"PUT"),patch:c.bind(null,"PATCH"),get:(e,n)=>c("GET",e,null,n),delete:(e,n)=>c("DELETE",e,null,n)}},e.nuxtWrap=function(e,n){const t=n.length;return function(){let s=e,o=Array.from(arguments);if(arguments.length===t){s=Object.assign({},e);const[n]=o.splice(0,1);n(s)}return n.call(null,s,...o)}},e}({});
var Mande=function(e){"use strict";let t=/\/+$/,n=/^\/+/;const s={responseAs:"json",headers:{Accept:"application/json","Content-Type":"application/json"}};return e.defaults=s,e.mande=function(e,r={},o){function c(r,o,c,l={}){let u,p;"object"==typeof o?(u="",p=o,l=c||{}):(u=o,p=c);let d=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},s),i),{method:r}),l),{headers:(b=Object.assign(Object.assign(Object.assign({},s.headers),i.headers),l.headers),Object.keys(b).reduce(((e,t)=>(null!=b[t]&&(e[t]=b[t]),e)),{}))});var b;let f=Object.assign(Object.assign(Object.assign({},s.query),i.query),l.query),{responseAs:j}=d;return u=function(e,s){return e.replace(t,"")+"/"+s.replace(n,"")}(e,"number"==typeof u?""+u:u||""),u+=function(e){let t=Object.keys(e).map((t=>[t,e[t]].map(encodeURIComponent).join("="))).join("&");return t?"?"+t:""}(f),p&&(d.body=JSON.stringify(p)),a(u,d).then((e=>Promise.all([e,"response"===j?e:e[j]().catch((()=>null))]))).then((([e,t])=>{if(e.status>=200&&e.status<300)return 204==e.status?null:t;let n=new Error(e.statusText);throw n.response=e,n.body=t,n}))}const a="undefined"!=typeof fetch?fetch:o;if(!a)throw new Error("No fetch function exists. Make sure to include a polyfill on Node.js.");const i=Object.assign({query:{},headers:{}},r);return{options:i,post:c.bind(null,"POST"),put:c.bind(null,"PUT"),patch:c.bind(null,"PATCH"),get:(e,t)=>c("GET",e,null,t),delete:(e,t)=>c("DELETE",e,null,t)}},e.nuxtWrap=function(e,t){const n=t.length;return function(){let s=e,r=Array.from(arguments);if(arguments.length===n){s=Object.assign({},e);const[t]=r.splice(0,1);t(s)}return t.call(null,s,...r)}},Object.defineProperty(e,"__esModule",{value:!0}),e}({});
{
"name": "mande",
"version": "0.0.23",
"version": "1.0.0",
"description": "Some awesome description",

@@ -22,3 +22,3 @@ "main": "dist/mande.common.js",

"changelog": "conventional-changelog -p angular -i CHANGELOG.md -s -r 1",
"dev": "yarn run unit --watchAll",
"dev": "yarn run test:unit --watchAll",
"pretest": "yarn run lint",

@@ -76,7 +76,7 @@ "test": "yarn run test:unit && yarn run build",

"rollup-plugin-node-resolve": "^5.2.0",
"rollup-plugin-terser": "^6.1.0",
"rollup-plugin-typescript2": "^0.27.1",
"rollup-plugin-terser": "^7.0.0",
"rollup-plugin-typescript2": "^0.30.0",
"size-limit": "^4.5.0",
"ts-jest": "^26.0.0",
"typescript": "^3.6.3"
"typescript": "^4.0.2"
},

@@ -83,0 +83,0 @@ "repository": {

# mande [![Build Status](https://badgen.net/circleci/github/posva/mande/master)](https://circleci.com/gh/posva/mande) [![npm package](https://badgen.net/npm/v/mande)](https://www.npmjs.com/package/mande) [![coverage](https://badgen.net/codecov/c/github/posva/mande/master)](https://codecov.io/github/posva/mande) [![thanks](https://badgen.net/badge/thanks/♥/pink)](https://github.com/posva/thanks)
> Simple, light and easy to use wrapper around fetch
> Simple, light and extensible wrapper around fetch with smart defaults

@@ -134,2 +134,3 @@ **Requires [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API) support.**

```js
import { mande, nuxtWrap } from 'mande'
const fetchPolyfill = process.server ? require('node-fetch') : fetch

@@ -136,0 +137,0 @@ const users = mande(BASE_URL + '/api/users', {}, fetchPolyfill)

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc