serverless-spy 2.2.3 → 2.2.5

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 (224) hide show
  1. package/.jsii +4 -4
  2. package/dist/releasetag.txt +1 -1
  3. package/lib/src/ServerlessSpy.js +1 -1
  4. package/node_modules/bundle-name/index.js +2 -2
  5. package/node_modules/bundle-name/package.json +6 -5
  6. package/node_modules/bundle-name/readme.md +2 -2
  7. package/node_modules/default-browser/index.d.ts +5 -4
  8. package/node_modules/default-browser/index.js +13 -11
  9. package/node_modules/default-browser/package.json +14 -12
  10. package/node_modules/default-browser/windows.js +11 -5
  11. package/node_modules/default-browser-id/index.js +8 -32
  12. package/node_modules/default-browser-id/package.json +5 -8
  13. package/node_modules/default-browser-id/readme.md +2 -2
  14. package/node_modules/open/index.js +10 -10
  15. package/node_modules/{is-wsl → open/node_modules/is-wsl}/index.d.ts +2 -2
  16. package/node_modules/open/node_modules/is-wsl/index.js +27 -0
  17. package/node_modules/{is-wsl → open/node_modules/is-wsl}/package.json +21 -9
  18. package/node_modules/open/node_modules/is-wsl/readme.md +21 -0
  19. package/node_modules/open/package.json +9 -8
  20. package/node_modules/open/xdg-open +338 -137
  21. package/node_modules/run-applescript/index.d.ts +28 -4
  22. package/node_modules/run-applescript/index.js +20 -7
  23. package/node_modules/run-applescript/package.json +10 -9
  24. package/node_modules/run-applescript/readme.md +44 -6
  25. package/node_modules/ws/README.md +9 -10
  26. package/node_modules/ws/lib/constants.js +7 -1
  27. package/node_modules/ws/lib/receiver.js +11 -47
  28. package/node_modules/ws/lib/sender.js +172 -47
  29. package/node_modules/ws/lib/validation.js +22 -0
  30. package/node_modules/ws/lib/websocket-server.js +6 -5
  31. package/node_modules/ws/lib/websocket.js +71 -19
  32. package/node_modules/ws/package.json +4 -3
  33. package/package.json +4 -4
  34. package/node_modules/big-integer/BigInteger.d.ts +0 -2393
  35. package/node_modules/big-integer/BigInteger.js +0 -1453
  36. package/node_modules/big-integer/BigInteger.min.js +0 -1
  37. package/node_modules/big-integer/LICENSE +0 -24
  38. package/node_modules/big-integer/README.md +0 -589
  39. package/node_modules/big-integer/bower.json +0 -29
  40. package/node_modules/big-integer/package.json +0 -48
  41. package/node_modules/big-integer/tsconfig.json +0 -24
  42. package/node_modules/bplist-parser/README.md +0 -48
  43. package/node_modules/bplist-parser/bplistParser.js +0 -363
  44. package/node_modules/bplist-parser/package.json +0 -34
  45. package/node_modules/bplist-parser/test/airplay.bplist +0 -0
  46. package/node_modules/bplist-parser/test/iTunes-small.bplist +0 -0
  47. package/node_modules/bplist-parser/test/int64.bplist +0 -0
  48. package/node_modules/bplist-parser/test/int64.xml +0 -10
  49. package/node_modules/bplist-parser/test/parseTest.js +0 -104
  50. package/node_modules/bplist-parser/test/sample1.bplist +0 -0
  51. package/node_modules/bplist-parser/test/sample2.bplist +0 -0
  52. package/node_modules/bplist-parser/test/uid.bplist +0 -0
  53. package/node_modules/bplist-parser/test/utf16.bplist +0 -0
  54. package/node_modules/bplist-parser/test/utf16_chinese.plist +0 -0
  55. package/node_modules/cross-spawn/CHANGELOG.md +0 -130
  56. package/node_modules/cross-spawn/LICENSE +0 -21
  57. package/node_modules/cross-spawn/README.md +0 -96
  58. package/node_modules/cross-spawn/index.js +0 -39
  59. package/node_modules/cross-spawn/lib/enoent.js +0 -59
  60. package/node_modules/cross-spawn/lib/parse.js +0 -91
  61. package/node_modules/cross-spawn/lib/util/escape.js +0 -45
  62. package/node_modules/cross-spawn/lib/util/readShebang.js +0 -23
  63. package/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -52
  64. package/node_modules/cross-spawn/package.json +0 -73
  65. package/node_modules/default-browser/node_modules/execa/index.d.ts +0 -937
  66. package/node_modules/default-browser/node_modules/execa/index.js +0 -309
  67. package/node_modules/default-browser/node_modules/execa/lib/command.js +0 -120
  68. package/node_modules/default-browser/node_modules/execa/lib/error.js +0 -87
  69. package/node_modules/default-browser/node_modules/execa/lib/kill.js +0 -102
  70. package/node_modules/default-browser/node_modules/execa/lib/pipe.js +0 -42
  71. package/node_modules/default-browser/node_modules/execa/lib/promise.js +0 -36
  72. package/node_modules/default-browser/node_modules/execa/lib/stdio.js +0 -49
  73. package/node_modules/default-browser/node_modules/execa/lib/stream.js +0 -119
  74. package/node_modules/default-browser/node_modules/execa/lib/verbose.js +0 -19
  75. package/node_modules/default-browser/node_modules/execa/package.json +0 -87
  76. package/node_modules/default-browser/node_modules/execa/readme.md +0 -824
  77. package/node_modules/default-browser/node_modules/human-signals/LICENSE +0 -201
  78. package/node_modules/default-browser/node_modules/human-signals/README.md +0 -178
  79. package/node_modules/default-browser/node_modules/human-signals/build/src/core.js +0 -273
  80. package/node_modules/default-browser/node_modules/human-signals/build/src/main.d.ts +0 -73
  81. package/node_modules/default-browser/node_modules/human-signals/build/src/main.js +0 -70
  82. package/node_modules/default-browser/node_modules/human-signals/build/src/realtime.js +0 -16
  83. package/node_modules/default-browser/node_modules/human-signals/build/src/signals.js +0 -34
  84. package/node_modules/default-browser/node_modules/human-signals/package.json +0 -61
  85. package/node_modules/default-browser/node_modules/is-stream/index.d.ts +0 -81
  86. package/node_modules/default-browser/node_modules/is-stream/index.js +0 -29
  87. package/node_modules/default-browser/node_modules/is-stream/license +0 -9
  88. package/node_modules/default-browser/node_modules/is-stream/package.json +0 -44
  89. package/node_modules/default-browser/node_modules/is-stream/readme.md +0 -60
  90. package/node_modules/default-browser/node_modules/mimic-fn/index.d.ts +0 -52
  91. package/node_modules/default-browser/node_modules/mimic-fn/index.js +0 -71
  92. package/node_modules/default-browser/node_modules/mimic-fn/license +0 -9
  93. package/node_modules/default-browser/node_modules/mimic-fn/package.json +0 -45
  94. package/node_modules/default-browser/node_modules/mimic-fn/readme.md +0 -90
  95. package/node_modules/default-browser/node_modules/npm-run-path/index.d.ts +0 -90
  96. package/node_modules/default-browser/node_modules/npm-run-path/index.js +0 -52
  97. package/node_modules/default-browser/node_modules/npm-run-path/license +0 -9
  98. package/node_modules/default-browser/node_modules/npm-run-path/package.json +0 -49
  99. package/node_modules/default-browser/node_modules/npm-run-path/readme.md +0 -104
  100. package/node_modules/default-browser/node_modules/onetime/index.d.ts +0 -59
  101. package/node_modules/default-browser/node_modules/onetime/index.js +0 -41
  102. package/node_modules/default-browser/node_modules/onetime/license +0 -9
  103. package/node_modules/default-browser/node_modules/onetime/package.json +0 -45
  104. package/node_modules/default-browser/node_modules/onetime/readme.md +0 -94
  105. package/node_modules/default-browser/node_modules/path-key/index.d.ts +0 -31
  106. package/node_modules/default-browser/node_modules/path-key/index.js +0 -12
  107. package/node_modules/default-browser/node_modules/path-key/license +0 -9
  108. package/node_modules/default-browser/node_modules/path-key/package.json +0 -41
  109. package/node_modules/default-browser/node_modules/path-key/readme.md +0 -57
  110. package/node_modules/default-browser/node_modules/strip-final-newline/index.js +0 -14
  111. package/node_modules/default-browser/node_modules/strip-final-newline/license +0 -9
  112. package/node_modules/default-browser/node_modules/strip-final-newline/package.json +0 -43
  113. package/node_modules/default-browser/node_modules/strip-final-newline/readme.md +0 -35
  114. package/node_modules/execa/index.d.ts +0 -564
  115. package/node_modules/execa/index.js +0 -268
  116. package/node_modules/execa/lib/command.js +0 -52
  117. package/node_modules/execa/lib/error.js +0 -88
  118. package/node_modules/execa/lib/kill.js +0 -115
  119. package/node_modules/execa/lib/promise.js +0 -46
  120. package/node_modules/execa/lib/stdio.js +0 -52
  121. package/node_modules/execa/lib/stream.js +0 -97
  122. package/node_modules/execa/license +0 -9
  123. package/node_modules/execa/package.json +0 -74
  124. package/node_modules/execa/readme.md +0 -663
  125. package/node_modules/get-stream/buffer-stream.js +0 -52
  126. package/node_modules/get-stream/index.d.ts +0 -105
  127. package/node_modules/get-stream/index.js +0 -61
  128. package/node_modules/get-stream/license +0 -9
  129. package/node_modules/get-stream/package.json +0 -47
  130. package/node_modules/get-stream/readme.md +0 -124
  131. package/node_modules/human-signals/CHANGELOG.md +0 -11
  132. package/node_modules/human-signals/LICENSE +0 -201
  133. package/node_modules/human-signals/README.md +0 -165
  134. package/node_modules/human-signals/build/src/core.js +0 -273
  135. package/node_modules/human-signals/build/src/core.js.map +0 -1
  136. package/node_modules/human-signals/build/src/main.d.ts +0 -52
  137. package/node_modules/human-signals/build/src/main.js +0 -71
  138. package/node_modules/human-signals/build/src/main.js.map +0 -1
  139. package/node_modules/human-signals/build/src/realtime.js +0 -19
  140. package/node_modules/human-signals/build/src/realtime.js.map +0 -1
  141. package/node_modules/human-signals/build/src/signals.js +0 -35
  142. package/node_modules/human-signals/build/src/signals.js.map +0 -1
  143. package/node_modules/human-signals/package.json +0 -64
  144. package/node_modules/is-stream/index.d.ts +0 -79
  145. package/node_modules/is-stream/index.js +0 -28
  146. package/node_modules/is-stream/license +0 -9
  147. package/node_modules/is-stream/package.json +0 -42
  148. package/node_modules/is-stream/readme.md +0 -60
  149. package/node_modules/is-wsl/index.js +0 -31
  150. package/node_modules/is-wsl/license +0 -9
  151. package/node_modules/is-wsl/node_modules/is-docker/cli.js +0 -5
  152. package/node_modules/is-wsl/node_modules/is-docker/index.d.ts +0 -15
  153. package/node_modules/is-wsl/node_modules/is-docker/index.js +0 -29
  154. package/node_modules/is-wsl/node_modules/is-docker/license +0 -9
  155. package/node_modules/is-wsl/node_modules/is-docker/package.json +0 -42
  156. package/node_modules/is-wsl/node_modules/is-docker/readme.md +0 -27
  157. package/node_modules/is-wsl/readme.md +0 -36
  158. package/node_modules/isexe/.npmignore +0 -2
  159. package/node_modules/isexe/LICENSE +0 -15
  160. package/node_modules/isexe/README.md +0 -51
  161. package/node_modules/isexe/index.js +0 -57
  162. package/node_modules/isexe/mode.js +0 -41
  163. package/node_modules/isexe/package.json +0 -31
  164. package/node_modules/isexe/test/basic.js +0 -221
  165. package/node_modules/isexe/windows.js +0 -42
  166. package/node_modules/merge-stream/LICENSE +0 -21
  167. package/node_modules/merge-stream/README.md +0 -78
  168. package/node_modules/merge-stream/index.js +0 -41
  169. package/node_modules/merge-stream/package.json +0 -19
  170. package/node_modules/mimic-fn/index.d.ts +0 -54
  171. package/node_modules/mimic-fn/index.js +0 -13
  172. package/node_modules/mimic-fn/license +0 -9
  173. package/node_modules/mimic-fn/package.json +0 -42
  174. package/node_modules/mimic-fn/readme.md +0 -69
  175. package/node_modules/npm-run-path/index.d.ts +0 -89
  176. package/node_modules/npm-run-path/index.js +0 -47
  177. package/node_modules/npm-run-path/license +0 -9
  178. package/node_modules/npm-run-path/package.json +0 -44
  179. package/node_modules/npm-run-path/readme.md +0 -115
  180. package/node_modules/onetime/index.d.ts +0 -64
  181. package/node_modules/onetime/index.js +0 -44
  182. package/node_modules/onetime/license +0 -9
  183. package/node_modules/onetime/package.json +0 -43
  184. package/node_modules/onetime/readme.md +0 -94
  185. package/node_modules/path-key/index.d.ts +0 -40
  186. package/node_modules/path-key/index.js +0 -16
  187. package/node_modules/path-key/license +0 -9
  188. package/node_modules/path-key/package.json +0 -39
  189. package/node_modules/path-key/readme.md +0 -61
  190. package/node_modules/shebang-command/index.js +0 -19
  191. package/node_modules/shebang-command/license +0 -9
  192. package/node_modules/shebang-command/package.json +0 -34
  193. package/node_modules/shebang-command/readme.md +0 -34
  194. package/node_modules/shebang-regex/index.d.ts +0 -22
  195. package/node_modules/shebang-regex/index.js +0 -2
  196. package/node_modules/shebang-regex/license +0 -9
  197. package/node_modules/shebang-regex/package.json +0 -35
  198. package/node_modules/shebang-regex/readme.md +0 -33
  199. package/node_modules/signal-exit/LICENSE.txt +0 -16
  200. package/node_modules/signal-exit/README.md +0 -39
  201. package/node_modules/signal-exit/index.js +0 -202
  202. package/node_modules/signal-exit/package.json +0 -38
  203. package/node_modules/signal-exit/signals.js +0 -53
  204. package/node_modules/strip-final-newline/index.js +0 -16
  205. package/node_modules/strip-final-newline/license +0 -9
  206. package/node_modules/strip-final-newline/package.json +0 -40
  207. package/node_modules/strip-final-newline/readme.md +0 -30
  208. package/node_modules/titleize/index.d.ts +0 -17
  209. package/node_modules/titleize/index.js +0 -7
  210. package/node_modules/titleize/license +0 -9
  211. package/node_modules/titleize/package.json +0 -42
  212. package/node_modules/titleize/readme.md +0 -25
  213. package/node_modules/untildify/index.d.ts +0 -14
  214. package/node_modules/untildify/index.js +0 -12
  215. package/node_modules/untildify/license +0 -9
  216. package/node_modules/untildify/package.json +0 -43
  217. package/node_modules/untildify/readme.md +0 -30
  218. package/node_modules/which/CHANGELOG.md +0 -166
  219. package/node_modules/which/LICENSE +0 -15
  220. package/node_modules/which/README.md +0 -54
  221. package/node_modules/which/bin/node-which +0 -52
  222. package/node_modules/which/package.json +0 -43
  223. package/node_modules/which/which.js +0 -125
  224. /package/node_modules/{default-browser/node_modules/execa → open/node_modules/is-wsl}/license +0 -0
