@vaadin-component-factory/vcf-pdf-viewer 4.0.2 → 4.1.0

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.
@@ -1,4 +1,245 @@
1
- import { c as assert, l as createPromiseCapability, t as UnknownErrorException, v as UnexpectedResponseException, M as MissingPDFException, A as AbortException } from './util.js';
1
+ import { F as FeatureTest, p as ImageKind, e as assert, u as unreachable, v as UnknownErrorException, x as UnexpectedResponseException, z as PasswordException, M as MissingPDFException, a as AbortException } from './util.js';
2
+
3
+ /* Copyright 2014 Opera Software ASA
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ *
17
+ *
18
+ * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.
19
+ * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.
20
+ */
21
+
22
+ const SEED = 0xc3d2e1f0;
23
+ // Workaround for missing math precision in JS.
24
+ const MASK_HIGH = 0xffff0000;
25
+ const MASK_LOW = 0xffff;
26
+ class MurmurHash3_64 {
27
+ constructor(seed) {
28
+ this.h1 = seed ? seed & 0xffffffff : SEED;
29
+ this.h2 = seed ? seed & 0xffffffff : SEED;
30
+ }
31
+ update(input) {
32
+ let data, length;
33
+ if (typeof input === "string") {
34
+ data = new Uint8Array(input.length * 2);
35
+ length = 0;
36
+ for (let i = 0, ii = input.length; i < ii; i++) {
37
+ const code = input.charCodeAt(i);
38
+ if (code <= 0xff) {
39
+ data[length++] = code;
40
+ } else {
41
+ data[length++] = code >>> 8;
42
+ data[length++] = code & 0xff;
43
+ }
44
+ }
45
+ } else if (ArrayBuffer.isView(input)) {
46
+ data = input.slice();
47
+ length = data.byteLength;
48
+ } else {
49
+ throw new Error("Invalid data format, must be a string or TypedArray.");
50
+ }
51
+ const blockCounts = length >> 2;
52
+ const tailLength = length - blockCounts * 4;
53
+ // We don't care about endianness here.
54
+ const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);
55
+ let k1 = 0,
56
+ k2 = 0;
57
+ let h1 = this.h1,
58
+ h2 = this.h2;
59
+ const C1 = 0xcc9e2d51,
60
+ C2 = 0x1b873593;
61
+ const C1_LOW = C1 & MASK_LOW,
62
+ C2_LOW = C2 & MASK_LOW;
63
+ for (let i = 0; i < blockCounts; i++) {
64
+ if (i & 1) {
65
+ k1 = dataUint32[i];
66
+ k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
67
+ k1 = k1 << 15 | k1 >>> 17;
68
+ k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
69
+ h1 ^= k1;
70
+ h1 = h1 << 13 | h1 >>> 19;
71
+ h1 = h1 * 5 + 0xe6546b64;
72
+ } else {
73
+ k2 = dataUint32[i];
74
+ k2 = k2 * C1 & MASK_HIGH | k2 * C1_LOW & MASK_LOW;
75
+ k2 = k2 << 15 | k2 >>> 17;
76
+ k2 = k2 * C2 & MASK_HIGH | k2 * C2_LOW & MASK_LOW;
77
+ h2 ^= k2;
78
+ h2 = h2 << 13 | h2 >>> 19;
79
+ h2 = h2 * 5 + 0xe6546b64;
80
+ }
81
+ }
82
+ k1 = 0;
83
+ switch (tailLength) {
84
+ case 3:
85
+ k1 ^= data[blockCounts * 4 + 2] << 16;
86
+ /* falls through */
87
+ case 2:
88
+ k1 ^= data[blockCounts * 4 + 1] << 8;
89
+ /* falls through */
90
+ case 1:
91
+ k1 ^= data[blockCounts * 4];
92
+ /* falls through */
93
+
94
+ k1 = k1 * C1 & MASK_HIGH | k1 * C1_LOW & MASK_LOW;
95
+ k1 = k1 << 15 | k1 >>> 17;
96
+ k1 = k1 * C2 & MASK_HIGH | k1 * C2_LOW & MASK_LOW;
97
+ if (blockCounts & 1) {
98
+ h1 ^= k1;
99
+ } else {
100
+ h2 ^= k1;
101
+ }
102
+ }
103
+ this.h1 = h1;
104
+ this.h2 = h2;
105
+ }
106
+ hexdigest() {
107
+ let h1 = this.h1,
108
+ h2 = this.h2;
109
+ h1 ^= h2 >>> 1;
110
+ h1 = h1 * 0xed558ccd & MASK_HIGH | h1 * 0x8ccd & MASK_LOW;
111
+ h2 = h2 * 0xff51afd7 & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xafd7ed55 & MASK_HIGH) >>> 16;
112
+ h1 ^= h2 >>> 1;
113
+ h1 = h1 * 0x1a85ec53 & MASK_HIGH | h1 * 0xec53 & MASK_LOW;
114
+ h2 = h2 * 0xc4ceb9fe & MASK_HIGH | ((h2 << 16 | h1 >>> 16) * 0xb9fe1a85 & MASK_HIGH) >>> 16;
115
+ h1 ^= h2 >>> 1;
116
+ return (h1 >>> 0).toString(16).padStart(8, "0") + (h2 >>> 0).toString(16).padStart(8, "0");
117
+ }
118
+ }
119
+
120
+ /* Copyright 2022 Mozilla Foundation
121
+ *
122
+ * Licensed under the Apache License, Version 2.0 (the "License");
123
+ * you may not use this file except in compliance with the License.
124
+ * You may obtain a copy of the License at
125
+ *
126
+ * http://www.apache.org/licenses/LICENSE-2.0
127
+ *
128
+ * Unless required by applicable law or agreed to in writing, software
129
+ * distributed under the License is distributed on an "AS IS" BASIS,
130
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
131
+ * See the License for the specific language governing permissions and
132
+ * limitations under the License.
133
+ */
134
+
135
+ function convertToRGBA(params) {
136
+ switch (params.kind) {
137
+ case ImageKind.GRAYSCALE_1BPP:
138
+ return convertBlackAndWhiteToRGBA(params);
139
+ case ImageKind.RGB_24BPP:
140
+ return convertRGBToRGBA(params);
141
+ }
142
+ return null;
143
+ }
144
+ function convertBlackAndWhiteToRGBA({
145
+ src,
146
+ srcPos = 0,
147
+ dest,
148
+ width,
149
+ height,
150
+ nonBlackColor = 0xffffffff,
151
+ inverseDecode = false
152
+ }) {
153
+ const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;
154
+ const [zeroMapping, oneMapping] = inverseDecode ? [nonBlackColor, black] : [black, nonBlackColor];
155
+ const widthInSource = width >> 3;
156
+ const widthRemainder = width & 7;
157
+ const srcLength = src.length;
158
+ dest = new Uint32Array(dest.buffer);
159
+ let destPos = 0;
160
+ for (let i = 0; i < height; i++) {
161
+ for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {
162
+ const elem = srcPos < srcLength ? src[srcPos] : 255;
163
+ dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;
164
+ dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;
165
+ dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;
166
+ dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;
167
+ dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;
168
+ dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;
169
+ dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;
170
+ dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;
171
+ }
172
+ if (widthRemainder === 0) {
173
+ continue;
174
+ }
175
+ const elem = srcPos < srcLength ? src[srcPos++] : 255;
176
+ for (let j = 0; j < widthRemainder; j++) {
177
+ dest[destPos++] = elem & 1 << 7 - j ? oneMapping : zeroMapping;
178
+ }
179
+ }
180
+ return {
181
+ srcPos,
182
+ destPos
183
+ };
184
+ }
185
+ function convertRGBToRGBA({
186
+ src,
187
+ srcPos = 0,
188
+ dest,
189
+ destPos = 0,
190
+ width,
191
+ height
192
+ }) {
193
+ let i = 0;
194
+ const len32 = src.length >> 2;
195
+ const src32 = new Uint32Array(src.buffer, srcPos, len32);
196
+ if (FeatureTest.isLittleEndian) {
197
+ // It's a way faster to do the shuffle manually instead of working
198
+ // component by component with some Uint8 arrays.
199
+ for (; i < len32 - 2; i += 3, destPos += 4) {
200
+ const s1 = src32[i]; // R2B1G1R1
201
+ const s2 = src32[i + 1]; // G3R3B2G2
202
+ const s3 = src32[i + 2]; // B4G4R4B3
203
+
204
+ dest[destPos] = s1 | 0xff000000;
205
+ dest[destPos + 1] = s1 >>> 24 | s2 << 8 | 0xff000000;
206
+ dest[destPos + 2] = s2 >>> 16 | s3 << 16 | 0xff000000;
207
+ dest[destPos + 3] = s3 >>> 8 | 0xff000000;
208
+ }
209
+ for (let j = i * 4, jj = src.length; j < jj; j += 3) {
210
+ dest[destPos++] = src[j] | src[j + 1] << 8 | src[j + 2] << 16 | 0xff000000;
211
+ }
212
+ } else {
213
+ for (; i < len32 - 2; i += 3, destPos += 4) {
214
+ const s1 = src32[i]; // R1G1B1R2
215
+ const s2 = src32[i + 1]; // G2B2R3G3
216
+ const s3 = src32[i + 2]; // B3R4G4B4
217
+
218
+ dest[destPos] = s1 | 0xff;
219
+ dest[destPos + 1] = s1 << 24 | s2 >>> 8 | 0xff;
220
+ dest[destPos + 2] = s2 << 16 | s3 >>> 16 | 0xff;
221
+ dest[destPos + 3] = s3 << 8 | 0xff;
222
+ }
223
+ for (let j = i * 4, jj = src.length; j < jj; j += 3) {
224
+ dest[destPos++] = src[j] << 24 | src[j + 1] << 16 | src[j + 2] << 8 | 0xff;
225
+ }
226
+ }
227
+ return {
228
+ srcPos,
229
+ destPos
230
+ };
231
+ }
232
+ function grayToRGBA(src, dest) {
233
+ if (FeatureTest.isLittleEndian) {
234
+ for (let i = 0, ii = src.length; i < ii; i++) {
235
+ dest[i] = src[i] * 0x10101 | 0xff000000;
236
+ }
237
+ } else {
238
+ for (let i = 0, ii = src.length; i < ii; i++) {
239
+ dest[i] = src[i] * 0x1010100 | 0x000000ff;
240
+ }
241
+ }
242
+ }
2
243
 
