qs 6.1.3 → 6.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nyc_output/1822e37208f8ddf8a5a1fbca19530afd.json +1 -0
- package/.nyc_output/df674434f0523b341fb8957fc9158867.json +1 -0
- package/CHANGELOG.md +5 -0
- package/coverage/coverage-final.json +9 -9
- package/coverage/index.html +26 -26
- package/coverage/lib/formats.js.html +1 -1
- package/coverage/lib/index.html +25 -25
- package/coverage/lib/index.js.html +1 -1
- package/coverage/lib/parse.js.html +144 -366
- package/coverage/lib/stringify.js.html +49 -49
- package/coverage/lib/utils.js.html +112 -328
- package/coverage/test/empty-keys-cases.js.html +1 -1
- package/coverage/test/index.html +23 -23
- package/coverage/test/parse.js.html +50 -998
- package/coverage/test/stringify.js.html +21 -15
- package/coverage/test/utils.js.html +6 -747
- package/dist/qs.js +1 -1
- package/lib/parse.js +1 -1
- package/package.json +14 -4
- package/test/parse.js +9 -0
- package/.nyc_output/029de7ebb4082eaaba62a345c454be63.json +0 -1
- package/.nyc_output/e616cdc4199f5d1583ad7e3c74346432.json +0 -1
- package/.travis.yml +0 -173
- package/bower.json +0 -21
- package/component.json +0 -15
|
@@ -20,24 +20,24 @@
|
|
|
20
20
|
</h1>
|
|
21
21
|
<div class='clearfix'>
|
|
22
22
|
<div class='fl pad1y space-right2'>
|
|
23
|
-
<span class="strong">99.
|
|
23
|
+
<span class="strong">99.83% </span>
|
|
24
24
|
<span class="quiet">Statements</span>
|
|
25
|
-
<span class='fraction'>
|
|
25
|
+
<span class='fraction'>590/591</span>
|
|
26
26
|
</div>
|
|
27
27
|
<div class='fl pad1y space-right2'>
|
|
28
|
-
<span class="strong">
|
|
28
|
+
<span class="strong">91.67% </span>
|
|
29
29
|
<span class="quiet">Branches</span>
|
|
30
|
-
<span class='fraction'>
|
|
30
|
+
<span class='fraction'>11/12</span>
|
|
31
31
|
</div>
|
|
32
32
|
<div class='fl pad1y space-right2'>
|
|
33
33
|
<span class="strong">100% </span>
|
|
34
34
|
<span class="quiet">Functions</span>
|
|
35
|
-
<span class='fraction'>
|
|
35
|
+
<span class='fraction'>136/136</span>
|
|
36
36
|
</div>
|
|
37
37
|
<div class='fl pad1y space-right2'>
|
|
38
|
-
<span class="strong">99.
|
|
38
|
+
<span class="strong">99.83% </span>
|
|
39
39
|
<span class="quiet">Lines</span>
|
|
40
|
-
<span class='fraction'>
|
|
40
|
+
<span class='fraction'>590/591</span>
|
|
41
41
|
</div>
|
|
42
42
|
</div>
|
|
43
43
|
</div>
|
|
@@ -1239,323 +1239,7 @@
|
|
|
1239
1239
|
1194
|
|
1240
1240
|
1195
|
|
1241
1241
|
1196
|
|
1242
|
-
1197
|
|
1243
|
-
1198
|
|
1244
|
-
1199
|
|
1245
|
-
1200
|
|
1246
|
-
1201
|
|
1247
|
-
1202
|
|
1248
|
-
1203
|
|
1249
|
-
1204
|
|
1250
|
-
1205
|
|
1251
|
-
1206
|
|
1252
|
-
1207
|
|
1253
|
-
1208
|
|
1254
|
-
1209
|
|
1255
|
-
1210
|
|
1256
|
-
1211
|
|
1257
|
-
1212
|
|
1258
|
-
1213
|
|
1259
|
-
1214
|
|
1260
|
-
1215
|
|
1261
|
-
1216
|
|
1262
|
-
1217
|
|
1263
|
-
1218
|
|
1264
|
-
1219
|
|
1265
|
-
1220
|
|
1266
|
-
1221
|
|
1267
|
-
1222
|
|
1268
|
-
1223
|
|
1269
|
-
1224
|
|
1270
|
-
1225
|
|
1271
|
-
1226
|
|
1272
|
-
1227
|
|
1273
|
-
1228
|
|
1274
|
-
1229
|
|
1275
|
-
1230
|
|
1276
|
-
1231
|
|
1277
|
-
1232
|
|
1278
|
-
1233
|
|
1279
|
-
1234
|
|
1280
|
-
1235
|
|
1281
|
-
1236
|
|
1282
|
-
1237
|
|
1283
|
-
1238
|
|
1284
|
-
1239
|
|
1285
|
-
1240
|
|
1286
|
-
1241
|
|
1287
|
-
1242
|
|
1288
|
-
1243
|
|
1289
|
-
1244
|
|
1290
|
-
1245
|
|
1291
|
-
1246
|
|
1292
|
-
1247
|
|
1293
|
-
1248
|
|
1294
|
-
1249
|
|
1295
|
-
1250
|
|
1296
|
-
1251
|
|
1297
|
-
1252
|
|
1298
|
-
1253
|
|
1299
|
-
1254
|
|
1300
|
-
1255
|
|
1301
|
-
1256
|
|
1302
|
-
1257
|
|
1303
|
-
1258
|
|
1304
|
-
1259
|
|
1305
|
-
1260
|
|
1306
|
-
1261
|
|
1307
|
-
1262
|
|
1308
|
-
1263
|
|
1309
|
-
1264
|
|
1310
|
-
1265
|
|
1311
|
-
1266
|
|
1312
|
-
1267
|
|
1313
|
-
1268
|
|
1314
|
-
1269
|
|
1315
|
-
1270
|
|
1316
|
-
1271
|
|
1317
|
-
1272
|
|
1318
|
-
1273
|
|
1319
|
-
1274
|
|
1320
|
-
1275
|
|
1321
|
-
1276
|
|
1322
|
-
1277
|
|
1323
|
-
1278
|
|
1324
|
-
1279
|
|
1325
|
-
1280
|
|
1326
|
-
1281
|
|
1327
|
-
1282
|
|
1328
|
-
1283
|
|
1329
|
-
1284
|
|
1330
|
-
1285
|
|
1331
|
-
1286
|
|
1332
|
-
1287
|
|
1333
|
-
1288
|
|
1334
|
-
1289
|
|
1335
|
-
1290
|
|
1336
|
-
1291
|
|
1337
|
-
1292
|
|
1338
|
-
1293
|
|
1339
|
-
1294
|
|
1340
|
-
1295
|
|
1341
|
-
1296
|
|
1342
|
-
1297
|
|
1343
|
-
1298
|
|
1344
|
-
1299
|
|
1345
|
-
1300
|
|
1346
|
-
1301
|
|
1347
|
-
1302
|
|
1348
|
-
1303
|
|
1349
|
-
1304
|
|
1350
|
-
1305
|
|
1351
|
-
1306
|
|
1352
|
-
1307
|
|
1353
|
-
1308
|
|
1354
|
-
1309
|
|
1355
|
-
1310
|
|
1356
|
-
1311
|
|
1357
|
-
1312
|
|
1358
|
-
1313
|
|
1359
|
-
1314
|
|
1360
|
-
1315
|
|
1361
|
-
1316
|
|
1362
|
-
1317
|
|
1363
|
-
1318
|
|
1364
|
-
1319
|
|
1365
|
-
1320
|
|
1366
|
-
1321
|
|
1367
|
-
1322
|
|
1368
|
-
1323
|
|
1369
|
-
1324
|
|
1370
|
-
1325
|
|
1371
|
-
1326
|
|
1372
|
-
1327
|
|
1373
|
-
1328
|
|
1374
|
-
1329
|
|
1375
|
-
1330
|
|
1376
|
-
1331
|
|
1377
|
-
1332
|
|
1378
|
-
1333
|
|
1379
|
-
1334
|
|
1380
|
-
1335
|
|
1381
|
-
1336
|
|
1382
|
-
1337
|
|
1383
|
-
1338
|
|
1384
|
-
1339
|
|
1385
|
-
1340
|
|
1386
|
-
1341
|
|
1387
|
-
1342
|
|
1388
|
-
1343
|
|
1389
|
-
1344
|
|
1390
|
-
1345
|
|
1391
|
-
1346
|
|
1392
|
-
1347
|
|
1393
|
-
1348
|
|
1394
|
-
1349
|
|
1395
|
-
1350
|
|
1396
|
-
1351
|
|
1397
|
-
1352
|
|
1398
|
-
1353
|
|
1399
|
-
1354
|
|
1400
|
-
1355
|
|
1401
|
-
1356
|
|
1402
|
-
1357
|
|
1403
|
-
1358
|
|
1404
|
-
1359
|
|
1405
|
-
1360
|
|
1406
|
-
1361
|
|
1407
|
-
1362
|
|
1408
|
-
1363
|
|
1409
|
-
1364
|
|
1410
|
-
1365
|
|
1411
|
-
1366
|
|
1412
|
-
1367
|
|
1413
|
-
1368
|
|
1414
|
-
1369
|
|
1415
|
-
1370
|
|
1416
|
-
1371
|
|
1417
|
-
1372
|
|
1418
|
-
1373
|
|
1419
|
-
1374
|
|
1420
|
-
1375
|
|
1421
|
-
1376
|
|
1422
|
-
1377
|
|
1423
|
-
1378
|
|
1424
|
-
1379
|
|
1425
|
-
1380
|
|
1426
|
-
1381
|
|
1427
|
-
1382
|
|
1428
|
-
1383
|
|
1429
|
-
1384
|
|
1430
|
-
1385
|
|
1431
|
-
1386
|
|
1432
|
-
1387
|
|
1433
|
-
1388
|
|
1434
|
-
1389
|
|
1435
|
-
1390
|
|
1436
|
-
1391
|
|
1437
|
-
1392
|
|
1438
|
-
1393
|
|
1439
|
-
1394
|
|
1440
|
-
1395
|
|
1441
|
-
1396
|
|
1442
|
-
1397
|
|
1443
|
-
1398
|
|
1444
|
-
1399
|
|
1445
|
-
1400
|
|
1446
|
-
1401
|
|
1447
|
-
1402
|
|
1448
|
-
1403
|
|
1449
|
-
1404
|
|
1450
|
-
1405
|
|
1451
|
-
1406
|
|
1452
|
-
1407
|
|
1453
|
-
1408
|
|
1454
|
-
1409
|
|
1455
|
-
1410
|
|
1456
|
-
1411
|
|
1457
|
-
1412
|
|
1458
|
-
1413
|
|
1459
|
-
1414
|
|
1460
|
-
1415
|
|
1461
|
-
1416
|
|
1462
|
-
1417
|
|
1463
|
-
1418
|
|
1464
|
-
1419
|
|
1465
|
-
1420
|
|
1466
|
-
1421
|
|
1467
|
-
1422
|
|
1468
|
-
1423
|
|
1469
|
-
1424
|
|
1470
|
-
1425
|
|
1471
|
-
1426
|
|
1472
|
-
1427
|
|
1473
|
-
1428
|
|
1474
|
-
1429
|
|
1475
|
-
1430
|
|
1476
|
-
1431
|
|
1477
|
-
1432
|
|
1478
|
-
1433
|
|
1479
|
-
1434
|
|
1480
|
-
1435
|
|
1481
|
-
1436
|
|
1482
|
-
1437
|
|
1483
|
-
1438
|
|
1484
|
-
1439
|
|
1485
|
-
1440
|
|
1486
|
-
1441
|
|
1487
|
-
1442
|
|
1488
|
-
1443
|
|
1489
|
-
1444
|
|
1490
|
-
1445
|
|
1491
|
-
1446
|
|
1492
|
-
1447
|
|
1493
|
-
1448
|
|
1494
|
-
1449
|
|
1495
|
-
1450
|
|
1496
|
-
1451
|
|
1497
|
-
1452
|
|
1498
|
-
1453
|
|
1499
|
-
1454
|
|
1500
|
-
1455
|
|
1501
|
-
1456
|
|
1502
|
-
1457
|
|
1503
|
-
1458
|
|
1504
|
-
1459
|
|
1505
|
-
1460
|
|
1506
|
-
1461
|
|
1507
|
-
1462
|
|
1508
|
-
1463
|
|
1509
|
-
1464
|
|
1510
|
-
1465
|
|
1511
|
-
1466
|
|
1512
|
-
1467
|
|
1513
|
-
1468
|
|
1514
|
-
1469
|
|
1515
|
-
1470
|
|
1516
|
-
1471
|
|
1517
|
-
1472
|
|
1518
|
-
1473
|
|
1519
|
-
1474
|
|
1520
|
-
1475
|
|
1521
|
-
1476
|
|
1522
|
-
1477
|
|
1523
|
-
1478
|
|
1524
|
-
1479
|
|
1525
|
-
1480
|
|
1526
|
-
1481
|
|
1527
|
-
1482
|
|
1528
|
-
1483
|
|
1529
|
-
1484
|
|
1530
|
-
1485
|
|
1531
|
-
1486
|
|
1532
|
-
1487
|
|
1533
|
-
1488
|
|
1534
|
-
1489
|
|
1535
|
-
1490
|
|
1536
|
-
1491
|
|
1537
|
-
1492
|
|
1538
|
-
1493
|
|
1539
|
-
1494
|
|
1540
|
-
1495
|
|
1541
|
-
1496
|
|
1542
|
-
1497
|
|
1543
|
-
1498
|
|
1544
|
-
1499
|
|
1545
|
-
1500
|
|
1546
|
-
1501
|
|
1547
|
-
1502
|
|
1548
|
-
1503
|
|
1549
|
-
1504
|
|
1550
|
-
1505
|
|
1551
|
-
1506
|
|
1552
|
-
1507
|
|
1553
|
-
1508
|
|
1554
|
-
1509
|
|
1555
|
-
1510
|
|
1556
|
-
1511
|
|
1557
|
-
1512
|
|
1558
|
-
1513</td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
1242
|
+
1197</td><td class="line-coverage quiet"><span class="cline-any cline-neutral"> </span>
|
|
1559
1243
|
<span class="cline-any cline-neutral"> </span>
|
|
1560
1244
|
<span class="cline-any cline-yes">1x</span>
|
|
1561
1245
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -1766,6 +1450,15 @@
|
|
|
1766
1450
|
<span class="cline-any cline-neutral"> </span>
|
|
1767
1451
|
<span class="cline-any cline-yes">1x</span>
|
|
1768
1452
|
<span class="cline-any cline-yes">1x</span>
|
|
1453
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1454
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1455
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1456
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1457
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1458
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1459
|
+
<span class="cline-any cline-neutral"> </span>
|
|
1460
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1461
|
+
<span class="cline-any cline-yes">1x</span>
|
|
1769
1462
|
<span class="cline-any cline-yes">1x</span>
|
|
1770
1463
|
<span class="cline-any cline-yes">1x</span>
|
|
1771
1464
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2555,20 +2248,6 @@
|
|
|
2555
2248
|
<span class="cline-any cline-neutral"> </span>
|
|
2556
2249
|
<span class="cline-any cline-yes">1x</span>
|
|
2557
2250
|
<span class="cline-any cline-yes">1x</span>
|
|
2558
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2559
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2560
|
-
<span class="cline-any cline-yes">3x</span>
|
|
2561
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2562
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2563
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2564
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2565
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2566
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2567
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2568
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2569
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2570
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2571
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2572
2251
|
<span class="cline-any cline-yes">1x</span>
|
|
2573
2252
|
<span class="cline-any cline-neutral"> </span>
|
|
2574
2253
|
<span class="cline-any cline-neutral"> </span>
|
|
@@ -2607,138 +2286,6 @@
|
|
|
2607
2286
|
<span class="cline-any cline-neutral"> </span>
|
|
2608
2287
|
<span class="cline-any cline-neutral"> </span>
|
|
2609
2288
|
<span class="cline-any cline-yes">1x</span>
|
|
2610
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2611
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2612
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2613
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2614
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2615
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2616
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2617
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2618
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2619
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2620
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2621
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2622
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2623
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2624
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2625
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2626
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2627
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2628
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2629
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2630
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2631
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2632
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2633
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2634
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2635
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2636
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2637
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2638
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2639
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2640
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2641
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2642
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2643
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2644
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2645
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2646
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2647
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2648
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2649
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2650
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2651
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2652
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2653
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2654
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2655
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2656
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2657
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2658
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2659
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2660
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2661
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2662
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2663
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2664
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2665
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2666
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2667
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2668
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2669
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2670
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2671
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2672
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2673
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2674
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2675
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2676
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2677
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2678
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2679
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2680
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2681
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2682
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2683
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2684
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2685
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2686
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2687
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2688
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2689
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2690
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2691
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2692
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2693
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2694
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2695
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2696
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2697
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2698
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2699
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2700
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2701
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2702
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2703
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2704
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2705
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2706
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2707
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2708
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2709
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2710
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2711
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2712
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2713
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2714
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2715
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2716
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2717
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2718
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2719
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2720
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2721
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2722
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2723
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2724
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2725
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2726
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2727
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2728
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2729
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2730
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2731
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2732
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2733
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2734
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2735
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2736
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2737
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2738
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2739
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2740
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2741
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2742
2289
|
<span class="cline-any cline-neutral"> </span>
|
|
2743
2290
|
<span class="cline-any cline-neutral"> </span>
|
|
2744
2291
|
<span class="cline-any cline-yes">1x</span>
|
|
@@ -2888,185 +2435,6 @@
|
|
|
2888
2435
|
<span class="cline-any cline-yes">1x</span>
|
|
2889
2436
|
<span class="cline-any cline-neutral"> </span>
|
|
2890
2437
|
<span class="cline-any cline-neutral"> </span>
|
|
2891
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2892
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2893
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2894
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2895
|
-
<span class="cline-any cline-yes">105x</span>
|
|
2896
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2897
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2898
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2899
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2900
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2901
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2902
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2903
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2904
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2905
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2906
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2907
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2908
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2909
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2910
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2911
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2912
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2913
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2914
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2915
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2916
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2917
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2918
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2919
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2920
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2921
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2922
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2923
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2924
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2925
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2926
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2927
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2928
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2929
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2930
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2931
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2932
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2933
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2934
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2935
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2936
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2937
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2938
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2939
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2940
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2941
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2942
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2943
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2944
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2945
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2946
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2947
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2948
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2949
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2950
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2951
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2952
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2953
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2954
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2955
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2956
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2957
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2958
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2959
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2960
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2961
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2962
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2963
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2964
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2965
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2966
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2967
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2968
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2969
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2970
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2971
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2972
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2973
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2974
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2975
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2976
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2977
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2978
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2979
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2980
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2981
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2982
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2983
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2984
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2985
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2986
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2987
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2988
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2989
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2990
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2991
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2992
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2993
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2994
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2995
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2996
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2997
|
-
<span class="cline-any cline-neutral"> </span>
|
|
2998
|
-
<span class="cline-any cline-yes">1x</span>
|
|
2999
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3000
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3001
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3002
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3003
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3004
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3005
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3006
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3007
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3008
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3009
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3010
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3011
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3012
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3013
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3014
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3015
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3016
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3017
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3018
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3019
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3020
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3021
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3022
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3023
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3024
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3025
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3026
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3027
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3028
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3029
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3030
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3031
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3032
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3033
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3034
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3035
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3036
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3037
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3038
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3039
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3040
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3041
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3042
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3043
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3044
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3045
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3046
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3047
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3048
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3049
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3050
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3051
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3052
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3053
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3054
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3055
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3056
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3057
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3058
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3059
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3060
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3061
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3062
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3063
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3064
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3065
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3066
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3067
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3068
|
-
<span class="cline-any cline-yes">1x</span>
|
|
3069
|
-
<span class="cline-any cline-neutral"> </span>
|
|
3070
2438
|
<span class="cline-any cline-neutral"> </span></td><td class="text"><pre class="prettyprint lang-js">'use strict';
|
|
3071
2439
|
|
|
3072
2440
|
var test = require('tape');
|
|
@@ -3187,7 +2555,7 @@ test('parse()', function (t) {
|
|
|
3187
2555
|
st.end();
|
|
3188
2556
|
});
|
|
3189
2557
|
|
|
3190
|
-
t.test('
|
|
2558
|
+
t.test('should decode dot in key of object, and allow enabling dot notation when decodeDotInKeys is set to true and allowDots is undefined', function (st) {
|
|
3191
2559
|
st.deepEqual(
|
|
3192
2560
|
qs.parse(
|
|
3193
2561
|
'name%252Eobj%252Esubobject.first%252Egodly%252Ename=John&name%252Eobj%252Esubobject.last=Doe',
|
|
@@ -3200,7 +2568,7 @@ test('parse()', function (t) {
|
|
|
3200
2568
|
st.end();
|
|
3201
2569
|
});
|
|
3202
2570
|
|
|
3203
|
-
t.test('
|
|
2571
|
+
t.test('should throw when decodeDotInKeys is not of type boolean', function (st) {
|
|
3204
2572
|
st['throws'](
|
|
3205
2573
|
function () { qs.parse('foo[]&bar=baz', { decodeDotInKeys: 'foobar' }); },
|
|
3206
2574
|
TypeError
|
|
@@ -3230,7 +2598,7 @@ test('parse()', function (t) {
|
|
|
3230
2598
|
st.end();
|
|
3231
2599
|
});
|
|
3232
2600
|
|
|
3233
|
-
t.test('
|
|
2601
|
+
t.test('should throw when allowEmptyArrays is not of type boolean', function (st) {
|
|
3234
2602
|
st['throws'](
|
|
3235
2603
|
function () { qs.parse('foo[]&bar=baz', { allowEmptyArrays: 'foobar' }); },
|
|
3236
2604
|
TypeError
|
|
@@ -3275,6 +2643,15 @@ test('parse()', function (t) {
|
|
|
3275
2643
|
st.deepEqual(qs.parse('a[b][c][d]=e', { depth: 1 }), { a: { b: { '[c][d]': 'e' } } });
|
|
3276
2644
|
st.end();
|
|
3277
2645
|
});
|
|
2646
|
+
|
|
2647
|
+
t.test('correctly computes the remainder when depth is exceeded', function (st) {
|
|
2648
|
+
st.deepEqual(
|
|
2649
|
+
qs.parse('a[b][c][d][e]=f', { depth: 2 }),
|
|
2650
|
+
{ a: { b: { c: { '[d][e]': 'f' } } } },
|
|
2651
|
+
'the remainder is "[d][e]", not the full original key'
|
|
2652
|
+
);
|
|
2653
|
+
st.end();
|
|
2654
|
+
});
|
|
3278
2655
|
|
|
3279
2656
|
t.test('uses original key when depth = 0', function (st) {
|
|
3280
2657
|
st.deepEqual(qs.parse('a[0]=b&a[1]=c', { depth: 0 }), { 'a[0]': 'b', 'a[1]': 'c' });
|
|
@@ -3304,11 +2681,11 @@ test('parse()', function (t) {
|
|
|
3304
2681
|
st.deepEqual(qs.parse('a=b&a[0]=c'), { a: ['b', 'c'] });
|
|
3305
2682
|
|
|
3306
2683
|
st.deepEqual(qs.parse('a[1]=b&a=c', { arrayLimit: 20 }), { a: ['b', 'c'] });
|
|
3307
|
-
st.deepEqual(qs.parse('a[]=b&a=c', { arrayLimit: 0 }), { a:
|
|
2684
|
+
st.deepEqual(qs.parse('a[]=b&a=c', { arrayLimit: 0 }), { a: ['b', 'c'] });
|
|
3308
2685
|
st.deepEqual(qs.parse('a[]=b&a=c'), { a: ['b', 'c'] });
|
|
3309
2686
|
|
|
3310
2687
|
st.deepEqual(qs.parse('a=b&a[1]=c', { arrayLimit: 20 }), { a: ['b', 'c'] });
|
|
3311
|
-
st.deepEqual(qs.parse('a=b&a[]=c', { arrayLimit: 0 }), { a:
|
|
2688
|
+
st.deepEqual(qs.parse('a=b&a[]=c', { arrayLimit: 0 }), { a: ['b', 'c'] });
|
|
3312
2689
|
st.deepEqual(qs.parse('a=b&a[]=c'), { a: ['b', 'c'] });
|
|
3313
2690
|
|
|
3314
2691
|
st.end();
|
|
@@ -3330,11 +2707,11 @@ test('parse()', function (t) {
|
|
|
3330
2707
|
});
|
|
3331
2708
|
|
|
3332
2709
|
t.test('limits specific array indices to arrayLimit', function (st) {
|
|
3333
|
-
st.deepEqual(qs.parse('a[
|
|
3334
|
-
st.deepEqual(qs.parse('a[
|
|
2710
|
+
st.deepEqual(qs.parse('a[20]=a', { arrayLimit: 20 }), { a: ['a'] });
|
|
2711
|
+
st.deepEqual(qs.parse('a[21]=a', { arrayLimit: 20 }), { a: { 21: 'a' } });
|
|
3335
2712
|
|
|
3336
|
-
st.deepEqual(qs.parse('a[
|
|
3337
|
-
st.deepEqual(qs.parse('a[
|
|
2713
|
+
st.deepEqual(qs.parse('a[20]=a'), { a: ['a'] });
|
|
2714
|
+
st.deepEqual(qs.parse('a[21]=a'), { a: { 21: 'a' } });
|
|
3338
2715
|
st.end();
|
|
3339
2716
|
});
|
|
3340
2717
|
|
|
@@ -3433,7 +2810,7 @@ test('parse()', function (t) {
|
|
|
3433
2810
|
);
|
|
3434
2811
|
st.deepEqual(
|
|
3435
2812
|
qs.parse('a[]=b&a[]&a[]=c&a[]=', { strictNullHandling: true, arrayLimit: 0 }),
|
|
3436
|
-
{ a:
|
|
2813
|
+
{ a: ['b', null, 'c', ''] },
|
|
3437
2814
|
'with arrayLimit 0 + array brackets: null then empty string works'
|
|
3438
2815
|
);
|
|
3439
2816
|
|
|
@@ -3444,7 +2821,7 @@ test('parse()', function (t) {
|
|
|
3444
2821
|
);
|
|
3445
2822
|
st.deepEqual(
|
|
3446
2823
|
qs.parse('a[]=b&a[]=&a[]=c&a[]', { strictNullHandling: true, arrayLimit: 0 }),
|
|
3447
|
-
{ a:
|
|
2824
|
+
{ a: ['b', '', 'c', null] },
|
|
3448
2825
|
'with arrayLimit 0 + array brackets: empty string then null works'
|
|
3449
2826
|
);
|
|
3450
2827
|
|
|
@@ -3513,7 +2890,7 @@ test('parse()', function (t) {
|
|
|
3513
2890
|
st.end();
|
|
3514
2891
|
});
|
|
3515
2892
|
|
|
3516
|
-
t.test('
|
|
2893
|
+
t.test('should not throw when a native prototype has an enumerable property', function (st) {
|
|
3517
2894
|
st.intercept(Object.prototype, 'crash', { value: '' });
|
|
3518
2895
|
st.intercept(Array.prototype, 'crash', { value: '' });
|
|
3519
2896
|
|
|
@@ -3552,7 +2929,7 @@ test('parse()', function (t) {
|
|
|
3552
2929
|
|
|
3553
2930
|
t.test('allows overriding array limit', function (st) {
|
|
3554
2931
|
st.deepEqual(qs.parse('a[0]=b', { arrayLimit: -1 }), { a: { 0: 'b' } });
|
|
3555
|
-
st.deepEqual(qs.parse('a[0]=b', { arrayLimit: 0 }), { a:
|
|
2932
|
+
st.deepEqual(qs.parse('a[0]=b', { arrayLimit: 0 }), { a: ['b'] });
|
|
3556
2933
|
|
|
3557
2934
|
st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: -1 }), { a: { '-1': 'b' } });
|
|
3558
2935
|
st.deepEqual(qs.parse('a[-1]=b', { arrayLimit: 0 }), { a: { '-1': 'b' } });
|
|
@@ -4034,7 +3411,7 @@ test('parse()', function (t) {
|
|
|
4034
3411
|
st.end();
|
|
4035
3412
|
});
|
|
4036
3413
|
|
|
4037
|
-
t.test('
|
|
3414
|
+
t.test('should ignore an utf8 sentinel with an unknown value', function (st) {
|
|
4038
3415
|
st.deepEqual(qs.parse('utf8=foo&' + urlEncodedOSlashInUtf8 + '=' + urlEncodedOSlashInUtf8, { charsetSentinel: true, charset: 'utf-8' }), { ø: 'ø' });
|
|
4039
3416
|
st.end();
|
|
4040
3417
|
});
|
|
@@ -4064,20 +3441,6 @@ test('parse()', function (t) {
|
|
|
4064
3441
|
}), { foo: null, bar: '☺' });
|
|
4065
3442
|
st.end();
|
|
4066
3443
|
});
|
|
4067
|
-
|
|
4068
|
-
t.test('handles a custom decoder returning `null`, with a string key of `null`', function (st) {
|
|
4069
|
-
st.deepEqual(
|
|
4070
|
-
qs.parse('null=1&ToNull=2', {
|
|
4071
|
-
decoder: function (str, defaultDecoder, charset) {
|
|
4072
|
-
return str === 'ToNull' ? null : defaultDecoder(str, defaultDecoder, charset);
|
|
4073
|
-
}
|
|
4074
|
-
}),
|
|
4075
|
-
{ 'null': '1' },
|
|
4076
|
-
'"null" key is not overridden by `null` decoder result'
|
|
4077
|
-
);
|
|
4078
|
-
|
|
4079
|
-
st.end();
|
|
4080
|
-
});
|
|
4081
3444
|
|
|
4082
3445
|
t.test('does not interpret numeric entities in iso-8859-1 when `interpretNumericEntities` is absent', function (st) {
|
|
4083
3446
|
st.deepEqual(qs.parse('foo=' + urlEncodedNumSmiley, { charset: 'iso-8859-1' }), { foo: '&#9786;' });
|
|
@@ -4117,138 +3480,6 @@ test('parse()', function (t) {
|
|
|
4117
3480
|
st.deepEqual(qs.parse('KeY=vAlUe', { decoder: decoder }), { key: 'VALUE' });
|
|
4118
3481
|
st.end();
|
|
4119
3482
|
});
|
|
4120
|
-
|
|
4121
|
-
t.test('parameter limit tests', function (st) {
|
|
4122
|
-
st.test('does not throw error when within parameter limit', function (sst) {
|
|
4123
|
-
var result = qs.parse('a=1&b=2&c=3', { parameterLimit: 5, throwOnLimitExceeded: true });
|
|
4124
|
-
sst.deepEqual(result, { a: '1', b: '2', c: '3' }, 'parses without errors');
|
|
4125
|
-
sst.end();
|
|
4126
|
-
});
|
|
4127
|
-
|
|
4128
|
-
st.test('throws error when throwOnLimitExceeded is present but not boolean', function (sst) {
|
|
4129
|
-
sst['throws'](
|
|
4130
|
-
function () {
|
|
4131
|
-
qs.parse('a=1&b=2&c=3&d=4&e=5&f=6', { parameterLimit: 3, throwOnLimitExceeded: 'true' });
|
|
4132
|
-
},
|
|
4133
|
-
new TypeError('`throwOnLimitExceeded` option must be a boolean'),
|
|
4134
|
-
'throws error when throwOnLimitExceeded is present and not boolean'
|
|
4135
|
-
);
|
|
4136
|
-
sst.end();
|
|
4137
|
-
});
|
|
4138
|
-
|
|
4139
|
-
st.test('throws error when parameter limit exceeded', function (sst) {
|
|
4140
|
-
sst['throws'](
|
|
4141
|
-
function () {
|
|
4142
|
-
qs.parse('a=1&b=2&c=3&d=4&e=5&f=6', { parameterLimit: 3, throwOnLimitExceeded: true });
|
|
4143
|
-
},
|
|
4144
|
-
new RangeError('Parameter limit exceeded. Only 3 parameters allowed.'),
|
|
4145
|
-
'throws error when parameter limit is exceeded'
|
|
4146
|
-
);
|
|
4147
|
-
sst.end();
|
|
4148
|
-
});
|
|
4149
|
-
|
|
4150
|
-
st.test('silently truncates when throwOnLimitExceeded is not given', function (sst) {
|
|
4151
|
-
var result = qs.parse('a=1&b=2&c=3&d=4&e=5', { parameterLimit: 3 });
|
|
4152
|
-
sst.deepEqual(result, { a: '1', b: '2', c: '3' }, 'parses and truncates silently');
|
|
4153
|
-
sst.end();
|
|
4154
|
-
});
|
|
4155
|
-
|
|
4156
|
-
st.test('silently truncates when parameter limit exceeded without error', function (sst) {
|
|
4157
|
-
var result = qs.parse('a=1&b=2&c=3&d=4&e=5', { parameterLimit: 3, throwOnLimitExceeded: false });
|
|
4158
|
-
sst.deepEqual(result, { a: '1', b: '2', c: '3' }, 'parses and truncates silently');
|
|
4159
|
-
sst.end();
|
|
4160
|
-
});
|
|
4161
|
-
|
|
4162
|
-
st.test('allows unlimited parameters when parameterLimit set to Infinity', function (sst) {
|
|
4163
|
-
var result = qs.parse('a=1&b=2&c=3&d=4&e=5&f=6', { parameterLimit: Infinity });
|
|
4164
|
-
sst.deepEqual(result, { a: '1', b: '2', c: '3', d: '4', e: '5', f: '6' }, 'parses all parameters without truncation');
|
|
4165
|
-
sst.end();
|
|
4166
|
-
});
|
|
4167
|
-
|
|
4168
|
-
st.end();
|
|
4169
|
-
});
|
|
4170
|
-
|
|
4171
|
-
t.test('array limit tests', function (st) {
|
|
4172
|
-
st.test('does not throw error when array is within limit', function (sst) {
|
|
4173
|
-
var result = qs.parse('a[]=1&a[]=2&a[]=3', { arrayLimit: 5, throwOnLimitExceeded: true });
|
|
4174
|
-
sst.deepEqual(result, { a: ['1', '2', '3'] }, 'parses array without errors');
|
|
4175
|
-
sst.end();
|
|
4176
|
-
});
|
|
4177
|
-
|
|
4178
|
-
st.test('throws error when throwOnLimitExceeded is present but not boolean for array limit', function (sst) {
|
|
4179
|
-
sst['throws'](
|
|
4180
|
-
function () {
|
|
4181
|
-
qs.parse('a[]=1&a[]=2&a[]=3&a[]=4', { arrayLimit: 3, throwOnLimitExceeded: 'true' });
|
|
4182
|
-
},
|
|
4183
|
-
new TypeError('`throwOnLimitExceeded` option must be a boolean'),
|
|
4184
|
-
'throws error when throwOnLimitExceeded is present and not boolean for array limit'
|
|
4185
|
-
);
|
|
4186
|
-
sst.end();
|
|
4187
|
-
});
|
|
4188
|
-
|
|
4189
|
-
st.test('throws error when array limit exceeded', function (sst) {
|
|
4190
|
-
// 4 elements exceeds limit of 3
|
|
4191
|
-
sst['throws'](
|
|
4192
|
-
function () {
|
|
4193
|
-
qs.parse('a[]=1&a[]=2&a[]=3&a[]=4', { arrayLimit: 3, throwOnLimitExceeded: true });
|
|
4194
|
-
},
|
|
4195
|
-
new RangeError('Array limit exceeded. Only 3 elements allowed in an array.'),
|
|
4196
|
-
'throws error when array limit is exceeded'
|
|
4197
|
-
);
|
|
4198
|
-
sst.end();
|
|
4199
|
-
});
|
|
4200
|
-
|
|
4201
|
-
st.test('does not throw when at limit', function (sst) {
|
|
4202
|
-
// 3 elements = limit of 3, should not throw
|
|
4203
|
-
var result = qs.parse('a[]=1&a[]=2&a[]=3', { arrayLimit: 3, throwOnLimitExceeded: true });
|
|
4204
|
-
sst.ok(Array.isArray(result.a), 'result is an array');
|
|
4205
|
-
sst.deepEqual(result.a, ['1', '2', '3'], 'all values present');
|
|
4206
|
-
sst.end();
|
|
4207
|
-
});
|
|
4208
|
-
|
|
4209
|
-
st.test('converts array to object if length is greater than limit', function (sst) {
|
|
4210
|
-
var result = qs.parse('a[1]=1&a[2]=2&a[3]=3&a[4]=4&a[5]=5&a[6]=6', { arrayLimit: 5 });
|
|
4211
|
-
|
|
4212
|
-
sst.deepEqual(result, { a: { 1: '1', 2: '2', 3: '3', 4: '4', 5: '5', 6: '6' } }, 'parses into object if array length is greater than limit');
|
|
4213
|
-
sst.end();
|
|
4214
|
-
});
|
|
4215
|
-
|
|
4216
|
-
st.test('throws error when indexed notation exceeds arrayLimit with throwOnLimitExceeded', function (sst) {
|
|
4217
|
-
sst['throws'](
|
|
4218
|
-
function () {
|
|
4219
|
-
qs.parse('a[1001]=b', { arrayLimit: 1000, throwOnLimitExceeded: true });
|
|
4220
|
-
},
|
|
4221
|
-
new RangeError('Array limit exceeded. Only 1000 elements allowed in an array.'),
|
|
4222
|
-
'throws error for a single index exceeding arrayLimit'
|
|
4223
|
-
);
|
|
4224
|
-
|
|
4225
|
-
sst['throws'](
|
|
4226
|
-
function () {
|
|
4227
|
-
qs.parse('a[0]=1&a[1]=2&a[2]=3&a[10]=4', { arrayLimit: 6, throwOnLimitExceeded: true, allowSparse: true });
|
|
4228
|
-
},
|
|
4229
|
-
new RangeError('Array limit exceeded. Only 6 elements allowed in an array.'),
|
|
4230
|
-
'throws error when a sparse index exceeds arrayLimit'
|
|
4231
|
-
);
|
|
4232
|
-
|
|
4233
|
-
sst.end();
|
|
4234
|
-
});
|
|
4235
|
-
|
|
4236
|
-
st.test('does not throw for indexed notation within arrayLimit with throwOnLimitExceeded', function (sst) {
|
|
4237
|
-
var result = qs.parse('a[4]=b', { arrayLimit: 5, throwOnLimitExceeded: true, allowSparse: true });
|
|
4238
|
-
sst.ok(Array.isArray(result.a), 'result is an array');
|
|
4239
|
-
sst.equal(result.a.length, 5, 'array has correct length');
|
|
4240
|
-
sst.equal(result.a[4], 'b', 'value at index 4 is correct');
|
|
4241
|
-
sst.end();
|
|
4242
|
-
});
|
|
4243
|
-
|
|
4244
|
-
st.test('silently converts to object for indexed notation exceeding arrayLimit without throwOnLimitExceeded', function (sst) {
|
|
4245
|
-
var result = qs.parse('a[1001]=b', { arrayLimit: 1000 });
|
|
4246
|
-
sst.deepEqual(result, { a: { 1001: 'b' } }, 'converts to object without throwing');
|
|
4247
|
-
sst.end();
|
|
4248
|
-
});
|
|
4249
|
-
|
|
4250
|
-
st.end();
|
|
4251
|
-
});
|
|
4252
3483
|
|
|
4253
3484
|
t.end();
|
|
4254
3485
|
});
|
|
@@ -4308,7 +3539,7 @@ test('qs strictDepth option - throw cases', function (t) {
|
|
|
4308
3539
|
qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1, strictDepth: true });
|
|
4309
3540
|
},
|
|
4310
3541
|
RangeError,
|
|
4311
|
-
'
|
|
3542
|
+
'Should throw RangeError'
|
|
4312
3543
|
);
|
|
4313
3544
|
st.end();
|
|
4314
3545
|
});
|
|
@@ -4319,7 +3550,7 @@ test('qs strictDepth option - throw cases', function (t) {
|
|
|
4319
3550
|
qs.parse('a[0][1][2][3][4]=b', { depth: 3, strictDepth: true });
|
|
4320
3551
|
},
|
|
4321
3552
|
RangeError,
|
|
4322
|
-
'
|
|
3553
|
+
'Should throw RangeError'
|
|
4323
3554
|
);
|
|
4324
3555
|
st.end();
|
|
4325
3556
|
});
|
|
@@ -4330,7 +3561,7 @@ test('qs strictDepth option - throw cases', function (t) {
|
|
|
4330
3561
|
qs.parse('a[b][c][0][d][e]=f', { depth: 3, strictDepth: true });
|
|
4331
3562
|
},
|
|
4332
3563
|
RangeError,
|
|
4333
|
-
'
|
|
3564
|
+
'Should throw RangeError'
|
|
4334
3565
|
);
|
|
4335
3566
|
st.end();
|
|
4336
3567
|
});
|
|
@@ -4341,7 +3572,7 @@ test('qs strictDepth option - throw cases', function (t) {
|
|
|
4341
3572
|
qs.parse('a[b][c][d][e]=true&a[b][c][d][f]=42', { depth: 3, strictDepth: true });
|
|
4342
3573
|
},
|
|
4343
3574
|
RangeError,
|
|
4344
|
-
'
|
|
3575
|
+
'Should throw RangeError'
|
|
4345
3576
|
);
|
|
4346
3577
|
st.end();
|
|
4347
3578
|
});
|
|
@@ -4355,7 +3586,7 @@ test('qs strictDepth option - non-throw cases', function (t) {
|
|
|
4355
3586
|
qs.parse('a[b][c][d][e]=true&a[b][c][d][f]=42', { depth: 0, strictDepth: true });
|
|
4356
3587
|
},
|
|
4357
3588
|
RangeError,
|
|
4358
|
-
'
|
|
3589
|
+
'Should not throw RangeError'
|
|
4359
3590
|
);
|
|
4360
3591
|
st.end();
|
|
4361
3592
|
});
|
|
@@ -4364,7 +3595,7 @@ test('qs strictDepth option - non-throw cases', function (t) {
|
|
|
4364
3595
|
st.doesNotThrow(
|
|
4365
3596
|
function () {
|
|
4366
3597
|
var result = qs.parse('a[b]=c', { depth: 1, strictDepth: true });
|
|
4367
|
-
st.deepEqual(result, { a: { b: 'c' } }, '
|
|
3598
|
+
st.deepEqual(result, { a: { b: 'c' } }, 'Should parse correctly');
|
|
4368
3599
|
}
|
|
4369
3600
|
);
|
|
4370
3601
|
st.end();
|
|
@@ -4374,7 +3605,7 @@ test('qs strictDepth option - non-throw cases', function (t) {
|
|
|
4374
3605
|
st.doesNotThrow(
|
|
4375
3606
|
function () {
|
|
4376
3607
|
var result = qs.parse('a[b][c][d][e][f][g][h][i]=j', { depth: 1 });
|
|
4377
|
-
st.deepEqual(result, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }, '
|
|
3608
|
+
st.deepEqual(result, { a: { b: { '[c][d][e][f][g][h][i]': 'j' } } }, 'Should parse with depth limit');
|
|
4378
3609
|
}
|
|
4379
3610
|
);
|
|
4380
3611
|
st.end();
|
|
@@ -4384,7 +3615,7 @@ test('qs strictDepth option - non-throw cases', function (t) {
|
|
|
4384
3615
|
st.doesNotThrow(
|
|
4385
3616
|
function () {
|
|
4386
3617
|
var result = qs.parse('a[b]=c', { depth: 1 });
|
|
4387
|
-
st.deepEqual(result, { a: { b: 'c' } }, '
|
|
3618
|
+
st.deepEqual(result, { a: { b: 'c' } }, 'Should parse correctly');
|
|
4388
3619
|
}
|
|
4389
3620
|
);
|
|
4390
3621
|
st.end();
|
|
@@ -4394,198 +3625,19 @@ test('qs strictDepth option - non-throw cases', function (t) {
|
|
|
4394
3625
|
st.doesNotThrow(
|
|
4395
3626
|
function () {
|
|
4396
3627
|
var result = qs.parse('a[b][c]=d', { depth: 2, strictDepth: true });
|
|
4397
|
-
st.deepEqual(result, { a: { b: { c: 'd' } } }, '
|
|
3628
|
+
st.deepEqual(result, { a: { b: { c: 'd' } } }, 'Should parse correctly');
|
|
4398
3629
|
}
|
|
4399
3630
|
);
|
|
4400
3631
|
st.end();
|
|
4401
3632
|
});
|
|
4402
3633
|
});
|
|
4403
|
-
|
|
4404
|
-
test('DOS', function (t) {
|
|
4405
|
-
var arr = [];
|
|
4406
|
-
for (var i = 0; i < 105; i++) {
|
|
4407
|
-
arr[arr.length] = 'x';
|
|
4408
|
-
}
|
|
4409
|
-
var attack = 'a[]=' + arr.join('&a[]=');
|
|
4410
|
-
var result = qs.parse(attack, { arrayLimit: 100 });
|
|
4411
|
-
|
|
4412
|
-
t.notOk(Array.isArray(result.a), 'arrayLimit is respected: result is an object, not an array');
|
|
4413
|
-
t.equal(Object.keys(result.a).length, 105, 'all values are preserved');
|
|
4414
|
-
|
|
4415
|
-
t.end();
|
|
4416
|
-
});
|
|
4417
|
-
|
|
4418
|
-
test('arrayLimit boundary conditions', function (t) {
|
|
4419
|
-
// arrayLimit is the max number of elements allowed in an array
|
|
4420
|
-
t.test('exactly at the limit stays as array', function (st) {
|
|
4421
|
-
// 3 elements = limit of 3
|
|
4422
|
-
var result = qs.parse('a[]=1&a[]=2&a[]=3', { arrayLimit: 3 });
|
|
4423
|
-
st.ok(Array.isArray(result.a), 'result is an array when count equals limit');
|
|
4424
|
-
st.deepEqual(result.a, ['1', '2', '3'], 'all values present');
|
|
4425
|
-
st.end();
|
|
4426
|
-
});
|
|
4427
|
-
|
|
4428
|
-
t.test('one over the limit converts to object', function (st) {
|
|
4429
|
-
// 4 elements exceeds limit of 3
|
|
4430
|
-
var result = qs.parse('a[]=1&a[]=2&a[]=3&a[]=4', { arrayLimit: 3 });
|
|
4431
|
-
st.notOk(Array.isArray(result.a), 'result is not an array when over limit');
|
|
4432
|
-
st.deepEqual(result.a, { 0: '1', 1: '2', 2: '3', 3: '4' }, 'all values preserved as object');
|
|
4433
|
-
st.end();
|
|
4434
|
-
});
|
|
4435
|
-
|
|
4436
|
-
t.test('arrayLimit 1 with one value', function (st) {
|
|
4437
|
-
// 1 element = limit of 1
|
|
4438
|
-
var result = qs.parse('a[]=1', { arrayLimit: 1 });
|
|
4439
|
-
st.ok(Array.isArray(result.a), 'result is an array when count equals limit');
|
|
4440
|
-
st.deepEqual(result.a, ['1'], 'value preserved as array');
|
|
4441
|
-
st.end();
|
|
4442
|
-
});
|
|
4443
|
-
|
|
4444
|
-
t.test('arrayLimit 1 with two values converts to object', function (st) {
|
|
4445
|
-
// 2 elements exceeds limit of 1
|
|
4446
|
-
var result = qs.parse('a[]=1&a[]=2', { arrayLimit: 1 });
|
|
4447
|
-
st.notOk(Array.isArray(result.a), 'result is not an array');
|
|
4448
|
-
st.deepEqual(result.a, { 0: '1', 1: '2' }, 'all values preserved as object');
|
|
4449
|
-
st.end();
|
|
4450
|
-
});
|
|
4451
|
-
|
|
4452
|
-
t.end();
|
|
4453
|
-
});
|
|
4454
|
-
|
|
4455
|
-
test('comma + arrayLimit', function (t) {
|
|
4456
|
-
t.test('comma-separated values within arrayLimit stay as array', function (st) {
|
|
4457
|
-
var result = qs.parse('a=1,2,3', { comma: true, arrayLimit: 5 });
|
|
4458
|
-
st.ok(Array.isArray(result.a), 'result is an array');
|
|
4459
|
-
st.deepEqual(result.a, ['1', '2', '3'], 'all values present');
|
|
4460
|
-
st.end();
|
|
4461
|
-
});
|
|
4462
|
-
|
|
4463
|
-
t.test('comma-separated values exceeding arrayLimit convert to object', function (st) {
|
|
4464
|
-
var result = qs.parse('a=1,2,3,4', { comma: true, arrayLimit: 2 });
|
|
4465
|
-
st.notOk(Array.isArray(result.a), 'result is not an array when over limit');
|
|
4466
|
-
st.deepEqual(result.a, { 0: '1', 1: '2', 2: '3', 3: '4' }, 'all values preserved as object');
|
|
4467
|
-
st.end();
|
|
4468
|
-
});
|
|
4469
|
-
|
|
4470
|
-
t.test('comma-separated values exceeding arrayLimit with throwOnLimitExceeded throws', function (st) {
|
|
4471
|
-
st['throws'](
|
|
4472
|
-
function () {
|
|
4473
|
-
qs.parse('a=1,2,3,4', { comma: true, arrayLimit: 2, throwOnLimitExceeded: true });
|
|
4474
|
-
},
|
|
4475
|
-
new RangeError('Array limit exceeded. Only 2 elements allowed in an array.'),
|
|
4476
|
-
'throws error when comma-split exceeds array limit'
|
|
4477
|
-
);
|
|
4478
|
-
st.end();
|
|
4479
|
-
});
|
|
4480
|
-
|
|
4481
|
-
t.test('comma-separated values at exactly arrayLimit stay as array', function (st) {
|
|
4482
|
-
var result = qs.parse('a=1,2,3', { comma: true, arrayLimit: 3 });
|
|
4483
|
-
st.ok(Array.isArray(result.a), 'result is an array when exactly at limit');
|
|
4484
|
-
st.deepEqual(result.a, ['1', '2', '3'], 'all values present');
|
|
4485
|
-
st.end();
|
|
4486
|
-
});
|
|
4487
|
-
|
|
4488
|
-
t.end();
|
|
4489
|
-
});
|
|
4490
|
-
|
|
4491
|
-
test('mixed array and object notation', function (t) {
|
|
4492
|
-
t.test('array brackets with object key - under limit', function (st) {
|
|
4493
|
-
st.deepEqual(
|
|
4494
|
-
qs.parse('a[]=b&a[c]=d'),
|
|
4495
|
-
{ a: { 0: 'b', c: 'd' } },
|
|
4496
|
-
'mixing [] and [key] converts to object'
|
|
4497
|
-
);
|
|
4498
|
-
st.end();
|
|
4499
|
-
});
|
|
4500
|
-
|
|
4501
|
-
t.test('array index with object key - under limit', function (st) {
|
|
4502
|
-
st.deepEqual(
|
|
4503
|
-
qs.parse('a[0]=b&a[c]=d'),
|
|
4504
|
-
{ a: { 0: 'b', c: 'd' } },
|
|
4505
|
-
'mixing [0] and [key] produces object'
|
|
4506
|
-
);
|
|
4507
|
-
st.end();
|
|
4508
|
-
});
|
|
4509
|
-
|
|
4510
|
-
t.test('plain value with array brackets - under limit', function (st) {
|
|
4511
|
-
st.deepEqual(
|
|
4512
|
-
qs.parse('a=b&a[]=c', { arrayLimit: 20 }),
|
|
4513
|
-
{ a: ['b', 'c'] },
|
|
4514
|
-
'plain value combined with [] stays as array under limit'
|
|
4515
|
-
);
|
|
4516
|
-
st.end();
|
|
4517
|
-
});
|
|
4518
|
-
|
|
4519
|
-
t.test('array brackets with plain value - under limit', function (st) {
|
|
4520
|
-
st.deepEqual(
|
|
4521
|
-
qs.parse('a[]=b&a=c', { arrayLimit: 20 }),
|
|
4522
|
-
{ a: ['b', 'c'] },
|
|
4523
|
-
'[] combined with plain value stays as array under limit'
|
|
4524
|
-
);
|
|
4525
|
-
st.end();
|
|
4526
|
-
});
|
|
4527
|
-
|
|
4528
|
-
t.test('plain value with array index - under limit', function (st) {
|
|
4529
|
-
st.deepEqual(
|
|
4530
|
-
qs.parse('a=b&a[0]=c', { arrayLimit: 20 }),
|
|
4531
|
-
{ a: ['b', 'c'] },
|
|
4532
|
-
'plain value combined with [0] stays as array under limit'
|
|
4533
|
-
);
|
|
4534
|
-
st.end();
|
|
4535
|
-
});
|
|
4536
|
-
|
|
4537
|
-
t.test('multiple plain values with duplicates combine', function (st) {
|
|
4538
|
-
st.deepEqual(
|
|
4539
|
-
qs.parse('a=b&a=c&a=d', { arrayLimit: 20 }),
|
|
4540
|
-
{ a: ['b', 'c', 'd'] },
|
|
4541
|
-
'duplicate plain keys combine into array'
|
|
4542
|
-
);
|
|
4543
|
-
st.end();
|
|
4544
|
-
});
|
|
4545
|
-
|
|
4546
|
-
t.test('multiple plain values exceeding limit', function (st) {
|
|
4547
|
-
// 3 elements (indices 0-2), max index 2 > limit 1
|
|
4548
|
-
st.deepEqual(
|
|
4549
|
-
qs.parse('a=b&a=c&a=d', { arrayLimit: 1 }),
|
|
4550
|
-
{ a: { 0: 'b', 1: 'c', 2: 'd' } },
|
|
4551
|
-
'duplicate plain keys convert to object when exceeding limit'
|
|
4552
|
-
);
|
|
4553
|
-
st.end();
|
|
4554
|
-
});
|
|
4555
|
-
|
|
4556
|
-
t.test('mixed notation produces consistent results when arrayLimit is exceeded', function (st) {
|
|
4557
|
-
var expected = { a: { 0: 'b', 1: 'c', 2: 'd' } };
|
|
4558
|
-
|
|
4559
|
-
st.deepEqual(
|
|
4560
|
-
qs.parse('a[]=b&a[1]=c&a=d', { arrayLimit: -1 }),
|
|
4561
|
-
expected,
|
|
4562
|
-
'arrayLimit -1'
|
|
4563
|
-
);
|
|
4564
|
-
|
|
4565
|
-
st.deepEqual(
|
|
4566
|
-
qs.parse('a[]=b&a[1]=c&a=d', { arrayLimit: 0 }),
|
|
4567
|
-
expected,
|
|
4568
|
-
'arrayLimit 0'
|
|
4569
|
-
);
|
|
4570
|
-
|
|
4571
|
-
st.deepEqual(
|
|
4572
|
-
qs.parse('a[]=b&a[1]=c&a=d', { arrayLimit: 1 }),
|
|
4573
|
-
expected,
|
|
4574
|
-
'arrayLimit 1'
|
|
4575
|
-
);
|
|
4576
|
-
|
|
4577
|
-
st.end();
|
|
4578
|
-
});
|
|
4579
|
-
|
|
4580
|
-
t.end();
|
|
4581
|
-
});
|
|
4582
3634
|
</pre></td></tr>
|
|
4583
3635
|
</table></pre>
|
|
4584
3636
|
<div class='push'></div><!-- for sticky footer -->
|
|
4585
3637
|
</div><!-- /wrapper -->
|
|
4586
3638
|
<div class='footer quiet pad2 space-top1 center small'>
|
|
4587
3639
|
Code coverage
|
|
4588
|
-
generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at
|
|
3640
|
+
generated by <a href="https://istanbul.js.org/" target="_blank">istanbul</a> at Thu Feb 12 2026 15:44:30 GMT-0800 (Pacific Standard Time)
|
|
4589
3641
|
</div>
|
|
4590
3642
|
</div>
|
|
4591
3643
|
<script src="../prettify.js"></script>
|