pdfjs-dist 2.1.266 → 2.5.207

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.

Files changed (191) hide show
  1. package/CODE_OF_CONDUCT.md +15 -0
  2. package/README.md +4 -0
  3. package/bower.json +1 -1
  4. package/build/pdf.js +8382 -18492
  5. package/build/pdf.js.map +1 -1
  6. package/build/pdf.min.js +22 -1
  7. package/build/pdf.worker.entry.js +5 -3
  8. package/build/pdf.worker.js +20417 -29816
  9. package/build/pdf.worker.js.map +1 -1
  10. package/build/pdf.worker.min.js +22 -1
  11. package/es5/build/pdf.js +25688 -0
  12. package/es5/build/pdf.js.map +1 -0
  13. package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
  14. package/es5/build/pdf.worker.js +58239 -0
  15. package/es5/build/pdf.worker.js.map +1 -0
  16. package/es5/web/images/annotation-check.svg +11 -0
  17. package/es5/web/images/annotation-comment.svg +16 -0
  18. package/es5/web/images/annotation-help.svg +26 -0
  19. package/es5/web/images/annotation-insert.svg +10 -0
  20. package/es5/web/images/annotation-key.svg +11 -0
  21. package/es5/web/images/annotation-newparagraph.svg +11 -0
  22. package/es5/web/images/annotation-noicon.svg +7 -0
  23. package/es5/web/images/annotation-note.svg +42 -0
  24. package/es5/web/images/annotation-paragraph.svg +16 -0
  25. package/es5/web/images/loading-icon.gif +0 -0
  26. package/es5/web/images/shadow.png +0 -0
  27. package/es5/web/images/texture.png +0 -0
  28. package/es5/web/pdf_viewer.css +403 -0
  29. package/es5/web/pdf_viewer.js +7742 -0
  30. package/es5/web/pdf_viewer.js.map +1 -0
  31. package/image_decoders/pdf.image_decoders.js +1475 -4897
  32. package/image_decoders/pdf.image_decoders.js.map +1 -1
  33. package/image_decoders/pdf.image_decoders.min.js +22 -1
  34. package/lib/README.md +7 -0
  35. package/lib/core/annotation.js +750 -899
  36. package/lib/core/arithmetic_decoder.js +81 -97
  37. package/lib/core/bidi.js +54 -46
  38. package/lib/core/ccitt.js +88 -81
  39. package/lib/core/ccitt_stream.js +15 -14
  40. package/lib/core/cff_parser.js +235 -183
  41. package/lib/core/charsets.js +4 -4
  42. package/lib/core/chunked_stream.js +447 -542
  43. package/lib/core/cmap.js +222 -264
  44. package/lib/core/colorspace.js +699 -863
  45. package/lib/core/core_utils.js +152 -0
  46. package/lib/core/crypto.js +379 -437
  47. package/lib/core/document.js +573 -660
  48. package/lib/core/encodings.js +15 -15
  49. package/lib/core/evaluator.js +1103 -868
  50. package/lib/core/font_renderer.js +135 -178
  51. package/lib/core/fonts.js +570 -491
  52. package/lib/core/function.js +291 -288
  53. package/lib/core/glyphlist.js +4527 -4526
  54. package/lib/core/image.js +145 -149
  55. package/lib/core/image_utils.js +170 -0
  56. package/lib/core/jbig2.js +325 -316
  57. package/lib/core/jbig2_stream.js +18 -17
  58. package/lib/core/jpeg_stream.js +21 -26
  59. package/lib/core/jpg.js +284 -232
  60. package/lib/core/jpx.js +161 -143
  61. package/lib/core/jpx_stream.js +28 -28
  62. package/lib/core/metrics.js +2929 -2929
  63. package/lib/core/murmurhash3.js +90 -101
  64. package/lib/core/obj.js +1183 -1157
  65. package/lib/core/operator_list.js +99 -67
  66. package/lib/core/parser.js +972 -911
  67. package/lib/core/pattern.js +87 -70
  68. package/lib/core/pdf_manager.js +150 -315
  69. package/lib/core/primitives.js +83 -56
  70. package/lib/core/ps_parser.js +175 -214
  71. package/lib/core/standard_fonts.js +237 -236
  72. package/lib/core/stream.js +94 -74
  73. package/lib/core/type1_parser.js +87 -69
  74. package/lib/core/unicode.js +1654 -1654
  75. package/lib/core/worker.js +193 -390
  76. package/lib/core/worker_stream.js +168 -0
  77. package/lib/display/annotation_layer.js +741 -972
  78. package/lib/display/api.js +1500 -1791
  79. package/lib/display/api_compatibility.js +12 -17
  80. package/lib/display/canvas.js +165 -165
  81. package/lib/display/content_disposition.js +40 -59
  82. package/lib/display/display_utils.js +515 -0
  83. package/lib/display/fetch_stream.js +183 -298
  84. package/lib/display/font_loader.js +273 -413
  85. package/lib/display/metadata.js +86 -98
  86. package/lib/display/network.js +266 -359
  87. package/lib/display/network_utils.js +25 -18
  88. package/lib/display/node_stream.js +285 -458
  89. package/lib/display/pattern_helper.js +113 -65
  90. package/lib/display/svg.js +1166 -901
  91. package/lib/display/text_layer.js +156 -132
  92. package/lib/display/transport_stream.js +262 -278
  93. package/lib/display/webgl.js +70 -83
  94. package/lib/display/worker_options.js +3 -3
  95. package/lib/display/xml_parser.js +303 -392
  96. package/lib/examples/node/domstubs.js +40 -37
  97. package/lib/pdf.js +226 -59
  98. package/lib/pdf.worker.js +14 -6
  99. package/lib/shared/compatibility.js +3 -246
  100. package/lib/shared/is_node.js +7 -6
  101. package/lib/shared/message_handler.js +327 -332
  102. package/lib/shared/util.js +266 -416
  103. package/lib/test/unit/annotation_spec.js +1555 -701
  104. package/lib/test/unit/api_spec.js +802 -604
  105. package/lib/test/unit/bidi_spec.js +7 -7
  106. package/lib/test/unit/cff_parser_spec.js +84 -69
  107. package/lib/test/unit/clitests_helper.js +7 -9
  108. package/lib/test/unit/cmap_spec.js +74 -76
  109. package/lib/test/unit/colorspace_spec.js +166 -161
  110. package/lib/test/unit/core_utils_spec.js +211 -0
  111. package/lib/test/unit/crypto_spec.js +181 -181
  112. package/lib/test/unit/custom_spec.js +20 -22
  113. package/lib/test/unit/display_svg_spec.js +34 -39
  114. package/lib/test/unit/display_utils_spec.js +263 -0
  115. package/lib/test/unit/document_spec.js +16 -21
  116. package/lib/test/unit/encodings_spec.js +12 -34
  117. package/lib/test/unit/evaluator_spec.js +83 -83
  118. package/lib/test/unit/fetch_stream_spec.js +111 -0
  119. package/lib/test/unit/function_spec.js +206 -204
  120. package/lib/test/unit/jasmine-boot.js +46 -30
  121. package/lib/test/unit/message_handler_spec.js +173 -159
  122. package/lib/test/unit/metadata_spec.js +69 -69
  123. package/lib/test/unit/murmurhash3_spec.js +12 -12
  124. package/lib/test/unit/network_spec.js +13 -61
  125. package/lib/test/unit/network_utils_spec.js +183 -119
  126. package/lib/test/unit/node_stream_spec.js +78 -92
  127. package/lib/test/unit/parser_spec.js +172 -114
  128. package/lib/test/unit/pdf_find_controller_spec.js +55 -86
  129. package/lib/test/unit/pdf_find_utils_spec.js +32 -32
  130. package/lib/test/unit/pdf_history_spec.js +32 -32
  131. package/lib/test/unit/primitives_spec.js +140 -125
  132. package/lib/test/unit/stream_spec.js +16 -14
  133. package/lib/test/unit/test_utils.js +131 -143
  134. package/lib/test/unit/testreporter.js +19 -19
  135. package/lib/test/unit/type1_parser_spec.js +42 -42
  136. package/lib/test/unit/ui_utils_spec.js +297 -459
  137. package/lib/test/unit/unicode_spec.js +38 -38
  138. package/lib/test/unit/util_spec.js +121 -305
  139. package/lib/web/annotation_layer_builder.js +66 -103
  140. package/lib/web/app.js +1328 -1214
  141. package/lib/web/app_options.js +105 -107
  142. package/lib/web/base_viewer.js +824 -838
  143. package/lib/web/chromecom.js +165 -252
  144. package/lib/web/debugger.js +149 -205
  145. package/lib/web/download_manager.js +39 -55
  146. package/lib/web/firefox_print_service.js +37 -27
  147. package/lib/web/firefoxcom.js +212 -363
  148. package/lib/web/genericcom.js +26 -108
  149. package/lib/web/genericl10n.js +24 -153
  150. package/lib/web/grab_to_pan.js +32 -30
  151. package/lib/web/interfaces.js +80 -254
  152. package/lib/web/overlay_manager.js +70 -246
  153. package/lib/web/password_prompt.js +38 -64
  154. package/lib/web/pdf_attachment_viewer.js +113 -131
  155. package/lib/web/pdf_cursor_tools.js +75 -102
  156. package/lib/web/pdf_document_properties.js +221 -306
  157. package/lib/web/pdf_find_bar.js +136 -170
  158. package/lib/web/pdf_find_controller.js +491 -548
  159. package/lib/web/pdf_find_utils.js +13 -13
  160. package/lib/web/pdf_history.js +397 -406
  161. package/lib/web/pdf_link_service.js +304 -348
  162. package/lib/web/pdf_outline_viewer.js +140 -175
  163. package/lib/web/pdf_page_view.js +452 -523
  164. package/lib/web/pdf_presentation_mode.js +308 -357
  165. package/lib/web/pdf_print_service.js +90 -104
  166. package/lib/web/pdf_rendering_queue.js +84 -108
  167. package/lib/web/pdf_sidebar.js +276 -306
  168. package/lib/web/pdf_sidebar_resizer.js +92 -119
  169. package/lib/web/pdf_single_page_viewer.js +77 -126
  170. package/lib/web/pdf_thumbnail_view.js +276 -297
  171. package/lib/web/pdf_thumbnail_viewer.js +186 -206
  172. package/lib/web/pdf_viewer.component.js +20 -21
  173. package/lib/web/pdf_viewer.js +55 -115
  174. package/lib/web/preferences.js +82 -286
  175. package/lib/web/secondary_toolbar.js +164 -196
  176. package/lib/web/text_layer_builder.js +282 -339
  177. package/lib/web/toolbar.js +217 -210
  178. package/lib/web/ui_utils.js +267 -420
  179. package/lib/web/view_history.js +52 -226
  180. package/lib/web/viewer_compatibility.js +21 -6
  181. package/package.json +2 -9
  182. package/web/pdf_viewer.css +35 -25
  183. package/web/pdf_viewer.js +3489 -4855
  184. package/web/pdf_viewer.js.map +1 -1
  185. package/webpack.js +14 -5
  186. package/external/streams/streams-lib.js +0 -3962
  187. package/external/url/url-lib.js +0 -627
  188. package/lib/display/dom_utils.js +0 -494
  189. package/lib/shared/streams_polyfill.js +0 -43
  190. package/lib/shared/url_polyfill.js +0 -56
  191. package/lib/test/unit/dom_utils_spec.js +0 -89
