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.1.3 to 4.1.4

20

dist/form-urlencoded.js

@@ -1,2 +0,2 @@

'use strict';
"use strict";

@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", {

});
exports["default"] = void 0;
var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
exports.default = function (data) {
var _default = function _default(data) {
var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};

@@ -18,6 +19,5 @@ var sorted = opts.sorted,

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 "%".concat(ch.charCodeAt().toString(16).slice(-2).toUpperCase());
});

@@ -39,3 +39,3 @@ };

return filterjoin(keys(obj).map(function (key) {
return useDot ? nest(name + '.' + key, obj[key]) : nest(name + '[' + key + ']', obj[key]);
return useDot ? nest("".concat(name, ".").concat(key), obj[key]) : nest("".concat(name, "[").concat(key, "]"), obj[key]);
}));

@@ -58,7 +58,5 @@ };

var nest = function nest(name, value) {
var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : typeof value === 'undefined' ? 'undefined' : _typeof(value);
var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _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;

@@ -70,2 +68,4 @@ };

}));
};
};
exports["default"] = _default;

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

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

@@ -39,24 +39,19 @@ "author": "Chris <chris@bumblehead.com>",

],
"babel": {
"plugins": [
"babel-plugin-transform-es2015-unicode-regex"
]
},
"devDependencies": {
"babel-cli": "^6.26.0",
"babel-plugin-transform-es2015-unicode-regex": "6.24.1",
"babel-preset-env": "^1.7.0",
"jasmine": "3.4.0",
"jasmine-spec-reporter": "3.2.0",
"@babel/cli": "^7.10.1",
"@babel/core": "^7.10.1",
"@babel/plugin-transform-unicode-regex": "^7.10.1",
"@babel/preset-env": "^7.10.1",
"babel-eslint": "^10.0.3",
"eslint": "^6.6.0",
"eslint-config-airbnb-base": "^14.0.0",
"babel-eslint": "^10.0.3",
"eslint-plugin-import": "^2.14.0"
"eslint-plugin-import": "^2.14.0",
"ava": "^3.8.2"
},
"scripts": {
"test": "jasmine",
"test": "ava",
"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",
"start": "./node_modules/.bin/babel form-urlencoded.js --out-dir dist/ --presets=@babel/env --plugins=@babel/plugin-transform-unicode-regex",
"prepare": "npm start && npm run lint && npm test"
}
}

@@ -1,19 +0,15 @@

