isomorfeus-transport 2.0.7 → 2.0.11

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,124 +1,124 @@
1
- 'use strict';
2
-
3
- //
4
- // Allowed token characters:
5
- //
6
- // '!', '#', '$', '%', '&', ''', '*', '+', '-',
7
- // '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'
8
- //
9
- // tokenChars[32] === 0 // ' '
10
- // tokenChars[33] === 1 // '!'
11
- // tokenChars[34] === 0 // '"'
12
- // ...
13
- //
14
- // prettier-ignore
15
- const tokenChars = [
16
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15
17
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31
18
- 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47
19
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63
20
- 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79
21
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95
22
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111
23
- 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127
24
- ];
25
-
26
- /**
27
- * Checks if a status code is allowed in a close frame.
28
- *
29
- * @param {Number} code The status code
30
- * @return {Boolean} `true` if the status code is valid, else `false`
31
- * @public
32
- */
33
- function isValidStatusCode(code) {
34
- return (
35
- (code >= 1000 &&
36
- code <= 1014 &&
37
- code !== 1004 &&
38
- code !== 1005 &&
39
- code !== 1006) ||
40
- (code >= 3000 && code <= 4999)
41
- );
42
- }
43
-
44
- /**
45
- * Checks if a given buffer contains only correct UTF-8.
46
- * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by
47
- * Markus Kuhn.
48
- *
49
- * @param {Buffer} buf The buffer to check
50
- * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`
51
- * @public
52
- */
53
- function _isValidUTF8(buf) {
54
- const len = buf.length;
55
- let i = 0;
56
-
57
- while (i < len) {
58
- if ((buf[i] & 0x80) === 0) {
59
- // 0xxxxxxx
60
- i++;
61
- } else if ((buf[i] & 0xe0) === 0xc0) {
62
- // 110xxxxx 10xxxxxx
63
- if (
64
- i + 1 === len ||
65
- (buf[i + 1] & 0xc0) !== 0x80 ||
66
- (buf[i] & 0xfe) === 0xc0 // Overlong
67
- ) {
68
- return false;
69
- }
70
-
71
- i += 2;
72
- } else if ((buf[i] & 0xf0) === 0xe0) {
73
- // 1110xxxx 10xxxxxx 10xxxxxx
74
- if (
75
- i + 2 >= len ||
76
- (buf[i + 1] & 0xc0) !== 0x80 ||
77
- (buf[i + 2] & 0xc0) !== 0x80 ||
78
- (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong
79
- (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)
80
- ) {
81
- return false;
82
- }
83
-
84
- i += 3;
85
- } else if ((buf[i] & 0xf8) === 0xf0) {
86
- // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
87
- if (
88
- i + 3 >= len ||
89
- (buf[i + 1] & 0xc0) !== 0x80 ||
90
- (buf[i + 2] & 0xc0) !== 0x80 ||
91
- (buf[i + 3] & 0xc0) !== 0x80 ||
92
- (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong
93
- (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||
94
- buf[i] > 0xf4 // > U+10FFFF
95
- ) {
96
- return false;
97
- }
98
-
99
- i += 4;
100
- } else {
101
- return false;
102
- }
103
- }
104
-
105
- return true;
106
- }
107
-
108
- try {
109
- const isValidUTF8 = require('utf-8-validate');
110
-
111
- module.exports = {
112
- isValidStatusCode,
113
- isValidUTF8(buf) {
114
- return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);
115
- },
116
- tokenChars
117
- };
118
- } catch (e) /* istanbul ignore next */ {
119
- module.exports = {
120
- isValidStatusCode,
121
- isValidUTF8: _isValidUTF8,
122
- tokenChars
123
- };
124
- }
1
+ 'use strict';
2
+
3
+ //
4
+ // Allowed token characters:
5
+ //
6
+ // '!', '#', '$', '%', '&', ''', '*', '+', '-',
7
+ // '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'
8
+ //
9
+ // tokenChars[32] === 0 // ' '
10
+ // tokenChars[33] === 1 // '!'
11
+ // tokenChars[34] === 0 // '"'
12
+ // ...
13
+ //
14
+ // prettier-ignore
15
+ const tokenChars = [
16
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15
17
+ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31
18
+ 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47
19
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63
20
+ 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79
21
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95
22
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111
23
+ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127
24
+ ];
25
+
26
+ /**
27
+ * Checks if a status code is allowed in a close frame.
28
+ *
29
+ * @param {Number} code The status code
30
+ * @return {Boolean} `true` if the status code is valid, else `false`
31
+ * @public
32
+ */
33
+ function isValidStatusCode(code) {
34
+ return (
35
+ (code >= 1000 &&
36
+ code <= 1014 &&
37
+ code !== 1004 &&
38
+ code !== 1005 &&
39
+ code !== 1006) ||
40
+ (code >= 3000 && code <= 4999)
41
+ );
42
+ }
43
+
44
+ /**
45
+ * Checks if a given buffer contains only correct UTF-8.
46
+ * Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by
47
+ * Markus Kuhn.
48
+ *
49
+ * @param {Buffer} buf The buffer to check
50
+ * @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`
51
+ * @public
52
+ */
53
+ function _isValidUTF8(buf) {
54
+ const len = buf.length;
55
+ let i = 0;
56
+
57
+ while (i < len) {
58
+ if ((buf[i] & 0x80) === 0) {
59
+ // 0xxxxxxx
60
+ i++;
61
+ } else if ((buf[i] & 0xe0) === 0xc0) {
62
+ // 110xxxxx 10xxxxxx
63
+ if (
64
+ i + 1 === len ||
65
+ (buf[i + 1] & 0xc0) !== 0x80 ||
66
+ (buf[i] & 0xfe) === 0xc0 // Overlong
67
+ ) {
68
+ return false;
69
+ }
70
+
71
+ i += 2;
72
+ } else if ((buf[i] & 0xf0) === 0xe0) {
73
+ // 1110xxxx 10xxxxxx 10xxxxxx
74
+ if (
75
+ i + 2 >= len ||
76
+ (buf[i + 1] & 0xc0) !== 0x80 ||
77
+ (buf[i + 2] & 0xc0) !== 0x80 ||
78
+ (buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong
79
+ (buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)
80
+ ) {
81
+ return false;
82
+ }
83
+
84
+ i += 3;
85
+ } else if ((buf[i] & 0xf8) === 0xf0) {
86
+ // 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
87
+ if (
88
+ i + 3 >= len ||
89
+ (buf[i + 1] & 0xc0) !== 0x80 ||
90
+ (buf[i + 2] & 0xc0) !== 0x80 ||
91
+ (buf[i + 3] & 0xc0) !== 0x80 ||
92
+ (buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong
93
+ (buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||
94
+ buf[i] > 0xf4 // > U+10FFFF
95
+ ) {
96
+ return false;
97
+ }
98
+
99
+ i += 4;
100
+ } else {
101
+ return false;
102
+ }
103
+ }
104
+
105
+ return true;
106
+ }
107
+
108
+ try {
109
+ const isValidUTF8 = require('utf-8-validate');
110
+
111
+ module.exports = {
112
+ isValidStatusCode,
113
+ isValidUTF8(buf) {
114
+ return buf.length < 150 ? _isValidUTF8(buf) : isValidUTF8(buf);
115
+ },
116
+ tokenChars
117
+ };
118
+ } catch (e) /* istanbul ignore next */ {
119
+ module.exports = {
120
+ isValidStatusCode,
121
+ isValidUTF8: _isValidUTF8,
122
+ tokenChars
123
+ };
124
+ }