steamworks-ffi-node 0.2.3 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37,18 +37,83 @@ exports.SteamAPICore = void 0;
37
37
  const fs = __importStar(require("fs"));
38
38
  const path = __importStar(require("path"));
39
39
  /**
40
- * Core Steam API initialization and lifecycle management
40
+ * SteamAPICore
41
+ *
42
+ * Core Steam API initialization and lifecycle management.
43
+ * Handles Steam client connection, interface management, and callback processing.
44
+ *
45
+ * This class manages the fundamental Steam API operations:
46
+ * - Initialization and shutdown of the Steam API
47
+ * - Interface retrieval (UserStats, User)
48
+ * - Status monitoring (Steam running, initialization state)
49
+ * - Callback processing for Steam events
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const loader = new SteamLibraryLoader();
54
+ * const apiCore = new SteamAPICore(loader);
55
+ *
56
+ * const success = apiCore.init({ appId: 480 });
57
+ * if (success) {
58
+ * console.log('Steam API initialized!');
59
+ * // Use Steam features...
60
+ * apiCore.shutdown();
61
+ * }
62
+ * ```
41
63
  */
42
64
  class SteamAPICore {
65
+ /**
66
+ * Creates a new SteamAPICore instance
67
+ *
68
+ * @param libraryLoader - The Steam library loader for FFI calls
69
+ */
43
70
  constructor(libraryLoader) {
71
+ /** Whether the Steam API has been successfully initialized */
44
72
  this.initialized = false;
73
+ /** The Steam App ID for this application */
45
74
  this.appId = 0;
75
+ /** Pointer to the ISteamUserStats interface */
46
76
  this.userStatsInterface = null;
77
+ /** Pointer to the ISteamUser interface */
47
78
  this.userInterface = null;
48
79
  this.libraryLoader = libraryLoader;
49
80
  }
50
81
  /**
51
- * Initialize Steam API
82
+ * Initialize the Steam API
83
+ *
84
+ * Establishes connection to the Steam client and retrieves necessary interfaces.
85
+ * Creates steam_appid.txt file required by Steam, loads the Steamworks library,
86
+ * and initializes all necessary Steam interfaces.
87
+ *
88
+ * @param options - Initialization options containing the Steam App ID
89
+ * @returns true if initialization was successful, false otherwise
90
+ *
91
+ * @example
92
+ * ```typescript
93
+ * const success = apiCore.init({ appId: 480 });
94
+ * if (success) {
95
+ * console.log('Connected to Steam for App ID:', 480);
96
+ * } else {
97
+ * console.error('Failed to initialize Steam API');
98
+ * }
99
+ * ```
100
+ *
101
+ * @remarks
102
+ * - Creates steam_appid.txt file in the current working directory
103
+ * - Sets SteamAppId environment variable
104
+ * - Automatically requests current stats from Steam servers
105
+ * - Runs callbacks to process initial Steam events
106
+ *
107
+ * @warning
108
+ * Requires Steam client to be running and user to be logged in
109
+ *
110
+ * Steamworks SDK Functions:
111
+ * - `SteamAPI_Init()` - Initialize the Steam API
112
+ * - `SteamAPI_IsSteamRunning()` - Check if Steam client is running
113
+ * - `SteamAPI_SteamUserStats_v013()` - Get ISteamUserStats interface
114
+ * - `SteamAPI_SteamUser_v023()` - Get ISteamUser interface
115
+ * - `SteamAPI_ISteamUserStats_RequestCurrentStats()` - Request current stats from Steam
116
+ * - `SteamAPI_RunCallbacks()` - Process Steam callbacks
52
117
  */
53
118
  init(options) {
54
119
  try {
@@ -102,7 +167,26 @@ class SteamAPICore {
102
167
  }
103
168
  }
104
169
  /**
105
- * Shutdown Steam API
170
+ * Shutdown the Steam API
171
+ *
172
+ * Cleanly shuts down the Steam API connection and releases all interfaces.
173
+ * Should be called when the application is closing or Steam features are no longer needed.
174
+ *
175
+ * @example
176
+ * ```typescript
177
+ * process.on('SIGINT', () => {
178
+ * apiCore.shutdown();
179
+ * process.exit(0);
180
+ * });
181
+ * ```
182
+ *
183
+ * @remarks
184
+ * - Safe to call multiple times (only shuts down if initialized)
185
+ * - Clears all interface pointers
186
+ * - Sets initialized state to false
187
+ *
188
+ * Steamworks SDK Functions:
189
+ * - `SteamAPI_Shutdown()` - Shutdown the Steam API
106
190
  */
107
191
  shutdown() {
108
192
  if (this.libraryLoader.isLoaded() && this.initialized) {
@@ -115,7 +199,27 @@ class SteamAPICore {
115
199
  }
116
200
  }
117
201
  /**
118
- * Get current Steam status
202
+ * Get the current Steam status
203
+ *
204
+ * Returns detailed status information including initialization state,
205
+ * App ID, and the current user's Steam ID.
206
+ *
207
+ * @returns Object containing initialization status, App ID, and Steam ID
208
+ *
209
+ * @example
210
+ * ```typescript
211
+ * const status = apiCore.getStatus();
212
+ * console.log(`Initialized: ${status.initialized}`);
213
+ * console.log(`App ID: ${status.appId}`);
214
+ * console.log(`Steam ID: ${status.steamId}`);
215
+ * ```
216
+ *
217
+ * @remarks
218
+ * - Steam ID is '0' if not initialized or unable to retrieve
219
+ * - App ID is 0 if not initialized
220
+ *
221
+ * Steamworks SDK Functions:
222
+ * - `SteamAPI_ISteamUser_GetSteamID()` - Get current user's Steam ID
119
223
  */
120
224
  getStatus() {
121
225
  let steamId = '0';
@@ -136,6 +240,25 @@ class SteamAPICore {
136
240
  }
137
241
  /**
138
242
  * Run Steam callbacks to process pending events
243
+ *
244
+ * Processes all pending Steam callbacks and events. Should be called regularly
245
+ * (e.g., in a game loop or timer) to ensure Steam events are processed promptly.
246
+ *
247
+ * @example
248
+ * ```typescript
249
+ * // In a game loop or setInterval
250
+ * setInterval(() => {
251
+ * apiCore.runCallbacks();
252
+ * }, 100); // Every 100ms
253
+ * ```
254
+ *
255
+ * @remarks
256
+ * - Safe to call even if not initialized (will be ignored)
257
+ * - Automatically called by init() and after stat/achievement operations
258
+ * - Required for receiving Steam events and callbacks
259
+ *
260
+ * Steamworks SDK Functions:
261
+ * - `SteamAPI_RunCallbacks()` - Process all pending Steam callbacks
139
262
  */
140
263
  runCallbacks() {
141
264
  if (this.initialized && this.libraryLoader.isLoaded()) {
@@ -148,7 +271,27 @@ class SteamAPICore {
148
271
  }
149
272
  }
150
273
  /**
151
- * Check if Steam client is running
274
+ * Check if the Steam client is running
275
+ *
276
+ * Verifies that the Steam client application is currently running on the user's system.
277
+ *
278
+ * @returns true if Steam is running, false otherwise
279
+ *
280
+ * @example
281
+ * ```typescript
282
+ * if (apiCore.isSteamRunning()) {
283
+ * console.log('Steam client is active');
284
+ * } else {
285
+ * console.warn('Steam client is not running');
286
+ * }
287
+ * ```
288
+ *
289
+ * @remarks
290
+ * - Returns false if Steam API is not initialized
291
+ * - Safe to call at any time
292
+ *
293
+ * Steamworks SDK Functions:
294
+ * - `SteamAPI_IsSteamRunning()` - Check if Steam client is running
152
295
  */
153
296
  isSteamRunning() {
154
297
  if (this.initialized && this.libraryLoader.isLoaded()) {
@@ -163,19 +306,65 @@ class SteamAPICore {
163
306
  return false;
164
307
  }
165
308
  /**
166
- * Check if initialized
309
+ * Check if the Steam API is initialized
310
+ *
311
+ * Returns the current initialization state of the Steam API.
312
+ *
313
+ * @returns true if initialized and ready to use, false otherwise
314
+ *
315
+ * @example
316
+ * ```typescript
317
+ * if (!apiCore.isInitialized()) {
318
+ * console.error('Cannot perform Steam operations - not initialized');
319
+ * return;
320
+ * }
321
+ * ```
167
322
  */
168
323
  isInitialized() {
169
324
  return this.initialized;
170
325
  }
171
326
  /**
172
- * Get UserStats interface pointer
327
+ * Get the ISteamUserStats interface pointer
328
+ *
329
+ * Returns the native pointer to the ISteamUserStats interface, which is used
330
+ * for achievement and stats operations.
331
+ *
332
+ * @returns Pointer to ISteamUserStats interface, or null if not initialized
333
+ *
334
+ * @example
335
+ * ```typescript
336
+ * const userStats = apiCore.getUserStatsInterface();
337
+ * if (userStats) {
338
+ * // Use interface for stats/achievement operations
339
+ * }
340
+ * ```
341
+ *
342
+ * @remarks
343
+ * - Returns null if Steam API is not initialized
344
+ * - This is a native pointer for use with FFI calls
173
345
  */
174
346
  getUserStatsInterface() {
175
347
  return this.userStatsInterface;
176
348
  }
177
349
  /**
178
- * Get User interface pointer
350
+ * Get the ISteamUser interface pointer
351
+ *
352
+ * Returns the native pointer to the ISteamUser interface, which is used
353
+ * for user identity operations.
354
+ *
355
+ * @returns Pointer to ISteamUser interface, or null if not initialized
356
+ *
357
+ * @example
358
+ * ```typescript
359
+ * const user = apiCore.getUserInterface();
360
+ * if (user) {
361
+ * // Use interface for user operations
362
+ * }
363
+ * ```
364
+ *
365
+ * @remarks
366
+ * - Returns null if Steam API is not initialized
367
+ * - This is a native pointer for use with FFI calls
179
368
  */
180
369
  getUserInterface() {
181
370
  return this.userInterface;
@@ -1 +1 @@
1
- {"version":3,"file":"SteamAPICore.js","sourceRoot":"","sources":["../../src/internal/SteamAPICore.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,uCAAyB;AACzB,2CAA6B;AAI7B;;GAEG;AACH,MAAa,YAAY;IAOvB,YAAY,aAAiC;QALrC,gBAAW,GAAY,KAAK,CAAC;QAC7B,UAAK,GAAW,CAAC,CAAC;QAClB,uBAAkB,GAAQ,IAAI,CAAC;QAC/B,kBAAa,GAAQ,IAAI,CAAC;QAGhC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,OAAyB;QAC5B,IAAI,CAAC;YACH,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC;YAE3B,kCAAkC;YAClC,OAAO,CAAC,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC;YAE/C,uDAAuD;YACvD,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,iBAAiB,CAAC,CAAC;YAClE,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;YAEvD,OAAO,CAAC,GAAG,CAAC,mDAAmD,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAE7E,mBAAmB;YACnB,IAAI,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;YAE1B,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YAEtD,uBAAuB;YACvB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,aAAa,EAAE,CAAC;YAEtD,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChB,MAAM,IAAI,KAAK,CAAC,kFAAkF,CAAC,CAAC;YACtG,CAAC;YAED,4BAA4B;YAC5B,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,CAAC;YAClE,IAAI,CAAC,YAAY,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;YACnF,CAAC;YAED,0BAA0B;YAC1B,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,aAAa,CAAC,4BAA4B,EAAE,CAAC;YAC5E,IAAI,CAAC,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,KAAK,IAAI,EAAE,CAAC;gBACjE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;YAC5D,CAAC;YAED,qBAAqB;YACrB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,CAAC;YAElE,2CAA2C;YAC3C,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YACnE,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,4CAA4C,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;YAEnH,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;YAC3F,CAAC;YAED,oDAAoD;YACpD,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YAChE,OAAO,CAAC,GAAG,CAAC,+CAA+C,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAEzE,OAAO,IAAI,CAAC;QAEd,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,KAAK,CAAC,qDAAqD,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YAC/F,OAAO,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;YACzC,OAAO,CAAC,KAAK,CAAC,qDAAqD,CAAC,CAAC;YACrE,OAAO,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;YACzE,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACnE,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACtD,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;YACvD,IAAI,CAAC,aAAa,CAAC,iBAAiB,EAAE,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;YACzB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;OAEG;IACH,SAAS;QACP,IAAI,OAAO,GAAG,GAAG,CAAC;QAElB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YAC1E,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,8BAA8B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBACzF,OAAO,GAAG,UAAU,CAAC,QAAQ,EAAE,CAAC;YAClC,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,yBAAyB,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;QAED,OAAO;YACL,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO;SACR,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC;gBACH,IAAI,CAAC,aAAa,CAAC,qBAAqB,EAAE,CAAC;YAC7C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;YACpF,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,EAAE,CAAC;YACtD,IAAI,CAAC;gBACH,OAAO,IAAI,CAAC,aAAa,CAAC,uBAAuB,EAAE,CAAC;YACtD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,CAAC,IAAI,CAAC,8CAA8C,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;gBACvF,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,qBAAqB;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED;;OAEG;IACH,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;CACF;AArKD,oCAqKC"}
1
+ {"version":3,"file":"SteamAPICore.js","sourceRoot":"","sources":["../../src/internal/SteamAPICore.ts"],"names":[],"mappings":"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"}