@@ -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 2018 Mozilla Foundation
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,98 +21,98 @@
21
21
  */
22
22
  "use strict";
23
23
 
24
- var _util = require("../../shared/util");
24
+ var _util = require("../../shared/util.js");
25
25
 
26
- var _metadata = require("../../display/metadata");
26
+ var _metadata = require("../../display/metadata.js");
27
27
 
28
- describe('metadata', function () {
29
- it('should handle valid metadata', function () {
30
- var data = '<x:xmpmeta xmlns:x=\'adobe:ns:meta/\'>' + '<rdf:RDF xmlns:rdf=\'http://www.w3.org/1999/02/22-rdf-syntax-ns#\'>' + '<rdf:Description xmlns:dc=\'http://purl.org/dc/elements/1.1/\'>' + '<dc:title><rdf:Alt><rdf:li xml:lang="x-default">Foo bar baz</rdf:li>' + '</rdf:Alt></dc:title></rdf:Description></rdf:RDF></x:xmpmeta>';
31
- var metadata = new _metadata.Metadata(data);
32
- expect(metadata.has('dc:title')).toBeTruthy();
33
- expect(metadata.has('dc:qux')).toBeFalsy();
34
- expect(metadata.get('dc:title')).toEqual('Foo bar baz');
35
- expect(metadata.get('dc:qux')).toEqual(null);
28
+ describe("metadata", function () {
29
+ it("should handle valid metadata", function () {
30
+ const data = "<x:xmpmeta xmlns:x='adobe:ns:meta/'>" + "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>" + "<rdf:Description xmlns:dc='http://purl.org/dc/elements/1.1/'>" + '<dc:title><rdf:Alt><rdf:li xml:lang="x-default">Foo bar baz</rdf:li>' + "</rdf:Alt></dc:title></rdf:Description></rdf:RDF></x:xmpmeta>";
31
+ const metadata = new _metadata.Metadata(data);
32
+ expect(metadata.has("dc:title")).toBeTruthy();
33
+ expect(metadata.has("dc:qux")).toBeFalsy();
34
+ expect(metadata.get("dc:title")).toEqual("Foo bar baz");
35
+ expect(metadata.get("dc:qux")).toEqual(null);
36
36
  expect(metadata.getAll()).toEqual({
37
- 'dc:title': 'Foo bar baz'
37
+ "dc:title": "Foo bar baz"
38
38
  });
39
39
  });
40
- it('should repair and handle invalid metadata', function () {
41
- var data = '<x:xmpmeta xmlns:x=\'adobe:ns:meta/\'>' + '<rdf:RDF xmlns:rdf=\'http://www.w3.org/1999/02/22-rdf-syntax-ns#\'>' + '<rdf:Description xmlns:dc=\'http://purl.org/dc/elements/1.1/\'>' + '<dc:title>\\376\\377\\000P\\000D\\000F\\000&</dc:title>' + '</rdf:Description></rdf:RDF></x:xmpmeta>';
42
- var metadata = new _metadata.Metadata(data);
43
- expect(metadata.has('dc:title')).toBeTruthy();
44
- expect(metadata.has('dc:qux')).toBeFalsy();
45
- expect(metadata.get('dc:title')).toEqual('PDF&');
46
- expect(metadata.get('dc:qux')).toEqual(null);
40
+ it("should repair and handle invalid metadata", function () {
41
+ const data = "<x:xmpmeta xmlns:x='adobe:ns:meta/'>" + "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>" + "<rdf:Description xmlns:dc='http://purl.org/dc/elements/1.1/'>" + "<dc:title>\\376\\377\\000P\\000D\\000F\\000&</dc:title>" + "</rdf:Description></rdf:RDF></x:xmpmeta>";
42
+ const metadata = new _metadata.Metadata(data);
43
+ expect(metadata.has("dc:title")).toBeTruthy();
44
+ expect(metadata.has("dc:qux")).toBeFalsy();
45
+ expect(metadata.get("dc:title")).toEqual("PDF&");
46
+ expect(metadata.get("dc:qux")).toEqual(null);
47
47
  expect(metadata.getAll()).toEqual({
48
- 'dc:title': 'PDF&'
48
+ "dc:title": "PDF&"
49
49
  });
50
50
  });
51
- it('should repair and handle invalid metadata (bug 1424938)', function () {
52
- var data = '<x:xmpmeta xmlns:x=\'adobe:ns:meta/\' ' + 'x:xmptk=\'XMP toolkit 2.9.1-13, framework 1.6\'>' + '<rdf:RDF xmlns:rdf=\'http://www.w3.org/1999/02/22-rdf-syntax-ns#\' ' + 'xmlns:iX=\'http://ns.adobe.com/iX/1.0/\'>' + '<rdf:Description rdf:about=\'61652fa7-fc1f-11dd-0000-ce81d41f9ecf\' ' + 'xmlns:pdf=\'http://ns.adobe.com/pdf/1.3/\' ' + 'pdf:Producer=\'GPL Ghostscript 8.63\'/>' + '<rdf:Description rdf:about=\'61652fa7-fc1f-11dd-0000-ce81d41f9ecf\' ' + 'xmlns:xap=\'http://ns.adobe.com/xap/1.0/\' ' + 'xap:ModifyDate=\'2009-02-13T12:42:54+01:00\' ' + 'xap:CreateDate=\'2009-02-13T12:42:54+01:00\'>' + '<xap:CreatorTool>\\376\\377\\000P\\000D\\000F\\000C\\000r\\000e\\000a' + '\\000t\\000o\\000r\\000 \\000V\\000e\\000r\\000s\\000i\\000o\\000n' + '\\000 \\0000\\000.\\0009\\000.\\0006</xap:CreatorTool>' + '</rdf:Description><rdf:Description ' + 'rdf:about=\'61652fa7-fc1f-11dd-0000-ce81d41f9ecf\' ' + 'xmlns:xapMM=\'http://ns.adobe.com/xap/1.0/mm/\' ' + 'xapMM:DocumentID=\'61652fa7-fc1f-11dd-0000-ce81d41f9ecf\'/>' + '<rdf:Description rdf:about=\'61652fa7-fc1f-11dd-0000-ce81d41f9ecf\' ' + 'xmlns:dc=\'http://purl.org/dc/elements/1.1/\' ' + 'dc:format=\'application/pdf\'><dc:title><rdf:Alt>' + '<rdf:li xml:lang=\'x-default\'>\\376\\377\\000L\\000&apos;\\000O\\000d' + '\\000i\\000s\\000s\\000e\\000e\\000 \\000t\\000h\\000\\351\\000m\\000a' + '\\000t\\000i\\000q\\000u\\000e\\000 \\000l\\000o\\000g\\000o\\000 ' + '\\000O\\000d\\000i\\000s\\000s\\000\\351\\000\\351\\000 \\000-\\000 ' + '\\000d\\000\\351\\000c\\000e\\000m\\000b\\000r\\000e\\000 \\0002\\0000' + '\\0000\\0008\\000.\\000p\\000u\\000b</rdf:li></rdf:Alt></dc:title>' + '<dc:creator><rdf:Seq><rdf:li>\\376\\377\\000O\\000D\\000I\\000S' + '</rdf:li></rdf:Seq></dc:creator></rdf:Description></rdf:RDF>' + '</x:xmpmeta>';
53
- var metadata = new _metadata.Metadata(data);
54
- expect(metadata.has('dc:title')).toBeTruthy();
55
- expect(metadata.has('dc:qux')).toBeFalsy();
56
- expect(metadata.get('dc:title')).toEqual('L\'Odissee thématique logo Odisséé - décembre 2008.pub');
57
- expect(metadata.get('dc:qux')).toEqual(null);
51
+ it("should repair and handle invalid metadata (bug 1424938)", function () {
52
+ const data = "<x:xmpmeta xmlns:x='adobe:ns:meta/' " + "x:xmptk='XMP toolkit 2.9.1-13, framework 1.6'>" + "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' " + "xmlns:iX='http://ns.adobe.com/iX/1.0/'>" + "<rdf:Description rdf:about='61652fa7-fc1f-11dd-0000-ce81d41f9ecf' " + "xmlns:pdf='http://ns.adobe.com/pdf/1.3/' " + "pdf:Producer='GPL Ghostscript 8.63'/>" + "<rdf:Description rdf:about='61652fa7-fc1f-11dd-0000-ce81d41f9ecf' " + "xmlns:xap='http://ns.adobe.com/xap/1.0/' " + "xap:ModifyDate='2009-02-13T12:42:54+01:00' " + "xap:CreateDate='2009-02-13T12:42:54+01:00'>" + "<xap:CreatorTool>\\376\\377\\000P\\000D\\000F\\000C\\000r\\000e\\000a" + "\\000t\\000o\\000r\\000 \\000V\\000e\\000r\\000s\\000i\\000o\\000n" + "\\000 \\0000\\000.\\0009\\000.\\0006</xap:CreatorTool>" + "</rdf:Description><rdf:Description " + "rdf:about='61652fa7-fc1f-11dd-0000-ce81d41f9ecf' " + "xmlns:xapMM='http://ns.adobe.com/xap/1.0/mm/' " + "xapMM:DocumentID='61652fa7-fc1f-11dd-0000-ce81d41f9ecf'/>" + "<rdf:Description rdf:about='61652fa7-fc1f-11dd-0000-ce81d41f9ecf' " + "xmlns:dc='http://purl.org/dc/elements/1.1/' " + "dc:format='application/pdf'><dc:title><rdf:Alt>" + "<rdf:li xml:lang='x-default'>\\376\\377\\000L\\000&apos;\\000O\\000d" + "\\000i\\000s\\000s\\000e\\000e\\000 \\000t\\000h\\000\\351\\000m\\000a" + "\\000t\\000i\\000q\\000u\\000e\\000 \\000l\\000o\\000g\\000o\\000 " + "\\000O\\000d\\000i\\000s\\000s\\000\\351\\000\\351\\000 \\000-\\000 " + "\\000d\\000\\351\\000c\\000e\\000m\\000b\\000r\\000e\\000 \\0002\\0000" + "\\0000\\0008\\000.\\000p\\000u\\000b</rdf:li></rdf:Alt></dc:title>" + "<dc:creator><rdf:Seq><rdf:li>\\376\\377\\000O\\000D\\000I\\000S" + "</rdf:li></rdf:Seq></dc:creator></rdf:Description></rdf:RDF>" + "</x:xmpmeta>";
53
+ const metadata = new _metadata.Metadata(data);
54
+ expect(metadata.has("dc:title")).toBeTruthy();
55
+ expect(metadata.has("dc:qux")).toBeFalsy();
56
+ expect(metadata.get("dc:title")).toEqual("L'Odissee thématique logo Odisséé - décembre 2008.pub");
57
+ expect(metadata.get("dc:qux")).toEqual(null);
58
58
  expect(metadata.getAll()).toEqual({
59
- 'dc:creator': 'ODIS',
60
- 'dc:title': 'L\'Odissee thématique logo Odisséé - décembre 2008.pub',
61
- 'xap:creatortool': 'PDFCreator Version 0.9.6'
59
+ "dc:creator": "ODIS",
60
+ "dc:title": "L'Odissee thématique logo Odisséé - décembre 2008.pub",
61
+ "xap:creatortool": "PDFCreator Version 0.9.6"
62
62
  });
63
63
  });
64
- it('should gracefully handle incomplete tags (issue 8884)', function () {
65
- var data = '<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d' + '<x:xmpmeta xmlns:x="adobe:ns:meta/">' + '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">' + '<rdf:Description rdf:about=""' + 'xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/">' + '</rdf:Description>' + '<rdf:Description rdf:about=""' + 'xmlns:xap="http://ns.adobe.com/xap/1.0/">' + '<xap:ModifyDate>2010-03-25T11:20:09-04:00</xap:ModifyDate>' + '<xap:CreateDate>2010-03-25T11:20:09-04:00</xap:CreateDate>' + '<xap:MetadataDate>2010-03-25T11:20:09-04:00</xap:MetadataDate>' + '</rdf:Description>' + '<rdf:Description rdf:about=""' + 'xmlns:dc="http://purl.org/dc/elements/1.1/">' + '<dc:format>application/pdf</dc:format>' + '</rdf:Description>' + '<rdf:Description rdf:about=""' + 'xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/">' + '<pdfaid:part>1</pdfaid:part>' + '<pdfaid:conformance>A</pdfaid:conformance>' + '</rdf:Description>' + '</rdf:RDF>' + '</x:xmpmeta>' + '<?xpacket end="w"?>';
66
- var metadata = new _metadata.Metadata(data);
64
+ it("should gracefully handle incomplete tags (issue 8884)", function () {
65
+ const data = '<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d' + '<x:xmpmeta xmlns:x="adobe:ns:meta/">' + '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">' + '<rdf:Description rdf:about=""' + 'xmlns:pdfx="http://ns.adobe.com/pdfx/1.3/">' + "</rdf:Description>" + '<rdf:Description rdf:about=""' + 'xmlns:xap="http://ns.adobe.com/xap/1.0/">' + "<xap:ModifyDate>2010-03-25T11:20:09-04:00</xap:ModifyDate>" + "<xap:CreateDate>2010-03-25T11:20:09-04:00</xap:CreateDate>" + "<xap:MetadataDate>2010-03-25T11:20:09-04:00</xap:MetadataDate>" + "</rdf:Description>" + '<rdf:Description rdf:about=""' + 'xmlns:dc="http://purl.org/dc/elements/1.1/">' + "<dc:format>application/pdf</dc:format>" + "</rdf:Description>" + '<rdf:Description rdf:about=""' + 'xmlns:pdfaid="http://www.aiim.org/pdfa/ns/id/">' + "<pdfaid:part>1</pdfaid:part>" + "<pdfaid:conformance>A</pdfaid:conformance>" + "</rdf:Description>" + "</rdf:RDF>" + "</x:xmpmeta>" + '<?xpacket end="w"?>';
66
+ const metadata = new _metadata.Metadata(data);
67
67
  expect((0, _util.isEmptyObj)(metadata.getAll())).toEqual(true);
68
68
  });
69
69
  it('should gracefully handle "junk" before the actual metadata (issue 10395)', function () {
70
- var data = '<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>' + '<x:xmpmeta x:xmptk="TallComponents PDFObjects 1.0" ' + 'xmlns:x="adobe:ns:meta/">' + '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">' + '<rdf:Description rdf:about="" ' + 'xmlns:pdf="http://ns.adobe.com/pdf/1.3/">' + '<pdf:Producer>PDFKit.NET 4.0.102.0</pdf:Producer>' + '<pdf:Keywords></pdf:Keywords>' + '<pdf:PDFVersion>1.7</pdf:PDFVersion></rdf:Description>' + '<rdf:Description rdf:about="" ' + 'xmlns:xap="http://ns.adobe.com/xap/1.0/">' + '<xap:CreateDate>2018-12-27T13:50:36-08:00</xap:CreateDate>' + '<xap:ModifyDate>2018-12-27T13:50:38-08:00</xap:ModifyDate>' + '<xap:CreatorTool></xap:CreatorTool>' + '<xap:MetadataDate>2018-12-27T13:50:38-08:00</xap:MetadataDate>' + '</rdf:Description><rdf:Description rdf:about="" ' + 'xmlns:dc="http://purl.org/dc/elements/1.1/">' + '<dc:creator><rdf:Seq><rdf:li></rdf:li></rdf:Seq></dc:creator>' + '<dc:subject><rdf:Bag /></dc:subject>' + '<dc:description><rdf:Alt><rdf:li xml:lang="x-default">' + '</rdf:li></rdf:Alt></dc:description>' + '<dc:title><rdf:Alt><rdf:li xml:lang="x-default"></rdf:li>' + '</rdf:Alt></dc:title><dc:format>application/pdf</dc:format>' + '</rdf:Description></rdf:RDF></x:xmpmeta><?xpacket end="w"?>';
71
- var metadata = new _metadata.Metadata(data);
72
- expect(metadata.has('dc:title')).toBeTruthy();
73
- expect(metadata.has('dc:qux')).toBeFalsy();
74
- expect(metadata.get('dc:title')).toEqual('');
75
- expect(metadata.get('dc:qux')).toEqual(null);
70
+ const data = '<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>' + '<x:xmpmeta x:xmptk="TallComponents PDFObjects 1.0" ' + 'xmlns:x="adobe:ns:meta/">' + '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">' + '<rdf:Description rdf:about="" ' + 'xmlns:pdf="http://ns.adobe.com/pdf/1.3/">' + "<pdf:Producer>PDFKit.NET 4.0.102.0</pdf:Producer>" + "<pdf:Keywords></pdf:Keywords>" + "<pdf:PDFVersion>1.7</pdf:PDFVersion></rdf:Description>" + '<rdf:Description rdf:about="" ' + 'xmlns:xap="http://ns.adobe.com/xap/1.0/">' + "<xap:CreateDate>2018-12-27T13:50:36-08:00</xap:CreateDate>" + "<xap:ModifyDate>2018-12-27T13:50:38-08:00</xap:ModifyDate>" + "<xap:CreatorTool></xap:CreatorTool>" + "<xap:MetadataDate>2018-12-27T13:50:38-08:00</xap:MetadataDate>" + '</rdf:Description><rdf:Description rdf:about="" ' + 'xmlns:dc="http://purl.org/dc/elements/1.1/">' + "<dc:creator><rdf:Seq><rdf:li></rdf:li></rdf:Seq></dc:creator>" + "<dc:subject><rdf:Bag /></dc:subject>" + '<dc:description><rdf:Alt><rdf:li xml:lang="x-default">' + "</rdf:li></rdf:Alt></dc:description>" + '<dc:title><rdf:Alt><rdf:li xml:lang="x-default"></rdf:li>' + "</rdf:Alt></dc:title><dc:format>application/pdf</dc:format>" + '</rdf:Description></rdf:RDF></x:xmpmeta><?xpacket end="w"?>';
71
+ const metadata = new _metadata.Metadata(data);
72
+ expect(metadata.has("dc:title")).toBeTruthy();
73
+ expect(metadata.has("dc:qux")).toBeFalsy();
74
+ expect(metadata.get("dc:title")).toEqual("");
75
+ expect(metadata.get("dc:qux")).toEqual(null);
76
76
  expect(metadata.getAll()).toEqual({
77
- 'dc:creator': '',
78
- 'dc:description': '',
79
- 'dc:format': 'application/pdf',
80
- 'dc:subject': '',
81
- 'dc:title': '',
82
- 'pdf:keywords': '',
83
- 'pdf:pdfversion': '1.7',
84
- 'pdf:producer': 'PDFKit.NET 4.0.102.0',
85
- 'xap:createdate': '2018-12-27T13:50:36-08:00',
86
- 'xap:creatortool': '',
87
- 'xap:metadatadate': '2018-12-27T13:50:38-08:00',
88
- 'xap:modifydate': '2018-12-27T13:50:38-08:00'
77
+ "dc:creator": "",
78
+ "dc:description": "",
79
+ "dc:format": "application/pdf",
80
+ "dc:subject": "",
81
+ "dc:title": "",
82
+ "pdf:keywords": "",
83
+ "pdf:pdfversion": "1.7",
84
+ "pdf:producer": "PDFKit.NET 4.0.102.0",
85
+ "xap:createdate": "2018-12-27T13:50:36-08:00",
86
+ "xap:creatortool": "",
87
+ "xap:metadatadate": "2018-12-27T13:50:38-08:00",
88
+ "xap:modifydate": "2018-12-27T13:50:38-08:00"
89
89
  });
90
90
  });
91
91
  it('should correctly handle metadata containing "&apos" (issue 10407)', function () {
92
- var data = '<x:xmpmeta xmlns:x=\'adobe:ns:meta/\'>' + '<rdf:RDF xmlns:rdf=\'http://www.w3.org/1999/02/22-rdf-syntax-ns#\'>' + '<rdf:Description xmlns:dc=\'http://purl.org/dc/elements/1.1/\'>' + '<dc:title><rdf:Alt>' + '<rdf:li xml:lang="x-default">&apos;Foo bar baz&apos;</rdf:li>' + '</rdf:Alt></dc:title></rdf:Description></rdf:RDF></x:xmpmeta>';
93
- var metadata = new _metadata.Metadata(data);
94
- expect(metadata.has('dc:title')).toBeTruthy();
95
- expect(metadata.has('dc:qux')).toBeFalsy();
96
- expect(metadata.get('dc:title')).toEqual('\'Foo bar baz\'');
97
- expect(metadata.get('dc:qux')).toEqual(null);
92
+ const data = "<x:xmpmeta xmlns:x='adobe:ns:meta/'>" + "<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>" + "<rdf:Description xmlns:dc='http://purl.org/dc/elements/1.1/'>" + "<dc:title><rdf:Alt>" + '<rdf:li xml:lang="x-default">&apos;Foo bar baz&apos;</rdf:li>' + "</rdf:Alt></dc:title></rdf:Description></rdf:RDF></x:xmpmeta>";
93
+ const metadata = new _metadata.Metadata(data);
94
+ expect(metadata.has("dc:title")).toBeTruthy();
95
+ expect(metadata.has("dc:qux")).toBeFalsy();
96
+ expect(metadata.get("dc:title")).toEqual("'Foo bar baz'");
97
+ expect(metadata.get("dc:qux")).toEqual(null);
98
98
  expect(metadata.getAll()).toEqual({
99
- 'dc:title': '\'Foo bar baz\''
99
+ "dc:title": "'Foo bar baz'"
100
100
  });
101
101
  });
102
- it('should gracefully handle unbalanced end tags (issue 10410)', function () {
103
- var data = '<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>' + '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">' + '<rdf:Description rdf:about="" ' + 'xmlns:pdf="http://ns.adobe.com/pdf/1.3/">' + '<pdf:Producer>Soda PDF 5</pdf:Producer></rdf:Description>' + '<rdf:Description rdf:about="" ' + 'xmlns:xap="http://ns.adobe.com/xap/1.0/">' + '<xap:CreateDate>2018-10-02T08:14:49-05:00</xap:CreateDate>' + '<xap:CreatorTool>Soda PDF 5</xap:CreatorTool>' + '<xap:MetadataDate>2018-10-02T08:14:49-05:00</xap:MetadataDate> ' + '<xap:ModifyDate>2018-10-02T08:14:49-05:00</xap:ModifyDate>' + '</rdf:Description><rdf:Description rdf:about="" ' + 'xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">' + '<xmpMM:DocumentID>uuid:00000000-1c84-3cf9-89ba-bef0e729c831' + '</xmpMM:DocumentID></rdf:Description>' + '</rdf:RDF></x:xmpmeta><?xpacket end="w"?>';
104
- var metadata = new _metadata.Metadata(data);
102
+ it("should gracefully handle unbalanced end tags (issue 10410)", function () {
103
+ const data = '<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?>' + '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">' + '<rdf:Description rdf:about="" ' + 'xmlns:pdf="http://ns.adobe.com/pdf/1.3/">' + "<pdf:Producer>Soda PDF 5</pdf:Producer></rdf:Description>" + '<rdf:Description rdf:about="" ' + 'xmlns:xap="http://ns.adobe.com/xap/1.0/">' + "<xap:CreateDate>2018-10-02T08:14:49-05:00</xap:CreateDate>" + "<xap:CreatorTool>Soda PDF 5</xap:CreatorTool>" + "<xap:MetadataDate>2018-10-02T08:14:49-05:00</xap:MetadataDate> " + "<xap:ModifyDate>2018-10-02T08:14:49-05:00</xap:ModifyDate>" + '</rdf:Description><rdf:Description rdf:about="" ' + 'xmlns:xmpMM="http://ns.adobe.com/xap/1.0/mm/">' + "<xmpMM:DocumentID>uuid:00000000-1c84-3cf9-89ba-bef0e729c831" + "</xmpMM:DocumentID></rdf:Description>" + '</rdf:RDF></x:xmpmeta><?xpacket end="w"?>';
104
+ const metadata = new _metadata.Metadata(data);
105
105
  expect((0, _util.isEmptyObj)(metadata.getAll())).toEqual(true);
106
106
  });
107
- it('should not be vulnerable to the billion laughs attack', function () {
108
- var data = '<?xml version="1.0"?>' + '<!DOCTYPE lolz [' + ' <!ENTITY lol "lol">' + ' <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">' + ' <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;">' + ' <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">' + ' <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">' + ' <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">' + ' <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">' + ' <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">' + ' <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">' + ' <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">' + ']>' + '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">' + ' <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1/">' + ' <dc:title>' + ' <rdf:Alt>' + ' <rdf:li xml:lang="x-default">a&lol9;b</rdf:li>' + ' </rdf:Alt>' + ' </dc:title>' + ' </rdf:Description>' + '</rdf:RDF>';
109
- var metadata = new _metadata.Metadata(data);
110
- expect(metadata.has('dc:title')).toBeTruthy();
111
- expect(metadata.has('dc:qux')).toBeFalsy();
112
- expect(metadata.get('dc:title')).toEqual('a&lol9;b');
113
- expect(metadata.get('dc:qux')).toEqual(null);
107
+ it("should not be vulnerable to the billion laughs attack", function () {
108
+ const data = '<?xml version="1.0"?>' + "<!DOCTYPE lolz [" + ' <!ENTITY lol "lol">' + ' <!ENTITY lol1 "&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;&lol;">' + ' <!ENTITY lol2 "&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;&lol1;">' + ' <!ENTITY lol3 "&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;&lol2;">' + ' <!ENTITY lol4 "&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;&lol3;">' + ' <!ENTITY lol5 "&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;&lol4;">' + ' <!ENTITY lol6 "&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;&lol5;">' + ' <!ENTITY lol7 "&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;&lol6;">' + ' <!ENTITY lol8 "&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;&lol7;">' + ' <!ENTITY lol9 "&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;&lol8;">' + "]>" + '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">' + ' <rdf:Description xmlns:dc="http://purl.org/dc/elements/1.1/">' + " <dc:title>" + " <rdf:Alt>" + ' <rdf:li xml:lang="x-default">a&lol9;b</rdf:li>' + " </rdf:Alt>" + " </dc:title>" + " </rdf:Description>" + "</rdf:RDF>";
109
+ const metadata = new _metadata.Metadata(data);
110
+ expect(metadata.has("dc:title")).toBeTruthy();
111
+ expect(metadata.has("dc:qux")).toBeFalsy();
112
+ expect(metadata.get("dc:title")).toEqual("a&lol9;b");
113
+ expect(metadata.get("dc:qux")).toEqual(null);
114
114
  expect(metadata.getAll()).toEqual({
115
- 'dc:title': 'a&lol9;b'
115
+ "dc:title": "a&lol9;b"
116
116
  });
117
117
  });
118
118
  });
@@ -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 2018 Mozilla Foundation
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,36 +21,36 @@
21
21
  */
22
22
  "use strict";
23
23
 
24
- var _murmurhash = require("../../core/murmurhash3");
24
+ var _murmurhash = require("../../core/murmurhash3.js");
25
25
 
26
- describe('MurmurHash3_64', function () {
27
- it('instantiates without seed', function () {
26
+ describe("MurmurHash3_64", function () {
27
+ it("instantiates without seed", function () {
28
28
  var hash = new _murmurhash.MurmurHash3_64();
29
29
  expect(hash).toEqual(jasmine.any(_murmurhash.MurmurHash3_64));
30
30
  });
31
- it('instantiates with seed', function () {
31
+ it("instantiates with seed", function () {
32
32
  var hash = new _murmurhash.MurmurHash3_64(1);
33
33
  expect(hash).toEqual(jasmine.any(_murmurhash.MurmurHash3_64));
34
34
  });
35
- var hexDigestExpected = 'f61cfdbfdae0f65e';
36
- var sourceText = 'test';
35
+ var hexDigestExpected = "f61cfdbfdae0f65e";
36
+ var sourceText = "test";
37
37
  var sourceCharCodes = [116, 101, 115, 116];
38
- it('correctly generates a hash from a string', function () {
38
+ it("correctly generates a hash from a string", function () {
39
39
  var hash = new _murmurhash.MurmurHash3_64();
40
40
  hash.update(sourceText);
41
41
  expect(hash.hexdigest()).toEqual(hexDigestExpected);
42
42
  });
43
- it('correctly generates a hash from a Uint8Array', function () {
43
+ it("correctly generates a hash from a Uint8Array", function () {
44
44
  var hash = new _murmurhash.MurmurHash3_64();
45
45
  hash.update(new Uint8Array(sourceCharCodes));
46
46
  expect(hash.hexdigest()).toEqual(hexDigestExpected);
47
47
  });
48
- it('correctly generates a hash from a Uint32Array', function () {
48
+ it("correctly generates a hash from a Uint32Array", function () {
49
49
  var hash = new _murmurhash.MurmurHash3_64();
50
50
  hash.update(new Uint32Array(new Uint8Array(sourceCharCodes).buffer));
51
51
  expect(hash.hexdigest()).toEqual(hexDigestExpected);
52
52
  });
53
- it('changes the hash after update without seed', function () {
53
+ it("changes the hash after update without seed", function () {
54
54
  var hash = new _murmurhash.MurmurHash3_64();
55
55
  var hexdigest1, hexdigest2;
56
56
  hash.update(sourceText);
@@ -59,7 +59,7 @@ describe('MurmurHash3_64', function () {
59
59
  hexdigest2 = hash.hexdigest();
60
60
  expect(hexdigest1).not.toEqual(hexdigest2);
61
61
  });
62
- it('changes the hash after update with seed', function () {
62
+ it("changes the hash after update with seed", function () {
63
63
  var hash = new _murmurhash.MurmurHash3_64(1);
64
64
  var hexdigest1, hexdigest2;
65
65
  hash.update(sourceText);
@@ -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 2018 Mozilla Foundation
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,14 +21,14 @@
21
21
  */
22
22
  "use strict";
23
23
 
24
- var _network = require("../../display/network");
24
+ var _util = require("../../shared/util.js");
25
25
 
26
- describe('network', function () {
27
- var pdf1 = new URL('../pdfs/tracemonkey.pdf', window.location).href;
26
+ var _network = require("../../display/network.js");
27
+
28
+ describe("network", function () {
29
+ var pdf1 = new URL("../pdfs/tracemonkey.pdf", window.location).href;
28
30
  var pdf1Length = 1016315;
29
- var pdf2 = new URL('../pdfs/pdf.pdf', window.location).href;
30
- var pdf2Length = 32472771;
31
- it('read without stream and range', function (done) {
31
+ it("read without stream and range", function (done) {
32
32
  var stream = new _network.PDFNetworkStream({
33
33
  url: pdf1,
34
34
  rangeChunkSize: 65536,
@@ -44,10 +44,10 @@ describe('network', function () {
44
44
  var len = 0,
45
45
  count = 0;
46
46
 
47
- var read = function read() {
47
+ var read = function () {
48
48
  return fullReader.read().then(function (result) {
49
49
  if (result.done) {
50
- return;
50
+ return undefined;
51
51
  }
52
52
 
53
53
  count++;
@@ -67,55 +67,7 @@ describe('network', function () {
67
67
  done.fail(reason);
68
68
  });
69
69
  });
70
- it('read with streaming', function (done) {
71
- var userAgent = window.navigator.userAgent;
72
- var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(userAgent);
73
-
74
- if (!m || m[1] < 9) {
75
- expect(true).toEqual(true);
76
- done();
77
- return;
78
- }
79
-
80
- var stream = new _network.PDFNetworkStream({
81
- url: pdf2,
82
- rangeChunkSize: 65536,
83
- disableStream: false,
84
- disableRange: false
85
- });
86
- var fullReader = stream.getFullReader();
87
- var isStreamingSupported, isRangeSupported;
88
- var promise = fullReader.headersReady.then(function () {
89
- isStreamingSupported = fullReader.isStreamingSupported;
90
- isRangeSupported = fullReader.isRangeSupported;
91
- });
92
- var len = 0,
93
- count = 0;
94
-
95
- var read = function read() {
96
- return fullReader.read().then(function (result) {
97
- if (result.done) {
98
- return;
99
- }
100
-
101
- count++;
102
- len += result.value.byteLength;
103
- return read();
104
- });
105
- };
106
-
107
- var readPromise = Promise.all([read(), promise]);
108
- readPromise.then(function () {
109
- expect(len).toEqual(pdf2Length);
110
- expect(count).toBeGreaterThan(1);
111
- expect(isStreamingSupported).toEqual(true);
112
- expect(isRangeSupported).toEqual(true);
113
- done();
114
- }).catch(function (reason) {
115
- done.fail(reason);
116
- });
117
- });
118
- it('read custom ranges', function (done) {
70
+ it("read custom ranges", function (done) {
119
71
  var rangeSize = 32768;
120
72
  var stream = new _network.PDFNetworkStream({
121
73
  url: pdf1,
@@ -129,7 +81,7 @@ describe('network', function () {
129
81
  var promise = fullReader.headersReady.then(function () {
130
82
  isStreamingSupported = fullReader.isStreamingSupported;
131
83
  isRangeSupported = fullReader.isRangeSupported;
132
- fullReader.cancel('Don\'t need full reader');
84
+ fullReader.cancel(new _util.AbortException("Don't need fullReader."));
133
85
  fullReaderCancelled = true;
134
86
  });
135
87
  var tailSize = pdf1Length % rangeSize || rangeSize;
@@ -142,10 +94,10 @@ describe('network', function () {
142
94
  value: 0
143
95
  };
144
96
 
145
- var read = function read(reader, lenResult) {
97
+ var read = function (reader, lenResult) {
146
98
  return reader.read().then(function (result) {
147
99
  if (result.done) {
148
- return;
100
+ return undefined;
149
101
  }
150
102
 
151
103
  lenResult.value += result.value.byteLength;