@highstate/designer 0.20.0 → 0.21.1
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/.output/nitro.json +4 -4
- package/.output/public/_nuxt/{f3TOpYbw.js → -OnKOwAh.js} +1 -1
- package/.output/public/_nuxt/32ctXXKs.js +1 -0
- package/.output/public/_nuxt/{DCR009rv.js → 5gjbd9sK.js} +1 -1
- package/.output/public/_nuxt/{DQHHT9y-.js → 9OHRRPkh.js} +1 -1
- package/.output/public/_nuxt/{Dbwml2gB.js → B-dJABhs.js} +1 -1
- package/.output/public/_nuxt/{rcFevLEP.js → B2SoM2pd.js} +1 -1
- package/.output/public/_nuxt/{G13IRnB2.js → B4FDp1sn.js} +1 -1
- package/.output/public/_nuxt/{BxaP9l2T.js → B7RpoNQl.js} +1 -1
- package/.output/public/_nuxt/BA47KaF1.js +1 -0
- package/.output/public/_nuxt/{Cm-2nZ05.js → BArXRmKu.js} +1 -1
- package/.output/public/_nuxt/{ziXKbM2N.js → BCJKqJxW.js} +1 -1
- package/.output/public/_nuxt/{BDs6uo3D.js → BD_Kvn-W.js} +1 -1
- package/.output/public/_nuxt/{CV5MeYf9.js → BIPWeF69.js} +1 -1
- package/.output/public/_nuxt/{DxERyYWQ.js → BKIVPvZX.js} +1 -1
- package/.output/public/_nuxt/BN7gUcg9.js +1 -0
- package/.output/public/_nuxt/{CcOKGYBt.js → BTd2ZN65.js} +1 -1
- package/.output/public/_nuxt/{D6fh7rEe.js → BXphdu9w.js} +1 -1
- package/.output/public/_nuxt/{BuJgCY_C.js → BYmSxWA_.js} +1 -1
- package/.output/public/_nuxt/{BkNNRtnm.js → BdRuKvw2.js} +1 -1
- package/.output/public/_nuxt/{BA0jw7CM.js → Bdd5S2WL.js} +1 -1
- package/.output/public/_nuxt/BeH2EWoN.js +1 -0
- package/.output/public/_nuxt/{CPZSvMBB.js → BhozkjGO.js} +1 -1
- package/.output/public/_nuxt/{xp27HhqZ.js → Bl_Sz9PU.js} +1 -1
- package/.output/public/_nuxt/{ChaZkl1J.js → Bs8TB6Bu.js} +1 -1
- package/.output/public/_nuxt/{DsS90Fp6.js → BtrNScOx.js} +1 -1
- package/.output/public/_nuxt/{DyMmfYiE.js → Bu1xs0Fv.js} +1 -1
- package/.output/public/_nuxt/{o_m1mZtJ.js → BupMEc6X.js} +1 -1
- package/.output/public/_nuxt/{GDxZ_Nvm.js → Bv_vOb-Y.js} +1 -1
- package/.output/public/_nuxt/{rgN_MdZl.js → BwKAHWnp.js} +1 -1
- package/.output/public/_nuxt/{CaJ-zn_Z.js → ByE1aAlg.js} +1 -1
- package/.output/public/_nuxt/{BDAHnC4j.js → BzhaMbyl.js} +1 -1
- package/.output/public/_nuxt/{Aopv2gwH.js → C2zyO9uX.js} +1 -1
- package/.output/public/_nuxt/{DOMRsNpU.js → C4XpvUuq.js} +1 -1
- package/.output/public/_nuxt/C5BYcBs_.js +1 -0
- package/.output/public/_nuxt/{tsyQDnRt.js → C973_vs5.js} +1 -1
- package/.output/public/_nuxt/{BlfjmxyP.js → CBIEPWAA.js} +1 -1
- package/.output/public/_nuxt/{BUNf2Yb8.js → CBVcjGJL.js} +1 -1
- package/.output/public/_nuxt/CENFIVCM.js +1 -0
- package/.output/public/_nuxt/{DCinzvm1.js → CJN4g-3R.js} +1 -1
- package/.output/public/_nuxt/{DCBCRx0O.js → CPsHsqGU.js} +1 -1
- package/.output/public/_nuxt/{DWQRqdcR.js → CTRkBkra.js} +1 -1
- package/.output/public/_nuxt/{BLF3u89x.js → CYL3VlR9.js} +1 -1
- package/.output/public/_nuxt/CYpkKp66.js +1 -0
- package/.output/public/_nuxt/{D27ZAKIj.js → CaehGOgh.js} +1 -1
- package/.output/public/_nuxt/{CxEW7TG8.js → CemiMtCX.js} +1 -1
- package/.output/public/_nuxt/{CGscLIrv.js → CgK0fS9t.js} +1 -1
- package/.output/public/_nuxt/{n0RAZLbO.js → CmJE87KM.js} +1 -1
- package/.output/public/_nuxt/Cn-bp-IR.js +1 -0
- package/.output/public/_nuxt/{xdsXwj_J.js → CnhVSb6R.js} +1 -1
- package/.output/public/_nuxt/{9I37tBe7.js → CpGRan2R.js} +1 -1
- package/.output/public/_nuxt/{C1FLL1Qz.js → CqQg8Ldy.js} +1 -1
- package/.output/public/_nuxt/{BJK6uMxG.js → Cs-GjQ8R.js} +1 -1
- package/.output/public/_nuxt/{BPcwi1q2.js → CtbC3i8L.js} +1 -1
- package/.output/public/_nuxt/{xA6NntuA.js → CvSiusML.js} +1 -1
- package/.output/public/_nuxt/CxoCegAs.js +13 -0
- package/.output/public/_nuxt/{BpkvlDNi.js → Cz-197mS.js} +1 -1
- package/.output/public/_nuxt/Cz2AlsmD.js +1 -0
- package/.output/public/_nuxt/{CJWmG4YP.js → D-7HtdRe.js} +1 -1
- package/.output/public/_nuxt/{Dg5xB15N.js → D82vCrfD.js} +1 -1
- package/.output/public/_nuxt/D8l8udqQ.js +1 -0
- package/.output/public/_nuxt/{mUFnM-_q.js → DCK6hB22.js} +1 -1
- package/.output/public/_nuxt/{RNghxpo_.js → DDvzSYfr.js} +1 -1
- package/.output/public/_nuxt/{BEEt8Am7.js → DEtIJe2u.js} +1 -1
- package/.output/public/_nuxt/{BDa1f6PF.js → DHJ62FKo.js} +1 -1
- package/.output/public/_nuxt/{DiTMzCP2.js → DKWXhhCy.js} +1 -1
- package/.output/public/_nuxt/DPOp833l.js +1 -0
- package/.output/public/_nuxt/DRJZaHtK.js +1 -0
- package/.output/public/_nuxt/{RCBWmVHz.js → DSDbyhpJ.js} +1 -1
- package/.output/public/_nuxt/{TsXTqZ29.js → DSeZwD4N.js} +1 -1
- package/.output/public/_nuxt/{DNqd6Nek.js → DSpiceQe.js} +1 -1
- package/.output/public/_nuxt/{CzSiA7V6.js → DTPYfUid.js} +1 -1
- package/.output/public/_nuxt/{BCVaR2pQ.js → DUHba1vY.js} +1 -1
- package/.output/public/_nuxt/{D2obegTF.js → DXyfavJr.js} +1 -1
- package/.output/public/_nuxt/DYE7WIF3.js +1 -0
- package/.output/public/_nuxt/{ZbicA1ry.js → D_wY_uke.js} +1 -1
- package/.output/public/_nuxt/{DKhcu7kD.js → Dahes9VH.js} +1 -1
- package/.output/public/_nuxt/{D-wGZMZP.js → DdvHdmGh.js} +1 -1
- package/.output/public/_nuxt/DgsIRcX7.js +1 -0
- package/.output/public/_nuxt/{BtvRca6l.js → DjAJT7YJ.js} +1 -1
- package/.output/public/_nuxt/{DzWdbJvx.js → Djg8J2AC.js} +1 -1
- package/.output/public/_nuxt/{CudFwYib.js → DkkrdwgN.js} +1 -1
- package/.output/public/_nuxt/{pxXmJ8QX.js → DnpKvmH_.js} +1 -1
- package/.output/public/_nuxt/{B8nw2aST.js → DrWe3t51.js} +1 -1
- package/.output/public/_nuxt/{D2aToa54.js → DsG1SoRB.js} +1 -1
- package/.output/public/_nuxt/{8MSfy8uY.js → DtBrxin9.js} +1 -1
- package/.output/public/_nuxt/{B13uiJCv.js → EnN6XTXK.js} +1 -1
- package/.output/public/_nuxt/{DJN0y8jO.js → Fcs-0n6A.js} +1 -1
- package/.output/public/_nuxt/{DQwYQDb2.js → FtFNcQmh.js} +1 -1
- package/.output/public/_nuxt/{C8lm7lgC.js → GXzlut8R.js} +1 -1
- package/.output/public/_nuxt/{xrNU8mHG.js → Lks7C8cK.js} +1 -1
- package/.output/public/_nuxt/M0WOzN-S.js +269 -0
- package/.output/public/_nuxt/{d-NZQb9b.js → OuCcJFrZ.js} +1 -1
- package/.output/public/_nuxt/{GgtqCdye.js → UD_auLNX.js} +1 -1
- package/.output/public/_nuxt/Ve4PFQV2.js +1 -0
- package/.output/public/_nuxt/{57B6Rca8.js → ZpmLW6rw.js} +1 -1
- package/.output/public/_nuxt/_H4v1dQx.js +1 -0
- package/.output/public/_nuxt/builds/latest.json +1 -1
- package/.output/public/_nuxt/builds/meta/d356de5d-6230-4e66-aba2-c48f455ae207.json +1 -0
- package/.output/public/_nuxt/builds/meta/ed797280-2bf0-44e6-a601-2ff2462bfbbc.json +1 -0
- package/.output/public/_nuxt/{CPpO8vcZ.js → c6k-jVO-.js} +1 -1
- package/.output/public/_nuxt/eo99z4R2.js +1 -0
- package/.output/public/_nuxt/error-404.iOXvqd5J.css +1 -0
- package/.output/public/_nuxt/error-500.D0BgXBui.css +1 -0
- package/.output/public/_nuxt/graph-resolver-E9RSC1Ga.js +180 -0
- package/.output/public/_nuxt/{DWa2aw6r.js → hAFXcJ2_.js} +1 -1
- package/.output/public/_nuxt/monaco-editor.DOXZIHvr.css +1 -0
- package/.output/public/_nuxt/oH_c3LbQ.js +1 -0
- package/.output/public/_nuxt/rZm6bMo-.js +1 -0
- package/.output/public/_nuxt/{ByBNG4eo.js → rscZxuQ2.js} +1 -1
- package/.output/public/_nuxt/sB5TSp0H.js +18 -0
- package/.output/public/_nuxt/{DOPqH6_T.js → wCosSBIO.js} +1 -1
- package/.output/public/_nuxt/{DRfxs3PN.js → xnReCuE4.js} +1 -1
- package/.output/public/_nuxt/{D5z-4QVk.js → y0GN4iGv.js} +1 -1
- package/.output/public/_nuxt/{yaml.worker-C1Cl1y5J.js → yaml.worker-CYOhFCVP.js} +248 -252
- package/.output/server/index.mjs +3959 -9221
- package/.output/server/index.mjs.map +1 -1
- package/.output/server/node_modules/@babel/parser/lib/index.js +1 -1
- package/.output/server/node_modules/@babel/parser/package.json +1 -1
- package/.output/server/node_modules/@trpc/server/dist/adapters/fetch/index.cjs +57 -0
- package/.output/server/node_modules/@trpc/server/dist/adapters/fetch/index.mjs +2 -2
- package/.output/server/node_modules/@trpc/server/dist/codes-BfZsPdy-.cjs +222 -0
- package/.output/server/node_modules/@trpc/server/dist/{contentTypeParsers-SN4WL9ze.mjs → contentTypeParsers-iAFF_pJG.cjs} +7 -2
- package/.output/server/node_modules/@trpc/server/dist/getErrorShape-MR4DZeb7.cjs +341 -0
- package/.output/server/node_modules/@trpc/server/dist/http.cjs +14 -0
- package/.output/server/node_modules/@trpc/server/dist/index.cjs +22 -0
- package/.output/server/node_modules/@trpc/server/dist/index.mjs +2 -2
- package/.output/server/node_modules/@trpc/server/dist/{initTRPC-RoZMIBeA.mjs → initTRPC-B1ggxyJl.mjs} +2 -2
- package/.output/server/node_modules/@trpc/server/dist/initTRPC-BXPPV9Tx.cjs +416 -0
- package/.output/server/node_modules/@trpc/server/dist/observable/index.cjs +13 -0
- package/.output/server/node_modules/@trpc/server/dist/observable-B1Nk6r1H.cjs +181 -0
- package/.output/server/node_modules/@trpc/server/dist/{observable-CUiPknO-.mjs → observable-BVzLuBs6.cjs} +42 -8
- package/.output/server/node_modules/@trpc/server/dist/{parseTRPCMessage-CTow-umk.mjs → parseTRPCMessage-7Ltmq-Fb.cjs} +14 -4
- package/.output/server/node_modules/@trpc/server/dist/resolveResponse-B0CCg8nq.cjs +2365 -0
- package/.output/server/node_modules/@trpc/server/dist/{resolveResponse-BVDlNZwN.mjs → resolveResponse-C5I6V_wc.mjs} +67 -18
- package/.output/server/node_modules/@trpc/server/dist/rpc.cjs +6 -0
- package/.output/server/node_modules/@trpc/server/dist/{tracked-Bjtgv3wJ.mjs → tracked-DiE3uR1B.mjs} +12 -3
- package/.output/server/node_modules/@trpc/server/dist/tracked-Dj_dpOJE.cjs +486 -0
- package/.output/server/node_modules/@trpc/server/package.json +15 -5
- package/.output/server/node_modules/@vue/compiler-core/dist/compiler-core.cjs.prod.js +2 -2
- package/.output/server/node_modules/@vue/compiler-core/package.json +3 -3
- package/.output/server/node_modules/@vue/compiler-dom/dist/compiler-dom.cjs.prod.js +1 -1
- package/.output/server/node_modules/@vue/compiler-dom/package.json +3 -3
- package/.output/server/node_modules/@vue/compiler-ssr/dist/compiler-ssr.cjs.js +1 -1
- package/.output/server/node_modules/@vue/compiler-ssr/package.json +3 -3
- package/.output/server/node_modules/@vue/reactivity/dist/reactivity.cjs.prod.js +31 -13
- package/.output/server/node_modules/@vue/reactivity/package.json +2 -2
- package/.output/server/node_modules/@vue/runtime-core/dist/runtime-core.cjs.prod.js +144 -81
- package/.output/server/node_modules/@vue/runtime-core/package.json +3 -3
- package/.output/server/node_modules/@vue/runtime-dom/dist/runtime-dom.cjs.prod.js +70 -9
- package/.output/server/node_modules/@vue/runtime-dom/package.json +4 -4
- package/.output/server/node_modules/@vue/server-renderer/dist/server-renderer.cjs.prod.js +6 -2
- package/.output/server/node_modules/@vue/server-renderer/package.json +4 -4
- package/.output/server/node_modules/@vue/shared/dist/shared.cjs.prod.js +1 -1
- package/.output/server/node_modules/@vue/shared/package.json +1 -1
- package/.output/server/node_modules/devalue/package.json +5 -2
- package/.output/server/node_modules/devalue/src/base64.js +46 -96
- package/.output/server/node_modules/devalue/src/parse.js +32 -10
- package/.output/server/node_modules/devalue/src/stringify.js +13 -28
- package/.output/server/node_modules/devalue/src/uneval.js +117 -55
- package/.output/server/node_modules/devalue/src/utils.js +3 -7
- package/.output/server/node_modules/hookable/dist/index.mjs +5 -14
- package/.output/server/node_modules/hookable/package.json +24 -23
- package/.output/server/node_modules/trpc-bun-adapter/dist/index.js +406 -0
- package/.output/server/node_modules/trpc-bun-adapter/package.json +44 -0
- package/.output/server/node_modules/unhead/dist/plugins.mjs +3 -3
- package/.output/server/node_modules/unhead/dist/server.mjs +2 -2
- package/.output/server/node_modules/unhead/dist/shared/{unhead.eK9_7LaY.mjs → unhead.B5FWS6X0.mjs} +22 -13
- package/.output/server/node_modules/unhead/dist/shared/{unhead.BFfcxOoW.mjs → unhead.Ct24BOby.mjs} +4 -2
- package/.output/server/node_modules/unhead/dist/shared/unhead.D4vSFytZ.mjs +236 -0
- package/.output/server/node_modules/unhead/dist/shared/{unhead.ckV6dpEQ.mjs → unhead.TxTMM7cM.mjs} +1 -1
- package/.output/server/node_modules/unhead/dist/utils.mjs +1 -1
- package/.output/server/node_modules/unhead/package.json +1 -1
- package/.output/server/node_modules/vue/dist/vue.cjs.js +1 -1
- package/.output/server/node_modules/vue/dist/vue.cjs.prod.js +1 -1
- package/.output/server/node_modules/vue/package.json +7 -7
- package/.output/server/package.json +16 -16
- package/package.json +20 -14
- package/.output/public/_nuxt/83L43bj1.js +0 -1
- package/.output/public/_nuxt/B93PlW-d.js +0 -1
- package/.output/public/_nuxt/BE_Meo09.js +0 -269
- package/.output/public/_nuxt/Ba13S78F.js +0 -1
- package/.output/public/_nuxt/BhRPY-oY.js +0 -1
- package/.output/public/_nuxt/Bhrxn6JZ.js +0 -1
- package/.output/public/_nuxt/Bo8jzlL1.js +0 -18
- package/.output/public/_nuxt/BrzmwbiE.js +0 -1
- package/.output/public/_nuxt/C-sUppwS.js +0 -1
- package/.output/public/_nuxt/C47S-Tmv.js +0 -1
- package/.output/public/_nuxt/CMjwMIkn.js +0 -1
- package/.output/public/_nuxt/CQ8jqdy-.js +0 -1
- package/.output/public/_nuxt/CjoLj4QM.js +0 -1
- package/.output/public/_nuxt/D91rOou-.js +0 -13
- package/.output/public/_nuxt/DMwsHuHA.js +0 -1
- package/.output/public/_nuxt/DYoxhk2S.js +0 -1
- package/.output/public/_nuxt/Dv7Oe6Be.js +0 -1
- package/.output/public/_nuxt/VCDPK7BO.js +0 -1
- package/.output/public/_nuxt/builds/meta/a1fec520-0c95-4ae0-af5e-964780fad341.json +0 -1
- package/.output/public/_nuxt/error-404.X7H_YhdC.css +0 -1
- package/.output/public/_nuxt/error-500.BOQe1fsk.css +0 -1
- package/.output/public/_nuxt/graph-resolver-DKNtntr2.js +0 -180
- package/.output/public/_nuxt/monaco-editor.D_J4ItrK.css +0 -1
- package/.output/server/node_modules/@trpc/server/dist/adapters/ws.mjs +0 -15
- package/.output/server/node_modules/@trpc/server/dist/node-http-DtA2iLK9.mjs +0 -224
- package/.output/server/node_modules/@trpc/server/dist/unstable-core-do-not-import-9NNw8uQM.mjs +0 -31
- package/.output/server/node_modules/@trpc/server/dist/ws-CJgZE7Hg.mjs +0 -460
- package/.output/server/node_modules/unhead/dist/shared/unhead.CApf5sj3.mjs +0 -148
- package/.output/server/node_modules/ws/lib/buffer-util.js +0 -131
- package/.output/server/node_modules/ws/lib/constants.js +0 -19
- package/.output/server/node_modules/ws/lib/event-target.js +0 -292
- package/.output/server/node_modules/ws/lib/extension.js +0 -203
- package/.output/server/node_modules/ws/lib/limiter.js +0 -55
- package/.output/server/node_modules/ws/lib/permessage-deflate.js +0 -528
- package/.output/server/node_modules/ws/lib/receiver.js +0 -706
- package/.output/server/node_modules/ws/lib/sender.js +0 -602
- package/.output/server/node_modules/ws/lib/stream.js +0 -161
- package/.output/server/node_modules/ws/lib/subprotocol.js +0 -62
- package/.output/server/node_modules/ws/lib/validation.js +0 -152
- package/.output/server/node_modules/ws/lib/websocket-server.js +0 -554
- package/.output/server/node_modules/ws/lib/websocket.js +0 -1393
- package/.output/server/node_modules/ws/package.json +0 -69
- package/.output/server/node_modules/ws/wrapper.mjs +0 -8
- package/LICENSE +0 -21
- /package/.output/public/_nuxt/{XEA9GSJd.js → B69Z0Xk1.js} +0 -0
- /package/.output/server/node_modules/@trpc/server/dist/{http-CWyjOa1l.mjs → http-DXy3XyhL.cjs} +0 -0
|
@@ -1,161 +0,0 @@
|
|
|
1
|
-
/* eslint no-unused-vars: ["error", { "varsIgnorePattern": "^WebSocket$" }] */
|
|
2
|
-
'use strict';
|
|
3
|
-
|
|
4
|
-
const WebSocket = require('./websocket');
|
|
5
|
-
const { Duplex } = require('stream');
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* Emits the `'close'` event on a stream.
|
|
9
|
-
*
|
|
10
|
-
* @param {Duplex} stream The stream.
|
|
11
|
-
* @private
|
|
12
|
-
*/
|
|
13
|
-
function emitClose(stream) {
|
|
14
|
-
stream.emit('close');
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* The listener of the `'end'` event.
|
|
19
|
-
*
|
|
20
|
-
* @private
|
|
21
|
-
*/
|
|
22
|
-
function duplexOnEnd() {
|
|
23
|
-
if (!this.destroyed && this._writableState.finished) {
|
|
24
|
-
this.destroy();
|
|
25
|
-
}
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* The listener of the `'error'` event.
|
|
30
|
-
*
|
|
31
|
-
* @param {Error} err The error
|
|
32
|
-
* @private
|
|
33
|
-
*/
|
|
34
|
-
function duplexOnError(err) {
|
|
35
|
-
this.removeListener('error', duplexOnError);
|
|
36
|
-
this.destroy();
|
|
37
|
-
if (this.listenerCount('error') === 0) {
|
|
38
|
-
// Do not suppress the throwing behavior.
|
|
39
|
-
this.emit('error', err);
|
|
40
|
-
}
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Wraps a `WebSocket` in a duplex stream.
|
|
45
|
-
*
|
|
46
|
-
* @param {WebSocket} ws The `WebSocket` to wrap
|
|
47
|
-
* @param {Object} [options] The options for the `Duplex` constructor
|
|
48
|
-
* @return {Duplex} The duplex stream
|
|
49
|
-
* @public
|
|
50
|
-
*/
|
|
51
|
-
function createWebSocketStream(ws, options) {
|
|
52
|
-
let terminateOnDestroy = true;
|
|
53
|
-
|
|
54
|
-
const duplex = new Duplex({
|
|
55
|
-
...options,
|
|
56
|
-
autoDestroy: false,
|
|
57
|
-
emitClose: false,
|
|
58
|
-
objectMode: false,
|
|
59
|
-
writableObjectMode: false
|
|
60
|
-
});
|
|
61
|
-
|
|
62
|
-
ws.on('message', function message(msg, isBinary) {
|
|
63
|
-
const data =
|
|
64
|
-
!isBinary && duplex._readableState.objectMode ? msg.toString() : msg;
|
|
65
|
-
|
|
66
|
-
if (!duplex.push(data)) ws.pause();
|
|
67
|
-
});
|
|
68
|
-
|
|
69
|
-
ws.once('error', function error(err) {
|
|
70
|
-
if (duplex.destroyed) return;
|
|
71
|
-
|
|
72
|
-
// Prevent `ws.terminate()` from being called by `duplex._destroy()`.
|
|
73
|
-
//
|
|
74
|
-
// - If the `'error'` event is emitted before the `'open'` event, then
|
|
75
|
-
// `ws.terminate()` is a noop as no socket is assigned.
|
|
76
|
-
// - Otherwise, the error is re-emitted by the listener of the `'error'`
|
|
77
|
-
// event of the `Receiver` object. The listener already closes the
|
|
78
|
-
// connection by calling `ws.close()`. This allows a close frame to be
|
|
79
|
-
// sent to the other peer. If `ws.terminate()` is called right after this,
|
|
80
|
-
// then the close frame might not be sent.
|
|
81
|
-
terminateOnDestroy = false;
|
|
82
|
-
duplex.destroy(err);
|
|
83
|
-
});
|
|
84
|
-
|
|
85
|
-
ws.once('close', function close() {
|
|
86
|
-
if (duplex.destroyed) return;
|
|
87
|
-
|
|
88
|
-
duplex.push(null);
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
duplex._destroy = function (err, callback) {
|
|
92
|
-
if (ws.readyState === ws.CLOSED) {
|
|
93
|
-
callback(err);
|
|
94
|
-
process.nextTick(emitClose, duplex);
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
let called = false;
|
|
99
|
-
|
|
100
|
-
ws.once('error', function error(err) {
|
|
101
|
-
called = true;
|
|
102
|
-
callback(err);
|
|
103
|
-
});
|
|
104
|
-
|
|
105
|
-
ws.once('close', function close() {
|
|
106
|
-
if (!called) callback(err);
|
|
107
|
-
process.nextTick(emitClose, duplex);
|
|
108
|
-
});
|
|
109
|
-
|
|
110
|
-
if (terminateOnDestroy) ws.terminate();
|
|
111
|
-
};
|
|
112
|
-
|
|
113
|
-
duplex._final = function (callback) {
|
|
114
|
-
if (ws.readyState === ws.CONNECTING) {
|
|
115
|
-
ws.once('open', function open() {
|
|
116
|
-
duplex._final(callback);
|
|
117
|
-
});
|
|
118
|
-
return;
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
// If the value of the `_socket` property is `null` it means that `ws` is a
|
|
122
|
-
// client websocket and the handshake failed. In fact, when this happens, a
|
|
123
|
-
// socket is never assigned to the websocket. Wait for the `'error'` event
|
|
124
|
-
// that will be emitted by the websocket.
|
|
125
|
-
if (ws._socket === null) return;
|
|
126
|
-
|
|
127
|
-
if (ws._socket._writableState.finished) {
|
|
128
|
-
callback();
|
|
129
|
-
if (duplex._readableState.endEmitted) duplex.destroy();
|
|
130
|
-
} else {
|
|
131
|
-
ws._socket.once('finish', function finish() {
|
|
132
|
-
// `duplex` is not destroyed here because the `'end'` event will be
|
|
133
|
-
// emitted on `duplex` after this `'finish'` event. The EOF signaling
|
|
134
|
-
// `null` chunk is, in fact, pushed when the websocket emits `'close'`.
|
|
135
|
-
callback();
|
|
136
|
-
});
|
|
137
|
-
ws.close();
|
|
138
|
-
}
|
|
139
|
-
};
|
|
140
|
-
|
|
141
|
-
duplex._read = function () {
|
|
142
|
-
if (ws.isPaused) ws.resume();
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
duplex._write = function (chunk, encoding, callback) {
|
|
146
|
-
if (ws.readyState === ws.CONNECTING) {
|
|
147
|
-
ws.once('open', function open() {
|
|
148
|
-
duplex._write(chunk, encoding, callback);
|
|
149
|
-
});
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
ws.send(chunk, callback);
|
|
154
|
-
};
|
|
155
|
-
|
|
156
|
-
duplex.on('end', duplexOnEnd);
|
|
157
|
-
duplex.on('error', duplexOnError);
|
|
158
|
-
return duplex;
|
|
159
|
-
}
|
|
160
|
-
|
|
161
|
-
module.exports = createWebSocketStream;
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { tokenChars } = require('./validation');
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Parses the `Sec-WebSocket-Protocol` header into a set of subprotocol names.
|
|
7
|
-
*
|
|
8
|
-
* @param {String} header The field value of the header
|
|
9
|
-
* @return {Set} The subprotocol names
|
|
10
|
-
* @public
|
|
11
|
-
*/
|
|
12
|
-
function parse(header) {
|
|
13
|
-
const protocols = new Set();
|
|
14
|
-
let start = -1;
|
|
15
|
-
let end = -1;
|
|
16
|
-
let i = 0;
|
|
17
|
-
|
|
18
|
-
for (i; i < header.length; i++) {
|
|
19
|
-
const code = header.charCodeAt(i);
|
|
20
|
-
|
|
21
|
-
if (end === -1 && tokenChars[code] === 1) {
|
|
22
|
-
if (start === -1) start = i;
|
|
23
|
-
} else if (
|
|
24
|
-
i !== 0 &&
|
|
25
|
-
(code === 0x20 /* ' ' */ || code === 0x09) /* '\t' */
|
|
26
|
-
) {
|
|
27
|
-
if (end === -1 && start !== -1) end = i;
|
|
28
|
-
} else if (code === 0x2c /* ',' */) {
|
|
29
|
-
if (start === -1) {
|
|
30
|
-
throw new SyntaxError(`Unexpected character at index ${i}`);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
if (end === -1) end = i;
|
|
34
|
-
|
|
35
|
-
const protocol = header.slice(start, end);
|
|
36
|
-
|
|
37
|
-
if (protocols.has(protocol)) {
|
|
38
|
-
throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
protocols.add(protocol);
|
|
42
|
-
start = end = -1;
|
|
43
|
-
} else {
|
|
44
|
-
throw new SyntaxError(`Unexpected character at index ${i}`);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
if (start === -1 || end !== -1) {
|
|
49
|
-
throw new SyntaxError('Unexpected end of input');
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
const protocol = header.slice(start, i);
|
|
53
|
-
|
|
54
|
-
if (protocols.has(protocol)) {
|
|
55
|
-
throw new SyntaxError(`The "${protocol}" subprotocol is duplicated`);
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
protocols.add(protocol);
|
|
59
|
-
return protocols;
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
module.exports = { parse };
|
|
@@ -1,152 +0,0 @@
|
|
|
1
|
-
'use strict';
|
|
2
|
-
|
|
3
|
-
const { isUtf8 } = require('buffer');
|
|
4
|
-
|
|
5
|
-
const { hasBlob } = require('./constants');
|
|
6
|
-
|
|
7
|
-
//
|
|
8
|
-
// Allowed token characters:
|
|
9
|
-
//
|
|
10
|
-
// '!', '#', '$', '%', '&', ''', '*', '+', '-',
|
|
11
|
-
// '.', 0-9, A-Z, '^', '_', '`', a-z, '|', '~'
|
|
12
|
-
//
|
|
13
|
-
// tokenChars[32] === 0 // ' '
|
|
14
|
-
// tokenChars[33] === 1 // '!'
|
|
15
|
-
// tokenChars[34] === 0 // '"'
|
|
16
|
-
// ...
|
|
17
|
-
//
|
|
18
|
-
// prettier-ignore
|
|
19
|
-
const tokenChars = [
|
|
20
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 0 - 15
|
|
21
|
-
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 16 - 31
|
|
22
|
-
0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0, // 32 - 47
|
|
23
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, // 48 - 63
|
|
24
|
-
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 64 - 79
|
|
25
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, // 80 - 95
|
|
26
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, // 96 - 111
|
|
27
|
-
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0 // 112 - 127
|
|
28
|
-
];
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Checks if a status code is allowed in a close frame.
|
|
32
|
-
*
|
|
33
|
-
* @param {Number} code The status code
|
|
34
|
-
* @return {Boolean} `true` if the status code is valid, else `false`
|
|
35
|
-
* @public
|
|
36
|
-
*/
|
|
37
|
-
function isValidStatusCode(code) {
|
|
38
|
-
return (
|
|
39
|
-
(code >= 1000 &&
|
|
40
|
-
code <= 1014 &&
|
|
41
|
-
code !== 1004 &&
|
|
42
|
-
code !== 1005 &&
|
|
43
|
-
code !== 1006) ||
|
|
44
|
-
(code >= 3000 && code <= 4999)
|
|
45
|
-
);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Checks if a given buffer contains only correct UTF-8.
|
|
50
|
-
* Ported from https://www.cl.cam.ac.uk/%7Emgk25/ucs/utf8_check.c by
|
|
51
|
-
* Markus Kuhn.
|
|
52
|
-
*
|
|
53
|
-
* @param {Buffer} buf The buffer to check
|
|
54
|
-
* @return {Boolean} `true` if `buf` contains only correct UTF-8, else `false`
|
|
55
|
-
* @public
|
|
56
|
-
*/
|
|
57
|
-
function _isValidUTF8(buf) {
|
|
58
|
-
const len = buf.length;
|
|
59
|
-
let i = 0;
|
|
60
|
-
|
|
61
|
-
while (i < len) {
|
|
62
|
-
if ((buf[i] & 0x80) === 0) {
|
|
63
|
-
// 0xxxxxxx
|
|
64
|
-
i++;
|
|
65
|
-
} else if ((buf[i] & 0xe0) === 0xc0) {
|
|
66
|
-
// 110xxxxx 10xxxxxx
|
|
67
|
-
if (
|
|
68
|
-
i + 1 === len ||
|
|
69
|
-
(buf[i + 1] & 0xc0) !== 0x80 ||
|
|
70
|
-
(buf[i] & 0xfe) === 0xc0 // Overlong
|
|
71
|
-
) {
|
|
72
|
-
return false;
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
i += 2;
|
|
76
|
-
} else if ((buf[i] & 0xf0) === 0xe0) {
|
|
77
|
-
// 1110xxxx 10xxxxxx 10xxxxxx
|
|
78
|
-
if (
|
|
79
|
-
i + 2 >= len ||
|
|
80
|
-
(buf[i + 1] & 0xc0) !== 0x80 ||
|
|
81
|
-
(buf[i + 2] & 0xc0) !== 0x80 ||
|
|
82
|
-
(buf[i] === 0xe0 && (buf[i + 1] & 0xe0) === 0x80) || // Overlong
|
|
83
|
-
(buf[i] === 0xed && (buf[i + 1] & 0xe0) === 0xa0) // Surrogate (U+D800 - U+DFFF)
|
|
84
|
-
) {
|
|
85
|
-
return false;
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
i += 3;
|
|
89
|
-
} else if ((buf[i] & 0xf8) === 0xf0) {
|
|
90
|
-
// 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
|
|
91
|
-
if (
|
|
92
|
-
i + 3 >= len ||
|
|
93
|
-
(buf[i + 1] & 0xc0) !== 0x80 ||
|
|
94
|
-
(buf[i + 2] & 0xc0) !== 0x80 ||
|
|
95
|
-
(buf[i + 3] & 0xc0) !== 0x80 ||
|
|
96
|
-
(buf[i] === 0xf0 && (buf[i + 1] & 0xf0) === 0x80) || // Overlong
|
|
97
|
-
(buf[i] === 0xf4 && buf[i + 1] > 0x8f) ||
|
|
98
|
-
buf[i] > 0xf4 // > U+10FFFF
|
|
99
|
-
) {
|
|
100
|
-
return false;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
i += 4;
|
|
104
|
-
} else {
|
|
105
|
-
return false;
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
return true;
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
/**
|
|
113
|
-
* Determines whether a value is a `Blob`.
|
|
114
|
-
*
|
|
115
|
-
* @param {*} value The value to be tested
|
|
116
|
-
* @return {Boolean} `true` if `value` is a `Blob`, else `false`
|
|
117
|
-
* @private
|
|
118
|
-
*/
|
|
119
|
-
function isBlob(value) {
|
|
120
|
-
return (
|
|
121
|
-
hasBlob &&
|
|
122
|
-
typeof value === 'object' &&
|
|
123
|
-
typeof value.arrayBuffer === 'function' &&
|
|
124
|
-
typeof value.type === 'string' &&
|
|
125
|
-
typeof value.stream === 'function' &&
|
|
126
|
-
(value[Symbol.toStringTag] === 'Blob' ||
|
|
127
|
-
value[Symbol.toStringTag] === 'File')
|
|
128
|
-
);
|
|
129
|
-
}
|
|
130
|
-
|
|
131
|
-
module.exports = {
|
|
132
|
-
isBlob,
|
|
133
|
-
isValidStatusCode,
|
|
134
|
-
isValidUTF8: _isValidUTF8,
|
|
135
|
-
tokenChars
|
|
136
|
-
};
|
|
137
|
-
|
|
138
|
-
if (isUtf8) {
|
|
139
|
-
module.exports.isValidUTF8 = function (buf) {
|
|
140
|
-
return buf.length < 24 ? _isValidUTF8(buf) : isUtf8(buf);
|
|
141
|
-
};
|
|
142
|
-
} /* istanbul ignore else */ else if (!process.env.WS_NO_UTF_8_VALIDATE) {
|
|
143
|
-
try {
|
|
144
|
-
const isValidUTF8 = require('utf-8-validate');
|
|
145
|
-
|
|
146
|
-
module.exports.isValidUTF8 = function (buf) {
|
|
147
|
-
return buf.length < 32 ? _isValidUTF8(buf) : isValidUTF8(buf);
|
|
148
|
-
};
|
|
149
|
-
} catch (e) {
|
|
150
|
-
// Continue regardless of the error.
|
|
151
|
-
}
|
|
152
|
-
}
|