// Filename: form-urlencoded.spec.js
// Timestamp: 2017.07.05-02:33:29 (last modified)
// Author(s): bumblehead <chris@bumblehead.com>
const test = require('ava');
const formurlencoded = require('..').default;
var formurlencoded = require('../').default;
// tests assume behaviour not given in ecmascript specification,
// object properties accessed in 'order'
describe("formurlencoded.encode", () => {
var obj = {
str: 'val',
num: 0,
arr: [3, { prop: false }, 1, null, 6],
obj: { prop1: null, prop2: ['elem'] }
};
const obj = {
str : 'val',
num : 0,
arr : [ 3, { prop : false }, 1, null, 6 ],
obj : { prop1 : null, prop2 : [ 'elem' ] }
};
console.log(`
console.log(`
var formurlencoded = require('form-urlencoded');

@@ -37,198 +33,189 @@ var obj = {

${formurlencoded(obj, {
ignorenull: true,
useDot: true,
skipIndex: true,
skipBracket: true
}).match(/(.{1,53})/g).map(n => '// ' + n).join('\n')}`);
ignorenull : true,
skipIndex : true,
sorted : true
}).match(/(.{1,53})/g).map(n => '// ' + n).join('\n')}`);
it("should return encoded data", () =>
expect(
formurlencoded({
propStr1: 'str1',
propStr2: 'str2'
}), { sorted: true }
).toBe('propStr1=str1&propStr2=str2'));
test('return encoded data', t => t.is(
formurlencoded({
propStr1 : 'str1',
propStr2 : 'str2'
}, { sorted : true }),
'propStr1=str1&propStr2=str2'
));
it("should return encoded data, with array properties", () =>
expect(
formurlencoded({
propStr1: 'str1',
propStr2: 'str2',
propArr1: ['arrStr1', 'arrStr2']
})
).toBe('propStr1=str1&propStr2=str2&propArr1%5B0%5D=arrStr1&propArr1%5B1%5D=arrStr2'));
test('return encoded data, with array properties', t => t.is(
formurlencoded({
propStr1 : 'str1',
propStr2 : 'str2',
propArr1 : [ 'arrStr1', 'arrStr2' ]
}),
'propStr1=str1&propStr2=str2&propArr1%5B0%5D=arrStr1&propArr1%5B1%5D=arrStr2'
));
it("should return encoded data, with object properties", () =>
expect(
formurlencoded({
propStr1: 'str1',
propStr2: 'str2',
propObj1: {
objPropStr1: 'objStr1',
objPropStr2: 'objStr2'
}
})
).toBe('propStr1=str1&propStr2=str2&propObj1%5BobjPropStr1%5D=objStr1&propObj1%5BobjPropStr2%5D=objStr2'));
test('return encoded data, with object properties', t => t.is(
formurlencoded({
propStr1 : 'str1',
propStr2 : 'str2',
propObj1 : {
objPropStr1 : 'objStr1',
objPropStr2 : 'objStr2'
}
}),
// eslint-disable-next-line max-len
'propStr1=str1&propStr2=str2&propObj1%5BobjPropStr1%5D=objStr1&propObj1%5BobjPropStr2%5D=objStr2'
));
it("should return encoded data, with mixed object and array properties", () =>
expect(formurlencoded({
propStr1: 'str1',
propStr2: 'str2',
propObj1: {
objPropStr1: 'objStr1',
objPropStr2: 'objStr2',
objPropObj1: {
propObj1Str1: 'obj1Str1'
},
objPropArr1: [{
propArr1Obj1Str1: 'obj1Str1'
}, {
propArr1Obj2Str1: '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'));
test('return encoded data, with mixed object array properties', t => t.is(
formurlencoded({
propStr1 : 'str1',
propStr2 : 'str2',
propObj1 : {
objPropStr1 : 'objStr1',
objPropStr2 : 'objStr2',
objPropObj1 : {
propObj1Str1 : 'obj1Str1'
},
objPropArr1 : [{
propArr1Obj1Str1 : 'obj1Str1'
}, {
propArr1Obj2Str1 : 'obj2Str1'
}]
}
// eslint-disable-next-line max-len
}), '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'));
it("should return encoded data, with numbers", () =>
expect(
formurlencoded({ propArr1: [1, 2, 3] })
).toBe('propArr1%5B0%5D=1&propArr1%5B1%5D=2&propArr1%5B2%5D=3'));
test('return encoded data, with numbers', t => t.is(
formurlencoded({ propArr1 : [1, 2, 3] }),
'propArr1%5B0%5D=1&propArr1%5B1%5D=2&propArr1%5B2%5D=3'));
it("should return encoded data, with booleans", () =>
expect(
formurlencoded({ propArr1: [true, false, true] })
).toBe('propArr1%5B0%5D=true&propArr1%5B1%5D=false&propArr1%5B2%5D=true'));
test('return encoded data, with booleans', t => t.is(
formurlencoded({ propArr1 : [true, false, true] }),
'propArr1%5B0%5D=true&propArr1%5B1%5D=false&propArr1%5B2%5D=true'));
it("should return encoded data, with null", () =>
expect(
formurlencoded({
propNull1: null,
propStr1: 'str1'
})
).toBe('propNull1=null&propStr1=str1'));
test('return encoded data, with null', t => t.is(
formurlencoded({
propNull1 : null,
propStr1 : 'str1'
}), 'propNull1=null&propStr1=str1'));
it("should return encoded data, with properties sorted", () =>
expect(
formurlencoded({ c: 4, b: { z: 3, y: 2 }, a: 1 }, { sorted: true })
).toBe('a=1&b%5By%5D=2&b%5Bz%5D=3&c=4'));
test('return encoded data, with properties sorted', t => t.is(
formurlencoded({ c : 4, b : { z : 3, y : 2 }, a : 1 }, { sorted : true }),
'a=1&b%5By%5D=2&b%5Bz%5D=3&c=4'));
it("should not break when null argument is given", () => {
expect(
formurlencoded(null, { sorted: true })
).toBe(null);
test('not break when null argument is given', t => {
t.is(
formurlencoded(null, { sorted : true }), null);
expect(
formurlencoded(undefined, { sorted: true })
).toBe(undefined);
});
t.is(
formurlencoded(undefined, { sorted : true }), undefined);
});
it("should properly encode all ascii characters", () => {
var testCharEncodingString = "";
for (var i = 0; i < 256; i++) {
testCharEncodingString += String.fromCharCode(i);
}
test('properly encode all ascii characters', t => {
let testCharEncodingString = '';
for (let i = 0; i < 256; i++) {
testCharEncodingString += String.fromCharCode(i);
}
expect(
formurlencoded({
test: testCharEncodingString
})
).toBe(
'test=%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F+%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D%7E%7F%C2%80%C2%81%C2%82%C2%83%C2%84%C2%85%C2%86%C2%87%C2%88%C2%89%C2%8A%C2%8B%C2%8C%C2%8D%C2%8E%C2%8F%C2%90%C2%91%C2%92%C2%93%C2%94%C2%95%C2%96%C2%97%C2%98%C2%99%C2%9A%C2%9B%C2%9C%C2%9D%C2%9E%C2%9F%C2%A0%C2%A1%C2%A2%C2%A3%C2%A4%C2%A5%C2%A6%C2%A7%C2%A8%C2%A9%C2%AA%C2%AB%C2%AC%C2%AD%C2%AE%C2%AF%C2%B0%C2%B1%C2%B2%C2%B3%C2%B4%C2%B5%C2%B6%C2%B7%C2%B8%C2%B9%C2%BA%C2%BB%C2%BC%C2%BD%C2%BE%C2%BF%C3%80%C3%81%C3%82%C3%83%C3%84%C3%85%C3%86%C3%87%C3%88%C3%89%C3%8A%C3%8B%C3%8C%C3%8D%C3%8E%C3%8F%C3%90%C3%91%C3%92%C3%93%C3%94%C3%95%C3%96%C3%97%C3%98%C3%99%C3%9A%C3%9B%C3%9C%C3%9D%C3%9E%C3%9F%C3%A0%C3%A1%C3%A2%C3%A3%C3%A4%C3%A5%C3%A6%C3%A7%C3%A8%C3%A9%C3%AA%C3%AB%C3%AC%C3%AD%C3%AE%C3%AF%C3%B0%C3%B1%C3%B2%C3%B3%C3%B4%C3%B5%C3%B6%C3%B7%C3%B8%C3%B9%C3%BA%C3%BB%C3%BC%C3%BD%C3%BE%C3%BF'
);
});
t.is(
formurlencoded({
test : testCharEncodingString
}),
// eslint-disable-next-line max-len
'test=%00%01%02%03%04%05%06%07%08%09%0A%0B%0C%0D%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F+%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D%7E%7F%C2%80%C2%81%C2%82%C2%83%C2%84%C2%85%C2%86%C2%87%C2%88%C2%89%C2%8A%C2%8B%C2%8C%C2%8D%C2%8E%C2%8F%C2%90%C2%91%C2%92%C2%93%C2%94%C2%95%C2%96%C2%97%C2%98%C2%99%C2%9A%C2%9B%C2%9C%C2%9D%C2%9E%C2%9F%C2%A0%C2%A1%C2%A2%C2%A3%C2%A4%C2%A5%C2%A6%C2%A7%C2%A8%C2%A9%C2%AA%C2%AB%C2%AC%C2%AD%C2%AE%C2%AF%C2%B0%C2%B1%C2%B2%C2%B3%C2%B4%C2%B5%C2%B6%C2%B7%C2%B8%C2%B9%C2%BA%C2%BB%C2%BC%C2%BD%C2%BE%C2%BF%C3%80%C3%81%C3%82%C3%83%C3%84%C3%85%C3%86%C3%87%C3%88%C3%89%C3%8A%C3%8B%C3%8C%C3%8D%C3%8E%C3%8F%C3%90%C3%91%C3%92%C3%93%C3%94%C3%95%C3%96%C3%97%C3%98%C3%99%C3%9A%C3%9B%C3%9C%C3%9D%C3%9E%C3%9F%C3%A0%C3%A1%C3%A2%C3%A3%C3%A4%C3%A5%C3%A6%C3%A7%C3%A8%C3%A9%C3%AA%C3%AB%C3%AC%C3%AD%C3%AE%C3%AF%C3%B0%C3%B1%C3%B2%C3%B3%C3%B4%C3%B5%C3%B6%C3%B7%C3%B8%C3%B9%C3%BA%C3%BB%C3%BC%C3%BD%C3%BE%C3%BF'
);
});
it("should return encoded data, without null", () =>
expect(
formurlencoded({ propArr1: [null, null, 1] }, { ignorenull: true })
).toBe('propArr1%5B2%5D=1'));
test('return encoded data, without null', t => t.is(
formurlencoded({
propArr1 : [ null, null, 1 ]
}, { ignorenull : true }),
'propArr1%5B2%5D=1'
));
it("should return encoded set", () =>
expect(
formurlencoded({
set: new Set([1, 'two'])
})
).toBe('set=1&set=two'));
test('return encoded set', t => t.is(
formurlencoded({
set : new Set([ 1, 'two' ])
}),
'set=1&set=two'
));
it("should return encoded empty array", () =>
expect(
formurlencoded({
emptyArr: []
})
).toBe('emptyArr%5B%5D'));
test('return encoded empty array', t => t.is(
formurlencoded({
emptyArr : []
}), 'emptyArr%5B%5D'
));
it("should return encoded empty array inside an object", () =>
expect(
formurlencoded({
parent: {
foo: 'bar',
emptyArr: []
}
})
).toBe('parent%5Bfoo%5D=bar&parent%5BemptyArr%5D%5B%5D'));
test('return encoded empty array inside an object', t => t.is(
formurlencoded({
parent : {
foo : 'bar',
emptyArr : []
}
}),
'parent%5Bfoo%5D=bar&parent%5BemptyArr%5D%5B%5D'
));
it("should return encoded array inside an object with index", () =>
expect(
formurlencoded({
parent: {
foo: 'bar',
emptyArr: ['first', 'second']
}
})
).toBe('parent%5Bfoo%5D=bar&parent%5BemptyArr%5D%5B0%5D=first&parent%5BemptyArr%5D%5B1%5D=second'));
test('return encoded array inside an object with index', t => t.is(
formurlencoded({
parent : {
foo : 'bar',
emptyArr : ['first', 'second']
}
// eslint-disable-next-line max-len
}), 'parent%5Bfoo%5D=bar&parent%5BemptyArr%5D%5B0%5D=first&parent%5BemptyArr%5D%5B1%5D=second'
));
it("should return encoded array inside an object without index", () =>
expect(
formurlencoded({
parent: {
foo: 'bar',
emptyArr: ['first', 'second']
}
}, { skipIndex: true })
).toBe('parent%5Bfoo%5D=bar&parent%5BemptyArr%5D%5B%5D=first&parent%5BemptyArr%5D%5B%5D=second'));
test('return encoded array inside an object without index', t => t.is(
formurlencoded({
parent : {
foo : 'bar',
emptyArr : [ 'first', 'second' ]
}
}, { skipIndex : true }),
// eslint-disable-next-line max-len
'parent%5Bfoo%5D=bar&parent%5BemptyArr%5D%5B%5D=first&parent%5BemptyArr%5D%5B%5D=second'
));
it("should return array with index", () =>
expect(
formurlencoded({
key: ['val1']
})
).toBe('key%5B0%5D=val1'));
test('return array with index', t => t.is(
formurlencoded({
key : [ 'val1' ]
}),
'key%5B0%5D=val1'
));
it("should return array without index", () =>
expect(
formurlencoded({
key: ['val1']
}, { skipIndex: true })
).toBe('key%5B%5D=val1'));
test('return array without index', t => t.is(
formurlencoded({
key : [ 'val1' ]
}, { skipIndex : true }),
'key%5B%5D=val1'
));
it("should return array name without brackets (when skipBracket is true)", () =>
expect(
formurlencoded({
key: ['val1']
}, { skipIndex: true, skipBracket: true })
).toBe('key=val1'));
test('return array name without brackets (when skipBracket is true)', t => t.is(
formurlencoded({
key : [ 'val1' ]
}, { skipIndex : true, skipBracket : true }),
'key=val1'
));
it("should return nested object with '.' as seperator", () =>
expect(
formurlencoded({
key: [
{
'val1' : 1,
'val2' : 2
},
{
'val3' : 3,
'val4' : 4
}
]
}, { useDot: true })
).toBe('key%5B0%5D.val1=1&key%5B0%5D.val2=2&key%5B1%5D.val3=3&key%5B1%5D.val4=4'));
test('return nested object with "." as seperator', t => t.is(
formurlencoded({
key : [ {
val1 : 1,
val2 : 2
}, {
val3 : 3,
val4 : 4
} ]
}, { useDot : true }),
'key%5B0%5D.val1=1&key%5B0%5D.val2=2&key%5B1%5D.val3=3&key%5B1%5D.val4=4'
));
it("should return encoded urls with unicode characters", () =>
expect(
formurlencoded({
parent: {
foo: '😀'
}
})
).toBe('parent%5Bfoo%5D=%F0%9F%98%80'));
});
test('return encoded urls with unicode characters', t => t.is(
formurlencoded({
parent : {
foo : '😀'
}
}),
'parent%5Bfoo%5D=%F0%9F%98%80'
));
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