@nodemod/core 1.0.3 → 1.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,12 @@
1
- # NodeMod Core
1
+ # @nodemod/core
2
2
 
3
- TypeScript-first NodeMod core library for Half-Life server plugins.
3
+ TypeScript-first NodeMod core library for Half-Life server development.
4
4
 
5
5
  ## Overview
6
6
 
7
- NodeMod Core provides a comprehensive, type-safe API for developing Half-Life server plugins using TypeScript. It offers enhanced utilities, event handling, player management, and entity manipulation while maintaining full compatibility with the underlying NodeMod system.
7
+ NodeMod Core provides a comprehensive, type-safe API for Half-Life server development using TypeScript. It offers enhanced utilities, event handling, player management, and entity manipulation while maintaining full compatibility with the underlying NodeMod system.
8
+
9
+ This is the foundation that the admin system (`@nodemod/admin`) builds upon.
8
10
 
9
11
  ## Features
10
12
 
@@ -15,7 +17,7 @@ NodeMod Core provides a comprehensive, type-safe API for developing Half-Life se
15
17
  - **Resource Management** - Handle server resources and downloads
16
18
  - **Sound System** - Play sounds and manage audio
17
19
 
18
- ### Enhanced Modules
20
+ ### Enhanced Modules
19
21
  - **Player Management** - Advanced player utilities and information
20
22
  - **Entity System** - Enhanced entity manipulation and wrapping
21
23
  - **Event Handling** - Comprehensive event system with type safety
@@ -49,12 +51,77 @@ const players = nodemodCore.player.getAll();
49
51
 
50
52
  // Create an entity
51
53
  const entity = nodemodCore.entity.create('info_target');
54
+
55
+ // Register a command
56
+ nodemodCore.cmd.registerServer('my_command', (args) => {
57
+ console.log('Command executed with args:', args);
58
+ });
59
+
60
+ // Wrap a CVAR for easy access
61
+ const myVar = nodemodCore.cvar.wrap('sv_cheats');
62
+ console.log(myVar.int); // Get as integer
63
+ myVar.set('1'); // Set value
64
+ ```
65
+
66
+ ## Using with the Admin System
67
+
68
+ For server administration features, use `@nodemod/admin` which extends this core library:
69
+
70
+ ```typescript
71
+ import nodemodCore from '@nodemod/core';
72
+ import { BasePlugin, Plugin, PluginMetadata, ADMIN_KICK } from '@nodemod/admin';
73
+
74
+ class MyPlugin extends BasePlugin implements Plugin {
75
+ readonly metadata: PluginMetadata = {
76
+ name: 'My Plugin',
77
+ version: '1.0.0',
78
+ author: 'You'
79
+ };
80
+
81
+ constructor(pluginName: string) {
82
+ super(pluginName);
83
+
84
+ // Use core APIs
85
+ const cvar = nodemodCore.cvar;
86
+
87
+ // Use admin APIs (via BasePlugin)
88
+ this.registerCommand('my_cmd', ADMIN_KICK, 'My command',
89
+ (entity, args) => this.onCommand(entity, args));
90
+ }
91
+ }
92
+
93
+ export default MyPlugin;
94
+ ```
95
+
96
+ ## Event Handling
97
+
98
+ ```typescript
99
+ // Listen for player connections
100
+ nodemod.on('dllClientConnect', (entity) => {
101
+ const name = entity.netname;
102
+ console.log(`${name} connected`);
103
+ });
104
+
105
+ // Listen for player spawns
106
+ nodemod.on('dllPlayerSpawn', (entity) => {
107
+ nodemodCore.util.sendChat(`Welcome ${entity.netname}!`, entity);
108
+ });
109
+
110
+ // Listen for chat messages
111
+ nodemod.on('dllClientCommand', (entity, text) => {
112
+ if (text.startsWith('say ')) {
113
+ const message = text.slice(4);
114
+ console.log(`${entity.netname}: ${message}`);
115
+ }
116
+ });
52
117
  ```
53
118
 
54
119
  ## Documentation
55
120
 
56
- Full API documentation is available in the `/docs` directory.
121
+ - **[NodeMod Documentation](https://nodemod.org)** - Full documentation
122
+ - **[API Reference](https://nodemod.org/docs/api)** - Complete API documentation
123
+ - **[Admin System](https://nodemod.org/docs/guides/admin-system)** - Admin system built on core
57
124
 
58
125
  ## License
59
126
 
60
- MIT
127
+ MIT
@@ -29,23 +29,28 @@ export interface ServerCommandContext {
29
29
  /** Array of parsed command arguments, including the command name as the first element */
30
30
  args: string[];
31
31
  }
32
+ /** Return type for command handlers - can be sync or async */
33
+ type CommandResult = nodemod.META_RES | void | Promise<nodemod.META_RES | void>;
32
34
  /**
33
35
  * Handler function for console commands (client or server).
36
+ * Can optionally return a META_RES value to set the result.
34
37
  */
35
38
  export interface CommandHandler {
36
- (ctx: CommandContext): void;
39
+ (ctx: CommandContext): CommandResult;
37
40
  }
38
41
  /**
39
42
  * Handler function for client commands.
43
+ * Can optionally return a META_RES value to set the result.
40
44
  */
41
45
  export interface ClientCommandHandler {
42
- (ctx: ClientCommandContext): void;
46
+ (ctx: ClientCommandContext): CommandResult;
43
47
  }
44
48
  /**
45
49
  * Handler function for server commands.
50
+ * Can optionally return a META_RES value to set the result.
46
51
  */
47
52
  export interface ServerCommandHandler {
48
- (ctx: ServerCommandContext): void;
53
+ (ctx: ServerCommandContext): CommandResult;
49
54
  }
50
55
  /**
51
56
  * Configuration options for registering a command.
@@ -104,11 +109,20 @@ export default class NodemodCmd {
104
109
  */
105
110
  constructor();
106
111
  /**
107
- * Retrieves a registered command by name and type.
112
+ * Retrieves all registered commands by name and type.
113
+ *
114
+ * @param commandName - The name of the command to find
115
+ * @param type - The type of command ('client', 'server', or 'console')
116
+ * @returns Array of matching command options
117
+ */
118
+ getCommands(commandName: string, type: string): CommandOptions[];
119
+ /**
120
+ * Retrieves a registered command by name and type (first match only).
108
121
  *
109
122
  * @param commandName - The name of the command to find
110
123
  * @param type - The type of command ('client' or 'server')
111
124
  * @returns The command options if found, undefined otherwise
125
+ * @deprecated Use getCommands() for multiple handlers
112
126
  */
113
127
  getCommand(commandName: string, type: string): CommandOptions | undefined;
114
128
  /**
@@ -143,6 +157,7 @@ export default class NodemodCmd {
143
157
  * Convenience method to register a console command that works from both client and server.
144
158
  * Similar to AMXX console commands - can be executed by clients or from server console.
145
159
  * The handler receives the client (null if from console) and arguments.
160
+ * Can optionally return a META_RES value to set the result.
146
161
  *
147
162
  * @param name - The command name
148
163
  * @param handler - Function that receives the client entity (or null) and arguments
@@ -155,30 +170,34 @@ export default class NodemodCmd {
155
170
  * } else {
156
171
  * console.log('Server console requested status');
157
172
  * }
173
+ * return nodemod.META_RES.SUPERCEDE; // optional
158
174
  * });
159
175
  * ```
