Socket
Socket
Sign inDemoInstall

form-urlencoded

Package Overview
Dependencies
Maintainers
1
Versions
80
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

form-urlencoded - npm Package Compare versions

Comparing version 4.0.1 to 4.1.0

.eslintrc.json

91

dist/form-urlencoded.js
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
value: true
});

@@ -11,48 +11,59 @@

// Timestamp: 2017.07.04-19:19:11 (last modified)
// Author(s): Bumblehead (www.bumblehead.com), JBlashill (james@blashill.com), Jumper423 (jump.e.r@yandex.ru)
exports.default = function (data) {
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
var sorted = Boolean(opts.sorted),
skipIndex = Boolean(opts.skipIndex),
ignorenull = Boolean(opts.ignorenull),
skipBracket = Boolean(opts.skipBracket),
encode = function encode(value) {
return String(value).replace(/(?:[\0-\x1F"-&\+-\}\x7F-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g, encodeURIComponent).replace(/ /g, '+').replace(/[!'()~\*]/g, function (ch) {
return '%' + ch.charCodeAt().toString(16).slice(-2).toUpperCase();
});
},
keys = function keys(obj) {
var keyarr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Object.keys(obj);
return sorted ? keyarr.sort() : keyarr;
},
filterjoin = function filterjoin(arr) {
return arr.filter(function (e) {
return e;
}).join('&');
},
objnest = function objnest(name, obj) {
return filterjoin(keys(obj).map(function (key) {
return nest(name + '[' + key + ']', obj[key]);
}));
},
arrnest = function arrnest(name, arr) {
var brackets = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : skipBracket ? '' : '[]';
return arr.length ? filterjoin(arr.map(function (elem, index) {
return skipIndex ? nest(name + brackets, elem) : nest(name + '[' + index + ']', elem);
})) : encode(name + brackets);
},
nest = function nest(name, value) {
var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : typeof value === 'undefined' ? 'undefined' : _typeof(value);
var f = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
var sorted = Boolean(opts.sorted);
var skipIndex = Boolean(opts.skipIndex);
var ignorenull = Boolean(opts.ignorenull);
var skipBracket = Boolean(opts.skipBracket);
if (value === f) f = ignorenull ? f : encode(name) + '=' + f;else if (/string|number|boolean/.test(type)) f = encode(name) + '=' + encode(value);else if (Array.isArray(value)) f = arrnest(name, value);else if (type === 'object') f = objnest(name, value);
var encode = function encode(value) {
return String(value).replace(/(?:[\0-\x1F"-&\+-\}\x7F-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])/g, encodeURIComponent).replace(/ /g, '+').replace(/[!'()~*]/g, function (ch) {
return '%' + ch.charCodeAt().toString(16).slice(-2).toUpperCase();
});
};
return f;
};
var keys = function keys(obj) {
var keyarr = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Object.keys(obj);
return sorted ? keyarr.sort() : keyarr;
};
return data && filterjoin(keys(data).map(function (key) {
return nest(key, data[key]);
var filterjoin = function filterjoin(arr) {
return arr.filter(function (e) {
return e;
}).join('&');
};
var objnest = function objnest(name, obj) {
return filterjoin(keys(obj).map(function (key) {
return nest(name + '[' + key + ']', obj[key]);
}));
};
var arrnest = function arrnest(name, arr) {
var brackets = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : skipBracket ? '' : '[]';
return arr.length ? filterjoin(arr.map(function (elem, index) {
return skipIndex ? nest(name + brackets, elem) : nest(name + '[' + index + ']', elem);
})) : encode(name + brackets);
};
var setnest = function setnest(name, set) {
return filterjoin(Array.from(set).map(function (elem) {
return nest(name, elem);
}));
};
var nest = function nest(name, value) {
var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : typeof value === 'undefined' ? 'undefined' : _typeof(value);
var f = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
if (value === f) f = ignorenull ? f : encode(name) + '=' + f;else if (/string|number|boolean/.test(type)) f = encode(name) + '=' + encode(value);else if (Array.isArray(value)) f = arrnest(name, value);else if (value instanceof Set) f = setnest(name, value);else if (type === 'object') f = objnest(name, value);
return f;
};
return data && filterjoin(keys(data).map(function (key) {
return nest(key, data[key]);
}));
};
// Filename: formurlencoded.js
// Timestamp: 2017.07.04-19:19:11 (last modified)
// Author(s): Bumblehead (www.bumblehead.com), JBlashill (james@blashill.com), Jumper423 (jump.e.r@yandex.ru)
export default (data, opts = {}) => {
const sorted = Boolean(opts.sorted),
skipIndex = Boolean(opts.skipIndex),
ignorenull = Boolean(opts.ignorenull),
skipBracket = Boolean(opts.skipBracket),
const sorted = Boolean(opts.sorted);
const skipIndex = Boolean(opts.skipIndex);
const ignorenull = Boolean(opts.ignorenull);
const skipBracket = Boolean(opts.skipBracket);
encode = value => String(value)
.replace(/[^ !'()~\*]/gu, encodeURIComponent)
.replace(/ /g, '+')
.replace(/[!'()~\*]/g, ch =>
'%' + ch.charCodeAt().toString(16).slice(-2).toUpperCase()),
const encode = value => String(value)
.replace(/[^ !'()~*]/gu, encodeURIComponent)
.replace(/ /g, '+')
.replace(/[!'()~*]/g, ch =>
`%${ch.charCodeAt().toString(16).slice(-2).toUpperCase()}`);
keys = (obj, keyarr = Object.keys(obj)) =>
sorted ? keyarr.sort() : keyarr,
const keys = (obj, keyarr = Object.keys(obj)) =>
sorted ? keyarr.sort() : keyarr;
filterjoin = arr => arr.filter(e => e).join('&'),
const filterjoin = arr => arr.filter(e => e).join('&');
objnest = (name, obj) =>
filterjoin(keys(obj).map(key =>
nest(name + '[' + key + ']', obj[key]))),
const objnest = (name, obj) =>
filterjoin(keys(obj).map(key =>
nest(`${name}[${key}]`, obj[key])));
arrnest = (name, arr, brackets = skipBracket ? '' : '[]') => arr.length
? filterjoin(arr.map((elem, index) => skipIndex
? nest(name + brackets, elem)
: nest(name + '[' + index + ']', elem)))
: encode(name + brackets),
const arrnest = (name, arr, brackets = skipBracket ? '' : '[]') => arr.length
? filterjoin(arr.map((elem, index) => skipIndex
? nest(name + brackets, elem)
: nest(name + '[' + index + ']', elem)))
: encode(name + brackets);
nest = (name, value, type = typeof value, f = null) => {
if (value === f)
f = ignorenull ? f : encode(name) + '=' + f;
else if (/string|number|boolean/.test(type))
f = encode(name) + '=' + encode(value);
else if (Array.isArray(value))
f = arrnest(name, value);
else if (type === 'object')
f = objnest(name, value);
const setnest = (name, set) => filterjoin(
Array.from(set).map(elem => nest(name, elem)));
return f;
};
const nest = (name, value, type = typeof value, f = null) => {
if (value === f)
f = ignorenull ? f : encode(name) + '=' + f;
else if (/string|number|boolean/.test(type))
f = encode(name) + '=' + encode(value);
else if (Array.isArray(value))
f = arrnest(name, value);
else if (value instanceof Set)
f = setnest(name, value);
else if (type === 'object')
f = objnest(name, value);
return data && filterjoin(keys(data).map(key => nest(key, data[key])));
return f;
};
return data && filterjoin(keys(data).map(key => nest(key, data[key])));
};

@@ -6,3 +6,3 @@ {

"module": "form-urlencoded",
"version": "4.0.1",
"version": "4.1.0",
"description": "Return an object as an 'x-www-form-urlencoded' string",

@@ -49,9 +49,14 @@ "author": "Chris <chris@bumblehead.com>",

"jasmine": "3.4.0",
"jasmine-spec-reporter": "3.2.0"
"jasmine-spec-reporter": "3.2.0",
"eslint": "^6.6.0",
"eslint-config-airbnb-base": "^14.0.0",
"babel-eslint": "^10.0.3",
"eslint-plugin-import": "^2.14.0"
},
"scripts": {
"test": "jasmine",
"lint": "eslint form-urlencoded.js",
"start": "./node_modules/babel-cli/bin/babel.js --plugins transform-es2015-unicode-regex --presets env -d dist/ form-urlencoded.js",
"prepare": "npm start && npm test"
"prepare": "npm start && npm run lint && npm test"
}
}

@@ -18,3 +18,4 @@ form-urlencoded

arr : [3, {prop : false}, 1, null, 6],
obj : {prop1 : null, prop2 : ['elem']}
obj : {prop1 : null, prop2 : ['elem']},
set : new Set([1, 'two'])
};

@@ -25,3 +26,3 @@

// &arr%5B2%5D=1&arr%5B3%5D=null&arr%5B4%5D=6&obj%5Bprop
// 1%5D=null&obj%5Bprop2%5D%5B0%5D=elem
// 1%5D=null&obj%5Bprop2%5D%5B0%5D=elem&set=1&set=two

@@ -35,2 +36,3 @@ console.log(formurlencoded(obj, {

// %5B%5D=6&num=0&obj%5Bprop2%5D%5B%5D=elem&str=val
// &set=1&set=two
```

@@ -37,0 +39,0 @@

@@ -11,3 +11,2 @@ // Filename: form-urlencoded.spec.js

describe("formurlencoded.encode", () => {
var obj = {

@@ -143,2 +142,9 @@ str: 'val',

it("should return encoded set", () =>
expect(
formurlencoded({
set: new Set([1, 'two'])
})
).toBe('set=1&set=two'));
it("should return encoded empty array", () =>

@@ -145,0 +151,0 @@ expect(

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