@novnc/novnc 1.3.0 → 1.4.0-beta

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.
Files changed (64) hide show
  1. package/AUTHORS +2 -2
  2. package/LICENSE.txt +1 -1
  3. package/README.md +23 -7
  4. package/core/decoders/jpeg.js +141 -0
  5. package/core/decoders/raw.js +1 -1
  6. package/core/decoders/zrle.js +185 -0
  7. package/core/des.js +1 -1
  8. package/core/display.js +12 -0
  9. package/core/encodings.js +4 -0
  10. package/core/input/keyboard.js +10 -0
  11. package/core/ra2.js +567 -0
  12. package/core/rfb.js +469 -84
  13. package/core/util/browser.js +56 -7
  14. package/core/util/cursor.js +4 -0
  15. package/core/util/md5.js +79 -0
  16. package/docs/API.md +318 -157
  17. package/lib/base64.js +20 -34
  18. package/lib/decoders/copyrect.js +5 -12
  19. package/lib/decoders/hextile.js +17 -47
  20. package/lib/decoders/jpeg.js +149 -0
  21. package/lib/decoders/raw.js +10 -23
  22. package/lib/decoders/rre.js +5 -16
  23. package/lib/decoders/tight.js +13 -79
  24. package/lib/decoders/tightpng.js +8 -28
  25. package/lib/decoders/zrle.js +188 -0
  26. package/lib/deflator.js +9 -23
  27. package/lib/des.js +24 -37
  28. package/lib/display.js +62 -108
  29. package/lib/encodings.js +7 -8
  30. package/lib/inflator.js +6 -19
  31. package/lib/input/domkeytable.js +77 -48
  32. package/lib/input/fixedkeys.js +8 -3
  33. package/lib/input/gesturehandler.js +86 -153
  34. package/lib/input/keyboard.js +62 -91
  35. package/lib/input/keysym.js +14 -270
  36. package/lib/input/keysymdef.js +5 -7
  37. package/lib/input/util.js +43 -85
  38. package/lib/input/vkeys.js +0 -3
  39. package/lib/input/xtscancodes.js +1 -168
  40. package/lib/ra2.js +1005 -0
  41. package/lib/rfb.js +795 -923
  42. package/lib/util/browser.js +66 -29
  43. package/lib/util/cursor.js +29 -66
  44. package/lib/util/element.js +3 -5
  45. package/lib/util/events.js +23 -30
  46. package/lib/util/eventtarget.js +5 -14
  47. package/lib/util/int.js +1 -2
  48. package/lib/util/logging.js +1 -19
  49. package/lib/util/md5.js +77 -0
  50. package/lib/util/strings.js +3 -5
  51. package/lib/vendor/pako/lib/utils/common.js +8 -17
  52. package/lib/vendor/pako/lib/zlib/adler32.js +3 -7
  53. package/lib/vendor/pako/lib/zlib/constants.js +2 -5
  54. package/lib/vendor/pako/lib/zlib/crc32.js +5 -12
  55. package/lib/vendor/pako/lib/zlib/deflate.js +213 -618
  56. package/lib/vendor/pako/lib/zlib/gzheader.js +1 -13
  57. package/lib/vendor/pako/lib/zlib/inffast.js +60 -176
  58. package/lib/vendor/pako/lib/zlib/inflate.js +398 -888
  59. package/lib/vendor/pako/lib/zlib/inftrees.js +63 -169
  60. package/lib/vendor/pako/lib/zlib/messages.js +1 -11
  61. package/lib/vendor/pako/lib/zlib/trees.js +246 -588
  62. package/lib/vendor/pako/lib/zlib/zstream.js +2 -18
  63. package/lib/websock.js +37 -88
  64. package/package.json +32 -35
package/lib/deflator.js CHANGED
@@ -4,30 +4,24 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
-
8
7
  var _deflate2 = require("../lib/vendor/pako/lib/zlib/deflate.js");
9
-
10
8
  var _zstream = _interopRequireDefault(require("../lib/vendor/pako/lib/zlib/zstream.js"));
