pdfjs-dist 2.0.943 → 2.4.456

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

Potentially problematic release.


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

Files changed (192) 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 +8286 -14230
  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 +25500 -26628
  9. package/build/pdf.worker.js.map +1 -1
  10. package/build/pdf.worker.min.js +22 -1
  11. package/es5/build/pdf.js +25473 -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 +57878 -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 +407 -0
  29. package/es5/web/pdf_viewer.js +7757 -0
  30. package/es5/web/pdf_viewer.js.map +1 -0
  31. package/image_decoders/pdf.image_decoders.js +2887 -4094
  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 +855 -778
  36. package/lib/core/arithmetic_decoder.js +325 -311
  37. package/lib/core/bidi.js +117 -50
  38. package/lib/core/ccitt.js +251 -89
  39. package/lib/core/ccitt_stream.js +26 -16
  40. package/lib/core/cff_parser.js +525 -197
  41. package/lib/core/charsets.js +6 -5
  42. package/lib/core/chunked_stream.js +541 -406
  43. package/lib/core/cmap.js +368 -253
  44. package/lib/core/colorspace.js +781 -800
  45. package/lib/core/core_utils.js +152 -0
  46. package/lib/core/crypto.js +609 -422
  47. package/lib/core/document.js +649 -481
  48. package/lib/core/encodings.js +33 -24
  49. package/lib/core/evaluator.js +1471 -736
  50. package/lib/core/font_renderer.js +289 -149
  51. package/lib/core/fonts.js +1067 -413
  52. package/lib/core/function.js +517 -287
  53. package/lib/core/glyphlist.js +4529 -4527
  54. package/lib/core/image.js +232 -114
  55. package/lib/core/image_utils.js +94 -0
  56. package/lib/core/jbig2.js +711 -342
  57. package/lib/core/jbig2_stream.js +31 -19
  58. package/lib/core/jpeg_stream.js +151 -26
  59. package/lib/core/jpg.js +433 -181
  60. package/lib/core/jpx.js +551 -143
  61. package/lib/core/jpx_stream.js +40 -28
  62. package/lib/core/metrics.js +2931 -2931
  63. package/lib/core/murmurhash3.js +104 -97
  64. package/lib/core/obj.js +1561 -1053
  65. package/lib/core/operator_list.js +192 -64
  66. package/lib/core/parser.js +1162 -864
  67. package/lib/core/pattern.js +224 -75
  68. package/lib/core/pdf_manager.js +154 -285
  69. package/lib/core/primitives.js +145 -69
  70. package/lib/core/ps_parser.js +212 -162
  71. package/lib/core/standard_fonts.js +245 -244
  72. package/lib/core/stream.js +353 -81
  73. package/lib/core/type1_parser.js +218 -68
  74. package/lib/core/unicode.js +1682 -1655
  75. package/lib/core/worker.js +233 -302
  76. package/lib/core/worker_stream.js +168 -0
  77. package/lib/display/annotation_layer.js +808 -862
  78. package/lib/display/api.js +1778 -1462
  79. package/lib/display/api_compatibility.js +14 -9
  80. package/lib/display/canvas.js +463 -140
  81. package/lib/display/content_disposition.js +86 -58
  82. package/lib/display/display_utils.js +524 -0
  83. package/lib/display/fetch_stream.js +202 -274
  84. package/lib/display/font_loader.js +311 -333
  85. package/lib/display/metadata.js +98 -88
  86. package/lib/display/network.js +343 -347
  87. package/lib/display/network_utils.js +46 -26
  88. package/lib/display/node_stream.js +326 -404
  89. package/lib/display/pattern_helper.js +168 -69
  90. package/lib/display/svg.js +1296 -885
  91. package/lib/display/text_layer.js +229 -103
  92. package/lib/display/transport_stream.js +290 -250
  93. package/lib/display/webgl.js +116 -83
  94. package/lib/display/worker_options.js +6 -5
  95. package/lib/display/xml_parser.js +358 -337
  96. package/lib/examples/node/domstubs.js +95 -39
  97. package/lib/pdf.js +49 -31
  98. package/lib/pdf.worker.js +7 -5
  99. package/lib/shared/compatibility.js +3 -145
  100. package/lib/shared/is_node.js +8 -7
  101. package/lib/shared/message_handler.js +367 -314
  102. package/lib/shared/util.js +421 -415
  103. package/lib/test/unit/annotation_spec.js +1570 -690
  104. package/lib/test/unit/api_spec.js +855 -493
  105. package/lib/test/unit/bidi_spec.js +12 -12
  106. package/lib/test/unit/cff_parser_spec.js +88 -61
  107. package/lib/test/unit/clitests_helper.js +9 -12
  108. package/lib/test/unit/cmap_spec.js +140 -88
  109. package/lib/test/unit/colorspace_spec.js +204 -152
  110. package/lib/test/unit/core_utils_spec.js +211 -0
  111. package/lib/test/unit/crypto_spec.js +194 -182
  112. package/lib/test/unit/custom_spec.js +50 -64
  113. package/lib/test/unit/display_svg_spec.js +53 -38
  114. package/lib/test/unit/display_utils_spec.js +263 -0
  115. package/lib/test/unit/document_spec.js +17 -22
  116. package/lib/test/unit/encodings_spec.js +15 -57
  117. package/lib/test/unit/evaluator_spec.js +90 -83
  118. package/lib/test/unit/fetch_stream_spec.js +111 -0
  119. package/lib/test/unit/function_spec.js +219 -205
  120. package/lib/test/unit/jasmine-boot.js +68 -39
  121. package/lib/test/unit/message_handler_spec.js +187 -160
  122. package/lib/test/unit/metadata_spec.js +87 -34
  123. package/lib/test/unit/murmurhash3_spec.js +13 -13
  124. package/lib/test/unit/network_spec.js +26 -59
  125. package/lib/test/unit/network_utils_spec.js +187 -121
  126. package/lib/test/unit/node_stream_spec.js +98 -90
  127. package/lib/test/unit/parser_spec.js +173 -131
  128. package/lib/test/unit/pdf_find_controller_spec.js +148 -67
  129. package/lib/test/unit/pdf_find_utils_spec.js +35 -34
  130. package/lib/test/unit/pdf_history_spec.js +45 -33
  131. package/lib/test/unit/primitives_spec.js +161 -126
  132. package/lib/test/unit/stream_spec.js +22 -15
  133. package/lib/test/unit/test_utils.js +149 -98
  134. package/lib/test/unit/testreporter.js +36 -18
  135. package/lib/test/unit/type1_parser_spec.js +46 -44
  136. package/lib/test/unit/ui_utils_spec.js +388 -372
  137. package/lib/test/unit/unicode_spec.js +49 -46
  138. package/lib/test/unit/util_spec.js +144 -248
  139. package/lib/web/annotation_layer_builder.js +75 -95
  140. package/lib/web/app.js +1538 -1147
  141. package/lib/web/app_options.js +116 -104
  142. package/lib/web/base_viewer.js +950 -775
  143. package/lib/web/chromecom.js +217 -225
  144. package/lib/web/debugger.js +236 -148
  145. package/lib/web/download_manager.js +50 -50
  146. package/lib/web/firefox_print_service.js +51 -33
  147. package/lib/web/firefoxcom.js +225 -352
  148. package/lib/web/genericcom.js +30 -93
  149. package/lib/web/genericl10n.js +26 -143
  150. package/lib/web/grab_to_pan.js +57 -33
  151. package/lib/web/interfaces.js +105 -232
  152. package/lib/web/overlay_manager.js +73 -227
  153. package/lib/web/password_prompt.js +44 -62
  154. package/lib/web/pdf_attachment_viewer.js +118 -123
  155. package/lib/web/pdf_cursor_tools.js +89 -93
  156. package/lib/web/pdf_document_properties.js +242 -281
  157. package/lib/web/pdf_find_bar.js +157 -163
  158. package/lib/web/pdf_find_controller.js +598 -454
  159. package/lib/web/pdf_find_utils.js +32 -16
  160. package/lib/web/pdf_history.js +481 -355
  161. package/lib/web/pdf_link_service.js +355 -323
  162. package/lib/web/pdf_outline_viewer.js +167 -152
  163. package/lib/web/pdf_page_view.js +511 -457
  164. package/lib/web/pdf_presentation_mode.js +347 -335
  165. package/lib/web/pdf_print_service.js +133 -103
  166. package/lib/web/pdf_rendering_queue.js +98 -100
  167. package/lib/web/pdf_sidebar.js +323 -299
  168. package/lib/web/pdf_sidebar_resizer.js +107 -108
  169. package/lib/web/pdf_single_page_viewer.js +94 -146
  170. package/lib/web/pdf_thumbnail_view.js +319 -269
  171. package/lib/web/pdf_thumbnail_viewer.js +219 -199
  172. package/lib/web/pdf_viewer.component.js +111 -32
  173. package/lib/web/pdf_viewer.js +61 -101
  174. package/lib/web/preferences.js +87 -272
  175. package/lib/web/secondary_toolbar.js +207 -220
  176. package/lib/web/text_layer_builder.js +322 -322
  177. package/lib/web/toolbar.js +227 -180
  178. package/lib/web/ui_utils.js +476 -421
  179. package/lib/web/view_history.js +59 -208
  180. package/lib/web/viewer_compatibility.js +9 -6
  181. package/package.json +2 -9
  182. package/web/pdf_viewer.css +36 -22
  183. package/web/pdf_viewer.js +4407 -4516
  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 -441
  189. package/lib/shared/streams_polyfill.js +0 -39
  190. package/lib/shared/url_polyfill.js +0 -50
  191. package/lib/test/unit/dom_utils_spec.js +0 -89
  192. package/lib/web/dom_events.js +0 -140
