steamworks-ffi-node 0.2.3 → 0.3.0

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
@@ -4,7 +4,9 @@ A production-ready TypeScript/JavaScript wrapper for the Steamworks SDK using Ko
4
4
 
5
5
  > ✅ **No C++ Compilation Required**: Uses Koffi FFI for seamless installation without Visual Studio Build Tools!
6
6
 
7
- > 🎉 **NEW: 100% Achievement API Coverage** - All 20 Steam achievement functions now implemented! See [Complete Achievement Manager Documentation](https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/AchievementManager.md)
7
+ > 🎉 **NEW: 100% Achievement API Coverage** - All 20 Steam achievement functions implemented! [See Documentation](https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/ACHIEVEMENT_MANAGER.md)
8
+
9
+ > 🎉 **NEW: 100% Stats API Coverage** - All 13 Steam statistics functions implemented! [See Documentation](https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/STATS_MANAGER.md)
8
10
 
9
11
  ## 🎯 Features
10
12
 
@@ -15,6 +17,10 @@ A production-ready TypeScript/JavaScript wrapper for the Steamworks SDK using Ko
15
17
  - ✅ Friend comparisons (see friend achievements)
16
18
  - ✅ Global statistics (unlock percentages, popularity sorting)
17
19
  - ✅ Testing tools (reset stats/achievements)
20
+ - **Complete Stats API**: 100% coverage of Steam User Stats functionality (13/13 functions)
21
+ - ✅ User stats (get/set int/float, average rate tracking)
22
+ - ✅ Friend comparisons (compare stats with friends)
23
+ - ✅ Global statistics (worldwide aggregated data with history)
18
24
  - **Real Steam Integration**: Direct FFI calls to Steamworks C++ SDK
19
25
  - **Cross-Platform**: Windows, macOS, and Linux support
20
26
  - **Batteries Included**: All Steamworks redistributables bundled - no SDK download needed!
@@ -60,6 +66,17 @@ if (initialized) {
60
66
  // Check unlock status from Steam
61
67
  const isUnlocked = await steam.isAchievementUnlocked('ACH_WIN_ONE_GAME');
62
68
  console.log('Achievement unlocked:', isUnlocked);
69
+
70
+ // Track user statistics
71
+ const kills = await steam.getStatInt('total_kills') || 0;
72
+ await steam.setStatInt('total_kills', kills + 1);
73
+
74
+ // Get global statistics
75
+ await steam.requestGlobalStats(7);
76
+ await new Promise(resolve => setTimeout(resolve, 2000));
77
+ steam.runCallbacks();
78
+ const globalKills = await steam.getGlobalStatInt('global.total_kills');
79
+ console.log('Total kills worldwide:', globalKills);
63
80
  }
64
81
 
65
82
  // Cleanup
@@ -100,10 +117,9 @@ For immediate testing, use Spacewar (App ID 480):
100
117
 
101
118
  ## 📚 API Documentation
102
119
 
