pdfjs-dist 2.0.943 → 2.4.456
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/CODE_OF_CONDUCT.md +15 -0
- package/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +8286 -14230
- 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 +25500 -26628
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +25473 -0
- package/es5/build/pdf.js.map +1 -0
- package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
- package/es5/build/pdf.worker.js +57878 -0
- package/es5/build/pdf.worker.js.map +1 -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/images/texture.png +0 -0
- package/es5/web/pdf_viewer.css +407 -0
- package/es5/web/pdf_viewer.js +7757 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +2887 -4094
- 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 +855 -778
- package/lib/core/arithmetic_decoder.js +325 -311
- package/lib/core/bidi.js +117 -50
- package/lib/core/ccitt.js +251 -89
- package/lib/core/ccitt_stream.js +26 -16
- package/lib/core/cff_parser.js +525 -197
- package/lib/core/charsets.js +6 -5
- package/lib/core/chunked_stream.js +541 -406
- package/lib/core/cmap.js +368 -253
- package/lib/core/colorspace.js +781 -800
- package/lib/core/core_utils.js +152 -0
- package/lib/core/crypto.js +609 -422
- package/lib/core/document.js +649 -481
- package/lib/core/encodings.js +33 -24
- package/lib/core/evaluator.js +1471 -736
- package/lib/core/font_renderer.js +289 -149
- package/lib/core/fonts.js +1067 -413
- package/lib/core/function.js +517 -287
- package/lib/core/glyphlist.js +4529 -4527
- package/lib/core/image.js +232 -114
- package/lib/core/image_utils.js +94 -0
- package/lib/core/jbig2.js +711 -342
- package/lib/core/jbig2_stream.js +31 -19
- package/lib/core/jpeg_stream.js +151 -26
- package/lib/core/jpg.js +433 -181
- package/lib/core/jpx.js +551 -143
- package/lib/core/jpx_stream.js +40 -28
- package/lib/core/metrics.js +2931 -2931
- package/lib/core/murmurhash3.js +104 -97
- package/lib/core/obj.js +1561 -1053
- package/lib/core/operator_list.js +192 -64
- package/lib/core/parser.js +1162 -864
- package/lib/core/pattern.js +224 -75
- package/lib/core/pdf_manager.js +154 -285
- package/lib/core/primitives.js +145 -69
- package/lib/core/ps_parser.js +212 -162
- package/lib/core/standard_fonts.js +245 -244
- package/lib/core/stream.js +353 -81
- package/lib/core/type1_parser.js +218 -68
- package/lib/core/unicode.js +1682 -1655
- package/lib/core/worker.js +233 -302
- package/lib/core/worker_stream.js +168 -0
- package/lib/display/annotation_layer.js +808 -862
- package/lib/display/api.js +1778 -1462
- package/lib/display/api_compatibility.js +14 -9
- package/lib/display/canvas.js +463 -140
- package/lib/display/content_disposition.js +86 -58
- package/lib/display/display_utils.js +524 -0
- package/lib/display/fetch_stream.js +202 -274
- package/lib/display/font_loader.js +311 -333
- package/lib/display/metadata.js +98 -88
- package/lib/display/network.js +343 -347
- package/lib/display/network_utils.js +46 -26
- package/lib/display/node_stream.js +326 -404
- package/lib/display/pattern_helper.js +168 -69
- package/lib/display/svg.js +1296 -885
- package/lib/display/text_layer.js +229 -103
- package/lib/display/transport_stream.js +290 -250
- package/lib/display/webgl.js +116 -83
- package/lib/display/worker_options.js +6 -5
- package/lib/display/xml_parser.js +358 -337
- package/lib/examples/node/domstubs.js +95 -39
- package/lib/pdf.js +49 -31
- package/lib/pdf.worker.js +7 -5
- package/lib/shared/compatibility.js +3 -145
- package/lib/shared/is_node.js +8 -7
- package/lib/shared/message_handler.js +367 -314
- package/lib/shared/util.js +421 -415
- package/lib/test/unit/annotation_spec.js +1570 -690
- package/lib/test/unit/api_spec.js +855 -493
- package/lib/test/unit/bidi_spec.js +12 -12
- package/lib/test/unit/cff_parser_spec.js +88 -61
- package/lib/test/unit/clitests_helper.js +9 -12
- package/lib/test/unit/cmap_spec.js +140 -88
- package/lib/test/unit/colorspace_spec.js +204 -152
- package/lib/test/unit/core_utils_spec.js +211 -0
- package/lib/test/unit/crypto_spec.js +194 -182
- package/lib/test/unit/custom_spec.js +50 -64
- package/lib/test/unit/display_svg_spec.js +53 -38
- package/lib/test/unit/display_utils_spec.js +263 -0
- package/lib/test/unit/document_spec.js +17 -22
- package/lib/test/unit/encodings_spec.js +15 -57
- package/lib/test/unit/evaluator_spec.js +90 -83
- package/lib/test/unit/fetch_stream_spec.js +111 -0
- package/lib/test/unit/function_spec.js +219 -205
- package/lib/test/unit/jasmine-boot.js +68 -39
- package/lib/test/unit/message_handler_spec.js +187 -160
- package/lib/test/unit/metadata_spec.js +87 -34
- package/lib/test/unit/murmurhash3_spec.js +13 -13
- package/lib/test/unit/network_spec.js +26 -59
- package/lib/test/unit/network_utils_spec.js +187 -121
- package/lib/test/unit/node_stream_spec.js +98 -90
- package/lib/test/unit/parser_spec.js +173 -131
- package/lib/test/unit/pdf_find_controller_spec.js +148 -67
- package/lib/test/unit/pdf_find_utils_spec.js +35 -34
- package/lib/test/unit/pdf_history_spec.js +45 -33
- package/lib/test/unit/primitives_spec.js +161 -126
- package/lib/test/unit/stream_spec.js +22 -15
- package/lib/test/unit/test_utils.js +149 -98
- package/lib/test/unit/testreporter.js +36 -18
- package/lib/test/unit/type1_parser_spec.js +46 -44
- package/lib/test/unit/ui_utils_spec.js +388 -372
- package/lib/test/unit/unicode_spec.js +49 -46
- package/lib/test/unit/util_spec.js +144 -248
- package/lib/web/annotation_layer_builder.js +75 -95
- package/lib/web/app.js +1538 -1147
- package/lib/web/app_options.js +116 -104
- package/lib/web/base_viewer.js +950 -775
- package/lib/web/chromecom.js +217 -225
- package/lib/web/debugger.js +236 -148
- package/lib/web/download_manager.js +50 -50
- package/lib/web/firefox_print_service.js +51 -33
- package/lib/web/firefoxcom.js +225 -352
- package/lib/web/genericcom.js +30 -93
- package/lib/web/genericl10n.js +26 -143
- package/lib/web/grab_to_pan.js +57 -33
- package/lib/web/interfaces.js +105 -232
- package/lib/web/overlay_manager.js +73 -227
- package/lib/web/password_prompt.js +44 -62
- package/lib/web/pdf_attachment_viewer.js +118 -123
- package/lib/web/pdf_cursor_tools.js +89 -93
- package/lib/web/pdf_document_properties.js +242 -281
- package/lib/web/pdf_find_bar.js +157 -163
- package/lib/web/pdf_find_controller.js +598 -454
- package/lib/web/pdf_find_utils.js +32 -16
- package/lib/web/pdf_history.js +481 -355
- package/lib/web/pdf_link_service.js +355 -323
- package/lib/web/pdf_outline_viewer.js +167 -152
- package/lib/web/pdf_page_view.js +511 -457
- package/lib/web/pdf_presentation_mode.js +347 -335
- package/lib/web/pdf_print_service.js +133 -103
- package/lib/web/pdf_rendering_queue.js +98 -100
- package/lib/web/pdf_sidebar.js +323 -299
- package/lib/web/pdf_sidebar_resizer.js +107 -108
- package/lib/web/pdf_single_page_viewer.js +94 -146
- package/lib/web/pdf_thumbnail_view.js +319 -269
- package/lib/web/pdf_thumbnail_viewer.js +219 -199
- package/lib/web/pdf_viewer.component.js +111 -32
- package/lib/web/pdf_viewer.js +61 -101
- package/lib/web/preferences.js +87 -272
- package/lib/web/secondary_toolbar.js +207 -220
- package/lib/web/text_layer_builder.js +322 -322
- package/lib/web/toolbar.js +227 -180
- package/lib/web/ui_utils.js +476 -421
- package/lib/web/view_history.js +59 -208
- package/lib/web/viewer_compatibility.js +9 -6
- package/package.json +2 -9
- package/web/pdf_viewer.css +36 -22
- package/web/pdf_viewer.js +4407 -4516
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +14 -5
- package/external/streams/streams-lib.js +0 -3962
- package/external/url/url-lib.js +0 -627
- package/lib/display/dom_utils.js +0 -441
- package/lib/shared/streams_polyfill.js +0 -39
- package/lib/shared/url_polyfill.js +0 -50
- package/lib/test/unit/dom_utils_spec.js +0 -89
- package/lib/web/dom_events.js +0 -140
@@ -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.
|
@@ -19,27 +19,31 @@
|
|
19
19
|
* @licend The above is the entire license notice for the
|
20
20
|
* Javascript code in this page
|
21
21
|
*/
|
22
|
-
|
22
|
+
"use strict";
|
23
23
|
|
24
|
-
var _network_utils = require(
|
24
|
+
var _network_utils = require("../../display/network_utils.js");
|
25
25
|
|
26
|
-
var _util = require(
|
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
|
-
(0, _network_utils.validateRangeRequestCapabilities)({
|
33
|
-
|
32
|
+
(0, _network_utils.validateRangeRequestCapabilities)({
|
33
|
+
rangeChunkSize: 0
|
34
|
+
});
|
35
|
+
}).toThrow(new Error("Range chunk size must be larger than zero"));
|
34
36
|
});
|
35
|
-
it(
|
37
|
+
it("rejects disabled or non-HTTP range requests", function () {
|
36
38
|
expect((0, _network_utils.validateRangeRequestCapabilities)({
|
37
39
|
disableRange: true,
|
38
40
|
isHttp: true,
|
39
|
-
getResponseHeader:
|
40
|
-
if (headerName ===
|
41
|
+
getResponseHeader: headerName => {
|
42
|
+
if (headerName === "Content-Length") {
|
41
43
|
return 8;
|
42
44
|
}
|
45
|
+
|
46
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
43
47
|
},
|
44
48
|
rangeChunkSize: 64
|
45
49
|
})).toEqual({
|
@@ -49,10 +53,12 @@ describe('network_utils', function () {
|
|
49
53
|
expect((0, _network_utils.validateRangeRequestCapabilities)({
|
50
54
|
disableRange: false,
|
51
55
|
isHttp: false,
|
52
|
-
getResponseHeader:
|
53
|
-
if (headerName ===
|
56
|
+
getResponseHeader: headerName => {
|
57
|
+
if (headerName === "Content-Length") {
|
54
58
|
return 8;
|
55
59
|
}
|
60
|
+
|
61
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
56
62
|
},
|
57
63
|
rangeChunkSize: 64
|
58
64
|
})).toEqual({
|
@@ -60,16 +66,18 @@ describe('network_utils', function () {
|
|
60
66
|
suggestedLength: 8
|
61
67
|
});
|
62
68
|
});
|
63
|
-
it(
|
69
|
+
it("rejects invalid Accept-Ranges header values", function () {
|
64
70
|
expect((0, _network_utils.validateRangeRequestCapabilities)({
|
65
71
|
disableRange: false,
|
66
72
|
isHttp: true,
|
67
|
-
getResponseHeader:
|
68
|
-
if (headerName ===
|
69
|
-
return
|
70
|
-
} else if (headerName ===
|
73
|
+
getResponseHeader: headerName => {
|
74
|
+
if (headerName === "Accept-Ranges") {
|
75
|
+
return "none";
|
76
|
+
} else if (headerName === "Content-Length") {
|
71
77
|
return 8;
|
72
78
|
}
|
79
|
+
|
80
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
73
81
|
},
|
74
82
|
rangeChunkSize: 64
|
75
83
|
})).toEqual({
|
@@ -77,18 +85,20 @@ describe('network_utils', function () {
|
|
77
85
|
suggestedLength: 8
|
78
86
|
});
|
79
87
|
});
|
80
|
-
it(
|
88
|
+
it("rejects invalid Content-Encoding header values", function () {
|
81
89
|
expect((0, _network_utils.validateRangeRequestCapabilities)({
|
82
90
|
disableRange: false,
|
83
91
|
isHttp: true,
|
84
|
-
getResponseHeader:
|
85
|
-
if (headerName ===
|
86
|
-
return
|
87
|
-
} else if (headerName ===
|
88
|
-
return
|
89
|
-
} 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") {
|
90
98
|
return 8;
|
91
99
|
}
|
100
|
+
|
101
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
92
102
|
},
|
93
103
|
rangeChunkSize: 64
|
94
104
|
})).toEqual({
|
@@ -96,18 +106,20 @@ describe('network_utils', function () {
|
|
96
106
|
suggestedLength: 8
|
97
107
|
});
|
98
108
|
});
|
99
|
-
it(
|
109
|
+
it("rejects invalid Content-Length header values", function () {
|
100
110
|
expect((0, _network_utils.validateRangeRequestCapabilities)({
|
101
111
|
disableRange: false,
|
102
112
|
isHttp: true,
|
103
|
-
getResponseHeader:
|
104
|
-
if (headerName ===
|
105
|
-
return
|
106
|
-
} else if (headerName ===
|
113
|
+
getResponseHeader: headerName => {
|
114
|
+
if (headerName === "Accept-Ranges") {
|
115
|
+
return "bytes";
|
116
|
+
} else if (headerName === "Content-Encoding") {
|
107
117
|
return null;
|
108
|
-
} else if (headerName ===
|
109
|
-
return
|
118
|
+
} else if (headerName === "Content-Length") {
|
119
|
+
return "eight";
|
110
120
|
}
|
121
|
+
|
122
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
111
123
|
},
|
112
124
|
rangeChunkSize: 64
|
113
125
|
})).toEqual({
|
@@ -115,18 +127,20 @@ describe('network_utils', function () {
|
|
115
127
|
suggestedLength: undefined
|
116
128
|
});
|
117
129
|
});
|
118
|
-
it(
|
130
|
+
it("rejects file sizes that are too small for range requests", function () {
|
119
131
|
expect((0, _network_utils.validateRangeRequestCapabilities)({
|
120
132
|
disableRange: false,
|
121
133
|
isHttp: true,
|
122
|
-
getResponseHeader:
|
123
|
-
if (headerName ===
|
124
|
-
return
|
125
|
-
} else if (headerName ===
|
134
|
+
getResponseHeader: headerName => {
|
135
|
+
if (headerName === "Accept-Ranges") {
|
136
|
+
return "bytes";
|
137
|
+
} else if (headerName === "Content-Encoding") {
|
126
138
|
return null;
|
127
|
-
} else if (headerName ===
|
139
|
+
} else if (headerName === "Content-Length") {
|
128
140
|
return 8;
|
129
141
|
}
|
142
|
+
|
143
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
130
144
|
},
|
131
145
|
rangeChunkSize: 64
|
132
146
|
})).toEqual({
|
@@ -134,18 +148,20 @@ describe('network_utils', function () {
|
|
134
148
|
suggestedLength: 8
|
135
149
|
});
|
136
150
|
});
|
137
|
-
it(
|
151
|
+
it("accepts file sizes large enough for range requests", function () {
|
138
152
|
expect((0, _network_utils.validateRangeRequestCapabilities)({
|
139
153
|
disableRange: false,
|
140
154
|
isHttp: true,
|
141
|
-
getResponseHeader:
|
142
|
-
if (headerName ===
|
143
|
-
return
|
144
|
-
} else if (headerName ===
|
155
|
+
getResponseHeader: headerName => {
|
156
|
+
if (headerName === "Accept-Ranges") {
|
157
|
+
return "bytes";
|
158
|
+
} else if (headerName === "Content-Encoding") {
|
145
159
|
return null;
|
146
|
-
} else if (headerName ===
|
160
|
+
} else if (headerName === "Content-Length") {
|
147
161
|
return 8192;
|
148
162
|
}
|
163
|
+
|
164
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
149
165
|
},
|
150
166
|
rangeChunkSize: 64
|
151
167
|
})).toEqual({
|
@@ -154,126 +170,176 @@ describe('network_utils', function () {
|
|
154
170
|
});
|
155
171
|
});
|
156
172
|
});
|
157
|
-
describe(
|
158
|
-
it(
|
159
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
160
|
-
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") {
|
161
177
|
return null;
|
162
178
|
}
|
179
|
+
|
180
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
163
181
|
})).toBeNull();
|
164
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
165
|
-
if (headerName ===
|
182
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
183
|
+
if (headerName === "Content-Disposition") {
|
166
184
|
return undefined;
|
167
185
|
}
|
186
|
+
|
187
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
168
188
|
})).toBeNull();
|
169
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
170
|
-
if (headerName ===
|
171
|
-
return
|
189
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
190
|
+
if (headerName === "Content-Disposition") {
|
191
|
+
return "";
|
172
192
|
}
|
193
|
+
|
194
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
173
195
|
})).toBeNull();
|
174
196
|
});
|
175
|
-
it(
|
176
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
177
|
-
if (headerName ===
|
178
|
-
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";
|
179
201
|
}
|
202
|
+
|
203
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
180
204
|
})).toBeNull();
|
181
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
182
|
-
if (headerName ===
|
183
|
-
return
|
205
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
206
|
+
if (headerName === "Content-Disposition") {
|
207
|
+
return "attachment";
|
184
208
|
}
|
209
|
+
|
210
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
185
211
|
})).toBeNull();
|
186
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
187
|
-
if (headerName ===
|
212
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
213
|
+
if (headerName === "Content-Disposition") {
|
188
214
|
return 'attachment; filename="filename.pdf"';
|
189
215
|
}
|
190
|
-
|
191
|
-
|
192
|
-
|
216
|
+
|
217
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
218
|
+
})).toEqual("filename.pdf");
|
219
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
220
|
+
if (headerName === "Content-Disposition") {
|
193
221
|
return 'attachment; filename="filename.pdf and spaces.pdf"';
|
194
222
|
}
|
195
|
-
|
196
|
-
|
197
|
-
|
223
|
+
|
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") {
|
198
228
|
return 'attachment; filename="tl;dr.pdf"';
|
199
229
|
}
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
230
|
+
|
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";
|
204
236
|
}
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
237
|
+
|
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
|
+
}
|
244
|
+
|
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"';
|
209
250
|
}
|
210
|
-
|
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");
|
211
261
|
});
|
212
|
-
it(
|
213
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
214
|
-
if (headerName ===
|
215
|
-
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";
|
216
266
|
}
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
267
|
+
|
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";
|
221
273
|
}
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
274
|
+
|
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";
|
226
280
|
}
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
281
|
+
|
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";
|
231
287
|
}
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
288
|
+
|
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";
|
236
294
|
}
|
237
|
-
|
295
|
+
|
296
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
297
|
+
})).toEqual("filename.pdf");
|
238
298
|
});
|
239
|
-
it(
|
240
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
241
|
-
if (headerName ===
|
242
|
-
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";
|
243
303
|
}
|
244
|
-
|
304
|
+
|
305
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
306
|
+
})).toEqual("filename.pdf");
|
245
307
|
});
|
246
|
-
it(
|
247
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
248
|
-
if (headerName ===
|
308
|
+
it("only extracts filename with pdf extension", function () {
|
309
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
310
|
+
if (headerName === "Content-Disposition") {
|
249
311
|
return 'attachment; filename="filename.png"';
|
250
312
|
}
|
313
|
+
|
314
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
251
315
|
})).toBeNull();
|
252
316
|
});
|
253
|
-
it(
|
254
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
255
|
-
if (headerName ===
|
317
|
+
it("extension validation is case insensitive", function () {
|
318
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
319
|
+
if (headerName === "Content-Disposition") {
|
256
320
|
return 'form-data; name="fieldName"; filename="file.PdF"';
|
257
321
|
}
|
258
|
-
|
322
|
+
|
323
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
324
|
+
})).toEqual("file.PdF");
|
259
325
|
});
|
260
326
|
});
|
261
|
-
describe(
|
262
|
-
it(
|
263
|
-
expect((0, _network_utils.createResponseStatusError)(404,
|
264
|
-
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".'));
|
265
331
|
});
|
266
|
-
it(
|
267
|
-
expect((0, _network_utils.createResponseStatusError)(302,
|
268
|
-
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".'));
|
269
335
|
});
|
270
336
|
});
|
271
|
-
describe(
|
272
|
-
it(
|
337
|
+
describe("validateResponseStatus", function () {
|
338
|
+
it("accepts valid response statuses", function () {
|
273
339
|
expect((0, _network_utils.validateResponseStatus)(200)).toEqual(true);
|
274
340
|
expect((0, _network_utils.validateResponseStatus)(206)).toEqual(true);
|
275
341
|
});
|
276
|
-
it(
|
342
|
+
it("rejects invalid response statuses", function () {
|
277
343
|
expect((0, _network_utils.validateResponseStatus)(302)).toEqual(false);
|
278
344
|
expect((0, _network_utils.validateResponseStatus)(404)).toEqual(false);
|
279
345
|
expect((0, _network_utils.validateResponseStatus)(null)).toEqual(false);
|