@@ -1,3 +1,24 @@
1
+ export type Options = {
2
+ /**
3
+ Change the output style.
4
+
5
+ When `false`, returns the value in a [recompilable source form](https://ss64.com/osx/osascript.html).
6
+
7
+ @default true
8
+
9
+ @example
10
+ ```
11
+ import {runAppleScript} from 'run-applescript';
12
+
13
+ const result = await runAppleScript('return "unicorn"', {humanReadableOutput: false});
14
+
15
+ console.log(result);
16
+ //=> '"unicorn"'
17
+ ```
18
+ */
19
+ readonly humanReadableOutput?: boolean;
20
+ };
21
+
1
22
  /**
2
23
  Run AppleScript asynchronously.
3
24
 
@@ -6,15 +27,18 @@ Run AppleScript asynchronously.
6
27
 
7
28
  @example
8
29
  ```
9
- import {runAppleScriptAsync} from 'run-applescript';
30
+ import {runAppleScript} from 'run-applescript';
10
31
 
11
- const result = await runAppleScriptAsync('return "unicorn"');
32
+ const result = await runAppleScript('return "unicorn"');
12
33
 
13
34
  console.log(result);
14
35
  //=> 'unicorn'
15
36
  ```
16
37
  */
17
- export function runAppleScriptAsync(script: string): Promise<string>;
38
+ export function runAppleScript(
39
+ script: string,
40
+ options?: Options
41
+ ): Promise<string>;
18
42
 
