@engjts/nexus 0.1.2 → 0.1.3
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/advanced/realtime/websocket.d.ts +0 -1
- package/dist/advanced/realtime/websocket.d.ts.map +1 -1
- package/dist/advanced/realtime/websocket.js +19 -36
- package/dist/advanced/realtime/websocket.js.map +1 -1
- package/dist/cli/templates/index.d.ts.map +1 -1
- package/dist/cli/templates/index.js +2 -0
- package/dist/cli/templates/index.js.map +1 -1
- package/package.json +1 -1
- package/src/advanced/realtime/websocket.ts +30 -10
- package/src/cli/templates/index.ts +2 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../src/advanced/realtime/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../../src/advanced/realtime/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,MAAM,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAetC,MAAM,WAAW,gBAAgB;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IACzC,OAAO,EAAE,eAAe,CAAC,SAAS,CAAC,CAAC;IACpC,IAAI,CAAC,EAAE,GAAG,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IAC/B,GAAG,EAAE;QACD,GAAG,EAAE,eAAe,CAAC;KACxB,CAAC;CACL;AAED,MAAM,WAAW,oBAAoB;IACjC,IAAI,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC/C,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5E,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACxE,SAAS,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtF,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrG,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,gBAAgB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,cAAe,SAAQ,oBAAoB;IACxD,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,eAAe;IAC5B,GAAG,EAAE,gBAAgB,CAAC;IACtB,KAAK,EAAE,cAAc,CAAC;CACzB;AAED;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAC9C,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,GAAG,CAAC,CAAM;IAClB,OAAO,CAAC,WAAW,CAAgD;IACnE,OAAO,CAAC,KAAK,CAAoC;IACjD,OAAO,CAAC,WAAW,CAA4C;IAE/D,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB;IAOnD,MAAM,CAAC,MAAM,EAAE,UAAU;IAuCzB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG;IAWpC,UAAU,CAAC,IAAI,EAAE,MAAM;IAMvB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;IAUxC,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS;IASzC,OAAO,CAAC,cAAc;IAkCtB,OAAO,CAAC,aAAa;IAUrB,OAAO,CAAC,YAAY;IAuBpB,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,IAAI,WAAW;uBAEQ,MAAM;qBACR,MAAM,UAAU,SAAS;sBACxB,MAAM,UAAU,SAAS;0BACrB,MAAM,WAAW,GAAG;;MAG7C;CACJ"}
|
|
@@ -1,42 +1,20 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
3
|
exports.WebSocketGateway = void 0;
|
|
37
4
|
const url_1 = require("url");
|
|
38
5
|
const events_1 = require("events");
|
|
39
|
-
|
|
6
|
+
let WebSocket;
|
|
7
|
+
let WebSocketServer;
|
|
8
|
+
let RawData;
|
|
9
|
+
try {
|
|
10
|
+
const wsModule = require('ws');
|
|
11
|
+
WebSocket = wsModule.default || wsModule;
|
|
12
|
+
WebSocketServer = wsModule.WebSocketServer;
|
|
13
|
+
RawData = wsModule.RawData;
|
|
14
|
+
}
|
|
15
|
+
catch (error) {
|
|
16
|
+
// ws module not installed
|
|
17
|
+
}
|
|
40
18
|
/**
|
|
41
19
|
* WebSocket gateway with room management and authentication hooks
|
|
42
20
|
*/
|
|
@@ -56,7 +34,12 @@ class WebSocketGateway extends events_1.EventEmitter {
|
|
|
56
34
|
if (this.wss) {
|
|
57
35
|
return;
|
|
58
36
|
}
|
|
59
|
-
|
|
37
|
+
if (!WebSocketServer) {
|
|
38
|
+
throw new Error('WebSocket support requires the "ws" package to be installed.\n' +
|
|
39
|
+
'Install it with: npm install ws\n' +
|
|
40
|
+
'Or if using the CLI: nexus create my-app --skip-install && npm install');
|
|
41
|
+
}
|
|
42
|
+
this.wss = new WebSocketServer({ noServer: true });
|
|
60
43
|
server.on('upgrade', async (req, socket, head) => {
|
|
61
44
|
try {
|
|
62
45
|
const pathname = (0, url_1.parse)(req.url || '').pathname || '/';
|
|
@@ -83,7 +66,7 @@ class WebSocketGateway extends events_1.EventEmitter {
|
|
|
83
66
|
if (!sockets)
|
|
84
67
|
return;
|
|
85
68
|
for (const socket of sockets) {
|
|
86
|
-
if (socket.readyState ===
|
|
69
|
+
if (socket.readyState === WebSocket.OPEN) {
|
|
87
70
|
socket.send(JSON.stringify(payload));
|
|
88
71
|
}
|
|
89
72
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/advanced/realtime/websocket.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/advanced/realtime/websocket.ts"],"names":[],"mappings":";;;AACA,6BAAwC;AACxC,mCAAsC;AAEtC,IAAI,SAAc,CAAC;AACnB,IAAI,eAAoB,CAAC;AACzB,IAAI,OAAY,CAAC;AAEjB,IAAI,CAAC;IACD,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/B,SAAS,GAAG,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC;IACzC,eAAe,GAAG,QAAQ,CAAC,eAAe,CAAC;IAC3C,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;AAC/B,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACb,0BAA0B;AAC9B,CAAC;AAgCD;;GAEG;AACH,MAAa,gBAAiB,SAAQ,qBAAY;IACtC,MAAM,GAAgC,IAAI,GAAG,EAAE,CAAC;IAChD,GAAG,CAAO;IACV,WAAW,GAAkC,IAAI,OAAO,EAAE,CAAC;IAC3D,KAAK,GAA0B,IAAI,GAAG,EAAE,CAAC;IACzC,WAAW,GAA8B,IAAI,OAAO,EAAE,CAAC;IAE/D,QAAQ,CAAC,IAAY,EAAE,MAA4B;QAC/C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAC;QAChE,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,CAAC,MAAkB;QACrB,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;YACX,OAAO;QACX,CAAC;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;YACnB,MAAM,IAAI,KAAK,CACX,gEAAgE;gBAChE,mCAAmC;gBACnC,wEAAwE,CAC3E,CAAC;QACN,CAAC;QAED,IAAI,CAAC,GAAG,GAAG,IAAI,eAAe,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnD,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YAC7C,IAAI,CAAC;gBACD,MAAM,QAAQ,GAAG,IAAA,WAAQ,EAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,QAAQ,IAAI,GAAG,CAAC;gBACzD,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAExC,IAAI,CAAC,KAAK,EAAE,CAAC;oBACT,MAAM,CAAC,OAAO,EAAE,CAAC;oBACjB,OAAO;gBACX,CAAC;gBAED,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;gBAC9C,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;oBACb,GAAG,CAAC,IAAI,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACrC,CAAC;gBAED,IAAI,CAAC,GAAI,CAAC,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAa,EAAE,EAAE;oBACzD,IAAI,CAAC,cAAc,CAAC,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;gBACxC,CAAC,CAAC,CAAC;YACP,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,CAAC,OAAO,EAAE,CAAC;YACrB,CAAC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,OAAY;QAChC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC3B,IAAI,MAAM,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBACvC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;IACL,CAAC;IAED,UAAU,CAAC,IAAY;QACnB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;IAED,QAAQ,CAAC,IAAY,EAAE,MAAiB;QACpC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAE,CAAC;QACtC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAEpB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAU,CAAC;QACtE,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAC9C,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,MAAiB;QACrC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO;YAAE,OAAO;QACrB,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEvB,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACjD,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC;IAEO,cAAc,CAAC,MAAW,EAAE,KAAqB,EAAE,GAAqB;QAC5E,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAErC,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;YACrC,IAAI,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;gBACxC,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACb,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAc,EAAE,GAAG,CAAC,CAAC;gBACnD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;YAC3C,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,IAAY,EAAE,MAAc,EAAE,EAAE;YACtD,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC;YACjD,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC,CAAC,CAAC;QAEH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAY,EAAE,EAAE;YACtC,MAAM,KAAK,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC;YAC1C,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,KAAK,IAAI,EAAE;YACb,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;gBACtB,MAAM,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;YAC3C,CAAC;YACD,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAEO,aAAa,CAAC,GAAoB,EAAE,IAAY;QACpD,MAAM,MAAM,GAAG,IAAA,WAAQ,EAAC,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7C,OAAO;YACH,IAAI;YACJ,KAAK,EAAE,MAAM,CAAC,KAA0C;YACxD,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,GAAG,EAAE,EAAE,GAAG,EAAE;SACf,CAAC;IACN,CAAC;IAEO,YAAY,CAAC,IAAS;QAC1B,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,YAAY,WAAW,EAAE,CAAC;YACvD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChE,MAAM,aAAa,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC/C,IAAI,CAAC;gBACD,OAAO,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YACrC,CAAC;YAAC,MAAM,CAAC;gBACL,OAAO,aAAa,CAAC;YACzB,CAAC;QACL,CAAC;QAED,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;YACtB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAO,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5D,CAAC;QAED,qBAAqB;QACrB,IAAI,CAAC;YACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAc,CAAC,CAAC;QACtC,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAc,CAAC;QAC1B,CAAC;IACL,CAAC;IAEO,aAAa,CAAC,MAAW;QAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,KAAK,EAAE,CAAC;YACR,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAChC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,IAAI,WAAW;QACX,OAAO;YACH,MAAM,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;YAC/C,IAAI,EAAE,CAAC,IAAY,EAAE,MAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;YACtE,KAAK,EAAE,CAAC,IAAY,EAAE,MAAiB,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC;YACxE,SAAS,EAAE,CAAC,IAAY,EAAE,OAAY,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,OAAO,CAAC;YACxE,IAAI,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;SAC5C,CAAC;IACN,CAAC;CACJ;AAnLD,4CAmLC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB;IACf,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,MAAM;IAEvC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAYjD,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,cAAc;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"AAAA,qBAAa,gBAAgB;IACf,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,MAAM;IAEvC,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAYjD,OAAO,CAAC,gBAAgB;IAYxB,OAAO,CAAC,cAAc;IAkBtB,OAAO,CAAC,oBAAoB;IAS5B,OAAO,CAAC,cAAc;IA6CtB,OAAO,CAAC,WAAW;IA2BnB,OAAO,CAAC,YAAY;IAqCpB,OAAO,CAAC,aAAa;IAyBrB,OAAO,CAAC,SAAS;IA8DjB,OAAO,CAAC,aAAa;IAkBrB,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,WAAW;IA0BnB,OAAO,CAAC,YAAY;IA6BpB,OAAO,CAAC,aAAa;IAgErB,OAAO,CAAC,iBAAiB;IAyBzB,OAAO,CAAC,mBAAmB;IAmB3B,OAAO,CAAC,cAAc;IAqDtB,OAAO,CAAC,gBAAgB;IAmBxB,OAAO,CAAC,QAAQ;IA4BhB,OAAO,CAAC,aAAa;IAkCrB,OAAO,CAAC,YAAY;IA4EpB,OAAO,CAAC,WAAW;CAiBpB"}
|
|
@@ -63,9 +63,11 @@ class ProjectTemplates {
|
|
|
63
63
|
const dependencies = {
|
|
64
64
|
'@engjts/nexus': '^0.1.0',
|
|
65
65
|
zod: '^3.22.4',
|
|
66
|
+
ws: '^8.16.0',
|
|
66
67
|
};
|
|
67
68
|
const devDependencies = {
|
|
68
69
|
'@types/node': '^20.10.0',
|
|
70
|
+
'@types/ws': '^8.18.1',
|
|
69
71
|
typescript: '^5.3.3',
|
|
70
72
|
tsx: '^4.7.0',
|
|
71
73
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":";;;AAAA,MAAa,gBAAgB;IACP;IAApB,YAAoB,WAAmB;QAAnB,gBAAW,GAAX,WAAW,CAAQ;IAAG,CAAC;IAE3C,WAAW,CAAC,IAAY;QACtB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,KAAK;gBACR,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;YAC/B,KAAK,WAAW;gBACd,OAAO,IAAI,CAAC,oBAAoB,EAAE,CAAC;YACrC,KAAK,OAAO,CAAC;YACb;gBACE,OAAO,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACnC,CAAC;IACH,CAAC;IAEO,gBAAgB;QACtB,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC5C,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;YACjC,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE;YACpC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE;YAC7B,cAAc,EAAE,IAAI,CAAC,aAAa,EAAE;YACpC,qBAAqB,EAAE,IAAI,CAAC,cAAc,EAAE;SAC7C,CAAC;IACJ,CAAC;IAEO,cAAc;QACpB,OAAO;YACL,cAAc,EAAE,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;YAC1C,eAAe,EAAE,IAAI,CAAC,WAAW,EAAE;YACnC,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE;YACjC,cAAc,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;YACzC,WAAW,EAAE,IAAI,CAAC,SAAS,EAAE;YAC7B,cAAc,EAAE,IAAI,CAAC,WAAW,EAAE;YAClC,qBAAqB,EAAE,IAAI,CAAC,YAAY,EAAE;YAC1C,qBAAqB,EAAE,IAAI,CAAC,aAAa,EAAE;YAC3C,wBAAwB,EAAE,IAAI,CAAC,iBAAiB,EAAE;YAClD,0BAA0B,EAAE,IAAI,CAAC,mBAAmB,EAAE;YACtD,8BAA8B,EAAE,IAAI,CAAC,cAAc,EAAE;YACrD,kCAAkC,EAAE,IAAI,CAAC,gBAAgB,EAAE;YAC3D,oBAAoB,EAAE,IAAI,CAAC,QAAQ,EAAE;SACtC,CAAC;IACJ,CAAC;IAEO,oBAAoB;QAC1B,OAAO;YACL,GAAG,IAAI,CAAC,cAAc,EAAE;YACxB,mBAAmB,EAAE,IAAI,CAAC,aAAa,EAAE;YACzC,sBAAsB,EAAE,IAAI,CAAC,YAAY,EAAE;YAC3C,kBAAkB,EAAE,IAAI,CAAC,WAAW,EAAE;SACvC,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,IAAY;QACjC,MAAM,OAAO,GAA2B;YACtC,GAAG,EAAE,wBAAwB;YAC7B,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,oBAAoB;YAC3B,IAAI,EAAE,MAAM;SACb,CAAC;QAEF,MAAM,YAAY,GAA2B;YAC3C,eAAe,EAAE,QAAQ;YACzB,GAAG,EAAE,SAAS;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,19 @@
|
|
|
1
1
|
import { IncomingMessage, Server as HTTPServer } from 'http';
|
|
2
2
|
import { parse as parseUrl } from 'url';
|
|
3
3
|
import { EventEmitter } from 'events';
|
|
4
|
-
|
|
4
|
+
|
|
5
|
+
let WebSocket: any;
|
|
6
|
+
let WebSocketServer: any;
|
|
7
|
+
let RawData: any;
|
|
8
|
+
|
|
9
|
+
try {
|
|
10
|
+
const wsModule = require('ws');
|
|
11
|
+
WebSocket = wsModule.default || wsModule;
|
|
12
|
+
WebSocketServer = wsModule.WebSocketServer;
|
|
13
|
+
RawData = wsModule.RawData;
|
|
14
|
+
} catch (error) {
|
|
15
|
+
// ws module not installed
|
|
16
|
+
}
|
|
5
17
|
|
|
6
18
|
export interface WebSocketContext {
|
|
7
19
|
path: string;
|
|
@@ -38,10 +50,10 @@ export interface ConnectionState {
|
|
|
38
50
|
*/
|
|
39
51
|
export class WebSocketGateway extends EventEmitter {
|
|
40
52
|
private routes: Map<string, WebSocketRoute> = new Map();
|
|
41
|
-
private wss?:
|
|
42
|
-
private connections: WeakMap<
|
|
43
|
-
private rooms: Map<string, Set<
|
|
44
|
-
private socketRooms: WeakMap<
|
|
53
|
+
private wss?: any;
|
|
54
|
+
private connections: WeakMap<any, ConnectionState> = new WeakMap();
|
|
55
|
+
private rooms: Map<string, Set<any>> = new Map();
|
|
56
|
+
private socketRooms: WeakMap<any, Set<string>> = new WeakMap();
|
|
45
57
|
|
|
46
58
|
register(path: string, config: WebSocketRouteConfig) {
|
|
47
59
|
if (!path.startsWith('/')) {
|
|
@@ -55,6 +67,14 @@ export class WebSocketGateway extends EventEmitter {
|
|
|
55
67
|
return;
|
|
56
68
|
}
|
|
57
69
|
|
|
70
|
+
if (!WebSocketServer) {
|
|
71
|
+
throw new Error(
|
|
72
|
+
'WebSocket support requires the "ws" package to be installed.\n' +
|
|
73
|
+
'Install it with: npm install ws\n' +
|
|
74
|
+
'Or if using the CLI: nexus create my-app --skip-install && npm install'
|
|
75
|
+
);
|
|
76
|
+
}
|
|
77
|
+
|
|
58
78
|
this.wss = new WebSocketServer({ noServer: true });
|
|
59
79
|
|
|
60
80
|
server.on('upgrade', async (req, socket, head) => {
|
|
@@ -117,11 +137,11 @@ export class WebSocketGateway extends EventEmitter {
|
|
|
117
137
|
joinedRooms?.delete(room);
|
|
118
138
|
}
|
|
119
139
|
|
|
120
|
-
private bindConnection(socket:
|
|
140
|
+
private bindConnection(socket: any, route: WebSocketRoute, ctx: WebSocketContext) {
|
|
121
141
|
this.connections.set(socket, { ctx, route });
|
|
122
142
|
this.emit('connection', socket, ctx);
|
|
123
143
|
|
|
124
|
-
socket.on('message', async (data:
|
|
144
|
+
socket.on('message', async (data: any) => {
|
|
125
145
|
try {
|
|
126
146
|
const payload = this.parseMessage(data);
|
|
127
147
|
await route.onMessage?.(socket, payload, ctx);
|
|
@@ -161,7 +181,7 @@ export class WebSocketGateway extends EventEmitter {
|
|
|
161
181
|
};
|
|
162
182
|
}
|
|
163
183
|
|
|
164
|
-
private parseMessage(data:
|
|
184
|
+
private parseMessage(data: any): any {
|
|
165
185
|
if (Buffer.isBuffer(data) || data instanceof ArrayBuffer) {
|
|
166
186
|
const buffer = Buffer.isBuffer(data) ? data : Buffer.from(data);
|
|
167
187
|
const stringPayload = buffer.toString('utf-8');
|
|
@@ -173,7 +193,7 @@ export class WebSocketGateway extends EventEmitter {
|
|
|
173
193
|
}
|
|
174
194
|
|
|
175
195
|
if (Array.isArray(data)) {
|
|
176
|
-
return data.map((item): any => this.parseMessage(item
|
|
196
|
+
return data.map((item): any => this.parseMessage(item));
|
|
177
197
|
}
|
|
178
198
|
|
|
179
199
|
// Handle string case
|
|
@@ -184,7 +204,7 @@ export class WebSocketGateway extends EventEmitter {
|
|
|
184
204
|
}
|
|
185
205
|
}
|
|
186
206
|
|
|
187
|
-
private cleanupSocket(socket:
|
|
207
|
+
private cleanupSocket(socket: any) {
|
|
188
208
|
const rooms = this.socketRooms.get(socket);
|
|
189
209
|
if (rooms) {
|
|
190
210
|
for (const room of rooms) {
|
|
@@ -63,10 +63,12 @@ export class ProjectTemplates {
|
|
|
63
63
|
const dependencies: Record<string, string> = {
|
|
64
64
|
'@engjts/nexus': '^0.1.0',
|
|
65
65
|
zod: '^3.22.4',
|
|
66
|
+
ws: '^8.16.0',
|
|
66
67
|
};
|
|
67
68
|
|
|
68
69
|
const devDependencies: Record<string, string> = {
|
|
69
70
|
'@types/node': '^20.10.0',
|
|
71
|
+
'@types/ws': '^8.18.1',
|
|
70
72
|
typescript: '^5.3.3',
|
|
71
73
|
tsx: '^4.7.0',
|
|
72
74
|
};
|