11
-
12
9
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
13
-
10
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
14
11
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
15
-
16
- 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); } }
17
-
18
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
19
-
12
+ 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, _toPropertyKey(descriptor.key), descriptor); } }
13
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
14
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
15
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
20
16
  var Deflator = /*#__PURE__*/function () {
21
17
  function Deflator() {
22
18
  _classCallCheck(this, Deflator);
23
-
24
19
  this.strm = new _zstream["default"]();
25
20
  this.chunkSize = 1024 * 10 * 10;
26
21
  this.outputBuffer = new Uint8Array(this.chunkSize);
27
22
  this.windowBits = 5;
28
23
  (0, _deflate2.deflateInit)(this.strm, this.windowBits);
29
24
  }
30
-
31
25
  _createClass(Deflator, [{
32
26
  key: "deflate",
33
27
  value: function deflate(inData) {
@@ -42,16 +36,14 @@ var Deflator = /*#__PURE__*/function () {
42
36
 
43
37
  var lastRet = (0, _deflate2.deflate)(this.strm, _deflate2.Z_FULL_FLUSH);
44
38
  var outData = new Uint8Array(this.strm.output.buffer, 0, this.strm.next_out);
45
-
46
39
  if (lastRet < 0) {
47
40
  throw new Error("zlib deflate failed");
48
41
  }
49
-
50
42
  if (this.strm.avail_in > 0) {
51
43
  // Read chunks until done
44
+
52
45
  var chunks = [outData];
53
46
  var totalLen = outData.length;
54
-
55
47
  do {
56
48
  /* eslint-disable camelcase */
57
49
  this.strm.output = new Uint8Array(this.chunkSize);
@@ -60,30 +52,26 @@ var Deflator = /*#__PURE__*/function () {
60
52
  /* eslint-enable camelcase */
61
53
 
62
54
  lastRet = (0, _deflate2.deflate)(this.strm, _deflate2.Z_FULL_FLUSH);
63
-
64
55
  if (lastRet < 0) {
65
56
  throw new Error("zlib deflate failed");
66
57
  }
67
-
68
58
  var chunk = new Uint8Array(this.strm.output.buffer, 0, this.strm.next_out);
69
59
  totalLen += chunk.length;
70
60
  chunks.push(chunk);
71
- } while (this.strm.avail_in > 0); // Combine chunks into a single data
61
+ } while (this.strm.avail_in > 0);
72
62
 
63
+ // Combine chunks into a single data
73
64
 
74
65
  var newData = new Uint8Array(totalLen);
75
66
  var offset = 0;
76
-
77
67
  for (var i = 0; i < chunks.length; i++) {
78
68
  newData.set(chunks[i], offset);
79
69
  offset += chunks[i].length;
80
70
  }
81
-
82
71
  outData = newData;
83
72
  }
84
- /* eslint-disable camelcase */
85
-
86
73
 
74
+ /* eslint-disable camelcase */
87
75
  this.strm.input = null;
88
76
  this.strm.avail_in = 0;
89
77
  this.strm.next_in = 0;
@@ -92,8 +80,6 @@ var Deflator = /*#__PURE__*/function () {
92
80
  return outData;
93
81
  }
94
82
  }]);
95
-
96
83
  return Deflator;
97
84
  }();
98
-
99
85
  exports["default"] = Deflator;
package/lib/des.js CHANGED
@@ -4,13 +4,12 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports["default"] = void 0;
7
-
7
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
8
8
  function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
9
-
10
- 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); } }
11
-
12
- function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
13
-
9
+ 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, _toPropertyKey(descriptor.key), descriptor); } }
10
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
11
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
12
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
14
13
  /*
15
14
  * Ported from Flashlight VNC ActionScript implementation:
16
15
  * http://www.wizhelp.com/flashlight-vnc/
@@ -89,9 +88,10 @@ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _d
89
88
  */
90
89
 
91
90
  /* eslint-disable comma-spacing */
91
+
92
92
  // Tables, permutations, S-boxes, etc.
93
93
  var PC2 = [13, 16, 10, 23, 0, 4, 2, 27, 14, 5, 20, 9, 22, 18, 11, 3, 25, 7, 15, 6, 26, 19, 12, 1, 40, 51, 30, 36, 46, 54, 29, 39, 50, 44, 32, 47, 43, 48, 38, 55, 33, 52, 45, 41, 49, 35, 28, 31],
94
- totrot = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];
94
+ totrot = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28];
95
95
  var z = 0x0;
96
96
  var a, b, c, d, e, f;
97
97
  a = 1 << 16;
@@ -150,51 +150,43 @@ d = 1 << 6;
150
150
  e = 1 << 12;
151
151
  f = d | e;
152
152
  var SP8 = [b | f, z | e, a | z, c | f, b | z, b | f, z | d, b | z, a | d, c | z, c | f, a | e, c | e, a | f, z | e, z | d, c | z, b | d, b | e, z | f, a | e, a | d, c | d, c | e, z | f, z | z, z | z, c | d, b | d, b | e, a | f, a | z, a | f, a | z, c | e, z | e, z | d, c | d, z | e, a | f, b | e, z | d, b | d, c | z, c | d, b | z, a | z, b | f, z | z, c | f, a | d, b | d, c | z, b | e, b | f, z | z, c | f, a | e, a | e, z | f, z | f, a | d, b | z, c | e];
153
- /* eslint-enable comma-spacing */
154
153
 