19
43
  /**
20
44
  Run AppleScript synchronously.
@@ -32,4 +56,4 @@ console.log(result);
32
56
  //=> 'unicorn'
33
57
  ```
34
58
  */
35
- export function runAppleScriptSync(script: string): string;
59
+ export function runAppleScriptSync(script: string, options?: Options): string;
@@ -1,19 +1,32 @@
1
- import execa from 'execa';
1
+ import process from 'node:process';
2
+ import {promisify} from 'node:util';
3
+ import {execFile, execFileSync} from 'node:child_process';
2
4
 
3
- export async function runAppleScriptAsync(script) {
5
+ const execFileAsync = promisify(execFile);
6
+
7
+ export async function runAppleScript(script, {humanReadableOutput = true} = {}) {
4
8
  if (process.platform !== 'darwin') {
5
9
  throw new Error('macOS only');
6
10
  }
7
11
 
8
- const {stdout} = await execa('osascript', ['-e', script]);
9
- return stdout;
12
+ const outputArguments = humanReadableOutput ? [] : ['-ss'];
13
+
14
+ const {stdout} = await execFileAsync('osascript', ['-e', script, outputArguments]);
15
+ return stdout.trim();
10
16
  }
11
17
 
12
- export function runAppleScriptSync(script) {
18
+ export function runAppleScriptSync(script, {humanReadableOutput = true} = {}) {
13
19
  if (process.platform !== 'darwin') {
14
20
  throw new Error('macOS only');
15
21
  }
16
22
 
17
- const {stdout} = execa.sync('osascript', ['-e', script]);
18
- return stdout;
23
+ const outputArguments = humanReadableOutput ? [] : ['-ss'];
24
+
25
+ const stdout = execFileSync('osascript', ['-e', script, ...outputArguments], {
26
+ encoding: 'utf8',
27
+ stdio: ['ignore', 'pipe', 'ignore'],
28
+ timeout: 500,
29
+ });
30
+
31
+ return stdout.trim();
19
32
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "run-applescript",
3
- "version": "5.0.0",
3
+ "version": "7.0.0",
4
4
  "description": "Run AppleScript and get the result",
5
5
  "license": "MIT",
6
6
  "repository": "sindresorhus/run-applescript",
@@ -11,9 +11,13 @@
11
11
  "url": "https://sindresorhus.com"
12
12
  },
13
13
  "type": "module",
14
- "exports": "./index.js",
14
+ "exports": {
15
+ "types": "./index.d.ts",
16
+ "default": "./index.js"
17
+ },
18
+ "sideEffects": false,
15
19
  "engines": {
16
- "node": ">=12"
20
+ "node": ">=18"
17
21
  },
18
22
  "scripts": {
19
23
  "test": "xo && ava && tsd"
@@ -30,12 +34,9 @@
30
34
  "run",
31
35
  "execute"
32
36
  ],
33
- "dependencies": {
34
- "execa": "^5.0.0"
35
- },
36
37
  "devDependencies": {
37
- "ava": "^3.15.0",
38
- "tsd": "^0.14.0",
39
- "xo": "^0.38.2"
38
+ "ava": "^6.0.1",
39
+ "tsd": "^0.30.0",
40
+ "xo": "^0.56.0"
40
41
  }
41
42
  }
@@ -4,16 +4,16 @@
4
4
 
5
5
  ## Install
6
6
 
7
- ```
8
- $ npm install run-applescript
7
+ ```sh
8
+ npm install run-applescript
9
9
  ```
10
10
 
11
11
  ## Usage
12
12
 
13
13
  ```js
14
- import {runAppleScriptAsync} from 'run-applescript';
14
+ import {runAppleScript} from 'run-applescript';
15
15
 
16
- const result = await runAppleScriptAsync('return "unicorn"');
16
+ const result = await runAppleScript('return "unicorn"');
17
17
 
18
18
  console.log(result);
19
19
  //=> 'unicorn'
@@ -21,14 +21,52 @@ console.log(result);
21
21
 
22
22
  ## API
23
23
 
24
- ### runAppleScriptAsync(script)
24
+ ### runAppleScript(script, options?)
25
25
 
26
26
  Returns a `Promise<string>` with the script result.
27
27
 
28
- ### runAppleScriptSync(script)
28
+ #### script
29
+
30
+ Type: `string`
31
+
32
+ The script to run.
33
+
34
+ #### options
35
+
36
+ Type: `object`
37
+
38
+ ##### humanReadableOutput
39
+
40
+ Type: `boolean`\
41
+ Default: `true`
42
+
43
+ Change the output style.
44
+
45
+ When `false`, returns the value in a [recompilable source form](https://ss64.com/osx/osascript.html).
46
+
47
+ ### runAppleScriptSync(script, options?)
29
48
 
30
49
  Returns a `string` with the script result.
31
50
 
51
+ #### script
52
+
53
+ Type: `string`
54
+
55
+ The script to run.
56
+
57
+ #### options
58
+
59
+ Type: `object`
60
+
61
+ ##### humanReadableOutput
62
+
63
+ Type: `boolean`\
64
+ Default: `true`
65
+
66
+ Change the output style.
67
+
68
+ When `false`, returns the value in a [recompilable source form](https://ss64.com/osx/osascript.html).
69
+
32
70
  ## Related
33
71
 
34
72
  - [run-jxa](https://github.com/sindresorhus/run-jxa) - Run JXA code and get the result
@@ -11,8 +11,8 @@ Passes the quite extensive Autobahn test suite: [server][server-report],
11
11
  [client][client-report].
12
12
 
13
13
  **Note**: This module does not work in the browser. The client in the docs is a
14
- reference to a back end with the role of a client in the WebSocket
15
- communication. Browser clients must use the native
14
+ reference to a backend with the role of a client in the WebSocket communication.
15
+ Browser clients must use the native
16
16
  [`WebSocket`](https://developer.mozilla.org/en-US/docs/Web/API/WebSocket)
17
17
  object. To make the same code work seamlessly on Node.js and the browser, you
18
18
  can use one of the many wrappers available on npm, like
@@ -87,7 +87,7 @@ npm install --save-optional utf-8-validate
87
87
 
88
88
  This contains a binary polyfill for [`buffer.isUtf8()`][].
89
89
 
90
- To force ws to not use utf-8-validate, use the
90
+ To force ws not to use utf-8-validate, use the
91
91
  [`WS_NO_UTF_8_VALIDATE`](./doc/ws.md#ws_no_utf_8_validate) environment variable.
92
92
 
93
93
  ## API docs
@@ -146,7 +146,7 @@ const wss = new WebSocketServer({
146
146
  ```
147
147
 
148
148
  The client will only use the extension if it is supported and enabled on the
149
- server. To always disable the extension on the client set the
149
+ server. To always disable the extension on the client, set the
150
150
  `perMessageDeflate` option to `false`.
151
151
 
152
152
  ```js
@@ -245,7 +245,6 @@ server.listen(8080);
245
245
 
246
246
  ```js
247
247
  import { createServer } from 'http';
248
- import { parse } from 'url';
249
248
  import { WebSocketServer } from 'ws';
250
249
 
251
250
  const server = createServer();
@@ -265,7 +264,7 @@ wss2.on('connection', function connection(ws) {
265
264
  });
266
265
 
267
266
  server.on('upgrade', function upgrade(request, socket, head) {
268
- const { pathname } = parse(request.url);
267
+ const { pathname } = new URL(request.url, 'wss://base.url');
269
268
 
270
269
  if (pathname === '/foo') {
271
270
  wss1.handleUpgrade(request, socket, head, function done(ws) {
@@ -452,11 +451,11 @@ wss.on('connection', function connection(ws, req) {
452
451
 
453
452
  ### How to detect and close broken connections?
454
453
 
455
- Sometimes the link between the server and the client can be interrupted in a way
456
- that keeps both the server and the client unaware of the broken state of the
454
+ Sometimes, the link between the server and the client can be interrupted in a
455
+ way that keeps both the server and the client unaware of the broken state of the
457
456
  connection (e.g. when pulling the cord).
458
457
 
459
- In these cases ping messages can be used as a means to verify that the remote
458
+ In these cases, ping messages can be used as a means to verify that the remote
460
459
  endpoint is still responsive.
461
460
 
462
461
  ```js
@@ -491,7 +490,7 @@ wss.on('close', function close() {
491
490
  Pong messages are automatically sent in response to ping messages as required by
492
491
  the spec.
493
492
 
494
- Just like the server example above your clients might as well lose connection
493
+ Just like the server example above, your clients might as well lose connection
495
494
  without knowing it. You might want to add a ping listener on your clients to
496
495
  prevent that. A simple implementation would be:
497
496
 
@@ -1,9 +1,15 @@
1
1
  'use strict';
2
2
 
3
+ const BINARY_TYPES = ['nodebuffer', 'arraybuffer', 'fragments'];
4
+ const hasBlob = typeof Blob !== 'undefined';
5
+
6
+ if (hasBlob) BINARY_TYPES.push('blob');
7
+
3
8
  module.exports = {
4
- BINARY_TYPES: ['nodebuffer', 'arraybuffer', 'fragments'],
9
+ BINARY_TYPES,
5
10
  EMPTY_BUFFER: Buffer.alloc(0),
6
11
  GUID: '258EAFA5-E914-47DA-95CA-C5AB0DC85B11',
12
+ hasBlob,
7
13
  kForOnEventAttribute: Symbol('kIsForOnEventAttribute'),
8
14
  kListener: Symbol('kListener'),
9
15
  kStatusCode: Symbol('status-code'),
@@ -13,13 +13,6 @@ const { concat, toArrayBuffer, unmask } = require('./buffer-util');
13
13
  const { isValidStatusCode, isValidUTF8 } = require('./validation');
14
14
 
15
15
  const FastBuffer = Buffer[Symbol.species];
16
- const promise = Promise.resolve();
17
-
18
- //
19
- // `queueMicrotask()` is not available in Node.js < 11.
20
- //
21
- const queueTask =
22
- typeof queueMicrotask === 'function' ? queueMicrotask : queueMicrotaskShim;
23
16
 
24
17
  const GET_INFO = 0;
25
18
  const GET_PAYLOAD_LENGTH_16 = 1;
@@ -39,7 +32,7 @@ class Receiver extends Writable {
39
32
  * Creates a Receiver instance.
40
33
  *
41
34
  * @param {Object} [options] Options object
42
- * @param {Boolean} [options.allowSynchronousEvents=false] Specifies whether
35
+ * @param {Boolean} [options.allowSynchronousEvents=true] Specifies whether
43
36
  * any of the `'message'`, `'ping'`, and `'pong'` events can be emitted
44
37
  * multiple times in the same tick
45
38
  * @param {String} [options.binaryType=nodebuffer] The type for binary data
@@ -54,7 +47,10 @@ class Receiver extends Writable {
54
47
  constructor(options = {}) {
55
48
  super();
56
49
 
57
- this._allowSynchronousEvents = !!options.allowSynchronousEvents;
50
+ this._allowSynchronousEvents =
51
+ options.allowSynchronousEvents !== undefined
52
+ ? options.allowSynchronousEvents
53
+ : true;
58
54
  this._binaryType = options.binaryType || BINARY_TYPES[0];
59
55
  this._extensions = options.extensions || {};
60
56
  this._isServer = !!options.isServer;
@@ -563,21 +559,18 @@ class Receiver extends Writable {
563
559
  data = concat(fragments, messageLength);
564
560
  } else if (this._binaryType === 'arraybuffer') {
565
561
  data = toArrayBuffer(concat(fragments, messageLength));
562
+ } else if (this._binaryType === 'blob') {
563
+ data = new Blob(fragments);
566
564
  } else {
567
565
  data = fragments;
568
566
  }
569
567
 
570
- //
571
- // If the state is `INFLATING`, it means that the frame data was
572
- // decompressed asynchronously, so there is no need to defer the event
573
- // as it will be emitted asynchronously anyway.
574
- //
575
- if (this._state === INFLATING || this._allowSynchronousEvents) {
568
+ if (this._allowSynchronousEvents) {
576
569
  this.emit('message', data, true);
577
570
  this._state = GET_INFO;
578
571
  } else {
579
572
  this._state = DEFER_EVENT;
580
- queueTask(() => {
573
+ setImmediate(() => {
581
574
  this.emit('message', data, true);
582
575
  this._state = GET_INFO;
583
576
  this.startLoop(cb);
@@ -604,7 +597,7 @@ class Receiver extends Writable {
604
597
  this._state = GET_INFO;
605
598
  } else {
606
599
  this._state = DEFER_EVENT;
607
- queueTask(() => {
600
+ setImmediate(() => {
608
601
  this.emit('message', buf, false);
609
602
  this._state = GET_INFO;
610
603
  this.startLoop(cb);
@@ -675,7 +668,7 @@ class Receiver extends Writable {
675
668
  this._state = GET_INFO;
676
669
  } else {
677
670
  this._state = DEFER_EVENT;
678
- queueTask(() => {
671
+ setImmediate(() => {
679
672
  this.emit(this._opcode === 0x09 ? 'ping' : 'pong', data);
680
673
  this._state = GET_INFO;
681
674
  this.startLoop(cb);
@@ -711,32 +704,3 @@ class Receiver extends Writable {
711
704
  }
712
705
 
713
706
  module.exports = Receiver;
714
-
715
- /**
716
- * A shim for `queueMicrotask()`.
717
- *
718
- * @param {Function} cb Callback
719
- */
720
- function queueMicrotaskShim(cb) {
721
- promise.then(cb).catch(throwErrorNextTick);
722
- }
723
-
724
- /**
725
- * Throws an error.
726
- *
727
- * @param {Error} err The error to throw
728
- * @private
729
- */
730
- function throwError(err) {
731
- throw err;
732
- }
733
-
734
- /**
735
- * Throws an error in the next tick.
736
- *
737
- * @param {Error} err The error to throw
738
- * @private
739
- */
740
- function throwErrorNextTick(err) {
741
- process.nextTick(throwError, err);
742
- }