@engjts/nexus 0.1.2 → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,5 @@
1
1
  import { IncomingMessage, Server as HTTPServer } from 'http';
2
2
  import { EventEmitter } from 'events';
3
- import WebSocket from 'ws';
4
3
  export interface WebSocketContext {
5
4
  path: string;
6
5
  query: Record<string, string | string[]>;
@@ -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;AACtC,OAAO,SAA8B,MAAM,IAAI,CAAC;AAEhD,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,CAAkB;IAC9B,OAAO,CAAC,WAAW,CAAsD;IACzE,OAAO,CAAC,KAAK,CAA0C;IACvD,OAAO,CAAC,WAAW,CAAkD;IAErE,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,oBAAoB;IAOnD,MAAM,CAAC,MAAM,EAAE,UAAU;IA+BzB,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
+ {"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
- const ws_1 = __importStar(require("ws"));
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
- this.wss = new ws_1.WebSocketServer({ noServer: true });
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 === ws_1.default.OPEN) {
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":"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"}
1
+ {"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../../src/advanced/realtime/websocket.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnF;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,qBAAa,GAAG;IACd,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,MAAM,CAAgB;;IAM9B,OAAO,CAAC,gBAAgB;IAgBlB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCxC,OAAO,CAAC,SAAS;IAkCjB,OAAO,CAAC,WAAW;CA+BpB"}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,aAAa,EAAE,CAAC;IAC1B,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACnF;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACjC;AAED,qBAAa,GAAG;IACd,OAAO,CAAC,QAAQ,CAAmC;IACnD,OAAO,CAAC,MAAM,CAAgB;;IAM9B,OAAO,CAAC,gBAAgB;IAiBlB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCxC,OAAO,CAAC,SAAS;IAkCjB,OAAO,CAAC,WAAW;CAgCpB"}
package/dist/cli/cli.js CHANGED
@@ -4,6 +4,7 @@ exports.CLI = void 0;
4
4
  const create_1 = require("./commands/create");
5
5
  const init_1 = require("./commands/init");
6
6
  const generate_1 = require("./commands/generate");
7
+ const add_1 = require("./commands/add");
7
8
  const dev_1 = require("./commands/dev");
8
9
  const build_1 = require("./commands/build");
9
10
  const help_1 = require("./commands/help");
@@ -20,6 +21,7 @@ class CLI {
20
21
  new create_1.CreateCommand(),
21
22
  new init_1.InitCommand(),
22
23
  new generate_1.GenerateCommand(),
24
+ new add_1.AddCommand(),
23
25
  new dev_1.DevCommand(),
24
26
  new build_1.BuildCommand(),
25
27
  new help_1.HelpCommand(() => this.commands),
@@ -116,6 +118,7 @@ class CLI {
116
118
  create <name> Create a new Nexus project
117
119
  init Initialize Nexus in current directory
118
120
  generate <type> Generate components (route, middleware, etc.)
121
+ add <plugin> Add plugins (swagger, playground, postman)
119
122
  dev Start development server
120
123
  build Build for production
121
124
 
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli/cli.ts"],"names":[],"mappings":";;;AAAA,8CAAkD;AAClD,0CAA8C;AAC9C,kDAAsD;AACtD,wCAA4C;AAC5C,wCAA4C;AAC5C,4CAAgD;AAChD,0CAA8C;AAC9C,gDAAoD;AACpD,2CAAwC;AAkBxC,MAAa,GAAG;IACN,QAAQ,GAAyB,IAAI,GAAG,EAAE,CAAC;IAC3C,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;IAE9B;QACE,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC1B,CAAC;IAEO,gBAAgB;QACtB,MAAM,QAAQ,GAAc;YAC1B,IAAI,sBAAa,EAAE;YACnB,IAAI,kBAAW,EAAE;YACjB,IAAI,0BAAe,EAAE;YACrB,IAAI,gBAAU,EAAE;YAChB,IAAI,gBAAU,EAAE;YAChB,IAAI,oBAAY,EAAE;YAClB,IAAI,kBAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC;YACpC,IAAI,wBAAc,EAAE;SACrB,CAAC;QAEF,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CAAC,IAAc;QACtB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,MAAM,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QAEpC,sBAAsB;QACtB,IAAI,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACrD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC9C,MAAM,WAAW,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QAED,IAAI,WAAW,KAAK,WAAW,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YACxD,MAAM,cAAc,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpD,MAAM,cAAc,EAAE,OAAO,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACtC,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,EAAE,cAAc,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAEzD,IAAI,CAAC;YACH,MAAM,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,OAAO,CAAC,CAAC;QACjD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;gBAC3B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAEO,SAAS,CAAC,IAAc;QAI9B,MAAM,cAAc,GAAa,EAAE,CAAC;QACpC,MAAM,OAAO,GAAqC,EAAE,CAAC;QAErD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YAEpB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACzB,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC7C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACvB,CAAC;qBAAM,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBACvD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBACtB,CAAC;YACH,CAAC;iBAAM,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;oBAChD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACN,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBACtB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,cAAc,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;QAED,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,CAAC;IACrC,CAAC;IAEO,WAAW;QACjB,OAAO,CAAC,GAAG,CAAC;;;;;;;;;;;;;;IAcZ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;;IAExD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;;;;;;;;IAQ3D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;;;;QAItD,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,yBAAyB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;CAChF,CAAC,CAAC;IACD,CAAC;CACF;AAnID,kBAmIC"}
@@ -0,0 +1,14 @@
1
+ import { Command, CommandOption } from '../cli';
2
+ export declare class AddCommand implements Command {
3
+ name: string;
4
+ description: string;
5
+ usage: string;
6
+ options: CommandOption[];
7
+ private logger;
8
+ private validPlugins;
9
+ private pluginConfigs;
10
+ execute(args: string[], options: Record<string, string | boolean>): Promise<void>;
11
+ private addPlugin;
12
+ private showUsage;
13
+ }
14
+ //# sourceMappingURL=add.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAahD,qBAAa,UAAW,YAAW,OAAO;IACxC,IAAI,SAAS;IACb,WAAW,SAAuC;IAClD,KAAK,SAAkC;IACvC,OAAO,EAAE,aAAa,EAAE,CAOtB;IAEF,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,YAAY,CAAsD;IAE1E,OAAO,CAAC,aAAa,CAmBnB;IAEI,OAAO,CACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GACxC,OAAO,CAAC,IAAI,CAAC;YAkBF,SAAS;IAuFvB,OAAO,CAAC,SAAS;CAmBlB"}
@@ -0,0 +1,150 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AddCommand = void 0;
4
+ const logger_1 = require("../utils/logger");
5
+ const file_system_1 = require("../utils/file-system");
6
+ class AddCommand {
7
+ name = 'add';
8
+ description = 'Add plugins to your Nexus project';
9
+ usage = 'nexus add <plugin> [options]';
10
+ options = [
11
+ {
12
+ name: 'path',
13
+ alias: 'p',
14
+ description: 'Path to the entry file (default: src/index.ts)',
15
+ defaultValue: 'src/index.ts',
16
+ },
17
+ ];
18
+ logger = new logger_1.Logger();
19
+ validPlugins = ['playground', 'postman', 'swagger'];
20
+ pluginConfigs = {
21
+ playground: {
22
+ name: 'playground',
23
+ import: 'playground',
24
+ feature: 'playground()',
25
+ description: 'Interactive API playground at /playground',
26
+ },
27
+ postman: {
28
+ name: 'postman',
29
+ import: 'postman',
30
+ feature: 'postman()',
31
+ description: 'Postman collection export at /postman',
32
+ },
33
+ swagger: {
34
+ name: 'swagger',
35
+ import: 'swagger',
36
+ feature: 'swagger()',
37
+ description: 'Swagger/OpenAPI documentation at /docs',
38
+ },
39
+ };
40
+ async execute(args, options) {
41
+ if (args.length < 1) {
42
+ this.showUsage();
43
+ return;
44
+ }
45
+ const [plugin] = args;
46
+ if (!this.validPlugins.includes(plugin)) {
47
+ this.logger.error(`Invalid plugin: ${plugin}`);
48
+ this.logger.info(`Valid plugins: ${this.validPlugins.join(', ')}`);
49
+ return;
50
+ }
51
+ const entryPath = options.path || 'src/index.ts';
52
+ await this.addPlugin(plugin, entryPath);
53
+ }
54
+ async addPlugin(plugin, entryPath) {
55
+ const fullPath = file_system_1.FileSystem.joinPath(process.cwd(), entryPath);
56
+ const config = this.pluginConfigs[plugin];
57
+ // Check if entry file exists
58
+ if (!(await file_system_1.FileSystem.exists(fullPath))) {
59
+ this.logger.error(`Entry file not found: ${fullPath}`);
60
+ this.logger.info('Use --path to specify your entry file');
61
+ return;
62
+ }
63
+ // Read current file
64
+ let content = await file_system_1.FileSystem.readFile(fullPath);
65
+ // Check if plugin is already added
66
+ if (content.includes(`app.feature(${config.feature})`)) {
67
+ this.logger.info(`Plugin "${plugin}" is already added to your project`);
68
+ return;
69
+ }
70
+ // Check if import already exists
71
+ const importRegex = new RegExp(`import\\s*{([^}]*)}\\s*from\\s*['"]@engjts/nexus['"]`);
72
+ const importMatch = content.match(importRegex);
73
+ if (importMatch) {
74
+ const currentImports = importMatch[1];
75
+ if (!currentImports.includes(config.import)) {
76
+ // Add to existing import
77
+ const newImports = currentImports.trim() + ', ' + config.import;
78
+ content = content.replace(importRegex, `import {${newImports}} from '@engjts/nexus'`);
79
+ }
80
+ }
81
+ else {
82
+ // Add new import at the top
83
+ content = `import { ${config.import} } from '@engjts/nexus';\n${content}`;
84
+ }
85
+ // Find where to add app.feature()
86
+ // Look for existing app.feature() calls or app.use() calls
87
+ const featurePattern = /app\.feature\([^)]+\);?\n?/g;
88
+ const usePattern = /app\.use\([^)]+\);?\n?/;
89
+ const listenPattern = /app\.listen\(/;
90
+ let insertPosition = -1;
91
+ let insertText = `app.feature(${config.feature});\n`;
92
+ // Find last app.feature() call
93
+ let lastFeatureMatch = null;
94
+ let match;
95
+ while ((match = featurePattern.exec(content)) !== null) {
96
+ lastFeatureMatch = match;
97
+ }
98
+ if (lastFeatureMatch) {
99
+ // Insert after last feature
100
+ insertPosition = lastFeatureMatch.index + lastFeatureMatch[0].length;
101
+ }
102
+ else {
103
+ // Find app.use() or app.listen()
104
+ const useMatch = content.match(usePattern);
105
+ const listenMatch = content.match(listenPattern);
106
+ if (useMatch && useMatch.index !== undefined) {
107
+ // Insert before first app.use()
108
+ insertPosition = useMatch.index;
109
+ insertText = `// Features\napp.feature(${config.feature});\n\n`;
110
+ }
111
+ else if (listenMatch && listenMatch.index !== undefined) {
112
+ // Insert before app.listen()
113
+ insertPosition = listenMatch.index;
114
+ insertText = `// Features\napp.feature(${config.feature});\n\n`;
115
+ }
116
+ }
117
+ if (insertPosition === -1) {
118
+ this.logger.error('Could not find a suitable location to add the plugin');
119
+ this.logger.info('Please add manually: app.feature(' + config.feature + ')');
120
+ return;
121
+ }
122
+ // Insert the feature call
123
+ content = content.slice(0, insertPosition) + insertText + content.slice(insertPosition);
124
+ // Write back
125
+ await file_system_1.FileSystem.writeFile(fullPath, content);
126
+ this.logger.success(`Added "${plugin}" plugin to your project`);
127
+ this.logger.info(` ${config.description}`);
128
+ }
129
+ showUsage() {
130
+ console.log(`
131
+ ${this.logger.colors.bright}Usage:${this.logger.colors.reset} nexus add <plugin> [options]
132
+
133
+ ${this.logger.colors.bright}Plugins:${this.logger.colors.reset}
134
+ playground Add interactive API playground
135
+ postman Add Postman collection export
136
+ swagger Add Swagger/OpenAPI documentation
137
+
138
+ ${this.logger.colors.bright}Examples:${this.logger.colors.reset}
139
+ nexus add swagger
140
+ nexus add playground
141
+ nexus add postman
142
+ nexus add swagger --path src/app.ts
143
+
144
+ ${this.logger.colors.bright}Options:${this.logger.colors.reset}
145
+ --path, -p Path to entry file (default: src/index.ts)
146
+ `);
147
+ }
148
+ }
149
+ exports.AddCommand = AddCommand;
150
+ //# sourceMappingURL=add.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"add.js","sourceRoot":"","sources":["../../../src/cli/commands/add.ts"],"names":[],"mappings":";;;AACA,4CAAyC;AACzC,sDAAkD;AAWlD,MAAa,UAAU;IACrB,IAAI,GAAG,KAAK,CAAC;IACb,WAAW,GAAG,mCAAmC,CAAC;IAClD,KAAK,GAAG,8BAA8B,CAAC;IACvC,OAAO,GAAoB;QACzB;YACE,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE,GAAG;YACV,WAAW,EAAE,gDAAgD;YAC7D,YAAY,EAAE,cAAc;SAC7B;KACF,CAAC;IAEM,MAAM,GAAG,IAAI,eAAM,EAAE,CAAC;IACtB,YAAY,GAAiB,CAAC,YAAY,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC;IAElE,aAAa,GAAqC;QACxD,UAAU,EAAE;YACV,IAAI,EAAE,YAAY;YAClB,MAAM,EAAE,YAAY;YACpB,OAAO,EAAE,cAAc;YACvB,WAAW,EAAE,2CAA2C;SACzD;QACD,OAAO,EAAE;YACP,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,WAAW;YACpB,WAAW,EAAE,uCAAuC;SACrD;QACD,OAAO,EAAE;YACP,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,SAAS;YACjB,OAAO,EAAE,WAAW;YACpB,WAAW,EAAE,wCAAwC;SACtD;KACF,CAAC;IAEF,KAAK,CAAC,OAAO,CACX,IAAc,EACd,OAAyC;QAEzC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QAED,MAAM,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;QAEtB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAoB,CAAC,EAAE,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;YAC/C,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,MAAM,SAAS,GAAI,OAAO,CAAC,IAAe,IAAI,cAAc,CAAC;QAC7D,MAAM,IAAI,CAAC,SAAS,CAAC,MAAoB,EAAE,SAAS,CAAC,CAAC;IACxD,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,MAAkB,EAAE,SAAiB;QAC3D,MAAM,QAAQ,GAAG,wBAAU,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,SAAS,CAAC,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;QAE1C,6BAA6B;QAC7B,IAAI,CAAC,CAAC,MAAM,wBAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,oBAAoB;QACpB,IAAI,OAAO,GAAG,MAAM,wBAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAElD,mCAAmC;QACnC,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,MAAM,oCAAoC,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,iCAAiC;QACjC,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,sDAAsD,CAAC,CAAC;QACvF,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QAE/C,IAAI,WAAW,EAAE,CAAC;YAChB,MAAM,cAAc,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC5C,yBAAyB;gBACzB,MAAM,UAAU,GAAG,cAAc,CAAC,IAAI,EAAE,GAAG,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;gBAChE,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,UAAU,wBAAwB,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;aAAM,CAAC;YACN,4BAA4B;YAC5B,OAAO,GAAG,YAAY,MAAM,CAAC,MAAM,6BAA6B,OAAO,EAAE,CAAC;QAC5E,CAAC;QAED,kCAAkC;QAClC,2DAA2D;QAC3D,MAAM,cAAc,GAAG,6BAA6B,CAAC;QACrD,MAAM,UAAU,GAAG,wBAAwB,CAAC;QAC5C,MAAM,aAAa,GAAG,eAAe,CAAC;QAEtC,IAAI,cAAc,GAAG,CAAC,CAAC,CAAC;QACxB,IAAI,UAAU,GAAG,eAAe,MAAM,CAAC,OAAO,MAAM,CAAC;QAErD,+BAA+B;QAC/B,IAAI,gBAAgB,GAA2B,IAAI,CAAC;QACpD,IAAI,KAAK,CAAC;QACV,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACvD,gBAAgB,GAAG,KAAK,CAAC;QAC3B,CAAC;QAED,IAAI,gBAAgB,EAAE,CAAC;YACrB,4BAA4B;YAC5B,cAAc,GAAG,gBAAgB,CAAC,KAAK,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;QACvE,CAAC;aAAM,CAAC;YACN,iCAAiC;YACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAEjD,IAAI,QAAQ,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC7C,gCAAgC;gBAChC,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC;gBAChC,UAAU,GAAG,4BAA4B,MAAM,CAAC,OAAO,QAAQ,CAAC;YAClE,CAAC;iBAAM,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC1D,6BAA6B;gBAC7B,cAAc,GAAG,WAAW,CAAC,KAAK,CAAC;gBACnC,UAAU,GAAG,4BAA4B,MAAM,CAAC,OAAO,QAAQ,CAAC;YAClE,CAAC;QACH,CAAC;QAED,IAAI,cAAc,KAAK,CAAC,CAAC,EAAE,CAAC;YAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;YAC1E,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,GAAG,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;YAC7E,OAAO;QACT,CAAC;QAED,0BAA0B;QAC1B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,cAAc,CAAC,GAAG,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAExF,aAAa;QACb,MAAM,wBAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAE9C,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,MAAM,0BAA0B,CAAC,CAAC;QAChE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IAC9C,CAAC;IAEO,SAAS;QACf,OAAO,CAAC,GAAG,CAAC;EACd,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,SAAS,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;;EAE1D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;;;;;EAK5D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;;;;;;EAM7D,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,WAAW,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;;CAE7D,CAAC,CAAC;IACD,CAAC;CACF;AApKD,gCAoKC"}
@@ -1 +1 @@
1
- {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAOhD,qBAAa,eAAgB,YAAW,OAAO;IAC7C,IAAI,SAAc;IAClB,WAAW,SAA+D;IAC1E,KAAK,SAA4C;IACjD,OAAO,EAAE,aAAa,EAAE,CAYtB;IAEF,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAA2F;IAEvG,OAAO,CACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GACxC,OAAO,CAAC,IAAI,CAAC;YAoBF,QAAQ;IAsBtB,OAAO,CAAC,SAAS;CAuBlB"}
1
+ {"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAOhD,qBAAa,eAAgB,YAAW,OAAO;IAC7C,IAAI,SAAc;IAClB,WAAW,SAA+D;IAC1E,KAAK,SAA4C;IACjD,OAAO,EAAE,aAAa,EAAE,CAYtB;IAEF,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,UAAU,CAA0G;IAEtH,OAAO,CACX,IAAI,EAAE,MAAM,EAAE,EACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GACxC,OAAO,CAAC,IAAI,CAAC;YAoBF,QAAQ;IAsBtB,OAAO,CAAC,SAAS;CAyBlB"}
@@ -22,7 +22,7 @@ class GenerateCommand {
22
22
  },
23
23
  ];
24
24
  logger = new logger_1.Logger();
25
- validTypes = ['route', 'middleware', 'controller', 'service', 'model', 'validator'];
25
+ validTypes = ['route', 'route-class', 'middleware', 'controller', 'service', 'model', 'validator'];
26
26
  async execute(args, options) {
27
27
  if (args.length < 2) {
28
28
  this.showUsage();
@@ -57,7 +57,8 @@ class GenerateCommand {
57
57
  ${this.logger.colors.bright}Usage:${this.logger.colors.reset} nexus generate <type> <name> [options]
58
58
 
59
59
  ${this.logger.colors.bright}Types:${this.logger.colors.reset}
60
- route Generate a route handler
60
+ route Generate a function-based route handler
61
+ route-class Generate a class-based route (with meta, schema, onBefore)
61
62
  middleware Generate a middleware
62
63
  controller Generate a controller class
63
64
  service Generate a service class
@@ -66,6 +67,7 @@ ${this.logger.colors.bright}Types:${this.logger.colors.reset}
66
67
 
67
68
  ${this.logger.colors.bright}Examples:${this.logger.colors.reset}
68
69
  nexus generate route users
70
+ nexus generate route-class users
69
71
  nexus generate controller UserController
70
72
  nexus generate middleware auth
71
73
  nexus generate route products --methods get,post,put,delete
@@ -1 +1 @@
1
- {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- type GeneratorType = 'route' | 'middleware' | 'controller' | 'service' | 'model' | 'validator';
1
+ type GeneratorType = 'route' | 'route-class' | 'middleware' | 'controller' | 'service' | 'model' | 'validator';
2
2
  interface GeneratorResult {
3
3
  filePath: string;
4
4
  content: string;
@@ -12,6 +12,7 @@ export declare class GeneratorTemplates {
12
12
  private toPascalCase;
13
13
  private toCamelCase;
14
14
  private generateRoute;
15
+ private generateRouteClass;
15
16
  private generateMiddleware;
16
17
  private generateController;
17
18
  private generateService;
@@ -1 +1 @@
1
- {"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/generators.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG,OAAO,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CAAC;AAE/F,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,gBAAgB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,eAAe;IAmBvF,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,kBAAkB;IA4D1B,OAAO,CAAC,eAAe;IAwEvB,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,iBAAiB;CA8C1B"}
1
+ {"version":3,"file":"generators.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/generators.ts"],"names":[],"mappings":"AAAA,KAAK,aAAa,GAAG,OAAO,GAAG,aAAa,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,GAAG,OAAO,GAAG,WAAW,CAAC;AAE/G,UAAU,eAAe;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,UAAU,gBAAgB;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,qBAAa,kBAAkB;IAC7B,QAAQ,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,GAAG,eAAe;IAqBvF,OAAO,CAAC,YAAY;IAMpB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,aAAa;IA0BrB,OAAO,CAAC,kBAAkB;IA6C1B,OAAO,CAAC,kBAAkB;IAyB1B,OAAO,CAAC,kBAAkB;IA4D1B,OAAO,CAAC,eAAe;IAwEvB,OAAO,CAAC,aAAa;IAmCrB,OAAO,CAAC,iBAAiB;CA8C1B"}
@@ -6,6 +6,8 @@ class GeneratorTemplates {
6
6
  switch (type) {
7
7
  case 'route':
8
8
  return this.generateRoute(name, options.methods);
9
+ case 'route-class':
10
+ return this.generateRouteClass(name, options.methods);
9
11
  case 'middleware':
10
12
  return this.generateMiddleware(name);
11
13
  case 'controller':
@@ -37,9 +39,9 @@ class GeneratorTemplates {
37
39
  return `
38
40
  // ${method.toUpperCase()} /${name}
39
41
  ${routeName}Routes.${method}('/', async (ctx) => {
40
- return ctx.json({
42
+ return {
41
43
  message: '${method.toUpperCase()} /${name}',
42
- });
44
+ };
43
45
  });`;
44
46
  })
45
47
  .join('\n');
@@ -47,6 +49,48 @@ ${routeName}Routes.${method}('/', async (ctx) => {
47
49
 
48
50
  export const ${routeName}Routes = new Router();
49
51
  ${routeHandlers}
52
+ `;
53
+ return {
54
+ filePath: `src/routes/${name}.ts`,
55
+ content,
56
+ };
57
+ }
58
+ generateRouteClass(name, methods) {
59
+ const className = this.toPascalCase(name);
60
+ const baseName = name.toLowerCase();
61
+ const method = methods[0] || 'get';
62
+ const content = `import { Route, Context, z } from '@engjts/nexus';
63
+
64
+ export class ${className}Route extends Route {
65
+ pathName = '/${baseName}';
66
+
67
+ meta() {
68
+ return {
69
+ summary: '${className} route',
70
+ description: '${className} route description',
71
+ tags: ['${className}'],
72
+ };
73
+ }
74
+
75
+ schema() {
76
+ return {
77
+ // params: z.object({}),
78
+ // query: z.object({}),
79
+ // body: z.object({}),
80
+ };
81
+ }
82
+
83
+ async onBefore(ctx: Context) {
84
+ // Hook sebelum handler
85
+ // Return value untuk skip handler dan langsung return response
86
+ }
87
+
88
+ async handler(ctx: Context) {
89
+ return {
90
+ message: '${method.toUpperCase()} /${baseName}',
91
+ };
92
+ }
93
+ }
50
94
  `;
51
95
  return {
52
96
  filePath: `src/routes/${name}.ts`,
@@ -1 +1 @@
1
- {"version":3,"file":"generators.js","sourceRoot":"","sources":["../../../src/cli/templates/generators.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generators.js","sourceRoot":"","sources":["../../../src/cli/templates/generators.ts"],"names":[],"mappings":"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"}
@@ -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;IA2CtB,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"}
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"}
@@ -61,11 +61,13 @@ class ProjectTemplates {
61
61
  test: 'jest',
62
62
  };
63
63
  const dependencies = {
64
- '@engjts/nexus': '^0.1.0',
64
+ '@engjts/nexus': '^0.1.3',
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
  };
@@ -76,7 +78,7 @@ class ProjectTemplates {
76
78
  }
77
79
  return JSON.stringify({
78
80
  name: this.projectName,
79
- version: '1.0.0',
81
+ version: '0.1.0',
80
82
  description: `${this.projectName} - Powered by Nexus`,
81
83
  main: 'dist/index.js',
82
84
  scripts,
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/templates/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@engjts/nexus",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "Nexus framework async-first web framework with type-safety and security built-in",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -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
- import WebSocket, { WebSocketServer } from 'ws';
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?: WebSocketServer;
42
- private connections: WeakMap<WebSocket, ConnectionState> = new WeakMap();
43
- private rooms: Map<string, Set<WebSocket>> = new Map();
44
- private socketRooms: WeakMap<WebSocket, Set<string>> = new 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: WebSocket, route: WebSocketRoute, ctx: WebSocketContext) {
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: WebSocket.RawData) => {
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: WebSocket.RawData): any {
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 as WebSocket.RawData));
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: WebSocket) {
207
+ private cleanupSocket(socket: any) {
188
208
  const rooms = this.socketRooms.get(socket);
189
209
  if (rooms) {
190
210
  for (const room of rooms) {
package/src/cli/cli.ts CHANGED
@@ -1,6 +1,7 @@
1
1
  import { CreateCommand } from './commands/create';
2
2
  import { InitCommand } from './commands/init';
3
3
  import { GenerateCommand } from './commands/generate';
4
+ import { AddCommand } from './commands/add';
4
5
  import { DevCommand } from './commands/dev';
5
6
  import { BuildCommand } from './commands/build';
6
7
  import { HelpCommand } from './commands/help';
@@ -36,6 +37,7 @@ export class CLI {
36
37
  new CreateCommand(),
37
38
  new InitCommand(),
38
39
  new GenerateCommand(),
40
+ new AddCommand(),
39
41
  new DevCommand(),
40
42
  new BuildCommand(),
41
43
  new HelpCommand(() => this.commands),
@@ -142,6 +144,7 @@ export class CLI {
142
144
  create <name> Create a new Nexus project
143
145
  init Initialize Nexus in current directory
144
146
  generate <type> Generate components (route, middleware, etc.)
147
+ add <plugin> Add plugins (swagger, playground, postman)
145
148
  dev Start development server
146
149
  build Build for production
147
150
 
@@ -0,0 +1,178 @@
1
+ import { Command, CommandOption } from '../cli';
2
+ import { Logger } from '../utils/logger';
3
+ import { FileSystem } from '../utils/file-system';
4
+
5
+ type PluginType = 'playground' | 'postman' | 'swagger';
6
+
7
+ interface PluginConfig {
8
+ name: string;
9
+ import: string;
10
+ feature: string;
11
+ description: string;
12
+ }
13
+
14
+ export class AddCommand implements Command {
15
+ name = 'add';
16
+ description = 'Add plugins to your Nexus project';
17
+ usage = 'nexus add <plugin> [options]';
18
+ options: CommandOption[] = [
19
+ {
20
+ name: 'path',
21
+ alias: 'p',
22
+ description: 'Path to the entry file (default: src/index.ts)',
23
+ defaultValue: 'src/index.ts',
24
+ },
25
+ ];
26
+
27
+ private logger = new Logger();
28
+ private validPlugins: PluginType[] = ['playground', 'postman', 'swagger'];
29
+
30
+ private pluginConfigs: Record<PluginType, PluginConfig> = {
31
+ playground: {
32
+ name: 'playground',
33
+ import: 'playground',
34
+ feature: 'playground()',
35
+ description: 'Interactive API playground at /playground',
36
+ },
37
+ postman: {
38
+ name: 'postman',
39
+ import: 'postman',
40
+ feature: 'postman()',
41
+ description: 'Postman collection export at /postman',
42
+ },
43
+ swagger: {
44
+ name: 'swagger',
45
+ import: 'swagger',
46
+ feature: 'swagger()',
47
+ description: 'Swagger/OpenAPI documentation at /docs',
48
+ },
49
+ };
50
+
51
+ async execute(
52
+ args: string[],
53
+ options: Record<string, string | boolean>
54
+ ): Promise<void> {
55
+ if (args.length < 1) {
56
+ this.showUsage();
57
+ return;
58
+ }
59
+
60
+ const [plugin] = args;
61
+
62
+ if (!this.validPlugins.includes(plugin as PluginType)) {
63
+ this.logger.error(`Invalid plugin: ${plugin}`);
64
+ this.logger.info(`Valid plugins: ${this.validPlugins.join(', ')}`);
65
+ return;
66
+ }
67
+
68
+ const entryPath = (options.path as string) || 'src/index.ts';
69
+ await this.addPlugin(plugin as PluginType, entryPath);
70
+ }
71
+
72
+ private async addPlugin(plugin: PluginType, entryPath: string): Promise<void> {
73
+ const fullPath = FileSystem.joinPath(process.cwd(), entryPath);
74
+ const config = this.pluginConfigs[plugin];
75
+
76
+ // Check if entry file exists
77
+ if (!(await FileSystem.exists(fullPath))) {
78
+ this.logger.error(`Entry file not found: ${fullPath}`);
79
+ this.logger.info('Use --path to specify your entry file');
80
+ return;
81
+ }
82
+
83
+ // Read current file
84
+ let content = await FileSystem.readFile(fullPath);
85
+
86
+ // Check if plugin is already added
87
+ if (content.includes(`app.feature(${config.feature})`)) {
88
+ this.logger.info(`Plugin "${plugin}" is already added to your project`);
89
+ return;
90
+ }
91
+
92
+ // Check if import already exists
93
+ const importRegex = new RegExp(`import\\s*{([^}]*)}\\s*from\\s*['"]@engjts/nexus['"]`);
94
+ const importMatch = content.match(importRegex);
95
+
96
+ if (importMatch) {
97
+ const currentImports = importMatch[1];
98
+ if (!currentImports.includes(config.import)) {
99
+ // Add to existing import
100
+ const newImports = currentImports.trim() + ', ' + config.import;
101
+ content = content.replace(importRegex, `import {${newImports}} from '@engjts/nexus'`);
102
+ }
103
+ } else {
104
+ // Add new import at the top
105
+ content = `import { ${config.import} } from '@engjts/nexus';\n${content}`;
106
+ }
107
+
108
+ // Find where to add app.feature()
109
+ // Look for existing app.feature() calls or app.use() calls
110
+ const featurePattern = /app\.feature\([^)]+\);?\n?/g;
111
+ const usePattern = /app\.use\([^)]+\);?\n?/;
112
+ const listenPattern = /app\.listen\(/;
113
+
114
+ let insertPosition = -1;
115
+ let insertText = `app.feature(${config.feature});\n`;
116
+
117
+ // Find last app.feature() call
118
+ let lastFeatureMatch: RegExpExecArray | null = null;
119
+ let match;
120
+ while ((match = featurePattern.exec(content)) !== null) {
121
+ lastFeatureMatch = match;
122
+ }
123
+
124
+ if (lastFeatureMatch) {
125
+ // Insert after last feature
126
+ insertPosition = lastFeatureMatch.index + lastFeatureMatch[0].length;
127
+ } else {
128
+ // Find app.use() or app.listen()
129
+ const useMatch = content.match(usePattern);
130
+ const listenMatch = content.match(listenPattern);
131
+
132
+ if (useMatch && useMatch.index !== undefined) {
133
+ // Insert before first app.use()
134
+ insertPosition = useMatch.index;
135
+ insertText = `// Features\napp.feature(${config.feature});\n\n`;
136
+ } else if (listenMatch && listenMatch.index !== undefined) {
137
+ // Insert before app.listen()
138
+ insertPosition = listenMatch.index;
139
+ insertText = `// Features\napp.feature(${config.feature});\n\n`;
140
+ }
141
+ }
142
+
143
+ if (insertPosition === -1) {
144
+ this.logger.error('Could not find a suitable location to add the plugin');
145
+ this.logger.info('Please add manually: app.feature(' + config.feature + ')');
146
+ return;
147
+ }
148
+
149
+ // Insert the feature call
150
+ content = content.slice(0, insertPosition) + insertText + content.slice(insertPosition);
151
+
152
+ // Write back
153
+ await FileSystem.writeFile(fullPath, content);
154
+
155
+ this.logger.success(`Added "${plugin}" plugin to your project`);
156
+ this.logger.info(` ${config.description}`);
157
+ }
158
+
159
+ private showUsage(): void {
160
+ console.log(`
161
+ ${this.logger.colors.bright}Usage:${this.logger.colors.reset} nexus add <plugin> [options]
162
+
163
+ ${this.logger.colors.bright}Plugins:${this.logger.colors.reset}
164
+ playground Add interactive API playground
165
+ postman Add Postman collection export
166
+ swagger Add Swagger/OpenAPI documentation
167
+
168
+ ${this.logger.colors.bright}Examples:${this.logger.colors.reset}
169
+ nexus add swagger
170
+ nexus add playground
171
+ nexus add postman
172
+ nexus add swagger --path src/app.ts
173
+
174
+ ${this.logger.colors.bright}Options:${this.logger.colors.reset}
175
+ --path, -p Path to entry file (default: src/index.ts)
176
+ `);
177
+ }
178
+ }
@@ -3,7 +3,7 @@ import { Logger } from '../utils/logger';
3
3
  import { FileSystem } from '../utils/file-system';
4
4
  import { GeneratorTemplates } from '../templates/generators';
5
5
 
6
- type GeneratorType = 'route' | 'middleware' | 'controller' | 'service' | 'model' | 'validator';
6
+ type GeneratorType = 'route' | 'route-class' | 'middleware' | 'controller' | 'service' | 'model' | 'validator';
7
7
 
8
8
  export class GenerateCommand implements Command {
9
9
  name = 'generate';
@@ -24,7 +24,7 @@ export class GenerateCommand implements Command {
24
24
  ];
25
25
 
26
26
  private logger = new Logger();
27
- private validTypes: GeneratorType[] = ['route', 'middleware', 'controller', 'service', 'model', 'validator'];
27
+ private validTypes: GeneratorType[] = ['route', 'route-class', 'middleware', 'controller', 'service', 'model', 'validator'];
28
28
 
29
29
  async execute(
30
30
  args: string[],
@@ -76,7 +76,8 @@ export class GenerateCommand implements Command {
76
76
  ${this.logger.colors.bright}Usage:${this.logger.colors.reset} nexus generate <type> <name> [options]
77
77
 
78
78
  ${this.logger.colors.bright}Types:${this.logger.colors.reset}
79
- route Generate a route handler
79
+ route Generate a function-based route handler
80
+ route-class Generate a class-based route (with meta, schema, onBefore)
80
81
  middleware Generate a middleware
81
82
  controller Generate a controller class
82
83
  service Generate a service class
@@ -85,6 +86,7 @@ ${this.logger.colors.bright}Types:${this.logger.colors.reset}
85
86
 
86
87
  ${this.logger.colors.bright}Examples:${this.logger.colors.reset}
87
88
  nexus generate route users
89
+ nexus generate route-class users
88
90
  nexus generate controller UserController
89
91
  nexus generate middleware auth
90
92
  nexus generate route products --methods get,post,put,delete
@@ -1,4 +1,4 @@
1
- type GeneratorType = 'route' | 'middleware' | 'controller' | 'service' | 'model' | 'validator';
1
+ type GeneratorType = 'route' | 'route-class' | 'middleware' | 'controller' | 'service' | 'model' | 'validator';
2
2
 
3
3
  interface GeneratorResult {
4
4
  filePath: string;
@@ -15,6 +15,8 @@ export class GeneratorTemplates {
15
15
  switch (type) {
16
16
  case 'route':
17
17
  return this.generateRoute(name, options.methods);
18
+ case 'route-class':
19
+ return this.generateRouteClass(name, options.methods);
18
20
  case 'middleware':
19
21
  return this.generateMiddleware(name);
20
22
  case 'controller':
@@ -49,9 +51,9 @@ export class GeneratorTemplates {
49
51
  return `
50
52
  // ${method.toUpperCase()} /${name}
51
53
  ${routeName}Routes.${method}('/', async (ctx) => {
52
- return ctx.json({
54
+ return {
53
55
  message: '${method.toUpperCase()} /${name}',
54
- });
56
+ };
55
57
  });`;
56
58
  })
57
59
  .join('\n');
@@ -68,6 +70,51 @@ ${routeHandlers}
68
70
  };
69
71
  }
70
72
 
73
+ private generateRouteClass(name: string, methods: string[]): GeneratorResult {
74
+ const className = this.toPascalCase(name);
75
+ const baseName = name.toLowerCase();
76
+ const method = methods[0] || 'get';
77
+
78
+ const content = `import { Route, Context, z } from '@engjts/nexus';
79
+
80
+ export class ${className}Route extends Route {
81
+ pathName = '/${baseName}';
82
+
83
+ meta() {
84
+ return {
85
+ summary: '${className} route',
86
+ description: '${className} route description',
87
+ tags: ['${className}'],
88
+ };
89
+ }
90
+
91
+ schema() {
92
+ return {
93
+ // params: z.object({}),
94
+ // query: z.object({}),
95
+ // body: z.object({}),
96
+ };
97
+ }
98
+
99
+ async onBefore(ctx: Context) {
100
+ // Hook sebelum handler
101
+ // Return value untuk skip handler dan langsung return response
102
+ }
103
+
104
+ async handler(ctx: Context) {
105
+ return {
106
+ message: '${method.toUpperCase()} /${baseName}',
107
+ };
108
+ }
109
+ }
110
+ `;
111
+
112
+ return {
113
+ filePath: `src/routes/${name}.ts`,
114
+ content,
115
+ };
116
+ }
117
+
71
118
  private generateMiddleware(name: string): GeneratorResult {
72
119
  const middlewareName = this.toCamelCase(name);
73
120
 
@@ -61,12 +61,14 @@ export class ProjectTemplates {
61
61
  };
62
62
 
63
63
  const dependencies: Record<string, string> = {
64
- '@engjts/nexus': '^0.1.0',
64
+ '@engjts/nexus': '^0.1.3',
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
  };
@@ -80,7 +82,7 @@ export class ProjectTemplates {
80
82
  return JSON.stringify(
81
83
  {
82
84
  name: this.projectName,
83
- version: '1.0.0',
85
+ version: '0.1.0',
84
86
  description: `${this.projectName} - Powered by Nexus`,
85
87
  main: 'dist/index.js',
86
88
  scripts,