@@ -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.
@@ -19,124 +19,84 @@
19
19
  * @licend The above is the entire license notice for the
20
20
  * Javascript code in this page
21
21
  */
22
- 'use strict';
22
+ "use strict";
23
23
 
24
24
  Object.defineProperty(exports, "__esModule", {
25
25
  value: true
26
26
  });
27
- exports.PDFViewer = undefined;
27
+ exports.PDFViewer = void 0;
28
28
 
29
- var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
29
+ var _base_viewer = require("./base_viewer.js");
30
30
 
31
- var _base_viewer = require('./base_viewer');
31
+ var _pdf = require("../pdf");
32
32
 
33
- var _ui_utils = require('./ui_utils');
34
-
35
- var _pdf = require('../pdf');
36
-
37
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
38
-
39
- function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
33
+ class PDFViewer extends _base_viewer.BaseViewer {
34
+ get _setDocumentViewerElement() {
35
+ return (0, _pdf.shadow)(this, "_setDocumentViewerElement", this.viewer);
36
+ }
40
37
 
41
- function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
38
+ _scrollIntoView({
39
+ pageDiv,
40
+ pageSpot = null,
41
+ pageNumber = null
42
+ }) {
43
+ if (!pageSpot && !this.isInPresentationMode) {
44
+ const left = pageDiv.offsetLeft + pageDiv.clientLeft;
45
+ const right = left + pageDiv.clientWidth;
46
+ const {
47
+ scrollLeft,
48
+ clientWidth
49
+ } = this.container;
50
+
51
+ if (this._isScrollModeHorizontal || left < scrollLeft || right > scrollLeft + clientWidth) {
52
+ pageSpot = {
53
+ left: 0,
54
+ top: 0
55
+ };
56
+ }
57
+ }
42
58
 
43
- var PDFViewer = function (_BaseViewer) {
44
- _inherits(PDFViewer, _BaseViewer);
59
+ super._scrollIntoView({
60
+ pageDiv,
61
+ pageSpot,
62
+ pageNumber
63
+ });
64
+ }
45
65
 
46
- function PDFViewer() {
47
- _classCallCheck(this, PDFViewer);
66
+ _getVisiblePages() {
67
+ if (this.isInPresentationMode) {
68
+ return this._getCurrentVisiblePage();
69
+ }
48
70
 
49
- return _possibleConstructorReturn(this, (PDFViewer.__proto__ || Object.getPrototypeOf(PDFViewer)).apply(this, arguments));
71
+ return super._getVisiblePages();
50
72
  }
51
73
 
52
- _createClass(PDFViewer, [{
53
- key: '_scrollIntoView',
54
- value: function _scrollIntoView(_ref) {
55
- var pageDiv = _ref.pageDiv,
56
- _ref$pageSpot = _ref.pageSpot,
57
- pageSpot = _ref$pageSpot === undefined ? null : _ref$pageSpot;
58
-
59
- if (!pageSpot && !this.isInPresentationMode) {
60
- var left = pageDiv.offsetLeft + pageDiv.clientLeft;
61
- var right = left + pageDiv.clientWidth;
62
- var _container = this.container,
63
- scrollLeft = _container.scrollLeft,
64
- clientWidth = _container.clientWidth;
65
-
66
- if (this._scrollMode === _base_viewer.ScrollMode.HORIZONTAL || left < scrollLeft || right > scrollLeft + clientWidth) {
67
- pageSpot = {
68
- left: 0,
69
- top: 0
70
- };
71
- }
72
- }
73
- (0, _ui_utils.scrollIntoView)(pageDiv, pageSpot);
74
- }
75
- }, {
76
- key: '_getVisiblePages',
77
- value: function _getVisiblePages() {
78
- if (!this.isInPresentationMode) {
79
- return (0, _ui_utils.getVisibleElements)(this.container, this._pages, true, this._scrollMode === _base_viewer.ScrollMode.HORIZONTAL);
80
- }
81
- var currentPage = this._pages[this._currentPageNumber - 1];
82
- var visible = [{
83
- id: currentPage.id,
84
- view: currentPage
85
- }];
86
- return {
87
- first: currentPage,
88
- last: currentPage,
89
- views: visible
90
- };
74
+ _updateHelper(visiblePages) {
75
+ if (this.isInPresentationMode) {
76
+ return;
91
77
  }
92
- }, {
93
- key: 'update',
94
- value: function update() {
95
- var visible = this._getVisiblePages();
96
- var visiblePages = visible.views,
97
- numVisiblePages = visiblePages.length;
98
- if (numVisiblePages === 0) {
99
- return;
100
- }
101
- this._resizeBuffer(numVisiblePages, visiblePages);
102
- this.renderingQueue.renderHighestPriority(visible);
103
- var currentId = this._currentPageNumber;
104
- var stillFullyVisible = false;
105
- for (var i = 0; i < numVisiblePages; ++i) {
106
- var page = visiblePages[i];
107
- if (page.percent < 100) {
108
- break;
109
- }
110
- if (page.id === currentId) {
111
- stillFullyVisible = true;
112
- break;
113
- }
114
- }
115
- if (!stillFullyVisible) {
116
- currentId = visiblePages[0].id;
78
+
79
+ let currentId = this._currentPageNumber;
80
+ let stillFullyVisible = false;
81
+
82
+ for (const page of visiblePages) {
83
+ if (page.percent < 100) {
84
+ break;
117
85
  }
118
- if (!this.isInPresentationMode) {
119
- this._setCurrentPageNumber(currentId);
86
+
87
+ if (page.id === currentId) {
88
+ stillFullyVisible = true;
89
+ break;
120
90
  }
121
- this._updateLocation(visible.first);
122
- this.eventBus.dispatch('updateviewarea', {
123
- source: this,
124
- location: this._location
125
- });
126
- }
127
- }, {
128
- key: '_setDocumentViewerElement',
129
- get: function get() {
130
- return (0, _pdf.shadow)(this, '_setDocumentViewerElement', this.viewer);
131
91
  }
132
- }, {
133
- key: '_isScrollModeHorizontal',
134
- get: function get() {
135
- return this.isInPresentationMode ? false : this._scrollMode === _base_viewer.ScrollMode.HORIZONTAL;
92
+
93
+ if (!stillFullyVisible) {
94
+ currentId = visiblePages[0].id;
136
95
  }
137
- }]);
138
96
 
139
- return PDFViewer;
140
- }(_base_viewer.BaseViewer);
97
+ this._setCurrentPageNumber(currentId);
98
+ }
99
+
100
+ }
141
101
 
142
102
  exports.PDFViewer = PDFViewer;
@@ -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.
@@ -24,324 +24,139 @@
24
24
  Object.defineProperty(exports, "__esModule", {
25
25
  value: true
26
26
  });
27
- exports.BasePreferences = undefined;
27
+ exports.BasePreferences = void 0;
28
+ let defaultPreferences = null;
28
29
 
29
- var _regenerator = require("babel-runtime/regenerator");
30
-
31
- var _regenerator2 = _interopRequireDefault(_regenerator);
32
-
33
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
34
-
35
- var _createClass = function () { 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
36
-
37
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
38
-
39
- function _asyncToGenerator(fn) { return function () { var gen = fn.apply(this, arguments); return new Promise(function (resolve, reject) { function step(key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { return Promise.resolve(value).then(function (value) { step("next", value); }, function (err) { step("throw", err); }); } } return step("next"); }); }; }
40
-
41
- function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
42
-
43
- var defaultPreferences = null;
44
30
  function getDefaultPreferences() {
45
31
  if (!defaultPreferences) {
46
32
  defaultPreferences = Promise.resolve({
47
- "showPreviousViewOnLoad": true,
48
- "defaultZoomValue": "",
49
- "sidebarViewOnLoad": 0,
50
33
  "cursorToolOnLoad": 0,
34
+ "defaultZoomValue": "",
35
+ "disablePageLabels": false,
36
+ "enablePrintAutoRotate": false,
51
37
  "enableWebGL": false,
52
38
  "eventBusDispatchToDOM": false,
53
- "pdfBugEnabled": false,
54
- "disableRange": false,
55
- "disableStream": false,
56
- "disableAutoFetch": false,
57
- "disableFontFace": false,
58
- "textLayerMode": 1,
59
- "useOnlyCssZoom": false,
60
39
  "externalLinkTarget": 0,
40
+ "historyUpdateUrl": false,
41
+ "ignoreDestinationZoom": false,
42
+ "pdfBugEnabled": false,
61
43
  "renderer": "canvas",
62
44
  "renderInteractiveForms": false,
63
- "enablePrintAutoRotate": false,
64
- "disablePageMode": false,
65
- "disablePageLabels": false,
66
- "scrollModeOnLoad": 0,
67
- "spreadModeOnLoad": 0
45
+ "sidebarViewOnLoad": -1,
46
+ "scrollModeOnLoad": -1,
47
+ "spreadModeOnLoad": -1,
48
+ "textLayerMode": 1,
49
+ "useOnlyCssZoom": false,
50
+ "viewOnLoad": 0,
51
+ "disableAutoFetch": false,
52
+ "disableFontFace": false,
53
+ "disableRange": false,
54
+ "disableStream": false
68
55
  });
69
56
  }
57
+
70
58
  return defaultPreferences;
71
59
  }
72
60
 
73
- var BasePreferences = function () {
74
- function BasePreferences() {
75
- var _this = this;
76
-
77
- _classCallCheck(this, BasePreferences);
78
-
61
+ class BasePreferences {
62
+ constructor() {
79
63
  if (this.constructor === BasePreferences) {
80
- throw new Error('Cannot initialize BasePreferences.');
64
+ throw new Error("Cannot initialize BasePreferences.");
81
65
  }
66
+
82
67
  this.prefs = null;
83
- this._initializedPromise = getDefaultPreferences().then(function (defaults) {
84
- Object.defineProperty(_this, 'defaults', {
68
+ this._initializedPromise = getDefaultPreferences().then(defaults => {
69
+ Object.defineProperty(this, "defaults", {
85
70
  value: Object.freeze(defaults),
86
71
  writable: false,
87
72
  enumerable: true,
88
73
  configurable: false
89
74
  });
90
- _this.prefs = Object.assign(Object.create(null), defaults);
91
- return _this._readFromStorage(defaults);
92
- }).then(function (prefs) {
75
+ this.prefs = Object.assign(Object.create(null), defaults);
76
+ return this._readFromStorage(defaults);
77
+ }).then(prefs => {
93
78
  if (!prefs) {
94
79
  return;
95
80
  }
96
- for (var name in prefs) {
97
- var defaultValue = _this.defaults[name],
98
- prefValue = prefs[name];
99
- if (defaultValue === undefined || (typeof prefValue === "undefined" ? "undefined" : _typeof(prefValue)) !== (typeof defaultValue === "undefined" ? "undefined" : _typeof(defaultValue))) {
81
+
82
+ for (const name in prefs) {
83
+ const defaultValue = this.defaults[name],
84
+ prefValue = prefs[name];
85
+
86
+ if (defaultValue === undefined || typeof prefValue !== typeof defaultValue) {
100
87
  continue;
101
88
  }
102
- _this.prefs[name] = prefValue;
89
+
90
+ this.prefs[name] = prefValue;
103
91
  }
104
92
  });
105
93
  }
106
94
 
107
- _createClass(BasePreferences, [{
108
- key: "_writeToStorage",
109
- value: function () {
110
- var _ref = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee(prefObj) {
111
- return _regenerator2.default.wrap(function _callee$(_context) {
112
- while (1) {
113
- switch (_context.prev = _context.next) {
114
- case 0:
115
- throw new Error('Not implemented: _writeToStorage');
116
-
117
- case 1:
118
- case "end":
119
- return _context.stop();
120
- }
121
- }
122
- }, _callee, this);
123
- }));
124
-
125
- function _writeToStorage(_x) {
126
- return _ref.apply(this, arguments);
127
- }
128
-
129
- return _writeToStorage;
130
- }()
131
- }, {
132
- key: "_readFromStorage",
133
- value: function () {
134
- var _ref2 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee2(prefObj) {
135
- return _regenerator2.default.wrap(function _callee2$(_context2) {
136
- while (1) {
137
- switch (_context2.prev = _context2.next) {
138
- case 0:
139
- throw new Error('Not implemented: _readFromStorage');
95
+ async _writeToStorage(prefObj) {
96
+ throw new Error("Not implemented: _writeToStorage");
97
+ }
140
98
 
141
- case 1:
142
- case "end":
143
- return _context2.stop();
144
- }
145
- }
146
- }, _callee2, this);
147
- }));
99
+ async _readFromStorage(prefObj) {
100
+ throw new Error("Not implemented: _readFromStorage");
101
+ }
148
102
 
149
- function _readFromStorage(_x2) {
150
- return _ref2.apply(this, arguments);
151
- }
103
+ async reset() {
104
+ await this._initializedPromise;
105
+ this.prefs = Object.assign(Object.create(null), this.defaults);
106
+ return this._writeToStorage(this.defaults);
107
+ }
152
108
 
153
- return _readFromStorage;
154
- }()
155
- }, {
156
- key: "reset",
157
- value: function () {
158
- var _ref3 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee3() {
159
- return _regenerator2.default.wrap(function _callee3$(_context3) {
160
- while (1) {
161
- switch (_context3.prev = _context3.next) {
162
- case 0:
163
- _context3.next = 2;
164
- return this._initializedPromise;
109
+ async set(name, value) {
110
+ await this._initializedPromise;
111
+ const defaultValue = this.defaults[name];
165
112
 
166
- case 2:
167
- this.prefs = Object.assign(Object.create(null), this.defaults);
168
- return _context3.abrupt("return", this._writeToStorage(this.defaults));
113
+ if (defaultValue === undefined) {
114
+ throw new Error(`Set preference: "${name}" is undefined.`);
115
+ } else if (value === undefined) {
116
+ throw new Error("Set preference: no value is specified.");
117
+ }
169
118
 
170
- case 4:
171
- case "end":
172
- return _context3.stop();
173
- }
174
- }
175
- }, _callee3, this);
176
- }));
119
+ const valueType = typeof value;
120
+ const defaultType = typeof defaultValue;
177
121
 
178
- function reset() {
179
- return _ref3.apply(this, arguments);
122
+ if (valueType !== defaultType) {
123
+ if (valueType === "number" && defaultType === "string") {
124
+ value = value.toString();
125
+ } else {
126
+ throw new Error(`Set preference: "${value}" is a ${valueType}, ` + `expected a ${defaultType}.`);
180
127
  }
181
-
182
- return reset;
183
- }()
184
- }, {
185
- key: "set",
186
- value: function () {
187
- var _ref4 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee4(name, value) {
188
- var defaultValue, valueType, defaultType;
189
- return _regenerator2.default.wrap(function _callee4$(_context4) {
190
- while (1) {
191
- switch (_context4.prev = _context4.next) {
192
- case 0:
193
- _context4.next = 2;
194
- return this._initializedPromise;
195
-
196
- case 2:
197
- defaultValue = this.defaults[name];
198
-
199
- if (!(defaultValue === undefined)) {
200
- _context4.next = 7;
201
- break;
202
- }
203
-
204
- throw new Error("Set preference: \"" + name + "\" is undefined.");
205
-
206
- case 7:
207
- if (!(value === undefined)) {
208
- _context4.next = 9;
209
- break;
210
- }
211
-
212
- throw new Error('Set preference: no value is specified.');
213
-
214
- case 9:
215
- valueType = typeof value === "undefined" ? "undefined" : _typeof(value);
216
- defaultType = typeof defaultValue === "undefined" ? "undefined" : _typeof(defaultValue);
217
-
218
- if (!(valueType !== defaultType)) {
219
- _context4.next = 19;
220
- break;
221
- }
222
-
223
- if (!(valueType === 'number' && defaultType === 'string')) {
224
- _context4.next = 16;
225
- break;
226
- }
227
-
228
- value = value.toString();
229
- _context4.next = 17;
230
- break;
231
-
232
- case 16:
233
- throw new Error("Set preference: \"" + value + "\" is a " + valueType + ", " + ("expected a " + defaultType + "."));
234
-
235
- case 17:
236
- _context4.next = 21;
237
- break;
238
-
239
- case 19:
240
- if (!(valueType === 'number' && !Number.isInteger(value))) {
241
- _context4.next = 21;
242
- break;
243
- }
244
-
245
- throw new Error("Set preference: \"" + value + "\" must be an integer.");
246
-
247
- case 21:
248
- this.prefs[name] = value;
249
- return _context4.abrupt("return", this._writeToStorage(this.prefs));
250
-
251
- case 23:
252
- case "end":
253
- return _context4.stop();
254
- }
255
- }
256
- }, _callee4, this);
257
- }));
258
-
259
- function set(_x3, _x4) {
260
- return _ref4.apply(this, arguments);
128
+ } else {
129
+ if (valueType === "number" && !Number.isInteger(value)) {
130
+ throw new Error(`Set preference: "${value}" must be an integer.`);
261
131
  }
132
+ }
262
133
 
263
- return set;
264
- }()
265
- }, {
266
- key: "get",
267
- value: function () {
268
- var _ref5 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee5(name) {
269
- var defaultValue, prefValue;
270
- return _regenerator2.default.wrap(function _callee5$(_context5) {
271
- while (1) {
272
- switch (_context5.prev = _context5.next) {
273
- case 0:
274
- _context5.next = 2;
275
- return this._initializedPromise;
276
-
277
- case 2:
278
- defaultValue = this.defaults[name];
279
-
280
- if (!(defaultValue === undefined)) {
281
- _context5.next = 7;
282
- break;
283
- }
284
-
285
- throw new Error("Get preference: \"" + name + "\" is undefined.");
286
-
287
- case 7:
288
- prefValue = this.prefs[name];
289
-
290
- if (!(prefValue !== undefined)) {
291
- _context5.next = 10;
292
- break;
293
- }
294
-
295
- return _context5.abrupt("return", prefValue);
134
+ this.prefs[name] = value;
135
+ return this._writeToStorage(this.prefs);
136
+ }
296
137
 
297
- case 10:
298
- return _context5.abrupt("return", defaultValue);
138
+ async get(name) {
139
+ await this._initializedPromise;
140
+ const defaultValue = this.defaults[name];
299
141
 
300
- case 11:
301
- case "end":
302
- return _context5.stop();
303
- }
304
- }
305
- }, _callee5, this);
306
- }));
142
+ if (defaultValue === undefined) {
143
+ throw new Error(`Get preference: "${name}" is undefined.`);
144
+ } else {
145
+ const prefValue = this.prefs[name];
307
146
 
308
- function get(_x5) {
309
- return _ref5.apply(this, arguments);
147
+ if (prefValue !== undefined) {
148
+ return prefValue;
310
149
  }
150
+ }
311
151
 
312
- return get;
313
- }()
314
- }, {
315
- key: "getAll",
316
- value: function () {
317
- var _ref6 = _asyncToGenerator( /*#__PURE__*/_regenerator2.default.mark(function _callee6() {
318
- return _regenerator2.default.wrap(function _callee6$(_context6) {
319
- while (1) {
320
- switch (_context6.prev = _context6.next) {
321
- case 0:
322
- _context6.next = 2;
323
- return this._initializedPromise;
324
-
325
- case 2:
326
- return _context6.abrupt("return", Object.assign(Object.create(null), this.defaults, this.prefs));
327
-
328
- case 3:
329
- case "end":
330
- return _context6.stop();
331
- }
332
- }
333
- }, _callee6, this);
334
- }));
335
-
336
- function getAll() {
337
- return _ref6.apply(this, arguments);
338
- }
152
+ return defaultValue;
153
+ }
339
154
 
340
- return getAll;
341
- }()
342
- }]);
155
+ async getAll() {
156
+ await this._initializedPromise;
157
+ return Object.assign(Object.create(null), this.defaults, this.prefs);
158
+ }
343
159
 
344
- return BasePreferences;
345
- }();
160
+ }
346
161
 
347
162
  exports.BasePreferences = BasePreferences;