@pnpm/exe 11.0.5 → 11.0.7
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.
- package/dist/node-gyp-bin/node-gyp +0 -0
- package/dist/node-gyp-bin/node-gyp.cmd +0 -0
- package/dist/node_modules/node-gyp/.release-please-manifest.json +1 -1
- package/dist/node_modules/node-gyp/bin/node-gyp.js +0 -0
- package/dist/node_modules/node-gyp/gyp/.release-please-manifest.json +1 -1
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/MSVSVersion.py +11 -3
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/__init__.py +2 -3
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/msvs.py +1 -1
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja.py +2 -1
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/generator/ninja_test.py +26 -16
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/mac_tool.py +1 -1
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/msvs_emulation.py +1 -1
- package/dist/node_modules/node-gyp/gyp/pylib/gyp/simple_copy.py +2 -2
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/metadata.py +3 -20
- package/dist/node_modules/node-gyp/gyp/pylib/packaging/tags.py +2 -14
- package/dist/node_modules/node-gyp/gyp/pyproject.toml +5 -3
- package/dist/node_modules/node-gyp/lib/download.js +55 -8
- package/dist/node_modules/node-gyp/lib/find-visualstudio.js +1 -1
- package/dist/node_modules/node-gyp/lib/process-release.js +17 -19
- package/dist/node_modules/node-gyp/package.json +3 -3
- package/dist/node_modules/{safer-buffer → undici}/LICENSE +1 -1
- package/dist/node_modules/undici/index-fetch.js +35 -0
- package/dist/node_modules/undici/index.js +169 -0
- package/dist/node_modules/undici/lib/api/abort-signal.js +57 -0
- package/dist/node_modules/undici/lib/api/api-connect.js +108 -0
- package/dist/node_modules/undici/lib/api/api-pipeline.js +251 -0
- package/dist/node_modules/undici/lib/api/api-request.js +214 -0
- package/dist/node_modules/undici/lib/api/api-stream.js +220 -0
- package/dist/node_modules/undici/lib/api/api-upgrade.js +108 -0
- package/dist/node_modules/undici/lib/api/index.js +7 -0
- package/dist/node_modules/undici/lib/api/readable.js +385 -0
- package/dist/node_modules/undici/lib/api/util.js +93 -0
- package/dist/node_modules/undici/lib/core/connect.js +240 -0
- package/dist/node_modules/undici/lib/core/constants.js +118 -0
- package/dist/node_modules/undici/lib/core/diagnostics.js +202 -0
- package/dist/node_modules/undici/lib/core/errors.js +425 -0
- package/dist/node_modules/undici/lib/core/request.js +405 -0
- package/dist/node_modules/undici/lib/core/symbols.js +67 -0
- package/dist/node_modules/undici/lib/core/tree.js +152 -0
- package/dist/node_modules/undici/lib/core/util.js +719 -0
- package/dist/node_modules/undici/lib/dispatcher/agent.js +130 -0
- package/dist/node_modules/undici/lib/dispatcher/balanced-pool.js +209 -0
- package/dist/node_modules/undici/lib/dispatcher/client-h1.js +1370 -0
- package/dist/node_modules/undici/lib/dispatcher/client-h2.js +744 -0
- package/dist/node_modules/undici/lib/dispatcher/client.js +623 -0
- package/dist/node_modules/undici/lib/dispatcher/dispatcher-base.js +198 -0
- package/dist/node_modules/undici/lib/dispatcher/dispatcher.js +65 -0
- package/dist/node_modules/undici/lib/dispatcher/env-http-proxy-agent.js +160 -0
- package/dist/node_modules/undici/lib/dispatcher/fixed-queue.js +117 -0
- package/dist/node_modules/undici/lib/dispatcher/pool-base.js +194 -0
- package/dist/node_modules/undici/lib/dispatcher/pool-stats.js +34 -0
- package/dist/node_modules/undici/lib/dispatcher/pool.js +107 -0
- package/dist/node_modules/undici/lib/dispatcher/proxy-agent.js +274 -0
- package/dist/node_modules/undici/lib/dispatcher/retry-agent.js +35 -0
- package/dist/node_modules/undici/lib/global.js +32 -0
- package/dist/node_modules/undici/lib/handler/decorator-handler.js +44 -0
- package/dist/node_modules/undici/lib/handler/redirect-handler.js +232 -0
- package/dist/node_modules/undici/lib/handler/retry-handler.js +374 -0
- package/dist/node_modules/undici/lib/interceptor/dns.js +375 -0
- package/dist/node_modules/undici/lib/interceptor/dump.js +123 -0
- package/dist/node_modules/undici/lib/interceptor/redirect-interceptor.js +21 -0
- package/dist/node_modules/undici/lib/interceptor/redirect.js +24 -0
- package/dist/node_modules/undici/lib/interceptor/response-error.js +86 -0
- package/dist/node_modules/undici/lib/interceptor/retry.js +19 -0
- package/dist/node_modules/undici/lib/llhttp/.gitkeep +0 -0
- package/dist/node_modules/undici/lib/llhttp/constants.js +278 -0
- package/dist/node_modules/undici/lib/llhttp/llhttp-wasm.js +5 -0
- package/dist/node_modules/undici/lib/llhttp/llhttp_simd-wasm.js +5 -0
- package/dist/node_modules/undici/lib/llhttp/utils.js +15 -0
- package/dist/node_modules/undici/lib/mock/mock-agent.js +160 -0
- package/dist/node_modules/undici/lib/mock/mock-client.js +59 -0
- package/dist/node_modules/undici/lib/mock/mock-errors.js +28 -0
- package/dist/node_modules/undici/lib/mock/mock-interceptor.js +207 -0
- package/dist/node_modules/undici/lib/mock/mock-pool.js +59 -0
- package/dist/node_modules/undici/lib/mock/mock-symbols.js +23 -0
- package/dist/node_modules/undici/lib/mock/mock-utils.js +367 -0
- package/dist/node_modules/undici/lib/mock/pending-interceptors-formatter.js +43 -0
- package/dist/node_modules/undici/lib/mock/pluralizer.js +29 -0
- package/dist/node_modules/undici/lib/util/timers.js +423 -0
- package/dist/node_modules/undici/lib/web/cache/cache.js +859 -0
- package/dist/node_modules/undici/lib/web/cache/cachestorage.js +152 -0
- package/dist/node_modules/undici/lib/web/cache/symbols.js +5 -0
- package/dist/node_modules/undici/lib/web/cache/util.js +45 -0
- package/dist/node_modules/undici/lib/web/cookies/constants.js +12 -0
- package/dist/node_modules/undici/lib/web/cookies/index.js +184 -0
- package/dist/node_modules/undici/lib/web/cookies/parse.js +317 -0
- package/dist/node_modules/undici/lib/web/cookies/util.js +282 -0
- package/dist/node_modules/undici/lib/web/eventsource/eventsource-stream.js +398 -0
- package/dist/node_modules/undici/lib/web/eventsource/eventsource.js +480 -0
- package/dist/node_modules/undici/lib/web/eventsource/util.js +37 -0
- package/dist/node_modules/{@npmcli/redact → undici/lib/web/fetch}/LICENSE +1 -1
- package/dist/node_modules/undici/lib/web/fetch/body.js +529 -0
- package/dist/node_modules/undici/lib/web/fetch/constants.js +124 -0
- package/dist/node_modules/undici/lib/web/fetch/data-url.js +744 -0
- package/dist/node_modules/undici/lib/web/fetch/dispatcher-weakref.js +46 -0
- package/dist/node_modules/undici/lib/web/fetch/file.js +126 -0
- package/dist/node_modules/undici/lib/web/fetch/formdata-parser.js +474 -0
- package/dist/node_modules/undici/lib/web/fetch/formdata.js +252 -0
- package/dist/node_modules/undici/lib/web/fetch/global.js +40 -0
- package/dist/node_modules/undici/lib/web/fetch/headers.js +687 -0
- package/dist/node_modules/undici/lib/web/fetch/index.js +2272 -0
- package/dist/node_modules/undici/lib/web/fetch/request.js +1037 -0
- package/dist/node_modules/undici/lib/web/fetch/response.js +610 -0
- package/dist/node_modules/undici/lib/web/fetch/symbols.js +9 -0
- package/dist/node_modules/undici/lib/web/fetch/util.js +1632 -0
- package/dist/node_modules/undici/lib/web/fetch/webidl.js +695 -0
- package/dist/node_modules/undici/lib/web/fileapi/encoding.js +290 -0
- package/dist/node_modules/undici/lib/web/fileapi/filereader.js +344 -0
- package/dist/node_modules/undici/lib/web/fileapi/progressevent.js +78 -0
- package/dist/node_modules/undici/lib/web/fileapi/symbols.js +10 -0
- package/dist/node_modules/undici/lib/web/fileapi/util.js +391 -0
- package/dist/node_modules/undici/lib/web/websocket/connection.js +371 -0
- package/dist/node_modules/undici/lib/web/websocket/constants.js +66 -0
- package/dist/node_modules/undici/lib/web/websocket/events.js +329 -0
- package/dist/node_modules/undici/lib/web/websocket/frame.js +96 -0
- package/dist/node_modules/undici/lib/web/websocket/permessage-deflate.js +100 -0
- package/dist/node_modules/undici/lib/web/websocket/receiver.js +490 -0
- package/dist/node_modules/undici/lib/web/websocket/sender.js +104 -0
- package/dist/node_modules/undici/lib/web/websocket/symbols.js +12 -0
- package/dist/node_modules/undici/lib/web/websocket/util.js +322 -0
- package/dist/node_modules/undici/lib/web/websocket/websocket.js +592 -0
- package/dist/node_modules/undici/package.json +160 -0
- package/dist/node_modules/undici/scripts/strip-comments.js +8 -0
- package/dist/node_modules/yallist/package.json +51 -12
- package/dist/pnpm.mjs +5915 -5140
- package/dist/worker.js +70 -67
- package/package.json +21 -13
- package/setup.js +17 -3
- package/dist/node_modules/@gar/promise-retry/LICENSE +0 -20
- package/dist/node_modules/@gar/promise-retry/lib/index.js +0 -62
- package/dist/node_modules/@gar/promise-retry/lib/retry.js +0 -109
- package/dist/node_modules/@gar/promise-retry/package.json +0 -45
- package/dist/node_modules/@npmcli/agent/lib/agents.js +0 -206
- package/dist/node_modules/@npmcli/agent/lib/dns.js +0 -53
- package/dist/node_modules/@npmcli/agent/lib/errors.js +0 -61
- package/dist/node_modules/@npmcli/agent/lib/index.js +0 -56
- package/dist/node_modules/@npmcli/agent/lib/options.js +0 -86
- package/dist/node_modules/@npmcli/agent/lib/proxy.js +0 -88
- package/dist/node_modules/@npmcli/agent/package.json +0 -60
- package/dist/node_modules/@npmcli/fs/lib/common/get-options.js +0 -20
- package/dist/node_modules/@npmcli/fs/lib/common/node.js +0 -9
- package/dist/node_modules/@npmcli/fs/lib/cp/LICENSE +0 -15
- package/dist/node_modules/@npmcli/fs/lib/cp/errors.js +0 -129
- package/dist/node_modules/@npmcli/fs/lib/cp/index.js +0 -22
- package/dist/node_modules/@npmcli/fs/lib/cp/polyfill.js +0 -428
- package/dist/node_modules/@npmcli/fs/lib/index.js +0 -13
- package/dist/node_modules/@npmcli/fs/lib/move-file.js +0 -78
- package/dist/node_modules/@npmcli/fs/lib/readdir-scoped.js +0 -20
- package/dist/node_modules/@npmcli/fs/lib/with-temp-dir.js +0 -39
- package/dist/node_modules/@npmcli/fs/package.json +0 -54
- package/dist/node_modules/@npmcli/redact/lib/deep-map.js +0 -71
- package/dist/node_modules/@npmcli/redact/lib/error.js +0 -28
- package/dist/node_modules/@npmcli/redact/lib/index.js +0 -44
- package/dist/node_modules/@npmcli/redact/lib/matchers.js +0 -88
- package/dist/node_modules/@npmcli/redact/lib/server.js +0 -59
- package/dist/node_modules/@npmcli/redact/lib/utils.js +0 -202
- package/dist/node_modules/@npmcli/redact/package.json +0 -52
- package/dist/node_modules/agent-base/LICENSE +0 -22
- package/dist/node_modules/agent-base/dist/helpers.js +0 -66
- package/dist/node_modules/agent-base/dist/index.js +0 -178
- package/dist/node_modules/agent-base/package.json +0 -46
- package/dist/node_modules/balanced-match/dist/commonjs/index.js +0 -59
- package/dist/node_modules/balanced-match/dist/esm/index.js +0 -54
- package/dist/node_modules/balanced-match/package.json +0 -68
- package/dist/node_modules/brace-expansion/LICENSE +0 -23
- package/dist/node_modules/brace-expansion/dist/commonjs/index.js +0 -201
- package/dist/node_modules/brace-expansion/dist/commonjs/package.json +0 -3
- package/dist/node_modules/brace-expansion/dist/esm/index.js +0 -197
- package/dist/node_modules/brace-expansion/dist/esm/package.json +0 -3
- package/dist/node_modules/brace-expansion/package.json +0 -64
- package/dist/node_modules/cacache/lib/content/path.js +0 -29
- package/dist/node_modules/cacache/lib/content/read.js +0 -165
- package/dist/node_modules/cacache/lib/content/rm.js +0 -18
- package/dist/node_modules/cacache/lib/content/write.js +0 -206
- package/dist/node_modules/cacache/lib/entry-index.js +0 -336
- package/dist/node_modules/cacache/lib/get.js +0 -170
- package/dist/node_modules/cacache/lib/index.js +0 -42
- package/dist/node_modules/cacache/lib/memoization.js +0 -72
- package/dist/node_modules/cacache/lib/put.js +0 -80
- package/dist/node_modules/cacache/lib/rm.js +0 -31
- package/dist/node_modules/cacache/lib/util/glob.js +0 -7
- package/dist/node_modules/cacache/lib/util/hash-to-segments.js +0 -7
- package/dist/node_modules/cacache/lib/util/tmp.js +0 -32
- package/dist/node_modules/cacache/lib/verify.js +0 -258
- package/dist/node_modules/cacache/package.json +0 -81
- package/dist/node_modules/debug/LICENSE +0 -20
- package/dist/node_modules/debug/package.json +0 -64
- package/dist/node_modules/debug/src/browser.js +0 -272
- package/dist/node_modules/debug/src/common.js +0 -292
- package/dist/node_modules/debug/src/index.js +0 -10
- package/dist/node_modules/debug/src/node.js +0 -263
- package/dist/node_modules/fs-minipass/LICENSE +0 -15
- package/dist/node_modules/fs-minipass/lib/index.js +0 -443
- package/dist/node_modules/fs-minipass/package.json +0 -54
- package/dist/node_modules/glob/dist/commonjs/glob.js +0 -248
- package/dist/node_modules/glob/dist/commonjs/has-magic.js +0 -27
- package/dist/node_modules/glob/dist/commonjs/ignore.js +0 -119
- package/dist/node_modules/glob/dist/commonjs/index.js +0 -68
- package/dist/node_modules/glob/dist/commonjs/index.min.js +0 -4
- package/dist/node_modules/glob/dist/commonjs/package.json +0 -3
- package/dist/node_modules/glob/dist/commonjs/pattern.js +0 -223
- package/dist/node_modules/glob/dist/commonjs/processor.js +0 -301
- package/dist/node_modules/glob/dist/commonjs/walker.js +0 -387
- package/dist/node_modules/glob/dist/esm/glob.js +0 -244
- package/dist/node_modules/glob/dist/esm/has-magic.js +0 -23
- package/dist/node_modules/glob/dist/esm/ignore.js +0 -115
- package/dist/node_modules/glob/dist/esm/index.js +0 -55
- package/dist/node_modules/glob/dist/esm/index.min.js +0 -4
- package/dist/node_modules/glob/dist/esm/package.json +0 -3
- package/dist/node_modules/glob/dist/esm/pattern.js +0 -219
- package/dist/node_modules/glob/dist/esm/processor.js +0 -294
- package/dist/node_modules/glob/dist/esm/walker.js +0 -381
- package/dist/node_modules/glob/package.json +0 -98
- package/dist/node_modules/http-cache-semantics/LICENSE +0 -9
- package/dist/node_modules/http-cache-semantics/index.js +0 -928
- package/dist/node_modules/http-cache-semantics/package.json +0 -22
- package/dist/node_modules/http-proxy-agent/LICENSE +0 -22
- package/dist/node_modules/http-proxy-agent/dist/index.js +0 -148
- package/dist/node_modules/http-proxy-agent/package.json +0 -47
- package/dist/node_modules/https-proxy-agent/LICENSE +0 -22
- package/dist/node_modules/https-proxy-agent/dist/index.js +0 -180
- package/dist/node_modules/https-proxy-agent/dist/parse-proxy-response.js +0 -101
- package/dist/node_modules/https-proxy-agent/package.json +0 -50
- package/dist/node_modules/iconv-lite/LICENSE +0 -21
- package/dist/node_modules/iconv-lite/encodings/dbcs-codec.js +0 -532
- package/dist/node_modules/iconv-lite/encodings/dbcs-data.js +0 -185
- package/dist/node_modules/iconv-lite/encodings/index.js +0 -23
- package/dist/node_modules/iconv-lite/encodings/internal.js +0 -218
- package/dist/node_modules/iconv-lite/encodings/sbcs-codec.js +0 -75
- package/dist/node_modules/iconv-lite/encodings/sbcs-data-generated.js +0 -451
- package/dist/node_modules/iconv-lite/encodings/sbcs-data.js +0 -178
- package/dist/node_modules/iconv-lite/encodings/tables/big5-added.json +0 -122
- package/dist/node_modules/iconv-lite/encodings/tables/cp936.json +0 -264
- package/dist/node_modules/iconv-lite/encodings/tables/cp949.json +0 -273
- package/dist/node_modules/iconv-lite/encodings/tables/cp950.json +0 -177
- package/dist/node_modules/iconv-lite/encodings/tables/eucjp.json +0 -182
- package/dist/node_modules/iconv-lite/encodings/tables/gb18030-ranges.json +0 -1
- package/dist/node_modules/iconv-lite/encodings/tables/gbk-added.json +0 -56
- package/dist/node_modules/iconv-lite/encodings/tables/shiftjis.json +0 -125
- package/dist/node_modules/iconv-lite/encodings/utf16.js +0 -187
- package/dist/node_modules/iconv-lite/encodings/utf32.js +0 -307
- package/dist/node_modules/iconv-lite/encodings/utf7.js +0 -283
- package/dist/node_modules/iconv-lite/lib/bom-handling.js +0 -48
- package/dist/node_modules/iconv-lite/lib/helpers/merge-exports.js +0 -13
- package/dist/node_modules/iconv-lite/lib/index.js +0 -182
- package/dist/node_modules/iconv-lite/lib/streams.js +0 -105
- package/dist/node_modules/iconv-lite/package.json +0 -70
- package/dist/node_modules/ip-address/LICENSE +0 -19
- package/dist/node_modules/ip-address/dist/address-error.js +0 -12
- package/dist/node_modules/ip-address/dist/common.js +0 -46
- package/dist/node_modules/ip-address/dist/ip-address.js +0 -35
- package/dist/node_modules/ip-address/dist/ipv4.js +0 -360
- package/dist/node_modules/ip-address/dist/ipv6.js +0 -1003
- package/dist/node_modules/ip-address/dist/v4/constants.js +0 -8
- package/dist/node_modules/ip-address/dist/v6/constants.js +0 -76
- package/dist/node_modules/ip-address/dist/v6/helpers.js +0 -45
- package/dist/node_modules/ip-address/dist/v6/regular-expressions.js +0 -95
- package/dist/node_modules/ip-address/package.json +0 -78
- package/dist/node_modules/lru-cache/dist/commonjs/diagnostics-channel.js +0 -10
- package/dist/node_modules/lru-cache/dist/commonjs/index.js +0 -1692
- package/dist/node_modules/lru-cache/dist/commonjs/index.min.js +0 -2
- package/dist/node_modules/lru-cache/dist/commonjs/package.json +0 -3
- package/dist/node_modules/lru-cache/dist/esm/browser/diagnostics-channel.js +0 -4
- package/dist/node_modules/lru-cache/dist/esm/browser/index.js +0 -1688
- package/dist/node_modules/lru-cache/dist/esm/browser/index.min.js +0 -2
- package/dist/node_modules/lru-cache/dist/esm/diagnostics-channel.js +0 -19
- package/dist/node_modules/lru-cache/dist/esm/index.js +0 -1688
- package/dist/node_modules/lru-cache/dist/esm/index.min.js +0 -2
- package/dist/node_modules/lru-cache/dist/esm/node/diagnostics-channel.js +0 -7
- package/dist/node_modules/lru-cache/dist/esm/node/index.js +0 -1688
- package/dist/node_modules/lru-cache/dist/esm/node/index.min.js +0 -2
- package/dist/node_modules/lru-cache/dist/esm/package.json +0 -3
- package/dist/node_modules/lru-cache/package.json +0 -126
- package/dist/node_modules/make-fetch-happen/LICENSE +0 -16
- package/dist/node_modules/make-fetch-happen/lib/cache/entry.js +0 -471
- package/dist/node_modules/make-fetch-happen/lib/cache/errors.js +0 -11
- package/dist/node_modules/make-fetch-happen/lib/cache/index.js +0 -49
- package/dist/node_modules/make-fetch-happen/lib/cache/key.js +0 -17
- package/dist/node_modules/make-fetch-happen/lib/cache/policy.js +0 -161
- package/dist/node_modules/make-fetch-happen/lib/fetch.js +0 -118
- package/dist/node_modules/make-fetch-happen/lib/index.js +0 -41
- package/dist/node_modules/make-fetch-happen/lib/options.js +0 -59
- package/dist/node_modules/make-fetch-happen/lib/pipeline.js +0 -41
- package/dist/node_modules/make-fetch-happen/lib/remote.js +0 -134
- package/dist/node_modules/make-fetch-happen/package.json +0 -75
- package/dist/node_modules/minimatch/dist/commonjs/assert-valid-pattern.js +0 -14
- package/dist/node_modules/minimatch/dist/commonjs/ast.js +0 -845
- package/dist/node_modules/minimatch/dist/commonjs/brace-expressions.js +0 -150
- package/dist/node_modules/minimatch/dist/commonjs/escape.js +0 -30
- package/dist/node_modules/minimatch/dist/commonjs/index.js +0 -1127
- package/dist/node_modules/minimatch/dist/commonjs/package.json +0 -3
- package/dist/node_modules/minimatch/dist/commonjs/unescape.js +0 -38
- package/dist/node_modules/minimatch/dist/esm/assert-valid-pattern.js +0 -10
- package/dist/node_modules/minimatch/dist/esm/ast.js +0 -841
- package/dist/node_modules/minimatch/dist/esm/brace-expressions.js +0 -146
- package/dist/node_modules/minimatch/dist/esm/escape.js +0 -26
- package/dist/node_modules/minimatch/dist/esm/index.js +0 -1114
- package/dist/node_modules/minimatch/dist/esm/package.json +0 -3
- package/dist/node_modules/minimatch/dist/esm/unescape.js +0 -34
- package/dist/node_modules/minimatch/package.json +0 -73
- package/dist/node_modules/minipass-collect/LICENSE +0 -15
- package/dist/node_modules/minipass-collect/index.js +0 -71
- package/dist/node_modules/minipass-collect/package.json +0 -30
- package/dist/node_modules/minipass-fetch/LICENSE +0 -28
- package/dist/node_modules/minipass-fetch/lib/abort-error.js +0 -17
- package/dist/node_modules/minipass-fetch/lib/blob.js +0 -97
- package/dist/node_modules/minipass-fetch/lib/body.js +0 -360
- package/dist/node_modules/minipass-fetch/lib/fetch-error.js +0 -32
- package/dist/node_modules/minipass-fetch/lib/headers.js +0 -267
- package/dist/node_modules/minipass-fetch/lib/index.js +0 -376
- package/dist/node_modules/minipass-fetch/lib/request.js +0 -282
- package/dist/node_modules/minipass-fetch/lib/response.js +0 -90
- package/dist/node_modules/minipass-fetch/package.json +0 -70
- package/dist/node_modules/minipass-flush/index.js +0 -39
- package/dist/node_modules/minipass-flush/node_modules/minipass/LICENSE +0 -15
- package/dist/node_modules/minipass-flush/node_modules/minipass/index.js +0 -649
- package/dist/node_modules/minipass-flush/node_modules/minipass/package.json +0 -56
- package/dist/node_modules/minipass-flush/package.json +0 -42
- package/dist/node_modules/minipass-pipeline/LICENSE +0 -15
- package/dist/node_modules/minipass-pipeline/index.js +0 -128
- package/dist/node_modules/minipass-pipeline/node_modules/minipass/LICENSE +0 -15
- package/dist/node_modules/minipass-pipeline/node_modules/minipass/index.js +0 -649
- package/dist/node_modules/minipass-pipeline/node_modules/minipass/package.json +0 -56
- package/dist/node_modules/minipass-pipeline/package.json +0 -29
- package/dist/node_modules/minipass-sized/LICENSE +0 -15
- package/dist/node_modules/minipass-sized/dist/commonjs/index.js +0 -69
- package/dist/node_modules/minipass-sized/dist/commonjs/package.json +0 -3
- package/dist/node_modules/minipass-sized/dist/esm/index.js +0 -64
- package/dist/node_modules/minipass-sized/dist/esm/package.json +0 -3
- package/dist/node_modules/minipass-sized/package.json +0 -69
- package/dist/node_modules/ms/index.js +0 -162
- package/dist/node_modules/ms/package.json +0 -38
- package/dist/node_modules/negotiator/LICENSE +0 -24
- package/dist/node_modules/negotiator/index.js +0 -83
- package/dist/node_modules/negotiator/lib/charset.js +0 -169
- package/dist/node_modules/negotiator/lib/encoding.js +0 -205
- package/dist/node_modules/negotiator/lib/language.js +0 -179
- package/dist/node_modules/negotiator/lib/mediaType.js +0 -294
- package/dist/node_modules/negotiator/package.json +0 -43
- package/dist/node_modules/p-map/index.js +0 -283
- package/dist/node_modules/p-map/license +0 -9
- package/dist/node_modules/p-map/package.json +0 -57
- package/dist/node_modules/path-scurry/dist/commonjs/index.js +0 -2018
- package/dist/node_modules/path-scurry/dist/commonjs/package.json +0 -3
- package/dist/node_modules/path-scurry/dist/esm/index.js +0 -1983
- package/dist/node_modules/path-scurry/dist/esm/package.json +0 -3
- package/dist/node_modules/path-scurry/package.json +0 -72
- package/dist/node_modules/safer-buffer/dangerous.js +0 -58
- package/dist/node_modules/safer-buffer/package.json +0 -34
- package/dist/node_modules/safer-buffer/safer.js +0 -77
- package/dist/node_modules/safer-buffer/tests.js +0 -406
- package/dist/node_modules/smart-buffer/.prettierrc.yaml +0 -5
- package/dist/node_modules/smart-buffer/LICENSE +0 -20
- package/dist/node_modules/smart-buffer/build/smartbuffer.js +0 -1233
- package/dist/node_modules/smart-buffer/build/utils.js +0 -108
- package/dist/node_modules/smart-buffer/package.json +0 -79
- package/dist/node_modules/socks/.eslintrc.cjs +0 -11
- package/dist/node_modules/socks/.prettierrc.yaml +0 -7
- package/dist/node_modules/socks/LICENSE +0 -20
- package/dist/node_modules/socks/build/client/socksclient.js +0 -793
- package/dist/node_modules/socks/build/common/constants.js +0 -108
- package/dist/node_modules/socks/build/common/helpers.js +0 -167
- package/dist/node_modules/socks/build/common/receivebuffer.js +0 -43
- package/dist/node_modules/socks/build/common/util.js +0 -25
- package/dist/node_modules/socks/build/index.js +0 -18
- package/dist/node_modules/socks/package.json +0 -58
- package/dist/node_modules/socks-proxy-agent/LICENSE +0 -22
- package/dist/node_modules/socks-proxy-agent/dist/index.js +0 -195
- package/dist/node_modules/socks-proxy-agent/package.json +0 -142
- package/dist/node_modules/ssri/lib/index.js +0 -550
- package/dist/node_modules/ssri/package.json +0 -66
- package/dist/node_modules/tar/node_modules/yallist/dist/commonjs/package.json +0 -3
- package/dist/node_modules/tar/node_modules/yallist/dist/esm/package.json +0 -3
- package/dist/node_modules/tar/node_modules/yallist/package.json +0 -68
- package/dist/node_modules/yallist/LICENSE +0 -15
- package/dist/node_modules/yallist/iterator.js +0 -8
- package/dist/node_modules/yallist/yallist.js +0 -426
- /package/dist/node_modules/{tar/node_modules/yallist → yallist}/dist/commonjs/index.js +0 -0
- /package/dist/node_modules/{balanced-match → yallist}/dist/commonjs/package.json +0 -0
- /package/dist/node_modules/{tar/node_modules/yallist → yallist}/dist/esm/index.js +0 -0
- /package/dist/node_modules/{balanced-match → yallist}/dist/esm/package.json +0 -0
|
@@ -0,0 +1,371 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const { uid, states, sentCloseFrameState, emptyBuffer, opcodes } = require('./constants')
|
|
4
|
+
const {
|
|
5
|
+
kReadyState,
|
|
6
|
+
kSentClose,
|
|
7
|
+
kByteParser,
|
|
8
|
+
kReceivedClose,
|
|
9
|
+
kResponse
|
|
10
|
+
} = require('./symbols')
|
|
11
|
+
const { fireEvent, failWebsocketConnection, isClosing, isClosed, isEstablished, parseExtensions } = require('./util')
|
|
12
|
+
const { channels } = require('../../core/diagnostics')
|
|
13
|
+
const { CloseEvent } = require('./events')
|
|
14
|
+
const { makeRequest } = require('../fetch/request')
|
|
15
|
+
const { fetching } = require('../fetch/index')
|
|
16
|
+
const { Headers, getHeadersList } = require('../fetch/headers')
|
|
17
|
+
const { getDecodeSplit } = require('../fetch/util')
|
|
18
|
+
const { WebsocketFrameSend } = require('./frame')
|
|
19
|
+
|
|
20
|
+
/** @type {import('crypto')} */
|
|
21
|
+
let crypto
|
|
22
|
+
try {
|
|
23
|
+
crypto = require('node:crypto')
|
|
24
|
+
/* c8 ignore next 3 */
|
|
25
|
+
} catch {
|
|
26
|
+
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* @see https://websockets.spec.whatwg.org/#concept-websocket-establish
|
|
31
|
+
* @param {URL} url
|
|
32
|
+
* @param {string|string[]} protocols
|
|
33
|
+
* @param {import('./websocket').WebSocket} ws
|
|
34
|
+
* @param {(response: any, extensions: string[] | undefined) => void} onEstablish
|
|
35
|
+
* @param {Partial<import('../../types/websocket').WebSocketInit>} options
|
|
36
|
+
*/
|
|
37
|
+
function establishWebSocketConnection (url, protocols, client, ws, onEstablish, options) {
|
|
38
|
+
// 1. Let requestURL be a copy of url, with its scheme set to "http", if url’s
|
|
39
|
+
// scheme is "ws", and to "https" otherwise.
|
|
40
|
+
const requestURL = url
|
|
41
|
+
|
|
42
|
+
requestURL.protocol = url.protocol === 'ws:' ? 'http:' : 'https:'
|
|
43
|
+
|
|
44
|
+
// 2. Let request be a new request, whose URL is requestURL, client is client,
|
|
45
|
+
// service-workers mode is "none", referrer is "no-referrer", mode is
|
|
46
|
+
// "websocket", credentials mode is "include", cache mode is "no-store" ,
|
|
47
|
+
// and redirect mode is "error".
|
|
48
|
+
const request = makeRequest({
|
|
49
|
+
urlList: [requestURL],
|
|
50
|
+
client,
|
|
51
|
+
serviceWorkers: 'none',
|
|
52
|
+
referrer: 'no-referrer',
|
|
53
|
+
mode: 'websocket',
|
|
54
|
+
credentials: 'include',
|
|
55
|
+
cache: 'no-store',
|
|
56
|
+
redirect: 'error'
|
|
57
|
+
})
|
|
58
|
+
|
|
59
|
+
// Note: undici extension, allow setting custom headers.
|
|
60
|
+
if (options.headers) {
|
|
61
|
+
const headersList = getHeadersList(new Headers(options.headers))
|
|
62
|
+
|
|
63
|
+
request.headersList = headersList
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// 3. Append (`Upgrade`, `websocket`) to request’s header list.
|
|
67
|
+
// 4. Append (`Connection`, `Upgrade`) to request’s header list.
|
|
68
|
+
// Note: both of these are handled by undici currently.
|
|
69
|
+
// https://github.com/nodejs/undici/blob/68c269c4144c446f3f1220951338daef4a6b5ec4/lib/client.js#L1397
|
|
70
|
+
|
|
71
|
+
// 5. Let keyValue be a nonce consisting of a randomly selected
|
|
72
|
+
// 16-byte value that has been forgiving-base64-encoded and
|
|
73
|
+
// isomorphic encoded.
|
|
74
|
+
const keyValue = crypto.randomBytes(16).toString('base64')
|
|
75
|
+
|
|
76
|
+
// 6. Append (`Sec-WebSocket-Key`, keyValue) to request’s
|
|
77
|
+
// header list.
|
|
78
|
+
request.headersList.append('sec-websocket-key', keyValue)
|
|
79
|
+
|
|
80
|
+
// 7. Append (`Sec-WebSocket-Version`, `13`) to request’s
|
|
81
|
+
// header list.
|
|
82
|
+
request.headersList.append('sec-websocket-version', '13')
|
|
83
|
+
|
|
84
|
+
// 8. For each protocol in protocols, combine
|
|
85
|
+
// (`Sec-WebSocket-Protocol`, protocol) in request’s header
|
|
86
|
+
// list.
|
|
87
|
+
for (const protocol of protocols) {
|
|
88
|
+
request.headersList.append('sec-websocket-protocol', protocol)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
// 9. Let permessageDeflate be a user-agent defined
|
|
92
|
+
// "permessage-deflate" extension header value.
|
|
93
|
+
// https://github.com/mozilla/gecko-dev/blob/ce78234f5e653a5d3916813ff990f053510227bc/netwerk/protocol/websocket/WebSocketChannel.cpp#L2673
|
|
94
|
+
const permessageDeflate = 'permessage-deflate; client_max_window_bits'
|
|
95
|
+
|
|
96
|
+
// 10. Append (`Sec-WebSocket-Extensions`, permessageDeflate) to
|
|
97
|
+
// request’s header list.
|
|
98
|
+
request.headersList.append('sec-websocket-extensions', permessageDeflate)
|
|
99
|
+
|
|
100
|
+
// 11. Fetch request with useParallelQueue set to true, and
|
|
101
|
+
// processResponse given response being these steps:
|
|
102
|
+
const controller = fetching({
|
|
103
|
+
request,
|
|
104
|
+
useParallelQueue: true,
|
|
105
|
+
dispatcher: options.dispatcher,
|
|
106
|
+
processResponse (response) {
|
|
107
|
+
// 1. If response is a network error or its status is not 101,
|
|
108
|
+
// fail the WebSocket connection.
|
|
109
|
+
if (response.type === 'error' || response.status !== 101) {
|
|
110
|
+
failWebsocketConnection(ws, 'Received network error or non-101 status code.')
|
|
111
|
+
return
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
// 2. If protocols is not the empty list and extracting header
|
|
115
|
+
// list values given `Sec-WebSocket-Protocol` and response’s
|
|
116
|
+
// header list results in null, failure, or the empty byte
|
|
117
|
+
// sequence, then fail the WebSocket connection.
|
|
118
|
+
if (protocols.length !== 0 && !response.headersList.get('Sec-WebSocket-Protocol')) {
|
|
119
|
+
failWebsocketConnection(ws, 'Server did not respond with sent protocols.')
|
|
120
|
+
return
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// 3. Follow the requirements stated step 2 to step 6, inclusive,
|
|
124
|
+
// of the last set of steps in section 4.1 of The WebSocket
|
|
125
|
+
// Protocol to validate response. This either results in fail
|
|
126
|
+
// the WebSocket connection or the WebSocket connection is
|
|
127
|
+
// established.
|
|
128
|
+
|
|
129
|
+
// 2. If the response lacks an |Upgrade| header field or the |Upgrade|
|
|
130
|
+
// header field contains a value that is not an ASCII case-
|
|
131
|
+
// insensitive match for the value "websocket", the client MUST
|
|
132
|
+
// _Fail the WebSocket Connection_.
|
|
133
|
+
if (response.headersList.get('Upgrade')?.toLowerCase() !== 'websocket') {
|
|
134
|
+
failWebsocketConnection(ws, 'Server did not set Upgrade header to "websocket".')
|
|
135
|
+
return
|
|
136
|
+
}
|
|
137
|
+
|
|
138
|
+
// 3. If the response lacks a |Connection| header field or the
|
|
139
|
+
// |Connection| header field doesn't contain a token that is an
|
|
140
|
+
// ASCII case-insensitive match for the value "Upgrade", the client
|
|
141
|
+
// MUST _Fail the WebSocket Connection_.
|
|
142
|
+
if (response.headersList.get('Connection')?.toLowerCase() !== 'upgrade') {
|
|
143
|
+
failWebsocketConnection(ws, 'Server did not set Connection header to "upgrade".')
|
|
144
|
+
return
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
// 4. If the response lacks a |Sec-WebSocket-Accept| header field or
|
|
148
|
+
// the |Sec-WebSocket-Accept| contains a value other than the
|
|
149
|
+
// base64-encoded SHA-1 of the concatenation of the |Sec-WebSocket-
|
|
150
|
+
// Key| (as a string, not base64-decoded) with the string "258EAFA5-
|
|
151
|
+
// E914-47DA-95CA-C5AB0DC85B11" but ignoring any leading and
|
|
152
|
+
// trailing whitespace, the client MUST _Fail the WebSocket
|
|
153
|
+
// Connection_.
|
|
154
|
+
const secWSAccept = response.headersList.get('Sec-WebSocket-Accept')
|
|
155
|
+
const digest = crypto.createHash('sha1').update(keyValue + uid).digest('base64')
|
|
156
|
+
if (secWSAccept !== digest) {
|
|
157
|
+
failWebsocketConnection(ws, 'Incorrect hash received in Sec-WebSocket-Accept header.')
|
|
158
|
+
return
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
// 5. If the response includes a |Sec-WebSocket-Extensions| header
|
|
162
|
+
// field and this header field indicates the use of an extension
|
|
163
|
+
// that was not present in the client's handshake (the server has
|
|
164
|
+
// indicated an extension not requested by the client), the client
|
|
165
|
+
// MUST _Fail the WebSocket Connection_. (The parsing of this
|
|
166
|
+
// header field to determine which extensions are requested is
|
|
167
|
+
// discussed in Section 9.1.)
|
|
168
|
+
const secExtension = response.headersList.get('Sec-WebSocket-Extensions')
|
|
169
|
+
let extensions
|
|
170
|
+
|
|
171
|
+
if (secExtension !== null) {
|
|
172
|
+
extensions = parseExtensions(secExtension)
|
|
173
|
+
|
|
174
|
+
if (!extensions.has('permessage-deflate')) {
|
|
175
|
+
failWebsocketConnection(ws, 'Sec-WebSocket-Extensions header does not match.')
|
|
176
|
+
return
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// 6. If the response includes a |Sec-WebSocket-Protocol| header field
|
|
181
|
+
// and this header field indicates the use of a subprotocol that was
|
|
182
|
+
// not present in the client's handshake (the server has indicated a
|
|
183
|
+
// subprotocol not requested by the client), the client MUST _Fail
|
|
184
|
+
// the WebSocket Connection_.
|
|
185
|
+
const secProtocol = response.headersList.get('Sec-WebSocket-Protocol')
|
|
186
|
+
|
|
187
|
+
if (secProtocol !== null) {
|
|
188
|
+
const requestProtocols = getDecodeSplit('sec-websocket-protocol', request.headersList)
|
|
189
|
+
|
|
190
|
+
// The client can request that the server use a specific subprotocol by
|
|
191
|
+
// including the |Sec-WebSocket-Protocol| field in its handshake. If it
|
|
192
|
+
// is specified, the server needs to include the same field and one of
|
|
193
|
+
// the selected subprotocol values in its response for the connection to
|
|
194
|
+
// be established.
|
|
195
|
+
if (!requestProtocols.includes(secProtocol)) {
|
|
196
|
+
failWebsocketConnection(ws, 'Protocol was not set in the opening handshake.')
|
|
197
|
+
return
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
response.socket.on('data', onSocketData)
|
|
202
|
+
response.socket.on('close', onSocketClose)
|
|
203
|
+
response.socket.on('error', onSocketError)
|
|
204
|
+
|
|
205
|
+
if (channels.open.hasSubscribers) {
|
|
206
|
+
channels.open.publish({
|
|
207
|
+
address: response.socket.address(),
|
|
208
|
+
protocol: secProtocol,
|
|
209
|
+
extensions: secExtension
|
|
210
|
+
})
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
onEstablish(response, extensions)
|
|
214
|
+
}
|
|
215
|
+
})
|
|
216
|
+
|
|
217
|
+
return controller
|
|
218
|
+
}
|
|
219
|
+
|
|
220
|
+
function closeWebSocketConnection (ws, code, reason, reasonByteLength) {
|
|
221
|
+
if (isClosing(ws) || isClosed(ws)) {
|
|
222
|
+
// If this's ready state is CLOSING (2) or CLOSED (3)
|
|
223
|
+
// Do nothing.
|
|
224
|
+
} else if (!isEstablished(ws)) {
|
|
225
|
+
// If the WebSocket connection is not yet established
|
|
226
|
+
// Fail the WebSocket connection and set this's ready state
|
|
227
|
+
// to CLOSING (2).
|
|
228
|
+
failWebsocketConnection(ws, 'Connection was closed before it was established.')
|
|
229
|
+
ws[kReadyState] = states.CLOSING
|
|
230
|
+
} else if (ws[kSentClose] === sentCloseFrameState.NOT_SENT) {
|
|
231
|
+
// If the WebSocket closing handshake has not yet been started
|
|
232
|
+
// Start the WebSocket closing handshake and set this's ready
|
|
233
|
+
// state to CLOSING (2).
|
|
234
|
+
// - If neither code nor reason is present, the WebSocket Close
|
|
235
|
+
// message must not have a body.
|
|
236
|
+
// - If code is present, then the status code to use in the
|
|
237
|
+
// WebSocket Close message must be the integer given by code.
|
|
238
|
+
// - If reason is also present, then reasonBytes must be
|
|
239
|
+
// provided in the Close message after the status code.
|
|
240
|
+
|
|
241
|
+
ws[kSentClose] = sentCloseFrameState.PROCESSING
|
|
242
|
+
|
|
243
|
+
const frame = new WebsocketFrameSend()
|
|
244
|
+
|
|
245
|
+
// If neither code nor reason is present, the WebSocket Close
|
|
246
|
+
// message must not have a body.
|
|
247
|
+
|
|
248
|
+
// If code is present, then the status code to use in the
|
|
249
|
+
// WebSocket Close message must be the integer given by code.
|
|
250
|
+
if (code !== undefined && reason === undefined) {
|
|
251
|
+
frame.frameData = Buffer.allocUnsafe(2)
|
|
252
|
+
frame.frameData.writeUInt16BE(code, 0)
|
|
253
|
+
} else if (code !== undefined && reason !== undefined) {
|
|
254
|
+
// If reason is also present, then reasonBytes must be
|
|
255
|
+
// provided in the Close message after the status code.
|
|
256
|
+
frame.frameData = Buffer.allocUnsafe(2 + reasonByteLength)
|
|
257
|
+
frame.frameData.writeUInt16BE(code, 0)
|
|
258
|
+
// the body MAY contain UTF-8-encoded data with value /reason/
|
|
259
|
+
frame.frameData.write(reason, 2, 'utf-8')
|
|
260
|
+
} else {
|
|
261
|
+
frame.frameData = emptyBuffer
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/** @type {import('stream').Duplex} */
|
|
265
|
+
const socket = ws[kResponse].socket
|
|
266
|
+
|
|
267
|
+
socket.write(frame.createFrame(opcodes.CLOSE))
|
|
268
|
+
|
|
269
|
+
ws[kSentClose] = sentCloseFrameState.SENT
|
|
270
|
+
|
|
271
|
+
// Upon either sending or receiving a Close control frame, it is said
|
|
272
|
+
// that _The WebSocket Closing Handshake is Started_ and that the
|
|
273
|
+
// WebSocket connection is in the CLOSING state.
|
|
274
|
+
ws[kReadyState] = states.CLOSING
|
|
275
|
+
} else {
|
|
276
|
+
// Otherwise
|
|
277
|
+
// Set this's ready state to CLOSING (2).
|
|
278
|
+
ws[kReadyState] = states.CLOSING
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
|
|
282
|
+
/**
|
|
283
|
+
* @param {Buffer} chunk
|
|
284
|
+
*/
|
|
285
|
+
function onSocketData (chunk) {
|
|
286
|
+
if (!this.ws[kByteParser].write(chunk)) {
|
|
287
|
+
this.pause()
|
|
288
|
+
}
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
/**
|
|
292
|
+
* @see https://websockets.spec.whatwg.org/#feedback-from-the-protocol
|
|
293
|
+
* @see https://datatracker.ietf.org/doc/html/rfc6455#section-7.1.4
|
|
294
|
+
*/
|
|
295
|
+
function onSocketClose () {
|
|
296
|
+
const { ws } = this
|
|
297
|
+
const { [kResponse]: response } = ws
|
|
298
|
+
|
|
299
|
+
response.socket.off('data', onSocketData)
|
|
300
|
+
response.socket.off('close', onSocketClose)
|
|
301
|
+
response.socket.off('error', onSocketError)
|
|
302
|
+
|
|
303
|
+
// If the TCP connection was closed after the
|
|
304
|
+
// WebSocket closing handshake was completed, the WebSocket connection
|
|
305
|
+
// is said to have been closed _cleanly_.
|
|
306
|
+
const wasClean = ws[kSentClose] === sentCloseFrameState.SENT && ws[kReceivedClose]
|
|
307
|
+
|
|
308
|
+
let code = 1005
|
|
309
|
+
let reason = ''
|
|
310
|
+
|
|
311
|
+
const result = ws[kByteParser].closingInfo
|
|
312
|
+
|
|
313
|
+
if (result && !result.error) {
|
|
314
|
+
code = result.code ?? 1005
|
|
315
|
+
reason = result.reason
|
|
316
|
+
} else if (!ws[kReceivedClose]) {
|
|
317
|
+
// If _The WebSocket
|
|
318
|
+
// Connection is Closed_ and no Close control frame was received by the
|
|
319
|
+
// endpoint (such as could occur if the underlying transport connection
|
|
320
|
+
// is lost), _The WebSocket Connection Close Code_ is considered to be
|
|
321
|
+
// 1006.
|
|
322
|
+
code = 1006
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// 1. Change the ready state to CLOSED (3).
|
|
326
|
+
ws[kReadyState] = states.CLOSED
|
|
327
|
+
|
|
328
|
+
// 2. If the user agent was required to fail the WebSocket
|
|
329
|
+
// connection, or if the WebSocket connection was closed
|
|
330
|
+
// after being flagged as full, fire an event named error
|
|
331
|
+
// at the WebSocket object.
|
|
332
|
+
// TODO
|
|
333
|
+
|
|
334
|
+
// 3. Fire an event named close at the WebSocket object,
|
|
335
|
+
// using CloseEvent, with the wasClean attribute
|
|
336
|
+
// initialized to true if the connection closed cleanly
|
|
337
|
+
// and false otherwise, the code attribute initialized to
|
|
338
|
+
// the WebSocket connection close code, and the reason
|
|
339
|
+
// attribute initialized to the result of applying UTF-8
|
|
340
|
+
// decode without BOM to the WebSocket connection close
|
|
341
|
+
// reason.
|
|
342
|
+
// TODO: process.nextTick
|
|
343
|
+
fireEvent('close', ws, (type, init) => new CloseEvent(type, init), {
|
|
344
|
+
wasClean, code, reason
|
|
345
|
+
})
|
|
346
|
+
|
|
347
|
+
if (channels.close.hasSubscribers) {
|
|
348
|
+
channels.close.publish({
|
|
349
|
+
websocket: ws,
|
|
350
|
+
code,
|
|
351
|
+
reason
|
|
352
|
+
})
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
|
|
356
|
+
function onSocketError (error) {
|
|
357
|
+
const { ws } = this
|
|
358
|
+
|
|
359
|
+
ws[kReadyState] = states.CLOSING
|
|
360
|
+
|
|
361
|
+
if (channels.socketError.hasSubscribers) {
|
|
362
|
+
channels.socketError.publish(error)
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
this.destroy()
|
|
366
|
+
}
|
|
367
|
+
|
|
368
|
+
module.exports = {
|
|
369
|
+
establishWebSocketConnection,
|
|
370
|
+
closeWebSocketConnection
|
|
371
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
// This is a Globally Unique Identifier unique used
|
|
4
|
+
// to validate that the endpoint accepts websocket
|
|
5
|
+
// connections.
|
|
6
|
+
// See https://www.rfc-editor.org/rfc/rfc6455.html#section-1.3
|
|
7
|
+
const uid = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'
|
|
8
|
+
|
|
9
|
+
/** @type {PropertyDescriptor} */
|
|
10
|
+
const staticPropertyDescriptors = {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
writable: false,
|
|
13
|
+
configurable: false
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const states = {
|
|
17
|
+
CONNECTING: 0,
|
|
18
|
+
OPEN: 1,
|
|
19
|
+
CLOSING: 2,
|
|
20
|
+
CLOSED: 3
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
const sentCloseFrameState = {
|
|
24
|
+
NOT_SENT: 0,
|
|
25
|
+
PROCESSING: 1,
|
|
26
|
+
SENT: 2
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const opcodes = {
|
|
30
|
+
CONTINUATION: 0x0,
|
|
31
|
+
TEXT: 0x1,
|
|
32
|
+
BINARY: 0x2,
|
|
33
|
+
CLOSE: 0x8,
|
|
34
|
+
PING: 0x9,
|
|
35
|
+
PONG: 0xA
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const maxUnsigned16Bit = 2 ** 16 - 1 // 65535
|
|
39
|
+
|
|
40
|
+
const parserStates = {
|
|
41
|
+
INFO: 0,
|
|
42
|
+
PAYLOADLENGTH_16: 2,
|
|
43
|
+
PAYLOADLENGTH_64: 3,
|
|
44
|
+
READ_DATA: 4
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const emptyBuffer = Buffer.allocUnsafe(0)
|
|
48
|
+
|
|
49
|
+
const sendHints = {
|
|
50
|
+
string: 1,
|
|
51
|
+
typedArray: 2,
|
|
52
|
+
arrayBuffer: 3,
|
|
53
|
+
blob: 4
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
module.exports = {
|
|
57
|
+
uid,
|
|
58
|
+
sentCloseFrameState,
|
|
59
|
+
staticPropertyDescriptors,
|
|
60
|
+
states,
|
|
61
|
+
opcodes,
|
|
62
|
+
maxUnsigned16Bit,
|
|
63
|
+
parserStates,
|
|
64
|
+
emptyBuffer,
|
|
65
|
+
sendHints
|
|
66
|
+
}
|