3
244
  /* Copyright 2018 Mozilla Foundation
4
245
  *
@@ -14,13 +255,12 @@ import { c as assert, l as createPromiseCapability, t as UnknownErrorException,
14
255
  * See the License for the specific language governing permissions and
15
256
  * limitations under the License.
16
257
  */
258
+
17
259
  const CallbackKind = {
18
- UNKNOWN: 0,
19
260
  DATA: 1,
20
261
  ERROR: 2
21
262
  };
22
263
  const StreamKind = {
23
- UNKNOWN: 0,
24
264
  CANCEL: 1,
25
265
  CANCEL_COMPLETE: 2,
26
266
  CLOSE: 3,
@@ -30,34 +270,25 @@ const StreamKind = {
30
270
  PULL_COMPLETE: 7,
31
271
  START_COMPLETE: 8
32
272
  };
33
-
34
273
  function wrapReason(reason) {
35
- if (typeof PDFJSDev === "undefined" || PDFJSDev.test("!PRODUCTION || TESTING")) {
36
- assert(reason instanceof Error || typeof reason === "object" && reason !== null, 'wrapReason: Expected "reason" to be a (possibly cloned) Error.');
37
- } else {
38
- if (typeof reason !== "object" || reason === null) {
39
- return reason;
40
- }
274
+ if (!(reason instanceof Error || typeof reason === "object" && reason !== null)) {
275
+ unreachable('wrapReason: Expected "reason" to be a (possibly cloned) Error.');
41
276
  }
42
-
43
277
  switch (reason.name) {
44
278
  case "AbortException":
45
279
  return new AbortException(reason.message);
46
-
47
280
  case "MissingPDFException":
48
281
  return new MissingPDFException(reason.message);
49
-
282
+ case "PasswordException":
283
+ return new PasswordException(reason.message, reason.code);
50
284
  case "UnexpectedResponseException":
51
285
  return new UnexpectedResponseException(reason.message, reason.status);
52
-
53
286
  case "UnknownErrorException":
54
287
  return new UnknownErrorException(reason.message, reason.details);
55
-
56
288
  default:
57
289
  return new UnknownErrorException(reason.message, reason.toString());
58
290
  }
59
291
  }
60
-
61
292
  class MessageHandler {
62
293
  constructor(sourceName, targetName, comObj) {
63
294
  this.sourceName = sourceName;
@@ -65,35 +296,26 @@ class MessageHandler {
65
296
  this.comObj = comObj;
66
297
  this.callbackId = 1;
67
298
  this.streamId = 1;
68
- this.postMessageTransfers = true;
69
299
  this.streamSinks = Object.create(null);
70
300
  this.streamControllers = Object.create(null);
71
301
  this.callbackCapabilities = Object.create(null);
72
302
  this.actionHandler = Object.create(null);
73
-
74
303
  this._onComObjOnMessage = event => {
75
304
  const data = event.data;
76
-
77
305
  if (data.targetName !== this.sourceName) {
78
306
  return;
79
307
  }
80
-
81
308
  if (data.stream) {
82
- this._processStreamMessage(data);
83
-
309
+ this.#processStreamMessage(data);
84
310
  return;
85
311
  }
86
-
87
312
  if (data.callback) {
88
313
  const callbackId = data.callbackId;
89
314
  const capability = this.callbackCapabilities[callbackId];
90
-
91
315
  if (!capability) {
92
316
  throw new Error(`Cannot resolve callback ${callbackId}`);
93
317
  }
94
-
95
318
  delete this.callbackCapabilities[callbackId];
96
-
97
319
  if (data.callback === CallbackKind.DATA) {
98
320
  capability.resolve(data.data);
99
321
  } else if (data.callback === CallbackKind.ERROR) {
@@ -101,16 +323,12 @@ class MessageHandler {
101
323
  } else {
102
324
  throw new Error("Unexpected callback case");
103
325
  }
104
-
105
326
  return;
106
327
  }
107
-
108
328
  const action = this.actionHandler[data.action];
109
-
110
329
  if (!action) {
111
330
  throw new Error(`Unknown action from worker: ${data.action}`);
112
331
  }
113
-
114
332
  if (data.callbackId) {
115
333
  const cbSourceName = this.sourceName;
116
334
  const cbTargetName = data.sourceName;
@@ -135,48 +353,40 @@ class MessageHandler {
135
353
  });
136
354
  return;
137
355
  }
138
-
139
356
  if (data.streamId) {
140
- this._createStreamSink(data);
141
-
357
+ this.#createStreamSink(data);
142
358
  return;
143
359
  }
144
-
145
360
  action(data.data);
146
361
  };
147
-
148
362
  comObj.addEventListener("message", this._onComObjOnMessage);
149
363
  }
150
-
151
364
  on(actionName, handler) {
152
- if (typeof PDFJSDev === "undefined" || PDFJSDev.test("!PRODUCTION || TESTING")) {
365
+ if (typeof PDFJSDev === "undefined" || PDFJSDev.test("TESTING")) {
153
366
  assert(typeof handler === "function", 'MessageHandler.on: Expected "handler" to be a function.');
154
367
  }
155
-
156
368
  const ah = this.actionHandler;
157
-
158
369
  if (ah[actionName]) {
159
370
  throw new Error(`There is already an actionName called "${actionName}"`);
160
371
  }
161
-
162
372
  ah[actionName] = handler;
163
373
  }
374
+
164
375
  /**
165
376
  * Sends a message to the comObj to invoke the action with the supplied data.
166
377
  * @param {string} actionName - Action to call.
167
378
  * @param {JSON} data - JSON data to send.
168
379
  * @param {Array} [transfers] - List of transfers/ArrayBuffers.
169
380
  */
170
-
171
-
172
381
  send(actionName, data, transfers) {
173
- this._postMessage({
382
+ this.comObj.postMessage({
174
383
  sourceName: this.sourceName,
175
384
  targetName: this.targetName,
176
385
  action: actionName,
177
386
  data
178
387
  }, transfers);
179
388
  }
389
+
180
390
  /**
181
391
  * Sends a message to the comObj to invoke the action with the supplied data.
182
392
  * Expects that the other side will callback with the response.
@@ -185,15 +395,12 @@ class MessageHandler {
185
395
  * @param {Array} [transfers] - List of transfers/ArrayBuffers.
186
396
  * @returns {Promise} Promise to be resolved with response data.
187
397
  */
188
-
189
-
190
398
  sendWithPromise(actionName, data, transfers) {
191
399
  const callbackId = this.callbackId++;
192
- const capability = createPromiseCapability();
400
+ const capability = Promise.withResolvers();
193
401
  this.callbackCapabilities[callbackId] = capability;
194
-
195
402
  try {
196
- this._postMessage({
403
+ this.comObj.postMessage({
197
404
  sourceName: this.sourceName,
198
405
  targetName: this.targetName,
199
406
  action: actionName,
@@ -203,9 +410,9 @@ class MessageHandler {
203
410
  } catch (ex) {
204
411
  capability.reject(ex);
205
412
  }
206
-
207
413
  return capability.promise;
208
414
  }
415
+
209
416
  /**
210
417
  * Sends a message to the comObj to invoke the action with the supplied data.
211
418
  * Expect that the other side will callback to signal 'start_complete'.
@@ -216,16 +423,14 @@ class MessageHandler {
216
423
  * @param {Array} [transfers] - List of transfers/ArrayBuffers.
217
424
  * @returns {ReadableStream} ReadableStream to read data in chunks.
218
425
  */
219
-
220
-
221
426
  sendWithStream(actionName, data, queueingStrategy, transfers) {
222
- const streamId = this.streamId++;
223
- const sourceName = this.sourceName;
224
- const targetName = this.targetName;
225
- const comObj = this.comObj;
427
+ const streamId = this.streamId++,
428
+ sourceName = this.sourceName,
429
+ targetName = this.targetName,
430
+ comObj = this.comObj;
226
431
  return new ReadableStream({
227
432
  start: controller => {
228
- const startCapability = createPromiseCapability();
433
+ const startCapability = Promise.withResolvers();
229
434
  this.streamControllers[streamId] = {
230
435
  controller,
231
436
  startCall: startCapability,
@@ -233,21 +438,19 @@ class MessageHandler {
233
438
  cancelCall: null,
234
439
  isClosed: false
235
440
  };
236
-
237
- this._postMessage({
441
+ comObj.postMessage({
238
442
  sourceName,
239
443
  targetName,
240
444
  action: actionName,
241
445
  streamId,
242
446
  data,
243
447
  desiredSize: controller.desiredSize
244
- }, transfers); // Return Promise for Async process, to signal success/failure.
245
-
246
-
448
+ }, transfers);
449
+ // Return Promise for Async process, to signal success/failure.
247
450
  return startCapability.promise;
248
451
  },
249
452
  pull: controller => {
250
- const pullCapability = createPromiseCapability();
453
+ const pullCapability = Promise.withResolvers();
251
454
  this.streamControllers[streamId].pullCall = pullCapability;
252
455
  comObj.postMessage({
253
456
  sourceName,
@@ -255,14 +458,14 @@ class MessageHandler {
255
458
  stream: StreamKind.PULL,
256
459
  streamId,
257
460
  desiredSize: controller.desiredSize
258
- }); // Returning Promise will not call "pull"
461
+ });
462
+ // Returning Promise will not call "pull"
259
463
  // again until current pull is resolved.
260
-
261
464
  return pullCapability.promise;
262
465
  },
263
466
  cancel: reason => {
264
467
  assert(reason instanceof Error, "cancel must have a valid reason");
265
- const cancelCapability = createPromiseCapability();
468
+ const cancelCapability = Promise.withResolvers();
266
469
  this.streamControllers[streamId].cancelCall = cancelCapability;
267
470
  this.streamControllers[streamId].isClosed = true;
268
471
  comObj.postMessage({
@@ -271,41 +474,34 @@ class MessageHandler {
271
474
  stream: StreamKind.CANCEL,
272
475
  streamId,
273
476
  reason: wrapReason(reason)
274
- }); // Return Promise to signal success or failure.
275
-
477
+ });
478
+ // Return Promise to signal success or failure.
276
479
  return cancelCapability.promise;
277
480
  }
278
481
  }, queueingStrategy);
279
482
  }
280
- /**
281
- * @private
282
- */
283
-
284
-
285
- _createStreamSink(data) {
286
- const self = this;
287
- const action = this.actionHandler[data.action];
288
- const streamId = data.streamId;
289
- const sourceName = this.sourceName;
290
- const targetName = data.sourceName;
291
- const comObj = this.comObj;
483
+ #createStreamSink(data) {
484
+ const streamId = data.streamId,
485
+ sourceName = this.sourceName,
486
+ targetName = data.sourceName,
487
+ comObj = this.comObj;
488
+ const self = this,
489
+ action = this.actionHandler[data.action];
292
490
  const streamSink = {
293
491
  enqueue(chunk, size = 1, transfers) {
294
492
  if (this.isCancelled) {
295
493
  return;
296
494
  }
297
-
298
495
  const lastDesiredSize = this.desiredSize;
299
- this.desiredSize -= size; // Enqueue decreases the desiredSize property of sink,
496
+ this.desiredSize -= size;
497
+ // Enqueue decreases the desiredSize property of sink,
300
498
  // so when it changes from positive to negative,
301
499
  // set ready as unresolved promise.
302
-
303
500
  if (lastDesiredSize > 0 && this.desiredSize <= 0) {
304
- this.sinkCapability = createPromiseCapability();
501
+ this.sinkCapability = Promise.withResolvers();
305
502
  this.ready = this.sinkCapability.promise;
306
503
  }
307
-
308
- self._postMessage({
504
+ comObj.postMessage({
309
505
  sourceName,
310
506
  targetName,
311
507
  stream: StreamKind.ENQUEUE,
@@ -313,12 +509,10 @@ class MessageHandler {
313
509
  chunk
314
510
  }, transfers);
315
511
  },
316
-
317
512
  close() {
318
513
  if (this.isCancelled) {
319
514
  return;
320
515
  }
321
-
322
516
  this.isCancelled = true;
323
517
  comObj.postMessage({
324
518
  sourceName,
@@ -328,14 +522,11 @@ class MessageHandler {
328
522
  });
329
523
  delete self.streamSinks[streamId];
330
524
  },
331
-
332
525
  error(reason) {
333
526
  assert(reason instanceof Error, "error must have a valid reason");
334
-
335
527
  if (this.isCancelled) {
336
528
  return;
337
529
  }
338
-
339
530
  this.isCancelled = true;
340
531
  comObj.postMessage({
341
532
  sourceName,
@@ -345,8 +536,7 @@ class MessageHandler {
345
536
  reason: wrapReason(reason)
346
537
  });
347
538
  },
348
-
349
- sinkCapability: createPromiseCapability(),
539
+ sinkCapability: Promise.withResolvers(),
350
540
  onPull: null,
351
541
  onCancel: null,
352
542
  isCancelled: false,
@@ -376,39 +566,31 @@ class MessageHandler {
376
566
  });
377
567
  });
378
568
  }
379
- /**
380
- * @private
381
- */
382
-
383
-
384
- _processStreamMessage(data) {
385
- const streamId = data.streamId;
386
- const sourceName = this.sourceName;
387
- const targetName = data.sourceName;
388
- const comObj = this.comObj;
389
-
569
+ #processStreamMessage(data) {
570
+ const streamId = data.streamId,
571
+ sourceName = this.sourceName,
572
+ targetName = data.sourceName,
573
+ comObj = this.comObj;
574
+ const streamController = this.streamControllers[streamId],
575
+ streamSink = this.streamSinks[streamId];
390
576
  switch (data.stream) {
391
577
  case StreamKind.START_COMPLETE:
392
578
  if (data.success) {
393
- this.streamControllers[streamId].startCall.resolve();
579
+ streamController.startCall.resolve();
394
580
  } else {
395
- this.streamControllers[streamId].startCall.reject(wrapReason(data.reason));
581
+ streamController.startCall.reject(wrapReason(data.reason));
396
582
  }
397
-
398
583
  break;
399
-
400
584
  case StreamKind.PULL_COMPLETE:
401
585
  if (data.success) {
402
- this.streamControllers[streamId].pullCall.resolve();
586
+ streamController.pullCall.resolve();
403
587
  } else {
404
- this.streamControllers[streamId].pullCall.reject(wrapReason(data.reason));
588
+ streamController.pullCall.reject(wrapReason(data.reason));
405
589
  }
406
-
407
590
  break;
408
-
409
591
  case StreamKind.PULL:
410
592
  // Ignore any pull after close is called.
411
- if (!this.streamSinks[streamId]) {
593
+ if (!streamSink) {
412
594
  comObj.postMessage({
413
595
  sourceName,
414
596
  targetName,
@@ -417,22 +599,17 @@ class MessageHandler {
417
599
  success: true
418
600
  });
419
601
  break;
420
- } // Pull increases the desiredSize property of sink,
421
- // so when it changes from negative to positive,
422
- // set ready property as resolved promise.
423
-
424
-
425
- if (this.streamSinks[streamId].desiredSize <= 0 && data.desiredSize > 0) {
426
- this.streamSinks[streamId].sinkCapability.resolve();
427
- } // Reset desiredSize property of sink on every pull.
428
-
429
-
430
- this.streamSinks[streamId].desiredSize = data.desiredSize;
431
- const {
432
- onPull
433
- } = this.streamSinks[data.streamId];
602
+ }
603
+ // Pull increases the desiredSize property of sink, so when it changes
604
+ // from negative to positive, set ready property as resolved promise.
605
+ if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {
606
+ streamSink.sinkCapability.resolve();
607
+ }
608
+ // Reset desiredSize property of sink on every pull.
609
+ streamSink.desiredSize = data.desiredSize;
434
610
  new Promise(function (resolve) {
435
- resolve(onPull && onPull());
611
+ var _streamSink$onPull;
612
+ resolve((_streamSink$onPull = streamSink.onPull) === null || _streamSink$onPull === void 0 ? void 0 : _streamSink$onPull.call(streamSink));
436
613
  }).then(function () {
437
614
  comObj.postMessage({
438
615
  sourceName,
@@ -451,60 +628,42 @@ class MessageHandler {
451
628
  });
452
629
  });
453
630
  break;
454
-
455
631
  case StreamKind.ENQUEUE:
456
- assert(this.streamControllers[streamId], "enqueue should have stream controller");
457
-
458
- if (this.streamControllers[streamId].isClosed) {
632
+ assert(streamController, "enqueue should have stream controller");
633
+ if (streamController.isClosed) {
459
634
  break;
460
635
  }
461
-
462
- this.streamControllers[streamId].controller.enqueue(data.chunk);
636
+ streamController.controller.enqueue(data.chunk);
463
637
  break;
464
-
465
638
  case StreamKind.CLOSE:
466
- assert(this.streamControllers[streamId], "close should have stream controller");
467
-
468
- if (this.streamControllers[streamId].isClosed) {
639
+ assert(streamController, "close should have stream controller");
640
+ if (streamController.isClosed) {
469
641
  break;
470
642
  }
471
-
472
- this.streamControllers[streamId].isClosed = true;
473
- this.streamControllers[streamId].controller.close();
474
-
475
- this._deleteStreamController(streamId);
476
-
643
+ streamController.isClosed = true;
644
+ streamController.controller.close();
645
+ this.#deleteStreamController(streamController, streamId);
477
646
  break;
478
-
479
647
  case StreamKind.ERROR:
480
- assert(this.streamControllers[streamId], "error should have stream controller");
481
- this.streamControllers[streamId].controller.error(wrapReason(data.reason));
482
-
483
- this._deleteStreamController(streamId);
484
-
648
+ assert(streamController, "error should have stream controller");
649
+ streamController.controller.error(wrapReason(data.reason));
650
+ this.#deleteStreamController(streamController, streamId);
485
651
  break;
486
-
487
652
  case StreamKind.CANCEL_COMPLETE:
488
653
  if (data.success) {
489
- this.streamControllers[streamId].cancelCall.resolve();
654
+ streamController.cancelCall.resolve();
490
655
  } else {
491
- this.streamControllers[streamId].cancelCall.reject(wrapReason(data.reason));
656
+ streamController.cancelCall.reject(wrapReason(data.reason));
492
657
  }
493
-
494
- this._deleteStreamController(streamId);
495
-
658
+ this.#deleteStreamController(streamController, streamId);
496
659
  break;
497
-
498
660
  case StreamKind.CANCEL:
499
- if (!this.streamSinks[streamId]) {
661
+ if (!streamSink) {
500
662
  break;
501
663
  }
502
-
503
- const {
504
- onCancel
505
- } = this.streamSinks[data.streamId];
506
664
  new Promise(function (resolve) {
507
- resolve(onCancel && onCancel(wrapReason(data.reason)));
665
+ var _streamSink$onCancel;
666
+ resolve((_streamSink$onCancel = streamSink.onCancel) === null || _streamSink$onCancel === void 0 ? void 0 : _streamSink$onCancel.call(streamSink, wrapReason(data.reason)));
508
667
  }).then(function () {
509
668
  comObj.postMessage({
510
669
  sourceName,
@@ -522,48 +681,24 @@ class MessageHandler {
522
681
  reason: wrapReason(reason)
523
682
  });
524
683
  });
525
- this.streamSinks[streamId].sinkCapability.reject(wrapReason(data.reason));
526
- this.streamSinks[streamId].isCancelled = true;
684
+ streamSink.sinkCapability.reject(wrapReason(data.reason));
685
+ streamSink.isCancelled = true;
527
686
  delete this.streamSinks[streamId];
528
687
  break;
529
-
530
688
  default:
531
689
  throw new Error("Unexpected stream case");
532
690
  }
533
691
  }
534
- /**
535
- * @private
536
- */
537
-
538
-
539
- async _deleteStreamController(streamId) {
692
+ async #deleteStreamController(streamController, streamId) {
693
+ var _streamController$sta, _streamController$pul, _streamController$can;
540
694
  // Delete the `streamController` only when the start, pull, and cancel
541
695
  // capabilities have settled, to prevent `TypeError`s.
542
- await Promise.allSettled([this.streamControllers[streamId].startCall, this.streamControllers[streamId].pullCall, this.streamControllers[streamId].cancelCall].map(function (capability) {
543
- return capability && capability.promise;
544
- }));
696
+ await Promise.allSettled([(_streamController$sta = streamController.startCall) === null || _streamController$sta === void 0 ? void 0 : _streamController$sta.promise, (_streamController$pul = streamController.pullCall) === null || _streamController$pul === void 0 ? void 0 : _streamController$pul.promise, (_streamController$can = streamController.cancelCall) === null || _streamController$can === void 0 ? void 0 : _streamController$can.promise]);
545
697
  delete this.streamControllers[streamId];
546
698
  }
547
- /**
548
- * Sends raw message to the comObj.
549
- * @param {Object} message - Raw message.
550
- * @param transfers List of transfers/ArrayBuffers, or undefined.
551
- * @private
552
- */
553
-
554
-
555
- _postMessage(message, transfers) {
556
- if (transfers && this.postMessageTransfers) {
557
- this.comObj.postMessage(message, transfers);
558
- } else {
559
- this.comObj.postMessage(message);
560
- }
561
- }
562
-
563
699
  destroy() {
564
700
  this.comObj.removeEventListener("message", this._onComObjOnMessage);
565
701
  }
566
-
567
702
  }
568
703
 
569
- export { MessageHandler as M };
704
+ export { MurmurHash3_64 as M, MessageHandler as a, convertToRGBA as b, convertBlackAndWhiteToRGBA as c, grayToRGBA as g };