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