path-to-regexp 4.0.4 → 6.1.0
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/Readme.md +127 -68
- package/dist/index.d.ts +14 -23
- package/dist/index.js +177 -151
- package/dist/index.js.map +1 -1
- package/dist/index.spec.js +469 -496
- package/dist/index.spec.js.map +1 -1
- package/dist.es2015/index.js +177 -150
- package/dist.es2015/index.js.map +1 -1
- package/dist.es2015/index.spec.js +469 -496
- package/dist.es2015/index.spec.js.map +1 -1
- package/package.json +2 -2
@@ -154,10 +154,9 @@ var TESTS = [
|
|
154
154
|
{
|
155
155
|
name: "test",
|
156
156
|
prefix: "/",
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
pattern: "[^\\/]+?"
|
157
|
+
suffix: "",
|
158
|
+
modifier: "",
|
159
|
+
pattern: "[^\\/#\\?]+?"
|
161
160
|
}
|
162
161
|
],
|
163
162
|
[
|
@@ -181,9 +180,9 @@ var TESTS = [
|
|
181
180
|
[
|
182
181
|
[{}, null],
|
183
182
|
[{ test: "abc" }, "/abc"],
|
184
|
-
[{ test: "a+b" }, "/a+b"
|
183
|
+
[{ test: "a+b" }, "/a+b"],
|
185
184
|
[{ test: "a+b" }, "/test", { encode: function (_, token) { return String(token.name); } }],
|
186
|
-
[{ test: "a+b" }, "/a%2Bb"]
|
185
|
+
[{ test: "a+b" }, "/a%2Bb", { encode: encodeURIComponent }]
|
187
186
|
]
|
188
187
|
],
|
189
188
|
[
|
@@ -195,10 +194,9 @@ var TESTS = [
|
|
195
194
|
{
|
196
195
|
name: "test",
|
197
196
|
prefix: "/",
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
pattern: "[^\\/]+?"
|
197
|
+
suffix: "",
|
198
|
+
modifier: "",
|
199
|
+
pattern: "[^\\/#\\?]+?"
|
202
200
|
},
|
203
201
|
"/"
|
204
202
|
],
|
@@ -266,19 +264,18 @@ var TESTS = [
|
|
266
264
|
{
|
267
265
|
name: "test",
|
268
266
|
prefix: "/",
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
pattern: "[^\\/]+?"
|
267
|
+
suffix: "",
|
268
|
+
modifier: "",
|
269
|
+
pattern: "[^\\/#\\?]+?"
|
273
270
|
}
|
274
271
|
],
|
275
272
|
[["/route", ["/route", "route"]]],
|
276
273
|
[
|
277
274
|
[{}, null],
|
278
275
|
[{ test: "abc" }, "/abc"],
|
279
|
-
[{ test: "a+b" }, "/a+b"
|
276
|
+
[{ test: "a+b" }, "/a+b"],
|
280
277
|
[{ test: "a+b" }, "/test", { encode: function (_, token) { return String(token.name); } }],
|
281
|
-
[{ test: "a+b" }, "/a%2Bb"]
|
278
|
+
[{ test: "a+b" }, "/a%2Bb", { encode: encodeURIComponent }]
|
282
279
|
]
|
283
280
|
],
|
284
281
|
[
|
@@ -290,10 +287,9 @@ var TESTS = [
|
|
290
287
|
{
|
291
288
|
name: "test",
|
292
289
|
prefix: "/",
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
pattern: "[^\\/]+?"
|
290
|
+
suffix: "",
|
291
|
+
modifier: "",
|
292
|
+
pattern: "[^\\/#\\?]+?"
|
297
293
|
},
|
298
294
|
"/"
|
299
295
|
],
|
@@ -374,10 +370,9 @@ var TESTS = [
|
|
374
370
|
{
|
375
371
|
name: "test",
|
376
372
|
prefix: "/",
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
pattern: "[^\\/]+?"
|
373
|
+
suffix: "",
|
374
|
+
modifier: "",
|
375
|
+
pattern: "[^\\/#\\?]+?"
|
381
376
|
}
|
382
377
|
],
|
383
378
|
[
|
@@ -399,10 +394,9 @@ var TESTS = [
|
|
399
394
|
{
|
400
395
|
name: "test",
|
401
396
|
prefix: "/",
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
pattern: "[^\\/]+?"
|
397
|
+
suffix: "",
|
398
|
+
modifier: "",
|
399
|
+
pattern: "[^\\/#\\?]+?"
|
406
400
|
},
|
407
401
|
"/"
|
408
402
|
],
|
@@ -468,10 +462,9 @@ var TESTS = [
|
|
468
462
|
{
|
469
463
|
name: "test",
|
470
464
|
prefix: "/",
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
pattern: "[^\\/]+?"
|
465
|
+
suffix: "",
|
466
|
+
modifier: "",
|
467
|
+
pattern: "[^\\/#\\?]+?"
|
475
468
|
}
|
476
469
|
],
|
477
470
|
[
|
@@ -493,10 +486,9 @@ var TESTS = [
|
|
493
486
|
{
|
494
487
|
name: "test",
|
495
488
|
prefix: "/",
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
pattern: "[^\\/]+?"
|
489
|
+
suffix: "",
|
490
|
+
modifier: "",
|
491
|
+
pattern: "[^\\/#\\?]+?"
|
500
492
|
},
|
501
493
|
"/"
|
502
494
|
],
|
@@ -543,10 +535,9 @@ var TESTS = [
|
|
543
535
|
{
|
544
536
|
name: "test",
|
545
537
|
prefix: "/",
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
pattern: "[^\\/]+?"
|
538
|
+
suffix: "",
|
539
|
+
modifier: "",
|
540
|
+
pattern: "[^\\/#\\?]+?"
|
550
541
|
}
|
551
542
|
],
|
552
543
|
[
|
@@ -563,8 +554,16 @@ var TESTS = [
|
|
563
554
|
],
|
564
555
|
[
|
565
556
|
[{ test: "route" }, "/route"],
|
566
|
-
[
|
567
|
-
|
557
|
+
[
|
558
|
+
{ test: "something/else" },
|
559
|
+
"/something%2Felse",
|
560
|
+
{ encode: encodeURIComponent }
|
561
|
+
],
|
562
|
+
[
|
563
|
+
{ test: "something/else/more" },
|
564
|
+
"/something%2Felse%2Fmore",
|
565
|
+
{ encode: encodeURIComponent }
|
566
|
+
]
|
568
567
|
]
|
569
568
|
],
|
570
569
|
[
|
@@ -576,10 +575,9 @@ var TESTS = [
|
|
576
575
|
{
|
577
576
|
name: "test",
|
578
577
|
prefix: "/",
|
579
|
-
|
580
|
-
|
581
|
-
|
582
|
-
pattern: "[^\\/]+?"
|
578
|
+
suffix: "",
|
579
|
+
modifier: "",
|
580
|
+
pattern: "[^\\/#\\?]+?"
|
583
581
|
}
|
584
582
|
],
|
585
583
|
[
|
@@ -597,10 +595,9 @@ var TESTS = [
|
|
597
595
|
{
|
598
596
|
name: "test",
|
599
597
|
prefix: "/",
|
600
|
-
|
601
|
-
|
602
|
-
|
603
|
-
pattern: "[^\\/]+?"
|
598
|
+
suffix: "",
|
599
|
+
modifier: "",
|
600
|
+
pattern: "[^\\/#\\?]+?"
|
604
601
|
},
|
605
602
|
"/"
|
606
603
|
],
|
@@ -619,10 +616,9 @@ var TESTS = [
|
|
619
616
|
{
|
620
617
|
name: "test",
|
621
618
|
prefix: "/",
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
pattern: "[^\\/]+?"
|
619
|
+
suffix: "",
|
620
|
+
modifier: "",
|
621
|
+
pattern: "[^\\/#\\?]+?"
|
626
622
|
}
|
627
623
|
],
|
628
624
|
[
|
@@ -641,10 +637,9 @@ var TESTS = [
|
|
641
637
|
{
|
642
638
|
name: "test",
|
643
639
|
prefix: "/",
|
644
|
-
|
645
|
-
|
646
|
-
|
647
|
-
pattern: "[^\\/]+?"
|
640
|
+
suffix: "",
|
641
|
+
modifier: "?",
|
642
|
+
pattern: "[^\\/#\\?]+?"
|
648
643
|
}
|
649
644
|
],
|
650
645
|
[
|
@@ -671,10 +666,9 @@ var TESTS = [
|
|
671
666
|
{
|
672
667
|
name: "test",
|
673
668
|
prefix: "/",
|
674
|
-
|
675
|
-
|
676
|
-
|
677
|
-
pattern: "[^\\/]+?"
|
669
|
+
suffix: "",
|
670
|
+
modifier: "?",
|
671
|
+
pattern: "[^\\/#\\?]+?"
|
678
672
|
}
|
679
673
|
],
|
680
674
|
[
|
@@ -696,10 +690,9 @@ var TESTS = [
|
|
696
690
|
{
|
697
691
|
name: "test",
|
698
692
|
prefix: "/",
|
699
|
-
|
700
|
-
|
701
|
-
|
702
|
-
pattern: "[^\\/]+?"
|
693
|
+
suffix: "",
|
694
|
+
modifier: "?",
|
695
|
+
pattern: "[^\\/#\\?]+?"
|
703
696
|
},
|
704
697
|
"/"
|
705
698
|
],
|
@@ -721,10 +714,9 @@ var TESTS = [
|
|
721
714
|
{
|
722
715
|
name: "test",
|
723
716
|
prefix: "/",
|
724
|
-
|
725
|
-
|
726
|
-
|
727
|
-
pattern: "[^\\/]+?"
|
717
|
+
suffix: "",
|
718
|
+
modifier: "?",
|
719
|
+
pattern: "[^\\/#\\?]+?"
|
728
720
|
},
|
729
721
|
"/bar"
|
730
722
|
],
|
@@ -744,10 +736,9 @@ var TESTS = [
|
|
744
736
|
{
|
745
737
|
name: "test",
|
746
738
|
prefix: "/",
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
pattern: "[^\\/]+?"
|
739
|
+
suffix: "",
|
740
|
+
modifier: "?",
|
741
|
+
pattern: "[^\\/#\\?]+?"
|
751
742
|
},
|
752
743
|
"-bar"
|
753
744
|
],
|
@@ -768,10 +759,9 @@ var TESTS = [
|
|
768
759
|
{
|
769
760
|
name: "test",
|
770
761
|
prefix: "/",
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
pattern: "[^\\/]+?"
|
762
|
+
suffix: "",
|
763
|
+
modifier: "*",
|
764
|
+
pattern: "[^\\/#\\?]+?"
|
775
765
|
},
|
776
766
|
"-bar"
|
777
767
|
],
|
@@ -793,10 +783,9 @@ var TESTS = [
|
|
793
783
|
{
|
794
784
|
name: "test",
|
795
785
|
prefix: "/",
|
796
|
-
|
797
|
-
|
798
|
-
|
799
|
-
pattern: "[^\\/]+?"
|
786
|
+
suffix: "",
|
787
|
+
modifier: "+",
|
788
|
+
pattern: "[^\\/#\\?]+?"
|
800
789
|
}
|
801
790
|
],
|
802
791
|
[
|
@@ -830,9 +819,8 @@ var TESTS = [
|
|
830
819
|
{
|
831
820
|
name: "test",
|
832
821
|
prefix: "/",
|
833
|
-
|
834
|
-
|
835
|
-
repeat: true,
|
822
|
+
suffix: "",
|
823
|
+
modifier: "+",
|
836
824
|
pattern: "\\d+"
|
837
825
|
}
|
838
826
|
],
|
@@ -854,9 +842,8 @@ var TESTS = [
|
|
854
842
|
{
|
855
843
|
name: "ext",
|
856
844
|
prefix: ".",
|
857
|
-
|
858
|
-
|
859
|
-
repeat: true,
|
845
|
+
suffix: "",
|
846
|
+
modifier: "+",
|
860
847
|
pattern: "json|xml"
|
861
848
|
}
|
862
849
|
],
|
@@ -873,17 +860,16 @@ var TESTS = [
|
|
873
860
|
]
|
874
861
|
],
|
875
862
|
[
|
876
|
-
"/route.:ext/test",
|
863
|
+
"/route.:ext(\\w+)/test",
|
877
864
|
undefined,
|
878
865
|
[
|
879
866
|
"/route",
|
880
867
|
{
|
881
868
|
name: "ext",
|
882
869
|
prefix: ".",
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
pattern: "[^\\.\\/]+?"
|
870
|
+
suffix: "",
|
871
|
+
modifier: "",
|
872
|
+
pattern: "\\w+"
|
887
873
|
},
|
888
874
|
"/test"
|
889
875
|
],
|
@@ -905,10 +891,9 @@ var TESTS = [
|
|
905
891
|
{
|
906
892
|
name: "test",
|
907
893
|
prefix: "/",
|
908
|
-
|
909
|
-
|
910
|
-
|
911
|
-
pattern: "[^\\/]+?"
|
894
|
+
suffix: "",
|
895
|
+
modifier: "*",
|
896
|
+
pattern: "[^\\/#\\?]+?"
|
912
897
|
}
|
913
898
|
],
|
914
899
|
[
|
@@ -944,9 +929,8 @@ var TESTS = [
|
|
944
929
|
{
|
945
930
|
name: "ext",
|
946
931
|
prefix: ".",
|
947
|
-
|
948
|
-
|
949
|
-
repeat: true,
|
932
|
+
suffix: "",
|
933
|
+
modifier: "*",
|
950
934
|
pattern: "[a-z]+"
|
951
935
|
}
|
952
936
|
],
|
@@ -974,9 +958,8 @@ var TESTS = [
|
|
974
958
|
{
|
975
959
|
name: "test",
|
976
960
|
prefix: "/",
|
977
|
-
|
978
|
-
|
979
|
-
repeat: false,
|
961
|
+
suffix: "",
|
962
|
+
modifier: "",
|
980
963
|
pattern: "\\d+"
|
981
964
|
}
|
982
965
|
],
|
@@ -1000,9 +983,8 @@ var TESTS = [
|
|
1000
983
|
{
|
1001
984
|
name: "test",
|
1002
985
|
prefix: "/",
|
1003
|
-
|
1004
|
-
|
1005
|
-
repeat: false,
|
986
|
+
suffix: "",
|
987
|
+
modifier: "",
|
1006
988
|
pattern: "\\d+"
|
1007
989
|
}
|
1008
990
|
],
|
@@ -1020,9 +1002,8 @@ var TESTS = [
|
|
1020
1002
|
{
|
1021
1003
|
name: "test",
|
1022
1004
|
prefix: "/",
|
1023
|
-
|
1024
|
-
|
1025
|
-
repeat: false,
|
1005
|
+
suffix: "",
|
1006
|
+
modifier: "",
|
1026
1007
|
pattern: ".*"
|
1027
1008
|
}
|
1028
1009
|
],
|
@@ -1033,8 +1014,12 @@ var TESTS = [
|
|
1033
1014
|
[
|
1034
1015
|
[{ test: "" }, "/"],
|
1035
1016
|
[{ test: "abc" }, "/abc"],
|
1036
|
-
[{ test: "abc/123" }, "/abc%2F123"],
|
1037
|
-
[
|
1017
|
+
[{ test: "abc/123" }, "/abc%2F123", { encode: encodeURIComponent }],
|
1018
|
+
[
|
1019
|
+
{ test: "abc/123/456" },
|
1020
|
+
"/abc%2F123%2F456",
|
1021
|
+
{ encode: encodeURIComponent }
|
1022
|
+
]
|
1038
1023
|
]
|
1039
1024
|
],
|
1040
1025
|
[
|
@@ -1044,9 +1029,8 @@ var TESTS = [
|
|
1044
1029
|
{
|
1045
1030
|
name: "route",
|
1046
1031
|
prefix: "/",
|
1047
|
-
|
1048
|
-
|
1049
|
-
repeat: false,
|
1032
|
+
suffix: "",
|
1033
|
+
modifier: "",
|
1050
1034
|
pattern: "[a-z]+"
|
1051
1035
|
}
|
1052
1036
|
],
|
@@ -1069,9 +1053,8 @@ var TESTS = [
|
|
1069
1053
|
{
|
1070
1054
|
name: "route",
|
1071
1055
|
prefix: "/",
|
1072
|
-
|
1073
|
-
|
1074
|
-
repeat: false,
|
1056
|
+
suffix: "",
|
1057
|
+
modifier: "",
|
1075
1058
|
pattern: "this|that"
|
1076
1059
|
}
|
1077
1060
|
],
|
@@ -1094,9 +1077,8 @@ var TESTS = [
|
|
1094
1077
|
{
|
1095
1078
|
name: "path",
|
1096
1079
|
prefix: "/",
|
1097
|
-
|
1098
|
-
|
1099
|
-
repeat: true,
|
1080
|
+
suffix: "",
|
1081
|
+
modifier: "*",
|
1100
1082
|
pattern: "abc|xyz"
|
1101
1083
|
}
|
1102
1084
|
],
|
@@ -1138,10 +1120,9 @@ var TESTS = [
|
|
1138
1120
|
{
|
1139
1121
|
name: "test",
|
1140
1122
|
prefix: "",
|
1141
|
-
|
1142
|
-
|
1143
|
-
|
1144
|
-
pattern: "[^\\/]+?"
|
1123
|
+
suffix: "",
|
1124
|
+
modifier: "",
|
1125
|
+
pattern: "[^\\/#\\?]+?"
|
1145
1126
|
}
|
1146
1127
|
],
|
1147
1128
|
[
|
@@ -1165,10 +1146,9 @@ var TESTS = [
|
|
1165
1146
|
{
|
1166
1147
|
name: "test",
|
1167
1148
|
prefix: "",
|
1168
|
-
|
1169
|
-
|
1170
|
-
|
1171
|
-
pattern: "[^\\/]+?"
|
1149
|
+
suffix: "",
|
1150
|
+
modifier: "",
|
1151
|
+
pattern: "[^\\/#\\?]+?"
|
1172
1152
|
}
|
1173
1153
|
],
|
1174
1154
|
[
|
@@ -1187,10 +1167,9 @@ var TESTS = [
|
|
1187
1167
|
{
|
1188
1168
|
name: "test",
|
1189
1169
|
prefix: "",
|
1190
|
-
|
1191
|
-
|
1192
|
-
|
1193
|
-
pattern: "[^\\/]+?"
|
1170
|
+
suffix: "",
|
1171
|
+
modifier: "",
|
1172
|
+
pattern: "[^\\/#\\?]+?"
|
1194
1173
|
}
|
1195
1174
|
],
|
1196
1175
|
[
|
@@ -1208,10 +1187,9 @@ var TESTS = [
|
|
1208
1187
|
{
|
1209
1188
|
name: "test",
|
1210
1189
|
prefix: "",
|
1211
|
-
|
1212
|
-
|
1213
|
-
|
1214
|
-
pattern: "[^\\/]+?"
|
1190
|
+
suffix: "",
|
1191
|
+
modifier: "?",
|
1192
|
+
pattern: "[^\\/#\\?]+?"
|
1215
1193
|
}
|
1216
1194
|
],
|
1217
1195
|
[
|
@@ -1227,29 +1205,28 @@ var TESTS = [
|
|
1227
1205
|
]
|
1228
1206
|
],
|
1229
1207
|
[
|
1230
|
-
":test+",
|
1208
|
+
"{:test/}+",
|
1231
1209
|
undefined,
|
1232
1210
|
[
|
1233
1211
|
{
|
1234
1212
|
name: "test",
|
1235
1213
|
prefix: "",
|
1236
|
-
|
1237
|
-
|
1238
|
-
|
1239
|
-
pattern: "[^\\/]+?"
|
1214
|
+
suffix: "/",
|
1215
|
+
modifier: "+",
|
1216
|
+
pattern: "[^\\/#\\?]+?"
|
1240
1217
|
}
|
1241
1218
|
],
|
1242
1219
|
[
|
1243
|
-
["route", ["route", "route"]],
|
1220
|
+
["route/", ["route/", "route"]],
|
1244
1221
|
["/route", null],
|
1245
1222
|
["", null],
|
1246
|
-
["foo/bar", ["foo/bar", "foo/bar"]]
|
1223
|
+
["foo/bar/", ["foo/bar/", "foo/bar"]]
|
1247
1224
|
],
|
1248
1225
|
[
|
1249
1226
|
[{}, null],
|
1250
1227
|
[{ test: "" }, null],
|
1251
|
-
[{ test: ["route"] }, "route"],
|
1252
|
-
[{ test: ["foo", "bar"] }, "foo/bar"]
|
1228
|
+
[{ test: ["route"] }, "route/"],
|
1229
|
+
[{ test: ["foo", "bar"] }, "foo/bar/"]
|
1253
1230
|
]
|
1254
1231
|
],
|
1255
1232
|
/**
|
@@ -1272,10 +1249,9 @@ var TESTS = [
|
|
1272
1249
|
{
|
1273
1250
|
name: "test",
|
1274
1251
|
prefix: "/",
|
1275
|
-
|
1276
|
-
|
1277
|
-
|
1278
|
-
pattern: "[^\\/]+?"
|
1252
|
+
suffix: "",
|
1253
|
+
modifier: "",
|
1254
|
+
pattern: "[^\\/#\\?]+?"
|
1279
1255
|
},
|
1280
1256
|
".json"
|
1281
1257
|
],
|
@@ -1294,17 +1270,16 @@ var TESTS = [
|
|
1294
1270
|
* Format params.
|
1295
1271
|
*/
|
1296
1272
|
[
|
1297
|
-
"/test.:format",
|
1273
|
+
"/test.:format(\\w+)",
|
1298
1274
|
undefined,
|
1299
1275
|
[
|
1300
1276
|
"/test",
|
1301
1277
|
{
|
1302
1278
|
name: "format",
|
1303
1279
|
prefix: ".",
|
1304
|
-
|
1305
|
-
|
1306
|
-
|
1307
|
-
pattern: "[^\\.\\/]+?"
|
1280
|
+
suffix: "",
|
1281
|
+
modifier: "",
|
1282
|
+
pattern: "\\w+"
|
1308
1283
|
}
|
1309
1284
|
],
|
1310
1285
|
[
|
@@ -1318,25 +1293,23 @@ var TESTS = [
|
|
1318
1293
|
]
|
1319
1294
|
],
|
1320
1295
|
[
|
1321
|
-
"/test.:format.:format",
|
1296
|
+
"/test.:format(\\w+).:format(\\w+)",
|
1322
1297
|
undefined,
|
1323
1298
|
[
|
1324
1299
|
"/test",
|
1325
1300
|
{
|
1326
1301
|
name: "format",
|
1327
1302
|
prefix: ".",
|
1328
|
-
|
1329
|
-
|
1330
|
-
|
1331
|
-
pattern: "[^\\.\\/]+?"
|
1303
|
+
suffix: "",
|
1304
|
+
modifier: "",
|
1305
|
+
pattern: "\\w+"
|
1332
1306
|
},
|
1333
1307
|
{
|
1334
1308
|
name: "format",
|
1335
1309
|
prefix: ".",
|
1336
|
-
|
1337
|
-
|
1338
|
-
|
1339
|
-
pattern: "[^\\.\\/]+?"
|
1310
|
+
suffix: "",
|
1311
|
+
modifier: "",
|
1312
|
+
pattern: "\\w+"
|
1340
1313
|
}
|
1341
1314
|
],
|
1342
1315
|
[
|
@@ -1349,17 +1322,16 @@ var TESTS = [
|
|
1349
1322
|
]
|
1350
1323
|
],
|
1351
1324
|
[
|
1352
|
-
"/test.:format+",
|
1325
|
+
"/test{.:format}+",
|
1353
1326
|
undefined,
|
1354
1327
|
[
|
1355
1328
|
"/test",
|
1356
1329
|
{
|
1357
1330
|
name: "format",
|
1358
1331
|
prefix: ".",
|
1359
|
-
|
1360
|
-
|
1361
|
-
|
1362
|
-
pattern: "[^\\.\\/]+?"
|
1332
|
+
suffix: "",
|
1333
|
+
modifier: "+",
|
1334
|
+
pattern: "[^\\/#\\?]+?"
|
1363
1335
|
}
|
1364
1336
|
],
|
1365
1337
|
[
|
@@ -1373,7 +1345,7 @@ var TESTS = [
|
|
1373
1345
|
]
|
1374
1346
|
],
|
1375
1347
|
[
|
1376
|
-
"/test.:format",
|
1348
|
+
"/test.:format(\\w+)",
|
1377
1349
|
{
|
1378
1350
|
end: false
|
1379
1351
|
},
|
@@ -1382,10 +1354,9 @@ var TESTS = [
|
|
1382
1354
|
{
|
1383
1355
|
name: "format",
|
1384
1356
|
prefix: ".",
|
1385
|
-
|
1386
|
-
|
1387
|
-
|
1388
|
-
pattern: "[^\\.\\/]+?"
|
1357
|
+
suffix: "",
|
1358
|
+
modifier: "",
|
1359
|
+
pattern: "\\w+"
|
1389
1360
|
}
|
1390
1361
|
],
|
1391
1362
|
[
|
@@ -1402,10 +1373,9 @@ var TESTS = [
|
|
1402
1373
|
{
|
1403
1374
|
name: "format",
|
1404
1375
|
prefix: ".",
|
1405
|
-
|
1406
|
-
|
1407
|
-
|
1408
|
-
pattern: "[^\\.\\/]+?"
|
1376
|
+
suffix: "",
|
1377
|
+
modifier: "",
|
1378
|
+
pattern: "[^\\/#\\?]+?"
|
1409
1379
|
},
|
1410
1380
|
"."
|
1411
1381
|
],
|
@@ -1428,24 +1398,22 @@ var TESTS = [
|
|
1428
1398
|
{
|
1429
1399
|
name: "test",
|
1430
1400
|
prefix: "/",
|
1431
|
-
|
1432
|
-
|
1433
|
-
|
1434
|
-
pattern: "[^\\/]+?"
|
1401
|
+
suffix: "",
|
1402
|
+
modifier: "",
|
1403
|
+
pattern: "[^\\/#\\?]+?"
|
1435
1404
|
},
|
1436
1405
|
{
|
1437
1406
|
name: "format",
|
1438
1407
|
prefix: ".",
|
1439
|
-
|
1440
|
-
|
1441
|
-
|
1442
|
-
pattern: "[^\\.\\/]+?"
|
1408
|
+
suffix: "",
|
1409
|
+
modifier: "",
|
1410
|
+
pattern: "[^\\/#\\?]+?"
|
1443
1411
|
}
|
1444
1412
|
],
|
1445
1413
|
[
|
1446
1414
|
["/route.html", ["/route.html", "route", "html"]],
|
1447
1415
|
["/route", null],
|
1448
|
-
["/route.html.json", ["/route.html.json", "route
|
1416
|
+
["/route.html.json", ["/route.html.json", "route", "html.json"]]
|
1449
1417
|
],
|
1450
1418
|
[
|
1451
1419
|
[{}, null],
|
@@ -1453,30 +1421,28 @@ var TESTS = [
|
|
1453
1421
|
]
|
1454
1422
|
],
|
1455
1423
|
[
|
1456
|
-
"/:test.:format?",
|
1424
|
+
"/:test{.:format}?",
|
1457
1425
|
undefined,
|
1458
1426
|
[
|
1459
1427
|
{
|
1460
1428
|
name: "test",
|
1461
1429
|
prefix: "/",
|
1462
|
-
|
1463
|
-
|
1464
|
-
|
1465
|
-
pattern: "[^\\/]+?"
|
1430
|
+
suffix: "",
|
1431
|
+
modifier: "",
|
1432
|
+
pattern: "[^\\/#\\?]+?"
|
1466
1433
|
},
|
1467
1434
|
{
|
1468
1435
|
name: "format",
|
1469
1436
|
prefix: ".",
|
1470
|
-
|
1471
|
-
|
1472
|
-
|
1473
|
-
pattern: "[^\\.\\/]+?"
|
1437
|
+
suffix: "",
|
1438
|
+
modifier: "?",
|
1439
|
+
pattern: "[^\\/#\\?]+?"
|
1474
1440
|
}
|
1475
1441
|
],
|
1476
1442
|
[
|
1477
1443
|
["/route", ["/route", "route", undefined]],
|
1478
1444
|
["/route.json", ["/route.json", "route", "json"]],
|
1479
|
-
["/route.json.html", ["/route.json.html", "route
|
1445
|
+
["/route.json.html", ["/route.json.html", "route", "json.html"]]
|
1480
1446
|
],
|
1481
1447
|
[
|
1482
1448
|
[{ test: "route" }, "/route"],
|
@@ -1493,24 +1459,22 @@ var TESTS = [
|
|
1493
1459
|
{
|
1494
1460
|
name: "test",
|
1495
1461
|
prefix: "/",
|
1496
|
-
|
1497
|
-
|
1498
|
-
|
1499
|
-
pattern: "[^\\/]+?"
|
1462
|
+
suffix: "",
|
1463
|
+
modifier: "",
|
1464
|
+
pattern: "[^\\/#\\?]+?"
|
1500
1465
|
},
|
1501
1466
|
{
|
1502
1467
|
name: "format",
|
1503
1468
|
prefix: ".",
|
1504
|
-
|
1505
|
-
|
1506
|
-
|
1507
|
-
pattern: "[^\\.\\/]+?"
|
1469
|
+
suffix: "",
|
1470
|
+
modifier: "?",
|
1471
|
+
pattern: "[^\\/#\\?]+?"
|
1508
1472
|
}
|
1509
1473
|
],
|
1510
1474
|
[
|
1511
1475
|
["/route", ["/route", "route", undefined]],
|
1512
1476
|
["/route.json", ["/route.json", "route", "json"]],
|
1513
|
-
["/route.json.html", ["/route.json.html", "route
|
1477
|
+
["/route.json.html", ["/route.json.html", "route", "json.html"]]
|
1514
1478
|
],
|
1515
1479
|
[
|
1516
1480
|
[{ test: "route" }, "/route"],
|
@@ -1529,9 +1493,8 @@ var TESTS = [
|
|
1529
1493
|
{
|
1530
1494
|
name: "format",
|
1531
1495
|
prefix: ".",
|
1532
|
-
|
1533
|
-
|
1534
|
-
repeat: false,
|
1496
|
+
suffix: "",
|
1497
|
+
modifier: "",
|
1535
1498
|
pattern: ".*"
|
1536
1499
|
},
|
1537
1500
|
"z"
|
@@ -1557,9 +1520,8 @@ var TESTS = [
|
|
1557
1520
|
{
|
1558
1521
|
name: 0,
|
1559
1522
|
prefix: "/",
|
1560
|
-
|
1561
|
-
|
1562
|
-
repeat: false,
|
1523
|
+
suffix: "",
|
1524
|
+
modifier: "",
|
1563
1525
|
pattern: "\\d+"
|
1564
1526
|
}
|
1565
1527
|
],
|
@@ -1582,9 +1544,8 @@ var TESTS = [
|
|
1582
1544
|
{
|
1583
1545
|
name: 0,
|
1584
1546
|
prefix: "/",
|
1585
|
-
|
1586
|
-
|
1587
|
-
repeat: false,
|
1547
|
+
suffix: "",
|
1548
|
+
modifier: "",
|
1588
1549
|
pattern: "\\d+"
|
1589
1550
|
}
|
1590
1551
|
],
|
@@ -1603,9 +1564,8 @@ var TESTS = [
|
|
1603
1564
|
{
|
1604
1565
|
name: 0,
|
1605
1566
|
prefix: "/",
|
1606
|
-
|
1607
|
-
|
1608
|
-
repeat: false,
|
1567
|
+
suffix: "",
|
1568
|
+
modifier: "?",
|
1609
1569
|
pattern: "\\d+"
|
1610
1570
|
}
|
1611
1571
|
],
|
@@ -1625,9 +1585,8 @@ var TESTS = [
|
|
1625
1585
|
{
|
1626
1586
|
name: 0,
|
1627
1587
|
prefix: "/",
|
1628
|
-
|
1629
|
-
|
1630
|
-
repeat: false,
|
1588
|
+
suffix: "",
|
1589
|
+
modifier: "",
|
1631
1590
|
pattern: ".*"
|
1632
1591
|
}
|
1633
1592
|
],
|
@@ -1649,9 +1608,8 @@ var TESTS = [
|
|
1649
1608
|
{
|
1650
1609
|
name: 0,
|
1651
1610
|
prefix: "",
|
1652
|
-
|
1653
|
-
|
1654
|
-
repeat: false,
|
1611
|
+
suffix: "",
|
1612
|
+
modifier: "",
|
1655
1613
|
pattern: "\\d+\\\\"
|
1656
1614
|
},
|
1657
1615
|
")"
|
@@ -1660,23 +1618,61 @@ var TESTS = [
|
|
1660
1618
|
[]
|
1661
1619
|
],
|
1662
1620
|
[
|
1663
|
-
"/
|
1621
|
+
"{/login}?",
|
1622
|
+
undefined,
|
1623
|
+
[
|
1624
|
+
{
|
1625
|
+
name: "",
|
1626
|
+
prefix: "/login",
|
1627
|
+
suffix: "",
|
1628
|
+
modifier: "?",
|
1629
|
+
pattern: ""
|
1630
|
+
}
|
1631
|
+
],
|
1632
|
+
[
|
1633
|
+
["/", ["/"]],
|
1634
|
+
["/login", ["/login"]]
|
1635
|
+
],
|
1636
|
+
[
|
1637
|
+
[null, ""],
|
1638
|
+
[{ "": "" }, "/login"]
|
1639
|
+
]
|
1640
|
+
],
|
1641
|
+
[
|
1642
|
+
"{/login}",
|
1643
|
+
undefined,
|
1644
|
+
[
|
1645
|
+
{
|
1646
|
+
name: "",
|
1647
|
+
prefix: "/login",
|
1648
|
+
suffix: "",
|
1649
|
+
modifier: "",
|
1650
|
+
pattern: ""
|
1651
|
+
}
|
1652
|
+
],
|
1653
|
+
[
|
1654
|
+
["/", null],
|
1655
|
+
["/login", ["/login"]]
|
1656
|
+
],
|
1657
|
+
[[{ "": "" }, "/login"]]
|
1658
|
+
],
|
1659
|
+
[
|
1660
|
+
"{/(.*)}",
|
1664
1661
|
undefined,
|
1665
1662
|
[
|
1666
1663
|
{
|
1667
1664
|
name: 0,
|
1668
1665
|
prefix: "/",
|
1669
|
-
|
1670
|
-
|
1671
|
-
|
1672
|
-
pattern: "login"
|
1666
|
+
suffix: "",
|
1667
|
+
modifier: "",
|
1668
|
+
pattern: ".*"
|
1673
1669
|
}
|
1674
1670
|
],
|
1675
1671
|
[
|
1676
|
-
["/", ["/",
|
1672
|
+
["/", ["/", ""]],
|
1677
1673
|
["/login", ["/login", "login"]]
|
1678
1674
|
],
|
1679
|
-
[]
|
1675
|
+
[[{ 0: "test" }, "/test"]]
|
1680
1676
|
],
|
1681
1677
|
/**
|
1682
1678
|
* Regexps.
|
@@ -1689,9 +1685,8 @@ var TESTS = [
|
|
1689
1685
|
{
|
1690
1686
|
name: 0,
|
1691
1687
|
prefix: "",
|
1692
|
-
|
1693
|
-
|
1694
|
-
repeat: false,
|
1688
|
+
suffix: "",
|
1689
|
+
modifier: "",
|
1695
1690
|
pattern: ""
|
1696
1691
|
}
|
1697
1692
|
],
|
@@ -1705,9 +1700,8 @@ var TESTS = [
|
|
1705
1700
|
{
|
1706
1701
|
name: 0,
|
1707
1702
|
prefix: "",
|
1708
|
-
|
1709
|
-
|
1710
|
-
repeat: false,
|
1703
|
+
suffix: "",
|
1704
|
+
modifier: "",
|
1711
1705
|
pattern: ""
|
1712
1706
|
}
|
1713
1707
|
],
|
@@ -1727,9 +1721,8 @@ var TESTS = [
|
|
1727
1721
|
{
|
1728
1722
|
name: 0,
|
1729
1723
|
prefix: "",
|
1730
|
-
|
1731
|
-
|
1732
|
-
repeat: false,
|
1724
|
+
suffix: "",
|
1725
|
+
modifier: "",
|
1733
1726
|
pattern: ""
|
1734
1727
|
}
|
1735
1728
|
],
|
@@ -1743,17 +1736,15 @@ var TESTS = [
|
|
1743
1736
|
{
|
1744
1737
|
name: "test",
|
1745
1738
|
prefix: "/",
|
1746
|
-
|
1747
|
-
|
1748
|
-
repeat: false,
|
1739
|
+
suffix: "",
|
1740
|
+
modifier: "",
|
1749
1741
|
pattern: "\\d+"
|
1750
1742
|
},
|
1751
1743
|
{
|
1752
1744
|
name: 0,
|
1753
1745
|
prefix: "",
|
1754
|
-
|
1755
|
-
|
1756
|
-
repeat: false,
|
1746
|
+
suffix: "",
|
1747
|
+
modifier: "",
|
1757
1748
|
pattern: ""
|
1758
1749
|
}
|
1759
1750
|
],
|
@@ -1773,18 +1764,16 @@ var TESTS = [
|
|
1773
1764
|
{
|
1774
1765
|
name: "test",
|
1775
1766
|
prefix: "/",
|
1776
|
-
|
1777
|
-
|
1778
|
-
|
1779
|
-
pattern: "[^\\/]+?"
|
1767
|
+
suffix: "",
|
1768
|
+
modifier: "",
|
1769
|
+
pattern: "[^\\/#\\?]+?"
|
1780
1770
|
},
|
1781
1771
|
{
|
1782
1772
|
name: "test",
|
1783
1773
|
prefix: "/",
|
1784
|
-
|
1785
|
-
|
1786
|
-
|
1787
|
-
pattern: "[^\\/]+?"
|
1774
|
+
suffix: "",
|
1775
|
+
modifier: "",
|
1776
|
+
pattern: "[^\\/#\\?]+?"
|
1788
1777
|
}
|
1789
1778
|
],
|
1790
1779
|
[
|
@@ -1800,17 +1789,15 @@ var TESTS = [
|
|
1800
1789
|
{
|
1801
1790
|
name: 0,
|
1802
1791
|
prefix: "",
|
1803
|
-
|
1804
|
-
|
1805
|
-
repeat: false,
|
1792
|
+
suffix: "",
|
1793
|
+
modifier: "",
|
1806
1794
|
pattern: ""
|
1807
1795
|
},
|
1808
1796
|
{
|
1809
1797
|
name: 0,
|
1810
1798
|
prefix: "",
|
1811
|
-
|
1812
|
-
|
1813
|
-
repeat: false,
|
1799
|
+
suffix: "",
|
1800
|
+
modifier: "",
|
1814
1801
|
pattern: ""
|
1815
1802
|
}
|
1816
1803
|
],
|
@@ -1844,11 +1831,11 @@ var TESTS = [
|
|
1844
1831
|
[[null, "/(testing)"]]
|
1845
1832
|
],
|
1846
1833
|
[
|
1847
|
-
"
|
1834
|
+
"/.\\+\\*\\?\\{\\}=^!\\:$[]|",
|
1848
1835
|
undefined,
|
1849
|
-
["
|
1850
|
-
[["
|
1851
|
-
[[null, "
|
1836
|
+
["/.+*?{}=^!:$[]|"],
|
1837
|
+
[["/.+*?{}=^!:$[]|", ["/.+*?{}=^!:$[]|"]]],
|
1838
|
+
[[null, "/.+*?{}=^!:$[]|"]]
|
1852
1839
|
],
|
1853
1840
|
[
|
1854
1841
|
"/test\\/:uid(u\\d+)?:cid(c\\d+)?",
|
@@ -1858,17 +1845,15 @@ var TESTS = [
|
|
1858
1845
|
{
|
1859
1846
|
name: "uid",
|
1860
1847
|
prefix: "",
|
1861
|
-
|
1862
|
-
|
1863
|
-
repeat: false,
|
1848
|
+
suffix: "",
|
1849
|
+
modifier: "?",
|
1864
1850
|
pattern: "u\\d+"
|
1865
1851
|
},
|
1866
1852
|
{
|
1867
1853
|
name: "cid",
|
1868
1854
|
prefix: "",
|
1869
|
-
|
1870
|
-
|
1871
|
-
repeat: false,
|
1855
|
+
suffix: "",
|
1856
|
+
modifier: "?",
|
1872
1857
|
pattern: "c\\d+"
|
1873
1858
|
}
|
1874
1859
|
],
|
@@ -1888,32 +1873,30 @@ var TESTS = [
|
|
1888
1873
|
* Unnamed group prefix.
|
1889
1874
|
*/
|
1890
1875
|
[
|
1891
|
-
"
|
1876
|
+
"/{apple-}?icon-:res(\\d+).png",
|
1892
1877
|
undefined,
|
1893
1878
|
[
|
1894
1879
|
"/",
|
1895
1880
|
{
|
1896
|
-
name:
|
1897
|
-
prefix: "",
|
1898
|
-
|
1899
|
-
|
1900
|
-
|
1901
|
-
pattern: "apple-"
|
1881
|
+
name: "",
|
1882
|
+
prefix: "apple-",
|
1883
|
+
suffix: "",
|
1884
|
+
modifier: "?",
|
1885
|
+
pattern: ""
|
1902
1886
|
},
|
1903
|
-
"icon",
|
1887
|
+
"icon-",
|
1904
1888
|
{
|
1905
1889
|
name: "res",
|
1906
|
-
prefix: "
|
1907
|
-
|
1908
|
-
|
1909
|
-
repeat: false,
|
1890
|
+
prefix: "",
|
1891
|
+
suffix: "",
|
1892
|
+
modifier: "",
|
1910
1893
|
pattern: "\\d+"
|
1911
1894
|
},
|
1912
1895
|
".png"
|
1913
1896
|
],
|
1914
1897
|
[
|
1915
|
-
["/icon-240.png", ["/icon-240.png",
|
1916
|
-
["/apple-icon-240.png", ["/apple-icon-240.png", "
|
1898
|
+
["/icon-240.png", ["/icon-240.png", "240"]],
|
1899
|
+
["/apple-icon-240.png", ["/apple-icon-240.png", "240"]]
|
1917
1900
|
],
|
1918
1901
|
[]
|
1919
1902
|
],
|
@@ -1927,34 +1910,31 @@ var TESTS = [
|
|
1927
1910
|
{
|
1928
1911
|
name: "foo",
|
1929
1912
|
prefix: "/",
|
1930
|
-
|
1931
|
-
|
1932
|
-
|
1933
|
-
pattern: "[^\\/]+?"
|
1913
|
+
suffix: "",
|
1914
|
+
modifier: "",
|
1915
|
+
pattern: "[^\\/#\\?]+?"
|
1934
1916
|
},
|
1935
1917
|
{
|
1936
1918
|
name: "bar",
|
1937
1919
|
prefix: "/",
|
1938
|
-
|
1939
|
-
|
1940
|
-
|
1941
|
-
pattern: "[^\\/]+?"
|
1920
|
+
suffix: "",
|
1921
|
+
modifier: "",
|
1922
|
+
pattern: "[^\\/#\\?]+?"
|
1942
1923
|
}
|
1943
1924
|
],
|
1944
1925
|
[["/match/route", ["/match/route", "match", "route"]]],
|
1945
1926
|
[[{ foo: "a", bar: "b" }, "/a/b"]]
|
1946
1927
|
],
|
1947
1928
|
[
|
1948
|
-
"/:foo(test\\)/bar",
|
1929
|
+
"/:foo\\(test\\)/bar",
|
1949
1930
|
undefined,
|
1950
1931
|
[
|
1951
1932
|
{
|
1952
1933
|
name: "foo",
|
1953
1934
|
prefix: "/",
|
1954
|
-
|
1955
|
-
|
1956
|
-
|
1957
|
-
pattern: "[^\\/]+?"
|
1935
|
+
suffix: "",
|
1936
|
+
modifier: "",
|
1937
|
+
pattern: "[^\\/#\\?]+?"
|
1958
1938
|
},
|
1959
1939
|
"(test)/bar"
|
1960
1940
|
],
|
@@ -1968,17 +1948,15 @@ var TESTS = [
|
|
1968
1948
|
{
|
1969
1949
|
name: "remote",
|
1970
1950
|
prefix: "/",
|
1971
|
-
|
1972
|
-
|
1973
|
-
repeat: false,
|
1951
|
+
suffix: "",
|
1952
|
+
modifier: "",
|
1974
1953
|
pattern: "[\\w-.]+"
|
1975
1954
|
},
|
1976
1955
|
{
|
1977
1956
|
name: "user",
|
1978
1957
|
prefix: "/",
|
1979
|
-
|
1980
|
-
|
1981
|
-
repeat: false,
|
1958
|
+
suffix: "",
|
1959
|
+
modifier: "",
|
1982
1960
|
pattern: "[\\w-]+"
|
1983
1961
|
}
|
1984
1962
|
],
|
@@ -1999,10 +1977,9 @@ var TESTS = [
|
|
1999
1977
|
{
|
2000
1978
|
name: "foo",
|
2001
1979
|
prefix: "/",
|
2002
|
-
|
2003
|
-
|
2004
|
-
|
2005
|
-
pattern: "[^\\/]+?"
|
1980
|
+
suffix: "",
|
1981
|
+
modifier: "",
|
1982
|
+
pattern: "[^\\/#\\?]+?"
|
2006
1983
|
},
|
2007
1984
|
"?"
|
2008
1985
|
],
|
@@ -2016,10 +1993,9 @@ var TESTS = [
|
|
2016
1993
|
{
|
2017
1994
|
name: "foo",
|
2018
1995
|
prefix: "/",
|
2019
|
-
|
2020
|
-
|
2021
|
-
|
2022
|
-
pattern: "[^\\/]+?"
|
1996
|
+
suffix: "",
|
1997
|
+
modifier: "+",
|
1998
|
+
pattern: "[^\\/#\\?]+?"
|
2023
1999
|
},
|
2024
2000
|
"baz"
|
2025
2001
|
],
|
@@ -2030,7 +2006,7 @@ var TESTS = [
|
|
2030
2006
|
],
|
2031
2007
|
[
|
2032
2008
|
[{ foo: "foo" }, "/foobaz"],
|
2033
|
-
[{ foo: "foo/bar" }, "/foo%2Fbarbaz"],
|
2009
|
+
[{ foo: "foo/bar" }, "/foo%2Fbarbaz", { encode: encodeURIComponent }],
|
2034
2010
|
[{ foo: ["foo", "bar"] }, "/foo/barbaz"]
|
2035
2011
|
]
|
2036
2012
|
],
|
@@ -2042,10 +2018,9 @@ var TESTS = [
|
|
2042
2018
|
{
|
2043
2019
|
name: "pre",
|
2044
2020
|
prefix: "",
|
2045
|
-
|
2046
|
-
|
2047
|
-
|
2048
|
-
pattern: "[^\\/]+?"
|
2021
|
+
suffix: "",
|
2022
|
+
modifier: "?",
|
2023
|
+
pattern: "[^\\/#\\?]+?"
|
2049
2024
|
},
|
2050
2025
|
"baz"
|
2051
2026
|
],
|
@@ -2065,19 +2040,17 @@ var TESTS = [
|
|
2065
2040
|
{
|
2066
2041
|
name: "foo",
|
2067
2042
|
prefix: "/",
|
2068
|
-
|
2069
|
-
|
2070
|
-
|
2071
|
-
pattern: "[^\\/]+?"
|
2043
|
+
suffix: "",
|
2044
|
+
modifier: "",
|
2045
|
+
pattern: "[^\\/#\\?]+?"
|
2072
2046
|
},
|
2073
2047
|
"(",
|
2074
2048
|
{
|
2075
2049
|
name: "bar",
|
2076
2050
|
prefix: "",
|
2077
|
-
|
2078
|
-
|
2079
|
-
|
2080
|
-
pattern: "[^\\/]+?"
|
2051
|
+
suffix: "",
|
2052
|
+
modifier: "?",
|
2053
|
+
pattern: "[^\\/#\\?]+?"
|
2081
2054
|
},
|
2082
2055
|
")"
|
2083
2056
|
],
|
@@ -2097,17 +2070,15 @@ var TESTS = [
|
|
2097
2070
|
{
|
2098
2071
|
name: "postType",
|
2099
2072
|
prefix: "/",
|
2100
|
-
|
2101
|
-
|
2102
|
-
repeat: false,
|
2073
|
+
suffix: "",
|
2074
|
+
modifier: "",
|
2103
2075
|
pattern: "video|audio|text"
|
2104
2076
|
},
|
2105
2077
|
{
|
2106
2078
|
name: 0,
|
2107
2079
|
prefix: "",
|
2108
|
-
|
2109
|
-
|
2110
|
-
repeat: false,
|
2080
|
+
suffix: "",
|
2081
|
+
modifier: "?",
|
2111
2082
|
pattern: "\\+.+"
|
2112
2083
|
}
|
2113
2084
|
],
|
@@ -2128,18 +2099,16 @@ var TESTS = [
|
|
2128
2099
|
{
|
2129
2100
|
name: "foo",
|
2130
2101
|
prefix: "/",
|
2131
|
-
|
2132
|
-
|
2133
|
-
|
2134
|
-
pattern: "[^\\/]+?"
|
2102
|
+
suffix: "",
|
2103
|
+
modifier: "?",
|
2104
|
+
pattern: "[^\\/#\\?]+?"
|
2135
2105
|
},
|
2136
2106
|
{
|
2137
2107
|
name: "bar",
|
2138
2108
|
prefix: "/",
|
2139
|
-
|
2140
|
-
|
2141
|
-
|
2142
|
-
pattern: "[^\\/]+?"
|
2109
|
+
suffix: "",
|
2110
|
+
modifier: "?",
|
2111
|
+
pattern: "[^\\/#\\?]+?"
|
2143
2112
|
},
|
2144
2113
|
"-ext"
|
2145
2114
|
],
|
@@ -2164,18 +2133,16 @@ var TESTS = [
|
|
2164
2133
|
{
|
2165
2134
|
name: "required",
|
2166
2135
|
prefix: "/",
|
2167
|
-
|
2168
|
-
|
2169
|
-
|
2170
|
-
pattern: "[^\\/]+?"
|
2136
|
+
suffix: "",
|
2137
|
+
modifier: "",
|
2138
|
+
pattern: "[^\\/#\\?]+?"
|
2171
2139
|
},
|
2172
2140
|
{
|
2173
2141
|
name: "optional",
|
2174
2142
|
prefix: "/",
|
2175
|
-
|
2176
|
-
|
2177
|
-
|
2178
|
-
pattern: "[^\\/]+?"
|
2143
|
+
suffix: "",
|
2144
|
+
modifier: "?",
|
2145
|
+
pattern: "[^\\/#\\?]+?"
|
2179
2146
|
},
|
2180
2147
|
"-ext"
|
2181
2148
|
],
|
@@ -2184,10 +2151,7 @@ var TESTS = [
|
|
2184
2151
|
["/foo/bar-ext", ["/foo/bar-ext", "foo", "bar"]],
|
2185
2152
|
["/foo/-ext", null]
|
2186
2153
|
],
|
2187
|
-
[
|
2188
|
-
[{ required: "foo" }, "/foo-ext"],
|
2189
|
-
[{ required: "foo", optional: "baz" }, "/foo/baz-ext"]
|
2190
|
-
]
|
2154
|
+
[[{ required: "foo" }, "/foo-ext"]]
|
2191
2155
|
],
|
2192
2156
|
/**
|
2193
2157
|
* Unicode characters.
|
@@ -2199,16 +2163,25 @@ var TESTS = [
|
|
2199
2163
|
{
|
2200
2164
|
name: "foo",
|
2201
2165
|
prefix: "/",
|
2202
|
-
|
2203
|
-
|
2204
|
-
|
2205
|
-
pattern: "[^\\/]+?"
|
2166
|
+
suffix: "",
|
2167
|
+
modifier: "",
|
2168
|
+
pattern: "[^\\/#\\?]+?"
|
2206
2169
|
}
|
2207
2170
|
],
|
2208
2171
|
[["/café", ["/café", "café"]]],
|
2209
|
-
[
|
2172
|
+
[
|
2173
|
+
[{ foo: "café" }, "/café"],
|
2174
|
+
[{ foo: "café" }, "/caf%C3%A9", { encode: encodeURIComponent }]
|
2175
|
+
]
|
2210
2176
|
],
|
2211
2177
|
["/café", undefined, ["/café"], [["/café", ["/café"]]], [[null, "/café"]]],
|
2178
|
+
[
|
2179
|
+
"/café",
|
2180
|
+
{ encode: encodeURI },
|
2181
|
+
["/café"],
|
2182
|
+
[["/caf%C3%A9", ["/caf%C3%A9"]]],
|
2183
|
+
[[null, "/café"]]
|
2184
|
+
],
|
2212
2185
|
[
|
2213
2186
|
"packages/",
|
2214
2187
|
undefined,
|
@@ -2231,9 +2204,8 @@ var TESTS = [
|
|
2231
2204
|
{
|
2232
2205
|
name: "domain",
|
2233
2206
|
prefix: "",
|
2234
|
-
|
2235
|
-
|
2236
|
-
repeat: false,
|
2207
|
+
suffix: "",
|
2208
|
+
modifier: "",
|
2237
2209
|
pattern: "[^\\.]+?"
|
2238
2210
|
},
|
2239
2211
|
".com"
|
@@ -2257,9 +2229,8 @@ var TESTS = [
|
|
2257
2229
|
{
|
2258
2230
|
name: "domain",
|
2259
2231
|
prefix: ".",
|
2260
|
-
|
2261
|
-
|
2262
|
-
repeat: false,
|
2232
|
+
suffix: "",
|
2233
|
+
modifier: "",
|
2263
2234
|
pattern: "[^\\.]+?"
|
2264
2235
|
},
|
2265
2236
|
".com"
|
@@ -2275,18 +2246,15 @@ var TESTS = [
|
|
2275
2246
|
],
|
2276
2247
|
[
|
2277
2248
|
"example.:ext",
|
2278
|
-
{
|
2279
|
-
delimiter: "."
|
2280
|
-
},
|
2249
|
+
{},
|
2281
2250
|
[
|
2282
2251
|
"example",
|
2283
2252
|
{
|
2284
2253
|
name: "ext",
|
2285
2254
|
prefix: ".",
|
2286
|
-
|
2287
|
-
|
2288
|
-
|
2289
|
-
pattern: "[^\\.]+?"
|
2255
|
+
suffix: "",
|
2256
|
+
modifier: "",
|
2257
|
+
pattern: "[^\\/#\\?]+?"
|
2290
2258
|
}
|
2291
2259
|
],
|
2292
2260
|
[
|
@@ -2342,29 +2310,25 @@ var TESTS = [
|
|
2342
2310
|
[[null, "/test"]]
|
2343
2311
|
],
|
2344
2312
|
/**
|
2345
|
-
* Custom
|
2313
|
+
* Custom prefixes.
|
2346
2314
|
*/
|
2347
2315
|
[
|
2348
|
-
"$:foo$:bar?",
|
2349
|
-
{
|
2350
|
-
delimiter: "$"
|
2351
|
-
},
|
2316
|
+
"{$:foo}{$:bar}?",
|
2317
|
+
{},
|
2352
2318
|
[
|
2353
2319
|
{
|
2354
|
-
delimiter: "$",
|
2355
2320
|
name: "foo",
|
2356
|
-
|
2357
|
-
pattern: "[^\\$]+?",
|
2321
|
+
pattern: "[^\\/#\\?]+?",
|
2358
2322
|
prefix: "$",
|
2359
|
-
|
2323
|
+
suffix: "",
|
2324
|
+
modifier: ""
|
2360
2325
|
},
|
2361
2326
|
{
|
2362
|
-
delimiter: "$",
|
2363
2327
|
name: "bar",
|
2364
|
-
|
2365
|
-
pattern: "[^\\$]+?",
|
2328
|
+
pattern: "[^\\/#\\?]+?",
|
2366
2329
|
prefix: "$",
|
2367
|
-
|
2330
|
+
suffix: "",
|
2331
|
+
modifier: "?"
|
2368
2332
|
}
|
2369
2333
|
],
|
2370
2334
|
[
|
@@ -2377,61 +2341,30 @@ var TESTS = [
|
|
2377
2341
|
]
|
2378
2342
|
],
|
2379
2343
|
[
|
2380
|
-
"
|
2381
|
-
{
|
2382
|
-
delimiter: " "
|
2383
|
-
},
|
2384
|
-
[
|
2385
|
-
{
|
2386
|
-
name: "test",
|
2387
|
-
prefix: "",
|
2388
|
-
delimiter: " ",
|
2389
|
-
optional: false,
|
2390
|
-
repeat: true,
|
2391
|
-
pattern: "[^ ]+?"
|
2392
|
-
}
|
2393
|
-
],
|
2394
|
-
[
|
2395
|
-
["hello", ["hello", "hello"]],
|
2396
|
-
[" hello ", null],
|
2397
|
-
["", null],
|
2398
|
-
["hello world", ["hello world", "hello world"]]
|
2399
|
-
],
|
2400
|
-
[
|
2401
|
-
[{}, null],
|
2402
|
-
[{ test: "" }, null],
|
2403
|
-
[{ test: ["hello"] }, "hello"],
|
2404
|
-
[{ test: ["hello", "world"] }, "hello world"]
|
2405
|
-
]
|
2406
|
-
],
|
2407
|
-
[
|
2408
|
-
"name/:attr1?-:attr2?-:attr3?",
|
2344
|
+
"name/:attr1?{-:attr2}?{-:attr3}?",
|
2409
2345
|
{},
|
2410
2346
|
[
|
2411
2347
|
"name",
|
2412
2348
|
{
|
2413
|
-
delimiter: "/",
|
2414
2349
|
name: "attr1",
|
2415
|
-
|
2416
|
-
pattern: "[^\\/]+?",
|
2350
|
+
pattern: "[^\\/#\\?]+?",
|
2417
2351
|
prefix: "/",
|
2418
|
-
|
2352
|
+
suffix: "",
|
2353
|
+
modifier: "?"
|
2419
2354
|
},
|
2420
2355
|
{
|
2421
|
-
delimiter: "-",
|
2422
2356
|
name: "attr2",
|
2423
|
-
|
2424
|
-
pattern: "[^-\\/]+?",
|
2357
|
+
pattern: "[^\\/#\\?]+?",
|
2425
2358
|
prefix: "-",
|
2426
|
-
|
2359
|
+
suffix: "",
|
2360
|
+
modifier: "?"
|
2427
2361
|
},
|
2428
2362
|
{
|
2429
|
-
delimiter: "-",
|
2430
2363
|
name: "attr3",
|
2431
|
-
|
2432
|
-
pattern: "[^-\\/]+?",
|
2364
|
+
pattern: "[^\\/#\\?]+?",
|
2433
2365
|
prefix: "-",
|
2434
|
-
|
2366
|
+
suffix: "",
|
2367
|
+
modifier: "?"
|
2435
2368
|
}
|
2436
2369
|
],
|
2437
2370
|
[
|
@@ -2448,45 +2381,6 @@ var TESTS = [
|
|
2448
2381
|
[{ attr2: "attr" }, "name-attr"]
|
2449
2382
|
]
|
2450
2383
|
],
|
2451
|
-
[
|
2452
|
-
"name/:attr1?-:attr2?",
|
2453
|
-
{
|
2454
|
-
whitelist: "/"
|
2455
|
-
},
|
2456
|
-
[
|
2457
|
-
"name",
|
2458
|
-
{
|
2459
|
-
delimiter: "/",
|
2460
|
-
name: "attr1",
|
2461
|
-
optional: true,
|
2462
|
-
pattern: "[^\\/]+?",
|
2463
|
-
prefix: "/",
|
2464
|
-
repeat: false
|
2465
|
-
},
|
2466
|
-
"-",
|
2467
|
-
{
|
2468
|
-
delimiter: "/",
|
2469
|
-
name: "attr2",
|
2470
|
-
optional: true,
|
2471
|
-
pattern: "[^\\/]+?",
|
2472
|
-
prefix: "",
|
2473
|
-
repeat: false
|
2474
|
-
}
|
2475
|
-
],
|
2476
|
-
[
|
2477
|
-
["name/1", null],
|
2478
|
-
["name/1-", ["name/1-", "1", undefined]],
|
2479
|
-
["name/1-2", ["name/1-2", "1", "2"]],
|
2480
|
-
["name/1-2-3", ["name/1-2-3", "1", "2-3"]],
|
2481
|
-
["name/foo-bar/route", null],
|
2482
|
-
["name/test/route", null]
|
2483
|
-
],
|
2484
|
-
[
|
2485
|
-
[{}, "name-"],
|
2486
|
-
[{ attr1: "test" }, "name/test-"],
|
2487
|
-
[{ attr2: "attr" }, "name-attr"]
|
2488
|
-
]
|
2489
|
-
],
|
2490
2384
|
/**
|
2491
2385
|
* Case-sensitive compile tokensToFunction params.
|
2492
2386
|
*/
|
@@ -2499,9 +2393,8 @@ var TESTS = [
|
|
2499
2393
|
{
|
2500
2394
|
name: "test",
|
2501
2395
|
prefix: "/",
|
2502
|
-
|
2503
|
-
|
2504
|
-
repeat: false,
|
2396
|
+
suffix: "",
|
2397
|
+
modifier: "",
|
2505
2398
|
pattern: "abc"
|
2506
2399
|
}
|
2507
2400
|
],
|
@@ -2521,9 +2414,8 @@ var TESTS = [
|
|
2521
2414
|
{
|
2522
2415
|
name: "test",
|
2523
2416
|
prefix: "/",
|
2524
|
-
|
2525
|
-
|
2526
|
-
repeat: false,
|
2417
|
+
suffix: "",
|
2418
|
+
modifier: "",
|
2527
2419
|
pattern: "abc"
|
2528
2420
|
}
|
2529
2421
|
],
|
@@ -2546,9 +2438,8 @@ var TESTS = [
|
|
2546
2438
|
{
|
2547
2439
|
name: "test",
|
2548
2440
|
prefix: "/",
|
2549
|
-
|
2550
|
-
|
2551
|
-
repeat: false,
|
2441
|
+
suffix: "",
|
2442
|
+
modifier: "",
|
2552
2443
|
pattern: "\\d+(?:\\.\\d+)?"
|
2553
2444
|
}
|
2554
2445
|
],
|
@@ -2575,9 +2466,8 @@ var TESTS = [
|
|
2575
2466
|
{
|
2576
2467
|
name: "test",
|
2577
2468
|
prefix: "/",
|
2578
|
-
|
2579
|
-
|
2580
|
-
repeat: false,
|
2469
|
+
suffix: "",
|
2470
|
+
modifier: "",
|
2581
2471
|
pattern: "(?!login)[^/]+"
|
2582
2472
|
}
|
2583
2473
|
],
|
@@ -2589,6 +2479,81 @@ var TESTS = [
|
|
2589
2479
|
[{ test: "route" }, "/route"],
|
2590
2480
|
[{ test: "login" }, null]
|
2591
2481
|
]
|
2482
|
+
],
|
2483
|
+
/**
|
2484
|
+
* https://github.com/pillarjs/path-to-regexp/issues/206
|
2485
|
+
*/
|
2486
|
+
[
|
2487
|
+
"/user(s)?/:user",
|
2488
|
+
undefined,
|
2489
|
+
[
|
2490
|
+
"/user",
|
2491
|
+
{
|
2492
|
+
name: 0,
|
2493
|
+
prefix: "",
|
2494
|
+
suffix: "",
|
2495
|
+
modifier: "?",
|
2496
|
+
pattern: "s"
|
2497
|
+
},
|
2498
|
+
{
|
2499
|
+
name: "user",
|
2500
|
+
prefix: "/",
|
2501
|
+
suffix: "",
|
2502
|
+
modifier: "",
|
2503
|
+
pattern: "[^\\/#\\?]+?"
|
2504
|
+
}
|
2505
|
+
],
|
2506
|
+
[
|
2507
|
+
["/user/123", ["/user/123", undefined, "123"]],
|
2508
|
+
["/users/123", ["/users/123", "s", "123"]]
|
2509
|
+
],
|
2510
|
+
[[{ user: "123" }, "/user/123"]]
|
2511
|
+
],
|
2512
|
+
/**
|
2513
|
+
* https://github.com/pillarjs/path-to-regexp/issues/209
|
2514
|
+
*/
|
2515
|
+
[
|
2516
|
+
"/whatever/:foo\\?query=str",
|
2517
|
+
undefined,
|
2518
|
+
[
|
2519
|
+
"/whatever",
|
2520
|
+
{
|
2521
|
+
name: "foo",
|
2522
|
+
prefix: "/",
|
2523
|
+
suffix: "",
|
2524
|
+
modifier: "",
|
2525
|
+
pattern: "[^\\/#\\?]+?"
|
2526
|
+
},
|
2527
|
+
"?query=str"
|
2528
|
+
],
|
2529
|
+
[["/whatever/123?query=str", ["/whatever/123?query=str", "123"]]],
|
2530
|
+
[[{ foo: "123" }, "/whatever/123?query=str"]]
|
2531
|
+
],
|
2532
|
+
[
|
2533
|
+
"/whatever/:foo",
|
2534
|
+
{
|
2535
|
+
end: false
|
2536
|
+
},
|
2537
|
+
[
|
2538
|
+
"/whatever",
|
2539
|
+
{
|
2540
|
+
name: "foo",
|
2541
|
+
prefix: "/",
|
2542
|
+
suffix: "",
|
2543
|
+
modifier: "",
|
2544
|
+
pattern: "[^\\/#\\?]+?"
|
2545
|
+
}
|
2546
|
+
],
|
2547
|
+
[
|
2548
|
+
["/whatever/123", ["/whatever/123", "123"]],
|
2549
|
+
["/whatever/123/path", ["/whatever/123", "123"]],
|
2550
|
+
["/whatever/123#fragment", ["/whatever/123", "123"]],
|
2551
|
+
["/whatever/123?query=str", ["/whatever/123", "123"]]
|
2552
|
+
],
|
2553
|
+
[
|
2554
|
+
[{ foo: "123" }, "/whatever/123"],
|
2555
|
+
[{ foo: "#" }, null]
|
2556
|
+
]
|
2592
2557
|
]
|
2593
2558
|
];
|
2594
2559
|
/**
|
@@ -2599,10 +2564,9 @@ describe("path-to-regexp", function () {
|
|
2599
2564
|
var TEST_PARAM = {
|
2600
2565
|
name: "id",
|
2601
2566
|
prefix: "/",
|
2602
|
-
|
2603
|
-
|
2604
|
-
|
2605
|
-
pattern: "[^\\/]+?"
|
2567
|
+
suffix: "",
|
2568
|
+
modifier: "",
|
2569
|
+
pattern: "[^\\/#\\?]+?"
|
2606
2570
|
};
|
2607
2571
|
describe("arguments", function () {
|
2608
2572
|
it("should work without different call combinations", function () {
|
@@ -2622,15 +2586,40 @@ describe("path-to-regexp", function () {
|
|
2622
2586
|
expect(keys).toEqual([TEST_PARAM]);
|
2623
2587
|
expect(exec(re, "/user/123/show")).toEqual(["/user/123", "123"]);
|
2624
2588
|
});
|
2625
|
-
it("should throw on non-capturing pattern
|
2589
|
+
it("should throw on non-capturing pattern", function () {
|
2626
2590
|
expect(function () {
|
2627
2591
|
pathToRegexp.pathToRegexp("/:foo(?:\\d+(\\.\\d+)?)");
|
2628
|
-
}).toThrow(new TypeError(
|
2592
|
+
}).toThrow(new TypeError('Pattern cannot start with "?" at 6'));
|
2629
2593
|
});
|
2630
|
-
it("should throw on nested capturing
|
2594
|
+
it("should throw on nested capturing group", function () {
|
2631
2595
|
expect(function () {
|
2632
2596
|
pathToRegexp.pathToRegexp("/:foo(\\d+(\\.\\d+)?)");
|
2633
|
-
}).toThrow(new TypeError("Capturing groups are not allowed
|
2597
|
+
}).toThrow(new TypeError("Capturing groups are not allowed at 9"));
|
2598
|
+
});
|
2599
|
+
it("should throw on unbalanced pattern", function () {
|
2600
|
+
expect(function () {
|
2601
|
+
pathToRegexp.pathToRegexp("/:foo(abc");
|
2602
|
+
}).toThrow(new TypeError("Unbalanced pattern at 5"));
|
2603
|
+
});
|
2604
|
+
it("should throw on missing pattern", function () {
|
2605
|
+
expect(function () {
|
2606
|
+
pathToRegexp.pathToRegexp("/:foo()");
|
2607
|
+
}).toThrow(new TypeError("Missing pattern at 5"));
|
2608
|
+
});
|
2609
|
+
it("should throw on missing name", function () {
|
2610
|
+
expect(function () {
|
2611
|
+
pathToRegexp.pathToRegexp("/:(test)");
|
2612
|
+
}).toThrow(new TypeError("Missing parameter name at 1"));
|
2613
|
+
});
|
2614
|
+
it("should throw on nested groups", function () {
|
2615
|
+
expect(function () {
|
2616
|
+
pathToRegexp.pathToRegexp("/{a{b:foo}}");
|
2617
|
+
}).toThrow(new TypeError("Unexpected OPEN at 3, expected CLOSE"));
|
2618
|
+
});
|
2619
|
+
it("should throw on misplaced modifier", function () {
|
2620
|
+
expect(function () {
|
2621
|
+
pathToRegexp.pathToRegexp("/foo?");
|
2622
|
+
}).toThrow(new TypeError("Unexpected MODIFIER at 4, expected END"));
|
2634
2623
|
});
|
2635
2624
|
});
|
2636
2625
|
describe("tokens", function () {
|
@@ -2731,22 +2720,6 @@ describe("path-to-regexp", function () {
|
|
2731
2720
|
}).toThrow(new TypeError('Expected all "foo" to match "\\d+", but got "a"'));
|
2732
2721
|
});
|
2733
2722
|
});
|
2734
|
-
describe("normalize pathname", function () {
|
2735
|
-
it("should match normalized pathnames", function () {
|
2736
|
-
var re = pathToRegexp.pathToRegexp("/caf\u00E9");
|
2737
|
-
var input = encodeURI("/cafe\u0301");
|
2738
|
-
expect(exec(re, input)).toEqual(null);
|
2739
|
-
expect(exec(re, pathToRegexp.normalizePathname(input).normalize())).toEqual(["/caf\u00E9"]);
|
2740
|
-
});
|
2741
|
-
it("should not normalize whitelisted characters", function () {
|
2742
|
-
var input = "/test/route%2F%25";
|
2743
|
-
expect(pathToRegexp.normalizePathname(input)).toEqual("/test/route%2F%25");
|
2744
|
-
});
|
2745
|
-
it("should fix repeated slashes", function () {
|
2746
|
-
var input = encodeURI("/test///route");
|
2747
|
-
expect(pathToRegexp.normalizePathname(input)).toEqual("/test/route");
|
2748
|
-
});
|
2749
|
-
});
|
2750
2723
|
});
|
2751
2724
|
/**
|
2752
2725
|
* Execute a regular expression and return a flat array for comparison.
|