pdfjs-dist 2.2.228 → 2.6.347

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pdfjs-dist might be problematic. Click here for more details.

Files changed (229) hide show
  1. package/README.md +4 -0
  2. package/bower.json +1 -1
  3. package/build/pdf.js +8816 -19300
  4. package/build/pdf.js.map +1 -1
  5. package/build/pdf.min.js +22 -1
  6. package/build/pdf.worker.entry.js +5 -3
  7. package/build/pdf.worker.js +27185 -35746
  8. package/build/pdf.worker.js.map +1 -1
  9. package/build/pdf.worker.min.js +22 -1
  10. package/es5/build/pdf.js +26665 -0
  11. package/es5/build/pdf.js.map +1 -0
  12. package/es5/build/pdf.min.js +22 -0
  13. package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
  14. package/es5/build/pdf.worker.js +61231 -0
  15. package/es5/build/pdf.worker.js.map +1 -0
  16. package/es5/build/pdf.worker.min.js +22 -0
  17. package/es5/image_decoders/pdf.image_decoders.js +12529 -0
  18. package/es5/image_decoders/pdf.image_decoders.js.map +1 -0
  19. package/es5/image_decoders/pdf.image_decoders.min.js +22 -0
  20. package/es5/web/images/annotation-check.svg +11 -0
  21. package/es5/web/images/annotation-comment.svg +16 -0
  22. package/es5/web/images/annotation-help.svg +26 -0
  23. package/es5/web/images/annotation-insert.svg +10 -0
  24. package/es5/web/images/annotation-key.svg +11 -0
  25. package/es5/web/images/annotation-newparagraph.svg +11 -0
  26. package/es5/web/images/annotation-noicon.svg +7 -0
  27. package/es5/web/images/annotation-note.svg +42 -0
  28. package/es5/web/images/annotation-paragraph.svg +16 -0
  29. package/es5/web/images/loading-icon.gif +0 -0
  30. package/es5/web/images/shadow.png +0 -0
  31. package/es5/web/pdf_viewer.css +406 -0
  32. package/es5/web/pdf_viewer.js +7886 -0
  33. package/es5/web/pdf_viewer.js.map +1 -0
  34. package/image_decoders/pdf.image_decoders.js +1498 -4832
  35. package/image_decoders/pdf.image_decoders.js.map +1 -1
  36. package/image_decoders/pdf.image_decoders.min.js +22 -1
  37. package/lib/README.md +7 -0
  38. package/lib/core/annotation.js +1144 -927
  39. package/lib/core/arithmetic_decoder.js +81 -97
  40. package/lib/core/bidi.js +54 -46
  41. package/lib/core/ccitt.js +88 -81
  42. package/lib/core/ccitt_stream.js +15 -14
  43. package/lib/core/cff_parser.js +747 -716
  44. package/lib/core/charsets.js +4 -4
  45. package/lib/core/chunked_stream.js +462 -553
  46. package/lib/core/cmap.js +231 -277
  47. package/lib/core/colorspace.js +715 -857
  48. package/lib/core/core_utils.js +57 -52
  49. package/lib/core/crypto.js +416 -437
  50. package/lib/core/document.js +629 -670
  51. package/lib/core/encodings.js +15 -15
  52. package/lib/core/evaluator.js +3229 -2800
  53. package/lib/core/font_renderer.js +135 -178
  54. package/lib/core/fonts.js +602 -534
  55. package/lib/core/function.js +355 -279
  56. package/lib/core/glyphlist.js +4527 -4526
  57. package/lib/core/image.js +442 -439
  58. package/lib/core/image_utils.js +221 -61
  59. package/lib/core/jbig2.js +325 -316
  60. package/lib/core/jbig2_stream.js +18 -17
  61. package/lib/core/jpeg_stream.js +21 -26
  62. package/lib/core/jpg.js +289 -233
  63. package/lib/core/jpx.js +161 -143
  64. package/lib/core/jpx_stream.js +28 -28
  65. package/lib/core/metrics.js +2928 -2928
  66. package/lib/core/murmurhash3.js +87 -102
  67. package/lib/core/obj.js +1343 -1300
  68. package/lib/core/operator_list.js +90 -67
  69. package/lib/core/parser.js +990 -987
  70. package/lib/core/pattern.js +105 -77
  71. package/lib/core/pdf_manager.js +149 -316
  72. package/lib/core/primitives.js +156 -104
  73. package/lib/core/ps_parser.js +175 -214
  74. package/lib/core/standard_fonts.js +237 -236
  75. package/lib/core/stream.js +94 -74
  76. package/lib/core/type1_parser.js +89 -69
  77. package/lib/core/unicode.js +1654 -1654
  78. package/lib/core/worker.js +275 -290
  79. package/lib/core/worker_stream.js +101 -210
  80. package/lib/core/writer.js +242 -0
  81. package/lib/display/annotation_layer.js +772 -1041
  82. package/lib/display/annotation_storage.js +89 -0
  83. package/lib/display/api.js +1575 -1868
  84. package/lib/display/api_compatibility.js +12 -17
  85. package/lib/display/canvas.js +370 -222
  86. package/lib/display/content_disposition.js +40 -59
  87. package/lib/display/display_utils.js +341 -536
  88. package/lib/display/fetch_stream.js +188 -304
  89. package/lib/display/font_loader.js +282 -414
  90. package/lib/display/metadata.js +81 -99
  91. package/lib/display/network.js +362 -511
  92. package/lib/display/network_utils.js +25 -18
  93. package/lib/display/node_stream.js +283 -465
  94. package/lib/display/node_utils.js +87 -0
  95. package/lib/display/optional_content_config.js +184 -0
  96. package/lib/display/pattern_helper.js +93 -44
  97. package/lib/display/svg.js +1163 -1401
  98. package/lib/display/text_layer.js +154 -137
  99. package/lib/display/transport_stream.js +237 -375
  100. package/lib/display/webgl.js +70 -83
  101. package/lib/display/worker_options.js +3 -3
  102. package/lib/display/xml_parser.js +303 -392
  103. package/lib/examples/node/domstubs.js +37 -37
  104. package/lib/pdf.js +220 -58
  105. package/lib/pdf.worker.js +14 -6
  106. package/lib/shared/compatibility.js +3 -246
  107. package/lib/shared/is_node.js +7 -6
  108. package/lib/shared/message_handler.js +327 -332
  109. package/lib/shared/util.js +271 -306
  110. package/lib/test/unit/annotation_spec.js +1902 -763
  111. package/lib/test/unit/annotation_storage_spec.js +83 -0
  112. package/lib/test/unit/api_spec.js +790 -592
  113. package/lib/test/unit/bidi_spec.js +7 -7
  114. package/lib/test/unit/cff_parser_spec.js +73 -72
  115. package/lib/test/unit/clitests_helper.js +7 -9
  116. package/lib/test/unit/cmap_spec.js +86 -88
  117. package/lib/test/unit/colorspace_spec.js +346 -154
  118. package/lib/test/unit/core_utils_spec.js +125 -105
  119. package/lib/test/unit/crypto_spec.js +232 -185
  120. package/lib/test/unit/custom_spec.js +150 -24
  121. package/lib/test/unit/display_svg_spec.js +34 -39
  122. package/lib/test/unit/display_utils_spec.js +139 -149
  123. package/lib/test/unit/document_spec.js +128 -17
  124. package/lib/test/unit/encodings_spec.js +12 -34
  125. package/lib/test/unit/evaluator_spec.js +112 -91
  126. package/lib/test/unit/fetch_stream_spec.js +31 -29
  127. package/lib/test/unit/function_spec.js +206 -204
  128. package/lib/test/unit/jasmine-boot.js +48 -32
  129. package/lib/test/unit/message_handler_spec.js +173 -159
  130. package/lib/test/unit/metadata_spec.js +71 -71
  131. package/lib/test/unit/murmurhash3_spec.js +12 -12
  132. package/lib/test/unit/network_spec.js +13 -11
  133. package/lib/test/unit/network_utils_spec.js +158 -144
  134. package/lib/test/unit/node_stream_spec.js +76 -90
  135. package/lib/test/unit/parser_spec.js +108 -114
  136. package/lib/test/unit/pdf_find_controller_spec.js +55 -86
  137. package/lib/test/unit/pdf_find_utils_spec.js +32 -32
  138. package/lib/test/unit/pdf_history_spec.js +32 -32
  139. package/lib/test/unit/primitives_spec.js +337 -156
  140. package/lib/test/unit/stream_spec.js +16 -14
  141. package/lib/test/unit/test_utils.js +91 -304
  142. package/lib/test/unit/testreporter.js +33 -22
  143. package/lib/test/unit/type1_parser_spec.js +42 -42
  144. package/lib/test/unit/ui_utils_spec.js +299 -461
  145. package/lib/test/unit/unicode_spec.js +42 -42
  146. package/lib/test/unit/util_spec.js +129 -149
  147. package/lib/test/unit/writer_spec.js +84 -0
  148. package/lib/web/annotation_layer_builder.js +78 -111
  149. package/lib/web/app.js +1542 -1267
  150. package/lib/web/app_options.js +76 -91
  151. package/lib/web/base_tree_viewer.js +100 -0
  152. package/lib/web/base_viewer.js +869 -834
  153. package/lib/web/chromecom.js +165 -252
  154. package/lib/web/debugger.js +149 -205
  155. package/lib/web/download_manager.js +34 -58
  156. package/lib/web/firefox_print_service.js +62 -34
  157. package/lib/web/firefoxcom.js +206 -374
  158. package/lib/web/genericcom.js +26 -108
  159. package/lib/web/genericl10n.js +24 -153
  160. package/lib/web/grab_to_pan.js +30 -30
  161. package/lib/web/interfaces.js +80 -254
  162. package/lib/web/overlay_manager.js +70 -246
  163. package/lib/web/password_prompt.js +38 -64
  164. package/lib/web/pdf_attachment_viewer.js +150 -126
  165. package/lib/web/pdf_cursor_tools.js +75 -102
  166. package/lib/web/pdf_document_properties.js +229 -383
  167. package/lib/web/pdf_find_bar.js +136 -170
  168. package/lib/web/pdf_find_controller.js +492 -548
  169. package/lib/web/pdf_find_utils.js +13 -13
  170. package/lib/web/pdf_history.js +397 -406
  171. package/lib/web/pdf_layer_viewer.js +208 -0
  172. package/lib/web/pdf_link_service.js +304 -348
  173. package/lib/web/pdf_outline_viewer.js +119 -212
  174. package/lib/web/pdf_page_view.js +474 -513
  175. package/lib/web/pdf_presentation_mode.js +308 -357
  176. package/lib/web/pdf_print_service.js +96 -110
  177. package/lib/web/pdf_rendering_queue.js +87 -108
  178. package/lib/web/pdf_sidebar.js +286 -302
  179. package/lib/web/pdf_sidebar_resizer.js +92 -119
  180. package/lib/web/pdf_single_page_viewer.js +77 -126
  181. package/lib/web/pdf_thumbnail_view.js +289 -297
  182. package/lib/web/pdf_thumbnail_viewer.js +202 -206
  183. package/lib/web/pdf_viewer.component.js +20 -21
  184. package/lib/web/pdf_viewer.js +55 -115
  185. package/lib/web/preferences.js +69 -273
  186. package/lib/web/secondary_toolbar.js +164 -196
  187. package/lib/web/text_layer_builder.js +284 -319
  188. package/lib/web/toolbar.js +217 -210
  189. package/lib/web/ui_utils.js +274 -421
  190. package/lib/web/view_history.js +52 -226
  191. package/lib/web/viewer_compatibility.js +21 -6
  192. package/package.json +4 -9
  193. package/types/display/annotation_layer.d.ts +61 -0
  194. package/types/display/annotation_storage.d.ts +36 -0
  195. package/types/display/api.d.ts +1107 -0
  196. package/types/display/api_compatibility.d.ts +1 -0
  197. package/types/display/canvas.d.ts +4 -0
  198. package/types/display/content_disposition.d.ts +7 -0
  199. package/types/display/display_utils.d.ts +243 -0
  200. package/types/display/fetch_stream.d.ts +67 -0
  201. package/types/display/font_loader.d.ts +19 -0
  202. package/types/display/metadata.d.ts +9 -0
  203. package/types/display/network.d.ts +80 -0
  204. package/types/display/network_utils.d.ts +14 -0
  205. package/types/display/node_stream.d.ts +72 -0
  206. package/types/display/node_utils.d.ts +6 -0
  207. package/types/display/optional_content_config.d.ts +12 -0
  208. package/types/display/pattern_helper.d.ts +5 -0
  209. package/types/display/svg.d.ts +2 -0
  210. package/types/display/text_layer.d.ts +83 -0
  211. package/types/display/transport_stream.d.ts +57 -0
  212. package/types/display/webgl.d.ts +20 -0
  213. package/types/display/worker_options.d.ts +27 -0
  214. package/types/display/xml_parser.d.ts +35 -0
  215. package/types/pdf.d.ts +33 -0
  216. package/types/shared/compatibility.d.ts +1 -0
  217. package/types/shared/is_node.d.ts +1 -0
  218. package/types/shared/message_handler.d.ts +62 -0
  219. package/types/shared/util.d.ts +421 -0
  220. package/web/images/shadow.png +0 -0
  221. package/web/pdf_viewer.css +29 -27
  222. package/web/pdf_viewer.js +3524 -4746
  223. package/web/pdf_viewer.js.map +1 -1
  224. package/webpack.js +6 -5
  225. package/external/streams/streams-lib.js +0 -3962
  226. package/external/url/url-lib.js +0 -627
  227. package/lib/shared/streams_polyfill.js +0 -43
  228. package/lib/shared/url_polyfill.js +0 -56
  229. package/web/images/texture.png +0 -0
