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 1.4.1 to 1.5.0

.travis.yml

106

form-urlencoded.js
// Filename: formurlencoded.js
// Timestamp: 2016.03.07-12:29:28 (last modified)
// Author(s): Bumblehead (www.bumblehead.com), JBlashill (james@blashill.com)
// Author(s): Bumblehead (www.bumblehead.com), JBlashill (james@blashill.com), Jumper423 (jump.e.r@yandex.ru)
//

@@ -8,63 +8,67 @@ // http://www.w3.org/TR/html5/forms.html#url-encoded-form-data

var formurlencoded = module.exports = function (data, opts) {
// ES5 compatible version of `/[^ !'()~\*]/gu`, https://mothereff.in/regexpu
var encodechar = new RegExp([
'(?:[\0-\x1F"-&\+-\}\x7F-\uD7FF\uE000-\uFFFF]|',
'[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|',
'(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])'
].join(''), 'g');
module.exports = function (data, opts) {
"use strict";
opts = typeof opts === 'object' ? opts : {};
function encode (value) {
return String(value)
.replace(encodechar, encodeURIComponent)
.replace(/ /g, '+')
.replace(/[!'()~\*]/g, function (ch) {
return '%' + ch.charCodeAt().toString(16).slice(-2).toUpperCase();
});
}
// ES5 compatible version of `/[^ !'()~\*]/gu`, https://mothereff.in/regexpu
var encodechar = new RegExp([
'(?:[\0-\x1F"-&\+-\}\x7F-\uD7FF\uE000-\uFFFF]|',
'[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|',
'(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])'
].join(''), 'g');
function keys (obj) {
var keys = Object.keys(obj);
opts = typeof opts === 'object' ? opts : {};
return opts.sorted ? keys.sort() : keys;
}
function encode(value) {
return String(value)
.replace(encodechar, encodeURIComponent)
.replace(/ /g, '+')
.replace(/[!'()~\*]/g, function (ch) {
return '%' + ch.charCodeAt().toString(16).slice(-2).toUpperCase();
});
}
function filterjoin (arr) {
return arr.filter(function (e) { return e; }).join('&');
}
function keys(obj) {
var itemsKeys = Object.keys(obj);
function objnest (name, obj) {
return filterjoin(keys(obj).map(function (key) {
return nest(name + '[' + key + ']', obj[key]);
}));
}
return opts.sorted ? itemsKeys.sort() : itemsKeys;
}
function arrnest (name, arr) {
return arr.length ? filterjoin(arr.map(function (elem) {
return nest(name + '[]', elem);
})) : encode(name + '[]');
}
function filterjoin(arr) {
return arr.filter(function (e) {
return e;
}).join('&');
}
function nest (name, value) {
var type = typeof value,
f = null;
function objnest(name, obj) {
return filterjoin(keys(obj).map(function (key) {
return nest(name + '[' + key + ']', obj[key]);
}));
}
if (value === f) {
f = opts.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);
function arrnest(name, arr) {
return arr.length ? filterjoin(arr.map(function (elem, index) {
return nest(name + '[' + index + ']', elem);
})) : encode(name + '[]');
}
return f;
}
function nest(name, value) {
var type = typeof value,
f = null;
return data && filterjoin(keys(data).map(function (key) {
return nest(key, data[key]);
}));
if (value === f) {
f = opts.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);
}
return f;
}
return data && filterjoin(keys(data).map(function (key) {
return nest(key, data[key]);
}));
};
(The MIT License)
Copyright (c) 2012 Bumblehead <chris@bumblehead.com>
Copyright (c) 2012-2017 Bumblehead <chris@bumblehead.com>

@@ -5,0 +5,0 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of

{
"name": "form-urlencoded",
"main": "form-urlencoded",
"version": "1.4.1",
"version": "1.5.0",
"description": "Return an object as an 'x-www-form-urlencoded' string",

@@ -12,2 +12,5 @@ "author": "Chris <chris@bumblehead.com>",

"email": "james@blashill.com"
},{
"name": "Jumper423",
"email": "jump.e.r@yandex.ru"
}],

@@ -14,0 +17,0 @@ "repository": {

form-urlencoded
===============
**(c)[Bumblehead][0],[JBlashill][6] 2012,2013,2014,2015,2016**
**(c)[Bumblehead][0],[JBlashill][6] 2012-2017**
[![npm version](https://badge.fury.io/js/form-urlencoded.svg)](https://badge.fury.io/js/form-urlencoded)
[![npm version](https://badge.fury.io/js/form-urlencoded.svg)](https://badge.fury.io/js/form-urlencoded) [![Build Status](https://travis-ci.org/iambumblehead/form-urlencoded.svg?branch=master)](https://travis-ci.org/iambumblehead/form-urlencoded)

@@ -7,0 +7,0 @@ Returns 'x-www-form-urlencoded' string data, an encoding often used when an [HTML form is submitted][1]. Form data is serialised in [this format][2] and sent to a server.

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

})
).toBe( 'propStr1=str1&propStr2=str2&propArr1%5B%5D=arrStr1&propArr1%5B%5D=arrStr2' );
).toBe( 'propStr1=str1&propStr2=str2&propArr1%5B0%5D=arrStr1&propArr1%5B1%5D=arrStr2' );
});

@@ -61,3 +61,3 @@

}
}) ).toBe( 'propStr1=str1&propStr2=str2&propObj1%5BobjPropStr1%5D=objStr1&propObj1%5BobjPropStr2%5D=objStr2&propObj1%5BobjPropObj1%5D%5BpropObj1Str1%5D=obj1Str1&propObj1%5BobjPropArr1%5D%5B%5D%5BpropArr1Obj1Str1%5D=obj1Str1&propObj1%5BobjPropArr1%5D%5B%5D%5BpropArr1Obj2Str1%5D=obj2Str1' );
}) ).toBe( 'propStr1=str1&propStr2=str2&propObj1%5BobjPropStr1%5D=objStr1&propObj1%5BobjPropStr2%5D=objStr2&propObj1%5BobjPropObj1%5D%5BpropObj1Str1%5D=obj1Str1&propObj1%5BobjPropArr1%5D%5B0%5D%5BpropArr1Obj1Str1%5D=obj1Str1&propObj1%5BobjPropArr1%5D%5B1%5D%5BpropArr1Obj2Str1%5D=obj2Str1' );
});

@@ -68,3 +68,3 @@

formurlencoded({ propArr1 : [1, 2, 3] })
).toBe( 'propArr1%5B%5D=1&propArr1%5B%5D=2&propArr1%5B%5D=3' );
).toBe( 'propArr1%5B0%5D=1&propArr1%5B1%5D=2&propArr1%5B2%5D=3' );
});

@@ -75,3 +75,3 @@

formurlencoded({propArr1 : [true, false, true]})
).toBe( 'propArr1%5B%5D=true&propArr1%5B%5D=false&propArr1%5B%5D=true' );
).toBe( 'propArr1%5B0%5D=true&propArr1%5B1%5D=false&propArr1%5B2%5D=true' );
});

@@ -122,3 +122,3 @@

formurlencoded({propArr1 : [null, null, 1]}, {ignorenull : true})
).toBe( 'propArr1%5B%5D=1' );
).toBe( 'propArr1%5B2%5D=1' );
});

@@ -125,0 +125,0 @@

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