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.
@@ -30,330 +30,223 @@ exports.isFetchSupported = isFetchSupported;
30
30
  exports.isValidFetchUrl = isValidFetchUrl;
31
31
  exports.loadScript = loadScript;
32
32
  exports.deprecated = deprecated;
33
- exports.releaseImageResources = releaseImageResources;
34
- exports.PDFDateString = exports.DummyStatTimer = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = void 0;
33
+ exports.PDFDateString = exports.StatTimer = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.BaseCMapReaderFactory = exports.DOMCanvasFactory = exports.BaseCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.RenderingCancelledException = exports.PageViewport = void 0;
35
34
 
36
- var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
35
+ var _util = require("../shared/util.js");
37
36
 
38
- var _util = require("../shared/util");
39
-
40
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
37
+ const DEFAULT_LINK_REL = "noopener noreferrer nofollow";
38
+ exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;
39
+ const SVG_NS = "http://www.w3.org/2000/svg";
41
40
 
42
- function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
41
+ class BaseCanvasFactory {
42
+ constructor() {
43
+ if (this.constructor === BaseCanvasFactory) {
44
+ (0, _util.unreachable)("Cannot initialize BaseCanvasFactory.");
45
+ }
46
+ }
43
47
 
44
- function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
48
+ create(width, height) {
49
+ (0, _util.unreachable)("Abstract method `create` called.");
50
+ }
45
51
 
46
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
52
+ reset(canvasAndContext, width, height) {
53
+ if (!canvasAndContext.canvas) {
54
+ throw new Error("Canvas is not specified");
55
+ }
47
56
 
48
- function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
57
+ if (width <= 0 || height <= 0) {
58
+ throw new Error("Invalid canvas size");
59
+ }
49
60
 
50
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
61
+ canvasAndContext.canvas.width = width;
62
+ canvasAndContext.canvas.height = height;
63
+ }
51
64
 
52
- var DEFAULT_LINK_REL = 'noopener noreferrer nofollow';
53
- exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;
54
- var SVG_NS = 'http://www.w3.org/2000/svg';
65
+ destroy(canvasAndContext) {
66
+ if (!canvasAndContext.canvas) {
67
+ throw new Error("Canvas is not specified");
68
+ }
55
69
 
56
- var DOMCanvasFactory =
57
- /*#__PURE__*/
58
- function () {
59
- function DOMCanvasFactory() {
60
- _classCallCheck(this, DOMCanvasFactory);
70
+ canvasAndContext.canvas.width = 0;
71
+ canvasAndContext.canvas.height = 0;
72
+ canvasAndContext.canvas = null;
73
+ canvasAndContext.context = null;
61
74
  }
62
75
 
63
- _createClass(DOMCanvasFactory, [{
64
- key: "create",
65
- value: function create(width, height) {
66
- if (width <= 0 || height <= 0) {
67
- throw new Error('Invalid canvas size');
68
- }
76
+ }
69
77
 
70
- var canvas = document.createElement('canvas');
71
- var context = canvas.getContext('2d');
72
- canvas.width = width;
73
- canvas.height = height;
74
- return {
75
- canvas: canvas,
76
- context: context
77
- };
78
- }
79
- }, {
80
- key: "reset",
81
- value: function reset(canvasAndContext, width, height) {
82
- if (!canvasAndContext.canvas) {
83
- throw new Error('Canvas is not specified');
84
- }
78
+ exports.BaseCanvasFactory = BaseCanvasFactory;
85
79
 
86
- if (width <= 0 || height <= 0) {
87
- throw new Error('Invalid canvas size');
88
- }
80
+ class DOMCanvasFactory extends BaseCanvasFactory {
81
+ constructor({
82
+ ownerDocument = globalThis.document
83
+ } = {}) {
84
+ super();
85
+ this._document = ownerDocument;
86
+ }
89
87
 
90
- canvasAndContext.canvas.width = width;
91
- canvasAndContext.canvas.height = height;
88
+ create(width, height) {
89
+ if (width <= 0 || height <= 0) {
90
+ throw new Error("Invalid canvas size");
92
91
  }
93
- }, {
94
- key: "destroy",
95
- value: function destroy(canvasAndContext) {
96
- if (!canvasAndContext.canvas) {
97
- throw new Error('Canvas is not specified');
98
- }
99
92
 
100
- canvasAndContext.canvas.width = 0;
101
- canvasAndContext.canvas.height = 0;
102
- canvasAndContext.canvas = null;
103
- canvasAndContext.context = null;
104
- }
105
- }]);
93
+ const canvas = this._document.createElement("canvas");
94
+
95
+ const context = canvas.getContext("2d");
96
+ canvas.width = width;
97
+ canvas.height = height;
98
+ return {
99
+ canvas,
100
+ context
101
+ };
102
+ }
106
103
 
107
- return DOMCanvasFactory;
108
- }();
104
+ }
109
105
 
110
106
  exports.DOMCanvasFactory = DOMCanvasFactory;
111
107
 
112
- var DOMCMapReaderFactory =
113
- /*#__PURE__*/
114
- function () {
115
- function DOMCMapReaderFactory(_ref) {
116
- var _ref$baseUrl = _ref.baseUrl,
117
- baseUrl = _ref$baseUrl === void 0 ? null : _ref$baseUrl,
118
- _ref$isCompressed = _ref.isCompressed,
119
- isCompressed = _ref$isCompressed === void 0 ? false : _ref$isCompressed;
120
-
121
- _classCallCheck(this, DOMCMapReaderFactory);
108
+ class BaseCMapReaderFactory {
109
+ constructor({
110
+ baseUrl = null,
111
+ isCompressed = false
112
+ }) {
113
+ if (this.constructor === BaseCMapReaderFactory) {
114
+ (0, _util.unreachable)("Cannot initialize BaseCMapReaderFactory.");
115
+ }
122
116
 
123
117
  this.baseUrl = baseUrl;
124
118
  this.isCompressed = isCompressed;
125
119
  }
126
120
 
127
- _createClass(DOMCMapReaderFactory, [{
128
- key: "fetch",
129
- value: function (_fetch) {
130
- function fetch(_x) {
131
- return _fetch.apply(this, arguments);
121
+ async fetch({
122
+ name
123
+ }) {
124
+ if (!this.baseUrl) {
125
+ throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.');
126
+ }
127
+
128
+ if (!name) {
129
+ throw new Error("CMap name must be specified.");
130
+ }
131
+
132
+ const url = this.baseUrl + name + (this.isCompressed ? ".bcmap" : "");
133
+ const compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;
134
+ return this._fetchData(url, compressionType).catch(reason => {
135
+ throw new Error(`Unable to load ${this.isCompressed ? "binary " : ""}CMap at: ${url}`);
136
+ });
137
+ }
138
+
139
+ _fetchData(url, compressionType) {
140
+ (0, _util.unreachable)("Abstract method `_fetchData` called.");
141
+ }
142
+
143
+ }
144
+
145
+ exports.BaseCMapReaderFactory = BaseCMapReaderFactory;
146
+
147
+ class DOMCMapReaderFactory extends BaseCMapReaderFactory {
148
+ _fetchData(url, compressionType) {
149
+ if (isFetchSupported() && isValidFetchUrl(url, document.baseURI)) {
150
+ return fetch(url).then(async response => {
151
+ if (!response.ok) {
152
+ throw new Error(response.statusText);
153
+ }
154
+
155
+ let cMapData;
156
+
157
+ if (this.isCompressed) {
158
+ cMapData = new Uint8Array(await response.arrayBuffer());
159
+ } else {
160
+ cMapData = (0, _util.stringToBytes)(await response.text());
161
+ }
162
+
163
+ return {
164
+ cMapData,
165
+ compressionType
166
+ };
167
+ });
168
+ }
169
+
170
+ return new Promise((resolve, reject) => {
171
+ const request = new XMLHttpRequest();
172
+ request.open("GET", url, true);
173
+
174
+ if (this.isCompressed) {
175
+ request.responseType = "arraybuffer";
132
176
  }
133
177
 
134
- fetch.toString = function () {
135
- return _fetch.toString();
136
- };
178
+ request.onreadystatechange = () => {
179
+ if (request.readyState !== XMLHttpRequest.DONE) {
180
+ return;
181
+ }
182
+
183
+ if (request.status === 200 || request.status === 0) {
184
+ let cMapData;
137
185
 
138
- return fetch;
139
- }(
140
- /*#__PURE__*/
141
- function () {
142
- var _ref3 = _asyncToGenerator(
143
- /*#__PURE__*/
144
- _regenerator["default"].mark(function _callee2(_ref2) {
145
- var _this = this;
146
-
147
- var name, url, compressionType;
148
- return _regenerator["default"].wrap(function _callee2$(_context2) {
149
- while (1) {
150
- switch (_context2.prev = _context2.next) {
151
- case 0:
152
- name = _ref2.name;
153
-
154
- if (this.baseUrl) {
155
- _context2.next = 3;
156
- break;
157
- }
158
-
159
- throw new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.');
160
-
161
- case 3:
162
- if (name) {
163
- _context2.next = 5;
164
- break;
165
- }
166
-
167
- throw new Error('CMap name must be specified.');
168
-
169
- case 5:
170
- url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');
171
- compressionType = this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE;
172
-
173
- if (!(isFetchSupported() && isValidFetchUrl(url, document.baseURI))) {
174
- _context2.next = 9;
175
- break;
176
- }
177
-
178
- return _context2.abrupt("return", fetch(url).then(
179
- /*#__PURE__*/
180
- function () {
181
- var _ref4 = _asyncToGenerator(
182
- /*#__PURE__*/
183
- _regenerator["default"].mark(function _callee(response) {
184
- var cMapData;
185
- return _regenerator["default"].wrap(function _callee$(_context) {
186
- while (1) {
187
- switch (_context.prev = _context.next) {
188
- case 0:
189
- if (response.ok) {
190
- _context.next = 2;
191
- break;
192
- }
193
-
194
- throw new Error(response.statusText);
195
-
196
- case 2:
197
- if (!_this.isCompressed) {
198
- _context.next = 10;
199
- break;
200
- }
201
-
202
- _context.t0 = Uint8Array;
203
- _context.next = 6;
204
- return response.arrayBuffer();
205
-
206
- case 6:
207
- _context.t1 = _context.sent;
208
- cMapData = new _context.t0(_context.t1);
209
- _context.next = 15;
210
- break;
211
-
212
- case 10:
213
- _context.t2 = _util.stringToBytes;
214
- _context.next = 13;
215
- return response.text();
216
-
217
- case 13:
218
- _context.t3 = _context.sent;
219
- cMapData = (0, _context.t2)(_context.t3);
220
-
221
- case 15:
222
- return _context.abrupt("return", {
223
- cMapData: cMapData,
224
- compressionType: compressionType
225
- });
226
-
227
- case 16:
228
- case "end":
229
- return _context.stop();
230
- }
231
- }
232
- }, _callee);
233
- }));
234
-
235
- return function (_x3) {
236
- return _ref4.apply(this, arguments);
237
- };
238
- }())["catch"](function (reason) {
239
- throw new Error("Unable to load ".concat(_this.isCompressed ? 'binary ' : '') + "CMap at: ".concat(url));
240
- }));
241
-
242
- case 9:
243
- return _context2.abrupt("return", new Promise(function (resolve, reject) {
244
- var request = new XMLHttpRequest();
245
- request.open('GET', url, true);
246
-
247
- if (_this.isCompressed) {
248
- request.responseType = 'arraybuffer';
249
- }
250
-
251
- request.onreadystatechange = function () {
252
- if (request.readyState !== XMLHttpRequest.DONE) {
253
- return;
254
- }
255
-
256
- if (request.status === 200 || request.status === 0) {
257
- var cMapData;
258
-
259
- if (_this.isCompressed && request.response) {
260
- cMapData = new Uint8Array(request.response);
261
- } else if (!_this.isCompressed && request.responseText) {
262
- cMapData = (0, _util.stringToBytes)(request.responseText);
263
- }
264
-
265
- if (cMapData) {
266
- resolve({
267
- cMapData: cMapData,
268
- compressionType: compressionType
269
- });
270
- return;
271
- }
272
- }
273
-
274
- reject(new Error(request.statusText));
275
- };
276
-
277
- request.send(null);
278
- })["catch"](function (reason) {
279
- throw new Error("Unable to load ".concat(_this.isCompressed ? 'binary ' : '') + "CMap at: ".concat(url));
280
- }));
281
-
282
- case 10:
283
- case "end":
284
- return _context2.stop();
285
- }
186
+ if (this.isCompressed && request.response) {
187
+ cMapData = new Uint8Array(request.response);
188
+ } else if (!this.isCompressed && request.responseText) {
189
+ cMapData = (0, _util.stringToBytes)(request.responseText);
286
190
  }
287
- }, _callee2, this);
288
- }));
289
191
 
290
- return function (_x2) {
291
- return _ref3.apply(this, arguments);
192
+ if (cMapData) {
193
+ resolve({
194
+ cMapData,
195
+ compressionType
196
+ });
197
+ return;
198
+ }
199
+ }
200
+
201
+ reject(new Error(request.statusText));
292
202
  };
293
- }())
294
- }]);
295
203
 
296
- return DOMCMapReaderFactory;
297
- }();
204
+ request.send(null);
205
+ });
206
+ }
207
+
208
+ }
298
209
 
299
210
  exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
300
211
 
301
- var DOMSVGFactory =
302
- /*#__PURE__*/
303
- function () {
304
- function DOMSVGFactory() {
305
- _classCallCheck(this, DOMSVGFactory);
212
+ class DOMSVGFactory {
213
+ create(width, height) {
214
+ (0, _util.assert)(width > 0 && height > 0, "Invalid SVG dimensions");
215
+ const svg = document.createElementNS(SVG_NS, "svg:svg");
216
+ svg.setAttribute("version", "1.1");
217
+ svg.setAttribute("width", width + "px");
218
+ svg.setAttribute("height", height + "px");
219
+ svg.setAttribute("preserveAspectRatio", "none");
220
+ svg.setAttribute("viewBox", "0 0 " + width + " " + height);
221
+ return svg;
306
222
  }
307
223
 
308
- _createClass(DOMSVGFactory, [{
309
- key: "create",
310
- value: function create(width, height) {
311
- (0, _util.assert)(width > 0 && height > 0, 'Invalid SVG dimensions');
312
- var svg = document.createElementNS(SVG_NS, 'svg:svg');
313
- svg.setAttribute('version', '1.1');
314
- svg.setAttribute('width', width + 'px');
315
- svg.setAttribute('height', height + 'px');
316
- svg.setAttribute('preserveAspectRatio', 'none');
317
- svg.setAttribute('viewBox', '0 0 ' + width + ' ' + height);
318
- return svg;
319
- }
320
- }, {
321
- key: "createElement",
322
- value: function createElement(type) {
323
- (0, _util.assert)(typeof type === 'string', 'Invalid SVG element type');
324
- return document.createElementNS(SVG_NS, type);
325
- }
326
- }]);
224
+ createElement(type) {
225
+ (0, _util.assert)(typeof type === "string", "Invalid SVG element type");
226
+ return document.createElementNS(SVG_NS, type);
227
+ }
327
228
 
328
- return DOMSVGFactory;
329
- }();
229
+ }
330
230
 
331
231
  exports.DOMSVGFactory = DOMSVGFactory;
332
232
 
333
- var PageViewport =
334
- /*#__PURE__*/
335
- function () {
336
- function PageViewport(_ref5) {
337
- var viewBox = _ref5.viewBox,
338
- scale = _ref5.scale,
339
- rotation = _ref5.rotation,
340
- _ref5$offsetX = _ref5.offsetX,
341
- offsetX = _ref5$offsetX === void 0 ? 0 : _ref5$offsetX,
342
- _ref5$offsetY = _ref5.offsetY,
343
- offsetY = _ref5$offsetY === void 0 ? 0 : _ref5$offsetY,
344
- _ref5$dontFlip = _ref5.dontFlip,
345
- dontFlip = _ref5$dontFlip === void 0 ? false : _ref5$dontFlip;
346
-
347
- _classCallCheck(this, PageViewport);
348
-
233
+ class PageViewport {
234
+ constructor({
235
+ viewBox,
236
+ scale,
237
+ rotation,
238
+ offsetX = 0,
239
+ offsetY = 0,
240
+ dontFlip = false
241
+ }) {
349
242
  this.viewBox = viewBox;
350
243
  this.scale = scale;
351
244
  this.rotation = rotation;
352
245
  this.offsetX = offsetX;
353
246
  this.offsetY = offsetY;
354
- var centerX = (viewBox[2] + viewBox[0]) / 2;
355
- var centerY = (viewBox[3] + viewBox[1]) / 2;
356
- var rotateA, rotateB, rotateC, rotateD;
247
+ const centerX = (viewBox[2] + viewBox[0]) / 2;
248
+ const centerY = (viewBox[3] + viewBox[1]) / 2;
249
+ let rotateA, rotateB, rotateC, rotateD;
357
250
  rotation = rotation % 360;
358
251
  rotation = rotation < 0 ? rotation + 360 : rotation;
359
252
 
@@ -379,12 +272,15 @@ function () {
379
272
  rotateD = 0;
380
273
  break;
381
274
 
382
- default:
275
+ case 0:
383
276
  rotateA = 1;
384
277
  rotateB = 0;
385
278
  rotateC = 0;
386
279
  rotateD = -1;
387
280
  break;
281
+
282
+ default:
283
+ throw new Error("PageViewport: Invalid rotation, must be a multiple of 90 degrees.");
388
284
  }
389
285
 
390
286
  if (dontFlip) {
@@ -392,8 +288,8 @@ function () {
392
288
  rotateD = -rotateD;
393
289
  }
394
290
 
395
- var offsetCanvasX, offsetCanvasY;
396
- var width, height;
291
+ let offsetCanvasX, offsetCanvasY;
292
+ let width, height;
397
293
 
398
294
  if (rotateA === 0) {
399
295
  offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
@@ -412,66 +308,53 @@ function () {
412
308
  this.height = height;
413
309
  }
414
310
 
415
- _createClass(PageViewport, [{
416
- key: "clone",
417
- value: function clone() {
418
- var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
419
- _ref6$scale = _ref6.scale,
420
- scale = _ref6$scale === void 0 ? this.scale : _ref6$scale,
421
- _ref6$rotation = _ref6.rotation,
422
- rotation = _ref6$rotation === void 0 ? this.rotation : _ref6$rotation,
423
- _ref6$dontFlip = _ref6.dontFlip,
424
- dontFlip = _ref6$dontFlip === void 0 ? false : _ref6$dontFlip;
425
-
426
- return new PageViewport({
427
- viewBox: this.viewBox.slice(),
428
- scale: scale,
429
- rotation: rotation,
430
- offsetX: this.offsetX,
431
- offsetY: this.offsetY,
432
- dontFlip: dontFlip
433
- });
434
- }
435
- }, {
436
- key: "convertToViewportPoint",
437
- value: function convertToViewportPoint(x, y) {
438
- return _util.Util.applyTransform([x, y], this.transform);
439
- }
440
- }, {
441
- key: "convertToViewportRectangle",
442
- value: function convertToViewportRectangle(rect) {
443
- var topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);
311
+ clone({
312
+ scale = this.scale,
313
+ rotation = this.rotation,
314
+ offsetX = this.offsetX,
315
+ offsetY = this.offsetY,
316
+ dontFlip = false
317
+ } = {}) {
318
+ return new PageViewport({
319
+ viewBox: this.viewBox.slice(),
320
+ scale,
321
+ rotation,
322
+ offsetX,
323
+ offsetY,
324
+ dontFlip
325
+ });
326
+ }
444
327
 
445
- var bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);
328
+ convertToViewportPoint(x, y) {
329
+ return _util.Util.applyTransform([x, y], this.transform);
330
+ }
446
331
 
447
- return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];
448
- }
449
- }, {
450
- key: "convertToPdfPoint",
451
- value: function convertToPdfPoint(x, y) {
452
- return _util.Util.applyInverseTransform([x, y], this.transform);
453
- }
454
- }]);
332
+ convertToViewportRectangle(rect) {
333
+ const topLeft = _util.Util.applyTransform([rect[0], rect[1]], this.transform);
455
334
 
456
- return PageViewport;
457
- }();
335
+ const bottomRight = _util.Util.applyTransform([rect[2], rect[3]], this.transform);
336
+
337
+ return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];
338
+ }
339
+
340
+ convertToPdfPoint(x, y) {
341
+ return _util.Util.applyInverseTransform([x, y], this.transform);
342
+ }
343
+
344
+ }
458
345
 
459
346
  exports.PageViewport = PageViewport;
460
347
 
461
- var RenderingCancelledException = function RenderingCancelledException() {
462
- function RenderingCancelledException(msg, type) {
463
- this.message = msg;
348
+ class RenderingCancelledException extends _util.BaseException {
349
+ constructor(msg, type) {
350
+ super(msg);
464
351
  this.type = type;
465
352
  }
466
353
 
467
- RenderingCancelledException.prototype = new Error();
468
- RenderingCancelledException.prototype.name = 'RenderingCancelledException';
469
- RenderingCancelledException.constructor = RenderingCancelledException;
470
- return RenderingCancelledException;
471
- }();
354
+ }
472
355
 
473
356
  exports.RenderingCancelledException = RenderingCancelledException;
474
- var LinkTarget = {
357
+ const LinkTarget = {
475
358
  NONE: 0,
476
359
  SELF: 1,
477
360
  BLANK: 2,
@@ -479,192 +362,135 @@ var LinkTarget = {
479
362
  TOP: 4
480
363
  };
481
364
  exports.LinkTarget = LinkTarget;
482
- var LinkTargetStringMap = ['', '_self', '_blank', '_parent', '_top'];
483
365
 
484
- function addLinkAttributes(link) {
485
- var _ref7 = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {},
486
- url = _ref7.url,
487
- target = _ref7.target,
488
- rel = _ref7.rel;
366
+ function addLinkAttributes(link, {
367
+ url,
368
+ target,
369
+ rel,
370
+ enabled = true
371
+ } = {}) {
372
+ (0, _util.assert)(url && typeof url === "string", 'addLinkAttributes: A valid "url" parameter must provided.');
373
+ const urlNullRemoved = (0, _util.removeNullCharacters)(url);
374
+
375
+ if (enabled) {
376
+ link.href = link.title = urlNullRemoved;
377
+ } else {
378
+ link.href = "";
379
+ link.title = `Disabled: ${urlNullRemoved}`;
380
+
381
+ link.onclick = () => {
382
+ return false;
383
+ };
384
+ }
385
+
386
+ let targetStr = "";
489
387
 
490
- link.href = link.title = url ? (0, _util.removeNullCharacters)(url) : '';
388
+ switch (target) {
389
+ case LinkTarget.NONE:
390
+ break;
491
391
 
492
- if (url) {
493
- var LinkTargetValues = Object.values(LinkTarget);
494
- var targetIndex = LinkTargetValues.includes(target) ? target : LinkTarget.NONE;
495
- link.target = LinkTargetStringMap[targetIndex];
496
- link.rel = typeof rel === 'string' ? rel : DEFAULT_LINK_REL;
392
+ case LinkTarget.SELF:
393
+ targetStr = "_self";
394
+ break;
395
+
396
+ case LinkTarget.BLANK:
397
+ targetStr = "_blank";
398
+ break;
399
+
400
+ case LinkTarget.PARENT:
401
+ targetStr = "_parent";
402
+ break;
403
+
404
+ case LinkTarget.TOP:
405
+ targetStr = "_top";
406
+ break;
497
407
  }
408
+
409
+ link.target = targetStr;
410
+ link.rel = typeof rel === "string" ? rel : DEFAULT_LINK_REL;
498
411
  }
499
412
 
500
413
  function getFilenameFromUrl(url) {
501
- var anchor = url.indexOf('#');
502
- var query = url.indexOf('?');
503
- var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
504
- return url.substring(url.lastIndexOf('/', end) + 1, end);
414
+ const anchor = url.indexOf("#");
415
+ const query = url.indexOf("?");
416
+ const end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
417
+ return url.substring(url.lastIndexOf("/", end) + 1, end);
505
418
  }
506
419
 
507
- var StatTimer =
508
- /*#__PURE__*/
509
- function () {
510
- function StatTimer() {
511
- var enable = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
512
-
513
- _classCallCheck(this, StatTimer);
514
-
515
- this.enabled = !!enable;
420
+ class StatTimer {
421
+ constructor() {
516
422
  this.started = Object.create(null);
517
423
  this.times = [];
518
424
  }
519
425
 
520
- _createClass(StatTimer, [{
521
- key: "time",
522
- value: function time(name) {
523
- if (!this.enabled) {
524
- return;
525
- }
426
+ time(name) {
427
+ if (name in this.started) {
428
+ (0, _util.warn)(`Timer is already running for ${name}`);
429
+ }
526
430
 
527
- if (name in this.started) {
528
- (0, _util.warn)('Timer is already running for ' + name);
529
- }
431
+ this.started[name] = Date.now();
432
+ }
530
433
 
531
- this.started[name] = Date.now();
434
+ timeEnd(name) {
435
+ if (!(name in this.started)) {
436
+ (0, _util.warn)(`Timer has not been started for ${name}`);
532
437
  }
533
- }, {
534
- key: "timeEnd",
535
- value: function timeEnd(name) {
536
- if (!this.enabled) {
537
- return;
538
- }
539
438
 
540
- if (!(name in this.started)) {
541
- (0, _util.warn)('Timer has not been started for ' + name);
542
- }
439
+ this.times.push({
440
+ name,
441
+ start: this.started[name],
442
+ end: Date.now()
443
+ });
444
+ delete this.started[name];
445
+ }
543
446
 
544
- this.times.push({
545
- 'name': name,
546
- 'start': this.started[name],
547
- 'end': Date.now()
548
- });
549
- delete this.started[name];
550
- }
551
- }, {
552
- key: "toString",
553
- value: function toString() {
554
- var out = '',
555
- longest = 0;
556
- var _iteratorNormalCompletion = true;
557
- var _didIteratorError = false;
558
- var _iteratorError = undefined;
559
-
560
- try {
561
- for (var _iterator = this.times[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
562
- var time = _step.value;
563
- var name = time.name;
564
-
565
- if (name.length > longest) {
566
- longest = name.length;
567
- }
568
- }
569
- } catch (err) {
570
- _didIteratorError = true;
571
- _iteratorError = err;
572
- } finally {
573
- try {
574
- if (!_iteratorNormalCompletion && _iterator["return"] != null) {
575
- _iterator["return"]();
576
- }
577
- } finally {
578
- if (_didIteratorError) {
579
- throw _iteratorError;
580
- }
581
- }
582
- }
447
+ toString() {
448
+ const outBuf = [];
449
+ let longest = 0;
583
450
 
584
- var _iteratorNormalCompletion2 = true;
585
- var _didIteratorError2 = false;
586
- var _iteratorError2 = undefined;
451
+ for (const time of this.times) {
452
+ const name = time.name;
587
453
 
588
- try {
589
- for (var _iterator2 = this.times[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
590
- var _time = _step2.value;
591
- var duration = _time.end - _time.start;
592
- out += "".concat(_time.name.padEnd(longest), " ").concat(duration, "ms\n");
593
- }
594
- } catch (err) {
595
- _didIteratorError2 = true;
596
- _iteratorError2 = err;
597
- } finally {
598
- try {
599
- if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
600
- _iterator2["return"]();
601
- }
602
- } finally {
603
- if (_didIteratorError2) {
604
- throw _iteratorError2;
605
- }
606
- }
454
+ if (name.length > longest) {
455
+ longest = name.length;
607
456
  }
608
-
609
- return out;
610
457
  }
611
- }]);
612
-
613
- return StatTimer;
614
- }();
615
-
616
- exports.StatTimer = StatTimer;
617
458
 
618
- var DummyStatTimer =
619
- /*#__PURE__*/
620
- function () {
621
- function DummyStatTimer() {
622
- _classCallCheck(this, DummyStatTimer);
459
+ for (const time of this.times) {
460
+ const duration = time.end - time.start;
461
+ outBuf.push(`${time.name.padEnd(longest)} ${duration}ms\n`);
462
+ }
623
463
 
624
- (0, _util.unreachable)('Cannot initialize DummyStatTimer.');
464
+ return outBuf.join("");
625
465
  }
626
466
 
627
- _createClass(DummyStatTimer, null, [{
628
- key: "time",
629
- value: function time(name) {}
630
- }, {
631
- key: "timeEnd",
632
- value: function timeEnd(name) {}
633
- }, {
634
- key: "toString",
635
- value: function toString() {
636
- return '';
637
- }
638
- }]);
639
-
640
- return DummyStatTimer;
641
- }();
467
+ }
642
468
 
643
- exports.DummyStatTimer = DummyStatTimer;
469
+ exports.StatTimer = StatTimer;
644
470
 
645
471
  function isFetchSupported() {
646
- return typeof fetch !== 'undefined' && typeof Response !== 'undefined' && 'body' in Response.prototype && typeof ReadableStream !== 'undefined';
472
+ return typeof fetch !== "undefined" && typeof Response !== "undefined" && "body" in Response.prototype && typeof ReadableStream !== "undefined";
647
473
  }
648
474
 
649
475
  function isValidFetchUrl(url, baseUrl) {
650
476
  try {
651
- var _ref8 = baseUrl ? new _util.URL(url, baseUrl) : new _util.URL(url),
652
- protocol = _ref8.protocol;
653
-
654
- return protocol === 'http:' || protocol === 'https:';
477
+ const {
478
+ protocol
479
+ } = baseUrl ? new URL(url, baseUrl) : new URL(url);
480
+ return protocol === "http:" || protocol === "https:";
655
481
  } catch (ex) {
656
482
  return false;
657
483
  }
658
484
  }
659
485
 
660
486
  function loadScript(src) {
661
- return new Promise(function (resolve, reject) {
662
- var script = document.createElement('script');
487
+ return new Promise((resolve, reject) => {
488
+ const script = document.createElement("script");
663
489
  script.src = src;
664
490
  script.onload = resolve;
665
491
 
666
492
  script.onerror = function () {
667
- reject(new Error("Cannot load script at: ".concat(script.src)));
493
+ reject(new Error(`Cannot load script at: ${script.src}`));
668
494
  };
669
495
 
670
496
  (document.head || document.documentElement).appendChild(script);
@@ -672,76 +498,55 @@ function loadScript(src) {
672
498
  }
673
499
 
674
500
  function deprecated(details) {
675
- console.log('Deprecated API usage: ' + details);
501
+ console.log("Deprecated API usage: " + details);
676
502
  }
677
503
 
678
- function releaseImageResources(img) {
679
- (0, _util.assert)(img instanceof Image, 'Invalid `img` parameter.');
680
- var url = img.src;
681
-
682
- if (typeof url === 'string' && url.startsWith('blob:') && _util.URL.revokeObjectURL) {
683
- _util.URL.revokeObjectURL(url);
684
- }
504
+ let pdfDateStringRegex;
685
505
 
686
- img.removeAttribute('src');
687
- }
688
-
689
- var pdfDateStringRegex;
690
-
691
- var PDFDateString =
692
- /*#__PURE__*/
693
- function () {
694
- function PDFDateString() {
695
- _classCallCheck(this, PDFDateString);
696
- }
697
-
698
- _createClass(PDFDateString, null, [{
699
- key: "toDateObject",
700
- value: function toDateObject(input) {
701
- if (!input || !(0, _util.isString)(input)) {
702
- return null;
703
- }
704
-
705
- if (!pdfDateStringRegex) {
706
- pdfDateStringRegex = new RegExp('^D:' + '(\\d{4})' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '(\\d{2})?' + '([Z|+|-])?' + '(\\d{2})?' + '\'?' + '(\\d{2})?' + '\'?');
707
- }
506
+ class PDFDateString {
507
+ static toDateObject(input) {
508
+ if (!input || !(0, _util.isString)(input)) {
509
+ return null;
510
+ }
708
511
 
709
- var matches = pdfDateStringRegex.exec(input);
512
+ if (!pdfDateStringRegex) {
513
+ pdfDateStringRegex = new RegExp("^D:" + "(\\d{4})" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "(\\d{2})?" + "([Z|+|-])?" + "(\\d{2})?" + "'?" + "(\\d{2})?" + "'?");
514
+ }
710
515
 
711
- if (!matches) {
712
- return null;
713
- }
516
+ const matches = pdfDateStringRegex.exec(input);
714
517
 
715
- var year = parseInt(matches[1], 10);
716
- var month = parseInt(matches[2], 10);
717
- month = month >= 1 && month <= 12 ? month - 1 : 0;
718
- var day = parseInt(matches[3], 10);
719
- day = day >= 1 && day <= 31 ? day : 1;
720
- var hour = parseInt(matches[4], 10);
721
- hour = hour >= 0 && hour <= 23 ? hour : 0;
722
- var minute = parseInt(matches[5], 10);
723
- minute = minute >= 0 && minute <= 59 ? minute : 0;
724
- var second = parseInt(matches[6], 10);
725
- second = second >= 0 && second <= 59 ? second : 0;
726
- var universalTimeRelation = matches[7] || 'Z';
727
- var offsetHour = parseInt(matches[8], 10);
728
- offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;
729
- var offsetMinute = parseInt(matches[9], 10) || 0;
730
- offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;
731
-
732
- if (universalTimeRelation === '-') {
733
- hour += offsetHour;
734
- minute += offsetMinute;
735
- } else if (universalTimeRelation === '+') {
736
- hour -= offsetHour;
737
- minute -= offsetMinute;
738
- }
518
+ if (!matches) {
519
+ return null;
520
+ }
739
521
 
740
- return new Date(Date.UTC(year, month, day, hour, minute, second));
522
+ const year = parseInt(matches[1], 10);
523
+ let month = parseInt(matches[2], 10);
524
+ month = month >= 1 && month <= 12 ? month - 1 : 0;
525
+ let day = parseInt(matches[3], 10);
526
+ day = day >= 1 && day <= 31 ? day : 1;
527
+ let hour = parseInt(matches[4], 10);
528
+ hour = hour >= 0 && hour <= 23 ? hour : 0;
529
+ let minute = parseInt(matches[5], 10);
530
+ minute = minute >= 0 && minute <= 59 ? minute : 0;
531
+ let second = parseInt(matches[6], 10);
532
+ second = second >= 0 && second <= 59 ? second : 0;
533
+ const universalTimeRelation = matches[7] || "Z";
534
+ let offsetHour = parseInt(matches[8], 10);
535
+ offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;
536
+ let offsetMinute = parseInt(matches[9], 10) || 0;
537
+ offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;
538
+
539
+ if (universalTimeRelation === "-") {
540
+ hour += offsetHour;
541
+ minute += offsetMinute;
542
+ } else if (universalTimeRelation === "+") {
543
+ hour -= offsetHour;
544
+ minute -= offsetMinute;
741
545
  }
742
- }]);
743
546
 
744
- return PDFDateString;
745
- }();
547
+ return new Date(Date.UTC(year, month, day, hour, minute, second));
548
+ }
549
+
550
+ }
746
551
 
747
552
  exports.PDFDateString = PDFDateString;