steamworks-ffi-node 0.4.0 → 0.4.2

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.
Files changed (43) hide show
  1. package/README.md +25 -24
  2. package/dist/index.d.ts +4 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +24 -7
  5. package/dist/index.js.map +1 -1
  6. package/dist/internal/SteamLeaderboardManager.d.ts.map +1 -1
  7. package/dist/internal/SteamLeaderboardManager.js.map +1 -1
  8. package/dist/internal/SteamLibraryLoader.d.ts +1 -0
  9. package/dist/internal/SteamLibraryLoader.d.ts.map +1 -1
  10. package/dist/internal/SteamLibraryLoader.js +2 -0
  11. package/dist/internal/SteamLibraryLoader.js.map +1 -1
  12. package/dist/internal/SteamStatsManager.d.ts +37 -0
  13. package/dist/internal/SteamStatsManager.d.ts.map +1 -1
  14. package/dist/internal/SteamStatsManager.js +80 -0
  15. package/dist/internal/SteamStatsManager.js.map +1 -1
  16. package/dist/steam.d.ts +102 -319
  17. package/dist/steam.d.ts.map +1 -1
  18. package/dist/steam.js +23 -418
  19. package/dist/steam.js.map +1 -1
  20. package/dist/types/achievements.d.ts +49 -0
  21. package/dist/types/achievements.d.ts.map +1 -0
  22. package/dist/types/achievements.js +6 -0
  23. package/dist/types/achievements.js.map +1 -0
  24. package/dist/types/core.d.ts +18 -0
  25. package/dist/types/core.d.ts.map +1 -0
  26. package/dist/types/core.js +6 -0
  27. package/dist/types/core.js.map +1 -0
  28. package/dist/types/index.d.ts +14 -0
  29. package/dist/types/index.d.ts.map +1 -0
  30. package/dist/types/index.js +34 -0
  31. package/dist/types/index.js.map +1 -0
  32. package/dist/{types.d.ts → types/leaderboards.d.ts} +30 -60
  33. package/dist/types/leaderboards.d.ts.map +1 -0
  34. package/dist/{types.js → types/leaderboards.js} +16 -8
  35. package/dist/types/leaderboards.js.map +1 -0
  36. package/dist/types/stats.d.ts +46 -0
  37. package/dist/types/stats.d.ts.map +1 -0
  38. package/dist/types/stats.js +6 -0
  39. package/dist/types/stats.js.map +1 -0
  40. package/package.json +1 -1
  41. package/dist/types.d.ts.map +0 -1
  42. package/dist/types.js.map +0 -1
  43. package/steamworks_sdk/README.md +0 -82
package/dist/steam.js CHANGED
@@ -9,21 +9,31 @@ const SteamLeaderboardManager_1 = require("./internal/SteamLeaderboardManager");
9
9
  * Real Steamworks SDK implementation using Koffi FFI
10
10
  * This connects directly to the actual Steam client and Steamworks SDK
11
11
  *
12
- * Uses composition pattern with specialized modules:
13
- * - SteamLibraryLoader: Handles FFI library loading and function binding
14
- * - SteamAPICore: Manages Steam API lifecycle (init, shutdown, callbacks)
15
- * - SteamAchievementManager: Handles all achievement operations
16
- * - SteamStatsManager: Handles all stats operations
17
- * - SteamLeaderboardManager: Handles all leaderboard operations
12
+ * Uses composition pattern with specialized managers:
13
+ * - achievements: SteamAchievementManager - All achievement operations
14
+ * - stats: SteamStatsManager - All stats operations
15
+ * - leaderboards: SteamLeaderboardManager - All leaderboard operations
16
+ *
17
+ * @example
18
+ * ```typescript
19
+ * const steam = Steam.getInstance();
20
+ * steam.init({ appId: 480 });
21
+ *
22
+ * // Use managers directly
23
+ * await steam.achievements.unlockAchievement('ACH_WIN_ONE_GAME');
24
+ * await steam.stats.setStatInt('NumGames', 1);
25
+ * await steam.leaderboards.uploadScore(handle, 1000, KeepBest);
26
+ * ```
18
27
  */
