pdfjs-dist 2.2.228 → 2.6.347
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.
Potentially problematic release.
This version of pdfjs-dist might be problematic. Click here for more details.
- package/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +8816 -19300
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +22 -1
- package/build/pdf.worker.entry.js +5 -3
- package/build/pdf.worker.js +27185 -35746
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +26665 -0
- package/es5/build/pdf.js.map +1 -0
- package/es5/build/pdf.min.js +22 -0
- package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
- package/es5/build/pdf.worker.js +61231 -0
- package/es5/build/pdf.worker.js.map +1 -0
- package/es5/build/pdf.worker.min.js +22 -0
- package/es5/image_decoders/pdf.image_decoders.js +12529 -0
- package/es5/image_decoders/pdf.image_decoders.js.map +1 -0
- package/es5/image_decoders/pdf.image_decoders.min.js +22 -0
- package/es5/web/images/annotation-check.svg +11 -0
- package/es5/web/images/annotation-comment.svg +16 -0
- package/es5/web/images/annotation-help.svg +26 -0
- package/es5/web/images/annotation-insert.svg +10 -0
- package/es5/web/images/annotation-key.svg +11 -0
- package/es5/web/images/annotation-newparagraph.svg +11 -0
- package/es5/web/images/annotation-noicon.svg +7 -0
- package/es5/web/images/annotation-note.svg +42 -0
- package/es5/web/images/annotation-paragraph.svg +16 -0
- package/es5/web/images/loading-icon.gif +0 -0
- package/es5/web/images/shadow.png +0 -0
- package/es5/web/pdf_viewer.css +406 -0
- package/es5/web/pdf_viewer.js +7886 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +1498 -4832
- package/image_decoders/pdf.image_decoders.js.map +1 -1
- package/image_decoders/pdf.image_decoders.min.js +22 -1
- package/lib/README.md +7 -0
- package/lib/core/annotation.js +1144 -927
- package/lib/core/arithmetic_decoder.js +81 -97
- package/lib/core/bidi.js +54 -46
- package/lib/core/ccitt.js +88 -81
- package/lib/core/ccitt_stream.js +15 -14
- package/lib/core/cff_parser.js +747 -716
- package/lib/core/charsets.js +4 -4
- package/lib/core/chunked_stream.js +462 -553
- package/lib/core/cmap.js +231 -277
- package/lib/core/colorspace.js +715 -857
- package/lib/core/core_utils.js +57 -52
- package/lib/core/crypto.js +416 -437
- package/lib/core/document.js +629 -670
- package/lib/core/encodings.js +15 -15
- package/lib/core/evaluator.js +3229 -2800
- package/lib/core/font_renderer.js +135 -178
- package/lib/core/fonts.js +602 -534
- package/lib/core/function.js +355 -279
- package/lib/core/glyphlist.js +4527 -4526
- package/lib/core/image.js +442 -439
- package/lib/core/image_utils.js +221 -61
- package/lib/core/jbig2.js +325 -316
- package/lib/core/jbig2_stream.js +18 -17
- package/lib/core/jpeg_stream.js +21 -26
- package/lib/core/jpg.js +289 -233
- package/lib/core/jpx.js +161 -143
- package/lib/core/jpx_stream.js +28 -28
- package/lib/core/metrics.js +2928 -2928
- package/lib/core/murmurhash3.js +87 -102
- package/lib/core/obj.js +1343 -1300
- package/lib/core/operator_list.js +90 -67
- package/lib/core/parser.js +990 -987
- package/lib/core/pattern.js +105 -77
- package/lib/core/pdf_manager.js +149 -316
- package/lib/core/primitives.js +156 -104
- package/lib/core/ps_parser.js +175 -214
- package/lib/core/standard_fonts.js +237 -236
- package/lib/core/stream.js +94 -74
- package/lib/core/type1_parser.js +89 -69
- package/lib/core/unicode.js +1654 -1654
- package/lib/core/worker.js +275 -290
- package/lib/core/worker_stream.js +101 -210
- package/lib/core/writer.js +242 -0
- package/lib/display/annotation_layer.js +772 -1041
- package/lib/display/annotation_storage.js +89 -0
- package/lib/display/api.js +1575 -1868
- package/lib/display/api_compatibility.js +12 -17
- package/lib/display/canvas.js +370 -222
- package/lib/display/content_disposition.js +40 -59
- package/lib/display/display_utils.js +341 -536
- package/lib/display/fetch_stream.js +188 -304
- package/lib/display/font_loader.js +282 -414
- package/lib/display/metadata.js +81 -99
- package/lib/display/network.js +362 -511
- package/lib/display/network_utils.js +25 -18
- package/lib/display/node_stream.js +283 -465
- package/lib/display/node_utils.js +87 -0
- package/lib/display/optional_content_config.js +184 -0
- package/lib/display/pattern_helper.js +93 -44
- package/lib/display/svg.js +1163 -1401
- package/lib/display/text_layer.js +154 -137
- package/lib/display/transport_stream.js +237 -375
- package/lib/display/webgl.js +70 -83
- package/lib/display/worker_options.js +3 -3
- package/lib/display/xml_parser.js +303 -392
- package/lib/examples/node/domstubs.js +37 -37
- package/lib/pdf.js +220 -58
- package/lib/pdf.worker.js +14 -6
- package/lib/shared/compatibility.js +3 -246
- package/lib/shared/is_node.js +7 -6
- package/lib/shared/message_handler.js +327 -332
- package/lib/shared/util.js +271 -306
- package/lib/test/unit/annotation_spec.js +1902 -763
- package/lib/test/unit/annotation_storage_spec.js +83 -0
- package/lib/test/unit/api_spec.js +790 -592
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +73 -72
- package/lib/test/unit/clitests_helper.js +7 -9
- package/lib/test/unit/cmap_spec.js +86 -88
- package/lib/test/unit/colorspace_spec.js +346 -154
- package/lib/test/unit/core_utils_spec.js +125 -105
- package/lib/test/unit/crypto_spec.js +232 -185
- package/lib/test/unit/custom_spec.js +150 -24
- package/lib/test/unit/display_svg_spec.js +34 -39
- package/lib/test/unit/display_utils_spec.js +139 -149
- package/lib/test/unit/document_spec.js +128 -17
- package/lib/test/unit/encodings_spec.js +12 -34
- package/lib/test/unit/evaluator_spec.js +112 -91
- package/lib/test/unit/fetch_stream_spec.js +31 -29
- package/lib/test/unit/function_spec.js +206 -204
- package/lib/test/unit/jasmine-boot.js +48 -32
- package/lib/test/unit/message_handler_spec.js +173 -159
- package/lib/test/unit/metadata_spec.js +71 -71
- package/lib/test/unit/murmurhash3_spec.js +12 -12
- package/lib/test/unit/network_spec.js +13 -11
- package/lib/test/unit/network_utils_spec.js +158 -144
- package/lib/test/unit/node_stream_spec.js +76 -90
- package/lib/test/unit/parser_spec.js +108 -114
- package/lib/test/unit/pdf_find_controller_spec.js +55 -86
- package/lib/test/unit/pdf_find_utils_spec.js +32 -32
- package/lib/test/unit/pdf_history_spec.js +32 -32
- package/lib/test/unit/primitives_spec.js +337 -156
- package/lib/test/unit/stream_spec.js +16 -14
- package/lib/test/unit/test_utils.js +91 -304
- package/lib/test/unit/testreporter.js +33 -22
- package/lib/test/unit/type1_parser_spec.js +42 -42
- package/lib/test/unit/ui_utils_spec.js +299 -461
- package/lib/test/unit/unicode_spec.js +42 -42
- package/lib/test/unit/util_spec.js +129 -149
- package/lib/test/unit/writer_spec.js +84 -0
- package/lib/web/annotation_layer_builder.js +78 -111
- package/lib/web/app.js +1542 -1267
- package/lib/web/app_options.js +76 -91
- package/lib/web/base_tree_viewer.js +100 -0
- package/lib/web/base_viewer.js +869 -834
- package/lib/web/chromecom.js +165 -252
- package/lib/web/debugger.js +149 -205
- package/lib/web/download_manager.js +34 -58
- package/lib/web/firefox_print_service.js +62 -34
- package/lib/web/firefoxcom.js +206 -374
- package/lib/web/genericcom.js +26 -108
- package/lib/web/genericl10n.js +24 -153
- package/lib/web/grab_to_pan.js +30 -30
- package/lib/web/interfaces.js +80 -254
- package/lib/web/overlay_manager.js +70 -246
- package/lib/web/password_prompt.js +38 -64
- package/lib/web/pdf_attachment_viewer.js +150 -126
- package/lib/web/pdf_cursor_tools.js +75 -102
- package/lib/web/pdf_document_properties.js +229 -383
- package/lib/web/pdf_find_bar.js +136 -170
- package/lib/web/pdf_find_controller.js +492 -548
- package/lib/web/pdf_find_utils.js +13 -13
- package/lib/web/pdf_history.js +397 -406
- package/lib/web/pdf_layer_viewer.js +208 -0
- package/lib/web/pdf_link_service.js +304 -348
- package/lib/web/pdf_outline_viewer.js +119 -212
- package/lib/web/pdf_page_view.js +474 -513
- package/lib/web/pdf_presentation_mode.js +308 -357
- package/lib/web/pdf_print_service.js +96 -110
- package/lib/web/pdf_rendering_queue.js +87 -108
- package/lib/web/pdf_sidebar.js +286 -302
- package/lib/web/pdf_sidebar_resizer.js +92 -119
- package/lib/web/pdf_single_page_viewer.js +77 -126
- package/lib/web/pdf_thumbnail_view.js +289 -297
- package/lib/web/pdf_thumbnail_viewer.js +202 -206
- package/lib/web/pdf_viewer.component.js +20 -21
- package/lib/web/pdf_viewer.js +55 -115
- package/lib/web/preferences.js +69 -273
- package/lib/web/secondary_toolbar.js +164 -196
- package/lib/web/text_layer_builder.js +284 -319
- package/lib/web/toolbar.js +217 -210
- package/lib/web/ui_utils.js +274 -421
- package/lib/web/view_history.js +52 -226
- package/lib/web/viewer_compatibility.js +21 -6
- package/package.json +4 -9
- package/types/display/annotation_layer.d.ts +61 -0
- package/types/display/annotation_storage.d.ts +36 -0
- package/types/display/api.d.ts +1107 -0
- package/types/display/api_compatibility.d.ts +1 -0
- package/types/display/canvas.d.ts +4 -0
- package/types/display/content_disposition.d.ts +7 -0
- package/types/display/display_utils.d.ts +243 -0
- package/types/display/fetch_stream.d.ts +67 -0
- package/types/display/font_loader.d.ts +19 -0
- package/types/display/metadata.d.ts +9 -0
- package/types/display/network.d.ts +80 -0
- package/types/display/network_utils.d.ts +14 -0
- package/types/display/node_stream.d.ts +72 -0
- package/types/display/node_utils.d.ts +6 -0
- package/types/display/optional_content_config.d.ts +12 -0
- package/types/display/pattern_helper.d.ts +5 -0
- package/types/display/svg.d.ts +2 -0
- package/types/display/text_layer.d.ts +83 -0
- package/types/display/transport_stream.d.ts +57 -0
- package/types/display/webgl.d.ts +20 -0
- package/types/display/worker_options.d.ts +27 -0
- package/types/display/xml_parser.d.ts +35 -0
- package/types/pdf.d.ts +33 -0
- package/types/shared/compatibility.d.ts +1 -0
- package/types/shared/is_node.d.ts +1 -0
- package/types/shared/message_handler.d.ts +62 -0
- package/types/shared/util.d.ts +421 -0
- package/web/images/shadow.png +0 -0
- package/web/pdf_viewer.css +29 -27
- package/web/pdf_viewer.js +3524 -4746
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +6 -5
- package/external/streams/streams-lib.js +0 -3962
- package/external/url/url-lib.js +0 -627
- package/lib/shared/streams_polyfill.js +0 -43
- package/lib/shared/url_polyfill.js +0 -56
- package/web/images/texture.png +0 -0
@@ -2,7 +2,7 @@
|
|
2
2
|
* @licstart The following is the entire license notice for the
|
3
3
|
* Javascript code in this page
|
4
4
|
*
|
5
|
-
* Copyright
|
5
|
+
* Copyright 2020 Mozilla Foundation
|
6
6
|
*
|
7
7
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
8
|
* you may not use this file except in compliance with the License.
|
@@ -21,29 +21,29 @@
|
|
21
21
|
*/
|
22
22
|
"use strict";
|
23
23
|
|
24
|
-
var _network_utils = require("../../display/network_utils");
|
24
|
+
var _network_utils = require("../../display/network_utils.js");
|
25
25
|
|
26
|
-
var _util = require("../../shared/util");
|
26
|
+
var _util = require("../../shared/util.js");
|
27
27
|
|
28
|
-
describe(
|
29
|
-
describe(
|
30
|
-
it(
|
28
|
+
describe("network_utils", function () {
|
29
|
+
describe("validateRangeRequestCapabilities", function () {
|
30
|
+
it("rejects range chunk sizes that are not larger than zero", function () {
|
31
31
|
expect(function () {
|
32
32
|
(0, _network_utils.validateRangeRequestCapabilities)({
|
33
33
|
rangeChunkSize: 0
|
34
34
|
});
|
35
|
-
}).toThrow(new Error(
|
35
|
+
}).toThrow(new Error("Range chunk size must be larger than zero"));
|
36
36
|
});
|
37
|
-
it(
|
37
|
+
it("rejects disabled or non-HTTP range requests", function () {
|
38
38
|
expect((0, _network_utils.validateRangeRequestCapabilities)({
|
39
39
|
disableRange: true,
|
40
40
|
isHttp: true,
|
41
|
-
getResponseHeader:
|
42
|
-
if (headerName ===
|
41
|
+
getResponseHeader: headerName => {
|
42
|
+
if (headerName === "Content-Length") {
|
43
43
|
return 8;
|
44
44
|
}
|
45
45
|
|
46
|
-
throw new Error(
|
46
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
47
47
|
},
|
48
48
|
rangeChunkSize: 64
|
49
49
|
})).toEqual({
|
@@ -53,12 +53,12 @@ describe('network_utils', function () {
|
|
53
53
|
expect((0, _network_utils.validateRangeRequestCapabilities)({
|
54
54
|
disableRange: false,
|
55
55
|
isHttp: false,
|
56
|
-
getResponseHeader:
|
57
|
-
if (headerName ===
|
56
|
+
getResponseHeader: headerName => {
|
57
|
+
if (headerName === "Content-Length") {
|
58
58
|
return 8;
|
59
59
|
}
|
60
60
|
|
61
|
-
throw new Error(
|
61
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
62
62
|
},
|
63
63
|
rangeChunkSize: 64
|
64
64
|
})).toEqual({
|
@@ -66,18 +66,18 @@ describe('network_utils', function () {
|
|
66
66
|
suggestedLength: 8
|
67
67
|
});
|
68
68
|
});
|
69
|
-
it(
|
69
|
+
it("rejects invalid Accept-Ranges header values", function () {
|
70
70
|
expect((0, _network_utils.validateRangeRequestCapabilities)({
|
71
71
|
disableRange: false,
|
72
72
|
isHttp: true,
|
73
|
-
getResponseHeader:
|
74
|
-
if (headerName ===
|
75
|
-
return
|
76
|
-
} else if (headerName ===
|
73
|
+
getResponseHeader: headerName => {
|
74
|
+
if (headerName === "Accept-Ranges") {
|
75
|
+
return "none";
|
76
|
+
} else if (headerName === "Content-Length") {
|
77
77
|
return 8;
|
78
78
|
}
|
79
79
|
|
80
|
-
throw new Error(
|
80
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
81
81
|
},
|
82
82
|
rangeChunkSize: 64
|
83
83
|
})).toEqual({
|
@@ -85,20 +85,20 @@ describe('network_utils', function () {
|
|
85
85
|
suggestedLength: 8
|
86
86
|
});
|
87
87
|
});
|
88
|
-
it(
|
88
|
+
it("rejects invalid Content-Encoding header values", function () {
|
89
89
|
expect((0, _network_utils.validateRangeRequestCapabilities)({
|
90
90
|
disableRange: false,
|
91
91
|
isHttp: true,
|
92
|
-
getResponseHeader:
|
93
|
-
if (headerName ===
|
94
|
-
return
|
95
|
-
} else if (headerName ===
|
96
|
-
return
|
97
|
-
} else if (headerName ===
|
92
|
+
getResponseHeader: headerName => {
|
93
|
+
if (headerName === "Accept-Ranges") {
|
94
|
+
return "bytes";
|
95
|
+
} else if (headerName === "Content-Encoding") {
|
96
|
+
return "gzip";
|
97
|
+
} else if (headerName === "Content-Length") {
|
98
98
|
return 8;
|
99
99
|
}
|
100
100
|
|
101
|
-
throw new Error(
|
101
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
102
102
|
},
|
103
103
|
rangeChunkSize: 64
|
104
104
|
})).toEqual({
|
@@ -106,20 +106,20 @@ describe('network_utils', function () {
|
|
106
106
|
suggestedLength: 8
|
107
107
|
});
|
108
108
|
});
|
109
|
-
it(
|
109
|
+
it("rejects invalid Content-Length header values", function () {
|
110
110
|
expect((0, _network_utils.validateRangeRequestCapabilities)({
|
111
111
|
disableRange: false,
|
112
112
|
isHttp: true,
|
113
|
-
getResponseHeader:
|
114
|
-
if (headerName ===
|
115
|
-
return
|
116
|
-
} else if (headerName ===
|
113
|
+
getResponseHeader: headerName => {
|
114
|
+
if (headerName === "Accept-Ranges") {
|
115
|
+
return "bytes";
|
116
|
+
} else if (headerName === "Content-Encoding") {
|
117
117
|
return null;
|
118
|
-
} else if (headerName ===
|
119
|
-
return
|
118
|
+
} else if (headerName === "Content-Length") {
|
119
|
+
return "eight";
|
120
120
|
}
|
121
121
|
|
122
|
-
throw new Error(
|
122
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
123
123
|
},
|
124
124
|
rangeChunkSize: 64
|
125
125
|
})).toEqual({
|
@@ -127,20 +127,20 @@ describe('network_utils', function () {
|
|
127
127
|
suggestedLength: undefined
|
128
128
|
});
|
129
129
|
});
|
130
|
-
it(
|
130
|
+
it("rejects file sizes that are too small for range requests", function () {
|
131
131
|
expect((0, _network_utils.validateRangeRequestCapabilities)({
|
132
132
|
disableRange: false,
|
133
133
|
isHttp: true,
|
134
|
-
getResponseHeader:
|
135
|
-
if (headerName ===
|
136
|
-
return
|
137
|
-
} else if (headerName ===
|
134
|
+
getResponseHeader: headerName => {
|
135
|
+
if (headerName === "Accept-Ranges") {
|
136
|
+
return "bytes";
|
137
|
+
} else if (headerName === "Content-Encoding") {
|
138
138
|
return null;
|
139
|
-
} else if (headerName ===
|
139
|
+
} else if (headerName === "Content-Length") {
|
140
140
|
return 8;
|
141
141
|
}
|
142
142
|
|
143
|
-
throw new Error(
|
143
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
144
144
|
},
|
145
145
|
rangeChunkSize: 64
|
146
146
|
})).toEqual({
|
@@ -148,20 +148,20 @@ describe('network_utils', function () {
|
|
148
148
|
suggestedLength: 8
|
149
149
|
});
|
150
150
|
});
|
151
|
-
it(
|
151
|
+
it("accepts file sizes large enough for range requests", function () {
|
152
152
|
expect((0, _network_utils.validateRangeRequestCapabilities)({
|
153
153
|
disableRange: false,
|
154
154
|
isHttp: true,
|
155
|
-
getResponseHeader:
|
156
|
-
if (headerName ===
|
157
|
-
return
|
158
|
-
} else if (headerName ===
|
155
|
+
getResponseHeader: headerName => {
|
156
|
+
if (headerName === "Accept-Ranges") {
|
157
|
+
return "bytes";
|
158
|
+
} else if (headerName === "Content-Encoding") {
|
159
159
|
return null;
|
160
|
-
} else if (headerName ===
|
160
|
+
} else if (headerName === "Content-Length") {
|
161
161
|
return 8192;
|
162
162
|
}
|
163
163
|
|
164
|
-
throw new Error(
|
164
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
165
165
|
},
|
166
166
|
rangeChunkSize: 64
|
167
167
|
})).toEqual({
|
@@ -170,162 +170,176 @@ describe('network_utils', function () {
|
|
170
170
|
});
|
171
171
|
});
|
172
172
|
});
|
173
|
-
describe(
|
174
|
-
it(
|
175
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
176
|
-
if (headerName ===
|
173
|
+
describe("extractFilenameFromHeader", function () {
|
174
|
+
it("returns null when content disposition header is blank", function () {
|
175
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
176
|
+
if (headerName === "Content-Disposition") {
|
177
177
|
return null;
|
178
178
|
}
|
179
179
|
|
180
|
-
throw new Error(
|
180
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
181
181
|
})).toBeNull();
|
182
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
183
|
-
if (headerName ===
|
182
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
183
|
+
if (headerName === "Content-Disposition") {
|
184
184
|
return undefined;
|
185
185
|
}
|
186
186
|
|
187
|
-
throw new Error(
|
187
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
188
188
|
})).toBeNull();
|
189
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
190
|
-
if (headerName ===
|
191
|
-
return
|
189
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
190
|
+
if (headerName === "Content-Disposition") {
|
191
|
+
return "";
|
192
192
|
}
|
193
193
|
|
194
|
-
throw new Error(
|
194
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
195
195
|
})).toBeNull();
|
196
196
|
});
|
197
|
-
it(
|
198
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
199
|
-
if (headerName ===
|
200
|
-
return
|
197
|
+
it("gets the filename from the response header", function () {
|
198
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
199
|
+
if (headerName === "Content-Disposition") {
|
200
|
+
return "inline";
|
201
201
|
}
|
202
202
|
|
203
|
-
throw new Error(
|
203
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
204
204
|
})).toBeNull();
|
205
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
206
|
-
if (headerName ===
|
207
|
-
return
|
205
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
206
|
+
if (headerName === "Content-Disposition") {
|
207
|
+
return "attachment";
|
208
208
|
}
|
209
209
|
|
210
|
-
throw new Error(
|
210
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
211
211
|
})).toBeNull();
|
212
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
213
|
-
if (headerName ===
|
212
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
213
|
+
if (headerName === "Content-Disposition") {
|
214
214
|
return 'attachment; filename="filename.pdf"';
|
215
215
|
}
|
216
216
|
|
217
|
-
throw new Error(
|
218
|
-
})).toEqual(
|
219
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
220
|
-
if (headerName ===
|
217
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
218
|
+
})).toEqual("filename.pdf");
|
219
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
220
|
+
if (headerName === "Content-Disposition") {
|
221
221
|
return 'attachment; filename="filename.pdf and spaces.pdf"';
|
222
222
|
}
|
223
223
|
|
224
|
-
throw new Error(
|
225
|
-
})).toEqual(
|
226
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
227
|
-
if (headerName ===
|
224
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
225
|
+
})).toEqual("filename.pdf and spaces.pdf");
|
226
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
227
|
+
if (headerName === "Content-Disposition") {
|
228
228
|
return 'attachment; filename="tl;dr.pdf"';
|
229
229
|
}
|
230
230
|
|
231
|
-
throw new Error(
|
232
|
-
})).toEqual(
|
233
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
234
|
-
if (headerName ===
|
235
|
-
return
|
231
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
232
|
+
})).toEqual("tl;dr.pdf");
|
233
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
234
|
+
if (headerName === "Content-Disposition") {
|
235
|
+
return "attachment; filename=filename.pdf";
|
236
236
|
}
|
237
237
|
|
238
|
-
throw new Error(
|
239
|
-
})).toEqual(
|
240
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
241
|
-
if (headerName ===
|
242
|
-
return
|
238
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
239
|
+
})).toEqual("filename.pdf");
|
240
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
241
|
+
if (headerName === "Content-Disposition") {
|
242
|
+
return "attachment; filename=filename.pdf someotherparam";
|
243
243
|
}
|
244
244
|
|
245
|
-
throw new Error(
|
246
|
-
})).toEqual(
|
245
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
246
|
+
})).toEqual("filename.pdf");
|
247
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
248
|
+
if (headerName === "Content-Disposition") {
|
249
|
+
return 'attachment; filename="%e4%b8%ad%e6%96%87.pdf"';
|
250
|
+
}
|
251
|
+
|
252
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
253
|
+
})).toEqual("中文.pdf");
|
254
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
255
|
+
if (headerName === "Content-Disposition") {
|
256
|
+
return 'attachment; filename="100%.pdf"';
|
257
|
+
}
|
258
|
+
|
259
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
260
|
+
})).toEqual("100%.pdf");
|
247
261
|
});
|
248
|
-
it(
|
249
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
250
|
-
if (headerName ===
|
251
|
-
return
|
262
|
+
it("gets the filename from the response header (RFC 6266)", function () {
|
263
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
264
|
+
if (headerName === "Content-Disposition") {
|
265
|
+
return "attachment; filename*=filename.pdf";
|
252
266
|
}
|
253
267
|
|
254
|
-
throw new Error(
|
255
|
-
})).toEqual(
|
256
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
257
|
-
if (headerName ===
|
258
|
-
return
|
268
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
269
|
+
})).toEqual("filename.pdf");
|
270
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
271
|
+
if (headerName === "Content-Disposition") {
|
272
|
+
return "attachment; filename*=''filename.pdf";
|
259
273
|
}
|
260
274
|
|
261
|
-
throw new Error(
|
262
|
-
})).toEqual(
|
263
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
264
|
-
if (headerName ===
|
265
|
-
return
|
275
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
276
|
+
})).toEqual("filename.pdf");
|
277
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
278
|
+
if (headerName === "Content-Disposition") {
|
279
|
+
return "attachment; filename*=utf-8''filename.pdf";
|
266
280
|
}
|
267
281
|
|
268
|
-
throw new Error(
|
269
|
-
})).toEqual(
|
270
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
271
|
-
if (headerName ===
|
272
|
-
return
|
282
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
283
|
+
})).toEqual("filename.pdf");
|
284
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
285
|
+
if (headerName === "Content-Disposition") {
|
286
|
+
return "attachment; filename=no.pdf; filename*=utf-8''filename.pdf";
|
273
287
|
}
|
274
288
|
|
275
|
-
throw new Error(
|
276
|
-
})).toEqual(
|
277
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
278
|
-
if (headerName ===
|
279
|
-
return
|
289
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
290
|
+
})).toEqual("filename.pdf");
|
291
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
292
|
+
if (headerName === "Content-Disposition") {
|
293
|
+
return "attachment; filename*=utf-8''filename.pdf; filename=no.pdf";
|
280
294
|
}
|
281
295
|
|
282
|
-
throw new Error(
|
283
|
-
})).toEqual(
|
296
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
297
|
+
})).toEqual("filename.pdf");
|
284
298
|
});
|
285
|
-
it(
|
286
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
287
|
-
if (headerName ===
|
288
|
-
return
|
299
|
+
it("gets the filename from the response header (RFC 2231)", function () {
|
300
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
301
|
+
if (headerName === "Content-Disposition") {
|
302
|
+
return "attachment; filename*0=filename; filename*1=.pdf";
|
289
303
|
}
|
290
304
|
|
291
|
-
throw new Error(
|
292
|
-
})).toEqual(
|
305
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
306
|
+
})).toEqual("filename.pdf");
|
293
307
|
});
|
294
|
-
it(
|
295
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
296
|
-
if (headerName ===
|
308
|
+
it("only extracts filename with pdf extension", function () {
|
309
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
310
|
+
if (headerName === "Content-Disposition") {
|
297
311
|
return 'attachment; filename="filename.png"';
|
298
312
|
}
|
299
313
|
|
300
|
-
throw new Error(
|
314
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
301
315
|
})).toBeNull();
|
302
316
|
});
|
303
|
-
it(
|
304
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
305
|
-
if (headerName ===
|
317
|
+
it("extension validation is case insensitive", function () {
|
318
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
319
|
+
if (headerName === "Content-Disposition") {
|
306
320
|
return 'form-data; name="fieldName"; filename="file.PdF"';
|
307
321
|
}
|
308
322
|
|
309
|
-
throw new Error(
|
310
|
-
})).toEqual(
|
323
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
324
|
+
})).toEqual("file.PdF");
|
311
325
|
});
|
312
326
|
});
|
313
|
-
describe(
|
314
|
-
it(
|
315
|
-
expect((0, _network_utils.createResponseStatusError)(404,
|
316
|
-
expect((0, _network_utils.createResponseStatusError)(0,
|
327
|
+
describe("createResponseStatusError", function () {
|
328
|
+
it("handles missing PDF file responses", function () {
|
329
|
+
expect((0, _network_utils.createResponseStatusError)(404, "https://foo.com/bar.pdf")).toEqual(new _util.MissingPDFException('Missing PDF "https://foo.com/bar.pdf".'));
|
330
|
+
expect((0, _network_utils.createResponseStatusError)(0, "file://foo.pdf")).toEqual(new _util.MissingPDFException('Missing PDF "file://foo.pdf".'));
|
317
331
|
});
|
318
|
-
it(
|
319
|
-
expect((0, _network_utils.createResponseStatusError)(302,
|
320
|
-
expect((0, _network_utils.createResponseStatusError)(0,
|
332
|
+
it("handles unexpected responses", function () {
|
333
|
+
expect((0, _network_utils.createResponseStatusError)(302, "https://foo.com/bar.pdf")).toEqual(new _util.UnexpectedResponseException("Unexpected server response (302) while retrieving PDF " + '"https://foo.com/bar.pdf".'));
|
334
|
+
expect((0, _network_utils.createResponseStatusError)(0, "https://foo.com/bar.pdf")).toEqual(new _util.UnexpectedResponseException("Unexpected server response (0) while retrieving PDF " + '"https://foo.com/bar.pdf".'));
|
321
335
|
});
|
322
336
|
});
|
323
|
-
describe(
|
324
|
-
it(
|
337
|
+
describe("validateResponseStatus", function () {
|
338
|
+
it("accepts valid response statuses", function () {
|
325
339
|
expect((0, _network_utils.validateResponseStatus)(200)).toEqual(true);
|
326
340
|
expect((0, _network_utils.validateResponseStatus)(206)).toEqual(true);
|
327
341
|
});
|
328
|
-
it(
|
342
|
+
it("rejects invalid response statuses", function () {
|
329
343
|
expect((0, _network_utils.validateResponseStatus)(302)).toEqual(false);
|
330
344
|
expect((0, _network_utils.validateResponseStatus)(404)).toEqual(false);
|
331
345
|
expect((0, _network_utils.validateResponseStatus)(null)).toEqual(false);
|