103
- ### Documentation
120
+ Complete documentation for all APIs is available in the [docs folder](https://github.com/ArtyProf/steamworks-ffi-node/tree/main/docs):
104
121
 
105
- - **[SteamAPICore Documentation](https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/SteamAPICore.md)** - Initialization, lifecycle management, callbacks
106
- - **[Achievement Manager API](https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/AchievementManager.md)** - Complete achievement functionality (20 functions)
122
+ ➡️ **[View Complete Documentation](https://github.com/ArtyProf/steamworks-ffi-node/blob/main/docs/README.md)**
107
123
 
108
124
  ## 🎮 Real Steam Integration
109
125
 
package/dist/index.d.ts CHANGED
@@ -1,6 +1,6 @@
1
1
  import SteamworksSDK from './steam';
2
- import { SteamAchievement, SteamInitOptions, SteamStatus, AchievementProgressLimits, UserAchievement, AchievementGlobalStats, AchievementWithIcon } from './types';
3
- export { SteamAchievement, SteamInitOptions, SteamStatus, AchievementProgressLimits, UserAchievement, AchievementGlobalStats, AchievementWithIcon };
2
+ import { SteamAchievement, SteamInitOptions, SteamStatus, AchievementProgressLimits, UserAchievement, AchievementGlobalStats, AchievementWithIcon, SteamStat, GlobalStat, GlobalStatHistory, UserStat } from './types';
3
+ export { SteamAchievement, SteamInitOptions, SteamStatus, AchievementProgressLimits, UserAchievement, AchievementGlobalStats, AchievementWithIcon, SteamStat, GlobalStat, GlobalStatHistory, UserStat };
4
4
  export default SteamworksSDK;
5
5
  export { SteamworksSDK as Steam };
6
6
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,SAAS,CAAC;AACpC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,yBAAyB,EACzB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACpB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,yBAAyB,EACzB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACpB,CAAC;AAGF,eAAe,aAAa,CAAC;AAG7B,OAAO,EAAE,aAAa,IAAI,KAAK,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,aAAa,MAAM,SAAS,CAAC;AACpC,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,yBAAyB,EACzB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACT,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,yBAAyB,EACzB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,SAAS,EACT,UAAU,EACV,iBAAiB,EACjB,QAAQ,EACT,CAAC;AAGF,eAAe,aAAa,CAAC;AAG7B,OAAO,EAAE,aAAa,IAAI,KAAK,EAAE,CAAC"}
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAoC;AA0BV,gBA1BnB,eAAa,CA0BW;AAJ/B,0BAA0B;AAC1B,kBAAe,eAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAAA,oDAAoC;AAkCV,gBAlCnB,eAAa,CAkCW;AAJ/B,0BAA0B;AAC1B,kBAAe,eAAa,CAAC"}
@@ -32,6 +32,18 @@ export declare class SteamLibraryLoader {
32
32
  SteamAPI_ISteamUserStats_GetNextMostAchievedAchievementInfo: koffi.KoffiFunction;
33
33
  SteamAPI_ISteamUserStats_GetAchievementAchievedPercent: koffi.KoffiFunction;
34
34
  SteamAPI_ISteamUserStats_ResetAllStats: koffi.KoffiFunction;
35
+ SteamAPI_ISteamUserStats_GetStatInt32: koffi.KoffiFunction;
36
+ SteamAPI_ISteamUserStats_GetStatFloat: koffi.KoffiFunction;
37
+ SteamAPI_ISteamUserStats_SetStatInt32: koffi.KoffiFunction;
38
+ SteamAPI_ISteamUserStats_SetStatFloat: koffi.KoffiFunction;
39
+ SteamAPI_ISteamUserStats_UpdateAvgRateStat: koffi.KoffiFunction;
40
+ SteamAPI_ISteamUserStats_GetUserStatInt32: koffi.KoffiFunction;
41
+ SteamAPI_ISteamUserStats_GetUserStatFloat: koffi.KoffiFunction;
42
+ SteamAPI_ISteamUserStats_RequestGlobalStats: koffi.KoffiFunction;
43
+ SteamAPI_ISteamUserStats_GetGlobalStatInt64: koffi.KoffiFunction;
44
+ SteamAPI_ISteamUserStats_GetGlobalStatDouble: koffi.KoffiFunction;
45
+ SteamAPI_ISteamUserStats_GetGlobalStatHistoryInt64: koffi.KoffiFunction;
46
+ SteamAPI_ISteamUserStats_GetGlobalStatHistoryDouble: koffi.KoffiFunction;
35
47
  /**
36
48
  * Get platform-specific Steam library path
37
49
  */
@@ -1 +1 @@
1
- {"version":3,"file":"SteamLibraryLoader.d.ts","sourceRoot":"","sources":["../../src/internal/SteamLibraryLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAgC;IAGzC,aAAa,EAAG,KAAK,CAAC,aAAa,CAAC;IACpC,iBAAiB,EAAG,KAAK,CAAC,aAAa,CAAC;IACxC,qBAAqB,EAAG,KAAK,CAAC,aAAa,CAAC;IAC5C,uBAAuB,EAAG,KAAK,CAAC,aAAa,CAAC;IAC9C,4BAA4B,EAAG,KAAK,CAAC,aAAa,CAAC;IACnD,uBAAuB,EAAG,KAAK,CAAC,aAAa,CAAC;IAC9C,2CAA2C,EAAG,KAAK,CAAC,aAAa,CAAC;IAClE,2CAA2C,EAAG,KAAK,CAAC,aAAa,CAAC;IAClE,uDAAuD,EAAG,KAAK,CAAC,aAAa,CAAC;IAC9E,uCAAuC,EAAG,KAAK,CAAC,aAAa,CAAC;IAC9D,oDAAoD,EAAG,KAAK,CAAC,aAAa,CAAC;IAC3E,uCAAuC,EAAG,KAAK,CAAC,aAAa,CAAC;IAC9D,yCAAyC,EAAG,KAAK,CAAC,aAAa,CAAC;IAChE,mCAAmC,EAAG,KAAK,CAAC,aAAa,CAAC;IAC1D,4CAA4C,EAAG,KAAK,CAAC,aAAa,CAAC;IACnE,8BAA8B,EAAG,KAAK,CAAC,aAAa,CAAC;IAGrD,2CAA2C,EAAG,KAAK,CAAC,aAAa,CAAC;IAClE,oDAAoD,EAAG,KAAK,CAAC,aAAa,CAAC;IAG3E,0DAA0D,EAAG,KAAK,CAAC,aAAa,CAAC;IACjF,0DAA0D,EAAG,KAAK,CAAC,aAAa,CAAC;IAGjF,yCAAyC,EAAG,KAAK,CAAC,aAAa,CAAC;IAChE,2CAA2C,EAAG,KAAK,CAAC,aAAa,CAAC;IAClE,wDAAwD,EAAG,KAAK,CAAC,aAAa,CAAC;IAG/E,4DAA4D,EAAG,KAAK,CAAC,aAAa,CAAC;IACnF,uDAAuD,EAAG,KAAK,CAAC,aAAa,CAAC;IAC9E,2DAA2D,EAAG,KAAK,CAAC,aAAa,CAAC;IAClF,sDAAsD,EAAG,KAAK,CAAC,aAAa,CAAC;IAG7E,sCAAsC,EAAG,KAAK,CAAC,aAAa,CAAC;IAEpE;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA6B3B;;OAEG;IACH,IAAI,IAAI,IAAI;IAiDZ;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,UAAU,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI;CAGrC"}
1
+ {"version":3,"file":"SteamLibraryLoader.d.ts","sourceRoot":"","sources":["../../src/internal/SteamLibraryLoader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,QAAQ,CAAgC;IAGzC,aAAa,EAAG,KAAK,CAAC,aAAa,CAAC;IACpC,iBAAiB,EAAG,KAAK,CAAC,aAAa,CAAC;IACxC,qBAAqB,EAAG,KAAK,CAAC,aAAa,CAAC;IAC5C,uBAAuB,EAAG,KAAK,CAAC,aAAa,CAAC;IAC9C,4BAA4B,EAAG,KAAK,CAAC,aAAa,CAAC;IACnD,uBAAuB,EAAG,KAAK,CAAC,aAAa,CAAC;IAC9C,2CAA2C,EAAG,KAAK,CAAC,aAAa,CAAC;IAClE,2CAA2C,EAAG,KAAK,CAAC,aAAa,CAAC;IAClE,uDAAuD,EAAG,KAAK,CAAC,aAAa,CAAC;IAC9E,uCAAuC,EAAG,KAAK,CAAC,aAAa,CAAC;IAC9D,oDAAoD,EAAG,KAAK,CAAC,aAAa,CAAC;IAC3E,uCAAuC,EAAG,KAAK,CAAC,aAAa,CAAC;IAC9D,yCAAyC,EAAG,KAAK,CAAC,aAAa,CAAC;IAChE,mCAAmC,EAAG,KAAK,CAAC,aAAa,CAAC;IAC1D,4CAA4C,EAAG,KAAK,CAAC,aAAa,CAAC;IACnE,8BAA8B,EAAG,KAAK,CAAC,aAAa,CAAC;IAGrD,2CAA2C,EAAG,KAAK,CAAC,aAAa,CAAC;IAClE,oDAAoD,EAAG,KAAK,CAAC,aAAa,CAAC;IAG3E,0DAA0D,EAAG,KAAK,CAAC,aAAa,CAAC;IACjF,0DAA0D,EAAG,KAAK,CAAC,aAAa,CAAC;IAGjF,yCAAyC,EAAG,KAAK,CAAC,aAAa,CAAC;IAChE,2CAA2C,EAAG,KAAK,CAAC,aAAa,CAAC;IAClE,wDAAwD,EAAG,KAAK,CAAC,aAAa,CAAC;IAG/E,4DAA4D,EAAG,KAAK,CAAC,aAAa,CAAC;IACnF,uDAAuD,EAAG,KAAK,CAAC,aAAa,CAAC;IAC9E,2DAA2D,EAAG,KAAK,CAAC,aAAa,CAAC;IAClF,sDAAsD,EAAG,KAAK,CAAC,aAAa,CAAC;IAG7E,sCAAsC,EAAG,KAAK,CAAC,aAAa,CAAC;IAO7D,qCAAqC,EAAG,KAAK,CAAC,aAAa,CAAC;IAC5D,qCAAqC,EAAG,KAAK,CAAC,aAAa,CAAC;IAC5D,qCAAqC,EAAG,KAAK,CAAC,aAAa,CAAC;IAC5D,qCAAqC,EAAG,KAAK,CAAC,aAAa,CAAC;IAC5D,0CAA0C,EAAG,KAAK,CAAC,aAAa,CAAC;IAGjE,yCAAyC,EAAG,KAAK,CAAC,aAAa,CAAC;IAChE,yCAAyC,EAAG,KAAK,CAAC,aAAa,CAAC;IAGhE,2CAA2C,EAAG,KAAK,CAAC,aAAa,CAAC;IAClE,2CAA2C,EAAG,KAAK,CAAC,aAAa,CAAC;IAClE,4CAA4C,EAAG,KAAK,CAAC,aAAa,CAAC;IACnE,kDAAkD,EAAG,KAAK,CAAC,aAAa,CAAC;IACzE,mDAAmD,EAAG,KAAK,CAAC,aAAa,CAAC;IAEjF;;OAEG;IACH,OAAO,CAAC,mBAAmB;IA6B3B;;OAEG;IACH,IAAI,IAAI,IAAI;IAuEZ;;OAEG;IACH,QAAQ,IAAI,OAAO;IAInB;;OAEG;IACH,UAAU,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI;CAGrC"}
@@ -116,6 +116,24 @@ class SteamLibraryLoader {
116
116
  this.SteamAPI_ISteamUserStats_GetAchievementAchievedPercent = this.steamLib.func('SteamAPI_ISteamUserStats_GetAchievementAchievedPercent', 'bool', ['void*', 'str', 'float*']);
117
117
  // Reset stats
118
118
  this.SteamAPI_ISteamUserStats_ResetAllStats = this.steamLib.func('SteamAPI_ISteamUserStats_ResetAllStats', 'bool', ['void*', 'bool']);
119
+ // ========================================
120
+ // Stats API Functions
121
+ // ========================================
122
+ // User stats (get/set)
123
+ this.SteamAPI_ISteamUserStats_GetStatInt32 = this.steamLib.func('SteamAPI_ISteamUserStats_GetStatInt32', 'bool', ['void*', 'str', 'int32*']);
124
+ this.SteamAPI_ISteamUserStats_GetStatFloat = this.steamLib.func('SteamAPI_ISteamUserStats_GetStatFloat', 'bool', ['void*', 'str', 'float*']);
125
+ this.SteamAPI_ISteamUserStats_SetStatInt32 = this.steamLib.func('SteamAPI_ISteamUserStats_SetStatInt32', 'bool', ['void*', 'str', 'int32']);
126
+ this.SteamAPI_ISteamUserStats_SetStatFloat = this.steamLib.func('SteamAPI_ISteamUserStats_SetStatFloat', 'bool', ['void*', 'str', 'float']);
127
+ this.SteamAPI_ISteamUserStats_UpdateAvgRateStat = this.steamLib.func('SteamAPI_ISteamUserStats_UpdateAvgRateStat', 'bool', ['void*', 'str', 'float', 'double']);
128
+ // Friend/user stats
129
+ this.SteamAPI_ISteamUserStats_GetUserStatInt32 = this.steamLib.func('SteamAPI_ISteamUserStats_GetUserStatInt32', 'bool', ['void*', 'uint64', 'str', 'int32*']);
130
+ this.SteamAPI_ISteamUserStats_GetUserStatFloat = this.steamLib.func('SteamAPI_ISteamUserStats_GetUserStatFloat', 'bool', ['void*', 'uint64', 'str', 'float*']);
131
+ // Global stats
132
+ this.SteamAPI_ISteamUserStats_RequestGlobalStats = this.steamLib.func('SteamAPI_ISteamUserStats_RequestGlobalStats', 'uint64', ['void*', 'int']);
133
+ this.SteamAPI_ISteamUserStats_GetGlobalStatInt64 = this.steamLib.func('SteamAPI_ISteamUserStats_GetGlobalStatInt64', 'bool', ['void*', 'str', 'int64*']);
134
+ this.SteamAPI_ISteamUserStats_GetGlobalStatDouble = this.steamLib.func('SteamAPI_ISteamUserStats_GetGlobalStatDouble', 'bool', ['void*', 'str', 'double*']);
135
+ this.SteamAPI_ISteamUserStats_GetGlobalStatHistoryInt64 = this.steamLib.func('SteamAPI_ISteamUserStats_GetGlobalStatHistoryInt64', 'int32', ['void*', 'str', 'int64*', 'uint32']);
136
+ this.SteamAPI_ISteamUserStats_GetGlobalStatHistoryDouble = this.steamLib.func('SteamAPI_ISteamUserStats_GetGlobalStatHistoryDouble', 'int32', ['void*', 'str', 'double*', 'uint32']);
119
137
  }
120
138
  /**
121
139
  * Check if library is loaded
@@ -1 +1 @@
1
- {"version":3,"file":"SteamLibraryLoader.js","sourceRoot":"","sources":["../../src/internal/SteamLibraryLoader.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,6CAA+B;AAC/B,2CAA6B;AAC7B,uCAAyB;AAEzB;;GAEG;AACH,MAAa,kBAAkB;IAA/B;QACU,aAAQ,GAA2B,IAAI,CAAC;IA2IlD,CAAC;IAjGC;;OAEG;IACK,mBAAmB;QACzB,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAClC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAE1B,IAAI,OAAe,CAAC;QAEpB,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YACzB,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;gBACnB,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,gEAAgE,CAAC,CAAC;YACnG,CAAC;iBAAM,CAAC;gBACN,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,wDAAwD,CAAC,CAAC;YAC3F,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,iEAAiE,CAAC,CAAC;QACpG,CAAC;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,kEAAkE,CAAC,CAAC;QACrG,CAAC;aAAM,CAAC;YACN,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACvD,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,MAAM,IAAI,KAAK,CAAC,wCAAwC,OAAO,IAAI;gBACjE,+EAA+E,CAAC,CAAC;QACrF,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,IAAI;QACF,MAAM,OAAO,GAAG,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,iCAAiC,OAAO,EAAE,CAAC,CAAC;QAExD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpC,yCAAyC;QACzC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACzE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,mBAAmB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAC7E,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,uBAAuB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QAEzF,IAAI,CAAC,4BAA4B,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,8BAA8B,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QACpG,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,EAAE,OAAO,EAAE,EAAE,CAAC,CAAC;QAE1F,IAAI,CAAC,2CAA2C,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,6CAA6C,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAC1I,IAAI,CAAC,2CAA2C,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,6CAA6C,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QACjJ,IAAI,CAAC,uDAAuD,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,yDAAyD,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;QAC7K,IAAI,CAAC,uCAAuC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,yCAAyC,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QAChJ,IAAI,CAAC,oDAAoD,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,sDAAsD,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QACrL,IAAI,CAAC,uCAAuC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,yCAAyC,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QACvI,IAAI,CAAC,yCAAyC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,2CAA2C,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3I,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,qCAAqC,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QACxH,IAAI,CAAC,4CAA4C,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,2CAA2C,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QACnJ,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gCAAgC,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAEhH,wCAAwC;QACxC,IAAI,CAAC,2CAA2C,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,6CAA6C,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC9I,IAAI,CAAC,oDAAoD,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,sDAAsD,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QAErL,8BAA8B;QAC9B,IAAI,CAAC,0DAA0D,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,4DAA4D,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QACjM,IAAI,CAAC,0DAA0D,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,4DAA4D,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC;QAEjM,2BAA2B;QAC3B,IAAI,CAAC,yCAAyC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,2CAA2C,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC;QAChJ,IAAI,CAAC,2CAA2C,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,6CAA6C,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;QAClK,IAAI,CAAC,wDAAwD,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,0DAA0D,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;QAEvM,iCAAiC;QACjC,IAAI,CAAC,4DAA4D,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,8DAA8D,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;QAC5K,IAAI,CAAC,uDAAuD,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,yDAAyD,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QACrM,IAAI,CAAC,2DAA2D,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,6DAA6D,EAAE,KAAK,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,CAAC;QACpN,IAAI,CAAC,sDAAsD,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,wDAAwD,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC;QAE/K,cAAc;QACd,IAAI,CAAC,sCAAsC,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,wCAAwC,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;IACxI,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,UAAU;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;CACF;AA5ID,gDA4IC"}
1
+ {"version":3,"file":"SteamLibraryLoader.js","sourceRoot":"","sources":["../../src/internal/SteamLibraryLoader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ import { SteamLibraryLoader } from './SteamLibraryLoader';
2
+ import { SteamAPICore } from './SteamAPICore';
3
+ /**
4
+ * Manages Steam user statistics operations
5
+ * Handles getting/setting stats, global stats, and friend stats
6
+ */
7
+ export declare class SteamStatsManager {
8
+ private libraryLoader;
9
+ private apiCore;
10
+ constructor(libraryLoader: SteamLibraryLoader, apiCore: SteamAPICore);
11
+ /**
12
+ * Get an integer stat value
13
+ *
14
+ * @param statName - Name of the stat to retrieve
15
+ * @returns The stat value, or null if not found/error
16
+ *
17
+ * Steamworks SDK Functions:
18
+ * - `SteamAPI_ISteamUserStats_GetStatInt32()` - Get int32 stat value
19
+ */
20
+ getStatInt(statName: string): Promise<number | null>;
21
+ /**
22
+ * Get a float stat value
23
+ *
24
+ * @param statName - Name of the stat to retrieve
25
+ * @returns The stat value, or null if not found/error
26
+ *
27
+ * Steamworks SDK Functions:
28
+ * - `SteamAPI_ISteamUserStats_GetStatFloat()` - Get float stat value
29
+ */
30
+ getStatFloat(statName: string): Promise<number | null>;
31
+ /**
32
+ * Set an integer stat value
33
+ *
34
+ * @param statName - Name of the stat to set
35
+ * @param value - Integer value to set
36
+ * @returns true if successful, false otherwise
37
+ *
38
+ * Steamworks SDK Functions:
39
+ * - `SteamAPI_ISteamUserStats_SetStatInt32()` - Set int32 stat value
40
+ * - `SteamAPI_ISteamUserStats_StoreStats()` - Store stats to Steam servers
41
+ * - `SteamAPI_RunCallbacks()` - Process Steam callbacks
42
+ */
43
+ setStatInt(statName: string, value: number): Promise<boolean>;
44
+ /**
45
+ * Set a float stat value
46
+ *
47
+ * @param statName - Name of the stat to set
48
+ * @param value - Float value to set
49
+ * @returns true if successful, false otherwise
50
+ *
51
+ * Steamworks SDK Functions:
52
+ * - `SteamAPI_ISteamUserStats_SetStatFloat()` - Set float stat value
53
+ * - `SteamAPI_ISteamUserStats_StoreStats()` - Store stats to Steam servers
54
+ * - `SteamAPI_RunCallbacks()` - Process Steam callbacks
55
+ */
56
+ setStatFloat(statName: string, value: number): Promise<boolean>;
57
+ /**
58
+ * Update an average rate stat
59
+ * This is used for stats like "average speed" or "kills per hour"
60
+ *
61
+ * @param statName - Name of the stat to update
62
+ * @param countThisSession - Count for this session
63
+ * @param sessionLength - Length of session in seconds
64
+ * @returns true if successful, false otherwise
65
+ *
66
+ * Steamworks SDK Functions:
67
+ * - `SteamAPI_ISteamUserStats_UpdateAvgRateStat()` - Update average rate stat
68
+ * - `SteamAPI_ISteamUserStats_StoreStats()` - Store stats to Steam servers
69
+ * - `SteamAPI_RunCallbacks()` - Process Steam callbacks
70
+ */
71
+ updateAvgRateStat(statName: string, countThisSession: number, sessionLength: number): Promise<boolean>;
72
+ /**
73
+ * Request stats for another user (friend)
74
+ * Must be called before getting user stats
75
+ *
76
+ * @param steamId - Steam ID of the user (as string or BigInt)
77
+ * @returns true if request was sent, false otherwise
78
+ *
79
+ * Steamworks SDK Functions:
80
+ * - `SteamAPI_ISteamUserStats_RequestUserStats()` - Request user stats from Steam
81
+ */
82
+ requestUserStats(steamId: string | bigint): Promise<boolean>;
83
+ /**
84
+ * Get an integer stat value for another user (friend)
85
+ * Must call requestUserStats() first and wait for callback
86
+ *
87
+ * @param steamId - Steam ID of the user
88
+ * @param statName - Name of the stat to retrieve
89
+ * @returns The stat value, or null if not found/error
90
+ *
91
+ * Steamworks SDK Functions:
92
+ * - `SteamAPI_ISteamUserStats_GetUserStatInt32()` - Get user's int32 stat value
93
+ */
94
+ getUserStatInt(steamId: string | bigint, statName: string): Promise<number | null>;
95
+ /**
96
+ * Get a float stat value for another user (friend)
97
+ * Must call requestUserStats() first and wait for callback
98
+ *
99
+ * @param steamId - Steam ID of the user
100
+ * @param statName - Name of the stat to retrieve
101
+ * @returns The stat value, or null if not found/error
102
+ *
103
+ * Steamworks SDK Functions:
104
+ * - `SteamAPI_ISteamUserStats_GetUserStatFloat()` - Get user's float stat value
105
+ */
106
+ getUserStatFloat(steamId: string | bigint, statName: string): Promise<number | null>;
107
+ /**
108
+ * Request global stats data from Steam
109
+ * Must be called before getting global stats
110
+ *
111
+ * @param historyDays - Number of days of history to retrieve (0-60)
112
+ * @returns true if request was sent, false otherwise
113
+ *
114
+ * Steamworks SDK Functions:
115
+ * - `SteamAPI_ISteamUserStats_RequestGlobalStats()` - Request global stats from Steam
116
+ */
117
+ requestGlobalStats(historyDays?: number): Promise<boolean>;
118
+ /**
119
+ * Get a global stat value (int64)
120
+ * Must call requestGlobalStats() first and wait for callback
121
+ *
122
+ * @param statName - Name of the global stat to retrieve
123
+ * @returns The stat value, or null if not found/error
124
+ *
125
+ * Steamworks SDK Functions:
126
+ * - `SteamAPI_ISteamUserStats_GetGlobalStatInt64()` - Get global int64 stat value
127
+ */
128
+ getGlobalStatInt(statName: string): Promise<bigint | null>;
129
+ /**
130
+ * Get a global stat value (double)
131
+ * Must call requestGlobalStats() first and wait for callback
132
+ *
133
+ * @param statName - Name of the global stat to retrieve
134
+ * @returns The stat value, or null if not found/error
135
+ *
136
+ * Steamworks SDK Functions:
137
+ * - `SteamAPI_ISteamUserStats_GetGlobalStatDouble()` - Get global double stat value
138
+ */
139
+ getGlobalStatDouble(statName: string): Promise<number | null>;
140
+ /**
141
+ * Get global stat history (int64)
142
+ * Returns daily values for the stat, with [0] being today, [1] yesterday, etc.
143
+ *
144
+ * @param statName - Name of the global stat
145
+ * @param days - Number of days of history to retrieve (max 60)
146
+ * @returns Array of daily values, or null if error
147
+ *
148
+ * Steamworks SDK Functions:
149
+ * - `SteamAPI_ISteamUserStats_GetGlobalStatHistoryInt64()` - Get global stat history
150
+ */
151
+ getGlobalStatHistoryInt(statName: string, days?: number): Promise<bigint[] | null>;
152
+ /**
153
+ * Get global stat history (double)
154
+ * Returns daily values for the stat, with [0] being today, [1] yesterday, etc.
155
+ *
156
+ * @param statName - Name of the global stat
157
+ * @param days - Number of days of history to retrieve (max 60)
158
+ * @returns Array of daily values, or null if error
159
+ *
160
+ * Steamworks SDK Functions:
161
+ * - `SteamAPI_ISteamUserStats_GetGlobalStatHistoryDouble()` - Get global stat history
162
+ */
163
+ getGlobalStatHistoryDouble(statName: string, days?: number): Promise<number[] | null>;
164
+ }
165
+ //# sourceMappingURL=SteamStatsManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SteamStatsManager.d.ts","sourceRoot":"","sources":["../../src/internal/SteamStatsManager.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;;GAGG;AACH,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,OAAO,CAAe;gBAElB,aAAa,EAAE,kBAAkB,EAAE,OAAO,EAAE,YAAY;IASpE;;;;;;;;OAQG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA8B1D;;;;;;;;OAQG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA8B5D;;;;;;;;;;;OAWG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqCnE;;;;;;;;;;;OAWG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAqCrE;;;;;;;;;;;;;OAaG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0C5G;;;;;;;;;OASG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BlE;;;;;;;;;;OAUG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgCxF;;;;;;;;;;OAUG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAoC1F;;;;;;;;;OASG;IACG,kBAAkB,CAAC,WAAW,GAAE,MAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IA8BnE;;;;;;;;;OASG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA8BhE;;;;;;;;;OASG;IACG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA8BnE;;;;;;;;;;OAUG;IACG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAqC3F;;;;;;;;;;OAUG;IACG,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;CAoC/F"}
@@ -0,0 +1,545 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.SteamStatsManager = void 0;
37
+ const koffi = __importStar(require("koffi"));
38
+ /**
39
+ * Manages Steam user statistics operations
40
+ * Handles getting/setting stats, global stats, and friend stats
41
+ */
42
+ class SteamStatsManager {
43
+ constructor(libraryLoader, apiCore) {
44
+ this.libraryLoader = libraryLoader;
45
+ this.apiCore = apiCore;
46
+ }
47
+ // ========================================
48
+ // User Stats Operations (Get/Set)
49
+ // ========================================
50
+ /**
51
+ * Get an integer stat value
52
+ *
53
+ * @param statName - Name of the stat to retrieve
54
+ * @returns The stat value, or null if not found/error
55
+ *
56
+ * Steamworks SDK Functions:
57
+ * - `SteamAPI_ISteamUserStats_GetStatInt32()` - Get int32 stat value
58
+ */
59
+ async getStatInt(statName) {
60
+ if (!this.apiCore.isInitialized()) {
61
+ console.warn('⚠️ Steam API not initialized');
62
+ return null;
63
+ }
64
+ try {
65
+ const userStatsInterface = this.libraryLoader.SteamAPI_SteamUserStats_v013();
66
+ const valueOut = koffi.alloc('int32', 1);
67
+ const success = this.libraryLoader.SteamAPI_ISteamUserStats_GetStatInt32(userStatsInterface, statName, valueOut);
68
+ if (success) {
69
+ const value = koffi.decode(valueOut, 'int32');
70
+ console.log(`📊 Got stat "${statName}": ${value}`);
71
+ return value;
72
+ }
73
+ else {
74
+ console.warn(`⚠️ Failed to get stat: ${statName}`);
75
+ return null;
76
+ }
77
+ }
78
+ catch (error) {
79
+ console.error(`❌ Error getting stat "${statName}":`, error.message);
80
+ return null;
81
+ }
82
+ }
83
+ /**
84
+ * Get a float stat value
85
+ *
86
+ * @param statName - Name of the stat to retrieve
87
+ * @returns The stat value, or null if not found/error
88
+ *
89
+ * Steamworks SDK Functions:
90
+ * - `SteamAPI_ISteamUserStats_GetStatFloat()` - Get float stat value
91
+ */
92
+ async getStatFloat(statName) {
93
+ if (!this.apiCore.isInitialized()) {
94
+ console.warn('⚠️ Steam API not initialized');
95
+ return null;
96
+ }
97
+ try {
98
+ const userStatsInterface = this.libraryLoader.SteamAPI_SteamUserStats_v013();
99
+ const valueOut = koffi.alloc('float', 1);
100
+ const success = this.libraryLoader.SteamAPI_ISteamUserStats_GetStatFloat(userStatsInterface, statName, valueOut);
101
+ if (success) {
102
+ const value = koffi.decode(valueOut, 'float');
103
+ console.log(`📊 Got stat "${statName}": ${value}`);
104
+ return value;
105
+ }
106
+ else {
107
+ console.warn(`⚠️ Failed to get stat: ${statName}`);
108
+ return null;
109
+ }
110
+ }
111
+ catch (error) {
112
+ console.error(`❌ Error getting stat "${statName}":`, error.message);
113
+ return null;
114
+ }
115
+ }
116
+ /**
117
+ * Set an integer stat value
118
+ *
119
+ * @param statName - Name of the stat to set
120
+ * @param value - Integer value to set
121
+ * @returns true if successful, false otherwise
122
+ *
123
+ * Steamworks SDK Functions:
124
+ * - `SteamAPI_ISteamUserStats_SetStatInt32()` - Set int32 stat value
125
+ * - `SteamAPI_ISteamUserStats_StoreStats()` - Store stats to Steam servers
126
+ * - `SteamAPI_RunCallbacks()` - Process Steam callbacks
127
+ */
128
+ async setStatInt(statName, value) {
129
+ if (!this.apiCore.isInitialized()) {
130
+ console.warn('⚠️ Steam API not initialized');
131
+ return false;
132
+ }
133
+ try {
134
+ const userStatsInterface = this.libraryLoader.SteamAPI_SteamUserStats_v013();
135
+ const success = this.libraryLoader.SteamAPI_ISteamUserStats_SetStatInt32(userStatsInterface, statName, value);
136
+ if (success) {
137
+ // Store the stats to Steam servers
138
+ const stored = this.libraryLoader.SteamAPI_ISteamUserStats_StoreStats(userStatsInterface);
139
+ if (stored) {
140
+ console.log(`✅ Set stat "${statName}" to ${value}`);
141
+ // Process callbacks
142
+ this.libraryLoader.SteamAPI_RunCallbacks();
143
+ return true;
144
+ }
145
+ else {
146
+ console.warn(`⚠️ Failed to store stat: ${statName}`);
147
+ return false;
148
+ }
149
+ }
150
+ else {
151
+ console.warn(`⚠️ Failed to set stat: ${statName}`);
152
+ return false;
153
+ }
154
+ }
155
+ catch (error) {
156
+ console.error(`❌ Error setting stat "${statName}":`, error.message);
157
+ return false;
158
+ }
159
+ }
160
+ /**
161
+ * Set a float stat value
162
+ *
163
+ * @param statName - Name of the stat to set
164
+ * @param value - Float value to set
165
+ * @returns true if successful, false otherwise
166
+ *
167
+ * Steamworks SDK Functions:
168
+ * - `SteamAPI_ISteamUserStats_SetStatFloat()` - Set float stat value
169
+ * - `SteamAPI_ISteamUserStats_StoreStats()` - Store stats to Steam servers
170
+ * - `SteamAPI_RunCallbacks()` - Process Steam callbacks
171
+ */
172
+ async setStatFloat(statName, value) {
173
+ if (!this.apiCore.isInitialized()) {
174
+ console.warn('⚠️ Steam API not initialized');
175
+ return false;
176
+ }
177
+ try {
178
+ const userStatsInterface = this.libraryLoader.SteamAPI_SteamUserStats_v013();
179
+ const success = this.libraryLoader.SteamAPI_ISteamUserStats_SetStatFloat(userStatsInterface, statName, value);
180
+ if (success) {
181
+ // Store the stats to Steam servers
182
+ const stored = this.libraryLoader.SteamAPI_ISteamUserStats_StoreStats(userStatsInterface);
183
+ if (stored) {
184
+ console.log(`✅ Set stat "${statName}" to ${value}`);
185
+ // Process callbacks
186
+ this.libraryLoader.SteamAPI_RunCallbacks();
187
+ return true;
188
+ }
189
+ else {
190
+ console.warn(`⚠️ Failed to store stat: ${statName}`);
191
+ return false;
192
+ }
193
+ }
194
+ else {
195
+ console.warn(`⚠️ Failed to set stat: ${statName}`);
196
+ return false;
197
+ }
198
+ }
199
+ catch (error) {
200
+ console.error(`❌ Error setting stat "${statName}":`, error.message);
201
+ return false;
202
+ }
203
+ }
204
+ /**
205
+ * Update an average rate stat
206
+ * This is used for stats like "average speed" or "kills per hour"
207
+ *
208
+ * @param statName - Name of the stat to update
209
+ * @param countThisSession - Count for this session
210
+ * @param sessionLength - Length of session in seconds
211
+ * @returns true if successful, false otherwise
212
+ *
213
+ * Steamworks SDK Functions:
214
+ * - `SteamAPI_ISteamUserStats_UpdateAvgRateStat()` - Update average rate stat
215
+ * - `SteamAPI_ISteamUserStats_StoreStats()` - Store stats to Steam servers
216
+ * - `SteamAPI_RunCallbacks()` - Process Steam callbacks
217
+ */
218
+ async updateAvgRateStat(statName, countThisSession, sessionLength) {
219
+ if (!this.apiCore.isInitialized()) {
220
+ console.warn('⚠️ Steam API not initialized');
221
+ return false;
222
+ }
223
+ try {
224
+ const userStatsInterface = this.libraryLoader.SteamAPI_SteamUserStats_v013();
225
+ const success = this.libraryLoader.SteamAPI_ISteamUserStats_UpdateAvgRateStat(userStatsInterface, statName, countThisSession, sessionLength);
226
+ if (success) {
227
+ // Store the stats to Steam servers
228
+ const stored = this.libraryLoader.SteamAPI_ISteamUserStats_StoreStats(userStatsInterface);
229
+ if (stored) {
230
+ console.log(`✅ Updated avg rate stat "${statName}": ${countThisSession} over ${sessionLength}s`);
231
+ // Process callbacks
232
+ this.libraryLoader.SteamAPI_RunCallbacks();
233
+ return true;
234
+ }
235
+ else {
236
+ console.warn(`⚠️ Failed to store stat: ${statName}`);
237
+ return false;
238
+ }
239
+ }
240
+ else {
241
+ console.warn(`⚠️ Failed to update avg rate stat: ${statName}`);
242
+ return false;
243
+ }
244
+ }
245
+ catch (error) {
246
+ console.error(`❌ Error updating avg rate stat "${statName}":`, error.message);
247
+ return false;
248
+ }
249
+ }
250
+ // ========================================
251
+ // Friend/User Stats Operations
252
+ // ========================================
253
+ /**
254
+ * Request stats for another user (friend)
255
+ * Must be called before getting user stats
256
+ *
257
+ * @param steamId - Steam ID of the user (as string or BigInt)
258
+ * @returns true if request was sent, false otherwise
259
+ *
260
+ * Steamworks SDK Functions:
261
+ * - `SteamAPI_ISteamUserStats_RequestUserStats()` - Request user stats from Steam
262
+ */
263
+ async requestUserStats(steamId) {
264
+ if (!this.apiCore.isInitialized()) {
265
+ console.warn('⚠️ Steam API not initialized');
266
+ return false;
267
+ }
268
+ try {
269
+ const userStatsInterface = this.libraryLoader.SteamAPI_SteamUserStats_v013();
270
+ const steamIdBigInt = typeof steamId === 'string' ? BigInt(steamId) : steamId;
271
+ const callHandle = this.libraryLoader.SteamAPI_ISteamUserStats_RequestUserStats(userStatsInterface, steamIdBigInt);
272
+ if (callHandle !== BigInt(0)) {
273
+ console.log(`📡 Requested stats for user: ${steamId}`);
274
+ return true;
275
+ }
276
+ else {
277
+ console.warn(`⚠️ Failed to request user stats: ${steamId}`);
278
+ return false;
279
+ }
280
+ }
281
+ catch (error) {
282
+ console.error(`❌ Error requesting user stats:`, error.message);
283
+ return false;
284
+ }
285
+ }
286
+ /**
287
+ * Get an integer stat value for another user (friend)
288
+ * Must call requestUserStats() first and wait for callback
289
+ *
290
+ * @param steamId - Steam ID of the user
291
+ * @param statName - Name of the stat to retrieve
292
+ * @returns The stat value, or null if not found/error
293
+ *
294
+ * Steamworks SDK Functions:
295
+ * - `SteamAPI_ISteamUserStats_GetUserStatInt32()` - Get user's int32 stat value
296
+ */
297
+ async getUserStatInt(steamId, statName) {
298
+ if (!this.apiCore.isInitialized()) {
299
+ console.warn('⚠️ Steam API not initialized');
300
+ return null;
301
+ }
302
+ try {
303
+ const userStatsInterface = this.libraryLoader.SteamAPI_SteamUserStats_v013();
304
+ const steamIdBigInt = typeof steamId === 'string' ? BigInt(steamId) : steamId;
305
+ const valueOut = koffi.alloc('int32', 1);
306
+ const success = this.libraryLoader.SteamAPI_ISteamUserStats_GetUserStatInt32(userStatsInterface, steamIdBigInt, statName, valueOut);
307
+ if (success) {
308
+ const value = koffi.decode(valueOut, 'int32');
309
+ console.log(`📊 Got user stat "${statName}" for ${steamId}: ${value}`);
310
+ return value;
311
+ }
312
+ else {
313
+ console.warn(`⚠️ Failed to get user stat: ${statName}`);
314
+ return null;
315
+ }
316
+ }
317
+ catch (error) {
318
+ console.error(`❌ Error getting user stat "${statName}":`, error.message);
319
+ return null;
320
+ }
321
+ }
322
+ /**
323
+ * Get a float stat value for another user (friend)
324
+ * Must call requestUserStats() first and wait for callback
325
+ *
326
+ * @param steamId - Steam ID of the user
327
+ * @param statName - Name of the stat to retrieve
328
+ * @returns The stat value, or null if not found/error
329
+ *
330
+ * Steamworks SDK Functions:
331
+ * - `SteamAPI_ISteamUserStats_GetUserStatFloat()` - Get user's float stat value
332
+ */
333
+ async getUserStatFloat(steamId, statName) {
334
+ if (!this.apiCore.isInitialized()) {
335
+ console.warn('⚠️ Steam API not initialized');
336
+ return null;
337
+ }
338
+ try {
339
+ const userStatsInterface = this.libraryLoader.SteamAPI_SteamUserStats_v013();
340
+ const steamIdBigInt = typeof steamId === 'string' ? BigInt(steamId) : steamId;
341
+ const valueOut = koffi.alloc('float', 1);
342
+ const success = this.libraryLoader.SteamAPI_ISteamUserStats_GetUserStatFloat(userStatsInterface, steamIdBigInt, statName, valueOut);
343
+ if (success) {
344
+ const value = koffi.decode(valueOut, 'float');
345
+ console.log(`📊 Got user stat "${statName}" for ${steamId}: ${value}`);
346
+ return value;
347
+ }
348
+ else {
349
+ console.warn(`⚠️ Failed to get user stat: ${statName}`);
350
+ return null;
351
+ }
352
+ }
353
+ catch (error) {
354
+ console.error(`❌ Error getting user stat "${statName}":`, error.message);
355
+ return null;
356
+ }
357
+ }
358
+ // ========================================
359
+ // Global Stats Operations
360
+ // ========================================
361
+ /**
362
+ * Request global stats data from Steam
363
+ * Must be called before getting global stats
364
+ *
365
+ * @param historyDays - Number of days of history to retrieve (0-60)
366
+ * @returns true if request was sent, false otherwise
367
+ *
368
+ * Steamworks SDK Functions:
369
+ * - `SteamAPI_ISteamUserStats_RequestGlobalStats()` - Request global stats from Steam
370
+ */
371
+ async requestGlobalStats(historyDays = 0) {
372
+ if (!this.apiCore.isInitialized()) {
373
+ console.warn('⚠️ Steam API not initialized');
374
+ return false;
375
+ }
376
+ try {
377
+ // Limit history days to 0-60
378
+ const days = Math.max(0, Math.min(60, historyDays));
379
+ const userStatsInterface = this.libraryLoader.SteamAPI_SteamUserStats_v013();
380
+ const callHandle = this.libraryLoader.SteamAPI_ISteamUserStats_RequestGlobalStats(userStatsInterface, days);
381
+ if (callHandle !== BigInt(0)) {
382
+ console.log(`📡 Requested global stats with ${days} days of history`);
383
+ return true;
384
+ }
385
+ else {
386
+ console.warn(`⚠️ Failed to request global stats`);
387
+ return false;
388
+ }
389
+ }
390
+ catch (error) {
391
+ console.error(`❌ Error requesting global stats:`, error.message);
392
+ return false;
393
+ }
394
+ }
395
+ /**
396
+ * Get a global stat value (int64)
397
+ * Must call requestGlobalStats() first and wait for callback
398
+ *
399
+ * @param statName - Name of the global stat to retrieve
400
+ * @returns The stat value, or null if not found/error
401
+ *
402
+ * Steamworks SDK Functions:
403
+ * - `SteamAPI_ISteamUserStats_GetGlobalStatInt64()` - Get global int64 stat value
404
+ */
405
+ async getGlobalStatInt(statName) {
406
+ if (!this.apiCore.isInitialized()) {
407
+ console.warn('⚠️ Steam API not initialized');
408
+ return null;
409
+ }
410
+ try {
411
+ const userStatsInterface = this.libraryLoader.SteamAPI_SteamUserStats_v013();
412
+ const valueOut = koffi.alloc('int64', 1);
413
+ const success = this.libraryLoader.SteamAPI_ISteamUserStats_GetGlobalStatInt64(userStatsInterface, statName, valueOut);
414
+ if (success) {
415
+ const value = koffi.decode(valueOut, 'int64');
416
+ console.log(`🌍 Got global stat "${statName}": ${value}`);
417
+ return value;
418
+ }
419
+ else {
420
+ console.warn(`⚠️ Failed to get global stat: ${statName}`);
421
+ return null;
422
+ }
423
+ }
424
+ catch (error) {
425
+ console.error(`❌ Error getting global stat "${statName}":`, error.message);
426
+ return null;
427
+ }
428
+ }
429
+ /**
430
+ * Get a global stat value (double)
431
+ * Must call requestGlobalStats() first and wait for callback
432
+ *
433
+ * @param statName - Name of the global stat to retrieve
434
+ * @returns The stat value, or null if not found/error
435
+ *
436
+ * Steamworks SDK Functions:
437
+ * - `SteamAPI_ISteamUserStats_GetGlobalStatDouble()` - Get global double stat value
438
+ */
439
+ async getGlobalStatDouble(statName) {
440
+ if (!this.apiCore.isInitialized()) {
441
+ console.warn('⚠️ Steam API not initialized');
442
+ return null;
443
+ }
444
+ try {
445
+ const userStatsInterface = this.libraryLoader.SteamAPI_SteamUserStats_v013();
446
+ const valueOut = koffi.alloc('double', 1);
447
+ const success = this.libraryLoader.SteamAPI_ISteamUserStats_GetGlobalStatDouble(userStatsInterface, statName, valueOut);
448
+ if (success) {
449
+ const value = koffi.decode(valueOut, 'double');
450
+ console.log(`🌍 Got global stat "${statName}": ${value}`);
451
+ return value;
452
+ }
453
+ else {
454
+ console.warn(`⚠️ Failed to get global stat: ${statName}`);
455
+ return null;
456
+ }
457
+ }
458
+ catch (error) {
459
+ console.error(`❌ Error getting global stat "${statName}":`, error.message);
460
+ return null;
461
+ }
462
+ }
463
+ /**
464
+ * Get global stat history (int64)
465
+ * Returns daily values for the stat, with [0] being today, [1] yesterday, etc.
466
+ *
467
+ * @param statName - Name of the global stat
468
+ * @param days - Number of days of history to retrieve (max 60)
469
+ * @returns Array of daily values, or null if error
470
+ *
471
+ * Steamworks SDK Functions:
472
+ * - `SteamAPI_ISteamUserStats_GetGlobalStatHistoryInt64()` - Get global stat history
473
+ */
474
+ async getGlobalStatHistoryInt(statName, days = 7) {
475
+ if (!this.apiCore.isInitialized()) {
476
+ console.warn('⚠️ Steam API not initialized');
477
+ return null;
478
+ }
479
+ try {
480
+ // Limit to 60 days
481
+ const numDays = Math.max(1, Math.min(60, days));
482
+ const userStatsInterface = this.libraryLoader.SteamAPI_SteamUserStats_v013();
483
+ const historyOut = koffi.alloc('int64', numDays);
484
+ const elementsReturned = this.libraryLoader.SteamAPI_ISteamUserStats_GetGlobalStatHistoryInt64(userStatsInterface, statName, historyOut, numDays);
485
+ if (elementsReturned > 0) {
486
+ const history = [];
487
+ for (let i = 0; i < elementsReturned; i++) {
488
+ history.push(koffi.decode(historyOut, 'int64', i));
489
+ }
490
+ console.log(`🌍 Got ${elementsReturned} days of history for "${statName}"`);
491
+ return history;
492
+ }
493
+ else {
494
+ console.warn(`⚠️ Failed to get global stat history: ${statName}`);
495
+ return null;
496
+ }
497
+ }
498
+ catch (error) {
499
+ console.error(`❌ Error getting global stat history "${statName}":`, error.message);
500
+ return null;
501
+ }
502
+ }
503
+ /**
504
+ * Get global stat history (double)
505
+ * Returns daily values for the stat, with [0] being today, [1] yesterday, etc.
506
+ *
507
+ * @param statName - Name of the global stat
508
+ * @param days - Number of days of history to retrieve (max 60)
509
+ * @returns Array of daily values, or null if error
510
+ *
511
+ * Steamworks SDK Functions:
512
+ * - `SteamAPI_ISteamUserStats_GetGlobalStatHistoryDouble()` - Get global stat history
513
+ */
514
+ async getGlobalStatHistoryDouble(statName, days = 7) {
515
+ if (!this.apiCore.isInitialized()) {
516
+ console.warn('⚠️ Steam API not initialized');
517
+ return null;
518
+ }
519
+ try {
520
+ // Limit to 60 days
521
+ const numDays = Math.max(1, Math.min(60, days));
522
+ const userStatsInterface = this.libraryLoader.SteamAPI_SteamUserStats_v013();
523
+ const historyOut = koffi.alloc('double', numDays);
524
+ const elementsReturned = this.libraryLoader.SteamAPI_ISteamUserStats_GetGlobalStatHistoryDouble(userStatsInterface, statName, historyOut, numDays);
525
+ if (elementsReturned > 0) {
526
+ const history = [];
527
+ for (let i = 0; i < elementsReturned; i++) {
528
+ history.push(koffi.decode(historyOut, 'double', i));
529
+ }
530
+ console.log(`🌍 Got ${elementsReturned} days of history for "${statName}"`);
531
+ return history;
532
+ }
533
+ else {
534
+ console.warn(`⚠️ Failed to get global stat history: ${statName}`);
535
+ return null;
536
+ }
537
+ }
538
+ catch (error) {
539
+ console.error(`❌ Error getting global stat history "${statName}":`, error.message);
540
+ return null;
541
+ }
542
+ }
543
+ }
544
+ exports.SteamStatsManager = SteamStatsManager;
545
+ //# sourceMappingURL=SteamStatsManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SteamStatsManager.js","sourceRoot":"","sources":["../../src/internal/SteamStatsManager.ts"],"names":[],"mappings":"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"}
package/dist/steam.d.ts CHANGED
@@ -7,12 +7,14 @@ import { SteamAchievement, SteamInitOptions, SteamStatus, AchievementProgressLim
7
7
  * - SteamLibraryLoader: Handles FFI library loading and function binding
8
8
  * - SteamAPICore: Manages Steam API lifecycle (init, shutdown, callbacks)
9
9
  * - SteamAchievementManager: Handles all achievement operations
10
+ * - SteamStatsManager: Handles all stats operations
10
11
  */
11
12
  declare class SteamworksSDK {
12
13
  private static instance;
13
14
  private libraryLoader;
14
15
  private apiCore;
15
16
  private achievementManager;
17
+ private statsManager;
16
18
  private constructor();
17
19
  static getInstance(): SteamworksSDK;
18
20
  /**
@@ -136,6 +138,69 @@ declare class SteamworksSDK {
136
138
  * WARNING: This clears ALL user stats and achievements!
137
139
  */
138
140
  resetAllStats(includeAchievements?: boolean): Promise<boolean>;
141
+ /**
142
+ * Get an integer stat value
143
+ */
144
+ getStatInt(statName: string): Promise<number | null>;
145
+ /**
146
+ * Get a float stat value
147
+ */
148
+ getStatFloat(statName: string): Promise<number | null>;
149
+ /**
150
+ * Set an integer stat value
151
+ */
152
+ setStatInt(statName: string, value: number): Promise<boolean>;
153
+ /**
154
+ * Set a float stat value
155
+ */
156
+ setStatFloat(statName: string, value: number): Promise<boolean>;
157
+ /**
158
+ * Update an average rate stat (e.g., kills per hour, average speed)
159
+ */
160
+ updateAvgRateStat(statName: string, countThisSession: number, sessionLength: number): Promise<boolean>;
161
+ /**
162
+ * Request stats for another user (friend)
163
+ * Must be called before getting user stats
164
+ */
165
+ requestUserStatsForStats(steamId: string | bigint): Promise<boolean>;
166
+ /**
167
+ * Get an integer stat value for another user (friend)
168
+ * Must call requestUserStatsForStats() first and wait for callback
169
+ */
170
+ getUserStatInt(steamId: string | bigint, statName: string): Promise<number | null>;
171
+ /**
172
+ * Get a float stat value for another user (friend)
173
+ * Must call requestUserStatsForStats() first and wait for callback
174
+ */
175
+ getUserStatFloat(steamId: string | bigint, statName: string): Promise<number | null>;
176
+ /**
177
+ * Request global stats data from Steam
178
+ * Must be called before getting global stats
179
+ * @param historyDays - Number of days of history to retrieve (0-60)
180
+ */
181
+ requestGlobalStats(historyDays?: number): Promise<boolean>;
182
+ /**
183
+ * Get a global stat value (int64)
184
+ * Must call requestGlobalStats() first and wait for callback
185
+ */
186
+ getGlobalStatInt(statName: string): Promise<bigint | null>;
187
+ /**
188
+ * Get a global stat value (double)
189
+ * Must call requestGlobalStats() first and wait for callback
190
+ */
191
+ getGlobalStatDouble(statName: string): Promise<number | null>;
192
+ /**
193
+ * Get global stat history (int64)
194
+ * Returns daily values for the stat, with [0] being today, [1] yesterday, etc.
195
+ * @param days - Number of days of history to retrieve (max 60)
196
+ */
197
+ getGlobalStatHistoryInt(statName: string, days?: number): Promise<bigint[] | null>;
198
+ /**
199
+ * Get global stat history (double)
200
+ * Returns daily values for the stat, with [0] being today, [1] yesterday, etc.
201
+ * @param days - Number of days of history to retrieve (max 60)
202
+ */
203
+ getGlobalStatHistoryDouble(statName: string, days?: number): Promise<number[] | null>;
139
204
  }
140
205
  export default SteamworksSDK;
141
206
  //# sourceMappingURL=steam.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"steam.d.ts","sourceRoot":"","sources":["../src/steam.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"steam.d.ts","sourceRoot":"","sources":["../src/steam.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,yBAAyB,EACzB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EAKpB,MAAM,SAAS,CAAC;AAMjB;;;;;;;;;GASG;AACH,cAAM,aAAa;IACjB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAgB;IAGvC,OAAO,CAAC,aAAa,CAAqB;IAC1C,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,kBAAkB,CAA0B;IACpD,OAAO,CAAC,YAAY,CAAoB;IAExC,OAAO;IAQP,MAAM,CAAC,WAAW,IAAI,aAAa;IAOnC;;OAEG;IACH,IAAI,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO;IAIxC;;OAEG;IACH,QAAQ,IAAI,IAAI;IAIhB;;OAEG;IACH,SAAS,IAAI,WAAW;IAIxB;;OAEG;IACG,kBAAkB,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIvD;;OAEG;IACG,iBAAiB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIlE;;OAEG;IACG,gBAAgB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjE;;OAEG;IACG,qBAAqB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAItE;;OAEG;IACG,oBAAoB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;IAIrF;;OAEG;IACG,wBAAwB,IAAI,OAAO,CAAC,MAAM,CAAC;IAIjD;;OAEG;IACG,2BAA2B,IAAI,OAAO,CAAC,MAAM,CAAC;IAIpD;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,cAAc,IAAI,OAAO;IAMzB;;OAEG;IACG,kBAAkB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAIlE;;OAEG;IACG,2BAA2B,CAC/B,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,OAAO,CAAC;IAInB;;OAEG;IACG,2BAA2B,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAMnE;;OAEG;IACG,+BAA+B,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAIzG;;OAEG;IACG,iCAAiC,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,yBAAyB,GAAG,IAAI,CAAC;IAM3G;;;OAGG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIzD;;;OAGG;IACG,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAMnG;;;OAGG;IACG,mCAAmC,IAAI,OAAO,CAAC,OAAO,CAAC;IAI7D;;;OAGG;IACG,6BAA6B,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIpF;;;OAGG;IACG,iCAAiC,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAI5E;;OAEG;IACG,8BAA8B,IAAI,OAAO,CAAC;QAC9C,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAA;KACjB,GAAG,IAAI,CAAC;IAIT;;OAEG;IACG,kCAAkC,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC;QAC1E,OAAO,EAAE,MAAM,CAAC;QAChB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,EAAE,MAAM,CAAA;KACjB,GAAG,IAAI,CAAC;IAIT;;;OAGG;IACG,oCAAoC,IAAI,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAM/E;;;OAGG;IACG,aAAa,CAAC,mBAAmB,GAAE,OAAe,GAAG,OAAO,CAAC,OAAO,CAAC;IAU3E;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI1D;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAI5D;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAInE;;OAEG;IACG,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIrE;;OAEG;IACG,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAM5G;;;OAGG;IACG,wBAAwB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI1E;;;OAGG;IACG,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIxF;;;OAGG;IACG,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAM1F;;;;OAIG;IACG,kBAAkB,CAAC,WAAW,GAAE,MAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAInE;;;OAGG;IACG,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIhE;;;OAGG;IACG,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAInE;;;;OAIG;IACG,uBAAuB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;IAI3F;;;;OAIG;IACG,0BAA0B,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC;CAG/F;AAED,eAAe,aAAa,CAAC"}
package/dist/steam.js CHANGED
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const SteamLibraryLoader_1 = require("./internal/SteamLibraryLoader");
4
4
  const SteamAPICore_1 = require("./internal/SteamAPICore");
5
5
  const SteamAchievementManager_1 = require("./internal/SteamAchievementManager");
6
+ const SteamStatsManager_1 = require("./internal/SteamStatsManager");
6
7
  /**
7
8
  * Real Steamworks SDK implementation using Koffi FFI
8
9
  * This connects directly to the actual Steam client and Steamworks SDK
@@ -11,6 +12,7 @@ const SteamAchievementManager_1 = require("./internal/SteamAchievementManager");
11
12
  * - SteamLibraryLoader: Handles FFI library loading and function binding
12
13
  * - SteamAPICore: Manages Steam API lifecycle (init, shutdown, callbacks)
13
14
  * - SteamAchievementManager: Handles all achievement operations
15
+ * - SteamStatsManager: Handles all stats operations
14
16
  */
15
17
  class SteamworksSDK {
16
18
  constructor() {
@@ -18,6 +20,7 @@ class SteamworksSDK {
18
20
  this.libraryLoader = new SteamLibraryLoader_1.SteamLibraryLoader();
19
21
  this.apiCore = new SteamAPICore_1.SteamAPICore(this.libraryLoader);
20
22
  this.achievementManager = new SteamAchievementManager_1.SteamAchievementManager(this.libraryLoader, this.apiCore);
23
+ this.statsManager = new SteamStatsManager_1.SteamStatsManager(this.libraryLoader, this.apiCore);
21
24
  }
22
25
  static getInstance() {
23
26
  if (!SteamworksSDK.instance) {
@@ -193,6 +196,101 @@ class SteamworksSDK {
193
196
  async resetAllStats(includeAchievements = false) {
194
197
  return this.achievementManager.resetAllStats(includeAchievements);
195
198
  }
199
+ // ========================================
200
+ // STATS API
201
+ // ========================================
202
+ // ===== USER STATS (GET/SET) =====
203
+ /**
204
+ * Get an integer stat value
205
+ */
206
+ async getStatInt(statName) {
207
+ return this.statsManager.getStatInt(statName);
208
+ }
209
+ /**
210
+ * Get a float stat value
211
+ */
212
+ async getStatFloat(statName) {
213
+ return this.statsManager.getStatFloat(statName);
214
+ }
215
+ /**
216
+ * Set an integer stat value
217
+ */
218
+ async setStatInt(statName, value) {
219
+ return this.statsManager.setStatInt(statName, value);
220
+ }
221
+ /**
222
+ * Set a float stat value
223
+ */
224
+ async setStatFloat(statName, value) {
225
+ return this.statsManager.setStatFloat(statName, value);
226
+ }
227
+ /**
228
+ * Update an average rate stat (e.g., kills per hour, average speed)
229
+ */
230
+ async updateAvgRateStat(statName, countThisSession, sessionLength) {
231
+ return this.statsManager.updateAvgRateStat(statName, countThisSession, sessionLength);
232
+ }
233
+ // ===== FRIEND/USER STATS =====
234
+ /**
235
+ * Request stats for another user (friend)
236
+ * Must be called before getting user stats
237
+ */
238
+ async requestUserStatsForStats(steamId) {
239
+ return this.statsManager.requestUserStats(steamId);
240
+ }
241
+ /**
242
+ * Get an integer stat value for another user (friend)
243
+ * Must call requestUserStatsForStats() first and wait for callback
244
+ */
245
+ async getUserStatInt(steamId, statName) {
246
+ return this.statsManager.getUserStatInt(steamId, statName);
247
+ }
248
+ /**
249
+ * Get a float stat value for another user (friend)
250
+ * Must call requestUserStatsForStats() first and wait for callback
251
+ */
252
+ async getUserStatFloat(steamId, statName) {
253
+ return this.statsManager.getUserStatFloat(steamId, statName);
254
+ }
255
+ // ===== GLOBAL STATS =====
256
+ /**
257
+ * Request global stats data from Steam
258
+ * Must be called before getting global stats
259
+ * @param historyDays - Number of days of history to retrieve (0-60)
260
+ */
261
+ async requestGlobalStats(historyDays = 0) {
262
+ return this.statsManager.requestGlobalStats(historyDays);
263
+ }
264
+ /**
265
+ * Get a global stat value (int64)
266
+ * Must call requestGlobalStats() first and wait for callback
267
+ */
268
+ async getGlobalStatInt(statName) {
269
+ return this.statsManager.getGlobalStatInt(statName);
270
+ }
271
+ /**
272
+ * Get a global stat value (double)
273
+ * Must call requestGlobalStats() first and wait for callback
274
+ */
275
+ async getGlobalStatDouble(statName) {
276
+ return this.statsManager.getGlobalStatDouble(statName);
277
+ }
278
+ /**
279
+ * Get global stat history (int64)
280
+ * Returns daily values for the stat, with [0] being today, [1] yesterday, etc.
281
+ * @param days - Number of days of history to retrieve (max 60)
282
+ */
283
+ async getGlobalStatHistoryInt(statName, days = 7) {
284
+ return this.statsManager.getGlobalStatHistoryInt(statName, days);
285
+ }
286
+ /**
287
+ * Get global stat history (double)
288
+ * Returns daily values for the stat, with [0] being today, [1] yesterday, etc.
289
+ * @param days - Number of days of history to retrieve (max 60)
290
+ */
291
+ async getGlobalStatHistoryDouble(statName, days = 7) {
292
+ return this.statsManager.getGlobalStatHistoryDouble(statName, days);
293
+ }
196
294
  }
197
295
  exports.default = SteamworksSDK;
198
296
  //# 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":"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"}
package/dist/types.d.ts CHANGED
@@ -36,4 +36,25 @@ export interface AchievementGlobalStats {
36
36
  export interface AchievementWithIcon extends SteamAchievement {
37
37
  iconHandle: number;
38
38
  }
39
+ export interface SteamStat {
40
+ name: string;
41
+ value: number;
42
+ type: 'int' | 'float';
43
+ }
44
+ export interface GlobalStat {
45
+ name: string;
46
+ value: number;
47
+ type: 'int64' | 'double';
48
+ }
49
+ export interface GlobalStatHistory {
50
+ name: string;
51
+ history: number[];
52
+ type: 'int64' | 'double';
53
+ }
54
+ export interface UserStat {
55
+ steamId: string;
56
+ name: string;
57
+ value: number;
58
+ type: 'int' | 'float';
59
+ }
39
60
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,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,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,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;AAGD,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;AAGD,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,UAAU,EAAE,MAAM,CAAC;CACpB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AACA,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,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;CACrB;AAGD,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;AAGD,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;AAGD,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB;IAC3D,UAAU,EAAE,MAAM,CAAC;CACpB;AAOD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;CACvB;AAGD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC1B;AAGD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;CAC1B;AAGD,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,KAAK,GAAG,OAAO,CAAC;CACvB"}
package/package.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "name": "steamworks-ffi-node",
3
- "version": "0.2.3",
3
+ "version": "0.3.0",
4
4
  "description": "Real Steamworks SDK wrapper using FFI for Node.js/Electron - Full Steam Integration",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
7
  "scripts": {
8
8
  "build": "tsc",
9
- "start": "node test-complete-achievements.js",
10
- "test": "node test-complete-achievements.js",
9
+ "test:achievements": "node test-complete-achievements.js",
10
+ "test:stats": "node test-complete-stats.js",
11
11
  "prepublishOnly": "npm run build"
12
12
  },
13
13
  "dependencies": {