160
176
  */
161
- register(name: string, handler: (client: nodemod.Entity | null, args: string[]) => void): void;
177
+ register(name: string, handler: (client: nodemod.Entity | null, args: string[]) => CommandResult): void;
162
178
  /**
163
179
  * Convenience method to register a client-only command with a simplified handler signature.
164
180
  * The handler receives the client entity and arguments (excluding the command name).
181
+ * Can optionally return a META_RES value to set the result.
165
182
  *
166
183
  * @param name - The command name
167
184
  * @param handler - Function that receives the client and arguments
168
185
  *
169
186
  * @example
170
187
  * ```typescript
171
- * nodemodCore.cmd.registerClient('kick', (client, args) => {
172
- * const targetName = args[0];
173
- * const reason = args.slice(1).join(' ');
174
- * console.log(`${client.name} wants to kick ${targetName}: ${reason}`);
188
+ * nodemodCore.cmd.registerClient('say', (client, args) => {
189
+ * const message = args.join(' ');
190
+ * console.log(`${client.name} said: ${message}`);
191
+ * // No return = IGNORED, chat passes through to engine
192
+ * // return nodemod.META_RES.SUPERCEDE; // to block the chat
175
193
  * });
176
194
  * ```
177
195
  */
178
- registerClient(name: string, handler: (client: nodemod.Entity, args: string[]) => void): void;
196
+ registerClient(name: string, handler: (client: nodemod.Entity, args: string[]) => CommandResult): void;
179
197
  /**
180
198
  * Convenience method to register a server command with a simplified handler signature.
181
199
  * The handler receives the arguments (excluding the command name) but no client entity.
200
+ * Can optionally return a META_RES value to set the result.
182
201
  *
183
202
  * @param name - The command name
184
203
  * @param handler - Function that receives the command arguments
@@ -192,7 +211,7 @@ export default class NodemodCmd {
192
211
  * });
193
212
  * ```
194
213
  */
195
- registerServer(name: string, handler: (args: string[]) => void): void;
214
+ registerServer(name: string, handler: (args: string[]) => CommandResult): void;
196
215
  /**
197
216
  * Executes a server command through the native engine.
198
217
  * Automatically appends a newline character to the command.
@@ -208,4 +227,5 @@ export default class NodemodCmd {
208
227
  */
209
228
  run(command: string): void;
210
229
  }
230
+ export {};
211
231
  //# sourceMappingURL=cmd.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cmd.d.ts","sourceRoot":"","sources":["../../src/core/cmd.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,4EAA4E;IAC5E,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAAC;CAC7B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,CAAC,GAAG,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,CAAC,GAAG,EAAE,oBAAoB,GAAG,IAAI,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtC,kEAAkE;IAClE,OAAO,EAAE,cAAc,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;CACvE;AAID;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,mCAAmC;IACnC,OAAO,CAAC,QAAQ,CAAwB;IAExC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,YAAY;IA8BpB;;;OAGG;;IAuBH;;;;;;OAMG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIzE;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IA2ClC;;;;;;;;;;;;;;;;;;OAkBG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,IAAI;IAQ9F;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,IAAI;IAQ7F;;;;;;;;;;;;;;;OAeG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,IAAI,GAAG,IAAI;IASrE;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAG3B"}
