Comparing version 6.2.2 to 6.2.3
@@ -0,1 +1,7 @@ | ||
## **6.2.3** | ||
- [Fix] follow `allowPrototypes` option during merge (#201, #200) | ||
- [Fix] chmod a-x | ||
- [Fix] support keys starting with brackets (#202, #200) | ||
- [Tests] up to `node` `v7.7`, `v6.10`,` v4.8`; disable osx builds since they block linux builds | ||
## **6.2.2** | ||
@@ -2,0 +8,0 @@ - [Fix] ensure that `allowPrototypes: false` does not ever shadow Object.prototype properties |
@@ -99,3 +99,3 @@ (function(f){if(typeof exports==="object"&&typeof module!=="undefined"){module.exports=f()}else if(typeof define==="function"&&define.amd){define([],f)}else{var g;if(typeof window!=="undefined"){g=window}else if(typeof global!=="undefined"){g=global}else if(typeof self!=="undefined"){g=self}else{g=this}g.Qs = f()}})(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ | ||
var parent = /^([^[]*)/; | ||
var brackets = /(\[[^[\]]*])/; | ||
var child = /(\[[^[\]]*])/g; | ||
@@ -105,3 +105,4 @@ | ||
var segment = parent.exec(key); | ||
var segment = brackets.exec(key); | ||
var parent = segment ? key.slice(0, segment.index) : key; | ||
@@ -111,6 +112,6 @@ // Stash the parent if it exists | ||
var keys = []; | ||
if (segment[1]) { | ||
if (parent) { | ||
// If we aren't using plain objects, optionally prefix keys | ||
// that would overwrite object prototype properties | ||
if (!options.plainObjects && has.call(Object.prototype, segment[1])) { | ||
if (!options.plainObjects && has.call(Object.prototype, parent)) { | ||
if (!options.allowPrototypes) { | ||
@@ -121,3 +122,3 @@ return; | ||
keys.push(segment[1]); | ||
keys.push(parent); | ||
} | ||
@@ -335,2 +336,4 @@ | ||
var has = Object.prototype.hasOwnProperty; | ||
exports.arrayToObject = function (source, options) { | ||
@@ -356,3 +359,5 @@ var obj = options.plainObjects ? Object.create(null) : {}; | ||
} else if (typeof target === 'object') { | ||
target[source] = true; | ||
if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) { | ||
target[source] = true; | ||
} | ||
} else { | ||
@@ -377,3 +382,3 @@ return [target, source]; | ||
if (Object.prototype.hasOwnProperty.call(acc, key)) { | ||
if (has.call(acc, key)) { | ||
acc[key] = exports.merge(acc[key], value, options); | ||
@@ -380,0 +385,0 @@ } else { |
@@ -87,3 +87,3 @@ 'use strict'; | ||
var parent = /^([^[]*)/; | ||
var brackets = /(\[[^[\]]*])/; | ||
var child = /(\[[^[\]]*])/g; | ||
@@ -93,3 +93,4 @@ | ||
var segment = parent.exec(key); | ||
var segment = brackets.exec(key); | ||
var parent = segment ? key.slice(0, segment.index) : key; | ||
@@ -99,6 +100,6 @@ // Stash the parent if it exists | ||
var keys = []; | ||
if (segment[1]) { | ||
if (parent) { | ||
// If we aren't using plain objects, optionally prefix keys | ||
// that would overwrite object prototype properties | ||
if (!options.plainObjects && has.call(Object.prototype, segment[1])) { | ||
if (!options.plainObjects && has.call(Object.prototype, parent)) { | ||
if (!options.allowPrototypes) { | ||
@@ -109,3 +110,3 @@ return; | ||
keys.push(segment[1]); | ||
keys.push(parent); | ||
} | ||
@@ -112,0 +113,0 @@ |
@@ -12,2 +12,4 @@ 'use strict'; | ||
var has = Object.prototype.hasOwnProperty; | ||
exports.arrayToObject = function (source, options) { | ||
@@ -33,3 +35,5 @@ var obj = options.plainObjects ? Object.create(null) : {}; | ||
} else if (typeof target === 'object') { | ||
target[source] = true; | ||
if (options.plainObjects || options.allowPrototypes || !has.call(Object.prototype, source)) { | ||
target[source] = true; | ||
} | ||
} else { | ||
@@ -54,3 +58,3 @@ return [target, source]; | ||
if (Object.prototype.hasOwnProperty.call(acc, key)) { | ||
if (has.call(acc, key)) { | ||
acc[key] = exports.merge(acc[key], value, options); | ||
@@ -57,0 +61,0 @@ } else { |
@@ -5,3 +5,3 @@ { | ||
"homepage": "https://github.com/ljharb/qs", | ||
"version": "6.2.2", | ||
"version": "6.2.3", | ||
"repository": { | ||
@@ -8,0 +8,0 @@ "type": "git", |
@@ -146,4 +146,2 @@ 'use strict'; | ||
t.deepEqual(qs.parse('a[b]=c&a=d'), { a: { b: 'c', d: true } }, 'can add keys to objects'); | ||
t.test('correctly prunes undefined values when converting an array to an object', function (st) { | ||
@@ -434,6 +432,43 @@ st.deepEqual(qs.parse('a[2]=b&a[99999999]=c'), { a: { '2': 'b', '99999999': 'c' } }); | ||
st.deepEqual(qs.parse(']=toString'), { ']': 'toString' }); | ||
st.deepEqual(qs.parse(']]=toString'), { ']]': 'toString' }); | ||
st.deepEqual(qs.parse(']hello]=toString'), { ']hello]': 'toString' }); | ||
st.end(); | ||
}); | ||
t.test('can return plain objects', function (st) { | ||
t.test('params starting with a starting bracket', function (st) { | ||
st.deepEqual(qs.parse('[=toString'), { '[': 'toString' }); | ||
st.deepEqual(qs.parse('[[=toString'), { '[[': 'toString' }); | ||
st.deepEqual(qs.parse('[hello[=toString'), { '[hello[': 'toString' }); | ||
st.end(); | ||
}); | ||
t.test('add keys to objects', function (st) { | ||
st.deepEqual( | ||
qs.parse('a[b]=c&a=d'), | ||
{ a: { b: 'c', d: true } }, | ||
'can add keys to objects' | ||
); | ||
st.deepEqual( | ||
qs.parse('a[b]=c&a=toString'), | ||
{ a: { b: 'c' } }, | ||
'can not overwrite prototype' | ||
); | ||
st.deepEqual( | ||
qs.parse('a[b]=c&a=toString', { allowPrototypes: true }), | ||
{ a: { b: 'c', toString: true } }, | ||
'can overwrite prototype with allowPrototypes true' | ||
); | ||
st.deepEqual( | ||
qs.parse('a[b]=c&a=toString', { plainObjects: true }), | ||
{ a: { b: 'c', toString: true } }, | ||
'can overwrite prototype with plainObjects true' | ||
); | ||
st.end(); | ||
}); | ||
t.test('can return null objects', { skip: !Object.create }, function (st) { | ||
var expected = Object.create(null); | ||
@@ -440,0 +475,0 @@ expected.a = Object.create(null); |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
85314
1480