@@ -2,7 +2,7 @@
2
2
  * @licstart The following is the entire license notice for the
3
3
  * Javascript code in this page
4
4
  *
5
- * Copyright 2019 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,22 +21,22 @@
21
21
  */
22
22
  "use strict";
23
23
 
24
- var _glyphlist = require("../../core/glyphlist");
24
+ var _glyphlist = require("../../core/glyphlist.js");
25
25
 
26
- var _unicode = require("../../core/unicode");
26
+ var _unicode = require("../../core/unicode.js");
27
27
 
28
- describe('unicode', function () {
29
- describe('mapSpecialUnicodeValues', function () {
30
- it('should not re-map normal Unicode values', function () {
28
+ describe("unicode", function () {
29
+ describe("mapSpecialUnicodeValues", function () {
30
+ it("should not re-map normal Unicode values", function () {
31
31
  expect((0, _unicode.mapSpecialUnicodeValues)(0x0041)).toEqual(0x0041);
32
- expect((0, _unicode.mapSpecialUnicodeValues)(0xFB01)).toEqual(0xFB01);
32
+ expect((0, _unicode.mapSpecialUnicodeValues)(0xfb01)).toEqual(0xfb01);
33
33
  });
34
- it('should re-map special Unicode values', function () {
35
- expect((0, _unicode.mapSpecialUnicodeValues)(0xF8E9)).toEqual(0x00A9);
36
- expect((0, _unicode.mapSpecialUnicodeValues)(0xFFFF)).toEqual(0);
34
+ it("should re-map special Unicode values", function () {
35
+ expect((0, _unicode.mapSpecialUnicodeValues)(0xf8e9)).toEqual(0x00a9);
36
+ expect((0, _unicode.mapSpecialUnicodeValues)(0xffff)).toEqual(0);
37
37
  });
38
38
  });
39
- describe('getUnicodeForGlyph', function () {
39
+ describe("getUnicodeForGlyph", function () {
40
40
  var standardMap, dingbatsMap;
41
41
  beforeAll(function (done) {
42
42
  standardMap = (0, _glyphlist.getGlyphsUnicode)();
@@ -46,31 +46,31 @@ describe('unicode', function () {
46
46
  afterAll(function () {
47
47
  standardMap = dingbatsMap = null;
48
48
  });
49
- it('should get Unicode values for valid glyph names', function () {
50
- expect((0, _unicode.getUnicodeForGlyph)('A', standardMap)).toEqual(0x0041);
51
- expect((0, _unicode.getUnicodeForGlyph)('a1', dingbatsMap)).toEqual(0x2701);
49
+ it("should get Unicode values for valid glyph names", function () {
50
+ expect((0, _unicode.getUnicodeForGlyph)("A", standardMap)).toEqual(0x0041);
51
+ expect((0, _unicode.getUnicodeForGlyph)("a1", dingbatsMap)).toEqual(0x2701);
52
52
  });
53
- it('should recover Unicode values from uniXXXX/uXXXX{XX} glyph names', function () {
54
- expect((0, _unicode.getUnicodeForGlyph)('uni0041', standardMap)).toEqual(0x0041);
55
- expect((0, _unicode.getUnicodeForGlyph)('u0041', standardMap)).toEqual(0x0041);
56
- expect((0, _unicode.getUnicodeForGlyph)('uni2701', dingbatsMap)).toEqual(0x2701);
57
- expect((0, _unicode.getUnicodeForGlyph)('u2701', dingbatsMap)).toEqual(0x2701);
53
+ it("should recover Unicode values from uniXXXX/uXXXX{XX} glyph names", function () {
54
+ expect((0, _unicode.getUnicodeForGlyph)("uni0041", standardMap)).toEqual(0x0041);
55
+ expect((0, _unicode.getUnicodeForGlyph)("u0041", standardMap)).toEqual(0x0041);
56
+ expect((0, _unicode.getUnicodeForGlyph)("uni2701", dingbatsMap)).toEqual(0x2701);
57
+ expect((0, _unicode.getUnicodeForGlyph)("u2701", dingbatsMap)).toEqual(0x2701);
58
58
  });
59
- it('should not get Unicode values for invalid glyph names', function () {
60
- expect((0, _unicode.getUnicodeForGlyph)('Qwerty', standardMap)).toEqual(-1);
61
- expect((0, _unicode.getUnicodeForGlyph)('Qwerty', dingbatsMap)).toEqual(-1);
59
+ it("should not get Unicode values for invalid glyph names", function () {
60
+ expect((0, _unicode.getUnicodeForGlyph)("Qwerty", standardMap)).toEqual(-1);
61
+ expect((0, _unicode.getUnicodeForGlyph)("Qwerty", dingbatsMap)).toEqual(-1);
62
62
  });
63
63
  });
64
- describe('getUnicodeRangeFor', function () {
65
- it('should get correct Unicode range', function () {
64
+ describe("getUnicodeRangeFor", function () {
65
+ it("should get correct Unicode range", function () {
66
66
  expect((0, _unicode.getUnicodeRangeFor)(0x0041)).toEqual(0);
67
- expect((0, _unicode.getUnicodeRangeFor)(0xFB01)).toEqual(62);
67
+ expect((0, _unicode.getUnicodeRangeFor)(0xfb01)).toEqual(62);
68
68
  });
69
- it('should not get a Unicode range', function () {
70
- expect((0, _unicode.getUnicodeRangeFor)(0x05FF)).toEqual(-1);
69
+ it("should not get a Unicode range", function () {
70
+ expect((0, _unicode.getUnicodeRangeFor)(0x05ff)).toEqual(-1);
71
71
  });
72
72
  });
73
- describe('getNormalizedUnicodes', function () {
73
+ describe("getNormalizedUnicodes", function () {
74
74
  var NormalizedUnicodes;
75
75
  beforeAll(function (done) {
76
76
  NormalizedUnicodes = (0, _unicode.getNormalizedUnicodes)();
@@ -79,23 +79,23 @@ describe('unicode', function () {
79
79
  afterAll(function () {
80
80
  NormalizedUnicodes = null;
81
81
  });
82
- it('should get normalized Unicode values for ligatures', function () {
83
- expect(NormalizedUnicodes["\uFB01"]).toEqual('fi');
82
+ it("should get normalized Unicode values for ligatures", function () {
83
+ expect(NormalizedUnicodes["\uFB01"]).toEqual("fi");
84
84
  expect(NormalizedUnicodes["\u0675"]).toEqual("\u0627\u0674");
85
85
  });
86
- it('should not normalize standard characters', function () {
87
- expect(NormalizedUnicodes['A']).toEqual(undefined);
86
+ it("should not normalize standard characters", function () {
87
+ expect(NormalizedUnicodes.A).toEqual(undefined);
88
88
  });
89
89
  });
90
- describe('reverseIfRtl', function () {
90
+ describe("reverseIfRtl", function () {
91
91
  var NormalizedUnicodes;
92
92
 
93
- function getGlyphUnicode(_char) {
94
- if (NormalizedUnicodes[_char] !== undefined) {
95
- return NormalizedUnicodes[_char];
93
+ function getGlyphUnicode(char) {
94
+ if (NormalizedUnicodes[char] !== undefined) {
95
+ return NormalizedUnicodes[char];
96
96
  }
97
97
 
98
- return _char;
98
+ return char;
99
99
  }
100
100
 
101
101
  beforeAll(function (done) {
@@ -105,13 +105,13 @@ describe('unicode', function () {
105
105
  afterAll(function () {
106
106
  NormalizedUnicodes = null;
107
107
  });
108
- it('should not reverse LTR characters', function () {
109
- var A = getGlyphUnicode('A');
110
- expect((0, _unicode.reverseIfRtl)(A)).toEqual('A');
108
+ it("should not reverse LTR characters", function () {
109
+ var A = getGlyphUnicode("A");
110
+ expect((0, _unicode.reverseIfRtl)(A)).toEqual("A");
111
111
  var fi = getGlyphUnicode("\uFB01");
112
- expect((0, _unicode.reverseIfRtl)(fi)).toEqual('fi');
112
+ expect((0, _unicode.reverseIfRtl)(fi)).toEqual("fi");
113
113
  });
114
- it('should reverse RTL characters', function () {
114
+ it("should reverse RTL characters", function () {
115
115
  var heAlef = getGlyphUnicode("\u05D0");
116
116
  expect((0, _unicode.reverseIfRtl)(heAlef)).toEqual("\u05D0");
117
117
  var arAlef = getGlyphUnicode("\u0675");
@@ -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 2019 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,242 +21,222 @@
21
21
  */
22
22
  "use strict";
23
23
 
24
- var _util = require("../../shared/util");
24
+ var _util = require("../../shared/util.js");
25
25
 
26
- function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
27
-
28
- describe('util', function () {
29
- describe('bytesToString', function () {
30
- it('handles non-array arguments', function () {
26
+ describe("util", function () {
27
+ describe("bytesToString", function () {
28
+ it("handles non-array arguments", function () {
31
29
  expect(function () {
32
30
  (0, _util.bytesToString)(null);
33
- }).toThrow(new Error('Invalid argument for bytesToString'));
31
+ }).toThrow(new Error("Invalid argument for bytesToString"));
34
32
  });
35
- it('handles array arguments with a length not exceeding the maximum', function () {
36
- expect((0, _util.bytesToString)(new Uint8Array([]))).toEqual('');
37
- expect((0, _util.bytesToString)(new Uint8Array([102, 111, 111]))).toEqual('foo');
33
+ it("handles array arguments with a length not exceeding the maximum", function () {
34
+ expect((0, _util.bytesToString)(new Uint8Array([]))).toEqual("");
35
+ expect((0, _util.bytesToString)(new Uint8Array([102, 111, 111]))).toEqual("foo");
38
36
  });
39
- it('handles array arguments with a length exceeding the maximum', function () {
40
- var length = 10000;
41
- var bytes = new Uint8Array(length);
37
+ it("handles array arguments with a length exceeding the maximum", function () {
38
+ const length = 10000;
39
+ const bytes = new Uint8Array(length);
42
40
 
43
- for (var i = 0; i < length; i++) {
44
- bytes[i] = 'a'.charCodeAt(0);
41
+ for (let i = 0; i < length; i++) {
42
+ bytes[i] = "a".charCodeAt(0);
45
43
  }
46
44
 
47
- var string = Array(length + 1).join('a');
45
+ const string = Array(length + 1).join("a");
48
46
  expect((0, _util.bytesToString)(bytes)).toEqual(string);
49
47
  });
50
48
  });
51
- describe('isArrayBuffer', function () {
52
- it('handles array buffer values', function () {
49
+ describe("isArrayBuffer", function () {
50
+ it("handles array buffer values", function () {
53
51
  expect((0, _util.isArrayBuffer)(new ArrayBuffer(0))).toEqual(true);
54
52
  expect((0, _util.isArrayBuffer)(new Uint8Array(0))).toEqual(true);
55
53
  });
56
- it('handles non-array buffer values', function () {
57
- expect((0, _util.isArrayBuffer)('true')).toEqual(false);
54
+ it("handles non-array buffer values", function () {
55
+ expect((0, _util.isArrayBuffer)("true")).toEqual(false);
58
56
  expect((0, _util.isArrayBuffer)(1)).toEqual(false);
59
57
  expect((0, _util.isArrayBuffer)(null)).toEqual(false);
60
58
  expect((0, _util.isArrayBuffer)(undefined)).toEqual(false);
61
59
  });
62
60
  });
63
- describe('isBool', function () {
64
- it('handles boolean values', function () {
61
+ describe("isBool", function () {
62
+ it("handles boolean values", function () {
65
63
  expect((0, _util.isBool)(true)).toEqual(true);
66
64
  expect((0, _util.isBool)(false)).toEqual(true);
67
65
  });
68
- it('handles non-boolean values', function () {
69
- expect((0, _util.isBool)('true')).toEqual(false);
70
- expect((0, _util.isBool)('false')).toEqual(false);
66
+ it("handles non-boolean values", function () {
67
+ expect((0, _util.isBool)("true")).toEqual(false);
68
+ expect((0, _util.isBool)("false")).toEqual(false);
71
69
  expect((0, _util.isBool)(1)).toEqual(false);
72
70
  expect((0, _util.isBool)(0)).toEqual(false);
73
71
  expect((0, _util.isBool)(null)).toEqual(false);
74
72
  expect((0, _util.isBool)(undefined)).toEqual(false);
75
73
  });
76
74
  });
77
- describe('isEmptyObj', function () {
78
- it('handles empty objects', function () {
79
- expect((0, _util.isEmptyObj)({})).toEqual(true);
80
- });
81
- it('handles non-empty objects', function () {
82
- expect((0, _util.isEmptyObj)({
83
- foo: 'bar'
84
- })).toEqual(false);
85
- });
86
- });
87
- describe('isNum', function () {
88
- it('handles numeric values', function () {
75
+ describe("isNum", function () {
76
+ it("handles numeric values", function () {
89
77
  expect((0, _util.isNum)(1)).toEqual(true);
90
78
  expect((0, _util.isNum)(0)).toEqual(true);
91
79
  expect((0, _util.isNum)(-1)).toEqual(true);
92
80
  expect((0, _util.isNum)(1000000000000000000)).toEqual(true);
93
81
  expect((0, _util.isNum)(12.34)).toEqual(true);
94
82
  });
95
- it('handles non-numeric values', function () {
96
- expect((0, _util.isNum)('true')).toEqual(false);
83
+ it("handles non-numeric values", function () {
84
+ expect((0, _util.isNum)("true")).toEqual(false);
97
85
  expect((0, _util.isNum)(true)).toEqual(false);
98
86
  expect((0, _util.isNum)(null)).toEqual(false);
99
87
  expect((0, _util.isNum)(undefined)).toEqual(false);
100
88
  });
101
89
  });
102
- describe('isSpace', function () {
103
- it('handles space characters', function () {
104
- expect((0, _util.isSpace)(0x20)).toEqual(true);
105
- expect((0, _util.isSpace)(0x09)).toEqual(true);
106
- expect((0, _util.isSpace)(0x0D)).toEqual(true);
107
- expect((0, _util.isSpace)(0x0A)).toEqual(true);
108
- });
109
- it('handles non-space characters', function () {
110
- expect((0, _util.isSpace)(0x0B)).toEqual(false);
111
- expect((0, _util.isSpace)(null)).toEqual(false);
112
- expect((0, _util.isSpace)(undefined)).toEqual(false);
90
+ describe("isString", function () {
91
+ it("handles string values", function () {
92
+ expect((0, _util.isString)("foo")).toEqual(true);
93
+ expect((0, _util.isString)("")).toEqual(true);
113
94
  });
114
- });
115
- describe('isString', function () {
116
- it('handles string values', function () {
117
- expect((0, _util.isString)('foo')).toEqual(true);
118
- expect((0, _util.isString)('')).toEqual(true);
119
- });
120
- it('handles non-string values', function () {
95
+ it("handles non-string values", function () {
121
96
  expect((0, _util.isString)(true)).toEqual(false);
122
97
  expect((0, _util.isString)(1)).toEqual(false);
123
98
  expect((0, _util.isString)(null)).toEqual(false);
124
99
  expect((0, _util.isString)(undefined)).toEqual(false);
125
100
  });
126
101
  });
127
- describe('log2', function () {
128
- it('handles values smaller than/equal to zero', function () {
129
- expect((0, _util.log2)(0)).toEqual(0);
130
- expect((0, _util.log2)(-1)).toEqual(0);
131
- });
132
- it('handles values larger than zero', function () {
133
- expect((0, _util.log2)(1)).toEqual(0);
134
- expect((0, _util.log2)(2)).toEqual(1);
135
- expect((0, _util.log2)(3)).toEqual(2);
136
- expect((0, _util.log2)(3.14)).toEqual(2);
137
- });
138
- });
139
- describe('string32', function () {
140
- it('converts unsigned 32-bit integers to strings', function () {
141
- expect((0, _util.string32)(0x74727565)).toEqual('true');
142
- expect((0, _util.string32)(0x74797031)).toEqual('typ1');
143
- expect((0, _util.string32)(0x4F54544F)).toEqual('OTTO');
102
+ describe("string32", function () {
103
+ it("converts unsigned 32-bit integers to strings", function () {
104
+ expect((0, _util.string32)(0x74727565)).toEqual("true");
105
+ expect((0, _util.string32)(0x74797031)).toEqual("typ1");
106
+ expect((0, _util.string32)(0x4f54544f)).toEqual("OTTO");
144
107
  });
145
108
  });
146
- describe('stringToBytes', function () {
147
- it('handles non-string arguments', function () {
109
+ describe("stringToBytes", function () {
110
+ it("handles non-string arguments", function () {
148
111
  expect(function () {
149
112
  (0, _util.stringToBytes)(null);
150
- }).toThrow(new Error('Invalid argument for stringToBytes'));
113
+ }).toThrow(new Error("Invalid argument for stringToBytes"));
151
114
  });
152
- it('handles string arguments', function () {
153
- expect((0, _util.stringToBytes)('')).toEqual(new Uint8Array([]));
154
- expect((0, _util.stringToBytes)('foo')).toEqual(new Uint8Array([102, 111, 111]));
115
+ it("handles string arguments", function () {
116
+ expect((0, _util.stringToBytes)("")).toEqual(new Uint8Array([]));
117
+ expect((0, _util.stringToBytes)("foo")).toEqual(new Uint8Array([102, 111, 111]));
155
118
  });
156
119
  });
157
- describe('stringToPDFString', function () {
158
- it('handles ISO Latin 1 strings', function () {
159
- var str = '\x8Dstring\x8E';
120
+ describe("stringToPDFString", function () {
121
+ it("handles ISO Latin 1 strings", function () {
122
+ const str = "\x8Dstring\x8E";
160
123
  expect((0, _util.stringToPDFString)(str)).toEqual("\u201Cstring\u201D");
161
124
  });
162
- it('handles UTF-16BE strings', function () {
163
- var str = '\xFE\xFF\x00\x73\x00\x74\x00\x72\x00\x69\x00\x6E\x00\x67';
164
- expect((0, _util.stringToPDFString)(str)).toEqual('string');
125
+ it("handles UTF-16 big-endian strings", function () {
126
+ const str = "\xFE\xFF\x00\x73\x00\x74\x00\x72\x00\x69\x00\x6E\x00\x67";
127
+ expect((0, _util.stringToPDFString)(str)).toEqual("string");
128
+ });
129
+ it("handles UTF-16 little-endian strings", function () {
130
+ const str = "\xFF\xFE\x73\x00\x74\x00\x72\x00\x69\x00\x6E\x00\x67\x00";
131
+ expect((0, _util.stringToPDFString)(str)).toEqual("string");
165
132
  });
166
- it('handles empty strings', function () {
167
- var str1 = '';
168
- expect((0, _util.stringToPDFString)(str1)).toEqual('');
169
- var str2 = '\xFE\xFF';
170
- expect((0, _util.stringToPDFString)(str2)).toEqual('');
133
+ it("handles empty strings", function () {
134
+ const str1 = "";
135
+ expect((0, _util.stringToPDFString)(str1)).toEqual("");
136
+ const str2 = "\xFE\xFF";
137
+ expect((0, _util.stringToPDFString)(str2)).toEqual("");
138
+ const str3 = "\xFF\xFE";
139
+ expect((0, _util.stringToPDFString)(str3)).toEqual("");
171
140
  });
172
141
  });
173
- describe('removeNullCharacters', function () {
174
- it('should not modify string without null characters', function () {
175
- var str = 'string without null chars';
176
- expect((0, _util.removeNullCharacters)(str)).toEqual('string without null chars');
142
+ describe("removeNullCharacters", function () {
143
+ it("should not modify string without null characters", function () {
144
+ const str = "string without null chars";
145
+ expect((0, _util.removeNullCharacters)(str)).toEqual("string without null chars");
177
146
  });
178
- it('should modify string with null characters', function () {
179
- var str = 'string\x00With\x00Null\x00Chars';
180
- expect((0, _util.removeNullCharacters)(str)).toEqual('stringWithNullChars');
147
+ it("should modify string with null characters", function () {
148
+ const str = "string\x00With\x00Null\x00Chars";
149
+ expect((0, _util.removeNullCharacters)(str)).toEqual("stringWithNullChars");
181
150
  });
182
151
  });
183
- describe('ReadableStream', function () {
184
- it('should return an Object', function () {
185
- var readable = new _util.ReadableStream();
186
- expect(_typeof(readable)).toEqual('object');
152
+ describe("ReadableStream", function () {
153
+ it("should return an Object", function () {
154
+ const readable = new ReadableStream();
155
+ expect(typeof readable).toEqual("object");
187
156
  });
188
- it('should have property getReader', function () {
189
- var readable = new _util.ReadableStream();
190
- expect(_typeof(readable.getReader)).toEqual('function');
157
+ it("should have property getReader", function () {
158
+ const readable = new ReadableStream();
159
+ expect(typeof readable.getReader).toEqual("function");
191
160
  });
192
161
  });
193
- describe('URL', function () {
194
- it('should return an Object', function () {
195
- var url = new _util.URL('https://example.com');
196
- expect(_typeof(url)).toEqual('object');
162
+ describe("URL", function () {
163
+ it("should return an Object", function () {
164
+ const url = new URL("https://example.com");
165
+ expect(typeof url).toEqual("object");
197
166
  });
198
- it('should have property `href`', function () {
199
- var url = new _util.URL('https://example.com');
200
- expect(_typeof(url.href)).toEqual('string');
167
+ it("should have property `href`", function () {
168
+ const url = new URL("https://example.com");
169
+ expect(typeof url.href).toEqual("string");
201
170
  });
202
171
  });
203
- describe('isSameOrigin', function () {
204
- it('handles invalid base URLs', function () {
205
- expect((0, _util.isSameOrigin)('/foo', '/bar')).toEqual(false);
206
- expect((0, _util.isSameOrigin)('blob:foo', '/bar')).toEqual(false);
172
+ describe("isSameOrigin", function () {
173
+ it("handles invalid base URLs", function () {
174
+ expect((0, _util.isSameOrigin)("/foo", "/bar")).toEqual(false);
175
+ expect((0, _util.isSameOrigin)("blob:foo", "/bar")).toEqual(false);
207
176
  });
208
- it('correctly checks if the origin of both URLs matches', function () {
209
- expect((0, _util.isSameOrigin)('https://www.mozilla.org/foo', 'https://www.mozilla.org/bar')).toEqual(true);
210
- expect((0, _util.isSameOrigin)('https://www.mozilla.org/foo', 'https://www.example.com/bar')).toEqual(false);
177
+ it("correctly checks if the origin of both URLs matches", function () {
178
+ expect((0, _util.isSameOrigin)("https://www.mozilla.org/foo", "https://www.mozilla.org/bar")).toEqual(true);
179
+ expect((0, _util.isSameOrigin)("https://www.mozilla.org/foo", "https://www.example.com/bar")).toEqual(false);
211
180
  });
212
181
  });
213
- describe('createValidAbsoluteUrl', function () {
214
- it('handles invalid URLs', function () {
182
+ describe("createValidAbsoluteUrl", function () {
183
+ it("handles invalid URLs", function () {
215
184
  expect((0, _util.createValidAbsoluteUrl)(undefined, undefined)).toEqual(null);
216
185
  expect((0, _util.createValidAbsoluteUrl)(null, null)).toEqual(null);
217
- expect((0, _util.createValidAbsoluteUrl)('/foo', '/bar')).toEqual(null);
218
- });
219
- it('handles URLs that do not use a whitelisted protocol', function () {
220
- expect((0, _util.createValidAbsoluteUrl)('magnet:?foo', null)).toEqual(null);
221
- });
222
- it('correctly creates a valid URL for whitelisted protocols', function () {
223
- expect((0, _util.createValidAbsoluteUrl)('http://www.mozilla.org/foo', null)).toEqual(new _util.URL('http://www.mozilla.org/foo'));
224
- expect((0, _util.createValidAbsoluteUrl)('/foo', 'http://www.mozilla.org')).toEqual(new _util.URL('http://www.mozilla.org/foo'));
225
- expect((0, _util.createValidAbsoluteUrl)('https://www.mozilla.org/foo', null)).toEqual(new _util.URL('https://www.mozilla.org/foo'));
226
- expect((0, _util.createValidAbsoluteUrl)('/foo', 'https://www.mozilla.org')).toEqual(new _util.URL('https://www.mozilla.org/foo'));
227
- expect((0, _util.createValidAbsoluteUrl)('ftp://www.mozilla.org/foo', null)).toEqual(new _util.URL('ftp://www.mozilla.org/foo'));
228
- expect((0, _util.createValidAbsoluteUrl)('/foo', 'ftp://www.mozilla.org')).toEqual(new _util.URL('ftp://www.mozilla.org/foo'));
229
- expect((0, _util.createValidAbsoluteUrl)('mailto:foo@bar.baz', null)).toEqual(new _util.URL('mailto:foo@bar.baz'));
230
- expect((0, _util.createValidAbsoluteUrl)('/foo', 'mailto:foo@bar.baz')).toEqual(null);
231
- expect((0, _util.createValidAbsoluteUrl)('tel:+0123456789', null)).toEqual(new _util.URL('tel:+0123456789'));
232
- expect((0, _util.createValidAbsoluteUrl)('/foo', 'tel:0123456789')).toEqual(null);
233
- });
234
- });
235
- describe('createPromiseCapability', function () {
236
- it('should resolve with correct data', function (done) {
237
- var promiseCapability = (0, _util.createPromiseCapability)();
186
+ expect((0, _util.createValidAbsoluteUrl)("/foo", "/bar")).toEqual(null);
187
+ });
188
+ it("handles URLs that do not use an allowed protocol", function () {
189
+ expect((0, _util.createValidAbsoluteUrl)("magnet:?foo", null)).toEqual(null);
190
+ });
191
+ it("correctly creates a valid URL for allowed protocols", function () {
192
+ expect((0, _util.createValidAbsoluteUrl)("http://www.mozilla.org/foo", null)).toEqual(new URL("http://www.mozilla.org/foo"));
193
+ expect((0, _util.createValidAbsoluteUrl)("/foo", "http://www.mozilla.org")).toEqual(new URL("http://www.mozilla.org/foo"));
194
+ expect((0, _util.createValidAbsoluteUrl)("https://www.mozilla.org/foo", null)).toEqual(new URL("https://www.mozilla.org/foo"));
195
+ expect((0, _util.createValidAbsoluteUrl)("/foo", "https://www.mozilla.org")).toEqual(new URL("https://www.mozilla.org/foo"));
196
+ expect((0, _util.createValidAbsoluteUrl)("ftp://www.mozilla.org/foo", null)).toEqual(new URL("ftp://www.mozilla.org/foo"));
197
+ expect((0, _util.createValidAbsoluteUrl)("/foo", "ftp://www.mozilla.org")).toEqual(new URL("ftp://www.mozilla.org/foo"));
198
+ expect((0, _util.createValidAbsoluteUrl)("mailto:foo@bar.baz", null)).toEqual(new URL("mailto:foo@bar.baz"));
199
+ expect((0, _util.createValidAbsoluteUrl)("/foo", "mailto:foo@bar.baz")).toEqual(null);
200
+ expect((0, _util.createValidAbsoluteUrl)("tel:+0123456789", null)).toEqual(new URL("tel:+0123456789"));
201
+ expect((0, _util.createValidAbsoluteUrl)("/foo", "tel:0123456789")).toEqual(null);
202
+ });
203
+ });
204
+ describe("createPromiseCapability", function () {
205
+ it("should resolve with correct data", function (done) {
206
+ const promiseCapability = (0, _util.createPromiseCapability)();
238
207
  expect(promiseCapability.settled).toEqual(false);
239
208
  promiseCapability.resolve({
240
- test: 'abc'
209
+ test: "abc"
241
210
  });
242
211
  promiseCapability.promise.then(function (data) {
243
212
  expect(promiseCapability.settled).toEqual(true);
244
213
  expect(data).toEqual({
245
- test: 'abc'
214
+ test: "abc"
246
215
  });
247
216
  done();
248
217
  }, done.fail);
249
218
  });
250
- it('should reject with correct reason', function (done) {
251
- var promiseCapability = (0, _util.createPromiseCapability)();
219
+ it("should reject with correct reason", function (done) {
220
+ const promiseCapability = (0, _util.createPromiseCapability)();
252
221
  expect(promiseCapability.settled).toEqual(false);
253
- promiseCapability.reject(new Error('reason'));
222
+ promiseCapability.reject(new Error("reason"));
254
223
  promiseCapability.promise.then(done.fail, function (reason) {
255
224
  expect(promiseCapability.settled).toEqual(true);
256
225
  expect(reason instanceof Error).toEqual(true);
257
- expect(reason.message).toEqual('reason');
226
+ expect(reason.message).toEqual("reason");
258
227
  done();
259
228
  });
260
229
  });
261
230
  });
231
+ describe("escapeString", function () {
232
+ it("should escape (, ) and \\", function () {
233
+ expect((0, _util.escapeString)("((a\\a))(b(b\\b)b)")).toEqual("\\(\\(a\\\\a\\)\\)\\(b\\(b\\\\b\\)b\\)");
234
+ });
235
+ });
236
+ describe("getModificationDate", function () {
237
+ it("should get a correctly formatted date", function () {
238
+ const date = new Date(Date.UTC(3141, 5, 9, 2, 6, 53));
239
+ expect((0, _util.getModificationDate)(date)).toEqual("31410610020653");
240
+ });
241
+ });
262
242
  });
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @licstart The following is the entire license notice for the
3
+ * Javascript code in this page
4
+ *
5
+ * Copyright 2020 Mozilla Foundation
6
+ *
7
+ * Licensed under the Apache License, Version 2.0 (the "License");
8
+ * you may not use this file except in compliance with the License.
9
+ * You may obtain a copy of the License at
10
+ *
11
+ * http://www.apache.org/licenses/LICENSE-2.0
12
+ *
13
+ * Unless required by applicable law or agreed to in writing, software
14
+ * distributed under the License is distributed on an "AS IS" BASIS,
15
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ * See the License for the specific language governing permissions and
17
+ * limitations under the License.
18
+ *
19
+ * @licend The above is the entire license notice for the
20
+ * Javascript code in this page
21
+ */
22
+ "use strict";
23
+
24
+ var _primitives = require("../../core/primitives.js");
25
+
26
+ var _writer = require("../../core/writer.js");
27
+
28
+ var _util = require("../../shared/util.js");
29
+
30
+ var _stream = require("../../core/stream.js");
31
+
32
+ describe("Writer", function () {
33
+ describe("Incremental update", function () {
34
+ it("should update a file with new objects", function (done) {
35
+ const originalData = new Uint8Array();
36
+ const newRefs = [{
37
+ ref: _primitives.Ref.get(123, 0x2d),
38
+ data: "abc\n"
39
+ }, {
40
+ ref: _primitives.Ref.get(456, 0x4e),
41
+ data: "defg\n"
42
+ }];
43
+ const xrefInfo = {
44
+ newRef: _primitives.Ref.get(789, 0),
45
+ startXRef: 314,
46
+ fileIds: ["id", ""],
47
+ rootRef: null,
48
+ infoRef: null,
49
+ encrypt: null,
50
+ filename: "foo.pdf",
51
+ info: {}
52
+ };
53
+ let data = (0, _writer.incrementalUpdate)(originalData, xrefInfo, newRefs);
54
+ data = (0, _util.bytesToString)(data);
55
+ const expected = "\nabc\n" + "defg\n" + "789 0 obj\n" + "<< /Size 790 /Prev 314 /Type /XRef /Index [0 1 123 1 456 1 789 1] " + "/ID [(id) (\x01#Eg\x89\xab\xcd\xef\xfe\xdc\xba\x98vT2\x10)] " + "/W [1 1 2] /Length 16>> stream\n" + "\x00\x01\xff\xff" + "\x01\x01\x00\x2d" + "\x01\x05\x00\x4e" + "\x01\x0a\x00\x00\n" + "endstream\n" + "endobj\n" + "startxref\n" + "10\n" + "%%EOF\n";
56
+ expect(data).toEqual(expected);
57
+ done();
58
+ });
59
+ });
60
+ describe("writeDict", function () {
61
+ it("should write a Dict", function (done) {
62
+ const dict = new _primitives.Dict(null);
63
+ dict.set("A", _primitives.Name.get("B"));
64
+ dict.set("B", _primitives.Ref.get(123, 456));
65
+ dict.set("C", 789);
66
+ dict.set("D", "hello world");
67
+ dict.set("E", "(hello\\world)");
68
+ dict.set("F", [1.23001, 4.50001, 6]);
69
+ const gdict = new _primitives.Dict(null);
70
+ gdict.set("H", 123.00001);
71
+ const string = "a stream";
72
+ const stream = new _stream.StringStream(string);
73
+ stream.dict = new _primitives.Dict(null);
74
+ stream.dict.set("Length", string.length);
75
+ gdict.set("I", stream);
76
+ dict.set("G", gdict);
77
+ const buffer = [];
78
+ (0, _writer.writeDict)(dict, buffer, null);
79
+ const expected = "<< /A /B /B 123 456 R /C 789 /D (hello world) " + "/E (\\(hello\\\\world\\)) /F [1.23 4.5 6] " + "/G << /H 123 /I << /Length 8>> stream\n" + "a stream\n" + "endstream\n>>>>";
80
+ expect(buffer.join("")).toEqual(expected);
81
+ done();
82
+ });
83
+ });
84
+ });