19
28
  class SteamworksSDK {
20
29
  constructor() {
21
- // Initialize composed modules
30
+ // Initialize internal modules
22
31
  this.libraryLoader = new SteamLibraryLoader_1.SteamLibraryLoader();
23
32
  this.apiCore = new SteamAPICore_1.SteamAPICore(this.libraryLoader);
24
- this.achievementManager = new SteamAchievementManager_1.SteamAchievementManager(this.libraryLoader, this.apiCore);
25
- this.statsManager = new SteamStatsManager_1.SteamStatsManager(this.libraryLoader, this.apiCore);
26
- this.leaderboardManager = new SteamLeaderboardManager_1.SteamLeaderboardManager(this.libraryLoader, this.apiCore);
33
+ // Initialize public managers
34
+ this.achievements = new SteamAchievementManager_1.SteamAchievementManager(this.libraryLoader, this.apiCore);
35
+ this.stats = new SteamStatsManager_1.SteamStatsManager(this.libraryLoader, this.apiCore);
36
+ this.leaderboards = new SteamLeaderboardManager_1.SteamLeaderboardManager(this.libraryLoader, this.apiCore);
27
37
  }
28
38
  static getInstance() {
29
39
  if (!SteamworksSDK.instance) {
@@ -31,6 +41,9 @@ class SteamworksSDK {
31
41
  }
32
42
  return SteamworksSDK.instance;
33
43
  }
44
+ // ========================================
45
+ // CORE API METHODS
46
+ // ========================================
34
47
  /**
35
48
  * Initialize Steam API with real Steamworks SDK
36
49
  */
@@ -49,48 +62,6 @@ class SteamworksSDK {
49
62
  getStatus() {
50
63
  return this.apiCore.getStatus();
51
64
  }
52
- /**
53
- * Get all achievements from Steam
54
- */
55
- async getAllAchievements() {
56
- return this.achievementManager.getAllAchievements();
57
- }
58
- /**
59
- * Unlock achievement in Steam
60
- */
61
- async unlockAchievement(achievementName) {
62
- return this.achievementManager.unlockAchievement(achievementName);
63
- }
64
- /**
65
- * Clear achievement in Steam (for testing)
66
- */
67
- async clearAchievement(achievementName) {
68
- return this.achievementManager.clearAchievement(achievementName);
69
- }
70
- /**
71
- * Check if achievement is unlocked
72
- */
73
- async isAchievementUnlocked(achievementName) {
74
- return this.achievementManager.isAchievementUnlocked(achievementName);
75
- }
76
- /**
77
- * Get achievement by API name
78
- */
79
- async getAchievementByName(achievementName) {
80
- return this.achievementManager.getAchievementByName(achievementName);
81
- }
82
- /**
83
- * Get total number of achievements
84
- */
85
- async getTotalAchievementCount() {
86
- return this.achievementManager.getTotalAchievementCount();
87
- }
88
- /**
89
- * Get number of unlocked achievements
90
- */
91
- async getUnlockedAchievementCount() {
92
- return this.achievementManager.getUnlockedAchievementCount();
93
- }
94
65
  /**
95
66
  * Run Steam callbacks to process pending events
96
67
  */
@@ -103,372 +74,6 @@ class SteamworksSDK {
103
74
  isSteamRunning() {
104
75
  return this.apiCore.isSteamRunning();
105
76
  }
106
- // ===== VISUAL & UI FEATURES =====
107
- /**
108
- * Get achievement icon handle for use with ISteamUtils::GetImageRGBA()
109
- */
110
- async getAchievementIcon(achievementName) {
111
- return this.achievementManager.getAchievementIcon(achievementName);
112
- }
113
- /**
114
- * Show achievement progress notification in Steam overlay
115
- */
116
- async indicateAchievementProgress(achievementName, currentProgress, maxProgress) {
117
- return this.achievementManager.indicateAchievementProgress(achievementName, currentProgress, maxProgress);
118
- }
119
- /**
120
- * Get all achievements with icon handles
121
- */
122
- async getAllAchievementsWithIcons() {
123
- return this.achievementManager.getAllAchievementsWithIcons();
124
- }
125
- // ===== PROGRESS TRACKING =====
126
- /**
127
- * Get achievement progress limits (integer-based)
128
- */
129
- async getAchievementProgressLimitsInt(achievementName) {
130
- return this.achievementManager.getAchievementProgressLimitsInt(achievementName);
131
- }
132
- /**
133
- * Get achievement progress limits (float-based)
134
- */
135
- async getAchievementProgressLimitsFloat(achievementName) {
136
- return this.achievementManager.getAchievementProgressLimitsFloat(achievementName);
137
- }
138
- // ===== FRIEND/USER ACHIEVEMENTS =====
139
- /**
140
- * Request achievement stats for another user (friend)
141
- * This is async - wait for callback before calling getUserAchievement()
142
- */
143
- async requestUserStats(steamId) {
144
- return this.achievementManager.requestUserStats(steamId);
145
- }
146
- /**
147
- * Get achievement status for another user (friend)
148
- * Must call requestUserStats() first and wait for callback
149
- */
150
- async getUserAchievement(steamId, achievementName) {
151
- return this.achievementManager.getUserAchievement(steamId, achievementName);
152
- }
153
- // ===== GLOBAL STATISTICS =====
154
- /**
155
- * Request global achievement percentages from Steam
156
- * This is async - wait for callback before calling other global stats methods
157
- */
158
- async requestGlobalAchievementPercentages() {
159
- return this.achievementManager.requestGlobalAchievementPercentages();
160
- }
161
- /**
162
- * Get percentage of users who unlocked a specific achievement
163
- * Must call requestGlobalAchievementPercentages() first
164
- */
165
- async getAchievementAchievedPercent(achievementName) {
166
- return this.achievementManager.getAchievementAchievedPercent(achievementName);
167
- }
168
- /**
169
- * Get all achievements with global unlock percentages
170
- * Must call requestGlobalAchievementPercentages() first
171
- */
172
- async getAllAchievementsWithGlobalStats() {
173
- return this.achievementManager.getAllAchievementsWithGlobalStats();
174
- }
175
- /**
176
- * Get most achieved achievement
177
- */
178
- async getMostAchievedAchievementInfo() {
179
- return this.achievementManager.getMostAchievedAchievementInfo();
180
- }
181
- /**
182
- * Get next most achieved achievement (iterate by popularity)
183
- */
184
- async getNextMostAchievedAchievementInfo(previousIterator) {
185
- return this.achievementManager.getNextMostAchievedAchievementInfo(previousIterator);
186
- }
187
- /**
188
- * Get all achievements sorted by global popularity (most achieved first)
189
- * Must call requestGlobalAchievementPercentages() first
190
- */
191
- async getAllAchievementsSortedByPopularity() {
192
- return this.achievementManager.getAllAchievementsSortedByPopularity();
193
- }
194
- // ===== TESTING & DEVELOPMENT =====
195
- /**
196
- * Reset all stats and optionally achievements
197
- * WARNING: This clears ALL user stats and achievements!
198
- */
199
- async resetAllStats(includeAchievements = false) {
200
- return this.achievementManager.resetAllStats(includeAchievements);
201
- }
202
- // ========================================
203
- // STATS API
204
- // ========================================
205
- // ===== USER STATS (GET/SET) =====
206
- /**
207
- * Get an integer stat value
208
- */
209
- async getStatInt(statName) {
210
- return this.statsManager.getStatInt(statName);
211
- }
212
- /**
213
- * Get a float stat value
214
- */
215
- async getStatFloat(statName) {
216
- return this.statsManager.getStatFloat(statName);
217
- }
218
- /**
219
- * Set an integer stat value
220
- */
221
- async setStatInt(statName, value) {
222
- return this.statsManager.setStatInt(statName, value);
223
- }
224
- /**
225
- * Set a float stat value
226
- */
227
- async setStatFloat(statName, value) {
228
- return this.statsManager.setStatFloat(statName, value);
229
- }
230
- /**
231
- * Update an average rate stat (e.g., kills per hour, average speed)
232
- */
233
- async updateAvgRateStat(statName, countThisSession, sessionLength) {
234
- return this.statsManager.updateAvgRateStat(statName, countThisSession, sessionLength);
235
- }
236
- // ===== FRIEND/USER STATS =====
237
- /**
238
- * Request stats for another user (friend)
239
- * Must be called before getting user stats
240
- */
241
- async requestUserStatsForStats(steamId) {
242
- return this.statsManager.requestUserStats(steamId);
243
- }
244
- /**
245
- * Get an integer stat value for another user (friend)
246
- * Must call requestUserStatsForStats() first and wait for callback
247
- */
248
- async getUserStatInt(steamId, statName) {
249
- return this.statsManager.getUserStatInt(steamId, statName);
250
- }
251
- /**
252
- * Get a float stat value for another user (friend)
253
- * Must call requestUserStatsForStats() first and wait for callback
254
- */
255
- async getUserStatFloat(steamId, statName) {
256
- return this.statsManager.getUserStatFloat(steamId, statName);
257
- }
258
- // ===== GLOBAL STATS =====
259
- /**
260
- * Request global stats data from Steam
261
- * Must be called before getting global stats
262
- * @param historyDays - Number of days of history to retrieve (0-60)
263
- */
264
- async requestGlobalStats(historyDays = 0) {
265
- return this.statsManager.requestGlobalStats(historyDays);
266
- }
267
- /**
268
- * Get a global stat value (int64)
269
- * Must call requestGlobalStats() first and wait for callback
270
- */
271
- async getGlobalStatInt(statName) {
272
- return this.statsManager.getGlobalStatInt(statName);
273
- }
274
- /**
275
- * Get a global stat value (double)
276
- * Must call requestGlobalStats() first and wait for callback
277
- */
278
- async getGlobalStatDouble(statName) {
279
- return this.statsManager.getGlobalStatDouble(statName);
280
- }
281
- /**
282
- * Get global stat history (int64)
283
- * Returns daily values for the stat, with [0] being today, [1] yesterday, etc.
284
- * @param days - Number of days of history to retrieve (max 60)
285
- */
286
- async getGlobalStatHistoryInt(statName, days = 7) {
287
- return this.statsManager.getGlobalStatHistoryInt(statName, days);
288
- }
289
- /**
290
- * Get global stat history (double)
291
- * Returns daily values for the stat, with [0] being today, [1] yesterday, etc.
292
- * @param days - Number of days of history to retrieve (max 60)
293
- */
294
- async getGlobalStatHistoryDouble(statName, days = 7) {
295
- return this.statsManager.getGlobalStatHistoryDouble(statName, days);
296
- }
297
- // ========================================
298
- // LEADERBOARDS API
299
- // ========================================
300
- /**
301
- * Find or create a leaderboard with specified sort and display settings
302
- *
303
- * If the leaderboard doesn't exist, it will be created with the specified settings.
304
- * If it exists, returns the info for the existing leaderboard.
305
- *
306
- * @param leaderboardName - Unique name for the leaderboard (set in Steamworks dashboard)
307
- * @param sortMethod - How to sort scores (Ascending/Descending)
308
- * @param displayType - How to display scores (Numeric/TimeSeconds/TimeMilliseconds)
309
- * @returns Promise resolving to leaderboard info object, or null on failure
310
- *
311
- * @example
312
- * ```typescript
313
- * const leaderboard = await steam.findOrCreateLeaderboard(
314
- * 'HighScores',
315
- * LeaderboardSortMethod.Descending,
316
- * LeaderboardDisplayType.Numeric
317
- * );
318
- * if (leaderboard) {
319
- * console.log(`Leaderboard handle: ${leaderboard.handle}`);
320
- * }
321
- * ```
322
- */
323
- async findOrCreateLeaderboard(leaderboardName, sortMethod, displayType) {
324
- return this.leaderboardManager.findOrCreateLeaderboard(leaderboardName, sortMethod, displayType);
325
- }
326
- /**
327
- * Find an existing leaderboard (does not create if missing)
328
- *
329
- * @param leaderboardName - Unique name for the leaderboard
330
- * @returns Promise resolving to leaderboard info object, or null if not found
331
- *
332
- * @example
333
- * ```typescript
334
- * const leaderboard = await steam.findLeaderboard('HighScores');
335
- * if (!leaderboard) {
336
- * console.log('Leaderboard not found');
337
- * }
338
- * ```
339
- */
340
- async findLeaderboard(leaderboardName) {
341
- return this.leaderboardManager.findLeaderboard(leaderboardName);
342
- }
343
- /**
344
- * Get leaderboard metadata (name, entry count, sort method, display type)
345
- *
346
- * @param leaderboardHandle - Handle to the leaderboard
347
- * @returns Leaderboard info object, or null on failure
348
- *
349
- * @example
350
- * ```typescript
351
- * const handle = await steam.findLeaderboard('HighScores');
352
- * const info = await steam.getLeaderboardInfo(handle);
353
- * console.log(`${info.name}: ${info.entryCount} entries`);
354
- * ```
355
- */
356
- async getLeaderboardInfo(leaderboardHandle) {
357
- return this.leaderboardManager.getLeaderboardInfo(leaderboardHandle);
358
- }
359
- /**
360
- * Upload a score to a leaderboard
361
- *
362
- * @param leaderboardHandle - Handle to the leaderboard
363
- * @param score - The score value to upload
364
- * @param uploadMethod - KeepBest (only updates if better) or ForceUpdate (always update)
365
- * @param scoreDetails - Optional array of up to 64 int32 values for additional data
366
- * @returns Promise resolving to upload result object, or null on failure
367
- *
368
- * @example
369
- * ```typescript
370
- * // Simple score upload
371
- * const result = await steam.uploadLeaderboardScore(
372
- * leaderboard.handle,
373
- * 1000,
374
- * LeaderboardUploadScoreMethod.KeepBest
375
- * );
376
- *
377
- * // With details (e.g., time, deaths, collectibles)
378
- * const result = await steam.uploadLeaderboardScore(
379
- * leaderboard.handle,
380
- * 1000,
381
- * LeaderboardUploadScoreMethod.KeepBest,
382
- * [120, 5, 15] // time in seconds, deaths, collectibles
383
- * );
384
- *
385
- * if (result?.scoreChanged) {
386
- * console.log(`New rank: ${result.globalRankNew}`);
387
- * }
388
- * ```
389
- */
390
- async uploadLeaderboardScore(leaderboardHandle, score, uploadMethod, scoreDetails) {
391
- return this.leaderboardManager.uploadScore(leaderboardHandle, score, uploadMethod, scoreDetails);
392
- }
393
- /**
394
- * Download leaderboard entries
395
- *
396
- * @param leaderboardHandle - Handle to the leaderboard
397
- * @param dataRequest - Type of data to download (Global/AroundUser/Friends)
398
- * @param rangeStart - Starting index (for Global) or offset from user (for AroundUser)
399
- * @param rangeEnd - Ending index (for Global) or offset from user (for AroundUser)
400
- * @returns Promise resolving to array of leaderboard entries
401
- *
402
- * @example
403
- * ```typescript
404
- * // Get top 10 global scores
405
- * const top10 = await steam.downloadLeaderboardEntries(
406
- * leaderboard,
407
- * LeaderboardDataRequest.Global,
408
- * 0,
409
- * 9
410
- * );
411
- *
412
- * // Get 5 above and 5 below current user
413
- * const aroundUser = await steam.downloadLeaderboardEntries(
414
- * leaderboard,
415
- * LeaderboardDataRequest.GlobalAroundUser,
416
- * -5,
417
- * 5
418
- * );
419
- *
420
- * // Get all friends' scores
421
- * const friends = await steam.downloadLeaderboardEntries(
422
- * leaderboard,
423
- * LeaderboardDataRequest.Friends,
424
- * 0,
425
- * 0
426
- * );
427
- * ```
428
- */
429
- async downloadLeaderboardEntries(leaderboardHandle, dataRequest, rangeStart, rangeEnd) {
430
- return this.leaderboardManager.downloadLeaderboardEntries(leaderboardHandle, dataRequest, rangeStart, rangeEnd);
431
- }
432
- /**
433
- * Download leaderboard entries for specific Steam users
434
- *
435
- * @param leaderboardHandle - Handle to the leaderboard
436
- * @param steamIds - Array of Steam ID strings (max 100)
437
- * @returns Promise resolving to array of leaderboard entries
438
- *
439
- * @example
440
- * ```typescript
441
- * const entries = await steam.downloadLeaderboardEntriesForUsers(
442
- * leaderboard.handle,
443
- * ['76561198000000000', '76561198000000001']
444
- * );
445
- * ```
446
- */
447
- async downloadLeaderboardEntriesForUsers(leaderboardHandle, steamIds) {
448
- return this.leaderboardManager.downloadLeaderboardEntriesForUsers(leaderboardHandle, steamIds);
449
- }
450
- /**
451
- * Attach user-generated content to a leaderboard entry
452
- *
453
- * Associates a piece of UGC (like a replay file, screenshot, or level)
454
- * with the current user's leaderboard entry.
455
- *
456
- * @param leaderboardHandle - Handle to the leaderboard
457
- * @param ugcHandle - Handle to the shared UGC content (from ISteamRemoteStorage::FileShare())
458
- * @returns Promise resolving to true if successful
459
- *
460
- * @example
461
- * ```typescript
462
- * // First share a file to get UGC handle
463
- * // const ugcHandle = await steamRemoteStorage.fileShare('replay.dat');
464
- *
465
- * const ugcHandle = BigInt('123456789');
466
- * await steam.attachLeaderboardUGC(leaderboard, ugcHandle);
467
- * ```
468
- */
469
- async attachLeaderboardUGC(leaderboardHandle, ugcHandle) {
470
- return this.leaderboardManager.attachLeaderboardUGC(leaderboardHandle, ugcHandle);
471
- }
472
77
  }
473
78
  exports.default = SteamworksSDK;
474
79
  //# sourceMappingURL=steam.js.map
package/dist/steam.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"steam.js","sourceRoot":"","sources":["../src/steam.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"steam.js","sourceRoot":"","sources":["../src/steam.ts"],"names":[],"mappings":";;AAIA,sEAAmE;AACnE,0DAAuD;AACvD,gFAA6E;AAC7E,oEAAiE;AACjE,gFAA6E;AAE7E;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,aAAa;IA0GjB;QACE,8BAA8B;QAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,uCAAkB,EAAE,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,2BAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAEpD,6BAA6B;QAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,iDAAuB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAClF,IAAI,CAAC,KAAK,GAAG,IAAI,qCAAiB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QACrE,IAAI,CAAC,YAAY,GAAG,IAAI,iDAAuB,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACpF,CAAC;IAED,MAAM,CAAC,WAAW;QAChB,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;YAC5B,aAAa,CAAC,QAAQ,GAAG,IAAI,aAAa,EAAE,CAAC;QAC/C,CAAC;QACD,OAAO,aAAa,CAAC,QAAQ,CAAC;IAChC,CAAC;IAED,2CAA2C;IAC3C,mBAAmB;IACnB,2CAA2C;IAE3C;;OAEG;IACH,IAAI,CAAC,OAAyB;QAC5B,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,YAAY;QACV,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,EAAE,CAAC;IACvC,CAAC;CACF;AAED,kBAAe,aAAa,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * Achievement-related types for the SteamAchievementManager
3
+ */
4
+ /**
5
+ * Steam achievement data
6
+ */
7
+ export interface SteamAchievement {
8
+ apiName: string;
9
+ displayName: string;
10
+ description: string;
11
+ unlocked: boolean;
12
+ unlockTime: number;
13
+ hidden?: boolean;
14
+ }
15
+ /**
16
+ * Achievement progress limits for progress tracking
17
+ */
18
+ export interface AchievementProgressLimits {
19
+ minProgress: number;
20
+ maxProgress: number;
21
+ }
22
+ /**
23
+ * User (friend) achievement data
24
+ */
25
+ export interface UserAchievement {
26
+ steamId: string;
27
+ apiName: string;
28
+ displayName: string;
29
+ description: string;
30
+ unlocked: boolean;
31
+ unlockTime: number;
32
+ }
33
+ /**
34
+ * Global achievement statistics with unlock percentage
35
+ */
36
+ export interface AchievementGlobalStats {
37
+ apiName: string;
38
+ displayName: string;
39
+ description: string;
40
+ unlocked: boolean;
41
+ globalUnlockPercentage: number;
42
+ }
43
+ /**
44
+ * Achievement with icon handle for visual display
45
+ */
46
+ export interface AchievementWithIcon extends SteamAchievement {
47
+ iconHandle: number;
48
+ }
49
+ //# sourceMappingURL=achievements.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"achievements.d.ts","sourceRoot":"","sources":["../../src/types/achievements.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,OAAO,CAAC;IAClB,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED;;GAEG;AACH,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,UAAU,EAAE,MAAM,CAAC;CACpB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Achievement-related types for the SteamAchievementManager
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=achievements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"achievements.js","sourceRoot":"","sources":["../../src/types/achievements.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Core Steam API types used across all managers
3
+ */
4
+ /**
5
+ * Options for initializing the Steam API
6
+ */
7
+ export interface SteamInitOptions {
8
+ appId: number;
9
+ }
10
+ /**
11
+ * Current Steam connection status
12
+ */
13
+ export interface SteamStatus {
14
+ initialized: boolean;
15
+ appId: number;
16
+ steamId: string;
17
+ }
18
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /**
3
+ * Core Steam API types used across all managers
4
+ */
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../src/types/core.ts"],"names":[],"mappings":";AAAA;;GAEG"}
@@ -0,0 +1,14 @@
1
+ /**
2
+ * Central export file for all Steam types
3
+ *
4
+ * Types are organized by manager:
5
+ * - core.ts - Core Steam API types
6
+ * - achievements.ts - Achievement-related types
7
+ * - stats.ts - Stats-related types
8
+ * - leaderboards.ts - Leaderboard-related types
9
+ */
10
+ export * from './core';
11
+ export * from './achievements';
12
+ export * from './stats';
13
+ export * from './leaderboards';
14
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,cAAc,QAAQ,CAAC;AAGvB,cAAc,gBAAgB,CAAC;AAG/B,cAAc,SAAS,CAAC;AAGxB,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,34 @@
1
+ "use strict";
2
+ /**
3
+ * Central export file for all Steam types
4
+ *
5
+ * Types are organized by manager:
6
+ * - core.ts - Core Steam API types
7
+ * - achievements.ts - Achievement-related types
8
+ * - stats.ts - Stats-related types
9
+ * - leaderboards.ts - Leaderboard-related types
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
23
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ // Core types
27
+ __exportStar(require("./core"), exports);
28
+ // Achievement types
29
+ __exportStar(require("./achievements"), exports);
30
+ // Stats types
31
+ __exportStar(require("./stats"), exports);
32
+ // Leaderboard types
33
+ __exportStar(require("./leaderboards"), exports);
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;;;;;;;;;;;;;;;AAEH,aAAa;AACb,yCAAuB;AAEvB,oBAAoB;AACpB,iDAA+B;AAE/B,cAAc;AACd,0CAAwB;AAExB,oBAAoB;AACpB,iDAA+B"}