154
+ /* eslint-enable comma-spacing */
155
155
  var DES = /*#__PURE__*/function () {
156
156
  function DES(password) {
157
157
  _classCallCheck(this, DES);
158
+ this.keys = [];
158
159
 
159
- this.keys = []; // Set the key.
160
-
160
+ // Set the key.
161
161
  var pc1m = [],
162
- pcr = [],
163
- kn = [];
164
-
162
+ pcr = [],
163
+ kn = [];
165
164
  for (var j = 0, l = 56; j < 56; ++j, l -= 8) {
166
165
  l += l < -5 ? 65 : l < -3 ? 31 : l < -1 ? 63 : l === 27 ? 35 : 0; // PC1
167
-
168
166
  var m = l & 0x7;
169
167
  pc1m[j] = (password[l >>> 3] & 1 << m) !== 0 ? 1 : 0;
170
168
  }
171
-
172
169
  for (var i = 0; i < 16; ++i) {
173
170
  var _m = i << 1;
174
-
175
171
  var n = _m + 1;
176
172
  kn[_m] = kn[n] = 0;
177
-
178
173
  for (var o = 28; o < 59; o += 28) {
179
174
  for (var _j = o - 28; _j < o; ++_j) {
180
175
  var _l = _j + totrot[i];
181
-
182
176
  pcr[_j] = _l < o ? pc1m[_l] : pc1m[_l - 28];
183
177
  }
184
178
  }
185
-
186
179
  for (var _j2 = 0; _j2 < 24; ++_j2) {
187
180
  if (pcr[PC2[_j2]] !== 0) {
188
181
  kn[_m] |= 1 << 23 - _j2;
189
182
  }
190
-
191
183
  if (pcr[PC2[_j2 + 24]] !== 0) {
192
184
  kn[n] |= 1 << 23 - _j2;
193
185
  }
194
186
  }
195
- } // cookey
196
-
187
+ }
197
188
 
189
+ // cookey
198
190
  for (var _i = 0, rawi = 0, KnLi = 0; _i < 16; ++_i) {
199
191
  var raw0 = kn[rawi++];
200
192
  var raw1 = kn[rawi++];
@@ -209,19 +201,19 @@ var DES = /*#__PURE__*/function () {
209
201
  this.keys[KnLi] |= raw1 & 0x0000003f;
210
202
  ++KnLi;
211
203
  }
212
- } // Encrypt 8 bytes of text
213
-
204
+ }
214
205
 
206
+ // Encrypt 8 bytes of text
215
207
  _createClass(DES, [{
216
208
  key: "enc8",
217
209
  value: function enc8(text) {
218
210
  var b = text.slice();
219
211
  var i = 0,
220
- l,
221
- r,
222
- x; // left, right, accumulator
223
- // Squash 8 bytes to 2 ints
212
+ l,
213
+ r,
214
+ x; // left, right, accumulator
224
215
 
216
+ // Squash 8 bytes to 2 ints
225
217
  l = b[i++] << 24 | b[i++] << 16 | b[i++] << 8 | b[i++];
226
218
  r = b[i++] << 24 | b[i++] << 16 | b[i++] << 8 | b[i++];
227
219
  x = (l >>> 4 ^ r) & 0x0f0f0f0f;
@@ -241,7 +233,6 @@ var DES = /*#__PURE__*/function () {
241
233
  l ^= x;
242
234
  r ^= x;
243
235
  l = l << 1 | l >>> 31 & 1;
244
-
245
236
  for (var _i2 = 0, keysi = 0; _i2 < 8; ++_i2) {
246
237
  x = r << 28 | r >>> 4;
247
238
  x ^= this.keys[keysi++];
@@ -268,7 +259,6 @@ var DES = /*#__PURE__*/function () {
268
259
  fval |= SP2[x >>> 24 & 0x3f];
269
260
  r ^= fval;
270
261
  }
271
-
272
262
  r = r << 31 | r >>> 1;
273
263
  x = (l ^ r) & 0xaaaaaaaa;
274
264
  l ^= x;
@@ -285,30 +275,27 @@ var DES = /*#__PURE__*/function () {
285
275
  r ^= x << 16;
286
276
  x = (r >>> 4 ^ l) & 0x0f0f0f0f;
287
277
  l ^= x;
288
- r ^= x << 4; // Spread ints to bytes
278
+ r ^= x << 4;
289
279
 
280
+ // Spread ints to bytes
290
281
  x = [r, l];
291
-
292
282
  for (i = 0; i < 8; i++) {
293
283
  b[i] = (x[i >>> 2] >>> 8 * (3 - i % 4)) % 256;
294
-
295
284
  if (b[i] < 0) {
296
285
  b[i] += 256;
297
286
  } // unsigned
298
-
299
287
  }
300
288
 
301
289
  return b;
302
- } // Encrypt 16 bytes of text using passwd as key
290
+ }
303
291
 
292
+ // Encrypt 16 bytes of text using passwd as key
304
293
  }, {
305
294
  key: "encrypt",
306
295
  value: function encrypt(t) {
307
296
  return this.enc8(t.slice(0, 8)).concat(this.enc8(t.slice(8, 16)));
308
297
  }
309
298
  }]);
310
-
311
299
  return DES;
312
300
  }();
313
-
314
301
  exports["default"] = DES;