pdfjs-dist 2.3.200 → 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/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +6499 -17971
- 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 +19303 -29896
- 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 +1333 -4839
- 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 +683 -1066
- 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 +196 -193
- package/lib/core/charsets.js +4 -4
- package/lib/core/chunked_stream.js +441 -569
- package/lib/core/cmap.js +220 -279
- package/lib/core/colorspace.js +699 -863
- package/lib/core/core_utils.js +59 -80
- package/lib/core/crypto.js +379 -437
- package/lib/core/document.js +564 -673
- package/lib/core/encodings.js +15 -15
- package/lib/core/evaluator.js +983 -889
- package/lib/core/font_renderer.js +128 -171
- package/lib/core/fonts.js +451 -400
- package/lib/core/function.js +289 -285
- package/lib/core/glyphlist.js +4527 -4527
- package/lib/core/image.js +138 -117
- package/lib/core/image_utils.js +46 -63
- package/lib/core/jbig2.js +324 -332
- package/lib/core/jbig2_stream.js +18 -17
- package/lib/core/jpeg_stream.js +133 -24
- package/lib/core/jpg.js +238 -210
- package/lib/core/jpx.js +158 -157
- 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 +1111 -1302
- package/lib/core/operator_list.js +55 -42
- package/lib/core/parser.js +956 -987
- package/lib/core/pattern.js +69 -69
- package/lib/core/pdf_manager.js +149 -316
- package/lib/core/primitives.js +45 -77
- package/lib/core/ps_parser.js +175 -214
- package/lib/core/standard_fonts.js +237 -236
- package/lib/core/stream.js +83 -77
- package/lib/core/type1_parser.js +78 -68
- package/lib/core/unicode.js +1654 -1654
- package/lib/core/worker.js +148 -196
- package/lib/core/worker_stream.js +101 -210
- package/lib/display/annotation_layer.js +733 -1155
- package/lib/display/api.js +1539 -1928
- package/lib/display/api_compatibility.js +10 -8
- package/lib/display/canvas.js +159 -158
- package/lib/display/content_disposition.js +36 -55
- package/lib/display/display_utils.js +298 -551
- package/lib/display/fetch_stream.js +181 -305
- package/lib/display/font_loader.js +273 -416
- package/lib/display/metadata.js +86 -98
- package/lib/display/network.js +376 -511
- package/lib/display/network_utils.js +20 -19
- package/lib/display/node_stream.js +276 -460
- package/lib/display/pattern_helper.js +76 -44
- package/lib/display/svg.js +1137 -1405
- package/lib/display/text_layer.js +75 -82
- package/lib/display/transport_stream.js +236 -374
- 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 +22 -21
- package/lib/pdf.worker.js +5 -5
- package/lib/shared/compatibility.js +2 -251
- package/lib/shared/is_node.js +7 -6
- package/lib/shared/message_handler.js +222 -194
- package/lib/shared/util.js +269 -405
- package/lib/test/unit/annotation_spec.js +1089 -1014
- package/lib/test/unit/api_spec.js +617 -544
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +63 -62
- package/lib/test/unit/clitests_helper.js +7 -9
- package/lib/test/unit/cmap_spec.js +84 -86
- package/lib/test/unit/colorspace_spec.js +154 -154
- package/lib/test/unit/core_utils_spec.js +125 -105
- package/lib/test/unit/crypto_spec.js +181 -181
- package/lib/test/unit/custom_spec.js +22 -24
- package/lib/test/unit/display_svg_spec.js +35 -36
- package/lib/test/unit/display_utils_spec.js +139 -149
- package/lib/test/unit/document_spec.js +16 -16
- package/lib/test/unit/encodings_spec.js +12 -34
- package/lib/test/unit/evaluator_spec.js +81 -95
- package/lib/test/unit/fetch_stream_spec.js +30 -30
- 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 +172 -162
- package/lib/test/unit/metadata_spec.js +69 -69
- package/lib/test/unit/murmurhash3_spec.js +12 -12
- package/lib/test/unit/network_spec.js +12 -12
- package/lib/test/unit/network_utils_spec.js +152 -152
- package/lib/test/unit/node_stream_spec.js +74 -90
- package/lib/test/unit/parser_spec.js +107 -113
- 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 +117 -115
- package/lib/test/unit/stream_spec.js +16 -14
- package/lib/test/unit/test_utils.js +119 -285
- package/lib/test/unit/testreporter.js +19 -19
- package/lib/test/unit/type1_parser_spec.js +41 -41
- package/lib/test/unit/ui_utils_spec.js +318 -426
- package/lib/test/unit/unicode_spec.js +42 -42
- package/lib/test/unit/util_spec.js +122 -143
- package/lib/web/annotation_layer_builder.js +66 -103
- package/lib/web/app.js +1166 -1196
- package/lib/web/app_options.js +61 -77
- package/lib/web/base_viewer.js +804 -850
- package/lib/web/chromecom.js +164 -249
- package/lib/web/debugger.js +149 -205
- package/lib/web/download_manager.js +38 -57
- package/lib/web/firefox_print_service.js +35 -30
- package/lib/web/firefoxcom.js +175 -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 -258
- package/lib/web/overlay_manager.js +70 -246
- package/lib/web/password_prompt.js +38 -64
- package/lib/web/pdf_attachment_viewer.js +105 -130
- package/lib/web/pdf_cursor_tools.js +75 -102
- package/lib/web/pdf_document_properties.js +227 -376
- package/lib/web/pdf_find_bar.js +137 -171
- package/lib/web/pdf_find_controller.js +492 -549
- package/lib/web/pdf_find_utils.js +13 -13
- package/lib/web/pdf_history.js +395 -406
- package/lib/web/pdf_link_service.js +302 -349
- package/lib/web/pdf_outline_viewer.js +148 -209
- package/lib/web/pdf_page_view.js +449 -507
- package/lib/web/pdf_presentation_mode.js +304 -357
- package/lib/web/pdf_print_service.js +90 -104
- package/lib/web/pdf_rendering_queue.js +87 -108
- package/lib/web/pdf_sidebar.js +264 -304
- 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 +276 -297
- package/lib/web/pdf_thumbnail_viewer.js +186 -206
- package/lib/web/pdf_viewer.component.js +20 -21
- package/lib/web/pdf_viewer.js +55 -115
- package/lib/web/preferences.js +66 -273
- package/lib/web/secondary_toolbar.js +164 -196
- package/lib/web/text_layer_builder.js +284 -317
- package/lib/web/toolbar.js +216 -211
- package/lib/web/ui_utils.js +303 -404
- package/lib/web/view_history.js +49 -222
- package/lib/web/viewer_compatibility.js +7 -5
- package/package.json +2 -9
- package/web/pdf_viewer.css +25 -18
- package/web/pdf_viewer.js +3481 -4764
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +14 -5
- package/lib/shared/streams_polyfill.js +0 -43
@@ -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,176 +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(
|
247
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
248
|
-
if (headerName ===
|
245
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
246
|
+
})).toEqual("filename.pdf");
|
247
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
248
|
+
if (headerName === "Content-Disposition") {
|
249
249
|
return 'attachment; filename="%e4%b8%ad%e6%96%87.pdf"';
|
250
250
|
}
|
251
251
|
|
252
|
-
throw new Error(
|
253
|
-
})).toEqual(
|
254
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
255
|
-
if (headerName ===
|
252
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
253
|
+
})).toEqual("中文.pdf");
|
254
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
255
|
+
if (headerName === "Content-Disposition") {
|
256
256
|
return 'attachment; filename="100%.pdf"';
|
257
257
|
}
|
258
258
|
|
259
|
-
throw new Error(
|
260
|
-
})).toEqual(
|
259
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
260
|
+
})).toEqual("100%.pdf");
|
261
261
|
});
|
262
|
-
it(
|
263
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
264
|
-
if (headerName ===
|
265
|
-
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";
|
266
266
|
}
|
267
267
|
|
268
|
-
throw new Error(
|
269
|
-
})).toEqual(
|
270
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
271
|
-
if (headerName ===
|
272
|
-
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";
|
273
273
|
}
|
274
274
|
|
275
|
-
throw new Error(
|
276
|
-
})).toEqual(
|
277
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
278
|
-
if (headerName ===
|
279
|
-
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";
|
280
280
|
}
|
281
281
|
|
282
|
-
throw new Error(
|
283
|
-
})).toEqual(
|
284
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
285
|
-
if (headerName ===
|
286
|
-
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";
|
287
287
|
}
|
288
288
|
|
289
|
-
throw new Error(
|
290
|
-
})).toEqual(
|
291
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
292
|
-
if (headerName ===
|
293
|
-
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";
|
294
294
|
}
|
295
295
|
|
296
|
-
throw new Error(
|
297
|
-
})).toEqual(
|
296
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
297
|
+
})).toEqual("filename.pdf");
|
298
298
|
});
|
299
|
-
it(
|
300
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
301
|
-
if (headerName ===
|
302
|
-
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";
|
303
303
|
}
|
304
304
|
|
305
|
-
throw new Error(
|
306
|
-
})).toEqual(
|
305
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
306
|
+
})).toEqual("filename.pdf");
|
307
307
|
});
|
308
|
-
it(
|
309
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
310
|
-
if (headerName ===
|
308
|
+
it("only extracts filename with pdf extension", function () {
|
309
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
310
|
+
if (headerName === "Content-Disposition") {
|
311
311
|
return 'attachment; filename="filename.png"';
|
312
312
|
}
|
313
313
|
|
314
|
-
throw new Error(
|
314
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
315
315
|
})).toBeNull();
|
316
316
|
});
|
317
|
-
it(
|
318
|
-
expect((0, _network_utils.extractFilenameFromHeader)(
|
319
|
-
if (headerName ===
|
317
|
+
it("extension validation is case insensitive", function () {
|
318
|
+
expect((0, _network_utils.extractFilenameFromHeader)(headerName => {
|
319
|
+
if (headerName === "Content-Disposition") {
|
320
320
|
return 'form-data; name="fieldName"; filename="file.PdF"';
|
321
321
|
}
|
322
322
|
|
323
|
-
throw new Error(
|
324
|
-
})).toEqual(
|
323
|
+
throw new Error(`Unexpected headerName: ${headerName}`);
|
324
|
+
})).toEqual("file.PdF");
|
325
325
|
});
|
326
326
|
});
|
327
|
-
describe(
|
328
|
-
it(
|
329
|
-
expect((0, _network_utils.createResponseStatusError)(404,
|
330
|
-
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".'));
|
331
331
|
});
|
332
|
-
it(
|
333
|
-
expect((0, _network_utils.createResponseStatusError)(302,
|
334
|
-
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".'));
|
335
335
|
});
|
336
336
|
});
|
337
|
-
describe(
|
338
|
-
it(
|
337
|
+
describe("validateResponseStatus", function () {
|
338
|
+
it("accepts valid response statuses", function () {
|
339
339
|
expect((0, _network_utils.validateResponseStatus)(200)).toEqual(true);
|
340
340
|
expect((0, _network_utils.validateResponseStatus)(206)).toEqual(true);
|
341
341
|
});
|
342
|
-
it(
|
342
|
+
it("rejects invalid response statuses", function () {
|
343
343
|
expect((0, _network_utils.validateResponseStatus)(302)).toEqual(false);
|
344
344
|
expect((0, _network_utils.validateResponseStatus)(404)).toEqual(false);
|
345
345
|
expect((0, _network_utils.validateResponseStatus)(null)).toEqual(false);
|