1
+ {"version":3,"file":"cmd.d.ts","sourceRoot":"","sources":["../../src/core/cmd.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,4EAA4E;IAC5E,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,gDAAgD;IAChD,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC;CACxB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,sCAAsC;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,yFAAyF;IACzF,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,8DAA8D;AAC9D,KAAK,aAAa,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;AAEhF;;;GAGG;AACH,MAAM,WAAW,cAAc;IAC7B,CAAC,GAAG,EAAE,cAAc,GAAG,aAAa,CAAC;CACtC;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,CAAC,GAAG,EAAE,oBAAoB,GAAG,aAAa,CAAC;CAC5C;AAED;;;GAGG;AACH,MAAM,WAAW,oBAAoB;IACnC,CAAC,GAAG,EAAE,oBAAoB,GAAG,aAAa,CAAC;CAC5C;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,2DAA2D;IAC3D,IAAI,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,CAAC;IACtC,kEAAkE;IAClE,OAAO,EAAE,cAAc,GAAG,oBAAoB,GAAG,oBAAoB,CAAC;CACvE;AAID;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,OAAO,OAAO,UAAU;IAC7B,mCAAmC;IACnC,OAAO,CAAC,QAAQ,CAAwB;IAExC;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,YAAY;IA8BpB;;;OAGG;;IAoDH;;;;;;OAMG;IACH,WAAW,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,EAAE;IAIhE;;;;;;;OAOG;IACH,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAIzE;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACH,GAAG,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IA2ClC;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,GAAG,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,aAAa,GAAG,IAAI;IAQvG;;;;;;;;;;;;;;;;;OAiBG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,aAAa,GAAG,IAAI;IAQtG;;;;;;;;;;;;;;;;OAgBG;IACH,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,aAAa,GAAG,IAAI;IAS9E;;;;;;;;;;;;OAYG;IACH,GAAG,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;CAG3B"}
package/dist/core/cmd.js CHANGED
@@ -73,29 +73,64 @@ class NodemodCmd {
73
73
  */
74
74
  constructor() {
75
75
  nodemod.on('dllClientCommand', (client, rtext) => {
76
+ // Check if a previous listener already blocked this command
77
+ if (nodemod.getMetaResult() === 4 /* nodemod.META_RES.SUPERCEDE */) {
78
+ return;
79
+ }
76
80
  const args = this.parseCommand(rtext);
77
81
  const commandName = args[0];
78
- const command = this.getCommand(commandName, 'client') || this.getCommand(commandName, 'console');
79
- if (!command) {
82
+ // Get matching commands by type
83
+ const clientCommands = this.getCommands(commandName, 'client');
84
+ const consoleCommands = this.getCommands(commandName, 'console');
85
+ const commands = [...clientCommands, ...consoleCommands];
86
+ if (commands.length === 0) {
80
87
  return;
81
88
  }
82
- nodemod.setMetaResult(4 /* nodemod.META_RES.SUPERCEDE */); // Supercede the command
83
- if (command.type === 'client') {
84
- const ctx = { text: rtext, args, client };
85
- return command.handler(ctx);
89
+ // Execute all registered handlers, stopping if one sets SUPERCEDE
90
+ for (const command of commands) {
91
+ let result;
92
+ if (command.type === 'client') {
93
+ const ctx = { text: rtext, args, client };
94
+ result = command.handler(ctx);
95
+ }
96
+ else {
97
+ const ctx = { text: rtext, args, client };
98
+ result = command.handler(ctx);
99
+ }
100
+ // If handler returned a sync META_RES value, set it (ignore Promises)
101
+ if (typeof result === 'number') {
102
+ nodemod.setMetaResult(result);
103
+ }
104
+ // Check if handler blocked the command - stop processing further handlers
105
+ const mres = nodemod.getMetaResult();
106
+ if (mres === 4 /* nodemod.META_RES.SUPERCEDE */) {
107
+ break;
108
+ }
86
109
  }
87
- else {
88
- const ctx = { text: rtext, args, client };
89
- return command.handler(ctx);
110
+ // Auto-SUPERCEDE only for console commands (register/registerServer)
111
+ // Client-only commands (registerClient) let the plugin decide
112
+ if (clientCommands.length === 0 && nodemod.getMetaResult() === 1 /* nodemod.META_RES.IGNORED */) {
113
+ nodemod.setMetaResult(4 /* nodemod.META_RES.SUPERCEDE */);
90
114
  }
91
115
  });
92
116
  }
93
117
  /**
94
- * Retrieves a registered command by name and type.
118
+ * Retrieves all registered commands by name and type.
119
+ *
120
+ * @param commandName - The name of the command to find
121
+ * @param type - The type of command ('client', 'server', or 'console')
122
+ * @returns Array of matching command options
123
+ */
124
+ getCommands(commandName, type) {
125
+ return this.commands.filter(v => v.name === commandName && v.type === type);
126
+ }
127
+ /**
128
+ * Retrieves a registered command by name and type (first match only).
95
129
  *
96
130
  * @param commandName - The name of the command to find
97
131
  * @param type - The type of command ('client' or 'server')
98
132
  * @returns The command options if found, undefined otherwise
133
+ * @deprecated Use getCommands() for multiple handlers
99
134
  */
100
135
  getCommand(commandName, type) {
101
136
  return this.commands.find(v => v.name === commandName && v.type === type);
@@ -175,6 +210,7 @@ class NodemodCmd {
175
210
  * Convenience method to register a console command that works from both client and server.
176
211
  * Similar to AMXX console commands - can be executed by clients or from server console.
177
212
  * The handler receives the client (null if from console) and arguments.
213
+ * Can optionally return a META_RES value to set the result.
178
214
  *
179
215
  * @param name - The command name
180
216
  * @param handler - Function that receives the client entity (or null) and arguments
@@ -187,6 +223,7 @@ class NodemodCmd {
187
223
  * } else {
188
224
  * console.log('Server console requested status');
189
225
  * }
226
+ * return nodemod.META_RES.SUPERCEDE; // optional
190
227
  * });
191
228
  * ```
192
229
  */
@@ -200,16 +237,18 @@ class NodemodCmd {
200
237
  /**
201
238
  * Convenience method to register a client-only command with a simplified handler signature.
202
239
  * The handler receives the client entity and arguments (excluding the command name).
240
+ * Can optionally return a META_RES value to set the result.
203
241
  *
204
242
  * @param name - The command name
205
243
  * @param handler - Function that receives the client and arguments
206
244
  *
207
245
  * @example
208
246
  * ```typescript
209
- * nodemodCore.cmd.registerClient('kick', (client, args) => {
210
- * const targetName = args[0];
211
- * const reason = args.slice(1).join(' ');
212
- * console.log(`${client.name} wants to kick ${targetName}: ${reason}`);
247
+ * nodemodCore.cmd.registerClient('say', (client, args) => {
248
+ * const message = args.join(' ');
249
+ * console.log(`${client.name} said: ${message}`);
250
+ * // No return = IGNORED, chat passes through to engine
251
+ * // return nodemod.META_RES.SUPERCEDE; // to block the chat
213
252
  * });
214
253
  * ```
215
254
  */
@@ -223,6 +262,7 @@ class NodemodCmd {
223
262
  /**
224
263
  * Convenience method to register a server command with a simplified handler signature.
225
264
  * The handler receives the arguments (excluding the command name) but no client entity.
265
+ * Can optionally return a META_RES value to set the result.
226
266
  *
227
267
  * @param name - The command name
228
268
  * @param handler - Function that receives the command arguments
@@ -1 +1 @@
1
- {"version":3,"file":"cmd.js","sourceRoot":"","sources":["../../src/core/cmd.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cmd.js","sourceRoot":"","sources":["../../src/core/cmd.ts"],"names":[],"mappings":"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"}
@@ -1,134 +1,41 @@
1
1
  /**
2
- * Internal event listener metadata for enhanced event management.
3
- */
4
- export interface EventListener<T extends keyof nodemod.EventCallbacks> {
5
- /** The wrapped handler function */
6
- handler: nodemod.EventCallbacks[T];
7
- /** The original handler function */
8
- original: nodemod.EventCallbacks[T];
9
- /** Priority level for execution order */
10
- priority: number;
11
- }
12
- /**
13
- * Options for configuring event listeners.
14
- */
15
- export interface EventOptions {
16
- /** Execute the handler only once, then automatically remove it */
17
- once?: boolean;
18
- /** Priority level (higher numbers execute first) */
19
- priority?: number;
20
- }
21
- /**
22
- * Enhanced player information for connection events.
23
- */
24
- export interface PlayerInfo {
25
- /** Player entity */
26
- entity: nodemod.Entity;
27
- /** Player entity index */
28
- id: number;
29
- /** Player display name */
30
- name: string;
31
- /** Player IP address (if available) */
32
- address?: string;
33
- /** Player Steam ID */
34
- steamId: string;
35
- /** Player user ID (if available) */
36
- userId?: number;
37
- }
38
- /**
39
- * Enhanced spawn information for entity/player spawn events.
40
- */
41
- export interface SpawnInfo {
42
- /** Spawned entity */
43
- entity: nodemod.Entity;
44
- /** Entity index */
45
- id: number;
46
- /** Entity name (for players) */
47
- name?: string;
48
- /** Entity class name */
49
- className: string;
50
- }
51
- /**
52
- * Frame timing and server state information.
2
+ * Enhanced event utilities providing convenience methods on top of nodemod's native events.
3
+ *
4
+ * Note: For low-level event handling that needs SUPERCEDE support, use nodemod.on() directly.
5
+ * This wrapper provides utilities like once(), waitFor(), throttle(), and debounce().
53
6
  */
54
- export interface FrameInfo {
55
- /** Current server time */
56
- time: number;
57
- /** Current map name */
58
- mapname: string;
59
- /** Number of connected players */
60
- playerCount: number;
61
- }
62
7
  /** Type alias for event handler functions */
63
8
  export type EventHandler<T extends keyof nodemod.EventCallbacks = keyof nodemod.EventCallbacks> = nodemod.EventCallbacks[T];
64
9
  /** Type alias for event filtering predicates */
65
10
  export type EventPredicate<T extends keyof nodemod.EventCallbacks = keyof nodemod.EventCallbacks> = (...args: Parameters<nodemod.EventCallbacks[T]>) => boolean;
66
- /** Type alias for event transformation functions */
67
- export type EventTransformer<T extends keyof nodemod.EventCallbacks = keyof nodemod.EventCallbacks> = (...args: Parameters<nodemod.EventCallbacks[T]>) => any;
68
11
  /**
69
- * Enhanced event system providing advanced event handling capabilities on top of nodemod's native events.
70
- * Features include priority-based execution, one-time listeners, event filtering, throttling, and debouncing.
12
+ * Enhanced event utilities for nodemod events.
71
13
  *
72
14
  * @example
73
15
  * ```typescript
74
- * // Basic event listening
75
- * nodemodCore.events.on('dllClientConnect', (entity, name) => {
76
- * console.log(`${name} connected`);
77
- * });
78
- *
79
16
  * // One-time event listener
80
17
  * nodemodCore.events.once('dllSpawn', (entity) => {
81
18
  * console.log('First spawn event received');
82
19
  * });
83
20
  *
84
- * // Priority-based event handling
85
- * nodemodCore.events.on('dllClientCommand', handleCommand, { priority: 10 });
86
- * nodemodCore.events.on('dllClientCommand', logCommand, { priority: 1 });
87
- *
88
- * // Event filtering
89
- * nodemodCore.events.filter('dllClientConnect',
90
- * (entity, name) => name.startsWith('Admin'),
91
- * (entity, name) => console.log(`Admin ${name} connected`)
92
- * );
93
- *
94
21
  * // Throttled events (max once per second)
95
22
  * nodemodCore.events.throttle('dllStartFrame', frameHandler, 1000);
23
+ *
24
+ * // Wait for event with timeout
25
+ * const [entity, name] = await nodemodCore.events.waitFor('dllClientConnect', 30000);
96
26
  * ```
97
27
  */
98
28
  export default class NodemodEvents {
99
- /** Map of active event listeners organized by event name */
100
- private eventListeners;
29
+ /** Map tracking wrapped handlers for removal */
30
+ private wrappedHandlers;
101
31
  /**
102
- * Creates a new NodemodEvents instance and initializes enhanced event handlers.
32
+ * Adds an event listener. This is a simple wrapper around nodemod.on().
33
+ * For most cases, use nodemod.on() directly.
103
34
  */
104
- constructor();
35
+ on<T extends keyof nodemod.EventCallbacks>(eventName: T, handler: nodemod.EventCallbacks[T]): this;
105
36
  /**
106
- * Adds an event listener with enhanced options like priority and one-time execution.
107
- *
108
- * @param eventName - Name of the event to listen for
109
- * @param handler - Function to execute when event occurs
110
- * @param options - Additional options for the listener
111
- * @returns This instance for method chaining
112
- *
113
- * @example
114
- * ```typescript
115
- * // Basic event listener
116
- * nodemodCore.events.on('dllClientConnect', (entity, name) => {
117
- * console.log(`${name} joined the server`);
118
- * });
119
- *
120
- * // High-priority listener (executes first)
121
- * nodemodCore.events.on('dllClientCommand', (entity, command) => {
122
- * console.log('Processing command:', command);
123
- * }, { priority: 100 });
124
- *
125
- * // One-time listener
126
- * nodemodCore.events.on('dllSpawn', (entity) => {
127
- * console.log('First entity spawned');
128
- * }, { once: true });
129
- * ```
37
+ * Removes an event listener.
130
38
  */
131
- on<T extends keyof nodemod.EventCallbacks>(eventName: T, handler: nodemod.EventCallbacks[T], options?: EventOptions): this;
132
39
  off<T extends keyof nodemod.EventCallbacks>(eventName: T, handler: nodemod.EventCallbacks[T]): this;
133
40
  /**
134
41
  * Adds a one-time event listener that automatically removes itself after first execution.
@@ -139,24 +46,14 @@ export default class NodemodEvents {
139
46
  *
140
47
  * @example
141
48
  * ```typescript
142
- * // Listen for first player connection only
143
49
  * nodemodCore.events.once('dllClientConnect', (entity, name) => {
144
- * console.log(`First player ${name} connected - starting game logic`);
145
- * });
146
- *
147
- * // Wait for map change
148
- * nodemodCore.events.once('dllSpawn', () => {
149
- * console.log('Map fully loaded');
50
+ * console.log(`First player ${name} connected`);
150
51
  * });
151
52
  * ```
152
53
  */
153
54
  once<T extends keyof nodemod.EventCallbacks>(eventName: T, handler: nodemod.EventCallbacks[T]): this;
154
- clearListeners(eventName?: keyof nodemod.EventCallbacks): this;
155
- getListeners<T extends keyof nodemod.EventCallbacks>(eventName: T): EventListener<T>[];
156
- private initializeEvents;
157
55
  /**
158
56
  * Waits for a specific event to occur and returns its parameters as a promise.
159
- * Useful for async/await patterns with events.
160
57
  *
161
58
  * @param eventName - Name of the event to wait for
162
59
  * @param timeout - Timeout in milliseconds (default: 10000)
@@ -164,16 +61,12 @@ export default class NodemodEvents {
164
61
  *
165
62
  * @example
166
63
  * ```typescript
167
- * // Wait for player connection
168
64
  * try {
169
65
  * const [entity, name] = await nodemodCore.events.waitFor('dllClientConnect', 30000);
170
66
  * console.log(`Player ${name} connected within 30 seconds`);
171
67
  * } catch (error) {
172
68
  * console.log('No player connected within timeout');
173
69
  * }
174
- *
175
- * // Wait for entity spawn with shorter timeout
176
- * const [spawnedEntity] = await nodemodCore.events.waitFor('dllSpawn', 5000);
177
70
  * ```
178
71
  */
179
72
  waitFor<T extends keyof nodemod.EventCallbacks>(eventName: T, timeout?: number): Promise<Parameters<nodemod.EventCallbacks[T]>>;
@@ -187,24 +80,16 @@ export default class NodemodEvents {
187
80
  *
188
81
  * @example
189
82
  * ```typescript
190
- * // Only handle commands from admins
191
83
  * nodemodCore.events.filter('dllClientCommand',
192
84
  * (entity, command) => isAdmin(entity),
193
85
  * (entity, command) => handleAdminCommand(entity, command)
194
86
  * );
195
- *
196
- * // Only handle player connections with specific names
197
- * nodemodCore.events.filter('dllClientConnect',
198
- * (entity, name) => name.startsWith('VIP_'),
199
- * (entity, name) => grantVipAccess(entity)
200
- * );
201
87
  * ```
202
88
  */
203
89
  filter<T extends keyof nodemod.EventCallbacks>(eventName: T, predicate: EventPredicate<T>, handler: nodemod.EventCallbacks[T]): this;
204
- map<T extends keyof nodemod.EventCallbacks>(eventName: T, transformer: EventTransformer<T>, newEventName?: keyof nodemod.EventCallbacks): this;
205
90
  /**
206
91
  * Adds a throttled event listener that limits execution to once per specified interval.
207
- * Useful for performance optimization with high-frequency events.
92
+ * Useful for performance optimization with high-frequency events like dllStartFrame.
208
93
  *
209
94
  * @param eventName - Name of the event to listen for
210
95
  * @param handler - Function to execute when event occurs
@@ -213,23 +98,15 @@ export default class NodemodEvents {
213
98
  *
214
99
  * @example
215
100
  * ```typescript
216
- * // Throttle frame events to once per second
217
101
  * nodemodCore.events.throttle('dllStartFrame', () => {
218
102
  * console.log('Frame update (max once per second)');
219
103
  * }, 1000);
220
- *
221
- * // Throttle player movement tracking
222
- * nodemodCore.events.throttle('dllClientCommand', (entity, command) => {
223
- * if (command.startsWith('+move')) {
224
- * updatePlayerPosition(entity);
225
- * }
226
- * }, 500); // Max twice per second
227
104
  * ```
228
105
  */
229
106
  throttle<T extends keyof nodemod.EventCallbacks>(eventName: T, handler: nodemod.EventCallbacks[T], delay?: number): this;
230
107
  /**
231
108
  * Adds a debounced event listener that delays execution until after the specified interval
232
- * has passed since the last event occurrence. Useful for handling rapid successive events.
109
+ * has passed since the last event occurrence.
233
110
  *
234
111
  * @param eventName - Name of the event to listen for
235
112
  * @param handler - Function to execute when event occurs
@@ -238,14 +115,6 @@ export default class NodemodEvents {
238
115
  *
239
116
  * @example
240
117
  * ```typescript
241
- * // Debounce player input to handle final command only
242
- * nodemodCore.events.debounce('dllClientCommand', (entity, command) => {
243
- * if (command.startsWith('buy_')) {
244
- * processPurchase(entity, command);
245
- * }
246
- * }, 300); // Wait 300ms after last buy command
247
- *
248
- * // Debounce entity spawning for batch processing
249
118
  * nodemodCore.events.debounce('dllSpawn', () => {
250
119
  * console.log('Finished spawning entities');
251
120
  * optimizeMapEntities();
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/enhanced/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/enhanced/events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,6CAA6C;AAC7C,MAAM,MAAM,YAAY,CAAC,CAAC,SAAS,MAAM,OAAO,CAAC,cAAc,GAAG,MAAM,OAAO,CAAC,cAAc,IAAI,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC;AAE5H,gDAAgD;AAChD,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,MAAM,OAAO,CAAC,cAAc,GAAG,MAAM,OAAO,CAAC,cAAc,IAAI,CAAC,GAAG,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC;AAEhK;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC,gDAAgD;IAChD,OAAO,CAAC,eAAe,CAAiC;IAExD;;;OAGG;IACH,EAAE,CAAC,CAAC,SAAS,MAAM,OAAO,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAKlG;;OAEG;IACH,GAAG,CAAC,CAAC,SAAS,MAAM,OAAO,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAYnG;;;;;;;;;;;;;OAaG;IACH,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAYpG;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,CAAC,SAAS,MAAM,OAAO,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,GAAE,MAAc,GAAG,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAgBtI;;;;;;;;;;;;;;;OAeG;IACH,MAAM,CAAC,CAAC,SAAS,MAAM,OAAO,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI;IAYpI;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,OAAO,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,MAAa,GAAG,IAAI;IAe9H;;;;;;;;;;;;;;;;OAgBG;IACH,QAAQ,CAAC,CAAC,SAAS,MAAM,OAAO,CAAC,cAAc,EAAE,SAAS,EAAE,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,KAAK,GAAE,MAAa,GAAG,IAAI;CAW/H"}
@@ -1,102 +1,51 @@
1
1
  "use strict";
2
+ /**
3
+ * Enhanced event utilities providing convenience methods on top of nodemod's native events.
4
+ *
5
+ * Note: For low-level event handling that needs SUPERCEDE support, use nodemod.on() directly.
6
+ * This wrapper provides utilities like once(), waitFor(), throttle(), and debounce().
7
+ */
2
8
  Object.defineProperty(exports, "__esModule", { value: true });
3
- // Extend the nodemod namespace to include missing methods
4
9
  /**
5
- * Enhanced event system providing advanced event handling capabilities on top of nodemod's native events.
6
- * Features include priority-based execution, one-time listeners, event filtering, throttling, and debouncing.
10
+ * Enhanced event utilities for nodemod events.
7
11
  *
8
12
  * @example
9
13
  * ```typescript
10
- * // Basic event listening
11
- * nodemodCore.events.on('dllClientConnect', (entity, name) => {
12
- * console.log(`${name} connected`);
13
- * });
14
- *
15
14
  * // One-time event listener
16
15
  * nodemodCore.events.once('dllSpawn', (entity) => {
17
16
  * console.log('First spawn event received');
18
17
  * });
19
18
  *
20
- * // Priority-based event handling
21
- * nodemodCore.events.on('dllClientCommand', handleCommand, { priority: 10 });
22
- * nodemodCore.events.on('dllClientCommand', logCommand, { priority: 1 });
23
- *
24
- * // Event filtering
25
- * nodemodCore.events.filter('dllClientConnect',
26
- * (entity, name) => name.startsWith('Admin'),
27
- * (entity, name) => console.log(`Admin ${name} connected`)
28
- * );
29
- *
30
19
  * // Throttled events (max once per second)
31
20
  * nodemodCore.events.throttle('dllStartFrame', frameHandler, 1000);
21
+ *
22
+ * // Wait for event with timeout
23
+ * const [entity, name] = await nodemodCore.events.waitFor('dllClientConnect', 30000);
32
24
  * ```
33
25
  */
34
26
  class NodemodEvents {
35
- /** Map of active event listeners organized by event name */
36
- eventListeners = new Map();
27
+ /** Map tracking wrapped handlers for removal */
28
+ wrappedHandlers = new Map();
37
29
  /**
38
- * Creates a new NodemodEvents instance and initializes enhanced event handlers.
30
+ * Adds an event listener. This is a simple wrapper around nodemod.on().
31
+ * For most cases, use nodemod.on() directly.
39
32
  */
40
- constructor() {
41
- this.initializeEvents();
33
+ on(eventName, handler) {
34
+ nodemod.on(eventName, handler);
35
+ return this;
42
36
  }
43
37
  /**
44
- * Adds an event listener with enhanced options like priority and one-time execution.
45
- *
46
- * @param eventName - Name of the event to listen for
47
- * @param handler - Function to execute when event occurs
48
- * @param options - Additional options for the listener
49
- * @returns This instance for method chaining
50
- *
51
- * @example
52
- * ```typescript
53
- * // Basic event listener
54
- * nodemodCore.events.on('dllClientConnect', (entity, name) => {
55
- * console.log(`${name} joined the server`);
56
- * });
57
- *
58
- * // High-priority listener (executes first)
59
- * nodemodCore.events.on('dllClientCommand', (entity, command) => {
60
- * console.log('Processing command:', command);
61
- * }, { priority: 100 });
62
- *
63
- * // One-time listener
64
- * nodemodCore.events.on('dllSpawn', (entity) => {
65
- * console.log('First entity spawned');
66
- * }, { once: true });
67
- * ```
38
+ * Removes an event listener.
68
39
  */
69
- on(eventName, handler, options = {}) {
70
- const wrappedHandler = (options.once) ?
71
- ((...args) => {
72
- handler(...args);
73
- this.off(eventName, wrappedHandler);
74
- }) : handler;
75
- if (!this.eventListeners.has(eventName)) {
76
- this.eventListeners.set(eventName, []);
77
- }
78
- this.eventListeners.get(eventName).push({
79
- handler: wrappedHandler,
80
- original: handler,
81
- priority: options.priority || 0
82
- });
83
- // Sort by priority (higher priority first)
84
- this.eventListeners.get(eventName).sort((a, b) => b.priority - a.priority);
85
- nodemod.on(eventName, wrappedHandler);
86
- return this;
87
- }
88
- // Remove event listener
89
40
  off(eventName, handler) {
90
- if (!this.eventListeners.has(eventName))
91
- return this;
92
- const listeners = this.eventListeners.get(eventName);
93
- const index = listeners.findIndex(l => l.original === handler || l.handler === handler);
94
- if (index !== -1) {
95
- nodemod.removeListener(eventName, listeners[index].handler);
96
- listeners.splice(index, 1);
97
- if (listeners.length === 0) {
98
- this.eventListeners.delete(eventName);
99
- }
41
+ // Check if this was a wrapped handler
42
+ const wrapped = this.wrappedHandlers.get(handler);
43
+ if (wrapped) {
44
+ nodemod.removeListener(eventName, wrapped);
45
+ this.wrappedHandlers.delete(handler);
46
+ }
47
+ else {
48
+ nodemod.removeListener(eventName, handler);
100
49
  }
101
50
  return this;
102
51
  }
@@ -109,101 +58,23 @@ class NodemodEvents {
109
58
  *
110
59
  * @example
111
60
  * ```typescript
112
- * // Listen for first player connection only
113
61
  * nodemodCore.events.once('dllClientConnect', (entity, name) => {
114
- * console.log(`First player ${name} connected - starting game logic`);
115
- * });
116
- *
117
- * // Wait for map change
118
- * nodemodCore.events.once('dllSpawn', () => {
119
- * console.log('Map fully loaded');
62
+ * console.log(`First player ${name} connected`);
120
63
  * });
121
64
  * ```
122
65
  */
123
66
  once(eventName, handler) {
124
- return this.on(eventName, handler, { once: true });
125
- }
126
- // Clear all listeners for an event
127
- clearListeners(eventName) {
128
- if (eventName) {
129
- nodemod.clearListeners(eventName);
130
- this.eventListeners.delete(eventName);
131
- }
132
- else {
133
- // Clear all listeners
134
- for (const [event] of this.eventListeners) {
135
- nodemod.clearListeners(event);
136
- }
137
- this.eventListeners.clear();
138
- }
139
- return this;
140
- }
141
- // Get list of active event listeners
142
- getListeners(eventName) {
143
- return this.eventListeners.get(eventName) || [];
144
- }
145
- // Initialize commonly used event handlers with utilities
146
- initializeEvents() {
147
- // Player connection events with enhanced data
148
- this.on('dllClientConnect', (entity, name, address, rejectReason) => {
149
- const playerId = nodemod.eng.indexOfEdict(entity);
150
- const playerInfo = {
151
- entity,
152
- id: playerId,
153
- name: name,
154
- address: address,
155
- steamId: nodemod.eng.getPlayerAuthId(entity),
156
- userId: nodemod.eng.getPlayerUserId(entity)
157
- };
158
- // Custom event - not calling nodemod functions
159
- });
160
- this.on('dllClientDisconnect', (entity) => {
161
- const playerId = nodemod.eng.indexOfEdict(entity);
162
- const playerInfo = {
163
- entity,
164
- id: playerId,
165
- name: entity.netname,
166
- steamId: nodemod.eng.getPlayerAuthId(entity)
167
- };
168
- // Custom event - not calling nodemod functions
169
- });
170
- // Enhanced spawn event
171
- this.on('dllSpawn', (entity) => {
172
- if (entity.netname) {
173
- // Player spawn
174
- const playerSpawnInfo = {
175
- entity,
176
- id: nodemod.eng.indexOfEdict(entity),
177
- name: entity.netname,
178
- className: entity.classname
179
- };
180
- // Custom event - not calling nodemod functions
181
- }
182
- else {
183
- // Entity spawn
184
- const entitySpawnInfo = {
185
- entity,
186
- id: nodemod.eng.indexOfEdict(entity),
187
- className: entity.classname
188
- };
189
- // Custom event - not calling nodemod functions
190
- }
191
- });
192
- // Frame timing events
193
- this.on('dllStartFrame', () => {
194
- const frameInfo = {
195
- time: nodemod.time,
196
- mapname: nodemod.mapname,
197
- playerCount: nodemod.players.length
198
- };
199
- // Custom event - not calling nodemod functions
67
+ const wrappedHandler = ((...args) => {
68
+ nodemod.removeListener(eventName, wrappedHandler);
69
+ this.wrappedHandlers.delete(handler);
70
+ handler(...args);
200
71
  });
72
+ this.wrappedHandlers.set(handler, wrappedHandler);
73
+ nodemod.on(eventName, wrappedHandler);
74
+ return this;
201
75
  }
202
- // Custom emit removed - only using nodemod events
203
- // Event helper methods
204
76
  /**
205
77
  * Waits for a specific event to occur and returns its parameters as a promise.
206
- * Useful for async/await patterns with events.
207
78
  *
208
79
  * @param eventName - Name of the event to wait for
209
80
  * @param timeout - Timeout in milliseconds (default: 10000)
@@ -211,16 +82,12 @@ class NodemodEvents {
211
82
  *
212
83
  * @example
213
84
  * ```typescript
214
- * // Wait for player connection
215
85
  * try {
216
86
  * const [entity, name] = await nodemodCore.events.waitFor('dllClientConnect', 30000);
217
87
  * console.log(`Player ${name} connected within 30 seconds`);
218
88
  * } catch (error) {
219
89
  * console.log('No player connected within timeout');
220
90
  * }
221
- *
222
- * // Wait for entity spawn with shorter timeout
223
- * const [spawnedEntity] = await nodemodCore.events.waitFor('dllSpawn', 5000);
224
91
  * ```
225
92
  */
226
93
  waitFor(eventName, timeout = 10000) {
@@ -246,38 +113,25 @@ class NodemodEvents {
246
113
  *
247
114
  * @example
248
115
  * ```typescript
249
- * // Only handle commands from admins
250
116
  * nodemodCore.events.filter('dllClientCommand',
251
117
  * (entity, command) => isAdmin(entity),
252
118
  * (entity, command) => handleAdminCommand(entity, command)
253
119
  * );
254
- *
255
- * // Only handle player connections with specific names
256
- * nodemodCore.events.filter('dllClientConnect',
257
- * (entity, name) => name.startsWith('VIP_'),
258
- * (entity, name) => grantVipAccess(entity)
259
- * );
260
120
  * ```
261
121
  */
262
122
  filter(eventName, predicate, handler) {
263
- const wrappedHandler = function (...args) {
123
+ const wrappedHandler = ((...args) => {
264
124
  if (predicate(...args)) {
265
- // @ts-ignore - TypeScript can't guarantee spread matches exact signature but it's safe here
266
- return handler(...args);
125
+ handler(...args);
267
126
  }
268
- };
269
- return this.on(eventName, wrappedHandler);
270
- }
271
- // Event mapping/transformation
272
- map(eventName, transformer, newEventName) {
273
- return this.on(eventName, ((...args) => {
274
- const transformed = transformer(...args);
275
- // Note: mapping to custom events not supported in strict mode
276
- }));
127
+ });
128
+ this.wrappedHandlers.set(handler, wrappedHandler);
129
+ nodemod.on(eventName, wrappedHandler);
130
+ return this;
277
131
  }
278
132
  /**
279
133
  * Adds a throttled event listener that limits execution to once per specified interval.
280
- * Useful for performance optimization with high-frequency events.
134
+ * Useful for performance optimization with high-frequency events like dllStartFrame.
281
135
  *
282
136
  * @param eventName - Name of the event to listen for
283
137
  * @param handler - Function to execute when event occurs
@@ -286,34 +140,27 @@ class NodemodEvents {
286
140
  *
287
141
  * @example
288
142
  * ```typescript
289
- * // Throttle frame events to once per second
290
143
  * nodemodCore.events.throttle('dllStartFrame', () => {
291
144
  * console.log('Frame update (max once per second)');
292
145
  * }, 1000);
293
- *
294
- * // Throttle player movement tracking
295
- * nodemodCore.events.throttle('dllClientCommand', (entity, command) => {
296
- * if (command.startsWith('+move')) {
297
- * updatePlayerPosition(entity);
298
- * }
299
- * }, 500); // Max twice per second
300
146
  * ```
301
147
  */
302
148
  throttle(eventName, handler, delay = 1000) {
303
149
  let lastCall = 0;
304
- const wrappedHandler = function (...args) {
150
+ const wrappedHandler = ((...args) => {
305
151
  const now = Date.now();
306
152
  if (now - lastCall >= delay) {
307
153
  lastCall = now;
308
- // @ts-ignore - TypeScript can't guarantee spread matches exact signature but it's safe here
309
- return handler(...args);
154
+ handler(...args);
310
155
  }
311
- };
312
- return this.on(eventName, wrappedHandler);
156
+ });
157
+ this.wrappedHandlers.set(handler, wrappedHandler);
158
+ nodemod.on(eventName, wrappedHandler);
159
+ return this;
313
160
  }
314
161
  /**
315
162
  * Adds a debounced event listener that delays execution until after the specified interval
316
- * has passed since the last event occurrence. Useful for handling rapid successive events.
163
+ * has passed since the last event occurrence.
317
164
  *
318
165
  * @param eventName - Name of the event to listen for
319
166
  * @param handler - Function to execute when event occurs
@@ -322,14 +169,6 @@ class NodemodEvents {
322
169
  *
323
170
  * @example
324
171
  * ```typescript
325
- * // Debounce player input to handle final command only
326
- * nodemodCore.events.debounce('dllClientCommand', (entity, command) => {
327
- * if (command.startsWith('buy_')) {
328
- * processPurchase(entity, command);
329
- * }
330
- * }, 300); // Wait 300ms after last buy command
331
- *
332
- * // Debounce entity spawning for batch processing
333
172
  * nodemodCore.events.debounce('dllSpawn', () => {
334
173
  * console.log('Finished spawning entities');
335
174
  * optimizeMapEntities();
@@ -338,12 +177,13 @@ class NodemodEvents {
338
177
  */
339
178
  debounce(eventName, handler, delay = 1000) {
340
179
  let timeoutId;
341
- const wrappedHandler = function (...args) {
180
+ const wrappedHandler = ((...args) => {
342
181
  clearTimeout(timeoutId);
343
- // @ts-ignore - TypeScript can't guarantee spread matches exact signature but it's safe here
344
182
  timeoutId = setTimeout(() => handler(...args), delay);
345
- };
346
- return this.on(eventName, wrappedHandler);
183
+ });
184
+ this.wrappedHandlers.set(handler, wrappedHandler);
185
+ nodemod.on(eventName, wrappedHandler);
186
+ return this;
347
187
  }
348
188
  }
349
189
  exports.default = NodemodEvents;
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/enhanced/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/enhanced/events.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/native/file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../src/native/file.ts"],"names":[],"mappings":"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"}
@@ -138,9 +138,7 @@ class NodemodFile {
138
138
  }
139
139
  // Get game directory
140
140
  getGameDir() {
141
- const gameDir = [''];
142
- nodemod.eng.getGameDir(gameDir[0]);
143
- return gameDir[0];
141
+ return nodemod.gameDir;
144
142
  }
145
143
  // File path utilities
146
144
  joinPath(...parts) {
@@ -1 +1 @@
1
- {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/native/file.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../src/native/file.ts"],"names":[],"mappings":"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"}
@@ -17,6 +17,7 @@ declare class Entity {
17
17
  declare namespace nodemod {
18
18
  // Properties
19
19
  const cwd: string;
20
+ const gameDir: string;
20
21
  const players: Entity[];
21
22
  const mapname: string;
22
23
  const time: number;
@@ -35,5 +36,6 @@ declare namespace nodemod {
35
36
  function getUserMsgId(msgName: string): number;
36
37
  function getUserMsgName(msgId: number): string;
37
38
  function setMetaResult(result: META_RES): void;
39
+ function getMetaResult(): META_RES;
38
40
  function continueServer(): void;
39
41
  }
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@nodemod/core",
3
- "version": "1.0.3",
4
- "description": "TypeScript-first NodeMod core library for Half-Life server plugins",
3
+ "version": "1.0.5",
4
+ "description": "TypeScript-first NodeMod core library for Half-Life server development",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
7
7
  "exports": {
@@ -99,6 +99,24 @@
99
99
  ]
100
100
  }
101
101
  },
102
+ "scripts": {
103
+ "build": "tsc",
104
+ "build:watch": "tsc --watch",
105
+ "dev": "tsc --watch",
106
+ "clean": "rm -rf dist",
107
+ "prebuild": "npm run clean",
108
+ "postbuild": "node -e \"const fs = require('fs'); fs.cpSync('types', 'dist/types', {recursive: true}); const content = fs.readFileSync('dist/index.d.ts', 'utf8'); fs.writeFileSync('dist/index.d.ts', '/// <reference path=\\\"./types/index.d.ts\\\" />\\n' + content);\"",
109
+ "typecheck": "tsc --noEmit",
110
+ "test": "echo \"Error: no test specified\" && exit 1",
111
+ "docs": "typedoc",
112
+ "docs:markdown": "typedoc --options typedoc.json",
113
+ "docs:html": "typedoc --options typedoc-html.json",
114
+ "docs:watch": "typedoc --watch",
115
+ "docs:clean": "rm -rf docs docs-html",
116
+ "docs:build": "npm run docs:clean && npm run docs:markdown && npm run docs:html",
117
+ "docs:serve": "npx serve docs-html",
118
+ "docs:all": "npm run docs:build"
119
+ },
102
120
  "devDependencies": {
103
121
  "@types/node": "^20.0.0",
104
122
  "typedoc": "^0.28.11",
@@ -133,23 +151,5 @@
133
151
  },
134
152
  "publishConfig": {
135
153
  "access": "public"
136
- },
137
- "scripts": {
138
- "build": "tsc",
139
- "build:watch": "tsc --watch",
140
- "dev": "tsc --watch",
141
- "clean": "rm -rf dist",
142
- "prebuild": "npm run clean",
143
- "postbuild": "node -e \"const fs = require('fs'); fs.cpSync('types', 'dist/types', {recursive: true}); const content = fs.readFileSync('dist/index.d.ts', 'utf8'); fs.writeFileSync('dist/index.d.ts', '/// <reference path=\\\"./types/index.d.ts\\\" />\\n' + content);\"",
144
- "typecheck": "tsc --noEmit",
145
- "test": "echo \"Error: no test specified\" && exit 1",
146
- "docs": "typedoc",
147
- "docs:markdown": "typedoc --options typedoc.json",
148
- "docs:html": "typedoc --options typedoc-html.json",
149
- "docs:watch": "typedoc --watch",
150
- "docs:clean": "rm -rf docs docs-html",
151
- "docs:build": "npm run docs:clean && npm run docs:markdown && npm run docs:html",
152
- "docs:serve": "npx serve docs-html",
153
- "docs:all": "npm run docs:build"
154
154
  }
155
- }
155
+ }