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,18 +21,16 @@
21
21
  */
22
22
  "use strict";
23
23
 
24
- var _test_utils = require("./test_utils");
24
+ var _test_utils = require("./test_utils.js");
25
25
 
26
- var _dom_utils = require("../../display/dom_utils");
26
+ var _display_utils = require("../../display/display_utils.js");
27
27
 
28
- var _api = require("../../display/api");
28
+ var _api = require("../../display/api.js");
29
29
 
30
- var _is_node = _interopRequireDefault(require("../../shared/is_node"));
31
-
32
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
30
+ var _is_node = require("../../shared/is_node.js");
33
31
 
34
32
  function getTopLeftPixel(canvasContext) {
35
- var imgData = canvasContext.getImageData(0, 0, 1, 1);
33
+ const imgData = canvasContext.getImageData(0, 0, 1, 1);
36
34
  return {
37
35
  r: imgData.data[0],
38
36
  g: imgData.data[1],
@@ -41,16 +39,16 @@ function getTopLeftPixel(canvasContext) {
41
39
  };
42
40
  }
43
41
 
44
- describe('custom canvas rendering', function () {
45
- var transparentGetDocumentParams = (0, _test_utils.buildGetDocumentParams)('transparent.pdf');
46
- var CanvasFactory;
47
- var loadingTask;
48
- var page;
42
+ describe("custom canvas rendering", function () {
43
+ const transparentGetDocumentParams = (0, _test_utils.buildGetDocumentParams)("transparent.pdf");
44
+ let CanvasFactory;
45
+ let loadingTask;
46
+ let page;
49
47
  beforeAll(function (done) {
50
- if ((0, _is_node.default)()) {
48
+ if (_is_node.isNodeJS) {
51
49
  CanvasFactory = new _test_utils.NodeCanvasFactory();
52
50
  } else {
53
- CanvasFactory = new _dom_utils.DOMCanvasFactory();
51
+ CanvasFactory = new _display_utils.DOMCanvasFactory();
54
52
  }
55
53
 
56
54
  loadingTask = (0, _api.getDocument)(transparentGetDocumentParams);
@@ -66,14 +64,14 @@ describe('custom canvas rendering', function () {
66
64
  page = null;
67
65
  loadingTask.destroy().then(done);
68
66
  });
69
- it('renders to canvas with a default white background', function (done) {
67
+ it("renders to canvas with a default white background", function (done) {
70
68
  var viewport = page.getViewport({
71
69
  scale: 1
72
70
  });
73
71
  var canvasAndCtx = CanvasFactory.create(viewport.width, viewport.height);
74
- var renderTask = page.render({
72
+ const renderTask = page.render({
75
73
  canvasContext: canvasAndCtx.context,
76
- viewport: viewport
74
+ viewport
77
75
  });
78
76
  renderTask.promise.then(function () {
79
77
  expect(getTopLeftPixel(canvasAndCtx.context)).toEqual({
@@ -86,15 +84,15 @@ describe('custom canvas rendering', function () {
86
84
  done();
87
85
  }).catch(done.fail);
88
86
  });
89
- it('renders to canvas with a custom background', function (done) {
87
+ it("renders to canvas with a custom background", function (done) {
90
88
  var viewport = page.getViewport({
91
89
  scale: 1
92
90
  });
93
91
  var canvasAndCtx = CanvasFactory.create(viewport.width, viewport.height);
94
- var renderTask = page.render({
92
+ const renderTask = page.render({
95
93
  canvasContext: canvasAndCtx.context,
96
- viewport: viewport,
97
- background: 'rgba(255,0,0,1.0)'
94
+ viewport,
95
+ background: "rgba(255,0,0,1.0)"
98
96
  });
99
97
  renderTask.promise.then(function () {
100
98
  expect(getTopLeftPixel(canvasAndCtx.context)).toEqual({
@@ -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,42 +21,38 @@
21
21
  */
22
22
  "use strict";
23
23
 
24
- var _domstubs = require("../../examples/node/domstubs");
24
+ var _domstubs = require("../../examples/node/domstubs.js");
25
25
 
26
- var _test_utils = require("./test_utils");
26
+ var _test_utils = require("./test_utils.js");
27
27
 
28
- var _api = require("../../display/api");
28
+ var _api = require("../../display/api.js");
29
29
 
30
- var _is_node = _interopRequireDefault(require("../../shared/is_node"));
30
+ var _is_node = require("../../shared/is_node.js");
31
31
 
32
- var _util = require("../../shared/util");
32
+ var _svg = require("../../display/svg.js");
33
33
 
34
- var _svg = require("../../display/svg");
35
-
36
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
-
38
- var XLINK_NS = 'http://www.w3.org/1999/xlink';
34
+ const XLINK_NS = "http://www.w3.org/1999/xlink";
39
35
 
40
36
  function withZlib(isZlibRequired, callback) {
41
37
  if (isZlibRequired) {
42
- if (!(0, _is_node.default)()) {
43
- throw new Error('zlib test can only be run in Node.js');
38
+ if (!_is_node.isNodeJS) {
39
+ throw new Error("zlib test can only be run in Node.js");
44
40
  }
45
41
 
46
42
  return callback();
47
43
  }
48
44
 
49
- if (!(0, _is_node.default)()) {
45
+ if (!_is_node.isNodeJS) {
50
46
  return callback();
51
47
  }
52
48
 
53
- var zlib = require('zlib');
49
+ var zlib = require("zlib");
54
50
 
55
51
  var deflateSync = zlib.deflateSync;
56
52
  zlib.deflateSync = disabledDeflateSync;
57
53
 
58
54
  function disabledDeflateSync() {
59
- throw new Error('zlib.deflateSync is explicitly disabled for testing.');
55
+ throw new Error("zlib.deflateSync is explicitly disabled for testing.");
60
56
  }
61
57
 
62
58
  function restoreDeflateSync() {
@@ -70,13 +66,11 @@ function withZlib(isZlibRequired, callback) {
70
66
  return promise;
71
67
  }
72
68
 
73
- describe('SVGGraphics', function () {
69
+ describe("SVGGraphics", function () {
74
70
  var loadingTask;
75
71
  var page;
76
72
  beforeAll(function (done) {
77
- loadingTask = (0, _api.getDocument)((0, _test_utils.buildGetDocumentParams)('xobject-image.pdf', {
78
- nativeImageDecoderSupport: _util.NativeImageDecoding.DISPLAY
79
- }));
73
+ loadingTask = (0, _api.getDocument)((0, _test_utils.buildGetDocumentParams)("xobject-image.pdf"));
80
74
  loadingTask.promise.then(function (doc) {
81
75
  doc.getPage(1).then(function (firstPage) {
82
76
  page = firstPage;
@@ -87,7 +81,7 @@ describe('SVGGraphics', function () {
87
81
  afterAll(function (done) {
88
82
  loadingTask.destroy().then(done);
89
83
  });
90
- describe('paintImageXObject', function () {
84
+ describe("paintImageXObject", function () {
91
85
  function getSVGImage() {
92
86
  var svgGfx;
93
87
  return page.getOperatorList().then(function (opList) {
@@ -97,13 +91,14 @@ describe('SVGGraphics', function () {
97
91
  }).then(function () {
98
92
  var svgImg;
99
93
  var elementContainer = {
100
- appendChild: function appendChild(element) {
94
+ appendChild(element) {
101
95
  svgImg = element;
102
96
  }
97
+
103
98
  };
104
- var xobjectObjId = 'img_p0_1';
99
+ var xobjectObjId = "img_p0_1";
105
100
 
106
- if ((0, _is_node.default)()) {
101
+ if (_is_node.isNodeJS) {
107
102
  (0, _domstubs.setStubs)(global);
108
103
  }
109
104
 
@@ -111,7 +106,7 @@ describe('SVGGraphics', function () {
111
106
  var imgData = svgGfx.objs.get(xobjectObjId);
112
107
  svgGfx.paintInlineImageXObject(imgData, elementContainer);
113
108
  } finally {
114
- if ((0, _is_node.default)()) {
109
+ if (_is_node.isNodeJS) {
115
110
  (0, _domstubs.unsetStubs)(global);
116
111
  }
117
112
  }
@@ -122,37 +117,37 @@ describe('SVGGraphics', function () {
122
117
 
123
118
  it('should fail require("zlib") unless in Node.js', function () {
124
119
  function testFunc() {
125
- require('zlib');
120
+ require("zlib");
126
121
  }
127
122
 
128
123
  expect(testFunc.toString()).toMatch(/\srequire\(["']zlib["']\)/);
129
124
 
130
- if ((0, _is_node.default)()) {
125
+ if (_is_node.isNodeJS) {
131
126
  expect(testFunc).not.toThrow();
132
127
  } else {
133
128
  expect(testFunc).toThrow();
134
129
  }
135
130
  });
136
- it('should produce a reasonably small svg:image', function (done) {
137
- if (!(0, _is_node.default)()) {
138
- pending('zlib.deflateSync is not supported in non-Node environments.');
131
+ it("should produce a reasonably small svg:image", function (done) {
132
+ if (!_is_node.isNodeJS) {
133
+ pending("zlib.deflateSync is not supported in non-Node environments.");
139
134
  }
140
135
 
141
136
  withZlib(true, getSVGImage).then(function (svgImg) {
142
- expect(svgImg.nodeName).toBe('svg:image');
143
- expect(svgImg.getAttributeNS(null, 'width')).toBe('200px');
144
- expect(svgImg.getAttributeNS(null, 'height')).toBe('100px');
145
- var imgUrl = svgImg.getAttributeNS(XLINK_NS, 'href');
137
+ expect(svgImg.nodeName).toBe("svg:image");
138
+ expect(svgImg.getAttributeNS(null, "width")).toBe("200px");
139
+ expect(svgImg.getAttributeNS(null, "height")).toBe("100px");
140
+ var imgUrl = svgImg.getAttributeNS(XLINK_NS, "href");
146
141
  expect(imgUrl).toMatch(/^data:image\/png;base64,/);
147
142
  expect(imgUrl.length).toBeLessThan(367);
148
143
  }).then(done, done.fail);
149
144
  });
150
- it('should be able to produce a svg:image without zlib', function (done) {
145
+ it("should be able to produce a svg:image without zlib", function (done) {
151
146
  withZlib(false, getSVGImage).then(function (svgImg) {
152
- expect(svgImg.nodeName).toBe('svg:image');
153
- expect(svgImg.getAttributeNS(null, 'width')).toBe('200px');
154
- expect(svgImg.getAttributeNS(null, 'height')).toBe('100px');
155
- var imgUrl = svgImg.getAttributeNS(XLINK_NS, 'href');
147
+ expect(svgImg.nodeName).toBe("svg:image");
148
+ expect(svgImg.getAttributeNS(null, "width")).toBe("200px");
149
+ expect(svgImg.getAttributeNS(null, "height")).toBe("100px");
150
+ var imgUrl = svgImg.getAttributeNS(XLINK_NS, "href");
156
151
  expect(imgUrl).toMatch(/^data:image\/png;base64,/);
157
152
  expect(imgUrl.length).toBe(80246);
158
153
  }).then(done, done.fail);
@@ -0,0 +1,263 @@
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 _display_utils = require("../../display/display_utils.js");
25
+
26
+ var _is_node = require("../../shared/is_node.js");
27
+
28
+ describe("display_utils", function () {
29
+ describe("DOMCanvasFactory", function () {
30
+ let canvasFactory;
31
+ beforeAll(function (done) {
32
+ canvasFactory = new _display_utils.DOMCanvasFactory();
33
+ done();
34
+ });
35
+ afterAll(function () {
36
+ canvasFactory = null;
37
+ });
38
+ it("`create` should throw an error if the dimensions are invalid", function () {
39
+ expect(function () {
40
+ return canvasFactory.create(-1, 1);
41
+ }).toThrow(new Error("Invalid canvas size"));
42
+ expect(function () {
43
+ return canvasFactory.create(1, -1);
44
+ }).toThrow(new Error("Invalid canvas size"));
45
+ });
46
+ it("`create` should return a canvas if the dimensions are valid", function () {
47
+ if (_is_node.isNodeJS) {
48
+ pending("Document is not supported in Node.js.");
49
+ }
50
+
51
+ const {
52
+ canvas,
53
+ context
54
+ } = canvasFactory.create(20, 40);
55
+ expect(canvas instanceof HTMLCanvasElement).toBe(true);
56
+ expect(context instanceof CanvasRenderingContext2D).toBe(true);
57
+ expect(canvas.width).toBe(20);
58
+ expect(canvas.height).toBe(40);
59
+ });
60
+ it("`reset` should throw an error if no canvas is provided", function () {
61
+ const canvasAndContext = {
62
+ canvas: null,
63
+ context: null
64
+ };
65
+ expect(function () {
66
+ return canvasFactory.reset(canvasAndContext, 20, 40);
67
+ }).toThrow(new Error("Canvas is not specified"));
68
+ });
69
+ it("`reset` should throw an error if the dimensions are invalid", function () {
70
+ const canvasAndContext = {
71
+ canvas: "foo",
72
+ context: "bar"
73
+ };
74
+ expect(function () {
75
+ return canvasFactory.reset(canvasAndContext, -1, 1);
76
+ }).toThrow(new Error("Invalid canvas size"));
77
+ expect(function () {
78
+ return canvasFactory.reset(canvasAndContext, 1, -1);
79
+ }).toThrow(new Error("Invalid canvas size"));
80
+ });
81
+ it("`reset` should alter the canvas/context if the dimensions are valid", function () {
82
+ if (_is_node.isNodeJS) {
83
+ pending("Document is not supported in Node.js.");
84
+ }
85
+
86
+ const canvasAndContext = canvasFactory.create(20, 40);
87
+ canvasFactory.reset(canvasAndContext, 60, 80);
88
+ const {
89
+ canvas,
90
+ context
91
+ } = canvasAndContext;
92
+ expect(canvas instanceof HTMLCanvasElement).toBe(true);
93
+ expect(context instanceof CanvasRenderingContext2D).toBe(true);
94
+ expect(canvas.width).toBe(60);
95
+ expect(canvas.height).toBe(80);
96
+ });
97
+ it("`destroy` should throw an error if no canvas is provided", function () {
98
+ expect(function () {
99
+ return canvasFactory.destroy({});
100
+ }).toThrow(new Error("Canvas is not specified"));
101
+ });
102
+ it("`destroy` should clear the canvas/context", function () {
103
+ if (_is_node.isNodeJS) {
104
+ pending("Document is not supported in Node.js.");
105
+ }
106
+
107
+ const canvasAndContext = canvasFactory.create(20, 40);
108
+ canvasFactory.destroy(canvasAndContext);
109
+ const {
110
+ canvas,
111
+ context
112
+ } = canvasAndContext;
113
+ expect(canvas).toBe(null);
114
+ expect(context).toBe(null);
115
+ });
116
+ });
117
+ describe("DOMSVGFactory", function () {
118
+ let svgFactory;
119
+ beforeAll(function (done) {
120
+ svgFactory = new _display_utils.DOMSVGFactory();
121
+ done();
122
+ });
123
+ afterAll(function () {
124
+ svgFactory = null;
125
+ });
126
+ it("`create` should throw an error if the dimensions are invalid", function () {
127
+ expect(function () {
128
+ return svgFactory.create(-1, 0);
129
+ }).toThrow(new Error("Invalid SVG dimensions"));
130
+ expect(function () {
131
+ return svgFactory.create(0, -1);
132
+ }).toThrow(new Error("Invalid SVG dimensions"));
133
+ });
134
+ it("`create` should return an SVG element if the dimensions are valid", function () {
135
+ if (_is_node.isNodeJS) {
136
+ pending("Document is not supported in Node.js.");
137
+ }
138
+
139
+ const svg = svgFactory.create(20, 40);
140
+ expect(svg instanceof SVGSVGElement).toBe(true);
141
+ expect(svg.getAttribute("version")).toBe("1.1");
142
+ expect(svg.getAttribute("width")).toBe("20px");
143
+ expect(svg.getAttribute("height")).toBe("40px");
144
+ expect(svg.getAttribute("preserveAspectRatio")).toBe("none");
145
+ expect(svg.getAttribute("viewBox")).toBe("0 0 20 40");
146
+ });
147
+ it("`createElement` should throw an error if the type is not a string", function () {
148
+ expect(function () {
149
+ return svgFactory.createElement(true);
150
+ }).toThrow(new Error("Invalid SVG element type"));
151
+ });
152
+ it("`createElement` should return an SVG element if the type is valid", function () {
153
+ if (_is_node.isNodeJS) {
154
+ pending("Document is not supported in Node.js.");
155
+ }
156
+
157
+ const svg = svgFactory.createElement("svg:rect");
158
+ expect(svg instanceof SVGRectElement).toBe(true);
159
+ });
160
+ });
161
+ describe("getFilenameFromUrl", function () {
162
+ it("should get the filename from an absolute URL", function () {
163
+ const url = "https://server.org/filename.pdf";
164
+ expect((0, _display_utils.getFilenameFromUrl)(url)).toEqual("filename.pdf");
165
+ });
166
+ it("should get the filename from a relative URL", function () {
167
+ const url = "../../filename.pdf";
168
+ expect((0, _display_utils.getFilenameFromUrl)(url)).toEqual("filename.pdf");
169
+ });
170
+ it("should get the filename from a URL with an anchor", function () {
171
+ const url = "https://server.org/filename.pdf#foo";
172
+ expect((0, _display_utils.getFilenameFromUrl)(url)).toEqual("filename.pdf");
173
+ });
174
+ it("should get the filename from a URL with query parameters", function () {
175
+ const url = "https://server.org/filename.pdf?foo=bar";
176
+ expect((0, _display_utils.getFilenameFromUrl)(url)).toEqual("filename.pdf");
177
+ });
178
+ });
179
+ describe("isValidFetchUrl", function () {
180
+ it("handles invalid Fetch URLs", function () {
181
+ expect((0, _display_utils.isValidFetchUrl)(null)).toEqual(false);
182
+ expect((0, _display_utils.isValidFetchUrl)(100)).toEqual(false);
183
+ expect((0, _display_utils.isValidFetchUrl)("foo")).toEqual(false);
184
+ expect((0, _display_utils.isValidFetchUrl)("/foo", 100)).toEqual(false);
185
+ });
186
+ it("handles relative Fetch URLs", function () {
187
+ expect((0, _display_utils.isValidFetchUrl)("/foo", "file://www.example.com")).toEqual(false);
188
+ expect((0, _display_utils.isValidFetchUrl)("/foo", "http://www.example.com")).toEqual(true);
189
+ });
190
+ it("handles unsupported Fetch protocols", function () {
191
+ expect((0, _display_utils.isValidFetchUrl)("file://www.example.com")).toEqual(false);
192
+ expect((0, _display_utils.isValidFetchUrl)("ftp://www.example.com")).toEqual(false);
193
+ });
194
+ it("handles supported Fetch protocols", function () {
195
+ expect((0, _display_utils.isValidFetchUrl)("http://www.example.com")).toEqual(true);
196
+ expect((0, _display_utils.isValidFetchUrl)("https://www.example.com")).toEqual(true);
197
+ });
198
+ });
199
+ describe("PDFDateString", function () {
200
+ describe("toDateObject", function () {
201
+ it("converts PDF date strings to JavaScript `Date` objects", function () {
202
+ const expectations = {
203
+ undefined: null,
204
+ null: null,
205
+ 42: null,
206
+ "2019": null,
207
+ D2019: null,
208
+ "D:": null,
209
+ "D:201": null,
210
+ "D:2019": new Date(Date.UTC(2019, 0, 1, 0, 0, 0)),
211
+ "D:20190": new Date(Date.UTC(2019, 0, 1, 0, 0, 0)),
212
+ "D:201900": new Date(Date.UTC(2019, 0, 1, 0, 0, 0)),
213
+ "D:201913": new Date(Date.UTC(2019, 0, 1, 0, 0, 0)),
214
+ "D:201902": new Date(Date.UTC(2019, 1, 1, 0, 0, 0)),
215
+ "D:2019020": new Date(Date.UTC(2019, 1, 1, 0, 0, 0)),
216
+ "D:20190200": new Date(Date.UTC(2019, 1, 1, 0, 0, 0)),
217
+ "D:20190232": new Date(Date.UTC(2019, 1, 1, 0, 0, 0)),
218
+ "D:20190203": new Date(Date.UTC(2019, 1, 3, 0, 0, 0)),
219
+ "D:20190431": new Date(Date.UTC(2019, 4, 1, 0, 0, 0)),
220
+ "D:201902030": new Date(Date.UTC(2019, 1, 3, 0, 0, 0)),
221
+ "D:2019020300": new Date(Date.UTC(2019, 1, 3, 0, 0, 0)),
222
+ "D:2019020324": new Date(Date.UTC(2019, 1, 3, 0, 0, 0)),
223
+ "D:2019020304": new Date(Date.UTC(2019, 1, 3, 4, 0, 0)),
224
+ "D:20190203040": new Date(Date.UTC(2019, 1, 3, 4, 0, 0)),
225
+ "D:201902030400": new Date(Date.UTC(2019, 1, 3, 4, 0, 0)),
226
+ "D:201902030460": new Date(Date.UTC(2019, 1, 3, 4, 0, 0)),
227
+ "D:201902030405": new Date(Date.UTC(2019, 1, 3, 4, 5, 0)),
228
+ "D:2019020304050": new Date(Date.UTC(2019, 1, 3, 4, 5, 0)),
229
+ "D:20190203040500": new Date(Date.UTC(2019, 1, 3, 4, 5, 0)),
230
+ "D:20190203040560": new Date(Date.UTC(2019, 1, 3, 4, 5, 0)),
231
+ "D:20190203040506": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
232
+ "D:20190203040506F": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
233
+ "D:20190203040506Z": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
234
+ "D:20190203040506-": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
235
+ "D:20190203040506+": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
236
+ "D:20190203040506+'": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
237
+ "D:20190203040506+0": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
238
+ "D:20190203040506+01": new Date(Date.UTC(2019, 1, 3, 3, 5, 6)),
239
+ "D:20190203040506+00'": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
240
+ "D:20190203040506+24'": new Date(Date.UTC(2019, 1, 3, 4, 5, 6)),
241
+ "D:20190203040506+01'": new Date(Date.UTC(2019, 1, 3, 3, 5, 6)),
242
+ "D:20190203040506+01'0": new Date(Date.UTC(2019, 1, 3, 3, 5, 6)),
243
+ "D:20190203040506+01'00": new Date(Date.UTC(2019, 1, 3, 3, 5, 6)),
244
+ "D:20190203040506+01'60": new Date(Date.UTC(2019, 1, 3, 3, 5, 6)),
245
+ "D:20190203040506+0102": new Date(Date.UTC(2019, 1, 3, 3, 3, 6)),
246
+ "D:20190203040506+01'02": new Date(Date.UTC(2019, 1, 3, 3, 3, 6)),
247
+ "D:20190203040506+01'02'": new Date(Date.UTC(2019, 1, 3, 3, 3, 6)),
248
+ "D:20190203040506+05'07": new Date(Date.UTC(2019, 1, 2, 22, 58, 6))
249
+ };
250
+
251
+ for (const [input, expectation] of Object.entries(expectations)) {
252
+ const result = _display_utils.PDFDateString.toDateObject(input);
253
+
254
+ if (result) {
255
+ expect(result.getTime()).toEqual(expectation.getTime());
256
+ } else {
257
+ expect(result).toEqual(expectation);
258
+ }
259
+ }
260
+ });
261
+ });
262
+ });
263
+ });
@@ -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,27 +21,22 @@
21
21
  */
22
22
  "use strict";
23
23
 
24
- var _document = require("../../core/document");
24
+ var _test_utils = require("./test_utils.js");
25
25
 
26
- describe('document', function () {
27
- describe('Page', function () {
28
- it('should create correct objId using the idFactory', function () {
29
- var page1 = new _document.Page({
30
- pdfManager: {},
31
- pageIndex: 0
32
- });
33
- var page2 = new _document.Page({
34
- pdfManager: {},
35
- pageIndex: 1
36
- });
37
- var idFactory1 = page1.idFactory,
38
- idFactory2 = page2.idFactory;
39
- expect(idFactory1.createObjId()).toEqual('p0_1');
40
- expect(idFactory1.createObjId()).toEqual('p0_2');
41
- expect(idFactory2.createObjId()).toEqual('p1_1');
42
- expect(idFactory2.createObjId()).toEqual('p1_2');
43
- expect(idFactory1.createObjId()).toEqual('p0_3');
44
- expect(idFactory1.createObjId()).toEqual('p0_4');
26
+ describe("document", function () {
27
+ describe("Page", function () {
28
+ it("should create correct objId using the idFactory", function () {
29
+ const idFactory1 = (0, _test_utils.createIdFactory)(0);
30
+ const idFactory2 = (0, _test_utils.createIdFactory)(1);
31
+ expect(idFactory1.createObjId()).toEqual("p0_1");
32
+ expect(idFactory1.createObjId()).toEqual("p0_2");
33
+ expect(idFactory1.getDocId()).toEqual("g_d0");
34
+ expect(idFactory2.createObjId()).toEqual("p1_1");
35
+ expect(idFactory2.createObjId()).toEqual("p1_2");
36
+ expect(idFactory2.getDocId()).toEqual("g_d0");
37
+ expect(idFactory1.createObjId()).toEqual("p0_3");
38
+ expect(idFactory1.createObjId()).toEqual("p0_4");
39
+ expect(idFactory1.getDocId()).toEqual("g_d0");
45
40
  });
46
41
  });
47
42
  });
@@ -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,47 +21,25 @@
21
21
  */
22
22
  "use strict";
23
23
 
24
- var _encodings = require("../../core/encodings");
24
+ var _encodings = require("../../core/encodings.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); }
26
+ describe("encodings", function () {
27
+ describe("getEncoding", function () {
28
+ it("fetches a valid array for known encoding names", function () {
29
+ const knownEncodingNames = ["ExpertEncoding", "MacExpertEncoding", "MacRomanEncoding", "StandardEncoding", "SymbolSetEncoding", "WinAnsiEncoding", "ZapfDingbatsEncoding"];
27
30
 
28
- describe('encodings', function () {
29
- describe('getEncoding', function () {
30
- it('fetches a valid array for known encoding names', function () {
31
- var knownEncodingNames = ['ExpertEncoding', 'MacExpertEncoding', 'MacRomanEncoding', 'StandardEncoding', 'SymbolSetEncoding', 'WinAnsiEncoding', 'ZapfDingbatsEncoding'];
32
-
33
- for (var _i = 0; _i < knownEncodingNames.length; _i++) {
34
- var knownEncodingName = knownEncodingNames[_i];
35
- var encoding = (0, _encodings.getEncoding)(knownEncodingName);
31
+ for (const knownEncodingName of knownEncodingNames) {
32
+ const encoding = (0, _encodings.getEncoding)(knownEncodingName);
36
33
  expect(Array.isArray(encoding)).toEqual(true);
37
34
  expect(encoding.length).toEqual(256);
38
- var _iteratorNormalCompletion = true;
39
- var _didIteratorError = false;
40
- var _iteratorError = undefined;
41
35
 
42
- try {
43
- for (var _iterator = encoding[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
44
- var item = _step.value;
45
- expect(_typeof(item)).toEqual('string');
46
- }
47
- } catch (err) {
48
- _didIteratorError = true;
49
- _iteratorError = err;
50
- } finally {
51
- try {
52
- if (!_iteratorNormalCompletion && _iterator.return != null) {
53
- _iterator.return();
54
- }
55
- } finally {
56
- if (_didIteratorError) {
57
- throw _iteratorError;
58
- }
59
- }
36
+ for (const item of encoding) {
37
+ expect(typeof item).toEqual("string");
60
38
  }
61
39
  }
62
40
  });
63
- it('fetches `null` for unknown encoding names', function () {
64
- expect((0, _encodings.getEncoding)('FooBarEncoding')).toEqual(null);
41
+ it("fetches `null` for unknown encoding names", function () {
42
+ expect((0, _encodings.getEncoding)("FooBarEncoding")).toEqual(null);
65
43
  });
66
44
  });
67
45
  });